diff --git a/BUILD.gn b/BUILD.gn
index 57478e5..95b5560 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -691,11 +691,14 @@
     deps += [ "//chromecast:cast_test_lists" ]
 
     if (!is_fuchsia) {
-      deps += [ "//chromecast:cast_shell" ]
-      deps += [ "//chromecast/cast_core:core_runtime_simple" ]
-    }
-    if (enable_extensions && use_aura) {
-      deps += [ "//chrome/browser/resources/chromeos/accessibility:build" ]
+      deps += [
+        "//chromecast:cast_shell",
+        "//chromecast/cast_core:core_runtime_simple",
+      ]
+
+      if (enable_extensions && use_aura) {
+        deps += [ "//chrome/browser/resources/chromeos/accessibility:build" ]
+      }
     }
   }
 
diff --git a/DEPS b/DEPS
index c7309a3..90b0e7cb 100644
--- a/DEPS
+++ b/DEPS
@@ -275,15 +275,15 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '32bb72454d281b0f309801776d752d88b15bc6f8',
+  'skia_revision': '0317614443f8a4d77619b69cae52e92613244dcf',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': 'bd6d5b3cb04d370f1df430d2b7c65d096cfc5a9d',
+  'v8_revision': 'b1413ed7c71ababe05d590de4b5c4ed97b68693e',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': 'ce3c0fe901f8ee12ca1330f8111517ee370b4a15',
+  'angle_revision': '593cd597a31e649f7219d3bdd021b76ec2f835c1',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -354,7 +354,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': 'c27f9fea0b3c15c22c3009c31853345c2dbd2ef1',
+  'devtools_frontend_revision': '23e92fb203f44be724ff4f22d3623dcd4c1a088a',
   # 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.
@@ -390,7 +390,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': 'e7099d4f3bb22e23e975099fb1d1314f76cd6227',
+  'dawn_revision': 'b29892be0999aba1f958aafd7256dbf7c6d2fa28',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -457,7 +457,7 @@
   'libcxx_revision':       'b1269813eaf5b8ac78e35e45a0f7cc320bd3e7d6',
 
   # GN CIPD package version.
-  'gn_version': 'git_revision:37baefb026b199605affa7bcb24810d1724ce373',
+  'gn_version': 'git_revision:2f71761a90bdccdb5f4a99e8b231c96aba0967d9',
 }
 
 # Only these hosts are allowed for dependencies in this DEPS file.
@@ -841,7 +841,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/linux-amd64',
-          'version': 'oMOWuf7Hi9kB_fTPeun8DrQNWg4jLD6BT8XXmUpWFMoC',
+          'version': 'WQy0VDjkbH_KD_AKW36vm_-6KfCdfNoPmdakOV8CFd4C',
         },
       ],
       'dep_type': 'cipd',
@@ -852,7 +852,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/mac-amd64',
-          'version': 'qtU6--2RR1JpwjJp40-Rm2osWsJ5dN6OHhn9jAWGOjYC',
+          'version': 'ZvtUSZFo23Hqj4D0mzrKtohELhGoG23nGzKWYwkXOrYC',
         },
       ],
       'dep_type': 'cipd',
@@ -863,7 +863,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/windows-amd64',
-          'version': '9Ng_rvcAlM71bKzykN7li3a4z83uE-vFFZabQREyeXkC',
+          'version': 'jx48JgSAUXVX9v3eBreYUl1mJBA3AvdVsIaE5f_oPdQC',
         },
       ],
       'dep_type': 'cipd',
@@ -1533,7 +1533,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + '127a4d84350dafb8b6b9f5f25fa4e31b1103fd0d',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'c05294a1704cc6992869ad438342328ca2b38b8d',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1708,7 +1708,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '3ebdea84d63cd0a0bb5b185b97206494cc0df960',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'eef9d5d6e10765e8c9374b6ef6bc0fb9fe6e1f1a',
+    Var('webrtc_git') + '/src.git' + '@' + 'fbc6a2db5d187be518ecb653ced1722a912169bd',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1781,7 +1781,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@b5e28af9f7c76f5b9b2a7db93f1f72ca6c706f53',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@6f5d3283dc105e35325d5356b21e79ccf172e69e',
     'condition': 'checkout_src_internal',
   },
 
@@ -1822,7 +1822,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': '-5XdSXRdc2ECmKOLNEXUtLCQJ19Bf9swwFvMaGS2AV8C',
+        'version': 'ZaW_WW0YaRTsRuBch1j57bexLARwMGVhIrHRh89I6HoC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/ash/app_list/views/app_list_bubble_view.cc b/ash/app_list/views/app_list_bubble_view.cc
index e710f79..bc3aadd 100644
--- a/ash/app_list/views/app_list_bubble_view.cc
+++ b/ash/app_list/views/app_list_bubble_view.cc
@@ -477,6 +477,8 @@
       MaybeFocusAndActivateSearchBox();
       break;
     case AppListBubblePage::kAssistant:
+      if (showing_folder_)
+        HideFolderView(/*animate=*/false, /*hide_for_reparent=*/false);
       if (previous_page == AppListBubblePage::kApps)
         apps_page_->AnimateHidePage();
       else
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 04beede..5d2eddf 100644
--- a/ash/app_list/views/app_list_bubble_view_unittest.cc
+++ b/ash/app_list/views/app_list_bubble_view_unittest.cc
@@ -1158,6 +1158,22 @@
   EXPECT_FALSE(GetAppListTestHelper()->GetBubbleFolderView()->GetVisible());
 }
 
+TEST_F(AppListBubbleViewTest, FolderClosedAfterInvokingAssistant) {
+  SimulateAssistantEnabled();
+  AddFolderWithApps(3);
+  ShowAppList();
+
+  AppListItemView* folder_item = GetAppsGridView()->GetItemViewAt(0);
+  LeftClickOn(folder_item);
+  ASSERT_TRUE(GetAppListTestHelper()->IsInFolderView());
+  ASSERT_TRUE(GetAppListTestHelper()->GetBubbleFolderView()->GetVisible());
+
+  PressAndReleaseKey(ui::VKEY_ASSISTANT);
+  EXPECT_TRUE(GetAssistantPage()->GetVisible());
+  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/assistant/assistant_dialog_plate_unittest.cc b/ash/app_list/views/assistant/assistant_dialog_plate_unittest.cc
index ad5c12f..030fdfc 100644
--- a/ash/app_list/views/assistant/assistant_dialog_plate_unittest.cc
+++ b/ash/app_list/views/assistant/assistant_dialog_plate_unittest.cc
@@ -9,6 +9,7 @@
 #include "ash/assistant/ui/assistant_ui_constants.h"
 #include "ash/assistant/ui/assistant_view_ids.h"
 #include "ash/assistant/ui/base/assistant_button.h"
+#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_pref_names.h"
 #include "ash/public/cpp/style/color_provider.h"
 #include "ash/resources/vector_icons/vector_icons.h"
@@ -87,7 +88,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       /*enabled_features=*/{}, /*disabled_features=*/{
-          chromeos::features::kDarkLightMode, features::kProductivityLauncher});
+          chromeos::features::kDarkLightMode, features::kNotificationsRefresh,
+          features::kProductivityLauncher});
 
   ShowAssistantUi();
 
diff --git a/ash/app_list/views/assistant/assistant_main_stage_unittest.cc b/ash/app_list/views/assistant/assistant_main_stage_unittest.cc
index 665c6be..cf167f8 100644
--- a/ash/app_list/views/assistant/assistant_main_stage_unittest.cc
+++ b/ash/app_list/views/assistant/assistant_main_stage_unittest.cc
@@ -36,8 +36,11 @@
  public:
   // AssistantAshTestBase:
   void SetUp() override {
-    scoped_feature_list_.InitAndDisableFeature(
-        chromeos::features::kDarkLightMode);
+    scoped_feature_list_.InitWithFeatures(
+        /*enabled_features=*/{},
+        /*disabled_features=*/{chromeos::features::kDarkLightMode,
+                               features::kNotificationsRefresh});
+
     AssistantAshTestBase::SetUp();
   }
 
diff --git a/ash/app_list/views/assistant/assistant_page_view_unittest.cc b/ash/app_list/views/assistant/assistant_page_view_unittest.cc
index aa2acca7..24ac3dea 100644
--- a/ash/app_list/views/assistant/assistant_page_view_unittest.cc
+++ b/ash/app_list/views/assistant/assistant_page_view_unittest.cc
@@ -923,7 +923,10 @@
 
 TEST_F(AssistantPageNonBubbleTest, Theme) {
   base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndDisableFeature(chromeos::features::kDarkLightMode);
+  scoped_feature_list.InitWithFeatures(
+      /*enabled_features=*/{},
+      /*disabled_features=*/{features::kNotificationsRefresh,
+                             chromeos::features::kDarkLightMode});
 
   ShowAssistantUi();
 
diff --git a/ash/assistant/assistant_controller_impl_unittest.cc b/ash/assistant/assistant_controller_impl_unittest.cc
index a0eb74e..a6177f8 100644
--- a/ash/assistant/assistant_controller_impl_unittest.cc
+++ b/ash/assistant/assistant_controller_impl_unittest.cc
@@ -11,6 +11,7 @@
 #include "ash/assistant/test/assistant_ash_test_base.h"
 #include "ash/assistant/test/test_assistant_service.h"
 #include "ash/assistant/util/deep_link_util.h"
+#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_pref_names.h"
 #include "ash/public/cpp/assistant/controller/assistant_controller_observer.h"
 #include "ash/public/cpp/test/test_new_window_delegate.h"
@@ -257,7 +258,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       /*enabled_features=*/{}, /*disabled_features=*/{
-          chromeos::features::kDarkLightMode, features::kProductivityLauncher});
+          chromeos::features::kDarkLightMode, features::kNotificationsRefresh,
+          features::kProductivityLauncher});
 
   controller()->SetAssistant(test_assistant_service());
 
diff --git a/ash/assistant/ui/base/assistant_button_unittest.cc b/ash/assistant/ui/base/assistant_button_unittest.cc
index 3932a531..4f45954 100644
--- a/ash/assistant/ui/base/assistant_button_unittest.cc
+++ b/ash/assistant/ui/base/assistant_button_unittest.cc
@@ -93,7 +93,10 @@
 
 TEST_F(AssistantButtonTest, IconColorTypeDefaultLight) {
   base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndDisableFeature(chromeos::features::kDarkLightMode);
+  scoped_feature_list.InitWithFeatures(
+      /*enabled_features=*/{},
+      /*disabled_features=*/{features::kNotificationsRefresh,
+                             chromeos::features::kDarkLightMode});
 
   AssistantButton::InitParams params;
   params.size_in_dip = kSizeInDip;
@@ -164,7 +167,10 @@
 
 TEST_F(AssistantButtonTest, FocusAndHoverColor) {
   base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndDisableFeature(chromeos::features::kDarkLightMode);
+  scoped_feature_list.InitWithFeatures(
+      /*enabled_features=*/{},
+      /*disabled_features=*/{features::kNotificationsRefresh,
+                             chromeos::features::kDarkLightMode});
 
   AssistantButton::InitParams params;
   params.size_in_dip = kSizeInDip;
diff --git a/ash/assistant/ui/colors/assistant_colors_util_unittest.cc b/ash/assistant/ui/colors/assistant_colors_util_unittest.cc
index a1cb84ce..97aac8f 100644
--- a/ash/assistant/ui/colors/assistant_colors_util_unittest.cc
+++ b/ash/assistant/ui/colors/assistant_colors_util_unittest.cc
@@ -5,6 +5,7 @@
 #include "ash/assistant/ui/colors/assistant_colors_util.h"
 
 #include "ash/assistant/ui/colors/assistant_colors.h"
+#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_pref_names.h"
 #include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
@@ -52,7 +53,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       /*enabled_features=*/{}, /*disabled_features=*/{
-          chromeos::features::kDarkLightMode, features::kProductivityLauncher});
+          chromeos::features::kDarkLightMode, features::kNotificationsRefresh,
+          features::kProductivityLauncher});
 
   EXPECT_EQ(
       ResolveAssistantColor(assistant_colors::ColorName::kBgAssistantPlate),
@@ -69,7 +71,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       /*enabled_features=*/{}, /*disabled_features=*/{
-          chromeos::features::kDarkLightMode, features::kProductivityLauncher});
+          chromeos::features::kDarkLightMode, features::kNotificationsRefresh,
+          features::kProductivityLauncher});
 
   EXPECT_EQ(ResolveAssistantColor(assistant_colors::ColorName::kGoogleBlue100),
             assistant_colors::ResolveColor(
diff --git a/ash/assistant/ui/main_stage/assistant_onboarding_suggestion_view_unittest.cc b/ash/assistant/ui/main_stage/assistant_onboarding_suggestion_view_unittest.cc
index a63a2ca..5660c07c 100644
--- a/ash/assistant/ui/main_stage/assistant_onboarding_suggestion_view_unittest.cc
+++ b/ash/assistant/ui/main_stage/assistant_onboarding_suggestion_view_unittest.cc
@@ -137,7 +137,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       /*enabled_features=*/{}, /*disabled_features=*/{
-          chromeos::features::kDarkLightMode, features::kProductivityLauncher});
+          chromeos::features::kDarkLightMode, features::kNotificationsRefresh,
+          features::kProductivityLauncher});
 
   std::unique_ptr<views::Widget> widget = CreateTestWidget();
 
diff --git a/ash/assistant/ui/main_stage/assistant_onboarding_view_unittest.cc b/ash/assistant/ui/main_stage/assistant_onboarding_view_unittest.cc
index 8dde7ea..ff6e58cb 100644
--- a/ash/assistant/ui/main_stage/assistant_onboarding_view_unittest.cc
+++ b/ash/assistant/ui/main_stage/assistant_onboarding_view_unittest.cc
@@ -17,6 +17,7 @@
 #include "ash/assistant/ui/main_stage/assistant_onboarding_suggestion_view.h"
 #include "ash/assistant/ui/test_support/mock_assistant_view_delegate.h"
 #include "ash/assistant/util/test_support/macros.h"
+#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_pref_names.h"
 #include "ash/public/cpp/assistant/controller/assistant_suggestions_controller.h"
 #include "ash/public/cpp/assistant/controller/assistant_ui_controller.h"
@@ -523,7 +524,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       /*enabled_features=*/{}, /*disabled_features=*/{
-          chromeos::features::kDarkLightMode, features::kProductivityLauncher});
+          chromeos::features::kDarkLightMode, features::kNotificationsRefresh,
+          features::kProductivityLauncher});
 
   ShowAssistantUi();
 
diff --git a/ash/assistant/ui/main_stage/assistant_query_view_unittest.cc b/ash/assistant/ui/main_stage/assistant_query_view_unittest.cc
index 5aa6f244..7846d93 100644
--- a/ash/assistant/ui/main_stage/assistant_query_view_unittest.cc
+++ b/ash/assistant/ui/main_stage/assistant_query_view_unittest.cc
@@ -80,7 +80,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       /*enabled_features=*/{}, /*disabled_features=*/{
-          chromeos::features::kDarkLightMode, features::kProductivityLauncher});
+          chromeos::features::kDarkLightMode, features::kNotificationsRefresh,
+          features::kProductivityLauncher});
 
   ShowAssistantUi();
 
diff --git a/ash/assistant/ui/main_stage/assistant_text_element_view_unittest.cc b/ash/assistant/ui/main_stage/assistant_text_element_view_unittest.cc
index 1a6cdd9a..1a39e09 100644
--- a/ash/assistant/ui/main_stage/assistant_text_element_view_unittest.cc
+++ b/ash/assistant/ui/main_stage/assistant_text_element_view_unittest.cc
@@ -5,6 +5,7 @@
 #include "ash/assistant/ui/main_stage/assistant_text_element_view.h"
 
 #include "ash/assistant/ui/assistant_ui_constants.h"
+#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_pref_names.h"
 #include "ash/public/cpp/style/color_provider.h"
 #include "ash/session/session_controller_impl.h"
@@ -58,7 +59,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       /*enabled_features=*/{}, /*disabled_features=*/{
-          chromeos::features::kDarkLightMode, features::kProductivityLauncher});
+          chromeos::features::kDarkLightMode, features::kNotificationsRefresh,
+          features::kProductivityLauncher});
 
   std::unique_ptr<views::Widget> widget = CreateFramelessTestWidget();
   AssistantTextElementView* text_element_view = widget->SetContentsView(
diff --git a/ash/assistant/ui/main_stage/assistant_zero_state_view_unittest.cc b/ash/assistant/ui/main_stage/assistant_zero_state_view_unittest.cc
index 381fe1e..14bbe5b 100644
--- a/ash/assistant/ui/main_stage/assistant_zero_state_view_unittest.cc
+++ b/ash/assistant/ui/main_stage/assistant_zero_state_view_unittest.cc
@@ -8,6 +8,7 @@
 #include "ash/assistant/ui/assistant_ui_constants.h"
 #include "ash/assistant/ui/assistant_view_ids.h"
 #include "ash/assistant/ui/colors/assistant_colors.h"
+#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_pref_names.h"
 #include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
@@ -28,7 +29,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       /*enabled_features=*/{}, /*disabled_features=*/{
-          chromeos::features::kDarkLightMode, features::kProductivityLauncher});
+          chromeos::features::kDarkLightMode, features::kNotificationsRefresh,
+          features::kProductivityLauncher});
 
   ShowAssistantUi();
 
diff --git a/ash/assistant/ui/main_stage/suggestion_chip_view_unittest.cc b/ash/assistant/ui/main_stage/suggestion_chip_view_unittest.cc
index 608f0e4..05ccae44 100644
--- a/ash/assistant/ui/main_stage/suggestion_chip_view_unittest.cc
+++ b/ash/assistant/ui/main_stage/suggestion_chip_view_unittest.cc
@@ -8,6 +8,7 @@
 #include "ash/assistant/ui/assistant_view_ids.h"
 #include "ash/assistant/ui/test_support/mock_assistant_view_delegate.h"
 #include "ash/assistant/util/test_support/macros.h"
+#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_pref_names.h"
 #include "ash/public/cpp/style/color_provider.h"
 #include "ash/session/session_controller_impl.h"
@@ -205,7 +206,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       /*enabled_features=*/{}, /*disabled_features=*/{
-          chromeos::features::kDarkLightMode, features::kProductivityLauncher});
+          chromeos::features::kDarkLightMode, features::kNotificationsRefresh,
+          features::kProductivityLauncher});
 
   auto widget = CreateFramelessTestWidget();
   auto* suggestion_chip_view =
diff --git a/ash/assistant/ui/main_stage/ui_element_container_view_unittest.cc b/ash/assistant/ui/main_stage/ui_element_container_view_unittest.cc
index a8402ac..72e6dd5 100644
--- a/ash/assistant/ui/main_stage/ui_element_container_view_unittest.cc
+++ b/ash/assistant/ui/main_stage/ui_element_container_view_unittest.cc
@@ -7,6 +7,7 @@
 #include "ash/assistant/assistant_interaction_controller_impl.h"
 #include "ash/assistant/test/assistant_ash_test_base.h"
 #include "ash/assistant/ui/assistant_view_ids.h"
+#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_pref_names.h"
 #include "ash/public/cpp/assistant/controller/assistant_interaction_controller.h"
 #include "ash/session/session_controller_impl.h"
@@ -66,7 +67,8 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       /*enabled_features=*/{}, /*disabled_features=*/{
-          chromeos::features::kDarkLightMode, features::kProductivityLauncher});
+          chromeos::features::kDarkLightMode, features::kNotificationsRefresh,
+          features::kProductivityLauncher});
 
   ShowAssistantUi();
 
diff --git a/ash/components/login/auth/auth_session_authenticator.cc b/ash/components/login/auth/auth_session_authenticator.cc
index 985504c..a371334 100644
--- a/ash/components/login/auth/auth_session_authenticator.cc
+++ b/ash/components/login/auth/auth_session_authenticator.cc
@@ -19,6 +19,7 @@
 #include "chromeos/dbus/cryptohome/UserDataAuth.pb.h"
 #include "chromeos/dbus/userdataauth/userdataauth_client.h"
 #include "components/device_event_log/device_event_log.h"
+#include "components/user_manager/known_user.h"
 #include "components/user_manager/user_names.h"
 
 namespace ash {
@@ -26,9 +27,11 @@
 AuthSessionAuthenticator::AuthSessionAuthenticator(
     AuthStatusConsumer* consumer,
     std::unique_ptr<SafeModeDelegate> safe_mode_delegate,
+    base::RepeatingCallback<void(const AccountId&)> user_recorder,
     bool is_ephemeral_mount_enforced)
     : Authenticator(consumer),
       is_ephemeral_mount_enforced_(is_ephemeral_mount_enforced),
+      user_recorder_(std::move(user_recorder)),
       safe_mode_delegate_(std::move(safe_mode_delegate)),
       auth_factor_editor_(std::make_unique<AuthFactorEditor>()),
       auth_performer_(
@@ -114,6 +117,12 @@
     }
     // In both cases, add a key
     if (challenge_response_auth) {
+      // We need to store a user information as it would be used by
+      // CryptohomeKeyDelegateServiceProvider.
+      // Note that this might result in orphaned records in LocalState, but
+      // that should be fixed once crbug.com/1334140 is implemented.
+      steps.push_back(base::BindOnce(&AuthSessionAuthenticator::SaveKnownUser,
+                                     weak_factory_.GetWeakPtr()));
       steps.push_back(
           base::BindOnce(&AuthFactorEditor::AddContextChallengeResponseKey,
                          auth_factor_editor_->AsWeakPtr()));
@@ -760,4 +769,11 @@
   }
 }
 
+void AuthSessionAuthenticator::SaveKnownUser(
+    std::unique_ptr<UserContext> context,
+    AuthOperationCallback callback) {
+  user_recorder_.Run(context->GetAccountId());
+  std::move(callback).Run(std::move(context), absl::nullopt);
+}
+
 }  // namespace ash
diff --git a/ash/components/login/auth/auth_session_authenticator.h b/ash/components/login/auth/auth_session_authenticator.h
index df5f439..cd722b77 100644
--- a/ash/components/login/auth/auth_session_authenticator.h
+++ b/ash/components/login/auth/auth_session_authenticator.h
@@ -51,9 +51,20 @@
 class COMPONENT_EXPORT(ASH_LOGIN_AUTH) AuthSessionAuthenticator
     : public Authenticator {
  public:
-  AuthSessionAuthenticator(AuthStatusConsumer* consumer,
-                           std::unique_ptr<SafeModeDelegate> safe_mode_delegate,
-                           bool is_ephemeral_mount_enforced);
+  // `consumer` would receive notifications upon authentication success/failure/
+  // triggering edge case.
+  // `safe_mode_delegate` is an interface for detecting safe mode / checking if
+  // user is indeed an owner.
+  // `user_recorder` is used during user creation of the user when
+  // challenge-response authentication is used, so that
+  // CryptohomeKeyDelegateServiceProvider would work correctly.
+  // `is_ephemeral_mount_enforced` forces usage of ephemeral mounts for all
+  // user types (including regular users and kiosks).
+  AuthSessionAuthenticator(
+      AuthStatusConsumer* consumer,
+      std::unique_ptr<SafeModeDelegate> safe_mode_delegate,
+      base::RepeatingCallback<void(const AccountId&)> user_recorder,
+      bool is_ephemeral_mount_enforced);
 
   // Authenticator overrides.
   void CompleteLogin(std::unique_ptr<UserContext> user_context) override;
@@ -141,7 +152,13 @@
   void OnUnmountForNonOwner(std::unique_ptr<UserContext> context,
                             absl::optional<CryptohomeError> error);
 
+  // Save information about user so that it can be used by
+  // `CryptohomeKeyDelegateServiceProvider`.
+  void SaveKnownUser(std::unique_ptr<UserContext> context,
+                     AuthOperationCallback callback);
+
   const bool is_ephemeral_mount_enforced_;
+  base::RepeatingCallback<void(const AccountId&)> user_recorder_;
   std::unique_ptr<SafeModeDelegate> safe_mode_delegate_;
   std::unique_ptr<AuthFactorEditor> auth_factor_editor_;
   std::unique_ptr<AuthPerformer> auth_performer_;
diff --git a/ash/services/device_sync/BUILD.gn b/ash/services/device_sync/BUILD.gn
index 59f5c82..c259ede 100644
--- a/ash/services/device_sync/BUILD.gn
+++ b/ash/services/device_sync/BUILD.gn
@@ -178,7 +178,6 @@
     ":*",
     "//ash/services/device_sync/public/cpp:prefs",
     "//ash/services/device_sync/public/cpp:unit_tests",
-    "//chrome/browser/ash",
     "//chrome/browser/chromeos",
     "//chrome/test:test_support_ui",
   ]
diff --git a/ash/services/secure_channel/BUILD.gn b/ash/services/secure_channel/BUILD.gn
index c6ae8a2..0dd2f39 100644
--- a/ash/services/secure_channel/BUILD.gn
+++ b/ash/services/secure_channel/BUILD.gn
@@ -193,7 +193,6 @@
   visibility = [
     ":*",
     "//ash/services/secure_channel/public/cpp/client:unit_tests",
-    "//chrome/browser/ash",
     "//chrome/browser/chromeos",
   ]
 }
diff --git a/ash/strings/ash_strings_af.xtb b/ash/strings/ash_strings_af.xtb
index 01a6e65..cdf21550 100644
--- a/ash/strings/ash_strings_af.xtb
+++ b/ash/strings/ash_strings_af.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">Gaan voort</translation>
 <translation id="2367186422933365202">Kan nie by jou Chromebook aanmeld nie</translation>
 <translation id="2369165858548251131">"Hallo" in Chinees</translation>
+<translation id="2375445874393996153">Jy kan nie meer Google Assistent gebruik om te soek wat op jou skerm is nie.</translation>
 <translation id="2390318262976603432">Locale-instellings</translation>
 <translation id="240006516586367791">Mediakontroles</translation>
 <translation id="2402411679569069051">Gebruik jou vingerafdruk of ontsluit jou foon om jou Chromebook te ontsluit</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb
index 4f5b3f23..9ffe46b 100644
--- a/ash/strings/ash_strings_as.xtb
+++ b/ash/strings/ash_strings_as.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">কেলেণ্ডাৰ</translation>
 <translation id="1153356358378277386">যোৰা লগোৱা ডিভাইচ</translation>
 <translation id="1165712434476988950">আপডে’টটো প্ৰয়োগ কৰিবলৈ ডিভাইচটো ৰিষ্টাৰ্ট কৰাৰ আৱশ্যক।</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">আপোনাৰ USB-C কে’বল ডিছপ্লে’ৰ সৈতে সঠিকভাৱে সংযোগ নহ’বও পাৰে</translation>
 <translation id="1175572348579024023">স্ক্ৰ’ল কৰক</translation>
 <translation id="1178581264944972037">পজ কৰক</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb
index 1194f9b..4aeb9ff 100644
--- a/ash/strings/ash_strings_bn.xtb
+++ b/ash/strings/ash_strings_bn.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">ক্যালেন্ডার</translation>
 <translation id="1153356358378277386">যুক্ত করা ডিভাইসগুলি</translation>
 <translation id="1165712434476988950">আপটেড প্রয়োগ করতে ডিভাইস রিস্টার্ট করুন।</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">আপনার USB-C কেবলটি ডিসপ্লেতে সঠিকভাবে কানেক্ট নাও করতে পারে</translation>
 <translation id="1175572348579024023">স্ক্রল করুন</translation>
 <translation id="1178581264944972037">বিরতি</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb
index 24eeeaf..36c1486 100644
--- a/ash/strings/ash_strings_bs.xtb
+++ b/ash/strings/ash_strings_bs.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">Nastavi</translation>
 <translation id="2367186422933365202">Nije se moguće prijaviti na Chromebook</translation>
 <translation id="2369165858548251131">"Zdravo" na kineskom</translation>
+<translation id="2375445874393996153">Pretraživanje sadržaja ekrana pomoću Google Asistenta više nije podržano.</translation>
 <translation id="2390318262976603432">Postavke jezika/zemlje</translation>
 <translation id="240006516586367791">Kontrole medija</translation>
 <translation id="2402411679569069051">Da otključate Chromebook, koristite otisak prsta ili otključate telefon</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb
index 318d024..6345d980 100644
--- a/ash/strings/ash_strings_el.xtb
+++ b/ash/strings/ash_strings_el.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">Συνέχεια</translation>
 <translation id="2367186422933365202">Δεν είναι δυνατή η σύνδεση στο Chromebook</translation>
 <translation id="2369165858548251131">"Γεια σας" στα κινεζικά</translation>
+<translation id="2375445874393996153">Δεν υποστηρίζεται πλέον η αναζήτηση του περιεχομένου της οθόνης μου με τον Βοηθό Google.</translation>
 <translation id="2390318262976603432">Τοπικές ρυθμίσεις</translation>
 <translation id="240006516586367791">Στοιχεία ελέγχου μέσων</translation>
 <translation id="2402411679569069051">Για να ξεκλειδώσετε το Chromebook, χρησιμοποιήστε το δακτυλικό αποτύπωμά σας ή ξεκλειδώστε το τηλέφωνό σας</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb
index 8f51d88..4b7817d 100644
--- a/ash/strings/ash_strings_en-GB.xtb
+++ b/ash/strings/ash_strings_en-GB.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">Calendar</translation>
 <translation id="1153356358378277386">Paired devices</translation>
 <translation id="1165712434476988950">Device restart is required to apply the update.</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">Your USB-C cable may not connect to displays properly</translation>
 <translation id="1175572348579024023">Scroll</translation>
 <translation id="1178581264944972037">Pause</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb
index cb70736c..b4e0db9 100644
--- a/ash/strings/ash_strings_es-419.xtb
+++ b/ash/strings/ash_strings_es-419.xtb
@@ -1179,7 +1179,7 @@
 <translation id="7977927628060636163">Buscando redes móviles…</translation>
 <translation id="7982789257301363584">Red</translation>
 <translation id="7984197416080286869">Demasiados intentos con la huella dactilar</translation>
-<translation id="798779949890829624">El administrador controla esta configuración</translation>
+<translation id="798779949890829624">El administrador controla este parámetro de configuración.</translation>
 <translation id="7994370417837006925">Acceso múltiple</translation>
 <translation id="7995804128062002838">No se pudo realizar una captura de pantalla.</translation>
 <translation id="8000066093800657092">Sin red</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index 9cda28d..d284d17 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -897,7 +897,7 @@
 <translation id="6254629735336163724">Bloqueada en horizontal</translation>
 <translation id="6259254695169772643">Usa el lápiz óptico para seleccionar contenido</translation>
 <translation id="6267036997247669271"><ph name="NAME" />: Activando...</translation>
-<translation id="6274202259872570803">Captura de vídeo</translation>
+<translation id="6274202259872570803">Grabación de pantalla</translation>
 <translation id="6283712521836204486">El modo No molestar está desactivado.</translation>
 <translation id="6284232397434400372">Se ha cambiado la resolución</translation>
 <translation id="6288235558961782912">Se puede volver a añadir <ph name="USER_EMAIL_ADDRESS" /> más adelante con un permiso parental.</translation>
diff --git a/ash/strings/ash_strings_eu.xtb b/ash/strings/ash_strings_eu.xtb
index 818d8fc1..ea5e7d2c 100644
--- a/ash/strings/ash_strings_eu.xtb
+++ b/ash/strings/ash_strings_eu.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">Egutegia</translation>
 <translation id="1153356358378277386">Parekatutako gailuak</translation>
 <translation id="1165712434476988950">Gailua berrabiarazi egin behar da eguneratzea aplikatzeko.</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">Baliteke USB-C kablea behar bezala ez konektatzea pantailetara</translation>
 <translation id="1175572348579024023">Egin gora edo behera</translation>
 <translation id="1178581264944972037">Pausatu</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb
index bd78ba82..787ca5d 100644
--- a/ash/strings/ash_strings_fil.xtb
+++ b/ash/strings/ash_strings_fil.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">Magpatuloy</translation>
 <translation id="2367186422933365202">Hindi makapag-sign in sa iyong Chromebook</translation>
 <translation id="2369165858548251131">"Kumusta" sa Chinese</translation>
+<translation id="2375445874393996153">Hindi na sinusuportahan ang paghahanap sa kung ano'ng nasa screen ko gamit ang Google Assistant.</translation>
 <translation id="2390318262976603432">Mga Setting ng Lokalidad</translation>
 <translation id="240006516586367791">Mga kontrol ng media</translation>
 <translation id="2402411679569069051">Para i-unlock ang iyong Chromebook, gamitin ang fingerprint mo o i-unlock ang iyong telepono</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb
index 774900d..2fbd79f3 100644
--- a/ash/strings/ash_strings_hr.xtb
+++ b/ash/strings/ash_strings_hr.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">Nastavi</translation>
 <translation id="2367186422933365202">Prijava na Chromebook nije uspjela</translation>
 <translation id="2369165858548251131">"Zdravo" na kineskom</translation>
+<translation id="2375445874393996153">Pretraživanje sadržaja na zaslonu pomoću Google asistenta više nije podržano.</translation>
 <translation id="2390318262976603432">Postavke oznake zemlje/jezika</translation>
 <translation id="240006516586367791">Medijske kontrole</translation>
 <translation id="2402411679569069051">Da biste otključali Chromebook, upotrijebite otisak prsta ili otključajte telefon</translation>
diff --git a/ash/strings/ash_strings_hy.xtb b/ash/strings/ash_strings_hy.xtb
index 0d25627..c0501bc 100644
--- a/ash/strings/ash_strings_hy.xtb
+++ b/ash/strings/ash_strings_hy.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">Շարունակել</translation>
 <translation id="2367186422933365202">Չհաջողվեց մուտք գործել Chromebook</translation>
 <translation id="2369165858548251131">Ինչպես չինարեն ասել «Բարև»</translation>
+<translation id="2375445874393996153">Google Օգնականի միջոցով էկրանին պատկերված բովանդակության որոնումն այլևս չի աջակցվում։</translation>
 <translation id="2390318262976603432">Լեզվի կարգավորումներ</translation>
 <translation id="240006516586367791">Մեդիա կարգավորումներ</translation>
 <translation id="2402411679569069051">Ապակողպեք ձեր Chromebook-ը մատնահետքի կամ հեռախոսն ապակողպելու միջոցով</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb
index 9e12847..f7e80b216 100644
--- a/ash/strings/ash_strings_ka.xtb
+++ b/ash/strings/ash_strings_ka.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">კალენდარი</translation>
 <translation id="1153356358378277386">დაწყვილებული მოწყობილობები</translation>
 <translation id="1165712434476988950">განახლების გასააქტიურებლად საჭიროა მოწყობილობის გადატვირთვა.</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">თქვენი USB-C კაბელი შეიძლება სათანადოდ არ უკავშირდებოდეს ეკრანებს</translation>
 <translation id="1175572348579024023">გადაადგილება</translation>
 <translation id="1178581264944972037">პაუზა</translation>
@@ -239,6 +240,7 @@
 <translation id="2359808026110333948">გაგრძელება</translation>
 <translation id="2367186422933365202">თქვენს Chromebook-ში შესვლა ვერ მოხერხდა</translation>
 <translation id="2369165858548251131">„გამარჯობა“ ჩინურად</translation>
+<translation id="2375445874393996153">ეკრანზე არსებული კონტენტის Google ასისტენტის მეშვეობით ძიება მხარდაჭერილი აღარ არის.</translation>
 <translation id="2390318262976603432">ლოკალის პარამეტრები</translation>
 <translation id="240006516586367791">მედიის მართვის საშუალებები</translation>
 <translation id="2402411679569069051">თქვენი Chromebook-ის განსაბლოკად გამოიყენეთ თქვენი თითის ანაბეჭდი, ან განბლოკეთ თქვენი ტელეფონი</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb
index b67a2d9..a6ad309 100644
--- a/ash/strings/ash_strings_km.xtb
+++ b/ash/strings/ash_strings_km.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">បន្ត</translation>
 <translation id="2367186422933365202">មិនអាច​ចូល Chromebook របស់អ្នក​បានទេ</translation>
 <translation id="2369165858548251131">"សួស្ដី" ជាភាសាចិន</translation>
+<translation id="2375445874393996153">លែង​អាច​ស្វែងរក​អ្វីដែល​ស្ថិតនៅលើ​អេក្រង់​របស់ខ្ញុំ​ដោយប្រើ Google Assistant បានទៀតហើយ។</translation>
 <translation id="2390318262976603432">ការកំណត់ភាសា</translation>
 <translation id="240006516586367791">ការគ្រប់គ្រង​មេឌៀ</translation>
 <translation id="2402411679569069051">ដើម្បី​ដោះសោ Chromebook របស់អ្នក សូមប្រើស្នាមម្រាមដៃ​របស់អ្នក ឬដោះសោ​ទូរសព្ទរបស់អ្នក</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb
index 922a2c0..85efec8 100644
--- a/ash/strings/ash_strings_lt.xtb
+++ b/ash/strings/ash_strings_lt.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">Kalendorius</translation>
 <translation id="1153356358378277386">Susieti įrenginiai</translation>
 <translation id="1165712434476988950">Norint pritaikyti naujinį, reikia paleisti įrenginį iš naujo.</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">Gali būti, kad USB-C laidu nepavyksta tinkamai prisijungti prie ekranų</translation>
 <translation id="1175572348579024023">Slinkti</translation>
 <translation id="1178581264944972037">Pristabdyti</translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb
index 4d57f2b..54dfa48 100644
--- a/ash/strings/ash_strings_mk.xtb
+++ b/ash/strings/ash_strings_mk.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">Продолжи</translation>
 <translation id="2367186422933365202">Не може да се најавите на вашиот Chromebook</translation>
 <translation id="2369165858548251131">„Здраво“ на кинески</translation>
+<translation id="2375445874393996153">Пребарувањето на содржините на екранот со „Помошникот на Google“ веќе не е поддржано.</translation>
 <translation id="2390318262976603432">Поставки за локален стандард</translation>
 <translation id="240006516586367791">Контроли за аудиовизуелни содржини</translation>
 <translation id="2402411679569069051">За да го отклучите вашиот Chromebook, користете го отпечатокот или отклучете го телефонот</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb
index c8208b7..b7b6f1b 100644
--- a/ash/strings/ash_strings_ml.xtb
+++ b/ash/strings/ash_strings_ml.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">കലണ്ടർ</translation>
 <translation id="1153356358378277386">ജോടിയാക്കിയ ഉപകരണങ്ങൾ</translation>
 <translation id="1165712434476988950">അപ്‌ഡേറ്റ് ബാധകമാക്കാൻ ഉപകരണം റീസ്‌റ്റാർട്ട് ചെയ്യേണ്ടതുണ്ട്.</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">നിങ്ങളുടെ USB-C കേബിൾ, ഡിസ്‌പ്ലേകളിലേക്ക് ശരിയായി കണക്റ്റ് ആയേക്കില്ല</translation>
 <translation id="1175572348579024023">സ്‌ക്രോൾ ചെയ്യുക</translation>
 <translation id="1178581264944972037">താൽക്കാലികമായി നിർത്തുക</translation>
@@ -239,6 +240,7 @@
 <translation id="2359808026110333948">തുടരുക</translation>
 <translation id="2367186422933365202">നിങ്ങളുടെ Chromebook-ലേക്ക് സൈൻ ഇൻ ചെയ്യാനാകുന്നില്ല</translation>
 <translation id="2369165858548251131">"ഹലോ" എന്നത് ചൈനീസിൽ</translation>
+<translation id="2375445874393996153">Google Assistant ഉപയോഗിച്ച് എന്റെ സ്‌ക്രീനിൽ എന്താണുള്ളതെന്ന് തിരയുന്ന ഫീച്ചറിന് ഇനി പിന്തുണയില്ല.</translation>
 <translation id="2390318262976603432">ഭാഷാ ക്രമീകരണം</translation>
 <translation id="240006516586367791">മീഡിയാ നിയന്ത്രണങ്ങൾ</translation>
 <translation id="2402411679569069051">Chromebook അൺലോക്ക് ചെയ്യാൻ നിങ്ങളുടെ ഫിംഗർപ്രിന്റ് ഉപയോഗിക്കുക അല്ലെങ്കിൽ ഫോൺ അൺലോക്ക് ചെയ്യുക</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb
index c7a2c6b..fc5e66fb 100644
--- a/ash/strings/ash_strings_mn.xtb
+++ b/ash/strings/ash_strings_mn.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">Календарь</translation>
 <translation id="1153356358378277386">Хослуулсан төхөөрөмж</translation>
 <translation id="1165712434476988950">Шинэчлэлтийг ашиглахын тулд төхөөрөмжөө дахин эхлүүлэх шаардлагатай.</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">Таны USB-C кабель дэлгэцүүдэд зохих ёсоор холбогдохгүй байж магадгүй</translation>
 <translation id="1175572348579024023">Гүйлгэх</translation>
 <translation id="1178581264944972037">Түр зогсоох</translation>
@@ -239,6 +240,7 @@
 <translation id="2359808026110333948">Цааш</translation>
 <translation id="2367186422933365202">Таны Chromebook-д нэвтрэх боломжгүй</translation>
 <translation id="2369165858548251131">"Сайн байна уу?"-г хятад хэлээр</translation>
+<translation id="2375445874393996153">Google Туслахаар миний дэлгэцэн дээр юу байгааг хайхыг цаашид дэмжихээ больсон.</translation>
 <translation id="2390318262976603432">Хэл болон улсын кодын тохиргоо</translation>
 <translation id="240006516586367791">Медиа хяналт</translation>
 <translation id="2402411679569069051">Chromebook-нхээ түгжээг тайлахын тулд хурууны хээгээ ашиглах эсвэл утасныхаа түгжээг тайлна уу</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb
index b2e28dd..dec588d 100644
--- a/ash/strings/ash_strings_mr.xtb
+++ b/ash/strings/ash_strings_mr.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">सुरू ठेवा</translation>
 <translation id="2367186422933365202">तुमच्या Chromebook मध्ये साइन इन करू शकत नाही</translation>
 <translation id="2369165858548251131">चिनी भाषेत "हॅलो"</translation>
+<translation id="2375445874393996153">तुमच्या स्क्रीनवर काय आहे ते Google Assistant वापरून शोधणे याला यापुढे सपोर्ट नाही.</translation>
 <translation id="2390318262976603432">लोकॅल सेटिंग्ज</translation>
 <translation id="240006516586367791">मीडिया नियंत्रणे</translation>
 <translation id="2402411679569069051">तुमचे Chromebook अनलॉक करण्यासाठी, तुमचे फिंगरप्रिंट वापरा किंवा तुमचा फोन अनलॉक करा</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb
index 8d0b81b..38b7cd2c 100644
--- a/ash/strings/ash_strings_ms.xtb
+++ b/ash/strings/ash_strings_ms.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">Kalendar</translation>
 <translation id="1153356358378277386">Peranti digandingkan</translation>
 <translation id="1165712434476988950">Peranti perlu dimulakan semula untuk memasang kemaskinian.</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">Kabel USB-C anda mungkin tidak bersambung ke paparan dengan betul</translation>
 <translation id="1175572348579024023">Tatal</translation>
 <translation id="1178581264944972037">Jeda</translation>
@@ -239,6 +240,7 @@
 <translation id="2359808026110333948">Teruskan</translation>
 <translation id="2367186422933365202">Tidak dapat log masuk ke Chromebook anda</translation>
 <translation id="2369165858548251131">"Helo" dalam bahasa Cina</translation>
+<translation id="2375445874393996153">Mencari item pada skrin saya dengan Google Assistant tidak disokong lagi.</translation>
 <translation id="2390318262976603432">Tetapan Tempat Peristiwa</translation>
 <translation id="240006516586367791">Kawalan media</translation>
 <translation id="2402411679569069051">Untuk membuka kunci Chromebook anda, gunakan cap jari atau buka kunci telefon anda</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb
index a63288c..7dcfda9 100644
--- a/ash/strings/ash_strings_my.xtb
+++ b/ash/strings/ash_strings_my.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">ပြက္ခဒိန်</translation>
 <translation id="1153356358378277386">တွဲချိတ်ထားသည့် စက်ပစ္စည်းများ</translation>
 <translation id="1165712434476988950">အပ်ဒိတ်ထည့်သွင်းရန် ကိရိယာကို ပြန်စရပါမည်။</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />၊ <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">သင့် USB-C ကေဘယ်သည် ဖန်သားပြင်များသို့ မှန်ကန်စွာ ချိတ်ဆက်ထားခြင်း မရှိနိုင်ပါ</translation>
 <translation id="1175572348579024023">လှိမ့်ရန်</translation>
 <translation id="1178581264944972037">ဆိုင်းငံ့ထားရန်</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb
index 08f88b8..778fc60 100644
--- a/ash/strings/ash_strings_no.xtb
+++ b/ash/strings/ash_strings_no.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">Kalender</translation>
 <translation id="1153356358378277386">Tilkoblede enheter</translation>
 <translation id="1165712434476988950">Enheten må startes på nytt for at oppdateringen skal tas i bruk.</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" /> <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">USB-C-kabelen din kobler seg kanskje ikke til skjermer på riktig måte</translation>
 <translation id="1175572348579024023">Rull</translation>
 <translation id="1178581264944972037">Stans midlertidig</translation>
@@ -239,6 +240,7 @@
 <translation id="2359808026110333948">Fortsett</translation>
 <translation id="2367186422933365202">Kan ikke logge på Chromebooken</translation>
 <translation id="2369165858548251131">«Hei» på kinesisk</translation>
+<translation id="2375445874393996153">Det er ikke lenger mulig å søke etter det som er på skjermen, med Google-assistenten.</translation>
 <translation id="2390318262976603432">Lokalitetsinnstillinger</translation>
 <translation id="240006516586367791">Mediekontroller</translation>
 <translation id="2402411679569069051">For å låse opp Chromebooken, bruk fingeravtrykket eller lås opp telefonen</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb
index fb4c257..2aa7e39 100644
--- a/ash/strings/ash_strings_pt-PT.xtb
+++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">Calendário</translation>
 <translation id="1153356358378277386">Dispositivos sincronizados</translation>
 <translation id="1165712434476988950">É necessário reiniciar o dispositivo para aplicar a atualização.</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">O cabo USB-C pode não ser ligado a ecrãs corretamente</translation>
 <translation id="1175572348579024023">Deslocar</translation>
 <translation id="1178581264944972037">Pausa</translation>
@@ -239,6 +240,7 @@
 <translation id="2359808026110333948">Continuar</translation>
 <translation id="2367186422933365202">Não é possível iniciar sessão no Chromebook</translation>
 <translation id="2369165858548251131">"Olá" em chinês</translation>
+<translation id="2375445874393996153">A funcionalidade para pesquisar o que está no ecrã com o Assistente Google já não é suportada.</translation>
 <translation id="2390318262976603432">Definições locais</translation>
 <translation id="240006516586367791">Controlos de multimédia</translation>
 <translation id="2402411679569069051">Para desbloquear o Chromebook, utilize a sua impressão digital ou desbloqueie o telemóvel</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb
index 45941252..41c79ce 100644
--- a/ash/strings/ash_strings_sk.xtb
+++ b/ash/strings/ash_strings_sk.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">Pokračovať</translation>
 <translation id="2367186422933365202">Do Chromebooku sa nedá prihlásiť</translation>
 <translation id="2369165858548251131">„Dobrý deň“ po čínsky</translation>
+<translation id="2375445874393996153">Vyhľadávanie obsahu na obrazovke pomocou Asistenta Google už nie je podporované.</translation>
 <translation id="2390318262976603432">Miestne nastavenia</translation>
 <translation id="240006516586367791">Ovládacie prvky médií</translation>
 <translation id="2402411679569069051">Ak chcete Chromebook odomknúť, použite odtlačok prsta alebo odomknite telefón</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb
index ab00def..5c625a6 100644
--- a/ash/strings/ash_strings_sr-Latn.xtb
+++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">Nastavi</translation>
 <translation id="2367186422933365202">Ne možete da se prijavite na Chromebook</translation>
 <translation id="2369165858548251131">„Zdravo“ na kineskom</translation>
+<translation id="2375445874393996153">Pretraga sadržaja na ekranu pomoću Google pomoćnika više nije podržana.</translation>
 <translation id="2390318262976603432">Podešavanja lokaliteta</translation>
 <translation id="240006516586367791">Kontrole medija</translation>
 <translation id="2402411679569069051">Da biste otključali Chromebook, koristite otisak prsta ili otključajte telefon</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb
index 8b8c4c8..08dff12 100644
--- a/ash/strings/ash_strings_sr.xtb
+++ b/ash/strings/ash_strings_sr.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">Настави</translation>
 <translation id="2367186422933365202">Не можете да се пријавите на Chromebook</translation>
 <translation id="2369165858548251131">„Здраво“ на кинеском</translation>
+<translation id="2375445874393996153">Претрага садржаја на екрану помоћу Google помоћника више није подржана.</translation>
 <translation id="2390318262976603432">Подешавања локалитета</translation>
 <translation id="240006516586367791">Контроле медија</translation>
 <translation id="2402411679569069051">Да бисте откључали Chromebook, користите отисак прста или откључајте телефон</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb
index 465ffa2..149d62f 100644
--- a/ash/strings/ash_strings_te.xtb
+++ b/ash/strings/ash_strings_te.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">క్యాలెండర్</translation>
 <translation id="1153356358378277386">జత చేసిన పరికరాలు</translation>
 <translation id="1165712434476988950">అప్‌డేట్‌ను వర్తింపజేయడానికి పరికరాన్ని రీస్టార్ట్ చేయాలి.</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">మీ USB-C కేబుల్, డిస్‌ప్లేలకు సరిగ్గా కనెక్ట్ కాకపోవచ్చు</translation>
 <translation id="1175572348579024023">స్క్రోల్ చేస్తుంది</translation>
 <translation id="1178581264944972037">పాజ్ చేయి</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb
index 55dd6db..266e5438 100644
--- a/ash/strings/ash_strings_th.xtb
+++ b/ash/strings/ash_strings_th.xtb
@@ -236,6 +236,7 @@
 <translation id="2359808026110333948">ต่อไป</translation>
 <translation id="2367186422933365202">ลงชื่อเข้าใช้ Chromebook ไม่ได้</translation>
 <translation id="2369165858548251131">"สวัสดี" ในภาษาจีน</translation>
+<translation id="2375445874393996153">ระบบไม่รองรับการค้นหาว่า "มีอะไรบนหน้าจอของฉัน" ผ่าน Google Assistant แล้ว</translation>
 <translation id="2390318262976603432">การตั้งค่าภาษา</translation>
 <translation id="240006516586367791">การควบคุมสื่อ</translation>
 <translation id="2402411679569069051">ใช้ลายนิ้วมือหรือปลดล็อกโทรศัพท์เพื่อปลดล็อก Chromebook</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb
index cc3e1421..e79d1c7e 100644
--- a/ash/strings/ash_strings_uz.xtb
+++ b/ash/strings/ash_strings_uz.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">Taqvim</translation>
 <translation id="1153356358378277386">Ulangan qurilmalar</translation>
 <translation id="1165712434476988950">Yangilanishni tatbiq qilish uchun qurilmani oʻchirib yoqing.</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">USB-C kabelingiz displeylarga toʻgʻri ulanmasligi mumkin</translation>
 <translation id="1175572348579024023">Aylantirish</translation>
 <translation id="1178581264944972037">Pauza</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb
index fb264ed..9f8145c 100644
--- a/ash/strings/ash_strings_vi.xtb
+++ b/ash/strings/ash_strings_vi.xtb
@@ -31,6 +31,7 @@
 <translation id="1150989369772528668">Lịch</translation>
 <translation id="1153356358378277386">Thiết bị đã ghép nối</translation>
 <translation id="1165712434476988950">Bạn cần phải khởi động lại thiết bị để áp dụng bản cập nhật.</translation>
+<translation id="1170753161936175256"><ph name="EVENT_SUMMARY" />, <ph name="TIME_RANGE" /></translation>
 <translation id="1171742223880403396">Có thể cáp USB-C của bạn chưa kết nối đúng cách với màn hình</translation>
 <translation id="1175572348579024023">Cuộn</translation>
 <translation id="1178581264944972037">Tạm dừng</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb
index 787e916..2e15893 100644
--- a/ash/strings/ash_strings_zh-HK.xtb
+++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -239,6 +239,7 @@
 <translation id="2359808026110333948">繼續</translation>
 <translation id="2367186422933365202">無法登入 Chromebook</translation>
 <translation id="2369165858548251131">「你好」嘅英文</translation>
+<translation id="2375445874393996153">系統已不再支援透過 Google 助理搜尋螢幕上的顯示內容。</translation>
 <translation id="2390318262976603432">語言代碼設定</translation>
 <translation id="240006516586367791">媒體控制項</translation>
 <translation id="2402411679569069051">如要解鎖 Chromebook,請使用指紋或解鎖手機</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index 5b91511..0d9c0db 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -236,6 +236,7 @@
 <translation id="2359808026110333948">繼續</translation>
 <translation id="2367186422933365202">無法登入 Chromebook</translation>
 <translation id="2369165858548251131">「你好」的英文</translation>
+<translation id="2375445874393996153">系統已不再支援透過 Google 助理搜尋螢幕上的顯示內容。</translation>
 <translation id="2390318262976603432">語言代碼設定</translation>
 <translation id="240006516586367791">媒體控制項</translation>
 <translation id="2402411679569069051">如要解鎖 Chromebook,請使用指紋或解鎖手機</translation>
diff --git a/ash/style/ash_color_provider_unittests.cc b/ash/style/ash_color_provider_unittests.cc
index 504fcd4..9cf6bc0 100644
--- a/ash/style/ash_color_provider_unittests.cc
+++ b/ash/style/ash_color_provider_unittests.cc
@@ -4,6 +4,7 @@
 
 #include "ash/style/ash_color_provider.h"
 
+#include "ash/constants/ash_features.h"
 #include "ash/login/login_screen_controller.h"
 #include "ash/login/ui/login_test_base.h"
 #include "ash/public/cpp/login_types.h"
@@ -49,7 +50,9 @@
   // When dark/light mode is disabled. Color mode in non-active user sessions
   // (e.g, login page) should still be DARK.
   base::test::ScopedFeatureList disable_dark_light;
-  disable_dark_light.InitAndDisableFeature(chromeos::features::kDarkLightMode);
+  disable_dark_light.InitWithFeatures(
+      /*enabled_features=*/{}, /*disabled_features=*/{
+          chromeos::features::kDarkLightMode, features::kNotificationsRefresh});
   client->SetSessionState(session_manager::SessionState::UNKNOWN);
   EXPECT_TRUE(color_provider->IsDarkModeEnabled());
   client->SetSessionState(session_manager::SessionState::OOBE);
diff --git a/ash/system/accessibility/dictation_bubble_controller_unittest.cc b/ash/system/accessibility/dictation_bubble_controller_unittest.cc
index 454bd23..0cdc6dbe 100644
--- a/ash/system/accessibility/dictation_bubble_controller_unittest.cc
+++ b/ash/system/accessibility/dictation_bubble_controller_unittest.cc
@@ -5,6 +5,7 @@
 #include "ash/system/accessibility/dictation_bubble_controller.h"
 
 #include "ash/accessibility/accessibility_controller_impl.h"
+#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_pref_names.h"
 #include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
@@ -26,8 +27,11 @@
 
   // AshTestBase:
   void SetUp() override {
-    scoped_feature_list_.InitAndDisableFeature(
-        chromeos::features::kDarkLightMode);
+    scoped_feature_list_.InitWithFeatures(
+        /*enabled_features=*/{},
+        /*disabled_features=*/{chromeos::features::kDarkLightMode,
+                               features::kNotificationsRefresh});
+
     AshTestBase::SetUp();
     Shell::Get()->accessibility_controller()->dictation().SetEnabled(true);
   }
diff --git a/ash/system/tray/tray_event_filter.cc b/ash/system/tray/tray_event_filter.cc
index 81426eb..42cd976e 100644
--- a/ash/system/tray/tray_event_filter.cc
+++ b/ash/system/tray/tray_event_filter.cc
@@ -55,6 +55,11 @@
     ProcessPressedEvent(*event);
 }
 
+void TrayEventFilter::OnGestureEvent(ui::GestureEvent* event) {
+  if (event->type() == ui::ET_GESTURE_SCROLL_BEGIN)
+    ProcessPressedEvent(*event);
+}
+
 void TrayEventFilter::ProcessPressedEvent(const ui::LocatedEvent& event) {
   // Users in a capture session may be trying to capture tray bubble(s).
   if (capture_mode_util::IsCaptureModeActive())
@@ -148,12 +153,15 @@
     if (bounds.Contains(screen_location))
       continue;
     if (bubble->GetTray()) {
-      // If the user clicks on the parent tray, don't process the event here,
-      // let the tray logic handle the event and determine show/hide behavior.
+      // Maybe close the parent tray if the user drags on it. Otherwise, let the
+      // tray logic handle the event and determine show/hide behavior if the
+      // user clicks on the parent tray.
       bounds = bubble->GetTray()->GetBoundsInScreen();
-      if (bubble->GetTray()->GetVisible() && bounds.Contains(screen_location))
+      if (bubble->GetTray()->GetVisible() && bounds.Contains(screen_location) &&
+          event.type() != ui::ET_GESTURE_SCROLL_BEGIN)
         continue;
     }
+
     trays.insert(bubble->GetTray());
   }
 
diff --git a/ash/system/tray/tray_event_filter.h b/ash/system/tray/tray_event_filter.h
index 2ac8945..ac33cd6 100644
--- a/ash/system/tray/tray_event_filter.h
+++ b/ash/system/tray/tray_event_filter.h
@@ -34,6 +34,7 @@
   // ui::EventHandler:
   void OnMouseEvent(ui::MouseEvent* event) override;
   void OnTouchEvent(ui::TouchEvent* event) override;
+  void OnGestureEvent(ui::GestureEvent* event) override;
 
  private:
   void ProcessPressedEvent(const ui::LocatedEvent& event);
diff --git a/ash/system/tray/tray_event_filter_unittest.cc b/ash/system/tray/tray_event_filter_unittest.cc
index d3e50d9..e6bf486 100644
--- a/ash/system/tray/tray_event_filter_unittest.cc
+++ b/ash/system/tray/tray_event_filter_unittest.cc
@@ -124,6 +124,26 @@
   EXPECT_TRUE(IsBubbleShown());
 }
 
+TEST_F(TrayEventFilterTest, DraggingInsideDoesNotCloseBubble) {
+  ShowSystemTrayMainView();
+  EXPECT_TRUE(IsBubbleShown());
+
+  // Dragging within the bubble should not close the bubble.
+  const gfx::Rect tray_bounds = GetSystemTrayBoundsInScreen();
+  const gfx::Point start = tray_bounds.origin();
+  const gfx::Point end_inside = start + gfx::Vector2d(5, 5);
+  GetEventGenerator()->GestureScrollSequence(start, end_inside,
+                                             base::Milliseconds(100), 4);
+  EXPECT_TRUE(IsBubbleShown());
+
+  // Dragging from inside to outside of the bubble should not close the bubble.
+  const gfx::Point start_inside = end_inside;
+  const gfx::Point end_outside = start + gfx::Vector2d(-5, -5);
+  GetEventGenerator()->GestureScrollSequence(start_inside, end_outside,
+                                             base::Milliseconds(100), 4);
+  EXPECT_TRUE(IsBubbleShown());
+}
+
 TEST_F(TrayEventFilterTest, ClickingOnMenuContainerDoesNotCloseBubble) {
   // Create a menu window and place it in the menu container window.
   std::unique_ptr<aura::Window> menu_window = CreateTestWindow();
@@ -190,6 +210,20 @@
   EXPECT_TRUE(IsBubbleShown());
 }
 
+TEST_F(TrayEventFilterTest, DraggingOnTrayClosesBubble) {
+  ShowSystemTrayMainView();
+  EXPECT_TRUE(IsBubbleShown());
+
+  // Dragging on the tray background view should close the bubble.
+  const gfx::Rect tray_bounds =
+      GetPrimaryUnifiedSystemTray()->GetBoundsInScreen();
+  const gfx::Point start = tray_bounds.CenterPoint();
+  const gfx::Point end_inside = start + gfx::Vector2d(0, 10);
+  GetEventGenerator()->GestureScrollSequence(start, end_inside,
+                                             base::Milliseconds(100), 4);
+  EXPECT_FALSE(IsBubbleShown());
+}
+
 TEST_F(TrayEventFilterTest, MessageCenterAndSystemTrayStayOpenTogether) {
   AddNotification();
 
diff --git a/ash/webui/diagnostics_ui/resources/data_point.html b/ash/webui/diagnostics_ui/resources/data_point.html
index c0b66d7..419624f 100644
--- a/ash/webui/diagnostics_ui/resources/data_point.html
+++ b/ash/webui/diagnostics_ui/resources/data_point.html
@@ -1,11 +1,15 @@
 <style include="diagnostics-shared diagnostics-fonts">
   :host([orientation=horizontal]) {
     --diagnostics-data-point-subtitle-color: var(--cros-text-color-primary);
-    --diagnostics-data-point-subtitle-font-size: 12px;
     --diagnostics-data-point-title-color: var(--cros-text-color-secondary);
-    --diagnostics-data-point-title-font-size: 12px;
     line-height: 18px;
   }
+
+  :host([orientation=horizontal]) .header,
+  :host([orientation=horizontal]) .value {
+    font-size: 12px;
+  }
+
   .data-point {
     display: flex;
   }
@@ -21,7 +25,7 @@
   .header {
     color: var(--diagnostics-data-point-title-color);
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-data-point-title-font-size);
+    font-size: 13px;
     font-weight: var(--diagnostics-regular-font-weight);
   }
 
@@ -46,7 +50,7 @@
   .value {
     color: var(--diagnostics-data-point-subtitle-color);
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-data-point-subtitle-font-size);
+    font-size: 13px;
     font-weight: var(--diagnostics-regular-font-weight);
     word-wrap: break-word;
   }
diff --git a/ash/webui/diagnostics_ui/resources/diagnostics_card.html b/ash/webui/diagnostics_ui/resources/diagnostics_card.html
index 4a5f30a..8d80785 100644
--- a/ash/webui/diagnostics_ui/resources/diagnostics_card.html
+++ b/ash/webui/diagnostics_ui/resources/diagnostics_card.html
@@ -18,7 +18,7 @@
   ::slotted([slot=title]) {
     color: var(--diagnostics-card-title-text-color);
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-card-title-font-size);
+    font-size: 14px;
     font-weight: var(--diagnostics-medium-font-weight);
   }
 
@@ -60,7 +60,7 @@
 
   .routine-container {
     font-family: var(--diagnostics-google-sans-font-family);
-    font-size: var(--diagnostics-default-font-size);
+    font-size: 14px;
     font-weight: var(--diagnostics-medium-font-weight);
   }
 
diff --git a/ash/webui/diagnostics_ui/resources/diagnostics_card_frame.html b/ash/webui/diagnostics_ui/resources/diagnostics_card_frame.html
index 2a6a924f..9200bdb 100644
--- a/ash/webui/diagnostics_ui/resources/diagnostics_card_frame.html
+++ b/ash/webui/diagnostics_ui/resources/diagnostics_card_frame.html
@@ -7,7 +7,7 @@
   ::slotted([slot=title]) {
     color: var(--diagnostics-card-title-text-color);
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-card-title-font-size);
+    font-size: 14px;
     font-weight: var(--diagnostics-medium-font-weight);
   }
 
diff --git a/ash/webui/diagnostics_ui/resources/diagnostics_fonts_css.html b/ash/webui/diagnostics_ui/resources/diagnostics_fonts_css.html
index 8431512..dee4f1b 100644
--- a/ash/webui/diagnostics_ui/resources/diagnostics_fonts_css.html
+++ b/ash/webui/diagnostics_ui/resources/diagnostics_fonts_css.html
@@ -4,24 +4,6 @@
       --diagnostics-google-sans-font-family: "Google Sans", sans-serif;
       --diagnostics-roboto-font-family: Roboto, sans-serif;
 
-      --diagnostics-default-font-size: 14px;
-      --diagnostics-header-font-size: 16px;
-      --diagnostics-card-drawer-font-size: 13px;
-      --diagnostics-card-title-font-size: 14px;
-      --diagnostics-data-point-title-font-size: 13px;
-      --diagnostics-data-point-subtitle-font-size: 13px;
-      --diagnostics-overview-font-size: 13px;
-      --diagnostics-chart-label-font-size: 15px;
-      --diagnostics-chart-tick-font-size: 12px;
-      --diagnostics-chart-legend-font-size: 12px;
-      --diagnostics-text-badge-font-size: 11px;
-      --diagnostics-routine-additional-message-font-size: 13px;
-      --diagnostics-routine-name-font-size: 13px;
-      --diagnostics-test-status-text-font-size: 13px;
-      --diagnostics-button-font-size: 13px;
-      --diagnostics-caution-banner-font-size: 14px;
-      --diagnostics-troubleshooting-font-size: 13px;
-
       --diagnostics-regular-font-weight: 400;
       --diagnostics-medium-font-weight: 500;
 
diff --git a/ash/webui/diagnostics_ui/resources/diagnostics_shared_css.html b/ash/webui/diagnostics_ui/resources/diagnostics_shared_css.html
index 26b296f..cd499d2e 100644
--- a/ash/webui/diagnostics_ui/resources/diagnostics_shared_css.html
+++ b/ash/webui/diagnostics_ui/resources/diagnostics_shared_css.html
@@ -93,7 +93,7 @@
       border-radius: 16px;
       color: var(--diagnostics-overview-text-color);
       font-family: var(--diagnostics-roboto-font-family);
-      font-size: var(--diagnostics-overview-font-size);
+      font-size: 13px;
       font-weight: var(--diagnostics-regular-font-weight);
       height: 20px;
       line-height: 20px;
@@ -145,7 +145,7 @@
     .diagnostics-caution-banner-font {
       color: var(--diagnostics-caution-banner-text-color);
       font-family: var(--diagnostics-roboto-font-family);
-      font-size: var(--diagnostics-caution-banner-font-size);
+      font-size: 14px;
       font-weight: var(--diagnostics-regular-font-weight);
     }
 
diff --git a/ash/webui/diagnostics_ui/resources/ip_config_info_drawer.html b/ash/webui/diagnostics_ui/resources/ip_config_info_drawer.html
index 2c556a6..d14882a 100644
--- a/ash/webui/diagnostics_ui/resources/ip_config_info_drawer.html
+++ b/ash/webui/diagnostics_ui/resources/ip_config_info_drawer.html
@@ -6,7 +6,7 @@
   #drawerTitle {
     color: var(--diagnostics-header-text-color);
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-card-drawer-font-size);
+    font-size: 13px;
     font-weight: var(--diagnostics-regular-font-weight);
     line-height: 20px;
   }
diff --git a/ash/webui/diagnostics_ui/resources/network_list.html b/ash/webui/diagnostics_ui/resources/network_list.html
index b7f6c83..0245395 100644
--- a/ash/webui/diagnostics_ui/resources/network_list.html
+++ b/ash/webui/diagnostics_ui/resources/network_list.html
@@ -24,7 +24,7 @@
   #settingsLink {
     color: var(--diagnostics-settings-link-text-color);
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-default-font-size);
+    font-size: 14px;
     font-weight: var(--diagnostics-regular-font-weight);
     line-height: 20px;
   }
diff --git a/ash/webui/diagnostics_ui/resources/network_troubleshooting.html b/ash/webui/diagnostics_ui/resources/network_troubleshooting.html
index 781284f..8c23923 100644
--- a/ash/webui/diagnostics_ui/resources/network_troubleshooting.html
+++ b/ash/webui/diagnostics_ui/resources/network_troubleshooting.html
@@ -2,7 +2,7 @@
   #troubleshootingText {
     color: var(--diagnostics-header-text-color);
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-troubleshooting-font-size);
+    font-size: 13px;
     font-weight: var(--diagnostics-regular-font-weight);
     line-height: 20px;
   }
@@ -20,7 +20,7 @@
   #troubleshootingLinkText {
     color: var(--diagnostics-link-text-color);
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-troubleshooting-font-size);
+    font-size: 13px;
     font-weight: var(--diagnostics-regular-font-weight);
     line-height: 20px;
     margin-top: 8px;
diff --git a/ash/webui/diagnostics_ui/resources/realtime_cpu_chart.html b/ash/webui/diagnostics_ui/resources/realtime_cpu_chart.html
index f72e5589..f2548df 100644
--- a/ash/webui/diagnostics_ui/resources/realtime_cpu_chart.html
+++ b/ash/webui/diagnostics_ui/resources/realtime_cpu_chart.html
@@ -12,7 +12,7 @@
   g.tick text {
     color: var(--cros-color-secondary);
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-chart-tick-font-size);
+    font-size: 12px;
     font-weight: var(--diagnostics-regular-font-weight);
     line-height: 18px;
   }
@@ -55,7 +55,7 @@
   #chart-legend {
     color: var(--diagnostics-chart-legend-color);
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-chart-legend-font-size);
+    font-size: 12px;
     font-weight: var(--diagnostics-regular-font-weight);
     padding-right: 5px;
     text-align: right;
diff --git a/ash/webui/diagnostics_ui/resources/routine_result_entry.html b/ash/webui/diagnostics_ui/resources/routine_result_entry.html
index 17b2f3c..2d28b119 100644
--- a/ash/webui/diagnostics_ui/resources/routine_result_entry.html
+++ b/ash/webui/diagnostics_ui/resources/routine_result_entry.html
@@ -58,7 +58,7 @@
     color: var(--diagnostics-routine-name-color);
     display: inline-flex;
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-routine-name-font-size);
+    font-size: 13px;
     font-weight: var(--diagnostics-regular-font-weight);
   }
 
diff --git a/ash/webui/diagnostics_ui/resources/routine_section.html b/ash/webui/diagnostics_ui/resources/routine_section.html
index 807ca79..e2e85ce 100644
--- a/ash/webui/diagnostics_ui/resources/routine_section.html
+++ b/ash/webui/diagnostics_ui/resources/routine_section.html
@@ -2,7 +2,7 @@
   #additionalMessage {
     color: var(--diagnostics-routine-additional-message-color);
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-routine-additional-message-font-size);
+    font-size: 13px;
     font-weight: var(--diagnostics-regular-font-weight);
   }
 
@@ -20,7 +20,7 @@
   .button-container,
   .learn-more-button {
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-button-font-size);
+    font-size: 13px;
     font-weight: var(--diagnostics-medium-font-weight);
   }
 
@@ -57,7 +57,7 @@
   #testStatusText {
     color: var(--diagnostics-test-status-text-color);
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-test-status-text-font-size);
+    font-size: 13px;
     font-weight: var(--diagnostics-regular-font-weight);
     padding-inline-start: 6px;
   }
diff --git a/ash/webui/diagnostics_ui/resources/system_page.html b/ash/webui/diagnostics_ui/resources/system_page.html
index 1d86371..6cb7e658 100644
--- a/ash/webui/diagnostics_ui/resources/system_page.html
+++ b/ash/webui/diagnostics_ui/resources/system_page.html
@@ -42,7 +42,7 @@
    align-self: flex-start;
    color: var(--diagnostics-header-text-color);
    font-family: var(--diagnostics-roboto-font-family);
-   font-size: var(--diagnostics-header-font-size);
+   font-size: 16px;
    font-weight: var(--diagnostics-medium-font-weight);
    margin-bottom: 10px;
    margin-left: 22px;
diff --git a/ash/webui/diagnostics_ui/resources/text_badge.html b/ash/webui/diagnostics_ui/resources/text_badge.html
index e3a02bb..9a1cdc6 100644
--- a/ash/webui/diagnostics_ui/resources/text_badge.html
+++ b/ash/webui/diagnostics_ui/resources/text_badge.html
@@ -29,7 +29,7 @@
   #textBadge {
     border-radius: 4px;
     font-family: var(--diagnostics-roboto-font-family);
-    font-size: var(--diagnostics-text-badge-font-size);
+    font-size: 11px;
     font-weight: var(--diagnostics-medium-font-weight);
     height: 20px;
     letter-spacing: .8px;
diff --git a/base/BUILD.gn b/base/BUILD.gn
index 6b3dfff..8f468a2 100644
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -3053,6 +3053,7 @@
     "environment_unittest.cc",
     "feature_list_unittest.cc",
     "files/file_enumerator_unittest.cc",
+    "files/file_error_or_unittest.cc",
     "files/file_path_unittest.cc",
     "files/file_path_watcher_unittest.cc",
     "files/file_proxy_unittest.cc",
diff --git a/base/allocator/partition_allocator/DEPS b/base/allocator/partition_allocator/DEPS
index b49d589b..5507ba3 100644
--- a/base/allocator/partition_allocator/DEPS
+++ b/base/allocator/partition_allocator/DEPS
@@ -9,12 +9,8 @@
     "+third_party/lss/linux_syscall_support.h",
 ]
 
-# These are dependencies included only from tests, which means we can tackle
-# them at a later point of time.
-#
-# CAUTION! This list can't be verified automatically and thus can easily get out
-# of date.
-include_rules += [
+specific_include_rules = {
+  ".*_(perf|unit)test\.cc$": [
     "+base/allocator/allocator_shim_default_dispatch_to_partition_alloc.h",
     "+base/debug/proc_maps_linux.h",
     "+base/system/sys_info.h",
@@ -23,6 +19,12 @@
     "+base/win/windows_version.h",
     "+testing/gmock/include/gmock/gmock.h",
     "+testing/gtest/include/gtest/gtest.h",
-    "+testing/gtest/include/gtest/gtest_prod.h",
     "+testing/perf/perf_result_reporter.h",
-]
+  ],
+  "extended_api\.cc$": [
+    "+base/allocator/allocator_shim_default_dispatch_to_partition_alloc.h",
+  ],
+  "gtest_prod_util\.h$": [
+    "+testing/gtest/include/gtest/gtest_prod.h",
+  ],
+}
diff --git a/base/files/file_error_or.h b/base/files/file_error_or.h
index ce1b3cf..0b0e666d 100644
--- a/base/files/file_error_or.h
+++ b/base/files/file_error_or.h
@@ -9,7 +9,7 @@
 
 #include "base/check.h"
 #include "base/files/file.h"
-#include "third_party/abseil-cpp/absl/types/variant.h"
+#include "base/types/expected.h"
 
 namespace base {
 
@@ -21,37 +21,26 @@
  public:
   // These constructors are intentionally not marked `explicit` for cleaner code
   // at call sites.
-  FileErrorOr(base::File::Error error) : error_or_value_(error) {}
-  FileErrorOr(ValueType&& value) : error_or_value_(std::move(value)) {}
+  FileErrorOr(File::Error error) : value_or_error_(unexpected(error)) {}
+  FileErrorOr(ValueType&& value) : value_or_error_(std::move(value)) {}
   FileErrorOr(const FileErrorOr&) = default;
   FileErrorOr(FileErrorOr&&) = default;
   FileErrorOr& operator=(const FileErrorOr&) = default;
   FileErrorOr& operator=(FileErrorOr&&) = default;
   ~FileErrorOr() = default;
 
-  bool is_error() const {
-    return absl::get_if<base::File::Error>(&error_or_value_);
-  }
-  base::File::Error error() const {
-    CHECK(is_error());
-    return absl::get<base::File::Error>(error_or_value_);
-  }
+  bool is_error() const { return !value_or_error_.has_value(); }
+  File::Error error() const { return value_or_error_.error(); }
 
-  bool is_value() const { return absl::get_if<ValueType>(&error_or_value_); }
-  ValueType& value() {
-    CHECK(!is_error());
-    return absl::get<ValueType>(error_or_value_);
-  }
-  const ValueType& value() const {
-    CHECK(!is_error());
-    return absl::get<const ValueType>(error_or_value_);
-  }
+  bool is_value() const { return value_or_error_.has_value(); }
+  ValueType& value() { return value_or_error_.value(); }
+  const ValueType& value() const { return value_or_error_.value(); }
 
   ValueType* operator->() { return &value(); }
   const ValueType* operator->() const { return &value(); }
 
  private:
-  absl::variant<base::File::Error, ValueType> error_or_value_;
+  expected<ValueType, File::Error> value_or_error_;
 };
 
 }  // namespace base
diff --git a/base/files/file_error_or_unittest.cc b/base/files/file_error_or_unittest.cc
new file mode 100644
index 0000000..1bf7528
--- /dev/null
+++ b/base/files/file_error_or_unittest.cc
@@ -0,0 +1,37 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/files/file_error_or.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace base {
+namespace {
+
+TEST(FileErrorOrDeathTest, Error) {
+  FileErrorOr<int> error(File::Error::FILE_ERROR_FAILED);
+  EXPECT_TRUE(error.is_error());
+  EXPECT_FALSE(error.is_value());
+  EXPECT_EQ(error.error(), File::Error::FILE_ERROR_FAILED);
+  EXPECT_DEATH_IF_SUPPORTED(error.value(), "");
+}
+
+TEST(FileErrorOrDeathTest, Value) {
+  FileErrorOr<int> value(42);
+  EXPECT_FALSE(value.is_error());
+  EXPECT_TRUE(value.is_value());
+  EXPECT_EQ(value.value(), 42);
+  EXPECT_DEATH_IF_SUPPORTED(value.error(), "");
+}
+
+TEST(FileErrorOrDeathTest, ConstValue) {
+  const FileErrorOr<int> const_value(1234);
+  EXPECT_FALSE(const_value.is_error());
+  EXPECT_TRUE(const_value.is_value());
+  EXPECT_EQ(const_value.value(), 1234);
+  EXPECT_DEATH_IF_SUPPORTED(const_value.error(), "");
+}
+
+}  // namespace
+}  // namespace base
diff --git a/base/memory/raw_ptr.cc b/base/memory/raw_ptr.cc
index 8c53ea4..56b70fe 100644
--- a/base/memory/raw_ptr.cc
+++ b/base/memory/raw_ptr.cc
@@ -6,6 +6,7 @@
 #include <cstdint>
 
 #include "base/allocator/buildflags.h"
+#include "base/process/process.h"
 
 // USE_BACKUP_REF_PTR implies USE_PARTITION_ALLOC, needed for code under
 // allocator/partition_allocator/ to be built.
@@ -131,28 +132,43 @@
     void const volatile* ptr) {
   if (RawPtrAsanService::GetInstance().is_dereference_check_enabled() &&
       IsFreedHeapPointer(ptr)) {
-    LOG(ERROR)
-        << "BackupRefPtr: Dereferencing a raw_ptr to an already "
-           "freed allocation at "
-        << const_cast<void*>(ptr)
-        << ".\nThis issue is covered by BackupRefPtr in production builds.";
+    RawPtrAsanService::SetPendingReport(
+        RawPtrAsanService::ReportType::kDereference, ptr);
     ForceRead(ptr);
   }
 }
 
 void AsanBackupRefPtrImpl::AsanCheckIfValidExtraction(
     void const volatile* ptr) {
-  if (RawPtrAsanService::GetInstance().is_extraction_check_enabled() &&
+  auto& service = RawPtrAsanService::GetInstance();
+
+  if ((service.is_extraction_check_enabled() ||
+       service.is_dereference_check_enabled()) &&
       IsFreedHeapPointer(ptr)) {
-    LOG(ERROR)
-        << "BackupRefPtr: Extracting from a raw_ptr to an already "
-           "freed allocation at "
-        << const_cast<void*>(ptr)
-        << ".\nIf ASan reports a use-after-free on a related address, it "
-           "*may be* covered by BackupRefPtr in production builds but the issue"
-           "requires a manual analysis to determine if that's the case.";
-    // Don't trigger ASan manually to avoid false-positives when the extracted
-    // pointer is never dereferenced.
+    RawPtrAsanService::SetPendingReport(
+        RawPtrAsanService::ReportType::kExtraction, ptr);
+    // If the dereference check is enabled, we still record the extraction event
+    // to catch the potential subsequent dangling dereference, but don't report
+    // the extraction itself.
+    if (service.is_extraction_check_enabled()) {
+      RawPtrAsanService::Log(
+          "=================================================================\n"
+          "==%d==WARNING: MiraclePtr: dangling-pointer-extraction on address "
+          "%p\n"
+          "extracted here:",
+          Process::Current().Pid(), ptr);
+      __sanitizer_print_stack_trace();
+      __asan_describe_address(const_cast<void*>(ptr));
+      RawPtrAsanService::Log(
+          "A regular ASan report will follow if the extracted pointer is "
+          "dereferenced later.\n"
+          "Otherwise, it is still likely a bug to rely on the address of an "
+          "already freed allocation.\n"
+          "Refer to "
+          "https://chromium.googlesource.com/chromium/src/+/main/base/memory/"
+          "raw_ptr.md for details.\n"
+          "=================================================================");
+    }
   }
 }
 
@@ -160,9 +176,8 @@
     void const volatile* ptr) {
   if (RawPtrAsanService::GetInstance().is_instantiation_check_enabled() &&
       IsFreedHeapPointer(ptr)) {
-    LOG(ERROR) << "BackupRefPtr: Constructing a raw_ptr from a pointer "
-                  "to an already freed allocation at "
-               << const_cast<void*>(ptr) << " leads to memory corruption.";
+    RawPtrAsanService::SetPendingReport(
+        RawPtrAsanService::ReportType::kInstantiation, ptr);
     ForceRead(ptr);
   }
 }
diff --git a/base/memory/raw_ptr_asan_service.cc b/base/memory/raw_ptr_asan_service.cc
index b5f8d817..844d9179 100644
--- a/base/memory/raw_ptr_asan_service.cc
+++ b/base/memory/raw_ptr_asan_service.cc
@@ -7,9 +7,13 @@
 #if BUILDFLAG(USE_ASAN_BACKUP_REF_PTR)
 #include <sanitizer/allocator_interface.h>
 #include <sanitizer/asan_interface.h>
+#include <stdarg.h>
+#include <string.h>
 
 #include "base/check_op.h"
 #include "base/compiler_specific.h"
+#include "base/logging.h"
+#include "base/strings/stringprintf.h"
 
 namespace base {
 
@@ -26,6 +30,18 @@
 constexpr uint8_t kAsanUserPoisonedMemoryMagic = 0xf7;
 }  // namespace
 
+// static
+void RawPtrAsanService::Log(const char* format, ...) {
+  va_list ap;
+  va_start(ap, format);
+  auto formatted_message = StringPrintV(format, ap);
+  va_end(ap);
+
+  // Despite its name, the function just prints the input to the destination
+  // configured by ASan.
+  __sanitizer_report_error_summary(formatted_message.c_str());
+}
+
 // Mark the first eight bytes of every allocation's header as "user poisoned".
 // This allows us to filter out allocations made before BRP-ASan is activated.
 // The change shouldn't reduce the regular ASan coverage.
@@ -72,6 +88,7 @@
     delete dummy_alloc;
 
     __sanitizer_install_malloc_and_free_hooks(MallocHook, FreeHook);
+    __asan_set_error_report_callback(ErrorReportCallback);
 
     is_dereference_check_enabled_ = !!enable_dereference_check;
     is_extraction_check_enabled_ = !!enable_extraction_check;
@@ -86,5 +103,88 @@
       (reinterpret_cast<uintptr_t>(ptr) >> kShadowScale) + shadow_offset_);
 }
 
+// static
+void RawPtrAsanService::SetPendingReport(ReportType type,
+                                         const volatile void* ptr) {
+  // The actual ASan crash may occur at an offset from the pointer passed
+  // here, so track the whole region.
+  void* region_base;
+  size_t region_size;
+  __asan_locate_address(const_cast<void*>(ptr), nullptr, 0, &region_base,
+                        &region_size);
+
+  GetPendingReport() = {type, reinterpret_cast<uintptr_t>(region_base),
+                        region_size};
+}
+
+// static
+void RawPtrAsanService::ErrorReportCallback(const char* report) {
+  if (strcmp(__asan_get_report_description(), "heap-use-after-free") != 0)
+    return;
+
+  const char* status_body;
+
+  auto& pending_report = GetPendingReport();
+  uintptr_t ptr = reinterpret_cast<uintptr_t>(__asan_get_report_address());
+  if (pending_report.allocation_base <= ptr &&
+      ptr < pending_report.allocation_base + pending_report.allocation_size) {
+    bool is_supported_allocation =
+        RawPtrAsanService::GetInstance().IsSupportedAllocation(
+            reinterpret_cast<void*>(pending_report.allocation_base));
+    switch (pending_report.type) {
+      case ReportType::kDereference: {
+        if (is_supported_allocation) {
+          status_body =
+              "PROTECTED\n"
+              "The crash occurred while a raw_ptr<T> object containing a "
+              "dangling pointer was being dereferenced.\n"
+              "MiraclePtr should make this crash non-exploitable in regular "
+              "builds.";
+        } else {
+          status_body =
+              "NOT PROTECTED\n"
+              "The region was allocated before MiraclePtr was activated.";
+        }
+        break;
+      }
+      case ReportType::kExtraction: {
+        if (is_supported_allocation) {
+          status_body =
+              "MANUAL ANALYSIS REQUIRED\n"
+              "A pointer to the same region was extracted from a raw_ptr<T> "
+              "object prior to the crash.\n"
+              "To determine the protection status, enable extraction warnings "
+              "and check whether the raw_ptr<T>\n"
+              "object can be destroyed or overwritten between the extraction "
+              "and "
+              "use.";
+        } else {
+          status_body =
+              "NOT PROTECTED\n"
+              "The region was allocated before MiraclePtr was activated.";
+        }
+        break;
+      }
+      case ReportType::kInstantiation: {
+        status_body =
+            "NOT PROTECTED\n"
+            "A pointer to an already freed region was assigned to a raw_ptr<T> "
+            "object, which may lead to memory\n"
+            "corruption.";
+      }
+    }
+  } else {
+    status_body =
+        "NOT PROTECTED\n"
+        "No raw_ptr<T> access to this region was detected prior to the crash.";
+  }
+
+  Log("\nMiraclePtr Status: %s\n"
+      "Refer to "
+      "https://chromium.googlesource.com/chromium/src/+/main/base/memory/"
+      "raw_ptr.md for details.",
+      status_body);
+}
+
 }  // namespace base
 #endif  // BUILDFLAG(USE_ASAN_BACKUP_REF_PTR)
diff --git a/base/memory/raw_ptr_asan_service.h b/base/memory/raw_ptr_asan_service.h
index eb4abec..8566634 100644
--- a/base/memory/raw_ptr_asan_service.h
+++ b/base/memory/raw_ptr_asan_service.h
@@ -31,6 +31,12 @@
     kEnabled,
   };
 
+  enum class ReportType {
+    kDereference,
+    kExtraction,
+    kInstantiation,
+  };
+
   void Configure(EnableDereferenceCheck,
                  EnableExtractionCheck,
                  EnableInstantiationCheck);
@@ -50,11 +56,26 @@
 
   static RawPtrAsanService& GetInstance() { return instance_; }
 
+  static void SetPendingReport(ReportType type, const volatile void* ptr);
+  static void Log(const char* format, ...);
+
  private:
+  struct PendingReport {
+    ReportType type;
+    uintptr_t allocation_base;
+    size_t allocation_size;
+  };
+
+  static PendingReport& GetPendingReport() {
+    static thread_local PendingReport report;
+    return report;
+  }
+
   uint8_t* GetShadow(void* ptr) const;
 
   static void MallocHook(const volatile void*, size_t);
   static void FreeHook(const volatile void*) {}
+  static void ErrorReportCallback(const char* report);
 
   Mode mode_ = Mode::kUninitialized;
   bool is_dereference_check_enabled_ = false;
diff --git a/base/memory/raw_ptr_unittest.cc b/base/memory/raw_ptr_unittest.cc
index f6164a10..de38ee6 100644
--- a/base/memory/raw_ptr_unittest.cc
+++ b/base/memory/raw_ptr_unittest.cc
@@ -1391,13 +1391,13 @@
   delete protected_ptr.get();
 
   EXPECT_DEATH_IF_SUPPORTED((*protected_ptr).x = 1,
-                            "BackupRefPtr: Dereferencing a raw_ptr");
+                            "dangling pointer was being dereferenced");
   EXPECT_DEATH_IF_SUPPORTED((*protected_ptr).func(),
-                            "BackupRefPtr: Dereferencing a raw_ptr");
+                            "dangling pointer was being dereferenced");
   EXPECT_DEATH_IF_SUPPORTED(++(protected_ptr->x),
-                            "BackupRefPtr: Dereferencing a raw_ptr");
+                            "dangling pointer was being dereferenced");
   EXPECT_DEATH_IF_SUPPORTED(protected_ptr->func(),
-                            "BackupRefPtr: Dereferencing a raw_ptr");
+                            "dangling pointer was being dereferenced");
 }
 
 TEST(AsanBackupRefPtrImpl, Extraction) {
@@ -1423,7 +1423,7 @@
         AsanStruct* ptr2 = protected_ptr;
         ptr2->x = 1;
       },
-      "BackupRefPtr: Extracting from a raw_ptr");
+      "pointer to the same region was extracted from a raw_ptr<T>");
 }
 
 TEST(AsanBackupRefPtrImpl, Instantiation) {
@@ -1446,7 +1446,7 @@
 
   EXPECT_DEATH_IF_SUPPORTED(
       { [[maybe_unused]] raw_ptr<AsanStruct> protected_ptr2 = ptr; },
-      "BackupRefPtr: Constructing a raw_ptr");
+      "pointer to an already freed region was assigned to a raw_ptr<T>");
 }
 
 TEST(AsanBackupRefPtrImpl, InstantiationInvalidPointer) {
@@ -1490,7 +1490,7 @@
   delete ptr;  // Should crash now.
   EXPECT_DEATH_IF_SUPPORTED(
       { [[maybe_unused]] raw_ptr<AsanStruct> protected_ptr2 = ptr; },
-      "BackupRefPtr: Constructing a raw_ptr");
+      "pointer to an already freed region was assigned to a raw_ptr<T>");
 }
 
 TEST(AsanBackupRefPtrImpl, EarlyAllocationDetection) {
diff --git a/base/values.cc b/base/values.cc
index de6685147..3282df3 100644
--- a/base/values.cc
+++ b/base/values.cc
@@ -1576,13 +1576,6 @@
 DictionaryValue::DictionaryValue(LegacyDictStorage&& storage) noexcept
     : Value(std::move(storage)) {}
 
-bool DictionaryValue::HasKey(StringPiece key) const {
-  DCHECK(IsStringUTF8AllowingNoncharacters(key));
-  auto current_entry = dict().find(key);
-  DCHECK((current_entry == dict().end()) || current_entry->second);
-  return current_entry != dict().end();
-}
-
 Value* DictionaryValue::Set(StringPiece path, std::unique_ptr<Value> in_value) {
   DCHECK(IsStringUTF8AllowingNoncharacters(path));
   DCHECK(in_value);
diff --git a/base/values.h b/base/values.h
index 78672e5..8db7e6a 100644
--- a/base/values.h
+++ b/base/values.h
@@ -1257,11 +1257,6 @@
   explicit DictionaryValue(const LegacyDictStorage& in_dict);
   explicit DictionaryValue(LegacyDictStorage&& in_dict) noexcept;
 
-  // Returns true if the current dictionary has a value for the given key.
-  //
-  // DEPRECATED: prefer `Value::Dict::contains()`.
-  bool HasKey(StringPiece key) const;
-
   // Sets the Value associated with the given path starting from this object.
   // A path has the form "<key>" or "<key>.<key>.[...]", where "." indexes
   // into the next DictionaryValue down.  Obviously, "." can't be used
diff --git a/cc/metrics/event_latency_tracing_recorder.cc b/cc/metrics/event_latency_tracing_recorder.cc
index 67ea64b..57dce58 100644
--- a/cc/metrics/event_latency_tracing_recorder.cc
+++ b/cc/metrics/event_latency_tracing_recorder.cc
@@ -35,7 +35,7 @@
           return "RendererCompositorToMain";
         default:
           NOTREACHED();
-          return nullptr;
+          return "";
       }
     case EventMetrics::DispatchStage::kRendererCompositorStarted:
       DCHECK_EQ(end_stage,
@@ -49,7 +49,7 @@
       return "RendererMainProcessing";
     case EventMetrics::DispatchStage::kRendererMainFinished:
       NOTREACHED();
-      return nullptr;
+      return "";
   }
 }
 
@@ -80,7 +80,7 @@
           return "RendererCompositorFinishedToSubmitCompositorFrame";
         default:
           NOTREACHED();
-          return nullptr;
+          return "";
       }
     case EventMetrics::DispatchStage::kRendererMainFinished:
       switch (compositor_stage) {
@@ -103,11 +103,11 @@
           return "RendererMainFinishedToSubmitCompositorFrame";
         default:
           NOTREACHED();
-          return nullptr;
+          return "";
       }
     default:
       NOTREACHED();
-      return nullptr;
+      return "";
   }
 }
 
@@ -128,7 +128,7 @@
       return "RendererMainFinishedToTermination";
     default:
       NOTREACHED();
-      return nullptr;
+      return "";
   }
 }
 
diff --git a/chrome/VERSION b/chrome/VERSION
index f9af4454..bb57cec 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=104
 MINOR=0
-BUILD=5107
+BUILD=5108
 PATCH=0
diff --git a/chrome/android/expectations/chrome_modern_public_bundle.arm.libs_and_assets.expected b/chrome/android/expectations/chrome_modern_public_bundle.arm.libs_and_assets.expected
index f008263..cfbca51 100644
--- a/chrome/android/expectations/chrome_modern_public_bundle.arm.libs_and_assets.expected
+++ b/chrome/android/expectations/chrome_modern_public_bundle.arm.libs_and_assets.expected
@@ -86,5 +86,5 @@
 apk_path=assets/locales/zu.pak, compress=False, alignment=4
 apk_path=assets/resources.pak, compress=False, alignment=4
 apk_path=assets/snapshot_blob_32.bin, compress=False, alignment=4
-apk_path=assets/webapk7.dex, compress=True, alignment=0
+apk_path=assets/webapk8.dex, compress=True, alignment=0
 apk_path=assets/webapk_dex_version.txt, compress=True, alignment=0
diff --git a/chrome/android/expectations/monochrome_public_bundle.arm.libs_and_assets.expected b/chrome/android/expectations/monochrome_public_bundle.arm.libs_and_assets.expected
index 7b5331e..e579f7d3 100644
--- a/chrome/android/expectations/monochrome_public_bundle.arm.libs_and_assets.expected
+++ b/chrome/android/expectations/monochrome_public_bundle.arm.libs_and_assets.expected
@@ -167,5 +167,5 @@
 apk_path=assets/stored-locales/zh-HK.pak, compress=False, alignment=4
 apk_path=assets/stored-locales/zh-TW.pak, compress=False, alignment=4
 apk_path=assets/stored-locales/zu.pak, compress=False, alignment=4
-apk_path=assets/webapk7.dex, compress=True, alignment=0
+apk_path=assets/webapk8.dex, compress=True, alignment=0
 apk_path=assets/webapk_dex_version.txt, compress=True, alignment=0
diff --git a/chrome/android/expectations/trichrome_chrome_bundle.arm.libs_and_assets.expected b/chrome/android/expectations/trichrome_chrome_bundle.arm.libs_and_assets.expected
index 289b46b..a57a100 100644
--- a/chrome/android/expectations/trichrome_chrome_bundle.arm.libs_and_assets.expected
+++ b/chrome/android/expectations/trichrome_chrome_bundle.arm.libs_and_assets.expected
@@ -82,5 +82,5 @@
 apk_path=assets/locales/zh-TW.pak, compress=False, alignment=4
 apk_path=assets/locales/zu.pak, compress=False, alignment=4
 apk_path=assets/resources.pak, compress=False, alignment=4
-apk_path=assets/webapk7.dex, compress=True, alignment=0
+apk_path=assets/webapk8.dex, compress=True, alignment=0
 apk_path=assets/webapk_dex_version.txt, compress=True, alignment=0
diff --git a/chrome/android/features/autofill_assistant/BUILD.gn b/chrome/android/features/autofill_assistant/BUILD.gn
index d6ce81c..3f38d35 100644
--- a/chrome/android/features/autofill_assistant/BUILD.gn
+++ b/chrome/android/features/autofill_assistant/BUILD.gn
@@ -161,5 +161,8 @@
     "//url:gurl_java",
   ]
 
+  # Add tests from "guided_browsing" sub-component.
+  deps += [ "guided_browsing:test_java" ]
+
   data = [ "//components/test/data/autofill_assistant/" ]
 }
diff --git a/chrome/android/features/autofill_assistant/DEPS b/chrome/android/features/autofill_assistant/DEPS
index 328680d4..6a3f5032 100644
--- a/chrome/android/features/autofill_assistant/DEPS
+++ b/chrome/android/features/autofill_assistant/DEPS
@@ -1,4 +1,5 @@
 include_rules = [
   "+components/image_fetcher/android",
-  "+components/autofill_assistant/android"
+  "+components/autofill_assistant/android",
+  "+components/autofill_assistant/guided_browsing/android"
 ]
diff --git a/chrome/android/features/autofill_assistant/guided_browsing/BUILD.gn b/chrome/android/features/autofill_assistant/guided_browsing/BUILD.gn
new file mode 100644
index 0000000..ef86dbd
--- /dev/null
+++ b/chrome/android/features/autofill_assistant/guided_browsing/BUILD.gn
@@ -0,0 +1,33 @@
+# Copyright 2022 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/android/rules.gni")
+
+android_library("test_java") {
+  resources_package =
+      "org.chromium.components.autofill_assistant.guided_browsing"
+
+  testonly = true
+
+  sources = [ "javatests/src/org/chromium/chrome/browser/autofill_assistant/guided_browsing/AssistantQrCodeTest.java" ]
+
+  deps = [
+    "//base:base_java",
+    "//base:base_java_test_support",
+    "//chrome/android:chrome_java",
+    "//chrome/android:chrome_test_java",
+    "//chrome/android:chrome_test_util_java",
+    "//chrome/browser/flags:java",
+    "//chrome/test/android:chrome_java_test_support",
+    "//components/autofill_assistant/guided_browsing/android:java",
+    "//components/autofill_assistant/guided_browsing/android:java_resources",
+    "//content/public/test/android:content_java_test_support",
+    "//third_party/android_deps:espresso_java",
+    "//third_party/android_support_test_runner:runner_java",
+    "//third_party/androidx:androidx_test_runner_java",
+    "//third_party/hamcrest:hamcrest_java",
+    "//third_party/junit",
+    "//third_party/mockito:mockito_java",
+  ]
+}
diff --git a/chrome/android/features/autofill_assistant/guided_browsing/OWNERS b/chrome/android/features/autofill_assistant/guided_browsing/OWNERS
new file mode 100644
index 0000000..c9927da
--- /dev/null
+++ b/chrome/android/features/autofill_assistant/guided_browsing/OWNERS
@@ -0,0 +1 @@
+file://components/autofill_assistant/guided_browsing/OWNERS
diff --git a/chrome/android/features/autofill_assistant/guided_browsing/javatests/src/org/chromium/chrome/browser/autofill_assistant/guided_browsing/AssistantQrCodeTest.java b/chrome/android/features/autofill_assistant/guided_browsing/javatests/src/org/chromium/chrome/browser/autofill_assistant/guided_browsing/AssistantQrCodeTest.java
new file mode 100644
index 0000000..5e047b2
--- /dev/null
+++ b/chrome/android/features/autofill_assistant/guided_browsing/javatests/src/org/chromium/chrome/browser/autofill_assistant/guided_browsing/AssistantQrCodeTest.java
@@ -0,0 +1,160 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.autofill_assistant.guided_browsing;
+
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.click;
+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.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+
+import android.support.test.InstrumentationRegistry;
+
+import androidx.test.filters.MediumTest;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+
+import org.chromium.base.Log;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.Manual;
+import org.chromium.chrome.browser.customtabs.CustomTabActivity;
+import org.chromium.chrome.browser.customtabs.CustomTabActivityTestRule;
+import org.chromium.chrome.browser.customtabs.CustomTabsTestUtils;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.components.autofill_assistant.guided_browsing.R;
+import org.chromium.components.autofill_assistant.guided_browsing.qr_code.AssistantQrCodeController;
+import org.chromium.components.autofill_assistant.guided_browsing.qr_code.AssistantQrCodeDelegate;
+import org.chromium.components.autofill_assistant.guided_browsing.qr_code.camera_scan.AssistantQrCodeCameraScanModel;
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+
+/**
+ * Tests for QR Code Scanning.
+ */
+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
+@RunWith(ChromeJUnit4ClassRunner.class)
+public class AssistantQrCodeTest {
+    private static final String TAG = "AssistantQrCodeTest";
+
+    // URL to open a blank page in custom chrome tab.
+    private static final String BLANK_URL = "about://blank";
+
+    @Rule
+    public CustomTabActivityTestRule mCustomTabActivityTestRule = new CustomTabActivityTestRule();
+
+    @Rule
+    public MockitoRule mMockitoRule = MockitoJUnit.rule();
+
+    @Mock
+    public Runnable mRunnableMock;
+
+    @Mock
+    public AssistantQrCodeDelegate mAssistantQrCodeDelegateMock;
+
+    @Before
+    public void setUp() {
+        mCustomTabActivityTestRule.startCustomTabActivityWithIntent(
+                CustomTabsTestUtils.createMinimalCustomTabIntent(
+                        InstrumentationRegistry.getTargetContext(), BLANK_URL));
+    }
+
+    private CustomTabActivity getActivity() {
+        return mCustomTabActivityTestRule.getActivity();
+    }
+
+    @Test
+    @MediumTest
+    public void testCameraScanToolbar() {
+        // Trigger QR Code Scanning
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            AssistantQrCodeCameraScanModel cameraScanModel = new AssistantQrCodeCameraScanModel();
+            cameraScanModel.setDelegate(mAssistantQrCodeDelegateMock);
+            cameraScanModel.setToolbarTitle("Scan QR Code");
+
+            AssistantQrCodeController.promptQrCodeScan(
+                    getActivity(), getActivity().getWindowAndroid(), cameraScanModel);
+        });
+
+        // Verify that toolbar title is displayed
+        onView(withText("Scan QR Code")).check(matches(isDisplayed()));
+
+        // Click Cancel button and verify call to delegate
+        onView(withId(R.id.close_button)).perform(click());
+        verify(mAssistantQrCodeDelegateMock).onScanCancelled();
+    }
+
+    /** Manual Test to prompt QR Code Camera Scan and wait for any user interaction. */
+    @Test
+    @Manual
+    public void testpromptQrCodeScan() throws Exception {
+        /**
+         * Dummy Implementation of AssistantQrCodeDelegate that prints user interaction logs to
+         * STDOUT for manual testing.
+         */
+        class MockAssistantQrCodeDelegate implements AssistantQrCodeDelegate {
+            public static final String TAG = "MockAssistantQrCodeDelegate";
+
+            private Runnable mOnUserInteractionComplete;
+
+            /**
+             * Constructor for MockAssistantQrCodeDelegate.
+             *
+             * @param onUserInteractionComplete Run when any of the delegate function is called.
+             *         Used to notify the completion of user interaction.
+             */
+            public MockAssistantQrCodeDelegate(Runnable onUserInteractionComplete) {
+                mOnUserInteractionComplete = onUserInteractionComplete;
+            }
+
+            @Override
+            public void onScanResult(String value) {
+                Log.i(TAG, "Scan Result: " + value);
+                mOnUserInteractionComplete.run();
+            }
+
+            @Override
+            public void onScanCancelled() {
+                Log.i(TAG, "onScanCancelled");
+                mOnUserInteractionComplete.run();
+            }
+
+            @Override
+            public void onCameraError() {
+                Log.i(TAG, "onCameraError");
+                mOnUserInteractionComplete.run();
+            }
+        }
+
+        MockAssistantQrCodeDelegate delegate = new MockAssistantQrCodeDelegate(mRunnableMock);
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            AssistantQrCodeCameraScanModel cameraScanModel = new AssistantQrCodeCameraScanModel();
+            cameraScanModel.setDelegate(delegate);
+
+            // Set UI strings in model.
+            cameraScanModel.setToolbarTitle("Scan QR Code");
+            cameraScanModel.setPermissionText("Please provide camera permissions");
+            cameraScanModel.setPermissionButtonText("Continue");
+            cameraScanModel.setOpenSettingsText(
+                    "Please enable camera permissions in device settings");
+            cameraScanModel.setOpenSettingsButtonText("Open Settings");
+            cameraScanModel.setOverlayTitle("Focus the QR Code inside the box");
+
+            AssistantQrCodeController.promptQrCodeScan(
+                    getActivity(), getActivity().getWindowAndroid(), cameraScanModel);
+        });
+
+        verify(mRunnableMock, timeout(/* millis= */ 60000)).run();
+    }
+}
\ No newline at end of file
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceConfiguration.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceConfiguration.java
index e2cad777..838d8e87 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceConfiguration.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceConfiguration.java
@@ -276,14 +276,6 @@
     }
 
     /**
-     * @return Whether new surface should show when home button is clicked.
-     */
-    public static boolean shouldShowNewSurfaceFromHomeButton() {
-        return NEW_SURFACE_FROM_HOME_BUTTON.getValue().equals("hide_tab_switcher_only")
-                || NEW_SURFACE_FROM_HOME_BUTTON.getValue().equals("hide_mv_tiles_and_tab_switcher");
-    }
-
-    /**
      * Returns whether to show the transition animations for the Finale version.
      */
     public static boolean shouldShowAnimationsForFinale() {
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
index e651c81..099f7148 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
@@ -172,8 +172,6 @@
     private Boolean mFeedVisibilityInSharedPreferenceOnStartUp;
     private boolean mHasFeedPlaceholderShown;
     private final JankTracker mJankTracker;
-    private boolean mHideMVForNewSurface;
-    private boolean mHideTabCarouselForNewSurface;
     private boolean mHideOverviewOnTabSelecting = true;
     private StartSurface.OnTabSelectingListener mOnTabSelectingListener;
     private ViewGroup mTabSwitcherContainer;
@@ -279,7 +277,7 @@
                     if (mStartSurfaceState == StartSurfaceState.SHOWN_HOMEPAGE
                             && !mHideOverviewOnTabSelecting
                             && !mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE)) {
-                        setTabCarouselVisibility(!mIsIncognito && !mHideTabCarouselForNewSurface);
+                        setTabCarouselVisibility(!mIsIncognito);
                     }
                 }
             };
@@ -515,28 +513,6 @@
             mPropertyModel.set(RESET_FEED_SURFACE_SCROLL_POSITION, true);
             StartSurfaceUserData.getInstance().saveFeedInstanceState(null);
 
-            String newHomeSurface =
-                    StartSurfaceConfiguration.NEW_SURFACE_FROM_HOME_BUTTON.getValue();
-            switch (newHomeSurface) {
-                case "hide_tab_switcher_only":
-                    mHideMVForNewSurface = false;
-                    mHideTabCarouselForNewSurface = true;
-                    break;
-                case "hide_mv_tiles_and_tab_switcher":
-                    mHideMVForNewSurface = true;
-                    mHideTabCarouselForNewSurface = true;
-                    break;
-                default:
-                    mHideMVForNewSurface = false;
-                    mHideTabCarouselForNewSurface = false;
-            }
-        } else if (mStartSurfaceState == StartSurfaceState.SHOWING_START) {
-            if (!mTabModelSelector.isIncognitoSelected()) {
-                // Every time Chrome is started, no matter warm start or cold start, show MV tiles &
-                // tab carousel.
-                mHideMVForNewSurface = false;
-                mHideTabCarouselForNewSurface = false;
-            }
         } else if (mStartSurfaceState == StartSurfaceState.SHOWING_TABSWITCHER) {
             // Set secondary surface visible to make sure tab list recyclerview is updated in time
             // (before GTS animations start). We need to skip
@@ -548,9 +524,8 @@
 
             // If new home surface for home button is enabled, MV tiles and carousel tab switcher
             // will not show.
-            setMVTilesVisibility(!mIsIncognito && !mHideMVForNewSurface);
-            setTabCarouselVisibility(
-                    hasNormalTab && !mIsIncognito && !mHideTabCarouselForNewSurface);
+            setMVTilesVisibility(!mIsIncognito);
+            setTabCarouselVisibility(hasNormalTab && !mIsIncognito);
             setExploreSurfaceVisibility(!mIsIncognito && mExploreSurfaceCoordinatorFactory != null);
             // TODO(qinmin): show query tiles when flag is enabled.
             setQueryTilesVisibility(false);
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceFinaleTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceFinaleTest.java
index e1c990c..d753e59 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceFinaleTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceFinaleTest.java
@@ -7,11 +7,7 @@
 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;
@@ -301,73 +297,6 @@
     @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(R.id.mv_tiles_layout), isDisplayed()));
-            onViewWaiting(withId(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(R.id.mv_tiles_container)).check(matches(withEffectiveVisibility(GONE)));
-        onView(withId(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(R.id.mv_tiles_layout));
-            onViewWaiting(withId(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(R.id.mv_tiles_layout)).check(matches(withEffectiveVisibility(VISIBLE)));
-        onView(withId(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) {
diff --git a/chrome/android/java/res/layout/custom_tabs_navigation_bar.xml b/chrome/android/java/res/layout/custom_tabs_navigation_bar.xml
index 16a29ee..ee4f131 100644
--- a/chrome/android/java/res/layout/custom_tabs_navigation_bar.xml
+++ b/chrome/android/java/res/layout/custom_tabs_navigation_bar.xml
@@ -15,6 +15,7 @@
     android:layout_width="match_parent"
     android:layout_height="0dp"
     android:layout_marginTop="0px"
+    android:elevation="@dimen/custom_tabs_elevation"
     android:orientation="vertical">
     <View
         android:id="@+id/divider"
diff --git a/chrome/android/java/res/layout/page_info_about_this_site_view.xml b/chrome/android/java/res/layout/page_info_about_this_site_view.xml
index a116e683..e1a3c80 100644
--- a/chrome/android/java/res/layout/page_info_about_this_site_view.xml
+++ b/chrome/android/java/res/layout/page_info_about_this_site_view.xml
@@ -23,13 +23,4 @@
         android:layout_height="wrap_content"
         style="@style/TextAppearance.TextMedium.Secondary"/>
 
-    <org.chromium.ui.widget.ButtonCompat
-        android:id="@+id/more_about"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="@dimen/page_info_popup_padding_vertical"
-        android:text="@string/page_info_more_about_this_page"
-        android:layout_gravity="end"
-        style="@style/TextButton"/>
-
 </org.chromium.chrome.browser.page_info.AboutThisSiteView>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
index ce555ca..7e49f29 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1145,7 +1145,7 @@
         mHasDeterminedOverviewStateForCurrentSession = true;
         boolean isOverviewVisible = isInOverviewMode();
 
-        if (shouldRefreshAndShowOverview(isOverviewVisible)) {
+        if (shouldShowOverviewPageOnStart() && !isOverviewVisible) {
             if (getCurrentTabModel() != null) {
                 RecordHistogram.recordCount1MHistogram(
                         TAB_COUNT_ON_RETURN, getCurrentTabModel().getCount());
@@ -1179,16 +1179,6 @@
                 mOverviewShownOnStart && !isInstantStartEnabled());
     }
 
-    private boolean shouldRefreshAndShowOverview(boolean isOverviewVisible) {
-        // If StartSurfaceConfiguration.NEW_SURFACE_FROM_HOME_BUTTON is turned on, MV tiles and
-        // carousels may be hidden before Chrome is brought to the background. If overview should be
-        // shown, no matter overview was already visible or not, we should call
-        // showOverview(StartSurfaceState.SHOWING_START) to show MV tiles and carousels again.
-        return shouldShowOverviewPageOnStart()
-                && (!isOverviewVisible
-                        || StartSurfaceConfiguration.shouldShowNewSurfaceFromHomeButton());
-    }
-
     private void logMainIntentBehavior(Intent intent) {
         assert IntentUtils.isMainIntentFromLauncher(intent);
         // TODO(tedchoc): We should cache the last visible time and reuse it to avoid different
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
index 6d123a9..01a0ce2b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -645,10 +645,11 @@
                     getWindowAndroid().getApplicationBottomInsetProvider(),
                     mManualFillingComponentSupplier.get().getBottomInsetSupplier());
 
-            ShareDelegate shareDelegate = new ShareDelegateImpl(
-                    mRootUiCoordinator.getBottomSheetController(), getLifecycleDispatcher(),
-                    getActivityTabProvider(), getTabModelSelectorSupplier(),
-                    new ShareDelegateImpl.ShareSheetDelegate(), isCustomTab());
+            ShareDelegate shareDelegate =
+                    new ShareDelegateImpl(mRootUiCoordinator.getBottomSheetController(),
+                            getLifecycleDispatcher(), getActivityTabProvider(),
+                            getTabModelSelectorSupplier(), mTabModelProfileSupplier,
+                            new ShareDelegateImpl.ShareSheetDelegate(), isCustomTab());
             mShareDelegateSupplier.set(shareDelegate);
 
             // If onStart was called before postLayoutInflation (because inflation was done in a
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge.java
index fc9294e..39d0d3b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge.java
@@ -94,9 +94,9 @@
     }
 
     @CalledByNative
-    private static void decidePermissionSetting(
-            @ContentSettingsType int type, String url, long callback) {
-        Origin origin = Origin.create(Uri.parse(url));
+    private static void decidePermissionSetting(@ContentSettingsType int type, String originUrl,
+            String lastCommittedUrl, long callback) {
+        Origin origin = Origin.create(Uri.parse(originUrl));
         if (origin == null) {
             runPermissionCallback(callback, ContentSettingValues.BLOCK);
             return;
@@ -106,7 +106,8 @@
                 PermissionUpdater.get().getLocationPermission(origin, callback);
                 break;
             case ContentSettingsType.NOTIFICATIONS:
-                PermissionUpdater.get().requestNotificationPermission(origin, callback);
+                PermissionUpdater.get().requestNotificationPermission(
+                        origin, lastCommittedUrl, callback);
                 break;
             default:
                 throw new IllegalStateException("Unsupported permission type.");
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappPermissionStore.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappPermissionStore.java
index b51296a..b7c3d67 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappPermissionStore.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappPermissionStore.java
@@ -65,11 +65,11 @@
             "geolocation_permission_setting.";
     private static final String KEY_PACKAGE_NAME_PREFIX = "package_name.";
     private static final String KEY_APP_NAME_PREFIX = "app_name.";
-    private static final String KEY_PRE_TWA_NOTIFICATION_PERMISSION_PREFIX =
+    private static final String KEY_PRE_INSTALL_NOTIFICATION_PERMISSION_PREFIX =
             "pre_twa_notification_permission.";
-    private static final String KEY_PRE_TWA_NOTIFICATION_PERMISSION_SETTING_PREFIX =
+    private static final String KEY_PRE_INSTALL_NOTIFICATION_PERMISSION_SETTING_PREFIX =
             "pre_twa_notification_permission_setting.";
-    private static final String KEY_ALL_DELEGATE_APPS = "all_delegate_apps.";
+    private static final String KEY_ALL_DELEGATE_APPS_PREFIX = "all_delegate_apps.";
 
     private final SharedPreferences mPreferences;
 
@@ -253,30 +253,30 @@
     }
 
     /**
-     * Stores the notification state the origin had before the TWA was installed.
+     * Stores the notification state the origin had before the app was installed.
      * TODO(crbug.com/1320272): Delete this method when the new flow is complete.
      */
-    void setPreTwaNotificationState(Origin origin, boolean enabled) {
+    void setPreInstallNotificationState(Origin origin, boolean enabled) {
         mPreferences.edit()
-                .putBoolean(createNotificationPreTwaPermissionKey(origin), enabled)
+                .putBoolean(createNotificationPreInstallPermissionKey(origin), enabled)
                 .apply();
     }
 
-    /** Stores the notification permission setting the origin had before the TWA was installed. */
-    void setPreTwaNotificationPermissionSetting(
+    /** Stores the notification permission setting the origin had before the app was installed. */
+    void setPreInstallNotificationPermissionSetting(
             Origin origin, @ContentSettingValues int settingValue) {
         mPreferences.edit()
-                .putInt(createPreTwaNotificationPermissionSettingKey(origin), settingValue)
+                .putInt(createPreInstallNotificationPermissionSettingKey(origin), settingValue)
                 .apply();
     }
 
     /**
-     * Retrieves the notification state the origin had before the TWA was installed. {@code null} if
+     * Retrieves the notification state the origin had before the app was installed. {@code null} if
      * no state is stored. If a value was stored, calling this method removes it.
      */
     @Nullable
-    Boolean getPreTwaNotificationState(Origin origin) {
-        String key = createNotificationPreTwaPermissionKey(origin);
+    Boolean getPreInstallNotificationState(Origin origin) {
+        String key = createNotificationPreInstallPermissionKey(origin);
         if (!mPreferences.contains(key)) return null;
 
         boolean enabled = mPreferences.getBoolean(key, false);
@@ -287,17 +287,17 @@
     }
 
     /**
-     * Retrieves the notification permission setting the origin had before the TWA was installed.
+     * Retrieves the notification permission setting the origin had before the app was installed.
      * {@code null} if no setting is stored. If a setting was stored, calling this method removes
      * it.
      */
     @Nullable
     @ContentSettingValues
-    Integer getAndRemovePreTwaNotificationPermission(Origin origin) {
-        String key = createPreTwaNotificationPermissionSettingKey(origin);
+    Integer getAndRemovePreInstallNotificationPermission(Origin origin) {
+        String key = createPreInstallNotificationPermissionSettingKey(origin);
         if (!mPreferences.contains(key)) {
             // TODO(crbug.com/1323183): Clean up this fallback.
-            Boolean enabled = getPreTwaNotificationState(origin);
+            Boolean enabled = getPreInstallNotificationState(origin);
             if (enabled == null) {
                 return null;
             }
@@ -353,12 +353,12 @@
         return getPermissionSettingKeyPrefix(type) + origin.toString();
     }
 
-    private static String createNotificationPreTwaPermissionKey(Origin origin) {
-        return KEY_PRE_TWA_NOTIFICATION_PERMISSION_PREFIX + origin.toString();
+    private static String createNotificationPreInstallPermissionKey(Origin origin) {
+        return KEY_PRE_INSTALL_NOTIFICATION_PERMISSION_PREFIX + origin.toString();
     }
 
-    private static String createPreTwaNotificationPermissionSettingKey(Origin origin) {
-        return KEY_PRE_TWA_NOTIFICATION_PERMISSION_SETTING_PREFIX + origin.toString();
+    private static String createPreInstallNotificationPermissionSettingKey(Origin origin) {
+        return KEY_PRE_INSTALL_NOTIFICATION_PERMISSION_SETTING_PREFIX + origin.toString();
     }
 
     private static String createPackageNameKey(Origin origin) {
@@ -370,7 +370,7 @@
     }
 
     private static String createAllDelegateAppsKey(Origin origin) {
-        return KEY_ALL_DELEGATE_APPS + origin.toString();
+        return KEY_ALL_DELEGATE_APPS_PREFIX + origin.toString();
     }
 
     private static byte[] stringToByteArray(String string) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationChannelPreserver.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationChannelPreserver.java
index c73166b2..ec166d3 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationChannelPreserver.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationChannelPreserver.java
@@ -17,9 +17,9 @@
 import dagger.Lazy;
 
 /**
- * If an origin is associated with a TWA on Android O+, we want to remove its Android channel
- * because the TWA's notification status takes precedence and we don't want the confuse the user
- * with conflicting UI.
+ * If an origin is associated with an installed webapp (TWAs on Android O+, WebAPKs on Android T+)
+ * then we want to remove its Android channel because the APKs notification status takes precedence
+ * and we don't want the confuse the user with conflicting UI.
  *
  * It's recommended to hold a {@link Lazy} version of this class and pass this to static methods
  * such as {@link #restoreChannelIfNeeded} to not create instances of this class on Android versions
@@ -63,14 +63,14 @@
 
         assert status == NotificationChannelStatus.ENABLED ||
                 status == NotificationChannelStatus.BLOCKED;
-        mStore.setPreTwaNotificationState(origin, status == NotificationChannelStatus.ENABLED);
+        mStore.setPreInstallNotificationState(origin, status == NotificationChannelStatus.ENABLED);
         mSiteChannelsManager.deleteSiteChannel(channelId);
     }
 
     void restoreChannel(Origin origin) {
         if (beforeAndroidO()) return;
 
-        Boolean enabled = mStore.getPreTwaNotificationState(origin);
+        Boolean enabled = mStore.getPreInstallNotificationState(origin);
 
         if (enabled == null) {
             // If no previous channel status was stored, a channel didn't previously exist.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationPermissionUpdater.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationPermissionUpdater.java
index cf5448f..7b584935 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationPermissionUpdater.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationPermissionUpdater.java
@@ -5,17 +5,25 @@
 package org.chromium.chrome.browser.browserservices.permissiondelegation;
 
 import android.content.ComponentName;
+import android.text.TextUtils;
 
+import androidx.annotation.Nullable;
 import androidx.annotation.WorkerThread;
 
+import org.chromium.base.BuildInfo;
+import org.chromium.base.Callback;
+import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
 import org.chromium.base.task.PostTask;
 import org.chromium.chrome.browser.browserservices.TrustedWebActivityClient;
 import org.chromium.chrome.browser.flags.CachedFeatureFlags;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.webapps.ChromeWebApkHost;
+import org.chromium.chrome.browser.webapps.WebApkServiceClient;
 import org.chromium.components.content_settings.ContentSettingValues;
 import org.chromium.components.content_settings.ContentSettingsType;
 import org.chromium.components.embedder_support.util.Origin;
+import org.chromium.components.webapk.lib.client.WebApkValidator;
 import org.chromium.content_public.browser.UiThreadTaskTraits;
 
 import javax.inject.Inject;
@@ -30,7 +38,7 @@
  */
 @Singleton
 public class NotificationPermissionUpdater {
-    private static final String TAG = "TWANotifications";
+    private static final String TAG = "PermissionUpdater";
 
     private static final @ContentSettingsType int TYPE = ContentSettingsType.NOTIFICATIONS;
 
@@ -60,16 +68,28 @@
         // permission if a TrustedWebActivityService exists.
         if (CachedFeatureFlags.isEnabled(
                     ChromeFeatureList.TRUSTED_WEB_ACTIVITY_NOTIFICATION_PERMISSION_DELEGATION)) {
-            mTrustedWebActivityClient.checkNotificationPermissionSetting(
-                    origin, (app, settingValue) -> {
-                        updatePermission(origin, /*callback=*/0, app, settingValue);
-                    });
+            mTrustedWebActivityClient.checkNotificationPermissionSetting(origin,
+                    (app, settingValue)
+                            -> updatePermission(
+                                    origin, /*callback=*/0, app.getPackageName(), settingValue));
         } else {
-            mTrustedWebActivityClient.checkNotificationPermission(
-                    origin, (app, enabled) -> updatePermission(origin, app, enabled));
+            mTrustedWebActivityClient.checkNotificationPermission(origin,
+                    (app, enabled) -> updatePermission(origin, app.getPackageName(), enabled));
         }
     }
 
+    public void onWebApkLaunch(Origin origin, String packageName) {
+        if (!BuildInfo.isAtLeastT()
+                || !CachedFeatureFlags.isEnabled(
+                        ChromeFeatureList
+                                .TRUSTED_WEB_ACTIVITY_NOTIFICATION_PERMISSION_DELEGATION)) {
+            return;
+        }
+        WebApkServiceClient.getInstance().checkNotificationPermission(packageName,
+                settingValue
+                -> updatePermission(origin, /*callback=*/0, packageName, settingValue));
+    }
+
     /**
      * If the uninstalled client app results in there being no more TrustedWebActivityService for
      * the origin, return the origin's notification permission to what it was before any client
@@ -85,7 +105,8 @@
                         @Override
                         public void onPermission(
                                 ComponentName app, @ContentSettingValues int settingValue) {
-                            updatePermission(origin, /*callback=*/0, app, settingValue);
+                            updatePermission(
+                                    origin, /*callback=*/0, app.getPackageName(), settingValue);
                         }
 
                         @Override
@@ -97,8 +118,8 @@
             mTrustedWebActivityClient.checkNotificationPermission(
                     origin, new TrustedWebActivityClient.PermissionCheckCallback() {
                         @Override
-                        public void onPermissionCheck(ComponentName answeringApp, boolean enabled) {
-                            updatePermission(origin, answeringApp, enabled);
+                        public void onPermissionCheck(ComponentName app, boolean enabled) {
+                            updatePermission(origin, app.getPackageName(), enabled);
                         }
 
                         @Override
@@ -110,11 +131,13 @@
     }
 
     /**
-     * Called when a client app is requesting notification permission. If a
-     * TrustedWebActivityService is found for the given origin, this requests the client app's
-     * Android notification permission.
+     * Called when a web page with an installed app is requesting notification permission. This
+     * first looks for a TWA and if that fails it looks for a WebAPK. When an app is found this
+     * requests the app's Android notification permission. Calling this method only makes sense
+     * from Android T, there is no permission dialog for showing notifications in earlier versions.
      */
-    void requestPermission(Origin origin, long callback) {
+    void requestPermission(Origin origin, String lastCommittedUrl, long callback) {
+        assert BuildInfo.isAtLeastT() : "Cannot request notification permission before Android T";
         mTrustedWebActivityClient.requestNotificationPermission(
                 origin, new TrustedWebActivityClient.PermissionCallback() {
                     private boolean mCalled;
@@ -123,39 +146,70 @@
                             ComponentName app, @ContentSettingValues int settingValue) {
                         if (mCalled) return;
                         mCalled = true;
-                        updatePermission(origin, callback, app, settingValue);
+                        updatePermission(origin, callback, app.getPackageName(), settingValue);
                     }
 
                     @Override
                     public void onNoTwaFound() {
                         if (mCalled) return;
                         mCalled = true;
-                        mPermissionManager.resetStoredPermission(origin, TYPE);
-                        InstalledWebappBridge.runPermissionCallback(
-                                callback, ContentSettingValues.BLOCK);
+                        findWebApkPackageName(lastCommittedUrl,
+                                packageName
+                                -> requestPermissionFromWebApk(origin, callback, packageName));
                     }
                 });
     }
 
+    private void requestPermissionFromWebApk(
+            Origin origin, long callback, @Nullable String packageName) {
+        if (TextUtils.isEmpty(packageName)) {
+            mPermissionManager.resetStoredPermission(origin, TYPE);
+            InstalledWebappBridge.runPermissionCallback(callback, ContentSettingValues.BLOCK);
+            return;
+        }
+
+        WebApkServiceClient.getInstance().requestNotificationPermission(packageName,
+                settingValue -> updatePermission(origin, callback, packageName, settingValue));
+    }
+
+    /**
+     * Finds a WebAPK that can handle the URL and is backed by Chrome. The package name will be null
+     * if no WebAPK could be found matching these criteria. Note that a WebAPK uses a scope URL
+     * which may contain a path. An origin has no path and would not fall within such a scope. So,
+     * you must pass a more complete URL into this method to get matches for those cases.
+     */
+    private void findWebApkPackageName(String url, Callback<String> packageNameCallback) {
+        String webApkPackageName =
+                WebApkValidator.queryFirstWebApkPackage(ContextUtils.getApplicationContext(), url);
+        if (webApkPackageName == null) {
+            packageNameCallback.onResult(null);
+            return;
+        }
+        ChromeWebApkHost.checkChromeBacksWebApkAsync(webApkPackageName,
+                (doesBrowserBackWebApk, browserPackageName)
+                        -> packageNameCallback.onResult(
+                                doesBrowserBackWebApk ? webApkPackageName : null));
+    }
+
     @WorkerThread
     // TODO(crbug.com/1320272): Delete this method once the new flow has shipped.
-    private void updatePermission(Origin origin, ComponentName app, boolean enabled) {
+    private void updatePermission(Origin origin, String packageName, boolean enabled) {
         // This method will be called by the TrustedWebActivityClient on a background thread, so
         // hop back over to the UI thread to deal with the result.
         PostTask.postTask(UiThreadTaskTraits.USER_VISIBLE, () -> {
             Log.d(TAG, "Updating notification permission to: %b", enabled);
-            mPermissionManager.updatePermission(origin, app.getPackageName(), TYPE, enabled);
+            mPermissionManager.updatePermission(origin, packageName, TYPE, enabled);
         });
     }
 
     @WorkerThread
-    private void updatePermission(Origin origin, long callback, ComponentName app,
+    private void updatePermission(Origin origin, long callback, String packageName,
             @ContentSettingValues int settingValue) {
-        // This method will be called by the TrustedWebActivityClient on a background thread, so
-        // hop back over to the UI thread to deal with the result.
+        // This method will be called by a service client on a background thread, so hop back over
+        // to the UI thread.
         PostTask.postTask(UiThreadTaskTraits.USER_VISIBLE, () -> {
             Log.d(TAG, "Updating notification permission to: %d", settingValue);
-            mPermissionManager.updatePermission(origin, app.getPackageName(), TYPE, settingValue);
+            mPermissionManager.updatePermission(origin, packageName, TYPE, settingValue);
             InstalledWebappBridge.runPermissionCallback(callback, settingValue);
         });
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/PermissionStatus.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/PermissionStatus.java
index 18eae54e..0121fda0 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/PermissionStatus.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/PermissionStatus.java
@@ -12,7 +12,7 @@
 @IntDef({PermissionStatus.ALLOW, PermissionStatus.BLOCK, PermissionStatus.ASK})
 @Retention(RetentionPolicy.SOURCE)
 /**
- * Represents the permission state in TWA service calls.
+ * Represents the permission state in service calls.
  */
 public @interface PermissionStatus {
     int ALLOW = 0;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/PermissionUpdater.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/PermissionUpdater.java
index bb2d24f..5c2145e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/PermissionUpdater.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/PermissionUpdater.java
@@ -24,7 +24,7 @@
  */
 @Singleton
 public class PermissionUpdater {
-    private static final String TAG = "TWAPermission";
+    private static final String TAG = "PermissionUpdater";
 
     private final InstalledWebappPermissionManager mPermissionManager;
 
@@ -62,6 +62,10 @@
         mNotificationPermissionUpdater.onOriginVerified(origin, packageName);
     }
 
+    public void onWebApkLaunch(Origin origin, String packageName) {
+        mNotificationPermissionUpdater.onWebApkLaunch(origin, packageName);
+    }
+
     public void onClientAppUninstalled(Origin origin) {
         mNotificationPermissionUpdater.onClientAppUninstalled(origin);
         mLocationPermissionUpdater.onClientAppUninstalled(origin);
@@ -84,7 +88,7 @@
         mLocationPermissionUpdater.checkPermission(origin, callback);
     }
 
-    void requestNotificationPermission(Origin origin, long callback) {
-        mNotificationPermissionUpdater.requestPermission(origin, callback);
+    void requestNotificationPermission(Origin origin, String lastCommittedUrl, long callback) {
+        mNotificationPermissionUpdater.requestPermission(origin, lastCommittedUrl, callback);
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java
index 843cf3a..7b0a1d8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java
@@ -94,7 +94,6 @@
     private final @Px int mFullyExpandedAdjustmentHeight;
     private final Integer mNavigationBarColor;
     private final Integer mNavigationBarDividerColor;
-    private final ObservableSupplier<? extends FrameLayout> mParentViewSupplier;
     private final OnResizedCallback mOnResizedCallback;
     private final AnimatorListener mSpinnerFadeoutAnimatorListener;
     private final int mHandleHeight;
@@ -102,6 +101,15 @@
     private int mShadowOffset;
     private boolean mDrawOutlineShadow;
 
+    // ContentFrame + CoordinatorLayout - CompositorViewHolder
+    //              + NavigationBar
+    //              + Spinner
+    // Not just CompositorViewHolder but also CoordinatorLayout is resized because many UI
+    // components such as BottomSheet, InfoBar, Snackbar are child views of CoordinatorLayout,
+    // which makes them appear correctly at the bottom.
+    private ViewGroup mContentFrame;
+    private ViewGroup mCoordinatorLayout;
+
     private @HeightStatus int mStatus = HeightStatus.INITIAL_HEIGHT;
     private @HeightStatus int mTargetStatus;
 
@@ -257,27 +265,31 @@
             Integer navigationBarColor, Integer navigationBarDividerColor,
             OnResizedCallback onResizedCallback, ActivityLifecycleDispatcher lifecycleDispatcher) {
         mActivity = activity;
-        mParentViewSupplier = parentViewSupplier;
         mMaxHeight = getMaximumPossibleHeight();
         mInitialHeight = MathUtils.clamp(
                 initialHeight, mMaxHeight, (int) (mMaxHeight * MINIMAL_HEIGHT_RATIO));
 
         // Invoked twice - when populated/destroyed(null)
+        // TODO(jinsukkim): Obtain the CoordinatorLayout and ContentFrame directly,
+        //                  not through CompositorViewHolder which is not in use.
         parentViewSupplier.addObserver(parentView -> {
-            if (parentView == null) return;
+            if (parentView == null) {
+                mCoordinatorLayout = null;
+                mContentFrame = null;
+                return;
+            }
+
+            mCoordinatorLayout = (ViewGroup) parentView.getParent();
+            mContentFrame = (ViewGroup) mCoordinatorLayout.getParent();
 
             // Elevate the main web contents area as high as the handle bar to have the shadow
             // effect look right.
             int ev = mActivity.getResources().getDimensionPixelSize(R.dimen.custom_tabs_elevation);
-            View coordinatorLayout = (View) parentView.getParent();
-            coordinatorLayout.setElevation(ev);
+            mCoordinatorLayout.setElevation(ev);
 
-            // When the navigation bar on the right side (not at the bottom), no need to call
-            // the methods below since the contents height is fixed and the system navigation
-            // bar works as expected.
-            if (mNavbarHeight == 0) return;
-
-            setContentsHeight();
+            // When the navigation bar on the right side (not at the bottom), no need to set
+            // contents height since it is fixed to the max height.
+            if (mNavbarHeight != 0) setContentsHeight();
             updateNavbarVisibility(true);
         });
 
@@ -504,11 +516,13 @@
             centerSpinnerVertically((ViewGroup.LayoutParams) mSpinnerView.getLayoutParams());
         } else {
             mSpinnerView = new ImageView(mActivity);
+            mSpinnerView.setElevation(
+                    mActivity.getResources().getDimensionPixelSize(R.dimen.custom_tabs_elevation));
             mSpinnerView.setBackgroundColor(mActivity.getColor(R.color.window_background_color));
 
             // Toolbar should not be hidden by spinner screen.
             ViewGroup.MarginLayoutParams lp = new ViewGroup.MarginLayoutParams(MATCH_PARENT, 0);
-            lp.setMargins(0, mToolbarView.getHeight(), 0, 0);
+            lp.setMargins(0, mToolbarView.getHeight() + mHandleHeight + mShadowOffset, 0, 0);
 
             mSpinner = new CircularProgressDrawable(mActivity);
             mSpinner.setStyle(CircularProgressDrawable.LARGE);
@@ -520,10 +534,8 @@
             centerSpinnerVertically(lp);
         }
 
-        // Spinner view is added to the parent view of CompositorViewHolder
-        // (CoordinatoryLayoutForPointer) to hide the WebContents and navigation bar during scroll.
-        ViewGroup coordLayout = (ViewGroup) mParentViewSupplier.get().getParent();
-        if (mSpinnerView.getParent() == null) coordLayout.addView(mSpinnerView);
+        // Spinner view is added to ContentFrameLayout to hide both WebContents and navigation bar.
+        if (mSpinnerView.getParent() == null) mContentFrame.addView(mSpinnerView);
         mSpinnerView.clearAnimation();
         mSpinnerView.setAlpha(0.f);
         mSpinnerView.setVisibility(View.VISIBLE);
@@ -540,32 +552,32 @@
 
     private void setContentsHeight() {
         // Return early if the parent view is not available. CCT may be on its way to destruction.
-        FrameLayout parentView = mParentViewSupplier.get();
-        if (parentView == null) return;
+        if (mCoordinatorLayout == null) return;
 
-        ViewGroup.LayoutParams lp = parentView.getLayoutParams();
+        ViewGroup.LayoutParams lp = mCoordinatorLayout.getLayoutParams();
         int oldHeight = lp.height;
 
-        // We resize CompositorViewHolder to occupy the size we want for CCT. This excludes
+        // We resize CoordinatorLayout to occupy the size we want for CCT. This excludes
         // the bottom navigation bar height and the top margin of CVH set aside for
         // the handle bar portion of the CCT toolbar header.
         // TODO(jinsukkim):
         //   - Remove the shadow when in full-height so there won't be a gap beneath the status bar.
         int windowPos = mActivity.getWindow().getAttributes().y;
         lp.height = getDisplayHeight() - windowPos - mHandleHeight - mShadowOffset - mNavbarHeight;
-        parentView.setLayoutParams(lp);
+        mCoordinatorLayout.setLayoutParams(lp);
         if (oldHeight >= 0 && lp.height != oldHeight) mOnResizedCallback.onResized(lp.height);
     }
 
     // Show or hide our own navigation bar.
     private void updateNavbarVisibility(boolean show) {
-        // No need draw its own navigation bar when it is located on the right side since
-        // the system navigation bar is visible and can handle API #setNavigationBarColor.
-        if (mNavbarHeight == 0) {
-            if (mNavbar != null) mNavbar.setVisibility(View.GONE);
-            return;
-        }
         if (show) {
+            // No need draw its own navigation bar when it is located on the right side since
+            // the system navigation bar is visible and can handle API #setNavigationBarColor.
+            if (mNavbarHeight == 0) {
+                setNavigationBarAndDividerColor();
+                if (mNavbar != null) mNavbar.setVisibility(View.GONE);
+                return;
+            }
             if (mNavbar == null) {
                 mNavbar = (LinearLayout) mActivity.getLayoutInflater().inflate(
                         R.layout.custom_tabs_navigation_bar, null);
@@ -573,11 +585,8 @@
                 setNavbarOffset();
                 setNavigationBarAndDividerColor();
 
-                // Navigation bar is a sibling of CompositorViewHolder, positioned right underneath.
-                assert mParentViewSupplier.get() != null;
-                ViewGroup coordLayout = (ViewGroup) mParentViewSupplier.get().getParent();
-                coordLayout.addView(mNavbar);
-                coordLayout.setBackgroundColor(mActivity.getColor(R.color.window_background_color));
+                assert mContentFrame != null;
+                mContentFrame.addView(mNavbar);
             } else {
                 setNavbarOffset();
                 mNavbar.setAlpha(0f);
@@ -593,9 +602,9 @@
     // Position our own navbar where the system navigation bar which is obscured by WebContents
     // rendered over it due to Window#FLAGS_LAYOUT_NO_LIMITS would be shown.
     private void setNavbarOffset() {
-        FrameLayout parentView = mParentViewSupplier.get();
-        if (parentView == null) return;
-        mNavbar.setTranslationY(parentView.getLayoutParams().height);
+        if (mCoordinatorLayout == null) return;
+        int offset = mCoordinatorLayout.getLayoutParams().height + mHandleHeight + mShadowOffset;
+        mNavbar.setTranslationY(offset);
     }
 
     private void setNavigationBarAndDividerColor() {
@@ -606,19 +615,31 @@
         // Since we cannot alter the button color, darken the bar color instead to address
         // the bad contrast against buttons when they are both white.
         boolean needsDarkButtons = !ColorUtils.shouldUseLightForegroundOnBackground(color);
-        View bar = mNavbar.findViewById(R.id.bar);
-        bar.setBackgroundColor(
-                needsDarkButtons ? ColorUtils.getDarkenedColorForStatusBar(color) : color);
+        if (needsDarkButtons) color = ColorUtils.getDarkenedColorForStatusBar(color);
+        if (mNavbarHeight == 0) {
+            mActivity.getWindow().setNavigationBarColor(color);
+        } else {
+            // Use our own navbar where the system navigation bar which is obscured by WebContents
+            // rendered over it due to Window#FLAGS_LAYOUT_NO_LIMITS would be shown.
+            View bar = mNavbar.findViewById(R.id.bar);
+            bar.setBackgroundColor(color);
+        }
 
         // navigationBarDividerColor can only be set in Android P+
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) return;
         Integer dividerColor = CustomTabNavigationBarController.getDividerColor(
                 mActivity, mNavigationBarColor, mNavigationBarDividerColor, needsDarkButtons);
-        View divider = mNavbar.findViewById(R.id.divider);
-        if (dividerColor != null) {
-            divider.setBackgroundColor(dividerColor);
+        if (mNavbarHeight == 0) {
+            if (dividerColor != null) {
+                mActivity.getWindow().setNavigationBarDividerColor(dividerColor);
+            }
         } else {
-            divider.setVisibility(View.GONE);
+            View divider = mNavbar.findViewById(R.id.divider);
+            if (dividerColor != null) {
+                divider.setBackgroundColor(dividerColor);
+            } else {
+                divider.setVisibility(View.GONE);
+            }
         }
     }
 
@@ -698,12 +719,14 @@
 
     @VisibleForTesting
     void setMockViewForTesting(LinearLayout navbar, ImageView spinnerView,
-            CircularProgressDrawable spinner, View toolbar, View toolbarCoordinator) {
+            CircularProgressDrawable spinner, View toolbar, View toolbarCoordinator,
+            ViewGroup coordinatorLayout) {
         mNavbar = navbar;
         mSpinnerView = spinnerView;
         mSpinner = spinner;
         mToolbarView = toolbar;
         mToolbarCoordinator = toolbarCoordinator;
+        mCoordinatorLayout = coordinatorLayout;
     }
 
     @VisibleForTesting
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/page_info/AboutThisSiteView.java b/chrome/android/java/src/org/chromium/chrome/browser/page_info/AboutThisSiteView.java
index 61c121fd..e4a6dd2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/page_info/AboutThisSiteView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/page_info/AboutThisSiteView.java
@@ -15,13 +15,11 @@
 import androidx.annotation.Nullable;
 
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.components.page_info.proto.AboutThisSiteMetadataProto.SiteDescription;
 import org.chromium.components.page_info.proto.AboutThisSiteMetadataProto.SiteInfo;
 import org.chromium.ui.text.NoUnderlineClickableSpan;
 import org.chromium.ui.text.SpanApplier;
 import org.chromium.ui.text.SpanApplier.SpanInfo;
-import org.chromium.ui.widget.ButtonCompat;
 
 /**
  * View for the AboutThisSite subpage. Shows a description and a source link.
@@ -31,18 +29,14 @@
     public static final String LINK_END = "</link>";
     private TextView mDescriptionView;
     private TextView mSourceView;
-    private ButtonCompat mMoreAboutView;
     private Runnable mOnSourceClicked;
-    private Runnable mOnMoreAboutButtonClicked;
 
     public AboutThisSiteView(@NonNull Context context, @Nullable AttributeSet attrs) {
         super(context, attrs);
     }
 
-    public void setSiteInfo(
-            SiteInfo siteInfo, Runnable onSourceClicked, Runnable onMoreAboutButtonClicked) {
+    public void setSiteInfo(SiteInfo siteInfo, Runnable onSourceClicked) {
         mOnSourceClicked = onSourceClicked;
-        mOnMoreAboutButtonClicked = onMoreAboutButtonClicked;
 
         SiteDescription description = siteInfo.getDescription();
         mDescriptionView.setText(description.getDescription());
@@ -53,10 +47,6 @@
         mSourceView.setText(SpanApplier.applySpans(sourceString,
                 new SpanInfo(LINK_START, LINK_END,
                         new NoUnderlineClickableSpan(getContext(), this::onClick))));
-
-        if (mMoreAboutView != null) {
-            mMoreAboutView.setVisibility(siteInfo.hasMoreAbout() ? VISIBLE : GONE);
-        }
     }
 
     @Override
@@ -66,23 +56,11 @@
         mDescriptionView = findViewById(R.id.description_text);
         mSourceView = findViewById(R.id.source_link);
         mSourceView.setMovementMethod(LinkMovementMethod.getInstance());
-
-        if (ChromeFeatureList.isEnabled(ChromeFeatureList.PAGE_INFO_ABOUT_THIS_SITE_MORE_INFO)) {
-            mMoreAboutView = findViewById(R.id.more_about);
-            mMoreAboutView.setOnClickListener(this);
-        } else {
-            findViewById(R.id.more_about).setVisibility(GONE);
-            mMoreAboutView = null;
-        }
     }
 
     @Override
     public void onClick(View view) {
-        if (view == mMoreAboutView) {
-            if (mOnMoreAboutButtonClicked != null) {
-                mOnMoreAboutButtonClicked.run();
-            }
-        } else if (view == mSourceView) {
+        if (view == mSourceView) {
             if (mOnSourceClicked != null) {
                 mOnSourceClicked.run();
             }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/page_info/ChromePageInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/page_info/ChromePageInfo.java
index e4a07ad7..ed1d181 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/page_info/ChromePageInfo.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/page_info/ChromePageInfo.java
@@ -13,6 +13,7 @@
 import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabCoordinator;
 import org.chromium.chrome.browser.merchant_viewer.PageInfoStoreInfoController.StoreInfoActionHandler;
 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
+import org.chromium.chrome.browser.profiles.ProfileManager;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tab.TabUtils;
 import org.chromium.components.page_info.PageInfoController;
@@ -55,6 +56,8 @@
      */
     public void show(Tab tab, ChromePageInfoHighlight pageInfoHighlight) {
         WebContents webContents = tab.getWebContents();
+        if (webContents == null || !ProfileManager.isInitialized()) return;
+
         Activity activity = TabUtils.getActivity(tab);
         PageInfoController.show(activity, webContents, mPublisher, mSource,
                 new ChromePageInfoControllerDelegate(activity, webContents,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/page_info/PageInfoAboutThisSiteController.java b/chrome/android/java/src/org/chromium/chrome/browser/page_info/PageInfoAboutThisSiteController.java
index 1735938..be58052 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/page_info/PageInfoAboutThisSiteController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/page_info/PageInfoAboutThisSiteController.java
@@ -82,10 +82,7 @@
         view.setSiteInfo(mSiteInfo,
                 ()
                         -> openUrl(mSiteInfo.getDescription().getSource().getUrl(),
-                                PageInfoAction.PAGE_INFO_ABOUT_THIS_SITE_SOURCE_LINK_CLICKED),
-                ()
-                        -> openUrl(mSiteInfo.getMoreAbout().getUrl(),
-                                PageInfoAction.PAGE_INFO_ABOUT_THIS_SITE_MORE_ABOUT_CLICKED));
+                                PageInfoAction.PAGE_INFO_ABOUT_THIS_SITE_SOURCE_LINK_CLICKED));
         return view;
     }
 
@@ -93,7 +90,8 @@
         mMainController.recordAction(action);
         if (mEphemeralTabCoordinatorSupplier != null
                 && mEphemeralTabCoordinatorSupplier.get() != null) {
-            String title = mRowView.getContext().getString(R.string.page_info_more_about_this_page);
+            String title =
+                    mRowView.getContext().getString(R.string.page_info_about_this_site_title);
             mEphemeralTabCoordinatorSupplier.get().requestOpenSheet(
                     new GURL(url), title, /*isIncognito=*/false);
             mMainController.dismiss();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java
index d5d333f..11f6cce 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java
@@ -49,6 +49,7 @@
     private final ActivityLifecycleDispatcher mLifecycleDispatcher;
     private final Supplier<Tab> mTabProvider;
     private final Supplier<TabModelSelector> mTabModelSelectorProvider;
+    private final Supplier<Profile> mProfileSupplier;
     private final ShareSheetDelegate mDelegate;
     private final boolean mIsCustomTab;
     private long mShareStartTime;
@@ -62,17 +63,19 @@
      * @param tabProvider Supplier for the current activity tab.
      * @param tabModelSelectorProvider Supplier for the {@link TabModelSelector}. Used to determine
      * whether incognito mode is selected or not.
+     * @param profileSupplier Supplier for {@link Profile}.
      * @param delegate The ShareSheetDelegate for the current activity.
      * @param isCustomTab This share delegate is associated with a CCT.
      */
     public ShareDelegateImpl(BottomSheetController controller,
             ActivityLifecycleDispatcher lifecycleDispatcher, Supplier<Tab> tabProvider,
-            Supplier<TabModelSelector> tabModelSelectorProvider, ShareSheetDelegate delegate,
-            boolean isCustomTab) {
+            Supplier<TabModelSelector> tabModelSelectorProvider, Supplier<Profile> profileSupplier,
+            ShareSheetDelegate delegate, boolean isCustomTab) {
         mBottomSheetController = controller;
         mLifecycleDispatcher = lifecycleDispatcher;
         mTabProvider = tabProvider;
         mTabModelSelectorProvider = tabModelSelectorProvider;
+        mProfileSupplier = profileSupplier;
         mDelegate = delegate;
         mIsCustomTab = isCustomTab;
     }
@@ -85,8 +88,8 @@
             mShareStartTime = System.currentTimeMillis();
         }
         mDelegate.share(params, chromeShareExtras, mBottomSheetController, mLifecycleDispatcher,
-                mTabProvider, mTabModelSelectorProvider, this::printTab, shareOrigin,
-                mShareStartTime, isSharingHubEnabled());
+                mTabProvider, mTabModelSelectorProvider, mProfileSupplier, this::printTab,
+                shareOrigin, mShareStartTime, isSharingHubEnabled());
         mShareStartTime = 0;
     }
 
@@ -254,12 +257,9 @@
         void share(ShareParams params, ChromeShareExtras chromeShareExtras,
                 BottomSheetController controller, ActivityLifecycleDispatcher lifecycleDispatcher,
                 Supplier<Tab> tabProvider, Supplier<TabModelSelector> tabModelSelectorSupplier,
-                Callback<Tab> printCallback, @ShareOrigin int shareOrigin, long shareStartTime,
-                boolean sharingHubEnabled) {
-            Profile profile = null;
-            if (tabProvider.get() != null && tabProvider.get().getWebContents() != null) {
-                profile = Profile.fromWebContents(tabProvider.get().getWebContents());
-            }
+                Supplier<Profile> profileSupplier, Callback<Tab> printCallback,
+                @ShareOrigin int shareOrigin, long shareStartTime, boolean sharingHubEnabled) {
+            Profile profile = profileSupplier.get();
             if (chromeShareExtras.shareDirectly()) {
                 ShareHelper.shareWithLastUsedComponent(params);
             } else if (sharingHubEnabled && !chromeShareExtras.sharingTabGroup()
@@ -278,7 +278,6 @@
                         printCallback, new LargeIconBridge(profile), isIncognito,
                         AppHooks.get().getImageEditorModuleProvider(),
                         TrackerFactory.getTrackerForProfile(profile), profile);
-                // TODO(crbug/1009124): open custom share sheet.
                 coordinator.showInitialShareSheet(params, chromeShareExtras, shareStartTime);
             } else {
                 RecordHistogram.recordEnumeratedHistogram(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivityCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivityCoordinator.java
index 52ebce2..fa3d9e8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivityCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkActivityCoordinator.java
@@ -7,11 +7,13 @@
 import androidx.annotation.NonNull;
 
 import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider;
+import org.chromium.chrome.browser.browserservices.permissiondelegation.PermissionUpdater;
 import org.chromium.chrome.browser.browserservices.ui.controller.webapps.WebappDisclosureController;
 import org.chromium.chrome.browser.browserservices.ui.view.DisclosureInfobar;
 import org.chromium.chrome.browser.dependency_injection.ActivityScope;
 import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
 import org.chromium.chrome.browser.lifecycle.DestroyObserver;
+import org.chromium.components.embedder_support.util.Origin;
 
 import javax.inject.Inject;
 
@@ -55,6 +57,13 @@
         storage.incrementLaunchCount();
 
         mWebApkUpdateManager.get().updateIfNeeded(storage, mIntentDataProvider);
+
+        // The scope should not be empty here, this is for a WebAPK that just launched.
+        String scope = storage.getScope();
+        assert !scope.isEmpty();
+
+        PermissionUpdater.get().onWebApkLaunch(
+                Origin.create(scope), storage.getWebApkPackageName());
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkServiceClient.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkServiceClient.java
index e4665b7..13604e8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkServiceClient.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkServiceClient.java
@@ -5,27 +5,37 @@
 package org.chromium.chrome.browser.webapps;
 
 import android.app.Activity;
+import android.app.PendingIntent;
+import android.content.Intent;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.os.Build;
+import android.os.Handler;
 import android.os.IBinder;
+import android.os.Looper;
+import android.os.Messenger;
 import android.os.RemoteException;
 
 import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
 import androidx.annotation.VisibleForTesting;
 
+import org.chromium.base.BuildInfo;
+import org.chromium.base.Callback;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
+import org.chromium.chrome.R;
 import org.chromium.chrome.browser.browserservices.intents.WebApkExtras;
 import org.chromium.chrome.browser.browserservices.metrics.WebApkUmaRecorder;
+import org.chromium.chrome.browser.browserservices.permissiondelegation.PermissionStatus;
 import org.chromium.chrome.browser.notifications.NotificationBuilderBase;
 import org.chromium.chrome.browser.notifications.NotificationUmaTracker;
 import org.chromium.chrome.browser.notifications.channels.ChromeChannelDefinitions;
 import org.chromium.components.browser_ui.notifications.NotificationMetadata;
+import org.chromium.components.content_settings.ContentSettingValues;
 import org.chromium.content_public.browser.UiThreadTaskTraits;
 import org.chromium.webapk.lib.client.WebApkServiceConnectionManager;
 import org.chromium.webapk.lib.runtime_library.IWebApkApi;
@@ -60,6 +70,12 @@
     public static final String CATEGORY_WEBAPK_API = "android.intent.category.WEBAPK_API";
     private static final String TAG = "WebApk";
 
+    // An intent extra for a {@link Messenger}.
+    private static final String EXTRA_MESSENGER = "messenger";
+
+    // A bundle key for a {@link PermissionStatus}.
+    private static final String KEY_PERMISSION_STATUS = "permissionStatus";
+
     private static WebApkServiceClient sInstance;
 
     /** Manages connections between the browser application and WebAPK services. */
@@ -78,6 +94,59 @@
     }
 
     /**
+     * Gets the notification permission setting for the package.
+     * @param permissionCallback To be called on a background thread with a permission setting, one
+     *         of {@link ContentSettingValues}.
+     */
+    public void checkNotificationPermission(
+            String webApkPackage, Callback<Integer> permissionCallback) {
+        connect(webApkPackage, api -> {
+            @ContentSettingValues
+            int settingValue = toContentSettingValue(api.checkNotificationPermission());
+            permissionCallback.onResult(settingValue);
+        });
+    }
+
+    /**
+     * Requests the notification permission for the package.
+     * @param permissionCallback To be called on a background thread with a permission setting, one
+     *         of {@link ContentSettingValues}.
+     */
+    public void requestNotificationPermission(
+            String webApkPackage, Callback<Integer> permissionCallback) {
+        if (!BuildInfo.isAtLeastT()) {
+            Log.w(TAG, "Requesting notification permission is not supported before T.");
+            return;
+        }
+        connect(webApkPackage, api -> {
+            String channelName = ContextUtils.getApplicationContext().getString(
+                    R.string.webapk_notification_channel_name);
+
+            PendingIntent permissionRequestIntent = api.requestNotificationPermission(
+                    channelName, ChromeChannelDefinitions.CHANNEL_ID_WEBAPKS);
+            if (permissionRequestIntent == null) {
+                permissionCallback.onResult(ContentSettingValues.ASK);
+                return;
+            }
+
+            Handler handler = new Handler(Looper.getMainLooper(), message -> {
+                @ContentSettingValues
+                int settingValue = toContentSettingValue(
+                        message.getData().getInt(KEY_PERMISSION_STATUS, PermissionStatus.BLOCK));
+                permissionCallback.onResult(settingValue);
+                return true;
+            });
+            Intent extraIntent = new Intent();
+            extraIntent.putExtra(EXTRA_MESSENGER, new Messenger(handler));
+            try {
+                permissionRequestIntent.send(ContextUtils.getApplicationContext(), 0, extraIntent);
+            } catch (PendingIntent.CanceledException e) {
+                Log.e(TAG, "The PendingIntent was canceled.", e);
+            }
+        });
+    }
+
+    /**
      * Connects to a WebAPK's bound service, builds a notification and hands it over to the WebAPK
      * to display. Handing over the notification makes the notification look like it originated from
      * the WebAPK - not Chrome - in the Android UI.
@@ -89,22 +158,25 @@
             fallbackToWebApkIconIfNecessary(
                     notificationBuilder, webApkPackage, api.getSmallIconId());
 
-            boolean notificationPermissionEnabled = api.notificationPermissionEnabled();
-            if (notificationPermissionEnabled) {
-                String channelName = null;
-                if (webApkTargetsAtLeastO(webApkPackage)) {
-                    notificationBuilder.setChannelId(ChromeChannelDefinitions.CHANNEL_ID_WEBAPKS);
-                    channelName = ContextUtils.getApplicationContext().getString(
-                            org.chromium.chrome.R.string.webapk_notification_channel_name);
-                }
-                NotificationMetadata metadata = new NotificationMetadata(
-                        NotificationUmaTracker.SystemNotificationType.WEBAPK, platformTag,
-                        platformID);
+            @ContentSettingValues
+            int settingValue = toContentSettingValue(api.checkNotificationPermission());
+            WebApkUmaRecorder.recordNotificationPermissionStatus(settingValue);
 
-                api.notifyNotificationWithChannel(platformTag, platformID,
-                        notificationBuilder.build(metadata).getNotification(), channelName);
+            if (settingValue != ContentSettingValues.ALLOW) {
+                return;
             }
-            WebApkUmaRecorder.recordNotificationPermissionStatus(notificationPermissionEnabled);
+
+            String channelName = null;
+            if (webApkTargetsAtLeastO(webApkPackage)) {
+                notificationBuilder.setChannelId(ChromeChannelDefinitions.CHANNEL_ID_WEBAPKS);
+                channelName = ContextUtils.getApplicationContext().getString(
+                        R.string.webapk_notification_channel_name);
+            }
+            NotificationMetadata metadata = new NotificationMetadata(
+                    NotificationUmaTracker.SystemNotificationType.WEBAPK, platformTag, platformID);
+
+            api.notifyNotificationWithChannel(platformTag, platformID,
+                    notificationBuilder.build(metadata).getNotification(), channelName);
         });
     }
 
@@ -180,4 +252,17 @@
         mConnectionManager.connect(
                 ContextUtils.getApplicationContext(), webApkPackage, connectionCallback);
     }
+
+    @ContentSettingValues
+    private static int toContentSettingValue(@PermissionStatus int permissionStatus) {
+        if (permissionStatus == PermissionStatus.ALLOW) {
+            return ContentSettingValues.ALLOW;
+        }
+
+        if (permissionStatus == PermissionStatus.ASK) {
+            return ContentSettingValues.ASK;
+        }
+
+        return ContentSettingValues.BLOCK;
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java
index 7369c86..491ec700 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java
@@ -73,6 +73,7 @@
 
     private boolean mIsInitialized;
 
+    /** Maps webapp ids to storages. */
     private HashMap<String, WebappDataStorage> mStorages;
     private SharedPreferences mPreferences;
     private InstalledWebappPermissionStore mPermissionStore;
@@ -192,10 +193,11 @@
     }
 
     /**
-     * Returns a string representation of the WebApk origin.
-     * @param storage The WebappDataStorage to extract origin for.
+     * Returns a string representation of the WebAPK scope URL, or the empty string if the storage
+     * is not for a WebAPK.
+     * @param storage The storage to extract the scope URL from.
      */
-    private String getScopeFromStorage(WebappDataStorage storage) {
+    private String getWebApkScopeFromStorage(WebappDataStorage storage) {
         if (!storage.getId().startsWith(WebApkConstants.WEBAPK_ID_PREFIX)) {
             return "";
         }
@@ -216,7 +218,7 @@
         for (HashMap.Entry<String, WebappDataStorage> entry : mStorages.entrySet()) {
             WebappDataStorage storage = entry.getValue();
 
-            String scope = getScopeFromStorage(storage);
+            String scope = getWebApkScopeFromStorage(storage);
             if (scope.isEmpty()) continue;
 
             if (scope.startsWith(origin)) return true;
@@ -232,7 +234,7 @@
         for (HashMap.Entry<String, WebappDataStorage> entry : mStorages.entrySet()) {
             WebappDataStorage storage = entry.getValue();
 
-            String scope = getScopeFromStorage(storage);
+            String scope = getWebApkScopeFromStorage(storage);
             if (scope.isEmpty()) continue;
 
             origins.add(Origin.create(scope).toString());
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 0b3293b..9ccb1ba 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
@@ -48,6 +48,7 @@
 
 import androidx.annotation.DrawableRes;
 import androidx.appcompat.content.res.AppCompatResources;
+import androidx.appcompat.widget.ContentFrameLayout;
 import androidx.browser.customtabs.CustomTabsCallback;
 import androidx.browser.customtabs.CustomTabsIntent;
 import androidx.browser.customtabs.CustomTabsService;
@@ -123,6 +124,7 @@
 import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 import org.chromium.chrome.test.util.browser.contextmenu.ContextMenuUtils;
+import org.chromium.components.browser_ui.widget.CoordinatorLayoutForPointer;
 import org.chromium.components.content_settings.CookieControlsMode;
 import org.chromium.components.embedder_support.util.Origin;
 import org.chromium.components.prefs.PrefService;
@@ -1676,6 +1678,21 @@
 
         WindowManager.LayoutParams attributes = getActivity().getWindow().getAttributes();
         assertNotEquals("The window should have non-zero y offset", 0, attributes.y);
+
+        // Verify the hierarchy of the enclosing layouts that PCCT relies on for its operation.
+        CallbackHelper eventHelper = new CallbackHelper();
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            getActivity().getCompositorViewHolderSupplier().addObserver(cvh -> {
+                if (cvh == null) return;
+                assertTrue(
+                        "CoordinatorLayoutForPointer should be the parent of CompositorViewHolder",
+                        cvh.getParent() instanceof CoordinatorLayoutForPointer);
+                assertTrue("ContentFrameLayout should be the parent of CoodinatorLayoutForPointer",
+                        cvh.getParent().getParent() instanceof ContentFrameLayout);
+                eventHelper.notifyCalled();
+            });
+        });
+        eventHelper.waitForCallback(0);
     }
 
     private void verifyHistoryAfterHiddenTab(boolean speculationWasAHit) throws Exception {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoAboutThisSiteTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoAboutThisSiteTest.java
index f254d28..20c7fe9 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoAboutThisSiteTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoAboutThisSiteTest.java
@@ -275,19 +275,6 @@
     @MediumTest
     @Features.EnableFeatures({ChromeFeatureList.PAGE_INFO_ABOUT_THIS_SITE_EN,
             ChromeFeatureList.PAGE_INFO_ABOUT_THIS_SITE_NON_EN,
-            ChromeFeatureList.PAGE_INFO_ABOUT_THIS_SITE_MORE_INFO})
-    public void
-    testAboutThisSiteMoreInfoShown() {
-        mockResponse(createDescription());
-        openPageInfo();
-        onView(withId(PageInfoAboutThisSiteController.ROW_ID)).perform(click());
-        onView(withText(R.string.page_info_more_about_this_page)).check(matches(isDisplayed()));
-    }
-
-    @Test
-    @MediumTest
-    @Features.EnableFeatures({ChromeFeatureList.PAGE_INFO_ABOUT_THIS_SITE_EN,
-            ChromeFeatureList.PAGE_INFO_ABOUT_THIS_SITE_NON_EN,
             ChromeFeatureList.ABOUT_THIS_SITE_BANNER})
     @DisabledTest(message = "https://crbug.com/1311192")
     public void
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/share/ShareDelegateImplIntegrationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/share/ShareDelegateImplIntegrationTest.java
index 1c07a729..795c05b 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/share/ShareDelegateImplIntegrationTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/share/ShareDelegateImplIntegrationTest.java
@@ -15,12 +15,14 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.Callback;
+import org.chromium.base.supplier.ObservableSupplierImpl;
 import org.chromium.base.supplier.Supplier;
 import org.chromium.base.test.util.CallbackHelper;
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.MetricsUtils.HistogramDelta;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
+import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.share.ShareDelegateImpl.ShareSheetDelegate;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
@@ -121,8 +123,8 @@
                         BottomSheetController controller,
                         ActivityLifecycleDispatcher lifecycleDispatcher, Supplier<Tab> tabProvider,
                         Supplier<TabModelSelector> tabModelSelectorProvider,
-                        Callback<Tab> printCallback, int shareOrigin, long shareStartTime,
-                        boolean sharingHubEnabled) {
+                        Supplier<Profile> profileSupplier, Callback<Tab> printCallback,
+                        int shareOrigin, long shareStartTime, boolean sharingHubEnabled) {
                     paramsRef.set(params);
                     helper.notifyCalled();
                 }
@@ -133,7 +135,8 @@
                                           .getBottomSheetController(),
                     mActivityTestRule.getActivity().getLifecycleDispatcher(),
                     mActivityTestRule.getActivity().getActivityTabProvider(),
-                    mActivityTestRule.getActivity().getTabModelSelectorSupplier(), delegate, false)
+                    mActivityTestRule.getActivity().getTabModelSelectorSupplier(),
+                    new ObservableSupplierImpl<>(), delegate, false)
                     .share(mActivityTestRule.getActivity().getActivityTab(), false,
                             /*shareOrigin=*/0);
         });
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationChannelPreserverTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationChannelPreserverTest.java
index ec01fec..da2952c 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationChannelPreserverTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationChannelPreserverTest.java
@@ -67,7 +67,7 @@
 
         mPreserver.deleteChannel(ORIGIN_WITH_CHANNEL);
 
-        verify(mStore).setPreTwaNotificationState(eq(ORIGIN_WITH_CHANNEL), eq(enabled));
+        verify(mStore).setPreInstallNotificationState(eq(ORIGIN_WITH_CHANNEL), eq(enabled));
         verify(mSiteChannelsManager).deleteSiteChannel(eq(CHANNEL_ID));
     }
 
@@ -75,7 +75,7 @@
     public void delete_nopIfNoChannel() {
         mPreserver.deleteChannel(ORIGIN_WITHOUT_CHANNEL);
 
-        verify(mStore, never()).setPreTwaNotificationState(any(), anyBoolean());
+        verify(mStore, never()).setPreInstallNotificationState(any(), anyBoolean());
         verify(mSiteChannelsManager, never()).deleteSiteChannel(any());
     }
 
@@ -109,6 +109,6 @@
     }
 
     private void setPreTwaChannelStatus(Origin origin, Boolean value) {
-        when(mStore.getPreTwaNotificationState(origin)).thenReturn(value);
+        when(mStore.getPreInstallNotificationState(origin)).thenReturn(value);
     }
 }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategyTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategyTest.java
index fee1e877..5d6b065 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategyTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategyTest.java
@@ -160,6 +160,7 @@
         when(mSpinnerView.animate()).thenReturn(mViewAnimator);
         when(mParentView.getLayoutParams()).thenReturn(mLayoutParams);
         when(mParentView.getParent()).thenReturn(mCoordinatorLayout);
+        when(mCoordinatorLayout.getLayoutParams()).thenReturn(mLayoutParams);
 
         mParentViewSupplier.set(mParentView);
 
@@ -258,8 +259,8 @@
         PartialCustomTabHeightStrategy strategy = new PartialCustomTabHeightStrategy(mActivity,
                 mParentViewSupplier, 500, mMultiWindowModeStateDispatcher, null, null,
                 mOnResizedCallback, mActivityLifecycleDispatcher);
-        strategy.setMockViewForTesting(
-                mNavbar, mSpinnerView, mSpinner, mToolbarView, mToolbarCoordinator);
+        strategy.setMockViewForTesting(mNavbar, mSpinnerView, mSpinner, mToolbarView,
+                mToolbarCoordinator, mCoordinatorLayout);
 
         verifyWindowFlagsSet();
 
@@ -336,8 +337,8 @@
         PartialCustomTabHeightStrategy strategy = new PartialCustomTabHeightStrategy(mActivity,
                 mParentViewSupplier, 800, mMultiWindowModeStateDispatcher, null, null,
                 mOnResizedCallback, mActivityLifecycleDispatcher);
-        strategy.setMockViewForTesting(
-                mNavbar, mSpinnerView, mSpinner, mToolbarView, mToolbarCoordinator);
+        strategy.setMockViewForTesting(mNavbar, mSpinnerView, mSpinner, mToolbarView,
+                mToolbarCoordinator, mCoordinatorLayout);
 
         // Pass null because we have a mock Activity and we don't depend on the GestureDetector
         // inside as we test MotionEvents directly.
@@ -358,8 +359,8 @@
         PartialCustomTabHeightStrategy strategy = new PartialCustomTabHeightStrategy(mActivity,
                 mParentViewSupplier, 800, mMultiWindowModeStateDispatcher, null, null,
                 mOnResizedCallback, mActivityLifecycleDispatcher);
-        strategy.setMockViewForTesting(
-                mNavbar, mSpinnerView, mSpinner, mToolbarView, mToolbarCoordinator);
+        strategy.setMockViewForTesting(mNavbar, mSpinnerView, mSpinner, mToolbarView,
+                mToolbarCoordinator, mCoordinatorLayout);
 
         mConfiguration.orientation = Configuration.ORIENTATION_LANDSCAPE;
         mRealMetrics.widthPixels = DEVICE_HEIGHT;
@@ -397,8 +398,8 @@
         PartialCustomTabHeightStrategy strategy = new PartialCustomTabHeightStrategy(mActivity,
                 mParentViewSupplier, 500, mMultiWindowModeStateDispatcher, null, null,
                 mOnResizedCallback, mActivityLifecycleDispatcher);
-        strategy.setMockViewForTesting(
-                mNavbar, mSpinnerView, mSpinner, mToolbarView, mToolbarCoordinator);
+        strategy.setMockViewForTesting(mNavbar, mSpinnerView, mSpinner, mToolbarView,
+                mToolbarCoordinator, mCoordinatorLayout);
 
         verify(mWindow).addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
         verify(mWindow).clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
@@ -438,8 +439,8 @@
         PartialCustomTabHeightStrategy strategy = new PartialCustomTabHeightStrategy(mActivity,
                 mParentViewSupplier, 500, mMultiWindowModeStateDispatcher, null, null,
                 mOnResizedCallback, mActivityLifecycleDispatcher);
-        strategy.setMockViewForTesting(
-                mNavbar, mSpinnerView, mSpinner, mToolbarView, mToolbarCoordinator);
+        strategy.setMockViewForTesting(mNavbar, mSpinnerView, mSpinner, mToolbarView,
+                mToolbarCoordinator, mCoordinatorLayout);
 
         verify(mWindow).addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
         verify(mWindow).clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
@@ -501,8 +502,8 @@
         PartialCustomTabHeightStrategy strategy = new PartialCustomTabHeightStrategy(mActivity,
                 mParentViewSupplier, 500, mMultiWindowModeStateDispatcher, null, null,
                 mOnResizedCallback, mActivityLifecycleDispatcher);
-        strategy.setMockViewForTesting(
-                mNavbar, mSpinnerView, mSpinner, mToolbarView, mToolbarCoordinator);
+        strategy.setMockViewForTesting(mNavbar, mSpinnerView, mSpinner, mToolbarView,
+                mToolbarCoordinator, mCoordinatorLayout);
 
         verifyWindowFlagsSet();
 
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediatorUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediatorUnitTest.java
index 6157578..40bf9d8 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediatorUnitTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediatorUnitTest.java
@@ -29,7 +29,6 @@
 import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.NEW_TAB_VIEW_AT_START;
 import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.NEW_TAB_VIEW_IS_VISIBLE;
 import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.NEW_TAB_VIEW_TEXT_IS_VISIBLE;
-import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.TAB_SWITCHER_BUTTON_IS_VISIBLE;
 import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.TRANSLATION_Y;
 
 import android.content.res.Resources;
@@ -496,38 +495,6 @@
     }
 
     @Test
-    public void testNewHomeSurface() {
-        createMediator(false, true, true, false);
-        assertFalse(mPropertyModel.get(IDENTITY_DISC_IS_VISIBLE));
-
-        mMediator.onStartSurfaceStateChanged(StartSurfaceState.SHOWN_HOMEPAGE, true);
-        assertTrue(mPropertyModel.get(IS_VISIBLE));
-        assertTrue(mPropertyModel.get(TAB_SWITCHER_BUTTON_IS_VISIBLE));
-        // Identity disc should be shown at start on homepage.
-        assertFalse(mPropertyModel.get(IDENTITY_DISC_IS_VISIBLE));
-        mButtonData.setCanShow(true);
-        mButtonData.setButtonSpec(new ButtonSpec(mDrawable, mOnClickListener,
-                /*onLongClickListener*/ null, /*contentDescriptionResId=*/5,
-                /*supportsTinting=*/false, /*iphCommandBuilder=*/null,
-                AdaptiveToolbarButtonVariant.UNKNOWN));
-        mMediator.updateIdentityDisc(mButtonData);
-        assertTrue(mPropertyModel.get(IDENTITY_DISC_IS_VISIBLE));
-        assertTrue(mPropertyModel.get(IDENTITY_DISC_AT_START));
-
-        mMediator.onStartSurfaceStateChanged(StartSurfaceState.SHOWN_TABSWITCHER, true);
-        assertFalse(mPropertyModel.get(TAB_SWITCHER_BUTTON_IS_VISIBLE));
-        assertTrue(mPropertyModel.get(HOME_BUTTON_IS_VISIBLE));
-        // Change homepage to customized.
-        mStartSurfaceAsHomepageSupplier.set(false);
-        assertFalse(mPropertyModel.get(HOME_BUTTON_IS_VISIBLE));
-        // Disable homepage.
-        mStartSurfaceAsHomepageSupplier.set(true);
-        assertTrue(mPropertyModel.get(HOME_BUTTON_IS_VISIBLE));
-        mHomepageEnabledSupplier.set(false);
-        assertFalse(mPropertyModel.get(HOME_BUTTON_IS_VISIBLE));
-    }
-
-    @Test
     public void testNewTabButtonWithAccessibilityOnAndContinuationOn() {
         ChromeAccessibilityUtil.get().setAccessibilityEnabledForTesting(true);
 
diff --git a/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/IWebApkApi.aidl b/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/IWebApkApi.aidl
index 5bfdd402..54bed7d 100644
--- a/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/IWebApkApi.aidl
+++ b/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/IWebApkApi.aidl
@@ -5,6 +5,7 @@
 package org.chromium.webapk.lib.runtime_library;
 
 import android.app.Notification;
+import android.app.PendingIntent;
 
 /**
  * Interface for communicating between WebAPK service and Chrome.
@@ -21,12 +22,19 @@
     void cancelNotification(String platformTag, int platformID);
 
     // Get if notification permission is enabled.
+    // DEPRECATED: Use checkNotificationPermission instead.
     boolean notificationPermissionEnabled();
 
     // Display a notification with a specified channel name.
     void notifyNotificationWithChannel(String platformTag, int platformID,
                                        in Notification notification, String channelName);
 
-   // Finishes and removes the WebAPK's task. Returns true on success.
-   boolean finishAndRemoveTaskSdk23();
+    // Finishes and removes the WebAPK's task. Returns true on success.
+    boolean finishAndRemoveTaskSdk23();
+
+    // Gets the notification permission status.
+    int checkNotificationPermission();
+
+    // Creates a pending intent for requesting notification permission.
+    PendingIntent requestNotificationPermission(String channelName, String channelId);
 }
diff --git a/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/WebApkServiceImpl.java b/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/WebApkServiceImpl.java
index 13e7bd6..7dff81b 100644
--- a/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/WebApkServiceImpl.java
+++ b/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/WebApkServiceImpl.java
@@ -9,6 +9,7 @@
 import android.app.Notification;
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
+import android.app.PendingIntent;
 import android.content.Context;
 import android.os.Binder;
 import android.os.Build;
@@ -57,13 +58,14 @@
     }
 
     @Override
-    public boolean onTransact(int arg0, Parcel arg1, Parcel arg2, int arg3) throws RemoteException {
+    public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
+            throws RemoteException {
         int callingUid = Binder.getCallingUid();
         if (mHostUid != callingUid) {
             throw new RemoteException("Unauthorized caller " + callingUid
                     + " does not match expected host=" + mHostUid);
         }
-        return super.onTransact(arg0, arg1, arg2, arg3);
+        return super.onTransact(code, data, reply, flags);
     }
 
     @Override
@@ -85,6 +87,9 @@
 
     @Override
     public boolean notificationPermissionEnabled() {
+        Log.w(TAG,
+                "Should NOT reach WebApkServiceImpl#notificationPermissionEnabled() because it is"
+                        + " deprecated.");
         return NotificationManagerCompat.from(mContext).areNotificationsEnabled();
     }
 
@@ -105,6 +110,20 @@
         return false;
     }
 
+    @Override
+    public int checkNotificationPermission() {
+        Log.w(TAG, "Should NOT reach WebApkServiceImpl#checkNotificationPermission().");
+        return -1;
+    }
+
+    @Override
+    public PendingIntent requestNotificationPermission(String channelName, String channelId) {
+        Log.w(TAG,
+                "Should NOT reach WebApkServiceImpl#requestNotificationPermission(String,"
+                        + " String).");
+        return null;
+    }
+
     /** Returns the package name of the task's base activity. */
     @RequiresApi(Build.VERSION_CODES.M)
     private static String getTaskBaseActivityPackageName(ActivityManager.AppTask task) {
diff --git a/chrome/android/webapk/libs/runtime_library_version.gni b/chrome/android/webapk/libs/runtime_library_version.gni
index 6f684a4..cb236ce6 100644
--- a/chrome/android/webapk/libs/runtime_library_version.gni
+++ b/chrome/android/webapk/libs/runtime_library_version.gni
@@ -5,4 +5,4 @@
 # Must be incremented whenever the runtime library is updated. The WebAPK
 # re-extracts the runtime library from the Chrome APK when
 # |runtime_library_version| is incremented.
-runtime_library_version = 7
+runtime_library_version = 8
diff --git a/chrome/android/webapk/shell_apk/AndroidManifest.xml b/chrome/android/webapk/shell_apk/AndroidManifest.xml
index caf29e3..8778f48 100644
--- a/chrome/android/webapk/shell_apk/AndroidManifest.xml
+++ b/chrome/android/webapk/shell_apk/AndroidManifest.xml
@@ -26,6 +26,8 @@
         android:minSdkVersion="23"
         android:targetSdkVersion="31" />
 
+    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
+
     <queries>
         <intent>
             <action android:name="android.intent.action.VIEW" />
@@ -99,6 +101,9 @@
             </intent-filter>
             <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
         </activity>
+        <activity android:name="org.chromium.webapk.shell_apk.NotificationPermissionRequestActivity"
+                  android:theme="@style/PermissionRequestTheme">
+        </activity>
 
         {{#share_template}}
         <activity-alias android:name="org.chromium.webapk.shell_apk.ShareActivity{{{index}}}"
diff --git a/chrome/android/webapk/shell_apk/BUILD.gn b/chrome/android/webapk/shell_apk/BUILD.gn
index 41940bb..5206680 100644
--- a/chrome/android/webapk/shell_apk/BUILD.gn
+++ b/chrome/android/webapk/shell_apk/BUILD.gn
@@ -62,6 +62,9 @@
       "src/org/chromium/webapk/shell_apk/InstallHostBrowserDialog.java",
       "src/org/chromium/webapk/shell_apk/LaunchHostBrowserSelector.java",
       "src/org/chromium/webapk/shell_apk/ManageDataLauncherActivity.java",
+      "src/org/chromium/webapk/shell_apk/NotificationPermissionRequestActivity.java",
+      "src/org/chromium/webapk/shell_apk/PermissionStatus.java",
+      "src/org/chromium/webapk/shell_apk/PrefUtils.java",
       "src/org/chromium/webapk/shell_apk/TransparentLauncherActivity.java",
       "src/org/chromium/webapk/shell_apk/WebApkSharedPreferences.java",
       "src/org/chromium/webapk/shell_apk/WebApkUtils.java",
diff --git a/chrome/android/webapk/shell_apk/current_version/current_version.gni b/chrome/android/webapk/shell_apk/current_version/current_version.gni
index 18137ad..03b9f74 100644
--- a/chrome/android/webapk/shell_apk/current_version/current_version.gni
+++ b/chrome/android/webapk/shell_apk/current_version/current_version.gni
@@ -12,4 +12,4 @@
 # //chrome/android/webapk/shell_apk:webapk is changed. This includes
 # Java files, Android resource files and AndroidManifest.xml. Does not affect
 # Chrome.apk
-current_shell_apk_version = 152
+current_shell_apk_version = 153
diff --git a/chrome/android/webapk/shell_apk/proguard.flags b/chrome/android/webapk/shell_apk/proguard.flags
index d789b0af..a94393e7a 100644
--- a/chrome/android/webapk/shell_apk/proguard.flags
+++ b/chrome/android/webapk/shell_apk/proguard.flags
@@ -4,6 +4,7 @@
 # but not both. The server currently uses the same classes.dex for both
 # old-style and new-style WebAPKs.
 -keep class org.chromium.webapk.shell_apk.MainActivity
+-keep class org.chromium.webapk.shell_apk.NotificationPermissionRequestActivity
 -keep class org.chromium.webapk.shell_apk.TransparentLauncherActivity
 -keep class org.chromium.webapk.shell_apk.h2o.H2OMainActivity
 -keep class org.chromium.webapk.shell_apk.h2o.H2OOpaqueMainActivity
diff --git a/chrome/android/webapk/shell_apk/res/values-v31/styles.xml b/chrome/android/webapk/shell_apk/res/values-v31/styles.xml
index b3eef62a..0153569 100644
--- a/chrome/android/webapk/shell_apk/res/values-v31/styles.xml
+++ b/chrome/android/webapk/shell_apk/res/values-v31/styles.xml
@@ -11,4 +11,8 @@
     <!-- This disables the Android S default splash screen. -->
     <item name="android:windowIsTranslucent">true</item>
   </style>
+  <style name="PermissionRequestTheme" parent="@android:style/Theme.Translucent.NoTitleBar">
+    <item name="android:windowIsFloating">true</item>
+    <item name="android:backgroundDimEnabled">false</item>
+  </style>
 </resources>
diff --git a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/lib/runtime_library/IWebApkApi.java b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/lib/runtime_library/IWebApkApi.java
index 0cc41b2..addd05d 100644
--- a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/lib/runtime_library/IWebApkApi.java
+++ b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/lib/runtime_library/IWebApkApi.java
@@ -22,6 +22,7 @@
         public void cancelNotification(java.lang.String platformTag, int platformID)
                 throws android.os.RemoteException {}
         // Get if notification permission is enabled.
+        // DEPRECATED: Use checkNotificationPermission instead.
         @Override
         public boolean notificationPermissionEnabled() throws android.os.RemoteException {
             return false;
@@ -36,6 +37,17 @@
         public boolean finishAndRemoveTaskSdk23() throws android.os.RemoteException {
             return false;
         }
+        // Gets the notification permission status.
+        @Override
+        public int checkNotificationPermission() throws android.os.RemoteException {
+            return 0;
+        }
+        // Creates a pending intent for requesting notification permission.
+        @Override
+        public android.app.PendingIntent requestNotificationPermission(java.lang.String channelName,
+                java.lang.String channelId) throws android.os.RemoteException {
+            return null;
+        }
         @Override
         public android.os.IBinder asBinder() {
             return null;
@@ -134,6 +146,24 @@
                     reply.writeInt(((_result) ? (1) : (0)));
                     break;
                 }
+                case TRANSACTION_checkNotificationPermission: {
+                    int _result = this.checkNotificationPermission();
+                    reply.writeNoException();
+                    reply.writeInt(_result);
+                    break;
+                }
+                case TRANSACTION_requestNotificationPermission: {
+                    java.lang.String _arg0;
+                    _arg0 = data.readString();
+                    java.lang.String _arg1;
+                    _arg1 = data.readString();
+                    android.app.PendingIntent _result =
+                            this.requestNotificationPermission(_arg0, _arg1);
+                    reply.writeNoException();
+                    _Parcel.writeTypedObject(
+                            reply, _result, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
+                    break;
+                }
                 default: {
                     return super.onTransact(code, data, reply, flags);
                 }
@@ -209,6 +239,7 @@
                 }
             }
             // Get if notification permission is enabled.
+            // DEPRECATED: Use checkNotificationPermission instead.
             @Override
             public boolean notificationPermissionEnabled() throws android.os.RemoteException {
                 android.os.Parcel _data = android.os.Parcel.obtain();
@@ -265,6 +296,46 @@
                 }
                 return _result;
             }
+            // Gets the notification permission status.
+            @Override
+            public int checkNotificationPermission() throws android.os.RemoteException {
+                android.os.Parcel _data = android.os.Parcel.obtain();
+                android.os.Parcel _reply = android.os.Parcel.obtain();
+                int _result;
+                try {
+                    _data.writeInterfaceToken(DESCRIPTOR);
+                    boolean _status = mRemote.transact(
+                            Stub.TRANSACTION_checkNotificationPermission, _data, _reply, 0);
+                    _reply.readException();
+                    _result = _reply.readInt();
+                } finally {
+                    _reply.recycle();
+                    _data.recycle();
+                }
+                return _result;
+            }
+            // Creates a pending intent for requesting notification permission.
+            @Override
+            public android.app.PendingIntent requestNotificationPermission(
+                    java.lang.String channelName, java.lang.String channelId)
+                    throws android.os.RemoteException {
+                android.os.Parcel _data = android.os.Parcel.obtain();
+                android.os.Parcel _reply = android.os.Parcel.obtain();
+                android.app.PendingIntent _result;
+                try {
+                    _data.writeInterfaceToken(DESCRIPTOR);
+                    _data.writeString(channelName);
+                    _data.writeString(channelId);
+                    boolean _status = mRemote.transact(
+                            Stub.TRANSACTION_requestNotificationPermission, _data, _reply, 0);
+                    _reply.readException();
+                    _result = _Parcel.readTypedObject(_reply, android.app.PendingIntent.CREATOR);
+                } finally {
+                    _reply.recycle();
+                    _data.recycle();
+                }
+                return _result;
+            }
         }
         static final int TRANSACTION_getSmallIconId =
                 (android.os.IBinder.FIRST_CALL_TRANSACTION + 0);
@@ -278,6 +349,10 @@
                 (android.os.IBinder.FIRST_CALL_TRANSACTION + 4);
         static final int TRANSACTION_finishAndRemoveTaskSdk23 =
                 (android.os.IBinder.FIRST_CALL_TRANSACTION + 5);
+        static final int TRANSACTION_checkNotificationPermission =
+                (android.os.IBinder.FIRST_CALL_TRANSACTION + 6);
+        static final int TRANSACTION_requestNotificationPermission =
+                (android.os.IBinder.FIRST_CALL_TRANSACTION + 7);
     }
     public static final java.lang.String DESCRIPTOR =
             "org.chromium.webapk.lib.runtime_library.IWebApkApi";
@@ -291,6 +366,7 @@
     public void cancelNotification(java.lang.String platformTag, int platformID)
             throws android.os.RemoteException;
     // Get if notification permission is enabled.
+    // DEPRECATED: Use checkNotificationPermission instead.
     public boolean notificationPermissionEnabled() throws android.os.RemoteException;
     // Display a notification with a specified channel name.
     public void notifyNotificationWithChannel(java.lang.String platformTag, int platformID,
@@ -298,6 +374,11 @@
             throws android.os.RemoteException;
     // Finishes and removes the WebAPK's task. Returns true on success.
     public boolean finishAndRemoveTaskSdk23() throws android.os.RemoteException;
+    // Gets the notification permission status.
+    public int checkNotificationPermission() throws android.os.RemoteException;
+    // Creates a pending intent for requesting notification permission.
+    public android.app.PendingIntent requestNotificationPermission(java.lang.String channelName,
+            java.lang.String channelId) throws android.os.RemoteException;
     /** @hide */
     static class _Parcel {
         static private <T> T readTypedObject(
diff --git a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/NotificationPermissionRequestActivity.java b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/NotificationPermissionRequestActivity.java
new file mode 100644
index 0000000..66da532
--- /dev/null
+++ b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/NotificationPermissionRequestActivity.java
@@ -0,0 +1,144 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.webapk.shell_apk;
+
+import android.app.Activity;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Message;
+import android.os.Messenger;
+import android.os.RemoteException;
+import android.util.Log;
+
+/**
+ * A simple transparent activity for requesting the notification permission. On either approve or
+ * disapprove, this will send the result via the {@link Messenger} provided with the intent, and
+ * then finish.
+ */
+public class NotificationPermissionRequestActivity extends Activity {
+    private static final String TAG = "PermissionRequestActivity";
+
+    // TODO: Use Manifest.permission.POST_NOTIFICATIONS when it is released.
+    private static final String PERMISSION_POST_NOTIFICATIONS =
+            "android.permission.POST_NOTIFICATIONS";
+
+    // TODO: Use Build.VERSION_CODES when it is released.
+    private static final int VERSION_T = 33;
+
+    // An intent extra for a notification channel name string.
+    private static final String EXTRA_NOTIFICATION_CHANNEL_NAME = "notificationChannelName";
+
+    // An intent extra for a notification channel id string.
+    private static final String EXTRA_NOTIFICATION_CHANNEL_ID = "notificationChannelId";
+
+    // An intent extra for a {@link Messenger}.
+    private static final String EXTRA_MESSENGER = "messenger";
+
+    // A bundle key for a {@link PermissionStatus}.
+    private static final String KEY_PERMISSION_STATUS = "permissionStatus";
+
+    private String mChannelName;
+    private String mChannelId;
+    private Messenger mMessenger;
+
+    /**
+     * Creates a {@link PendingIntent} for launching this activity to request the notification
+     * permission. It is mutable so that a messenger extra can be added for returning the permission
+     * request result.
+     */
+    public static PendingIntent createPermissionRequestPendingIntent(
+            Context context, String channelName, String channelId) {
+        Intent intent = new Intent(
+                context.getApplicationContext(), NotificationPermissionRequestActivity.class);
+        intent.putExtra(EXTRA_NOTIFICATION_CHANNEL_NAME, channelName);
+        intent.putExtra(EXTRA_NOTIFICATION_CHANNEL_ID, channelId);
+        // Starting with Build.VERSION_CODES.S it is required to explicitly specify the mutability
+        // of PendingIntents.
+        int flags = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ? PendingIntent.FLAG_MUTABLE : 0;
+        return PendingIntent.getActivity(context.getApplicationContext(), 0, intent, flags);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        if (Build.VERSION.SDK_INT < VERSION_T) {
+            Log.w(TAG, "Cannot request notification permission before Android T.");
+            finish();
+            return;
+        }
+
+        mChannelName = getIntent().getStringExtra(EXTRA_NOTIFICATION_CHANNEL_NAME);
+        mChannelId = getIntent().getStringExtra(EXTRA_NOTIFICATION_CHANNEL_ID);
+        mMessenger = getIntent().getParcelableExtra(EXTRA_MESSENGER);
+        if (mChannelName == null || mChannelId == null || mMessenger == null) {
+            Log.w(TAG, "Finishing because not all required extras were provided.");
+            finish();
+            return;
+        }
+
+        // When running on T or greater, with the app targeting less than T, creating a channel for
+        // the first time will trigger the permission dialog.
+        if (getApplicationContext().getApplicationInfo().targetSdkVersion < VERSION_T) {
+            NotificationChannel channel = new NotificationChannel(
+                    mChannelId, mChannelName, NotificationManager.IMPORTANCE_DEFAULT);
+            getNotificationManager().createNotificationChannel(channel);
+        }
+
+        requestPermissions(new String[] {PERMISSION_POST_NOTIFICATIONS}, 0);
+    }
+
+    @Override
+    public void onRequestPermissionsResult(
+            int requestCode, String[] permissions, int[] grantResults) {
+        boolean enabled = false;
+        for (int i = 0; i < permissions.length; i++) {
+            if (!permissions[i].equals(PERMISSION_POST_NOTIFICATIONS)) continue;
+
+            PrefUtils.setHasRequestedNotificationPermission(this);
+            enabled = grantResults[i] == PackageManager.PERMISSION_GRANTED;
+            break;
+        }
+
+        // This method will only receive the notification permission and its grant result when
+        // running on and targeting >= T. Check whether notifications are actually enabled, perhaps
+        // because the system displayed a permission dialog after the first notification channel was
+        // created and the user approved it.
+        if (!enabled && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            enabled = getNotificationManager().areNotificationsEnabled();
+        }
+
+        sendPermissionMessage(mMessenger, enabled);
+        finish();
+    }
+
+    /**
+     * Sends a message to the messenger containing the permission status.
+     */
+    private static void sendPermissionMessage(Messenger messenger, boolean enabled) {
+        Bundle data = new Bundle();
+        @PermissionStatus
+        int status = enabled ? PermissionStatus.ALLOW : PermissionStatus.BLOCK;
+        data.putInt(KEY_PERMISSION_STATUS, status);
+        Message message = Message.obtain();
+        message.setData(data);
+
+        try {
+            messenger.send(message);
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private NotificationManager getNotificationManager() {
+        return (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+    }
+}
diff --git a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/PermissionStatus.java b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/PermissionStatus.java
new file mode 100644
index 0000000..f7c691c4a
--- /dev/null
+++ b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/PermissionStatus.java
@@ -0,0 +1,21 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.webapk.shell_apk;
+
+import androidx.annotation.IntDef;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@IntDef({PermissionStatus.ALLOW, PermissionStatus.BLOCK, PermissionStatus.ASK})
+@Retention(RetentionPolicy.SOURCE)
+/**
+ * Represents the permission state in service calls.
+ */
+public @interface PermissionStatus {
+    int ALLOW = 0;
+    int BLOCK = 1;
+    int ASK = 2;
+}
diff --git a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/PrefUtils.java b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/PrefUtils.java
new file mode 100644
index 0000000..6ef363c
--- /dev/null
+++ b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/PrefUtils.java
@@ -0,0 +1,40 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.webapk.shell_apk;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+/**
+ * Helper for using application level {@link SharedPreferences} in a consistent way, with the same
+ * file name and using the application context.
+ */
+public class PrefUtils {
+    private PrefUtils() {}
+
+    private static final String SHARED_PREFERENCES_NAME = "org.chromium.webapk.shell_apk.PrefUtils";
+    private static final String KEY_HAS_REQUESTED_NOTIFICATION_PERMISSION =
+            "HAS_REQUESTED_NOTIFICATION_PERMISSION";
+
+    /**
+     * Returns the application level {@link SharedPreferences} using the application context.
+     */
+    public static SharedPreferences getAppSharedPreferences(Context context) {
+        return context.getApplicationContext().getSharedPreferences(
+                SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
+    }
+
+    public static boolean hasRequestedNotificationPermission(Context context) {
+        return getAppSharedPreferences(context).getBoolean(
+                KEY_HAS_REQUESTED_NOTIFICATION_PERMISSION, false);
+    }
+
+    public static void setHasRequestedNotificationPermission(Context context) {
+        getAppSharedPreferences(context)
+                .edit()
+                .putBoolean(KEY_HAS_REQUESTED_NOTIFICATION_PERMISSION, true)
+                .apply();
+    }
+}
diff --git a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/WebApkServiceImplWrapper.java b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/WebApkServiceImplWrapper.java
index 653fe8d..9f3f0503 100644
--- a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/WebApkServiceImplWrapper.java
+++ b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/WebApkServiceImplWrapper.java
@@ -7,6 +7,7 @@
 import android.app.Notification;
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
+import android.app.PendingIntent;
 import android.content.Context;
 import android.os.Binder;
 import android.os.Build;
@@ -27,7 +28,7 @@
  * provides additional functionality when the runtime library hasn't been updated.
  */
 public class WebApkServiceImplWrapper extends IWebApkApi.Stub {
-    private static final String TAG = "cr_WebApkService";
+    private static final String TAG = "cr_WebApkServiceImplWrapper";
 
     /** The channel id of the WebAPK. */
     private static final String DEFAULT_NOTIFICATION_CHANNEL_ID = "default_channel_id";
@@ -35,12 +36,24 @@
     private static final String FUNCTION_NAME_NOTIFY_NOTIFICATION =
             "TRANSACTION_notifyNotification";
 
+    private static final String FUNCTION_NAME_CHECK_NOTIFICATION_PERMISSION =
+            "TRANSACTION_checkNotificationPermission";
+
+    private static final String FUNCTION_NAME_REQUEST_NOTIFICATION_PERMISSION =
+            "TRANSACTION_requestNotificationPermission";
+
+    // TODO: Use Build.VERSION_CODES when it is released.
+    private static final int VERSION_T = 33;
+
     /**
      * Uid of only application allowed to call the service's methods. If an application with a
      * different uid calls the service, the service throws a RemoteException.
      */
     private final int mHostUid;
 
+    /**
+     * The {@link org.chromium.webapk.lib.runtime_library.WebApkServiceImpl} that this class wraps.
+     */
     private IBinder mIBinderDelegate;
     private Context mContext;
 
@@ -51,21 +64,23 @@
     }
 
     @Override
-    public boolean onTransact(int arg0, Parcel arg1, Parcel arg2, int arg3) throws RemoteException {
-        int code = getApiCode(FUNCTION_NAME_NOTIFY_NOTIFICATION);
-
-        if (arg0 == code) {
-            // This is a notifyNotification call, so defer to our parent's onTransact() which will
-            // eventually dispatch it to our notifyNotification().
-            int callingUid = Binder.getCallingUid();
-            if (mHostUid != callingUid) {
-                throw new RemoteException("Unauthorized caller " + callingUid
-                        + " does not match expected host=" + mHostUid);
-            }
-            return super.onTransact(arg0, arg1, arg2, arg3);
+    public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
+            throws RemoteException {
+        int callingUid = Binder.getCallingUid();
+        if (mHostUid != callingUid) {
+            throw new RemoteException("Unauthorized caller " + callingUid
+                    + " does not match expected host=" + mHostUid);
         }
 
-        return delegateOnTransactMethod(arg0, arg1, arg2, arg3);
+        // For methods that we want to handle we defer to our parent's onTransact which will
+        // dispatch to the method implementations in this class.
+        if (code == getApiCode(FUNCTION_NAME_NOTIFY_NOTIFICATION)
+                || code == getApiCode(FUNCTION_NAME_CHECK_NOTIFICATION_PERMISSION)
+                || code == getApiCode(FUNCTION_NAME_REQUEST_NOTIFICATION_PERMISSION)) {
+            return super.onTransact(code, data, reply, flags);
+        }
+
+        return delegateOnTransactMethod(code, data, reply, flags);
     }
 
     @Override
@@ -86,7 +101,7 @@
         // The WebApkServiceImplWrapper was introduced at the same time when WebAPKs target SDK 26.
         // That means, we don't need to check whether the target SDK is less than 26 in a WebAPK
         // that has a WebApkServiceImplWrapper class.
-        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
             ensureNotificationChannelExists();
             notification = rebuildNotificationWithChannelId(mContext, notification);
         }
@@ -112,15 +127,41 @@
         return false;
     }
 
+    @Override
+    @PermissionStatus
+    public int checkNotificationPermission() {
+        boolean enabled = true;
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            enabled = getNotificationManager().areNotificationsEnabled();
+        }
+        @PermissionStatus
+        int status = enabled ? PermissionStatus.ALLOW : PermissionStatus.BLOCK;
+        if (status == PermissionStatus.BLOCK
+                && !PrefUtils.hasRequestedNotificationPermission(mContext)
+                && Build.VERSION.SDK_INT >= VERSION_T) {
+            status = PermissionStatus.ASK;
+        }
+        return status;
+    }
+
+    @Override
+    public PendingIntent requestNotificationPermission(String channelName, String channelId) {
+        if (Build.VERSION.SDK_INT < VERSION_T) {
+            Log.w(TAG, "Cannot request notification permission before Android T.");
+            return null;
+        }
+
+        return NotificationPermissionRequestActivity.createPermissionRequestPendingIntent(
+                mContext, channelName, channelId);
+    }
+
     /** Creates a WebAPK notification channel on Android O+ if one does not exist. */
     protected void ensureNotificationChannelExists() {
-        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
-            NotificationManager manager =
-                    (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
             NotificationChannel channel = new NotificationChannel(DEFAULT_NOTIFICATION_CHANNEL_ID,
                     WebApkUtils.getNotificationChannelName(mContext),
                     NotificationManager.IMPORTANCE_DEFAULT);
-            manager.createNotificationChannel(channel);
+            getNotificationManager().createNotificationChannel(channel);
         }
     }
 
@@ -139,7 +180,7 @@
     }
 
     /** Calls the delegate's {@link onTransact()} method via reflection. */
-    private boolean delegateOnTransactMethod(int arg0, Parcel arg1, Parcel arg2, int arg3)
+    private boolean delegateOnTransactMethod(int code, Parcel data, Parcel reply, int flags)
             throws RemoteException {
         if (mIBinderDelegate == null) return false;
 
@@ -147,7 +188,7 @@
             Method onTransactMethod = mIBinderDelegate.getClass().getMethod(
                     "onTransact", new Class[] {int.class, Parcel.class, Parcel.class, int.class});
             onTransactMethod.setAccessible(true);
-            return (boolean) onTransactMethod.invoke(mIBinderDelegate, arg0, arg1, arg2, arg3);
+            return (boolean) onTransactMethod.invoke(mIBinderDelegate, code, data, reply, flags);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -178,4 +219,8 @@
             e.printStackTrace();
         }
     }
+
+    private NotificationManager getNotificationManager() {
+        return (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+    }
 }
diff --git a/chrome/app/BUILD.gn b/chrome/app/BUILD.gn
index e309f93d..04e4ae0 100644
--- a/chrome/app/BUILD.gn
+++ b/chrome/app/BUILD.gn
@@ -274,29 +274,8 @@
     excluded_dirs = FUCHSIA_PACKAGED_CONTENT_EMBEDDER_EXCLUDED_DIRS
   }
 
-  fuchsia_package_installer("chrome_fuchsia_installer") {
+  fuchsia_package_installer("chrome_fuchsia") {
     package = ":chrome_pkg"
     package_name = "chrome"
   }
-
-  fuchsia_run_script_with_packages("chrome_fuchsia_runner") {
-    package = ":chrome_pkg"
-    package_name = "chrome"
-    output_name_format = "run_%package%"
-
-    executable = rebase_path("//build/fuchsia/run_ffx_command.py")
-    executable_args = [
-      "--command",
-      "session add fuchsia-pkg://fuchsia.com/chrome#meta/chrome_v1.cmx -- " +
-          "%args%",
-    ]
-    include_fuchsia_build_dir = true
-  }
-
-  group("chrome_fuchsia") {
-    deps = [
-      ":chrome_fuchsia_installer",
-      ":chrome_fuchsia_runner",
-    ]
-  }
 }
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 891b33e..f559e98 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -5295,55 +5295,54 @@
       <!-- End Extension Settings Overridden Dialog strings. -->
       <!-- Force Installed Deprecated Apps Deletion Dialog strings. -->
       <message name="IDS_FORCE_INSTALLED_DEPRECATED_APPS_CONTENT" desc="Content of the force installed deprecated app dialog">
-        Your administrator installed "<ph name="EXTENSION_NAME">$1<ex>Google Docs</ex></ph>" but this Chrome App is no longer supported. Contact your administrator to remove it.
-      </message>
-      <message name="IDS_FORCE_INSTALLED_PREINSTALLED_DEPRECATED_APPS_TITLE" desc="Title of the force installed and pre-installed deprecated app dialog">
-        <ph name="EXTENSION_NAME">$1<ex>Google Docs</ex></ph> needs to be updated
-      </message>
-      <message name="IDS_FORCE_INSTALLED_PREINSTALLED_DEPRECATED_APPS_CONTENT" desc="Content of the force installed and pre-installed deprecated app dialog">
-        Contact your administrator for the newest version.
-      </message>
-      <message name="IDS_FORCE_INSTALLED_DEPRECATED_APPS_LEARN_MORE_AX_LABEL" desc="Accessibility label text for IDS_DEPRECATED_APPS_LEARN_MORE link">
-        Learn more about unsupported Chrome Apps
+        Old versions of Chrome Apps won't open after December 2022. Contact your administrator to update to a new version or remove this app.
       </message>
       <!-- End Force Installed Deprecated Apps Deletion Dialog strings. -->
       <!-- Deprecated Apps Deletion Dialog strings. -->
-      <message name="IDS_DEPRECATED_APPS_RENDERER_TITLE" desc="The title of the deprecated app dialog">
-        {NUM_APPS, plural,
-        =1 {Unsupported App}
-        other {Unsupported Apps}}
+      <message name="IDS_DEPRECATED_APPS_RENDERER_TITLE_PLURAL" desc="The title of the deprecated app dialog">
+        <ph name="APPS">$1<ex>2</ex></ph> apps are no longer supported
       </message>
-      <message name="IDS_DEPRECATED_APPS_MONITOR_RENDERER" desc="States how many deprecated apps are present, with a link to a help article">
-        {NUM_APPS, plural,
-        =1 {1 of your apps is no longer supported.}
-        other {# of your apps are no longer supported.}}
+      <message name="IDS_DEPRECATED_APPS_RENDERER_TITLE_WITH_APP_NAME" desc="The title of the deprecated app dialog with the app name">
+        "<ph name="EXTENSION_NAME">$1<ex>Google Docs</ex></ph>" is no longer supported
+      </message>
+      <message name="IDS_DEPRECATED_APPS_MONITOR_RENDERER" desc="Dialog content that educates users that Chrome Apps will soon no longer launch.">
+        Old versions of Chrome apps won't open after December 2022. You can check if there's a new version available.
       </message>
       <message name="IDS_DEPRECATED_APPS_LEARN_MORE" desc="Redirects to a link with more information on chrome apps deprecation">
         Learn more
       </message>
+      <message name="IDS_DEPRECATED_APPS_LEARN_MORE_AX_LABEL" desc="Accessibility label text for IDS_DEPRECATED_APPS_LEARN_MORE link">
+        Learn more about unsupported Chrome apps
+      </message>
       <message name="IDS_DEPRECATED_APPS_DELETION_LINK" desc="Contains link to trigger the deprecated apps deletion dialog from chrome://apps">
         {NUM_APPS, plural,
-        =1 {Delete 1 unsupported app}
-        other {Delete # unsupported apps}}
+        =1 {Remove 1 unsupported app}
+        other {Remove # unsupported apps}}
       </message>
       <if expr="use_titlecase">
-        <message name="IDS_DEPRECATED_APPS_OK_LABEL" desc="Label for OK button on deprecated apps dialog">
+        <message name="IDS_DEPRECATED_APPS_OK_LABEL" desc="Label for OK button to delete deprecated apps on deprecated apps dialog">
           {NUM_APPS, plural,
-          =1 {Delete App Now}
-          other {Delete Apps Now}}
+          =1 {Remove App}
+          other {Remove Apps}}
         </message>
         <message name="IDS_DEPRECATED_APPS_CANCEL_LABEL" desc="Label for Cancel button on deprecated apps dialog">
-          Ask Next Time
+          Cancel
+        </message>
+        <message name="IDS_DEPRECATED_APPS_LAUNCH_ANYWAY_LABEL" desc="Label for button cancel button to launch the app anyways in the deprecated apps dialog">
+          Open Anyway
         </message>
       </if>
         <if expr="not use_titlecase">
-        <message name="IDS_DEPRECATED_APPS_OK_LABEL" desc="Label for OK button on deprecated apps dialog">
+        <message name="IDS_DEPRECATED_APPS_OK_LABEL" desc="Label for OK button to delete deprecated apps on deprecated apps dialog">
           {NUM_APPS, plural,
-          =1 {Delete app now}
-          other {Delete apps now}}
+          =1 {Remove app}
+          other {Remove apps}}
         </message>
         <message name="IDS_DEPRECATED_APPS_CANCEL_LABEL" desc="Label for Cancel button on deprecated apps dialog">
-          Ask next time
+          Cancel
+        </message>
+        <message name="IDS_DEPRECATED_APPS_LAUNCH_ANYWAY_LABEL" desc="Label for button cancel button to launch the app anyways in the deprecated apps dialog">
+          Open anyway
         </message>
       </if>
       <!-- End Deprecated Apps Deletion Dialog strings. -->
diff --git a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_CANCEL_LABEL.png.sha1 b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_CANCEL_LABEL.png.sha1
index e20a484..26ea844 100644
--- a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_CANCEL_LABEL.png.sha1
+++ b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_CANCEL_LABEL.png.sha1
@@ -1 +1 @@
-d9b944ef5ef27e0f1295241c9f406b9c8cb72aee
\ No newline at end of file
+1e123c34e823e2462febf9190afc628a2ce8e57c
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_DELETION_LINK.png.sha1 b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_DELETION_LINK.png.sha1
index b9455dd..af82f71 100644
--- a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_DELETION_LINK.png.sha1
+++ b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_DELETION_LINK.png.sha1
@@ -1 +1 @@
-6ff2631811c45b9f3b84abc7c67b5c5afcd547e5
\ No newline at end of file
+7a07c53c45948b89a41926c6db34d2789d145eee
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_LAUNCH_ANYWAY_LABEL.png.sha1 b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_LAUNCH_ANYWAY_LABEL.png.sha1
new file mode 100644
index 0000000..ff28de0
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_LAUNCH_ANYWAY_LABEL.png.sha1
@@ -0,0 +1 @@
+cba71d69dd28b563b84d8f711f75b512dd087540
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_LEARN_MORE_AX_LABEL.png.sha1 b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_LEARN_MORE_AX_LABEL.png.sha1
new file mode 100644
index 0000000..18ae197
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_LEARN_MORE_AX_LABEL.png.sha1
@@ -0,0 +1 @@
+b76eea7f0c5ea4eb7e989849d710a4ebd29730f3
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_MONITOR_RENDERER.png.sha1 b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_MONITOR_RENDERER.png.sha1
index 1b2ad4ec..ae4936a95 100644
--- a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_MONITOR_RENDERER.png.sha1
+++ b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_MONITOR_RENDERER.png.sha1
@@ -1 +1 @@
-9e28ad20100395c69d134fa5af69a1b20a557d8d
\ No newline at end of file
+d5ff0b22ce14fcea1fc49a2c7de9b15f730c131a
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_OK_LABEL.png.sha1 b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_OK_LABEL.png.sha1
index e20a484..bd48885 100644
--- a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_OK_LABEL.png.sha1
+++ b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_OK_LABEL.png.sha1
@@ -1 +1 @@
-d9b944ef5ef27e0f1295241c9f406b9c8cb72aee
\ No newline at end of file
+5237e4a51724524f17f62063829e5f73555821f3
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_RENDERER_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_RENDERER_TITLE.png.sha1
deleted file mode 100644
index e20a484..0000000
--- a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_RENDERER_TITLE.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-d9b944ef5ef27e0f1295241c9f406b9c8cb72aee
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_RENDERER_TITLE_PLURAL.png.sha1 b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_RENDERER_TITLE_PLURAL.png.sha1
new file mode 100644
index 0000000..c48a3de
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_RENDERER_TITLE_PLURAL.png.sha1
@@ -0,0 +1 @@
+0489408824bfd6e642d234e9d96445ad9d4a2299
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_RENDERER_TITLE_WITH_APP_NAME.png.sha1 b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_RENDERER_TITLE_WITH_APP_NAME.png.sha1
new file mode 100644
index 0000000..227f05d5
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_DEPRECATED_APPS_RENDERER_TITLE_WITH_APP_NAME.png.sha1
@@ -0,0 +1 @@
+8a964ff06f8f3ce67a0e5e13029a4316e17731a8
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_DEPRECATED_APPS_CONTENT.png.sha1 b/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_DEPRECATED_APPS_CONTENT.png.sha1
index 204e0f04..10790c7b 100644
--- a/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_DEPRECATED_APPS_CONTENT.png.sha1
+++ b/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_DEPRECATED_APPS_CONTENT.png.sha1
@@ -1 +1 @@
-69621246a4875aff9ab7a1d0d9528316415fe560
\ No newline at end of file
+0beafb213eafd8a58fd41a4bbd830a216cc85cbe
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_DEPRECATED_APPS_LEARN_MORE_AX_LABEL.png.sha1 b/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_DEPRECATED_APPS_LEARN_MORE_AX_LABEL.png.sha1
deleted file mode 100644
index 8ec600b..0000000
--- a/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_DEPRECATED_APPS_LEARN_MORE_AX_LABEL.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-767a804ffadd4122174e17e900980fc7eb77f42b
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_PREINSTALLED_DEPRECATED_APPS_CONTENT.png.sha1 b/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_PREINSTALLED_DEPRECATED_APPS_CONTENT.png.sha1
deleted file mode 100644
index 34a2322..0000000
--- a/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_PREINSTALLED_DEPRECATED_APPS_CONTENT.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-cc0483851ef3f43bde9de8ffaae445e13f21402d
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_PREINSTALLED_DEPRECATED_APPS_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_PREINSTALLED_DEPRECATED_APPS_TITLE.png.sha1
deleted file mode 100644
index 34a2322..0000000
--- a/chrome/app/generated_resources_grd/IDS_FORCE_INSTALLED_PREINSTALLED_DEPRECATED_APPS_TITLE.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-cc0483851ef3f43bde9de8ffaae445e13f21402d
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_es-419.xtb b/chrome/app/resources/chromium_strings_es-419.xtb
index 3866100..708222f 100644
--- a/chrome/app/resources/chromium_strings_es-419.xtb
+++ b/chrome/app/resources/chromium_strings_es-419.xtb
@@ -306,7 +306,7 @@
 <translation id="7975919845073681630">Como esta es una instalación secundaria de Chromium, no puede establecerse como tu navegador predeterminado.</translation>
 <translation id="7982481011030453202">Si no ves una opción de configuración en esta página, consulta la <ph name="LINK_BEGIN" />
       configuración de Chromium OS<ph name="LINK_END" /></translation>
-<translation id="7997934263947464652">Extensiones, apps y temas de fuentes desconocidas que pueden dañar tu dispositivo. Chrome recomienda instalarlas únicamente desde <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation>
+<translation id="7997934263947464652">Las extensiones, apps y temas de fuentes desconocidas pueden dañar tu dispositivo. Chromium recomienda instalarlas únicamente desde <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation>
 <translation id="8013436988911883588">Una vez que Chromium tenga acceso, los sitios web podrán solicitarte acceso.</translation>
 <translation id="80471789339884597">Gracias por instalar <ph name="BUNDLE_NAME" />. Debes reiniciar todos los navegadores antes de usarlo.</translation>
 <translation id="8105840573057009683">Chromium necesita permiso de acceso a la ubicación para este sitio.</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb
index 594ce66..7e8ebb1 100644
--- a/chrome/app/resources/generated_resources_af.xtb
+++ b/chrome/app/resources/generated_resources_af.xtb
@@ -182,6 +182,7 @@
 <translation id="1166583374608765787">Gaan naamopdatering na</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> behoort aan lessenaar <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">Maak oop oor <ph name="TIME_REMAINING" /> …</translation>
+<translation id="1169266963600477608">Speletjiekontroles</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> het sensitiewe of gevaarlike data. Jou administrateur sê: "<ph name="CUSTOM_MESSAGE" />"</translation>
 <translation id="1171135284592304528">Lig die voorwerp met sleutelbordfokus uit wanneer dit verander</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> wil aan 'n HID-toestel koppel</translation>
@@ -1425,7 +1426,6 @@
     As jy later besluit dat Voice Match nie reg is vir jou kind nie, kan jy dit eenvoudig in hul Assistent-instellings verwyder. Gaan na <ph name="VOICE_MATCH_SETTINGS_URL" /> vanuit jou kind se rekening om die oudiosnitte wat jou kind tydens Voice Match-opstelling opneem, te bekyk of uit te vee.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Deursoek 'n deel van die bladsy met <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Hierdie werf is gekeer om toegang tot jou beweging- en ligsensors te kry.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Bladsy-URL</translation>
@@ -2049,7 +2049,6 @@
 <translation id="289695669188700754">Sleutel-ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Hierdie gepasmaakte instelling sal verwyder word wanneer jy al jou Incognito-vensters toemaak</translation>
 <translation id="2897878306272793870">Is jy seker jy wil <ph name="TAB_COUNT" /> oortjies oopmaak?</translation>
-<translation id="2900477968385519153">Soek op jou skerm met <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Lêer gebruik ongesteunde kenmerke</translation>
 <translation id="2901348420151309559">Onlangse foto's en programme</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> kon nie met hierdie drukker kommunikeer nie. Maak seker dat die drukker ingeprop is en probeer weer.</translation>
@@ -2922,7 +2921,6 @@
 <translation id="3778740492972734840">Ontwikkelaarnutsgoed</translation>
 <translation id="3778868487658107119">Vra dit vrae. Sê dit aan om dinge te doen. Dis jou eie persoonlike Google en dis altyd gereed om te help.</translation>
 <translation id="3781742599892759500">Linux-mikrofoontoegang</translation>
-<translation id="378312418865624974">Lees 'n unieke identifiseerder vir hierdie rekenaar</translation>
 <translation id="3784472333786002075">Webkoekies is lêers wat deur webwerwe geskep word. Daar is twee soorte webkoekies: Eersteparty-webkoekies word geskep deur die werf wat jy besoek. Die werf word in die adresbalk gewys. Derdeparty-webkoekies word deur ander werwe geskep. Hierdie werwe besit van die inhoud, soos advertensies of prente, wat jy sien op die webwerf wat jy besoek.</translation>
 <translation id="3785308913036335955">Wys programkortpad</translation>
 <translation id="3785727820640310185">Gestoorde wagwoorde vir hierde werf</translation>
@@ -3381,6 +3379,7 @@
 <translation id="4227605727325220318">Voeg 'n nuwe Android-foon by</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Hierdie uitbreiding word nie toegelaat nie}other{Sommige uitbreidings word nie toegelaat nie}}</translation>
 <translation id="4231095370974836764">Installeer programme en speletjies van Google Play af op jou <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Kom meer te wete<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Maak speletjiekontroles toe</translation>
 <translation id="4232375817808480934">Stel Kerberos op</translation>
 <translation id="4235965441080806197">Kanselleer aanmelding</translation>
 <translation id="4236163961381003811">Ontdek meer uitbreidings</translation>
@@ -3575,7 +3574,6 @@
 <translation id="4415748029120993980">SECG-elliptiesekurwe-secp384r1 (ook bekend as NIST P-384)</translation>
 <translation id="4416450511678320850">Geen programme vir hierdie inhoud beskikbaar nie</translation>
 <translation id="4416582610654027550">Voer 'n geldige URL in</translation>
-<translation id="4417162649853416189">Sleep oor prente om met <ph name="VISUAL_SEARCH_PROVIDER" /> te soek</translation>
 <translation id="4419409365248380979">Laat <ph name="HOST" /> altyd toe om webkoekies te stel</translation>
 <translation id="4421932782753506458">Wollerig</translation>
 <translation id="4423376891418188461">Stel instellings terug</translation>
@@ -3714,7 +3712,6 @@
 <translation id="4550926046134589611">Sommige gesteunde skakels sal steeds in <ph name="APP_NAME" /> oopmaak.</translation>
 <translation id="4551763574344810652">Druk <ph name="MODIFIER_KEY_DESCRIPTION" /> om te ontdoen</translation>
 <translation id="4553526521109675518">Jy moet jou Chromebook herbegin om die toesteltaal te verander. <ph name="BEGIN_LINK_LEARN_MORE" />Kom meer te wete<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Sleep oor prente om met <ph name="VISUAL_SEARCH_PROVIDER" /> te soek</translation>
 <translation id="4554591392113183336">Eksterne uitbreiding is op dieselfde of 'n laer weergawe vergeleke met die bestaande een.</translation>
 <translation id="4555769855065597957">Skadu</translation>
 <translation id="4555863373929230635">Meld aan en skakel sinkronisering aan om wagwoorde in jou Google-rekening te stoor.</translation>
@@ -4565,7 +4562,6 @@
 <translation id="5427459444770871191">Draai kloksgewys</translation>
 <translation id="542750953150239272">As jy voortgaan, stem jy in dat hierdie toestel ook outomaties opdaterings en programme vanaf Google, jou diensverskaffer en jou toestel se vervaardiger kan aflaai en installeer, moontlik met gebruik van sellulêre data. Sommige van hierdie programme sal dalk inprogramaankope aanbied.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Opdatering is beskikbaar)</translation>
-<translation id="5429373054983029602">Soek op jou skerm met <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">'n Opdatering van die Trusted Platform Module-fermware moet geïnstalleer word. Sien <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Kitsverbinding</translation>
 <translation id="5431318178759467895">Kleur</translation>
@@ -4638,7 +4634,6 @@
 <translation id="5494920125229734069">Kies almal</translation>
 <translation id="5495466433285976480">Dit sal alle plaaslike gebruikers, lêers, data en ander instellings verwyder ná jou volgende herbegin. Alle gebruikers moet weer aanmeld.</translation>
 <translation id="5495597166260341369">Hou skerm aan</translation>
-<translation id="549580971452855947">Sleep om prente met <ph name="VISUAL_SEARCH_PROVIDER" /> te deursoek</translation>
 <translation id="5496587651328244253">Rangskik</translation>
 <translation id="5496730470963166430">Mag nie opspringers stuur of herleidings gebruik nie</translation>
 <translation id="5497251278400702716">Hierdie lêer</translation>
@@ -5750,7 +5745,6 @@
 Jy het nog # gekompromitteerde wagwoord. Google Wagwoordbestuurder beveel aan dat jy hierdie wagwoord nou nagaan.}other{Die gekompromitteerde wagwoord is suksesvol verander.
 
 Jy het nog # gekompromitteerde wagwoorde. Google Wagwoordbestuurder beveel aan dat jy hierdie wagwoorde nou nagaan.}}</translation>
-<translation id="6595792813574514527">Sleep om prente met <ph name="VISUAL_SEARCH_PROVIDER" /> te deursoek</translation>
 <translation id="6596325263575161958">Enkripsie-opsies</translation>
 <translation id="6596816719288285829">IP-adres</translation>
 <translation id="6597017209724497268">Voorbeelde</translation>
@@ -7370,7 +7364,6 @@
 <translation id="8184318863960255706">Meer inligting</translation>
 <translation id="8184472985242519288">Eenvormig</translation>
 <translation id="8186609076106987817">Die bediener kon nie die lêer vind nie.</translation>
-<translation id="8186704951085064172">Deursoek 'n deel van die bladsy met <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Gaan jou toestelinstellings na en skakel dit aan om voort te gaan</translation>
 <translation id="8188742492803591566">Voer die toegangskode in wat op die Chromecast of TV gewys word om na jou skerm te begin uitsaai</translation>
 <translation id="8189306097519446565">Skoolrekeninge</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index d72daa8..19c08ba 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -1419,7 +1419,6 @@
     በኋላ ላይ Voice Match ለልጅዎ ትክክል አለመሆኑን ከወሰኑ በቀላሉ በረዳታቸው ቅንብሮች ውስጥ ያስወግዱት። Voice Matchን በሚያዋቅሩበት ጊዜ ልጅዎ የቀዱትን የኦዲዮ ቅንጥቦች ለመመልከት ወይም ለመሰረዝ ከልጅዎ መለያ ሆነው ወደ <ph name="VOICE_MATCH_SETTINGS_URL" /> ይሂዱ።
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">የገጹን ክፍል በ<ph name="VISUAL_SEARCH_PROVIDER" /> አማካኝነት ይፈልጉ</translation>
 <translation id="2309620859903500144">ይህ ጣቢያ የእርስዎን እንቅስቃሴ ወይም የብርሃን ዳሳሾችን እንዳይደርስ አግዷል።</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">የገጽ ዩ.አር.ኤል.</translation>
@@ -2043,7 +2042,6 @@
 <translation id="289695669188700754">ቁልፍ መታወቂያ፦ <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">ሁሉንም ማንነት የማያሳውቁ መስኮቶችዎን ሲዘጉ ይህ ብጁ ቅንብር ይወገዳል</translation>
 <translation id="2897878306272793870">እርግጠኛ ነዎት <ph name="TAB_COUNT" /> ትሮችን መክፈት ይፈልጋሉ?</translation>
-<translation id="2900477968385519153">የእርስዎን ማያ ገጽ በ<ph name="VISUAL_SEARCH_PROVIDER" /> አማካኝነት ይፈልጉ</translation>
 <translation id="290105521672621980">ፋይሉ ያልተደገፉ ባህሪያትን ይጠቀማል</translation>
 <translation id="2901348420151309559">የቅርብ ጊዜ ፎቶዎች እና መተግበሪያዎች</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ከአታሚ ጋር ሊግባባ አልቻለም። አታሚው መሰካቱን ያረጋግጡና እንደገና ይሞክሩ።</translation>
@@ -2916,7 +2914,6 @@
 <translation id="3778740492972734840">&amp;የዴቬሎፐር መሳሪያዎች</translation>
 <translation id="3778868487658107119">ጥያቄዎችን ይጠይቁት። ነገሮችን እንዲያደርግ ይንገሩት። ሁልጊዜ ለማገዝ ዝግጁ የሆነ የእርስዎ የግል Google ነው።</translation>
 <translation id="3781742599892759500">የLinux ማይክሮፎን መዳረሻ</translation>
-<translation id="378312418865624974">የዚህ ኮምፒውተር ልዩ መለያውን ያነብባል</translation>
 <translation id="3784472333786002075">ኩኪዎች በድርጣቢያዎች የተፈጠሩ ፋይሎች ናቸው። ሁለት ዓይነት ኩኪዎች አሉ፦ የመጀመሪያ ወገን ኩኪዎች እርስዎ በሚጎበኙት ጣቢያ የሚፈጠሩ ናቸው። ይህ ጣቢያ በአድራሻ አሞሌው ላይ ይታያል። የሦስተኛ ወገን ኩኪዎች በሌሎች ጣቢያዎች የሚፈጠሩ ናቸው። እነዚህ ጣቢያዎች እንደ ማስታወቂያዎች ወይም ምስሎች የመሳሰሉ እርስዎ በሚጎበኙት ጣቢያ ላይ ያለ ይዘትን በባለቤትነት የያዙ ናቸው።</translation>
 <translation id="3785308913036335955">የመተግበሪያዎች አቋራጮችን አሳይ</translation>
 <translation id="3785727820640310185">የተቀመጡ የዚህ ጣቢያ የይለፍ ቃላት</translation>
@@ -3567,7 +3564,6 @@
 <translation id="4415748029120993980">የSECG ሞላላ ጥምዝ secp384r1 (እንዲሁም NIST P-384 በመባል የሚታወቅ)</translation>
 <translation id="4416450511678320850">ለዚህ ይዘት ምንም መተግበሪያዎች አይገኘም</translation>
 <translation id="4416582610654027550">የሚሠራ ዩአርኤል ይተይቡ</translation>
-<translation id="4417162649853416189">በ<ph name="VISUAL_SEARCH_PROVIDER" /> አማካኝነት ለመፈለግ በምስሎች ላይ ይጎትቱ</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> ኩኪዎችን እንዲያስቀምጥ ሁልጊዜ ይፍቀዱ</translation>
 <translation id="4421932782753506458">ለስላሳ</translation>
 <translation id="4423376891418188461">ቅንብሮችን ወደነበሩበት መልስ</translation>
@@ -3705,7 +3701,6 @@
 <translation id="4550926046134589611">አንዳንድ የሚደገፉ አገናኞች አሁንም በ<ph name="APP_NAME" /> ውስጥ ይከፈታሉ።</translation>
 <translation id="4551763574344810652">ለመቀልበስ <ph name="MODIFIER_KEY_DESCRIPTION" />ን ይጫኑ</translation>
 <translation id="4553526521109675518">የመሣሪያውን ቋንቋ ለመቀየር የእርስዎን Chromebook እንደገና ማስጀመር ይኖርብዎታል። <ph name="BEGIN_LINK_LEARN_MORE" />የበለጠ ለመረዳት<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">በ<ph name="VISUAL_SEARCH_PROVIDER" /> አማካኝነት ለመፈለግ በምስሎች ላይ ይጎትቱ</translation>
 <translation id="4554591392113183336">ውጫዊ ቅጥያው ከነባሩ ጋር ተመሳሳይ ወይም ያነሰ ስሪት ነው።</translation>
 <translation id="4555769855065597957">ጥላ</translation>
 <translation id="4555863373929230635">የይለፍ ቃላትን በGoogle መለያዎ ላይ ለማስቀመጥ በመለያ ይግቡና ስምረትን ያብሩ።</translation>
@@ -4556,7 +4551,6 @@
 <translation id="5427459444770871191">በ&amp;ሰዓት መዞሪያ አቅጣጫ አሽከርክር</translation>
 <translation id="542750953150239272">በመቀጠልዎ ይህ መሣሪያ በተጨማሪም በራስ-ሰር ዝማኔዎችን እና መተግበሪያዎች ከGoogle፣ ከአገልግሎት አቅራቢዎ እና ከመሣሪያዎ አምራች፣ ምናልባትም ተንቀሳቃሽ ስልክ ውሂብን በመጠቀም፣ ሊያወርድ እና ሊጭን እንደሚችል መስማማትዎን ያረጋግጣሉ። ከእነዚህ መተግበሪያዎች ውስጥ አንዳንዶቹ የውስጠ-መተግበሪያ ግዢዎችን ሊያቀርቡ ይችላሉ።</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (ዝማኔ ይገኛል)</translation>
-<translation id="5429373054983029602">የእርስዎን ማያ ገጽ በ<ph name="VISUAL_SEARCH_PROVIDER" /> አማካኝነት ይፈልጉ</translation>
 <translation id="542948651837270806">የታመኑ የመሣሪያ ስርዓት ሞዱል ፊርምዌር ዝማኔ መጫን አለበት። <ph name="TPM_FIRMWARE_UPDATE_LINK" />ን ይመልከቱ</translation>
 <translation id="5430931332414098647">ቅጽበታዊ እንደ ሞደም መሰካት</translation>
 <translation id="5431318178759467895">ቀለም</translation>
@@ -4629,7 +4623,6 @@
 <translation id="5494920125229734069">ሁሉንም ይመርጣል</translation>
 <translation id="5495466433285976480">ይሄ ዳግም ከአስጀመሩ በኋላ ሁሉንም አካባቢያዊ ተጠቃሚዎችን፣ ፋይሎችን፣ ውሂብ እና ሌሎች ቅንብሮችን ያስወግዳል። ሁሉም ተጠቃሚዎች እንደገና መግባት ይኖርባቸዋል።</translation>
 <translation id="5495597166260341369">ማሳያን እንደበራ አቆይ</translation>
-<translation id="549580971452855947">በ<ph name="VISUAL_SEARCH_PROVIDER" /> አማካኝነት ምስሎችን ለመፈለግ ይጎትቱ</translation>
 <translation id="5496587651328244253">አደራጅ</translation>
 <translation id="5496730470963166430">ብቅ-ባዮችን ለመላክ ወይም አቅጣጫ ማዞሪያዎችን ለመጠቀም አልተፈቀደም</translation>
 <translation id="5497251278400702716">ይህን ፋይል</translation>
@@ -5742,7 +5735,6 @@
 # ተጨማሪ የተጠለፉ የይለፍ ቃላት አሉዎት። Google የይለፍ ቃል አስተዳዳሪ እነዚህን የይለፍ ቃላት አሁን እንዲፈትሹ ይመክራል።}other{የተጠለፈው የይለፍ ቃል በተሳካ ሁኔታ ተቀይሯል።
 
 # ተጨማሪ የተጠለፉ የይለፍ ቃላት አሉዎት። Google የይለፍ ቃል አስተዳዳሪ እነዚህን የይለፍ ቃላት አሁን እንዲፈትሹ ይመክራል።}}</translation>
-<translation id="6595792813574514527">በ<ph name="VISUAL_SEARCH_PROVIDER" /> አማካኝነት ምስሎችን ለመፈለግ ይጎትቱ</translation>
 <translation id="6596325263575161958">የምስጠራ አማራጮች</translation>
 <translation id="6596816719288285829">IP አድራሻ</translation>
 <translation id="6597017209724497268">ናሙናዎች</translation>
@@ -7368,7 +7360,6 @@
 <translation id="8184318863960255706">ተጨማሪ መረጃ</translation>
 <translation id="8184472985242519288">ወጥ የሆነ</translation>
 <translation id="8186609076106987817">አገልጋዩ ፋይሉን ሊያገኝ አልቻለም።</translation>
-<translation id="8186704951085064172">የገጹን ክፍል በ<ph name="VISUAL_SEARCH_PROVIDER" /> አማካኝነት ይፈልጉ</translation>
 <translation id="8188389033983459049">የመሣሪያዎን ቅንብሮችዎ ይፈትሹና ለመቀጠል ያብሩት</translation>
 <translation id="8188742492803591566">ማያ ገጽዎን cast ማድረግ ለመጀመር በChromecast ወይም ቲቪ ላይ የሚታየውን የመዳረሻ ኮድ ያስገቡ።</translation>
 <translation id="8189306097519446565">የትምህርት ቤት መለያዎች</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index d4bca7b..812f4ce 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -1413,7 +1413,6 @@
     إذا قرّرت لاحقًا عدم استخدام ميزة Voice Match لأنها غير مناسبة لطفلك، ما عليك سوى إيقافها من خلال إعدادات "مساعد Google" على أجهزة طفلك. ولعرض أو حذف المقاطع الصوتية التي يسجّلها طفلك أثناء إعداد ميزة Voice Match، انتقِل إلى <ph name="VOICE_MATCH_SETTINGS_URL" /> من حساب طفلك.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">البحث في جزء من الصفحة باستخدام "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="2309620859903500144">تم حظر هذا الموقع من الوصول إلى أجهزة استشعار الإضاءة أو الحركة.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">‏عنوان URL للصفحة</translation>
@@ -2038,7 +2037,6 @@
 <translation id="289695669188700754">معرّف المفتاح: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">ستتم إزالة هذا الإعداد المخصّص عند إغلاق جميع نوافذ التصفّح المتخفي.</translation>
 <translation id="2897878306272793870">هل تريد فعلًا فتح هذا العدد من علامات التبويب<ph name="TAB_COUNT" />؟</translation>
-<translation id="2900477968385519153">البحث عن محتوى شاشتك باستخدام "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="290105521672621980">يستخدم الملف ميزات غير معتمدة</translation>
 <translation id="2901348420151309559">الصور والتطبيقات الحديثة</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> يتعذر الاتصال بهذه الطابعة. تأكد من توصيل الطابعة، ثم أعد المحاولة.</translation>
@@ -2912,7 +2910,6 @@
 <translation id="3778740492972734840">أ&amp;دوات مطوري البرامج</translation>
 <translation id="3778868487658107119">‏يمكنك طرح الأسئلة، وطلب تنفيذ المهام. إنه مساعدك الشخصي من Google، وهو على استعداد كامل لتقديم المساعدة.</translation>
 <translation id="3781742599892759500">‏الوصول إلى ميكروفون نظام التشغيل Linux</translation>
-<translation id="378312418865624974">الاطّلاع على معرّف فريد لهذا الكمبيوتر</translation>
 <translation id="3784472333786002075">ملفات تعريف الارتباط هي ملفات تُنشئها المواقع الإلكترونية. ثمة نوعان من ملفات تعريف الارتباط. الأول هو ملفات تعريف الارتباط للطرف الأول التي يُنشئها الموقع الإلكتروني الذي تزوره. ويتم عرض الموقع الإلكتروني في شريط العناوين. والنوع الثاني هو ملفات تعريف الارتباط التابعة لجهات خارجية وتُنشئها مواقع إلكترونية أخرى. وتمتلك هذه المواقع الإلكترونية بعضًا من المحتوى الذي تراه على الموقع الذي تزوره، مثل الإعلانات أو الصور.</translation>
 <translation id="3785308913036335955">إظهار اختصار التطبيقات</translation>
 <translation id="3785727820640310185">كلمات المرور المحفوظة لهذا الموقع</translation>
@@ -3562,7 +3559,6 @@
 <translation id="4415748029120993980">‏منحنى SECG ناقص المقطع secp384r1‏ (aka NIST P-384)</translation>
 <translation id="4416450511678320850">لا تتوفّر تطبيقات لهذا المحتوى</translation>
 <translation id="4416582610654027550">‏يُرجى كتابة عنوان URL صالح</translation>
-<translation id="4417162649853416189">سحب الماوس فوق الصور للبحث عنها باستخدام "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="4419409365248380979">السماح للموقع <ph name="HOST" /> بتعيين ملفات تعريف الارتباط دومًا</translation>
 <translation id="4421932782753506458">الانتفاش</translation>
 <translation id="4423376891418188461">استعادة الإعدادات</translation>
@@ -3700,7 +3696,6 @@
 <translation id="4550926046134589611">ستظل بعض الروابط المتوافقة مفتوحة في تطبيق <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">اضغط على <ph name="MODIFIER_KEY_DESCRIPTION" /> للتراجع</translation>
 <translation id="4553526521109675518">‏عليك إعادة تشغيل جهاز Chromebook لتغيير لغة الجهاز. <ph name="BEGIN_LINK_LEARN_MORE" />مزيد من المعلومات<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">سحب الماوس فوق الصور للبحث عنها باستخدام "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="4554591392113183336">الإضافة الخارجية في نفس الإصدار أو إصدار أقل مقارنة بالموجودة حاليًا.</translation>
 <translation id="4555769855065597957">ظل</translation>
 <translation id="4555863373929230635">‏لحفظ كلمات المرور في حسابك على Google، عليك تسجيل الدخول وتفعيل المزامنة.</translation>
@@ -4551,7 +4546,6 @@
 <translation id="5427459444770871191">تدوير &amp;في اتجاه عقارب الساعة</translation>
 <translation id="542750953150239272">‏تعني متابعتك أنّك توافق على منح هذا الجهاز إذنًا بتنزيل التحديثات والتطبيقات وتثبيتها تلقائيًا من Google ومشغّل شبكة الجوّال والشركة المصنّعة لجهازك، مع احتمالية استخدام بيانات شبكة الجوّال. قد تتيح بعض هذه التطبيقات عمليات شراء داخل التطبيق.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (هناك تحديث متاح)</translation>
-<translation id="5429373054983029602">البحث عن محتوى شاشتك باستخدام "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="542948651837270806">يجب تثبيت الإصدار المُحدَّث من البرامج الثابتة لوحدة للنظام الأساسي الموثوق به. الاطّلاع على <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">التوصيل الفوري</translation>
 <translation id="5431318178759467895">بالألوان</translation>
@@ -4624,7 +4618,6 @@
 <translation id="5494920125229734069">اختيار الكل</translation>
 <translation id="5495466433285976480">سيؤدي ذلك إلى إزالة جميع المستخدمين والملفات والبيانات والإعدادات الأخرى على المستوى المحلي بعد عملية إعادة التشغيل. وسيحتاج جميع المستخدمين إلى تسجيل الدخول من جديد.</translation>
 <translation id="5495597166260341369">استمرار تشغيل الشاشة</translation>
-<translation id="549580971452855947">سحب الماوس للبحث عن الصور باستخدام "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="5496587651328244253">تنظيم</translation>
 <translation id="5496730470963166430">المواقع الإلكترونية التي لا يُسمح لها بإرسال النوافذ المنبثقة أو استخدام عمليات إعادة التوجيه</translation>
 <translation id="5497251278400702716">هذا الملف</translation>
@@ -5743,7 +5736,6 @@
 لديك # كلمة مرور أخرى يُحتمَل تعرّضها للاختراق. ينصح "مدير كلمات المرور في Google" بالتحقّق من كلمات المرور هذه الآن.}other{‏تمّ بنجاح تغيير كلمة المرور المحتمَل تعرّضها للاختراق.
 
 لديك # كلمة مرور أخرى يُحتمَل تعرّضها للاختراق. ينصح "مدير كلمات المرور في Google" بالتحقّق من كلمات المرور هذه الآن.}}</translation>
-<translation id="6595792813574514527">سحب الماوس للبحث عن الصور باستخدام "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="6596325263575161958">خيارات التشفير</translation>
 <translation id="6596816719288285829">‏عنوان IP</translation>
 <translation id="6597017209724497268">نماذج</translation>
@@ -7365,7 +7357,6 @@
 <translation id="8184318863960255706">مزيد من المعلومات</translation>
 <translation id="8184472985242519288">مُوحَّدة</translation>
 <translation id="8186609076106987817">تعذر على الخادم العثور على الملف.</translation>
-<translation id="8186704951085064172">البحث في جزء من الصفحة باستخدام "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="8188389033983459049">التحقُّق من إعدادات جهازك وتفعيلها للاستمرار</translation>
 <translation id="8188742492803591566">‏عليك إدخال رمز الدخول المعروض على جهاز Chromecast أو التلفزيون لبدء بث محتوى شاشتك.</translation>
 <translation id="8189306097519446565">حسابات المؤسسات التعليمية</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb
index b081669..67341df7 100644
--- a/chrome/app/resources/generated_resources_as.xtb
+++ b/chrome/app/resources/generated_resources_as.xtb
@@ -203,6 +203,7 @@
 <translation id="1188807932851744811">লগ আপল’ড কৰা হোৱা নাই।</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{আপোনাৰ কম্পিউটাৰত ষ্ট’ৰ কৰি এটা কোনো ফাইল এক্সেছ কৰক}one{আপোনাৰ কম্পিউটাৰত ষ্ট’ৰ কৰি ৰখা #টা ফাইল এক্সেছ কৰক}other{আপোনাৰ কম্পিউটাৰত ষ্ট’ৰ কৰি ৰখা #টা ফাইল এক্সেছ কৰক}}</translation>
 <translation id="119092896208640858">আপোনাৰ Google একাউণ্টত ব্ৰাউজিং ডেটা ৰাখি কেৱল এই ডিভাইচৰ পৰা সেই ডেটা মচিবলৈ <ph name="BEGIN_LINK" />ছাইন আউট কৰক<ph name="END_LINK" />।</translation>
+<translation id="1191353342579061195">আপোনাৰ প্ৰয়োজনীয়তা পূৰণ কৰা থীমটো বাছনি কৰক। আপোনাৰ থীম, ৱালপেপাৰ, স্ক্ৰীন ছেভাৰ আৰু অধিক সলনি কৰিবলৈ, মাত্ৰ ডেস্কটপত ৰাইট-ক্লিক কৰক।</translation>
 <translation id="1192706927100816598">{0,plural, =1{আপোনাক স্বয়ংক্ৰিয়ভাৱে # ছেকেণ্ডত ছাইন আউট কৰা হ’ব।
 <ph name="DOMAIN" />ৰ বাবে আপুনি নিজৰ স্মাৰ্ট কাৰ্ডখন ভৰাই ৰখাৰ আৱশ্যক।}one{আপোনাক স্বয়ংক্ৰিয়ভাৱে # ছেকেণ্ডত ছাইন আউট কৰা হ’ব।
 <ph name="DOMAIN" />ৰ বাবে আপুনি নিজৰ স্মাৰ্ট কাৰ্ডখন ভৰাই ৰখাৰ আৱশ্যক।}other{আপোনাক স্বয়ংক্ৰিয়ভাৱে # ছেকেণ্ডত ছাইন আউট কৰা হ’ব।
@@ -1302,6 +1303,7 @@
 <translation id="2220409419896228519">আপোনাৰ প্ৰিয় Google Appsত বুকমাৰ্ক যোগ কৰক</translation>
 <translation id="2220529011494928058">কোনো সমস্যাৰ অভিযোগ দিয়ক</translation>
 <translation id="2220572644011485463">পিন বা পাছৱৰ্ড</translation>
+<translation id="222115440608612541">সূৰ্যোদয় আৰু সূৰ্যাস্তৰ সময়ত থীম সলনি কৰক</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">নামবিহীন মিডিয়াৰ উৎস</translation>
 <translation id="2224444042887712269">এই ছেটিংটোৰ গৰাকী হৈছে <ph name="OWNER_EMAIL" />।</translation>
@@ -1423,7 +1425,6 @@
     যদি পাছত আপুনি সিদ্ধান্ত লয় যে Voice Matchৰ সুবিধাটো আপোনাৰ শিশুটিৰ বাবে সঠিক নহয়, তেন্তে তেওঁৰ Assistantৰ ছেটিঙৰ পৰা ইয়াক সাধাৰণভাৱে আঁতৰাই পেলাওক। Voice Match ছেটআপ কৰাৰ সময়ত আপোনাৰ শিশুৱে ৰেকৰ্ড কৰা অডিঅ’ ক্লিপসমূহ চাবলৈ অথবা মচিবলৈ, আপোনাৰ শিশুৰ একাউণ্টৰ পৰা <ph name="VOICE_MATCH_SETTINGS_URL" />লৈ যাওক।
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" />ৰ জৰিয়তে পৃষ্ঠাখনৰ কোনো অংশ সন্ধান কৰক</translation>
 <translation id="2309620859903500144">এই ছাইটটোৰ আপোনাৰ গতি বা পোহৰ ধৰা পেলাব পৰা ছেন্সৰসমূহলৈ এক্সেছ অৱৰোধ কৰি ৰখা হৈছে।</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">পৃষ্ঠাৰ URL</translation>
@@ -1531,6 +1532,7 @@
 <translation id="241082044617551207">অজ্ঞাত প্লাগইন</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">কীব’ৰ্ডৰ ফাংশ্বন কী</translation>
+<translation id="2418307627282545839">বস্তুবোৰ উজ্জ্বল আৰু বায়ুপূৰ্ণকৈ ৰাখক</translation>
 <translation id="2419131370336513030">ইনষ্টল হৈ থকা এপ্‌সমূহ চাওক</translation>
 <translation id="2419706071571366386">আপোনাৰ কম্পিউটাৰটো যেতিয়া ব্যৱহাৰ হৈ নাথাকে তেতিয়া সুৰক্ষাৰ বাবে ছাইন আউট কৰক।</translation>
 <translation id="2422125132043002186">Linux পুনঃস্থাপন কৰাটো বাতিল কৰা হ’ল</translation>
@@ -2046,7 +2048,6 @@
 <translation id="289695669188700754">চাবিৰ আইডি: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">আপুনি আটাইবোৰ ইনক'গনিট' ৱিণ্ড' বন্ধ কৰিলে এইটো কাষ্টম ছেটিং আঁতৰোৱা হ'ব</translation>
 <translation id="2897878306272793870">আপুনি <ph name="TAB_COUNT" />টা টেব খুলিবলৈ বিচাৰে বুলি নিশ্চিতনে?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" />ৰ জৰিয়তে আপোনাৰ স্ক্ৰীনখন সন্ধান কৰক</translation>
 <translation id="290105521672621980">ফাইলত অসমৰ্থিত সুবিধা ব্যৱহাৰ কৰা হৈছে</translation>
 <translation id="2901348420151309559">শেহতীয়া ফট’ আৰু এপ্‌সমূহ</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" />এ নিজৰ প্ৰিণ্টাৰৰ সৈতে সম্পর্ক কৰিব নোৱাৰিলে। প্ৰিণ্টাৰটো প্লাগইন হৈ থকাটো নিশ্চিত কৰি পুনৰ চেষ্টা কৰক।</translation>
@@ -2919,7 +2920,6 @@
 <translation id="3778740492972734840">&amp;বিকাশকর্তাৰ সঁজুলি</translation>
 <translation id="3778868487658107119">ইয়াক প্ৰশ্ন সোধক। ইয়াক কাম কৰিবলৈ কওক। এয়া আপোনাৰ ব্যক্তিগত Google, যি সদায় আপোনাক সহায় কৰিবলৈ সাজু থাকে।</translation>
 <translation id="3781742599892759500">Linuxৰ মাইক্ৰ’ফ’নৰ এক্সেছ</translation>
-<translation id="378312418865624974">এই কম্পিউটাৰটোৰ অদ্বিতীয় পৰিচায়কটো পঢ়িব পাৰে</translation>
 <translation id="3784472333786002075">কুকীবোৰ হৈছে ৱেবছাইটসমূহে সৃষ্টি কৰা ফাইল। দুই ধৰণৰ কুকী থাকে: প্ৰথম পক্ষৰ কুকীসমূহ আপুনি চোৱা ছাইটটোৱে সৃষ্টি কৰে। ছাইটটো ঠিকনাৰ বাৰডালত দেখুওৱা হয়। তৃতীয় পক্ষৰ কুকীসমূহ অন্য ছাইটসমূহে সৃষ্টি কৰে। এই ছাইটসমূহ আপুনি চোৱা ৱেবছাইটটোত দেখা পোৱা বিজ্ঞাপন অথবা প্ৰতিচ্ছবিবোৰৰ দৰে কিছুমান সমলৰ গৰাকী।</translation>
 <translation id="3785308913036335955">এপৰ শ্বৰ্টকাট দেখুৱাওক</translation>
 <translation id="3785727820640310185">এই ছাইটটোৰ বাবে ছেভ কৰি থোৱা পাছৱৰ্ড</translation>
@@ -3571,7 +3571,6 @@
 <translation id="4415748029120993980">SECG উপবৃত্তাকাৰ লেখ secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">এই সমলটোৰ বাবে কোনো এপ্ উপলব্ধ নহয়</translation>
 <translation id="4416582610654027550">কোনো মান্য URL টাইপ কৰক</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" />ৰ জৰিয়তে সন্ধান কৰিবলৈ প্ৰতিচ্ছবিসমূহৰ ওপৰেৰে আনক</translation>
 <translation id="4419409365248380979">সদায় <ph name="HOST" />ক কুকিসমূহ ছেট কৰিবলৈ অনুমতি দিয়ক</translation>
 <translation id="4421932782753506458">নোমাল</translation>
 <translation id="4423376891418188461">ছেটিংসমূহ পুনঃস্থাপন কৰক</translation>
@@ -3642,6 +3641,7 @@
 <translation id="449232563137139956">ছাইটসমূহে সচৰাচৰ সবিশেষ বৰ্ণনা দিবলৈ প্ৰতিচ্ছবিসমূহ দেখুৱায়, যেনে অনলাইন ষ্ট'ৰ অথবা বাতৰিৰ প্ৰবন্ধসমূহ বাবে ফট'</translation>
 <translation id="4492698018379445570">আপুনি শ্বপিঙৰ কাৰ্টত কি যোগ দিছে সেয়া বিচাৰক আৰু আপুনি সাজু হ'লে চেক আউট কৰক</translation>
 <translation id="4493468155686877504">চুপাৰিছ কৰা (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">এই এক্সটেনশ্বনটো <ph name="SITE" />ত চলোৱাৰ অনুমতি দিবনে?</translation>
 <translation id="4495419450179050807">এই পৃষ্ঠাটোত নেদেখুৱাব</translation>
 <translation id="4497145443434063861">PC আৰু Chromecast দুয়োটা ভিন্ন ৱাই-ফাইল নেটৱৰ্ক (যেনে, ২.৪ গিগাহাৰ্টজ
     বনাম ৫ গিগাহাৰ্টজ) আছে</translation>
@@ -3710,7 +3710,6 @@
 <translation id="4550926046134589611"><ph name="APP_NAME" />ত কিছুমান সমৰ্থিত লিংক তথাপিও খুলিব।</translation>
 <translation id="4551763574344810652">আনডু কৰিবলৈ <ph name="MODIFIER_KEY_DESCRIPTION" /> টিপক</translation>
 <translation id="4553526521109675518">আপুনি ডিভাইচটোৰ ভাষা সলনি কৰিবলৈ আপোনাৰ Chromebook ৰিষ্টাৰ্ট কৰিব লাগিব। <ph name="BEGIN_LINK_LEARN_MORE" />অধিক জানক<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" />ৰ জৰিয়তে সন্ধান কৰিবলৈ প্ৰতিচ্ছবিসমূহৰ ওপৰেৰে আনক</translation>
 <translation id="4554591392113183336">বাহ্যিক এক্সটেনশ্বনটো ইতিমধ্যে থকা এক্সটেনশ্বনৰ সৈতে একেই বা তাতকৈ তলৰ সংস্কৰণ।</translation>
 <translation id="4555769855065597957">ছাঁ</translation>
 <translation id="4555863373929230635">আপোনাৰ Google একাউণ্টটোত পাছৱৰ্ডসমূহ ছেভ কৰিবলৈ ছাইন ইন কৰি ছিংক কৰা সুবিধাটো অন কৰক।</translation>
@@ -4561,7 +4560,6 @@
 <translation id="5427459444770871191">ঘড়ীৰ কাঁটাৰ দিশত ঘূৰাওক</translation>
 <translation id="542750953150239272">অব্যাহত ৰাখি আপুনি সন্মতি দিয়ে যে এই ডিভাইচটোৱে স্বয়ংক্ৰিয়ভাৱে Google, আপোনাৰ বাহক আৰু আপোনাৰ ডিভাইচটোৰ নিৰ্মাতাৰ পৰা সম্ভৱতঃ চেলুলাৰ ডেটা ব্যৱহাৰ কৰি আপডে’ট আৰু এপ্‌ ডাউনল’ড আৰু ইনষ্টল কৰিবও পাৰে। এই এপ্‌সমূহৰ কিছুমানে এপৰ ভিতৰত ক্ৰয় কৰাৰ সুবিধা আগবঢ়াব পাৰে।</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (আপডে'ট উপলব্ধ)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" />ৰ জৰিয়তে আপোনাৰ স্ক্ৰীনখন সন্ধান কৰক</translation>
 <translation id="542948651837270806">বিশ্বাসী প্লেটফৰ্ম মডিউল ফাৰ্মৱেৰটোৰ বাবে এটা আপডে’ট ইনষ্টল কৰিব লাগিব। <ph name="TPM_FIRMWARE_UPDATE_LINK" /> চাওক</translation>
 <translation id="5430931332414098647">তাৎক্ষণিক টেথাৰিং কৰাৰ সুবিধা</translation>
 <translation id="5431318178759467895">ৰং</translation>
@@ -4634,7 +4632,6 @@
 <translation id="5494920125229734069">সকলো বাছনি কৰক</translation>
 <translation id="5495466433285976480">এই কাৰ্যই আপুনি ইয়াৰ পিছৰবাৰ ছাইন ইন কৰাৰ পিছত সকলো স্থানীয় ব্যৱহাৰকাৰী, ফাইল, ডেটা আৰু অন্য ছেটিংসমূহ আঁতৰাব। সকলো ব্যৱহাৰকাৰীয়ে আকৌ ছাইন ইন কৰাৰ প্ৰয়োজন হ’ব।</translation>
 <translation id="5495597166260341369">ডিছপ্লে’ অন ৰাখক</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" />ৰ জৰিয়তে প্ৰতিচ্ছবি সন্ধান কৰিবলৈ টানি আনি এৰক</translation>
 <translation id="5496587651328244253">শৃংখলাবদ্ধ কৰক</translation>
 <translation id="5496730470963166430">পপ-আপ পঠিওৱাৰ অথবা ৰিডাইৰেক্ট ব্যৱহাৰ কৰাৰ অনুমতি নাই</translation>
 <translation id="5497251278400702716">এইটো ফাইল</translation>
@@ -5747,7 +5744,6 @@
 আপোনাৰ আৰু # টা হেক কৰা পাছৱৰ্ড আছে। Google পাছৱৰ্ড পৰিচালকে এই পাছৱৰ্ডসমূহ এতিয়াই পৰীক্ষা কৰাটো চুপাৰিছ কৰে।}other{হেক কৰা পাছৱৰ্ডটো সফলভাৱে সলনি কৰা হ’ল।
 
 আপোনাৰ আৰু # টা হেক কৰা পাছৱৰ্ড আছে। Google পাছৱৰ্ড পৰিচালকে এই পাছৱৰ্ডসমূহ এতিয়াই পৰীক্ষা কৰাটো চুপাৰিছ কৰে।}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" />ৰ জৰিয়তে প্ৰতিচ্ছবি সন্ধান কৰিবলৈ টানি আনি এৰক</translation>
 <translation id="6596325263575161958">এনক্ৰিপশ্বনৰ বিকল্প</translation>
 <translation id="6596816719288285829">আইপি ঠিকনা</translation>
 <translation id="6597017209724497268">নমুনা</translation>
@@ -6048,6 +6044,7 @@
 <translation id="6895032998810961280">ক্লিনআপৰ প্ৰক্ৰিয়া চলাওঁতে আপোনাৰ কম্পিউটাৰত যিবোৰ ক্ষতিকাৰক ছফ্টৱেৰ, ছিষ্টেমৰ ছেটিং আৰু প্ৰক্ৰিয়া পোৱা গৈছিল সেইবোৰৰ বিষয়ে Googleক বিতংকৈ অভিযোগ দিয়ক</translation>
 <translation id="6896758677409633944">প্ৰতিলিপি কৰক</translation>
 <translation id="6897363604023044284">মচিবলৈ ছাইট বাছনি কৰক</translation>
+<translation id="6897688156970667447">কম পোহৰত সহায়ক হয় আৰু বেটাৰী ৰাহি কৰে</translation>
 <translation id="6898440773573063262">এই ডিভাইচটোত এতিয়া কিঅ’স্ক এপ্লিকেশ্বনবোৰ স্বয়ংক্ৰিয়ভাৱে লঞ্চ কৰিবলৈ কনফিগাৰ কৰিব পাৰি।</translation>
 <translation id="6900284862687837908">নেপথ্যৰ এপ্‌: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">বৰ্ধিত সুৰক্ষা</translation>
@@ -7366,7 +7363,6 @@
 <translation id="8184318863960255706">অধিক তথ্য</translation>
 <translation id="8184472985242519288">অভিন্ন</translation>
 <translation id="8186609076106987817">ছাৰ্ভাৰে ফাইলটো বিচাৰি নাপালে।</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" />ৰ জৰিয়তে পৃষ্ঠাখনৰ কোনো অংশ সন্ধান কৰক</translation>
 <translation id="8188389033983459049">আপোনাৰ ডিভাইচৰ ছেটিংসমূহ পৰীক্ষা কৰক আৰু অব্যাহত ৰাখিবলৈ ব্লুটুথ অন কৰক</translation>
 <translation id="8188742492803591566">আপোনাৰ স্ক্ৰীনখন কাষ্ট কৰিবলৈ আৰম্ভ কৰিবলৈ Chromecast অথবা টিভিত দেখুওৱা এক্সেছ ক’ডটো দিয়ক।</translation>
 <translation id="8189306097519446565">বিদ্যালয়ৰ একাউণ্ট</translation>
@@ -7535,6 +7531,7 @@
 <translation id="8358685469073206162">পৃষ্ঠাবোৰ পুনঃস্থাপন কৰিবনে?</translation>
 <translation id="8358912028636606457">এই ডিভাইচটোত টেব অডিঅ’ কাষ্ট কৰাটো সমৰ্থিত নহয়।</translation>
 <translation id="835951711479681002">আপোনাৰ Google একাউণ্টত ছেভ কৰক</translation>
+<translation id="8360140320636871023">আপোনাৰ ডিছপ্লে’ থীম ব্যক্তিগতকৰণ কৰক</translation>
 <translation id="8363095875018065315">স্থিৰ</translation>
 <translation id="8363142353806532503">মাইক্ৰ'ফ'ন অৱৰোধ কৰা হ'ল</translation>
 <translation id="8366396658833131068">আপোনাৰ নেটৱৰ্ক সংযোগক্ষমতা পুনঃস্থাপন কৰা হৈছে৷ আপোনাৰ কিঅ’স্ক এপ্ লঞ্চ কৰিবলৈ অনুগ্ৰহ কৰি পৃথক নেটৱৰ্ক বাছনি কৰক বা তলৰ 'অব্যাহত ৰাখক' বুটামটো হেঁচক৷</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb
index 12ad8fe..7998118 100644
--- a/chrome/app/resources/generated_resources_az.xtb
+++ b/chrome/app/resources/generated_resources_az.xtb
@@ -1409,7 +1409,6 @@
     Nə vaxtsa Voice Match'in övladınıza uyğun olmadığına qərar versəniz, Assistent Ayarlarında onu silə bilərsiniz. Voice Match'i ayarlayarkən övladınızın yazdığı səslərə baxmaq və ya silmək üçün övladınızın hesabından<ph name="VOICE_MATCH_SETTINGS_URL" /> ünvanına keçin.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Səhifənin bir hissəsini <ph name="VISUAL_SEARCH_PROVIDER" /> ilə axtarın</translation>
 <translation id="2309620859903500144">Bu saytın hərəkət və zəif sensorlarınıza girişi blok edilib.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Səhifə keçidi</translation>
@@ -2032,7 +2031,6 @@
 <translation id="289695669188700754">Əsas ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Bu fərdi ayar bütün Anonim pəncərələri bağladığınızda silinəcəkdir</translation>
 <translation id="2897878306272793870"><ph name="TAB_COUNT" /> panellərini açmaq istədiyinizə əminsiniz?</translation>
-<translation id="2900477968385519153">Ekranınızı <ph name="VISUAL_SEARCH_PROVIDER" /> ilə Axtarın</translation>
 <translation id="290105521672621980">Fayl dəstəklənməyən funksiyalar işlədir</translation>
 <translation id="2901348420151309559">Son fotolar və tətbiqlər</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> bu printerə qoşula bilmədi. Printerin qoşulduğuna əmin olun və yenidən cəhd edin.</translation>
@@ -2905,7 +2903,6 @@
 <translation id="3778740492972734840">&amp;Developer alətləri</translation>
 <translation id="3778868487658107119">Ona suallar verin və iş tapşırın. Bu Sizin şəxsi Google'dur, hər zaman kömək etməyə hazırdır.</translation>
 <translation id="3781742599892759500">Linux mikrofona girişi</translation>
-<translation id="378312418865624974">Bu kompüter üçün unikal identifikatoru oxuyun</translation>
 <translation id="3784472333786002075">Kukilər vebsaytların yaratdığı fayllardır. İki növ kuki var: Birinci tərəf kukilər ziyarət etdiyiniz sayt tərəfindən yaradılır. Sayt ünvan panelində göstərilir. Üçüncü tərəf kukilər başqa saytlar tərəfindən yaradılır. Bu saytlar ziyarət etdiyiniz vebsaytda gördüyünüz reklam və ya şəkillər kimi bəzi məzmunun sahibidir.</translation>
 <translation id="3785308913036335955">Tətbiqlərin qısayollarını göstərin</translation>
 <translation id="3785727820640310185">Bu sayt üçün yadda saxlanmış parollar</translation>
@@ -3556,7 +3553,6 @@
 <translation id="4415748029120993980">SECG oval əyrisi secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">Bu kontent üçün tətbiqlər əlçatan deyil</translation>
 <translation id="4416582610654027550">Düzgün link daxil edin</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> ilə Axtarış Etmək üçün Şəkillərin üzərindən Sürüşdürün</translation>
 <translation id="4419409365248380979">Kukiləri ayarlamaq üçün <ph name="HOST" /> hostuna icazə verin</translation>
 <translation id="4421932782753506458">Tüklü</translation>
 <translation id="4423376891418188461">Ayarları Bərpa Edin</translation>
@@ -3627,6 +3623,7 @@
 <translation id="449232563137139956">Saytlar adətən onlayn mağazalar və ya xəbər məqalələri üçün fotolar kimi illustrasiyaları təmin etmək məqsədilə şəkillər göstərir</translation>
 <translation id="4492698018379445570">Hazır olduğunuz zaman alış-veriş arabalarına əlavə etdiklərinizi tapın və ödəniş edin</translation>
 <translation id="4493468155686877504">Tövsiyə olunur (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180"><ph name="SITE" /> saytında bu artırmaya icazə verilsin?</translation>
 <translation id="4495419450179050807">Bu səhifədə göstərməyin</translation>
 <translation id="4497145443434063861">PC və Chromecast müxtəlif Wi-Fi şəbəkələrindədir (məsələn, 2.4GHz və ya 5GHz)</translation>
 <translation id="4500114933761911433"><ph name="PLUGIN_NAME" /> ilə bağlı xəta oldu</translation>
@@ -3694,7 +3691,6 @@
 <translation id="4550926046134589611">Bəzi dəstəklənən keçidlər hələ də <ph name="APP_NAME" /> tətbiqində açılacaq.</translation>
 <translation id="4551763574344810652">Geri qaytarmaq üçün <ph name="MODIFIER_KEY_DESCRIPTION" /> qısayoluna klikləyin</translation>
 <translation id="4553526521109675518">Cihaz dilini dəyişmək üçün Chromebook'u yenidən başlatmalısınız. <ph name="BEGIN_LINK_LEARN_MORE" />Ətraflı məlumat<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> ilə axtarış etmək üçün şəkillərin üzərindən sürüşdürün</translation>
 <translation id="4554591392113183336">Xarici artırma eyni və ya köhnə versiyadadır.</translation>
 <translation id="4555769855065597957">Kölgə</translation>
 <translation id="4555863373929230635">Parolları Google Hesabınızda saxlamaq üçün giriş edin və sinxronlaşdırmanı aktiv edin.</translation>
@@ -4545,7 +4541,6 @@
 <translation id="5427459444770871191">Saat istiqamətində fırladın</translation>
 <translation id="542750953150239272">Davam edərək razılaşırsınız ki, bu cihaz Google, operatorunuz və cihaz istehsalçınızdan avtomatik olaraq yeniləmələri və tətbiqləri endirə və quraşdıra bilər, bu zaman mobil datadan istifadə edilə bilər. Bu tətbiqlərin bəzilərində tətbiqdaxili satınalmalar təklif edilə bilər.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Güncəllənmə var)</translation>
-<translation id="5429373054983029602">Ekranınızı <ph name="VISUAL_SEARCH_PROVIDER" /> ilə axtarın</translation>
 <translation id="542948651837270806">Etibarlı Platforma Modulu üzrə təhlükəsizlik divarı üçün yeniləmə quraşdırılmalıdır. Baxın: <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Cəld modem rejimi</translation>
 <translation id="5431318178759467895">Rəng</translation>
@@ -4618,7 +4613,6 @@
 <translation id="5494920125229734069">Hamısını seçin</translation>
 <translation id="5495466433285976480">Növbəti başlatmanızdan sonra bu bütün yerli istifadəçilər, data və digər ayarlar silinəcək. Bütün istifadəçilər yenidən daxil olmalıdır.</translation>
 <translation id="5495597166260341369">Ekranı aktiv saxlayın</translation>
-<translation id="549580971452855947">Şəkilləri <ph name="VISUAL_SEARCH_PROVIDER" /> ilə axtarmaq üçün sürüşdürün</translation>
 <translation id="5496587651328244253">Təşkil etmək</translation>
 <translation id="5496730470963166430">Anidən görünən bildirişlər göndərmək və ya yönləndirmələrdən istifadə etməyə icazə verilmir</translation>
 <translation id="5497251278400702716">Bu fayl</translation>
@@ -5727,7 +5721,6 @@
 Daha # oğurlanmış parolunuz var. Google Parol Meneceri bu parolu indi yoxlamağı tövsiyə edir.}other{Oğurlanmış parol uğurla dəyişdirildi.
 
 Daha # oğurlanmış parolunuz var. Google Parol Meneceri bu parolları indi yoxlamağı tövsiyə edir.}}</translation>
-<translation id="6595792813574514527">Şəkilləri <ph name="VISUAL_SEARCH_PROVIDER" /> ilə Axtarmaq üçün Sürüşdürün</translation>
 <translation id="6596325263575161958">Şifrələmə variantları</translation>
 <translation id="6596816719288285829">IP Ünvanı</translation>
 <translation id="6597017209724497268">Nümunələr</translation>
@@ -7346,7 +7339,6 @@
 <translation id="8184318863960255706">Daha ətraflı</translation>
 <translation id="8184472985242519288">Uniforma</translation>
 <translation id="8186609076106987817">Server faylı tapa bilmədi.</translation>
-<translation id="8186704951085064172">Səhifənin Bir Hissəsini <ph name="VISUAL_SEARCH_PROVIDER" /> ilə Axtarın</translation>
 <translation id="8188389033983459049">Cihaz ayarlarını yoxlayın və aktiv edərək davam edin</translation>
 <translation id="8188742492803591566">Ekranı yayımlamağa başlamaq üçün Chromecast və ya TV'də göstərilən giriş kodunu daxil edin.</translation>
 <translation id="8189306097519446565">Məktəb hesabları</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb
index 402c2cb..7b5d305 100644
--- a/chrome/app/resources/generated_resources_be.xtb
+++ b/chrome/app/resources/generated_resources_be.xtb
@@ -1413,7 +1413,6 @@
     Выключыць функцыю Voice Match можна, выдаліўшы яе ў наладах Памочніка. Каб праслухаць або выдаліць запісы, зробленыя вашым дзіцем падчас наладжвання Voice Match, перайдзіце на старонку <ph name="VOICE_MATCH_SETTINGS_URL" /> з уліковага запісу вашага дзіцяці.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Пошук па частцы старонкі з дапамогай <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Гэтаму сайту заблакіраваны доступ да датчыкаў руху або святла.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL-адрас старонкі</translation>
@@ -2036,7 +2035,6 @@
 <translation id="289695669188700754">Ідэнтыфікатар ключа: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Гэта карыстальніцкая налада будзе выдалена, калі вы закрыеце ўсе вокны, адкрытыя ў рэжыме інкогніта</translation>
 <translation id="2897878306272793870">Сапраўды адкрыць укладкі (<ph name="TAB_COUNT" />)?</translation>
-<translation id="2900477968385519153">Пошук аб'ектаў на экране з дапамогай<ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Файл выкарыстоўвае функцыі, якія не падтрымліваюцца</translation>
 <translation id="2901348420151309559">Нядаўнія фота і праграмы</translation>
 <translation id="2902127500170292085">Пашырэнню <ph name="EXTENSION_NAME" /> не ўдалося звязацца з гэтым прынтарам. Праверце, ці падключаны ён, і паўтарыце спробу.</translation>
@@ -2909,7 +2907,6 @@
 <translation id="3778740492972734840">&amp;Інструменты распрацоўшчыка</translation>
 <translation id="3778868487658107119">Можаце задаваць пытанні і прасіць нешта зрабіць. Гэта ваш персанальны памочнік, і ён заўсёды гатовы дапамагчы.</translation>
 <translation id="3781742599892759500">Доступ да мікрафона ў Linux</translation>
-<translation id="378312418865624974">Чытаць унікальны ідэнтыфікатар для гэтага камп'ютара</translation>
 <translation id="3784472333786002075">Файлы cookie – гэта файлы, якія ствараюцца вэб-сайтамі. Ёсць два віды файлаў cookie. Асноўныя файлы cookie ствараюцца самім сайтам, які вы наведваеце. Ён паказваецца ў адрасным радку. Староннія файлы cookie ствараюцца іншымі сайтамі. Гэтым сайтам належыць пэўнае змесціва (напрыклад рэклама або відарысы), размешчанае на вэб-сайце, які вы наведваеце.</translation>
 <translation id="3785308913036335955">Паказваць ярлыкі праграм</translation>
 <translation id="3785727820640310185">Захаваныя паролі для гэтага сайта</translation>
@@ -3562,7 +3559,6 @@
 <translation id="4415748029120993980">SECG эліптычны secp384r1 (іншая назва – NIST P-384)</translation>
 <translation id="4416450511678320850">Для гэтага змесціва праграм няма</translation>
 <translation id="4416582610654027550">Увядзіце правільны URL-адрас</translation>
-<translation id="4417162649853416189">Вылучыць частку відарыса для пошуку з дапамогай <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Заўсёды дазваляць сайту <ph name="HOST" /> захоўваць файлы cookie</translation>
 <translation id="4421932782753506458">Пушок</translation>
 <translation id="4423376891418188461">Аднавіць налады</translation>
@@ -3700,7 +3696,6 @@
 <translation id="4550926046134589611">Некаторыя спасылкі, якія падтрымліваюцца, па-ранейшаму будуць адкрывацца ў праграме "<ph name="APP_NAME" />".</translation>
 <translation id="4551763574344810652">Каб адрабіць, націсніце <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4553526521109675518">Каб змяніць мову прылады, трэба перазапусціць Chromebook. <ph name="BEGIN_LINK_LEARN_MORE" />Даведацца больш<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Вылучыць частку відарыса для пошуку з дапамогай <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Знешняе пашырэнне мае тую ж версію, што існуючае пашырэнне, або ніжэйшую.</translation>
 <translation id="4555769855065597957">Цень</translation>
 <translation id="4555863373929230635">Каб захоўваць паролі ва Уліковым запісе Google, увайдзіце ў яго і ўключыце сінхранізацыю.</translation>
@@ -4551,7 +4546,6 @@
 <translation id="5427459444770871191">Павярнуць &amp;па гадзіннікавай стрэлцы</translation>
 <translation id="542750953150239272">Працягваючы, вы дазваляеце гэтай прыладзе аўтаматычна спампоўваць і ўсталёўваць абнаўленні і праграмы ад Google, вашага аператара і вытворцы прылады, магчыма, з выкарыстаннем сотавай перадачы даных. Некаторыя з гэтых праграм могуць прапаноўваць куплі ў праграмах.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (ёсць абнаўленне)</translation>
-<translation id="5429373054983029602">Пошук аб'ектаў на экране з дапамогай<ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Неабходна ўсталяваць абнаўленне для ўбудаванага праграмнага забеспячэння Trusted Platform Module. Глядзіце старонку <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Імгненны рэжым мадэма</translation>
 <translation id="5431318178759467895">Колер</translation>
@@ -4624,7 +4618,6 @@
 <translation id="5494920125229734069">Выбраць усё</translation>
 <translation id="5495466433285976480">Пасля наступнага перазапуску будуць выдалены ўсе лакальныя ўліковыя запісы карыстальнікаў, файлы, даныя і іншыя налады. Усім карыстальнікам трэба будзе зноў увайсці ў свае ўліковыя запісы.</translation>
 <translation id="5495597166260341369">Не выключаць дысплэй</translation>
-<translation id="549580971452855947">Вылучыць частку змесціва на экране для пошуку з дапамогай <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Упарадкаванне</translation>
 <translation id="5496730470963166430">Не дазволена паказваць усплывальныя вокны або ажыццяўляць перанакіраванне</translation>
 <translation id="5497251278400702716">Гэты файл</translation>
@@ -5741,7 +5734,6 @@
 Застаецца яшчэ # раскрытых пароляў. Рэкамендуем праверыць іх зараз жа ў Менеджары пароляў Google.}other{Раскрыты пароль зменены.
 
 Застаецца яшчэ # раскрытага пароля. Рэкамендуем праверыць іх зараз жа ў Менеджары пароляў Google.}}</translation>
-<translation id="6595792813574514527">Вылучыць частку змесціва на экране для пошуку з дапамогай <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Параметры шыфравання</translation>
 <translation id="6596816719288285829">IP-адрас</translation>
 <translation id="6597017209724497268">Узоры</translation>
@@ -7360,7 +7352,6 @@
 <translation id="8184318863960255706">Дадатковая інфармацыя</translation>
 <translation id="8184472985242519288">Аднастайны</translation>
 <translation id="8186609076106987817">Сервер не знайшоў файл.</translation>
-<translation id="8186704951085064172">Пошук па частцы старонкі з дапамогай <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Каб працягнуць, праверце налады прылады і ўключыце яе</translation>
 <translation id="8188742492803591566">Увядзіце код доступу, паказаны на тэлевізары або прыладзе Chromecast, каб пачаць трансляцыю экрана.</translation>
 <translation id="8189306097519446565">Навучальныя ўліковыя запісы</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index de8b28d0..1f9893f 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -1421,7 +1421,6 @@
     Ако по-късно решите, че функцията Voice Match не е подходяща за детето ви, трябва само да я премахнете от настройките на Асистент в профила му. За да прегледате или изтриете аудиооткъсите, които детето ви записва по време на настройването на Voice Match, посетете <ph name="VOICE_MATCH_SETTINGS_URL" /> от профила му.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Търсене в част от страницата посредством <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Достъпът на този сайт до сензорите ви за движение или светлина е блокиран.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL адрес на страницата</translation>
@@ -2045,7 +2044,6 @@
 <translation id="289695669188700754">Идентификатор (ИД) на ключ: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Тази персонализирана настройка ще бъде премахната, когато затворите всички прозорци в режим „инкогнито“</translation>
 <translation id="2897878306272793870">Наистина ли искате да отворите <ph name="TAB_COUNT" /> раздела?</translation>
-<translation id="2900477968385519153">Търсене в екрана посредством <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Файлът използва неподдържани функции</translation>
 <translation id="2901348420151309559">Скорошни снимки и приложения</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> не можа да установи връзка с този принтер. Уверете се, че той е включен, и опитайте отново.</translation>
@@ -2918,7 +2916,6 @@
 <translation id="3778740492972734840">&amp;Инструменти за програмисти</translation>
 <translation id="3778868487658107119">Вашият личен помощник от Google – винаги на разположение, за да отговаря на въпросите ви и да изпълнява желанията ви.</translation>
 <translation id="3781742599892759500">Достъп на Linux до микрофона</translation>
-<translation id="378312418865624974">Четене на уникалния идентификатор на този компютър</translation>
 <translation id="3784472333786002075">„Бисквитките“ са файлове, създавани от уебсайтовете. Има два типа „бисквитки“: тези на посещавания домейн се създават от сайта, който преглеждате. Той се показва в адресната лента. „Бисквитките“ на трети страни се създават от други сайтове. Те притежават част от съдържанието, като например реклами или изображения, което виждате на посетения от вас уебсайт.</translation>
 <translation id="3785308913036335955">Показване на прекия път към приложенията</translation>
 <translation id="3785727820640310185">Запазени пароли за този сайт</translation>
@@ -3572,7 +3569,6 @@
 <translation id="4415748029120993980">Елиптична крива secp384r1 по SECG (позната и като NIST P-384)</translation>
 <translation id="4416450511678320850">За това съдържание няма налични приложения</translation>
 <translation id="4416582610654027550">Въведете валиден URL адрес</translation>
-<translation id="4417162649853416189">Плъзгане върху изображения с цел търсене посредством <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Да се разреши на <ph name="HOST" /> винаги да задава „бисквитки“</translation>
 <translation id="4421932782753506458">Пухчо</translation>
 <translation id="4423376891418188461">Възстановяване на настройките</translation>
@@ -3712,7 +3708,6 @@
 <translation id="4550926046134589611">Някои поддържани връзки ще продължат да се отварят в(ъв) <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Натиснете <ph name="MODIFIER_KEY_DESCRIPTION" /> за отмяна</translation>
 <translation id="4553526521109675518">Трябва да рестартирате своя Chromebook, за да промените езика на устройството. <ph name="BEGIN_LINK_LEARN_MORE" />Научете повече<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Плъзгане върху изображения с цел търсене посредством <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Версията на външното разширение е същата или по-стара в сравнение със съществуващата.</translation>
 <translation id="4555769855065597957">Сянка</translation>
 <translation id="4555863373929230635">За да запазвате пароли в профила си в Google, влезте в него и включете синхронизирането.</translation>
@@ -4563,7 +4558,6 @@
 <translation id="5427459444770871191">Завъртане &amp;по часовниковата стрелка</translation>
 <translation id="542750953150239272">С продължаването си приемате, че това устройство може също автоматично да изтегля и инсталира актуализации и приложения от Google, оператора ви и производителя си, при което е възможно да използва мобилни данни. В някои от тези приложения може да се предлагат покупки.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Налице е актуализация)</translation>
-<translation id="5429373054983029602">Търсене в екрана посредством <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Трябва да бъде инсталирана актуализация на фърмуера на модула за надеждна платформа. Вижте информацията на адрес <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Незабавен тетъринг</translation>
 <translation id="5431318178759467895">Цветно</translation>
@@ -4636,7 +4630,6 @@
 <translation id="5494920125229734069">Избиране на всички</translation>
 <translation id="5495466433285976480">По този начин при следващото рестартиране ще се премахнат всички локални потребители, файлове, данни и други настройки. Всички потребители ще трябва да влязат отново.</translation>
 <translation id="5495597166260341369">Без изключване на екрана</translation>
-<translation id="549580971452855947">Плъзгане с цел търсене на изображения посредством <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Организиране</translation>
 <translation id="5496730470963166430">Сайтове без разрешение за изпращане на изскачащи прозорци или използване на пренасочвания</translation>
 <translation id="5497251278400702716">Този файл</translation>
@@ -5748,7 +5741,6 @@
 Имате още # компрометирана парола. Google Мениджър на пароли ви препоръчва да я проверите сега.}other{Успешно променихте компрометираната парола.
 
 Имате още # компрометирани пароли. Google Мениджър на пароли ви препоръчва да ги проверите сега.}}</translation>
-<translation id="6595792813574514527">Плъзгане с цел търсене на изображения посредством <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Опции за шифроване</translation>
 <translation id="6596816719288285829">IP адрес</translation>
 <translation id="6597017209724497268">Извадки</translation>
@@ -7369,7 +7361,6 @@
 <translation id="8184318863960255706">Още информация</translation>
 <translation id="8184472985242519288">Еднородна</translation>
 <translation id="8186609076106987817">Сървърът не можа да намери файла.</translation>
-<translation id="8186704951085064172">Търсене в част от страницата посредством <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Проверете настройките на устройството си и я включете, за да продължите</translation>
 <translation id="8188742492803591566">Въведете кода за достъп, показан от Chromecast или телевизора, за да започнете да предавате екрана си.</translation>
 <translation id="8189306097519446565">Училищни профили</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index c90e862..c4306f65 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -203,6 +203,7 @@
 <translation id="1188807932851744811">লগ আপলোড করা হয়নি।</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{আপনার কম্পিউটারে সঞ্চিত একটি ফাইল অ্যাক্সেস করে}one{আপনার কম্পিউটারে সঞ্চিত #টি ফাইল অ্যাক্সেস করে}other{আপনার কম্পিউটারে সঞ্চিত #টি ফাইল অ্যাক্সেস করে}}</translation>
 <translation id="119092896208640858">Google অ্যাকাউন্ট থেকে ব্রাউজিং ডেটা খালি না করে শুধুমাত্র এই ডিভাইস থেকে খালি করতে <ph name="BEGIN_LINK" />সাইন-আউট করুন<ph name="END_LINK" />।</translation>
+<translation id="1191353342579061195">আপনার প্রয়োজনের সাথে মানানসই থিম বেছে নিন। আপনার থিম, ওয়ালপেপার, স্ক্রিন সেভার এবং আরও অনেক কিছু পরিবর্তন করতে, শুধু ডেস্কটপে ডানদিকের বোতামে ক্লিক করুন।</translation>
 <translation id="1192706927100816598">{0,plural, =1{আপনি # সেকেন্ডে অটোমেটিক সাইন-আউট হয়ে যাবেন।
 <ph name="DOMAIN" />-এর জন্য আপনার স্মার্ট কার্ড প্রবেশ করিয়ে রাখতে হবে।}one{আপনি # সেকেন্ডে অটোমেটিক সাইন-আউট হয়ে যাবেন।
 <ph name="DOMAIN" />-এর জন্য আপনার স্মার্ট কার্ড প্রবেশ করিয়ে রাখতে হবে।}other{আপনি # সেকেন্ডে অটোমেটিক সাইন-আউট হয়ে যাবেন।
@@ -1305,6 +1306,7 @@
 <translation id="2220409419896228519">আপনার পছন্দের Google অ্যাপে বুকমার্ক যোগ করুন</translation>
 <translation id="2220529011494928058">কোনো সমস্যার অভিযোগ করুন</translation>
 <translation id="2220572644011485463">PIN বা পাসওয়ার্ড</translation>
+<translation id="222115440608612541">সূর্যোদয় এবং সূর্যাস্তের থিমে পাল্টান</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">নামবিহীন মিডিয়া সোর্স</translation>
 <translation id="2224444042887712269">এই সেটিংটি <ph name="OWNER_EMAIL" /> এর৷</translation>
@@ -1426,7 +1428,6 @@
     আপনি যদি মনে করেন আপনার বাচ্চার পক্ষে Voice Match-এর বিষয়টি সঠিক নয়, তাহলে তার Assistant সেটিংস থেকে এটি সরিয়ে দিন। Voice Match সেট আপ করার সময় আপনার বাচ্চার রেকর্ড করা অডিও ক্লিপ দেখতে বা মুছে ফেলতে, আপনার বাচ্চার অ্যাকাউন্ট থেকে <ph name="VOICE_MATCH_SETTINGS_URL" /> লিঙ্কে যান।
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> ব্যবহার করে পৃষ্ঠার অংশ সার্চ করুন</translation>
 <translation id="2309620859903500144">এই সাইটটি আপনার মোশন এবং লাইট সেন্সর অ্যাক্সেস করতে পারবে না।</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">পৃষ্ঠার ইউআরএল</translation>
@@ -1534,6 +1535,7 @@
 <translation id="241082044617551207">অজানা প্লাগ-ইন</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">কীবোর্ডের ফাংশন কী</translation>
+<translation id="2418307627282545839">যথেষ্ট আলোকময় ও খোলামেলা রাখুন</translation>
 <translation id="2419131370336513030">ইনস্টল করা অ্যাপ দেখুন</translation>
 <translation id="2419706071571366386">নিরাপত্তার কারণে, আপনার কম্পিউটার ব্যবহার করা না হলে সাইন-আউট করুন।</translation>
 <translation id="2422125132043002186">Linux ফিরিয়ে আনা বাতিল করা হয়ছে</translation>
@@ -2049,7 +2051,6 @@
 <translation id="289695669188700754">কী ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">আপনি সমস্ত 'ছদ্মবেশী' উইন্ডো বন্ধ করলে এই কাস্টম সেটিং মুছে ফেলা হবে</translation>
 <translation id="2897878306272793870">আপনি কি <ph name="TAB_COUNT" />টি ট্যাব খোলার ব্যাপারে নিশ্চিত?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> ব্যবহার করে আপনার স্ক্রিন সার্চ করুন</translation>
 <translation id="290105521672621980">ফাইলের বৈশিষ্ট্যগুলি অসমর্থিত</translation>
 <translation id="2901348420151309559">সাম্প্রতিক ফটো ও অ্যাপ</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> এই প্রিন্টারের সঙ্গে যোগাযোগ করতে পারেনি। প্রিন্টারটি প্লাগ ইন করা আছে কিনা তা নিশ্চিত করে আবার চেষ্টা করুন।</translation>
@@ -2922,7 +2923,6 @@
 <translation id="3778740492972734840">&amp;ডেভেলপার টুল</translation>
 <translation id="3778868487658107119">প্রশ্ন করুন। কিছু করতে বলুন। এটি আপনার নিজস্ব Google যেটি সবসময় আপনাকে সাহায্য করে।</translation>
 <translation id="3781742599892759500">Linux-এ মাইক্রোফোনের অ্যাক্সেস</translation>
-<translation id="378312418865624974">এই কম্পিউটারের জন্য একটি অনন্য শনাক্তকারী পড়ুন</translation>
 <translation id="3784472333786002075">ওয়েবসাইট যে ফাইলগুলি তৈরি করে তাকে কুকি বলা হয়। কুকি দুই ধরনের: আপনার ব্রাউজ করা ওয়েবসাইট ফার্স্ট-পার্টি কুকি তৈরি করে। অ্যাড্রেস বারে সাইটটি দেখা যায়। অন্যান্য সাইট থার্ড-পার্টি কুকি তৈরি করে। এই সাইটগুলিতে বিজ্ঞাপন এবং ছবির মতো কিছু কন্টেন্ট থাকে যা আপনি আপনার ভিজিট করা ওয়েবসাইটে দেখতে পান।</translation>
 <translation id="3785308913036335955">অ্যাপ্লিকেশানগুলির শর্টকাট দেখান</translation>
 <translation id="3785727820640310185">এই সাইটের জন্য সেভ করা পাসওয়ার্ড</translation>
@@ -3575,7 +3575,6 @@
 <translation id="4415748029120993980">SECG এলিপ্টিক কার্ভ secp384r1 (ওরফে NIST P-384)</translation>
 <translation id="4416450511678320850">এই কন্টেন্টের জন্য কোনও অ্যাপ উপলভ্য নেই</translation>
 <translation id="4416582610654027550">একটি সঠিক URL লিখুন</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> ব্যবহার করে সার্চ করতে ছবির উপরে টেনে আনুন</translation>
 <translation id="4419409365248380979">কুকিজ সেট করতে <ph name="HOST" />-কে সব সময় অনুমতি দিন</translation>
 <translation id="4421932782753506458">ফুঁয়োফুঁয়ো</translation>
 <translation id="4423376891418188461">সেটিংস পুনরুদ্ধার করুন</translation>
@@ -3646,6 +3645,7 @@
 <translation id="449232563137139956">ইলাস্ট্রেশনের জন্য সাইট সাধারণত ছবি দেখায়, যেমন অনলাইন স্টোর অথবা খবরের নিবন্ধ সংক্রান্ত ছবি</translation>
 <translation id="4492698018379445570">শপিং কার্টে আপনি কী কী যোগ করেছেন তা দেখুন এবং সব কিছু চেক করা করে নেওয়ার পরেই পেমেন্ট করুন</translation>
 <translation id="4493468155686877504">সাজেস্ট করা হয়েছে (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180"><ph name="SITE" />-এ এই এক্সটেনশনে অনুমতি দেবেন?</translation>
 <translation id="4495419450179050807">এই পৃষ্ঠাতে দেখাবেন না</translation>
 <translation id="4497145443434063861">PC ও Chromecast আলাদা ওয়াই-ফাই নেটওয়ার্কে আছে (যেমন ২.৪ GHz
     বনাম ৫ GHz)</translation>
@@ -3714,7 +3714,6 @@
 <translation id="4550926046134589611">কিছু সহায়তা প্রদান করার লিঙ্ক <ph name="APP_NAME" /> এখনও খুলবে।</translation>
 <translation id="4551763574344810652">আগের অবস্থায় ফিরে যেতে <ph name="MODIFIER_KEY_DESCRIPTION" /> টিপুন</translation>
 <translation id="4553526521109675518">ডিভাইসের ভাষা পরিবর্তন করতে, আপনাকে Chromebook রিস্টার্ট করতে হবে। <ph name="BEGIN_LINK_LEARN_MORE" />আরও জানুন<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> ব্যবহার করে সার্চ করতে ছবির উপরে টেনে আনুন</translation>
 <translation id="4554591392113183336">বিদ্যমানটির তুলনায় বাহ্যিক এক্সটেনশনটি একই বা আরও পুরনো ভার্সনের৷</translation>
 <translation id="4555769855065597957">ছায়া</translation>
 <translation id="4555863373929230635">আপনার Google অ্যাকাউন্টে পাসওয়ার্ড সেভ করতে, সাইন-ইন করে সিঙ্ক চালু করুন।</translation>
@@ -4566,7 +4565,6 @@
 <translation id="5427459444770871191">&amp;ঘড়ির কাঁটার দিকে ঘোরান</translation>
 <translation id="542750953150239272">এছাড়াও চালিয়ে যাওয়ার অর্থ আপনি সম্মতি জানাচ্ছেন যে Google, আপনার পরিষেবা প্রদানকারী এবং ডিভাইসের প্রস্তুতকারকের থেকে এই ডিভাইস আপডেট অটোমেটিক ডাউনলোড ও ইনস্টল করতে পারে এবং সেটি করার জন্য খুব সম্ভবত মোবাইল ডেটা ব্যবহার করতে পারে। এর মধ্যে কিছু অ্যাপে অ্যাপ-মধ্যস্থ কেনাকাটা অফার করা হতে পারে।</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (আপডেট উপলব্ধ আছে)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> ব্যবহার করে আপনার স্ক্রিন সার্চ করুন</translation>
 <translation id="542948651837270806">বিশ্বস্ত প্ল্যাটফর্ম মডিউল ফার্মওয়্যারের জন্য একটি আপডেট ইনস্টল করতে হবে। <ph name="TPM_FIRMWARE_UPDATE_LINK" /> দেখুন</translation>
 <translation id="5430931332414098647">ঝটপট টিথারিং</translation>
 <translation id="5431318178759467895">রঙ</translation>
@@ -4639,7 +4637,6 @@
 <translation id="5494920125229734069">সকল বেছে নিন</translation>
 <translation id="5495466433285976480">আপনি যখন পরবর্তীতে রিস্টার্ট করবেন তখন এটি সমস্ত স্থানীয় ব্যবহারকারী, ফাইল, ডেটা, এবং অন্যান্য সেটিংস সরিয়ে ফেলবে৷ সকল ব্যবহারকারীকে আবার সাইন-ইন করতে হবে৷</translation>
 <translation id="5495597166260341369">ডিসপ্লে চালু রাখুন</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> ব্যবহার করে ছবি সার্চ করতে টেনে আনুন</translation>
 <translation id="5496587651328244253">সংগঠিত করুন</translation>
 <translation id="5496730470963166430">পপ-আপ পাঠানো ও রিডাইরেক্ট করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="5497251278400702716">এই ফাইল</translation>
@@ -5754,7 +5751,6 @@
 আপনার আরও #টি পাসওয়ার্ড চুরি হয়েছে। Google পাসওয়ার্ড ম্যানেজার আপনার পাসওয়ার্ড এখনই চেক করার সাজেস্ট করছে।}other{চুরি হয়ে যাওয়া পাসওয়ার্ড পরিবর্তন করা হয়েছে।
 
 আপনার আরও #টি পাসওয়ার্ড চুরি হয়েছে। Google পাসওয়ার্ড ম্যানেজার আপনার পাসওয়ার্ড এখনই চেক করার সাজেস্ট করছে।}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> ব্যবহার করে ছবি সার্চ করতে টেনে আনুন</translation>
 <translation id="6596325263575161958">এনক্রিপশন বিকল্পগুলি</translation>
 <translation id="6596816719288285829">আইপি অ্যাড্রেস</translation>
 <translation id="6597017209724497268">নমুনাগুলি</translation>
@@ -6055,6 +6051,7 @@
 <translation id="6895032998810961280">পরিষ্কার করার সময় আপনার কম্পিউটারে পাওয়া ক্ষতিকারক সফ্টওয়্যার, সিস্টেম সেটিংস ও প্রসেসের বিবরণ Google-কে জানান।</translation>
 <translation id="6896758677409633944">কপি</translation>
 <translation id="6897363604023044284">কোন কোন সাইটের ডেটা মুছবেন তা বেছে নিন</translation>
+<translation id="6897688156970667447">কম আলোতে সহায়ক এবং ব্যাটারি সাশ্রয় করে</translation>
 <translation id="6898440773573063262">Kiosk অ্যাপ্লিকেশনগুলিকে এখন এই ডিভাইসে স্বয়ংক্রিয়ভাবে লঞ্চ করতে কনফিগার করা যাবে৷</translation>
 <translation id="6900284862687837908">পটভূমিতে কাজ করা অ্যাপ্লিকেশান: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">উন্নত সুরক্ষা</translation>
@@ -7374,7 +7371,6 @@
 <translation id="8184318863960255706">আরও তথ্য</translation>
 <translation id="8184472985242519288">সব জায়গায় একরকম</translation>
 <translation id="8186609076106987817">সার্ভার ফাইলটি খুঁজে পায়নি৷</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> ব্যবহার করে পৃষ্ঠার অংশ সার্চ করুন</translation>
 <translation id="8188389033983459049">আপনার ডিভাইসের সেটিংস চেক করুন এবং চালিয়ে যেতে এটি চালু করুন</translation>
 <translation id="8188742492803591566">আপনার স্ক্রিন কাস্ট করা শুরু করতে Chromecast বা TV-তে দেখানো অ্যাক্সেস কোড লিখুন।</translation>
 <translation id="8189306097519446565">স্কুল অ্যাকাউন্ট</translation>
@@ -7543,6 +7539,7 @@
 <translation id="8358685469073206162">পৃষ্ঠাগুলি পুনরুদ্ধার করবেন?</translation>
 <translation id="8358912028636606457">এই ডিভাইসে ট্যাব থেকে অডিও কাস্ট করার সুবিধা নেই।</translation>
 <translation id="835951711479681002">আপনার Google অ্যাকাউন্টে সেভ করুন</translation>
+<translation id="8360140320636871023">আপনার ডিসপ্লে থিম পছন্দমতো সেট করুন</translation>
 <translation id="8363095875018065315">স্থায়ী</translation>
 <translation id="8363142353806532503">মাইক্রোফোনের ব্যবহার ব্লক করা হয়েছে</translation>
 <translation id="8366396658833131068">আপনার নেটওয়ার্ক আবার কানেক্ট করা হয়েছে৷ আপনার কিয়স্ক অ্যাপ লঞ্চ করার জন্য অনুগ্রহ করে একটি ভিন্ন নেটওয়ার্ক বেছে নিন অথবা নীচের 'অবিরত থাকুন' বোতাম টিপুন৷</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb
index b720dfd..90f6fab 100644
--- a/chrome/app/resources/generated_resources_bs.xtb
+++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -182,6 +182,7 @@
 <translation id="1166583374608765787">Pregledajte ažuriranje naziva</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> pripada radnoj površini <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">Otvara se za <ph name="TIME_REMAINING" />...</translation>
+<translation id="1169266963600477608">Kontrole igre</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> sadržava osjetljive ili opasne podatke. Vaš administrator kaže: "<ph name="CUSTOM_MESSAGE" />"</translation>
 <translation id="1171135284592304528">Istakni objekat fokusom tastature kada se promijeni</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> se želi povezati na HID uređaj</translation>
@@ -1424,7 +1425,6 @@
     Ako kasnije odlučite da Voice Match nije dobar izbor za vaše dijete, jednostavno ga uklonite u djetetovim Postavkama Asistenta. Da pregledate ili izbrišete audio isječke koje je vaše dijete snimilo dok je postavljalo Voice Match, idite na <ph name="VOICE_MATCH_SETTINGS_URL" /> s računa djeteta.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Pretražite dio stranice koristeći <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Ovoj stranici je blokiran pristup vašim senzorima pokreta ili svjetla.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL stranice</translation>
@@ -2047,7 +2047,6 @@
 <translation id="289695669188700754">ID ključa: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Ova prilagođena postavka će se ukloniti kada zatvorite sve anonimne prozore.</translation>
 <translation id="2897878306272793870">Jeste li sigurni da želite otvoriti sljedeći broj kartica: <ph name="TAB_COUNT" />?</translation>
-<translation id="2900477968385519153">Pretražujte ekran koristeći <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Fajl koristi nepodržane funkcije</translation>
 <translation id="2901348420151309559">Nedavne fotografije i aplikacije</translation>
 <translation id="2902127500170292085">Ekstenzija <ph name="EXTENSION_NAME" /> nije uspostavila komunikaciju s ovim štampačem. Provjerite je li štampač priključen i pokušajte ponovo.</translation>
@@ -2920,7 +2919,6 @@
 <translation id="3778740492972734840">&amp;Alati za programere</translation>
 <translation id="3778868487658107119">Postavljajte mu pitanja. Dajte mu naredbe. To je vaš osobni Google, uvijek spreman pomoći.</translation>
 <translation id="3781742599892759500">Pristup mikrofonu na Linuxu</translation>
-<translation id="378312418865624974">Pročitati jedinstveni identifikator za ovaj računar</translation>
 <translation id="3784472333786002075">Kolačići su fajlovi koje kreiraju web lokacije. Postoje dvije vrste kolačića: Izvorne kolačiće kreira web lokacija koju posjećujete. Web lokacija je prikazana na traci za adresu. Kolačiće treće strane kreiraju druge web lokacije. Te web lokacije posjeduju dio sadržaja, kao što su oglasi ili slike, koji se prikazuje na web lokaciji koju posjećujete.</translation>
 <translation id="3785308913036335955">Prikaži prečice aplikacije</translation>
 <translation id="3785727820640310185">Sačuvane lozinke za ovu web lokaciju</translation>
@@ -3379,6 +3377,7 @@
 <translation id="4227605727325220318">Dodaj novi Android telefon</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Ova ekstenzija nije dozvoljena}one{Neke ekstenzije nisu dozvoljene}few{Neke ekstenzije nisu dozvoljene}other{Neke ekstenzije nisu dozvoljene}}</translation>
 <translation id="4231095370974836764">Instalirajte aplikacije i igre s Google Playa na uređaj <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Zatvori kontrole igre</translation>
 <translation id="4232375817808480934">Konfiguriranje Kerberosa</translation>
 <translation id="4235965441080806197">Otkaži prijavu</translation>
 <translation id="4236163961381003811">Otkrijte više ekstenzija</translation>
@@ -3573,7 +3572,6 @@
 <translation id="4415748029120993980">SECG eliptična krivulja secp384r1 (poznata i kao NIST P-384)</translation>
 <translation id="4416450511678320850">Nijedna aplikacija nije dostupna za ovaj sadržaj</translation>
 <translation id="4416582610654027550">Upišite važeći URL</translation>
-<translation id="4417162649853416189">Prevlačite preko slika da pretražujete koristeći <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Uvijek dozvoli host računaru <ph name="HOST" /> da postavlja kolačIće</translation>
 <translation id="4421932782753506458">Fluffy</translation>
 <translation id="4423376891418188461">Vrati postavke</translation>
@@ -3644,6 +3642,7 @@
 <translation id="449232563137139956">Web lokacije obično prikazuju slike radi ilustracije, kao što su fotografije za online trgovine ili članke</translation>
 <translation id="4492698018379445570">Pronađite ono što ste dodali u korpu za kupovinu i nastavite na plaćanje kada budete spremni</translation>
 <translation id="4493468155686877504">Preporučeno (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">Dozvoliti ovu ekstenziju na web lokaciji <ph name="SITE" />?</translation>
 <translation id="4495419450179050807">Ne prikazuj na ovoj stranici</translation>
 <translation id="4497145443434063861">PC i Chromecast na različitim WiFi mrežama (npr. 2,4GHz
     naspram 5GHz)</translation>
@@ -3712,7 +3711,6 @@
 <translation id="4550926046134589611">Neki podržani linkovi će se i dalje otvarati u aplikaciji <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Pritisnite tipku <ph name="MODIFIER_KEY_DESCRIPTION" /> da opozovete radnju</translation>
 <translation id="4553526521109675518">Morate ponovo pokrenuti Chromebook da promijenite jezik uređaja. <ph name="BEGIN_LINK_LEARN_MORE" />Saznajte više<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Prevlačite preko slika da pretražujete koristeći <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Vanjska ekstenzija je iste ili niže verzije u poređenju sa postojećom.</translation>
 <translation id="4555769855065597957">Sjena</translation>
 <translation id="4555863373929230635">Da sačuvate lozinke na svoj Google račun, prijavite se i uključite sinhroniziranje.</translation>
@@ -4563,7 +4561,6 @@
 <translation id="5427459444770871191">Rotiraj u smjeru kretanja kazaljki na satu</translation>
 <translation id="542750953150239272">Ako nastavite, pristajete da ovaj uređaj također može automatski preuzimati i instalirati ažuriranja i aplikacije s Googlea, od vašeg mobilnog operatera i proizvođača vašeg uređaja, uz mogući prijenos podataka na mobilnoj mreži. Neke od tih aplikacija mogu nuditi kupovinu unutar aplikacije.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Dostupno je ažuriranje)</translation>
-<translation id="5429373054983029602">Pretražujte ekran koristeći <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Potrebno je instalirati ažuriranje za firmver modula pouzdane platforme. Pogledajte <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Trenutno dijeljenje internetske veze</translation>
 <translation id="5431318178759467895">Boja</translation>
@@ -4636,7 +4633,6 @@
 <translation id="5494920125229734069">Odaberi sve</translation>
 <translation id="5495466433285976480">Na ovaj način će se ukloniti svi lokalni korisnici, fajlovi, podaci i druge postavke nakon sljedećeg ponovnog pokretanja uređaja. Svi korisnici će se morati ponovo prijaviti.</translation>
 <translation id="5495597166260341369">Ostavi uključen zaslon</translation>
-<translation id="549580971452855947">Prevlačite da pretražujete slike koristeći <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organizacija</translation>
 <translation id="5496730470963166430">Nije dozvoljeno slanje skočnih prozora ili korištenje preusmjeravanja</translation>
 <translation id="5497251278400702716">Ovaj fajl</translation>
@@ -5751,7 +5747,6 @@
 Imate još # ugrožene lozinke. Googleov Upravitelj lozinki preporučuje da odmah provjerite ove lozinke.}other{Ugrožena lozinka je uspješno promijenjena.
 
 Imate još # ugroženih lozinki. Googleov Upravitelj lozinki preporučuje da odmah provjerite ove lozinke.}}</translation>
-<translation id="6595792813574514527">Prevlačite da pretražujete slike koristeći <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opcije za šifriranje</translation>
 <translation id="6596816719288285829">IP adresa</translation>
 <translation id="6597017209724497268">Uzorci</translation>
@@ -7372,7 +7367,6 @@
 <translation id="8184318863960255706">Više informacija</translation>
 <translation id="8184472985242519288">Jednobrazno</translation>
 <translation id="8186609076106987817">Server nije mogao pronaći fajl.</translation>
-<translation id="8186704951085064172">Pretražite dio stranice koristeći <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Pregledajte postavke uređaja i uključite ga da biste nastavili</translation>
 <translation id="8188742492803591566">Unesite pristupni kôd prikazan na Chromecastu ili TV-u da počnete emitirati ekran.</translation>
 <translation id="8189306097519446565">Školski računi</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index 67497169..e4794326 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -1410,7 +1410,6 @@
     Si més tard decideixes que la funció Voice Match no és adequada per al teu fill o filla, només cal que la suprimeixis a la seva configuració de l'Assistent. Per veure o suprimir els clips d'àudio que gravi el teu fill o filla durant la configuració de Voice Match, ves a <ph name="VOICE_MATCH_SETTINGS_URL" /> des del seu compte.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Cerca una part de la pàgina amb <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Aquest lloc web no té permís per accedir als sensors de llum o moviment.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL de la pàgina</translation>
@@ -2034,7 +2033,6 @@
 <translation id="289695669188700754">Identificador de clau: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Aquesta configuració personalitzada se suprimirà quan tanquis totes les finestres d'incògnit</translation>
 <translation id="2897878306272793870">Confirmes que vols obrir <ph name="TAB_COUNT" /> pestanyes?</translation>
-<translation id="2900477968385519153">Cerca a la pantalla amb <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">El fitxer utilitza funcions no compatibles</translation>
 <translation id="2901348420151309559">Fotos i aplicacions recents</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> no ha pogut comunicar-se amb aquesta impressora. Comproveu que la impressora estigui connectada i torneu-ho a provar.</translation>
@@ -2907,7 +2905,6 @@
 <translation id="3778740492972734840">Eines per a &amp;desenvolupadors</translation>
 <translation id="3778868487658107119">Fes-li preguntes o demana-li que faci coses. És el teu Google personal, sempre a punt per ajudar-te.</translation>
 <translation id="3781742599892759500">Accés al micròfon de Linux</translation>
-<translation id="378312418865624974">Llegeix un identificador únic per a aquest ordinador</translation>
 <translation id="3784472333786002075">Les galetes són fitxers que creen els llocs web. N'hi ha de dos tipus: les galetes pròpies són les que crea el lloc web que visites. El lloc web es mostra a la barra d'adreces. Les galetes de tercers són les que creen altres llocs web. Aquests llocs web són els propietaris de part del contingut que es mostra al lloc web que visites, com ara els anuncis o les imatges.</translation>
 <translation id="3785308913036335955">Mostra la drecera d'aplicacions</translation>
 <translation id="3785727820640310185">Contrasenyes desades per a aquest lloc web</translation>
@@ -3559,7 +3556,6 @@
 <translation id="4415748029120993980">Corba el·líptica secp384r1 d'SECG (també coneguda com a NIST P-384)</translation>
 <translation id="4416450511678320850">No hi ha cap aplicació disponible per a aquest contingut</translation>
 <translation id="4416582610654027550">Escriu un URL vàlid</translation>
-<translation id="4417162649853416189">Arrossega imatges per cercar amb <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Permet sempre que <ph name="HOST" /> pugui emmagatzemar galetes</translation>
 <translation id="4421932782753506458">Gatet</translation>
 <translation id="4423376891418188461">Restaura la configuració</translation>
@@ -3698,7 +3694,6 @@
 <translation id="4550926046134589611">Alguns enllaços admesos es continuaran obrint a <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Prem <ph name="MODIFIER_KEY_DESCRIPTION" /> per desfer l'acció</translation>
 <translation id="4553526521109675518">Has de reiniciar el Chromebook per canviar-ne l'idioma. <ph name="BEGIN_LINK_LEARN_MORE" />Més informació<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Arrossega imatges per cercar amb <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">L'extensió externa té la mateixa versió, o una d'anterior, en comparació amb l'existent.</translation>
 <translation id="4555769855065597957">Ombra</translation>
 <translation id="4555863373929230635">Per desar les contrasenyes al teu Compte de Google, inicia-hi la sessió i activa la sincronització.</translation>
@@ -4550,7 +4545,6 @@
 <translation id="5427459444770871191">Gira en el sentit de les &amp;agulles del rellotge</translation>
 <translation id="542750953150239272">En continuar, acceptes que aquest dispositiu també pugui baixar i instal·lar automàticament actualitzacions i aplicacions de Google, de l'operador i del fabricant del dispositiu, i que és possible que ho faci utilitzant dades mòbils. Pot ser que algunes d'aquestes aplicacions ofereixin compres des de l'aplicació.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (l'actualització està disponible)</translation>
-<translation id="5429373054983029602">Cerca a la pantalla amb <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Cal instal·lar una actualització per al microprogramari del mòdul de plataforma de confiança. Consulta <ph name="TPM_FIRMWARE_UPDATE_LINK" />.</translation>
 <translation id="5430931332414098647">Compartició de xarxa instantània</translation>
 <translation id="5431318178759467895">Color</translation>
@@ -4623,7 +4617,6 @@
 <translation id="5494920125229734069">Selecciona-ho tot</translation>
 <translation id="5495466433285976480">Això suprimirà tots els usuaris, els fitxers i les dades locals, així com qualsevol altra configuració la pròxima vegada que reiniciïs. Tots els usuaris hauran de tornar a iniciar la sessió.</translation>
 <translation id="5495597166260341369">Mantén la pantalla activa</translation>
-<translation id="549580971452855947">Arrossega per cercar imatges amb <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organitza</translation>
 <translation id="5496730470963166430">Sense permís per enviar finestres emergents o utilitzar redireccions</translation>
 <translation id="5497251278400702716">Aquest fitxer</translation>
@@ -5732,7 +5725,6 @@
 Tens # contrasenya més en perill. El gestor de contrasenyes de Google recomana que la comprovis ara.}other{Les contrasenyes en perill s'han canviat correctament.
 
 Tens # contrasenyes més en perill. El gestor de contrasenyes de Google recomana que les comprovis ara.}}</translation>
-<translation id="6595792813574514527">Arrossega per cercar imatges amb <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opcions d'encriptació</translation>
 <translation id="6596816719288285829">Adreça IP</translation>
 <translation id="6597017209724497268">Mostres</translation>
@@ -7353,7 +7345,6 @@
 <translation id="8184318863960255706">Més informació</translation>
 <translation id="8184472985242519288">Uniforme</translation>
 <translation id="8186609076106987817">El servidor no ha pogut trobar el fitxer.</translation>
-<translation id="8186704951085064172">Cerca una part de la pàgina amb <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Comprova la configuració del dispositiu i activa'l per continuar</translation>
 <translation id="8188742492803591566">Introdueix el codi d'accés que es mostra al Chromecast o al televisor per començar a emetre a la pantalla.</translation>
 <translation id="8189306097519446565">Comptes de centre educatiu</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index 45e5b9d..2ff143a 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -1412,7 +1412,6 @@
     Pokud se později rozhodnete, že nechcete, aby dítě funkci Voice Match používalo, můžete ji v nastavení Asistenta jednoduše odstranit. Pokud chcete zobrazit nebo smazat zvukové úryvky, které dítě zaznamená během nastavování funkce Voice Match, přejděte v účtu dítěte na stránku <ph name="VOICE_MATCH_SETTINGS_URL" />.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Prohledat část stránky pomocí <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Tomuto webu byl zablokován přístup k senzorům pohybu nebo osvětlení.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Adresa URL stránky</translation>
@@ -2035,7 +2034,6 @@
 <translation id="289695669188700754">ID klíče: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Po zavření všech anonymních oken bude toto vlastní nastavení odstraněno</translation>
 <translation id="2897878306272793870">Určitě chcete otevřít <ph name="TAB_COUNT" /> karty (karet)?</translation>
-<translation id="2900477968385519153">Vyhledat na obrazovce pomocí <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Soubor používá prvky, které nejsou podporovány</translation>
 <translation id="2901348420151309559">Nedávné fotky a aplikace</translation>
 <translation id="2902127500170292085">Rozšíření <ph name="EXTENSION_NAME" /> s touto tiskárnou nedokáže komunikovat. Ujistěte se, zda je tiskárna zapojena, a zkuste to znovu.</translation>
@@ -2908,7 +2906,6 @@
 <translation id="3778740492972734840">&amp;Nástroje pro vývojáře</translation>
 <translation id="3778868487658107119">Můžete mu zadávat dotazy. Můžete mu udělovat příkazy. Je to váš osobní Google a je vám neustále k službám.</translation>
 <translation id="3781742599892759500">Přístup Linuxu k mikrofonu</translation>
-<translation id="378312418865624974">Číst jedinečný identifikátor tohoto počítače</translation>
 <translation id="3784472333786002075">Cookies jsou soubory vytvářené webovými stránkami. Existují dva typy souborů cookie: Soubory cookie první strany jsou vytvářeny navštíveným webem. Web je uveden na adresním řádku. Soubory cookie třetích stran jsou vytvářeny ostatními weby. Tyto weby na navštívené stránce vlastní nějaký obsah, např. reklamy nebo obrázky.</translation>
 <translation id="3785308913036335955">Zobrazit zástupce aplikací</translation>
 <translation id="3785727820640310185">Uložená hesla pro tento web</translation>
@@ -3560,7 +3557,6 @@
 <translation id="4415748029120993980">Eliptická křivka SECG secp384r1 (neboli NIST P-384)</translation>
 <translation id="4416450511678320850">Pro tento obsah nejsou k dispozici žádné aplikace</translation>
 <translation id="4416582610654027550">Zadejte platnou adresu URL</translation>
-<translation id="4417162649853416189">Přetáhnutím přes obrázky vyhledávat pomocí <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Vždy povolit hostiteli <ph name="HOST" /> nastavovat soubory cookie</translation>
 <translation id="4421932782753506458">Kotě</translation>
 <translation id="4423376891418188461">Obnovit nastavení</translation>
@@ -3698,7 +3694,6 @@
 <translation id="4550926046134589611">Některé podporované odkazy se budou nadále otevírat v aplikaci <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Stisknutím <ph name="MODIFIER_KEY_DESCRIPTION" /> vrátíte provedenou akci zpět</translation>
 <translation id="4553526521109675518">Pokud chcete změnit jazyk Chromebooku, musíte ho restartovat. <ph name="BEGIN_LINK_LEARN_MORE" />Další informace<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Přetáhnutím přes obrázky vyhledávat pomocí <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Externí rozšíření má stejnou nebo nižší verzi než stávající.</translation>
 <translation id="4555769855065597957">Stín</translation>
 <translation id="4555863373929230635">Chcete-li hesla ukládat do účtu Google, přihlaste se a zapněte synchronizaci.</translation>
@@ -4549,7 +4544,6 @@
 <translation id="5427459444770871191">Otočit &amp;ve směru hodinových ručiček</translation>
 <translation id="542750953150239272">Pokračováním vyjadřujete souhlas s tím, že toto zařízení může také automaticky stahovat a instalovat aktualizace a aplikace od společnosti Google, operátora a výrobce zařízení, a v případě potřeby k tomu smí používat mobilní datové připojení. Některé z těchto aplikací mohou nabízet nákupy v aplikaci.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (K dispozici je aktualizace)</translation>
-<translation id="5429373054983029602">Vyhledat na obrazovce pomocí <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Je potřeba nainstalovat aktualizaci firmwaru čipu TPM. Zobrazit <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Dynamický tethering</translation>
 <translation id="5431318178759467895">Barevně</translation>
@@ -4622,7 +4616,6 @@
 <translation id="5494920125229734069">Vybrat vše</translation>
 <translation id="5495466433285976480">Pokud provedete tuto akci, budou po příštím restartu odebráni všichni místní uživatelé, soubory, údaje a další nastavení. Všichni uživatelé se budou muset znovu přihlásit.</translation>
 <translation id="5495597166260341369">Ponechat displej zapnutý</translation>
-<translation id="549580971452855947">Přetažením vyhledat obrázky pomocí <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Uspořádat</translation>
 <translation id="5496730470963166430">Zákaz zobrazovat vyskakovací okna a používat přesměrování</translation>
 <translation id="5497251278400702716">Tento soubor</translation>
@@ -5734,7 +5727,6 @@
 Máte # dalšího prolomeného hesla. Správce hesel Google doporučuje ihned tato hesla zkontrolovat.}other{Úspěšně jste změnili prolomené heslo.
 
 Máte # dalších prolomených hesel. Správce hesel Google doporučuje ihned tato hesla zkontrolovat.}}</translation>
-<translation id="6595792813574514527">Přetažením vyhledat obrázky pomocí <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Možnosti šifrování</translation>
 <translation id="6596816719288285829">IP adresa</translation>
 <translation id="6597017209724497268">Vzory</translation>
@@ -7354,7 +7346,6 @@
 <translation id="8184318863960255706">Další informace</translation>
 <translation id="8184472985242519288">Obrys</translation>
 <translation id="8186609076106987817">Serveru se nepodařilo soubor najít.</translation>
-<translation id="8186704951085064172">Prohledat část stránky pomocí <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Chcete-li pokračovat, zkontrolujte nastavení zařízení a zapněte Bluetooth</translation>
 <translation id="8188742492803591566">Pokud chcete zahájit odesílání obrazovky, zadejte přístupový kód zobrazený na Chromecastu nebo televizi.</translation>
 <translation id="8189306097519446565">Školní účty</translation>
diff --git a/chrome/app/resources/generated_resources_cy.xtb b/chrome/app/resources/generated_resources_cy.xtb
index d722e190..5fb14c2 100644
--- a/chrome/app/resources/generated_resources_cy.xtb
+++ b/chrome/app/resources/generated_resources_cy.xtb
@@ -1428,7 +1428,6 @@
     Os ydych yn penderfynu yn nes ymlaen nad yw Voice Match yn iawn i'ch plentyn, tynnwch ef yn eu Gosodiadau Assistant. I weld neu ddileu'r clipiau sain y mae eich plentyn yn eu recordio wrth osod Voice Match, ewch i <ph name="VOICE_MATCH_SETTINGS_URL" /> o gyfrif eich plentyn.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Chwilio rhan o'r dudalen gyda <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Mae'r wefan hon wedi'i rhwystro rhag cael mynediad at eich synwyryddion symudiad neu oleuadau.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL tudalen</translation>
@@ -2052,7 +2051,6 @@
 <translation id="289695669188700754">Rhif adnabod yr allwedd: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Bydd y gosodiad personol hwn yn cael ei dynnu pan fyddwch yn cau eich holl ffenestri Anhysbys</translation>
 <translation id="2897878306272793870">Ydych chi'n siŵr eich bod eisiau agor <ph name="TAB_COUNT" /> o dabiau?</translation>
-<translation id="2900477968385519153">Chwilio'ch Sgrîn gyda <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Mae'r ffeil yn defnyddio nodweddion na chefnogir</translation>
 <translation id="2901348420151309559">Lluniau ac apiau diweddar</translation>
 <translation id="2902127500170292085">Ni allai <ph name="EXTENSION_NAME" /> gyfathrebu â'r argraffydd hwn. Gwnewch yn siŵr bod yr argraffydd wedi'i blygio i mewn a rhowch gynnig arall arni.</translation>
@@ -2925,7 +2923,6 @@
 <translation id="3778740492972734840">&amp;Offer datblygwr</translation>
 <translation id="3778868487658107119">Holwch gwestiynau iddo. Rhowch orchmynion iddo. Eich Google personol chi, wastad yn barod i helpu.</translation>
 <translation id="3781742599892759500">Mynediad meicroffon Linux</translation>
-<translation id="378312418865624974">Darllen dynodwr unigryw ar gyfer y cyfrifiadur hwn</translation>
 <translation id="3784472333786002075">Ffeiliau sy'n cael eu creu gan wefannau yw cwcis. Mae dau fath o gwcis: Mae cwcis parti cyntaf yn cael eu creu gan y wefan rydych yn ymweld â hi. Dangosir y wefan yn y bar cyfeiriad. Mae cwcis trydydd parti yn cael eu creu gan wefannau eraill. Mae'r gwefannau hyn yn berchen ar rywfaint o'r cynnwys, megis hysbysebion neu luniau, a welwch ar y wefan rydych yn ymweld â hi.</translation>
 <translation id="3785308913036335955">Dangos Llwybrau Byr Apiau</translation>
 <translation id="3785727820640310185">Cyfrineiriau sydd wedi'u cadw ar gyfer y wefan hon</translation>
@@ -3578,7 +3575,6 @@
 <translation id="4415748029120993980">Cromlin eliptig SECG secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">Nid oes unrhyw apiau ar gael ar gyfer y cynnwys hwn</translation>
 <translation id="4416582610654027550">Teipiwch URL dilys</translation>
-<translation id="4417162649853416189">Llusgo dros Luniau i Chwilio gyda <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Caniatáu i <ph name="HOST" /> osod cwcis bob amser</translation>
 <translation id="4421932782753506458">Gwlanog</translation>
 <translation id="4423376891418188461">Adfer Gosodiadau</translation>
@@ -3717,7 +3713,6 @@
 <translation id="4550926046134589611">Bydd rhai dolenni a gefnogir yn dal i agor yn <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Pwyswch <ph name="MODIFIER_KEY_DESCRIPTION" /> i ddadwneud</translation>
 <translation id="4553526521109675518">Mae angen i chi ailgychwyn eich Chromebook i newid iaith y ddyfais. <ph name="BEGIN_LINK_LEARN_MORE" />Dysgu rhagor<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Llusgo dros luniau i chwilio gyda <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Mae'r estyniad allanol ar yr un fersiwn neu'r fersiwn is o'i gymharu â'r un bresennol.</translation>
 <translation id="4555769855065597957">Cysgod</translation>
 <translation id="4555863373929230635">I gadw cyfrineiriau i'ch Cyfrif Google, mewngofnodwch a throwch gysoni ymlaen.</translation>
@@ -4568,7 +4563,6 @@
 <translation id="5427459444770871191">Cylchdroi yn &amp;Glocwedd</translation>
 <translation id="542750953150239272">Drwy barhau, rydych yn cytuno y gall y ddyfais hon hefyd lawrlwytho a gosod diweddariadau ac apiau yn awtomatig gan Google, eich cludwr, a gwneuthurwr eich dyfais, gan ddefnyddio data symudol o bosib. Mae'n bosib y bydd rhai o'r apiau hyn yn cynnig pryniannau o fewn yr ap.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Mae diweddariad ar gael)</translation>
-<translation id="5429373054983029602">Chwilio'ch sgrîn gyda <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Mae angen gosod diweddariad ar gyfer cadarnwedd y Modiwl Platfform Cymeradwy. Gweler <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Rhannu Cysylltiad Sydyn</translation>
 <translation id="5431318178759467895">Lliw</translation>
@@ -4641,7 +4635,6 @@
 <translation id="5494920125229734069">Dewis pob un</translation>
 <translation id="5495466433285976480">Bydd hyn yn tynnu'r holl ddefnyddwyr lleol, ffeiliau, data a gosodiadau eraill ar ôl i chi ailgychwyn nesaf. Bydd angen i bob defnyddiwr fewngofnodi eto.</translation>
 <translation id="5495597166260341369">Cadw'r sgrîn ymlaen</translation>
-<translation id="549580971452855947">Llusgo i chwilio lluniau gyda <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Trefnu</translation>
 <translation id="5496730470963166430">Ni chaniateir anfon ffenestri naid na defnyddio ailgyfeiriadau</translation>
 <translation id="5497251278400702716">Y ffeil hon</translation>
@@ -5760,7 +5753,6 @@
 Mae gennych # chyfrinair arall sydd wedi'u darganfod. Mae Rheolwr Cyfrineiriau Google yn argymell gwirio'r cyfrineiriau hyn ar unwaith.}other{Wedi newid y cyfrinair a ddarganfuwyd yn llwyddiannus.
 
 Mae gennych # cyfrinair arall sydd wedi'u darganfod. Mae Rheolwr Cyfrineiriau Google yn argymell gwirio'r cyfrineiriau hyn ar unwaith.}}</translation>
-<translation id="6595792813574514527">Llusgo i Chwilio Lluniau gyda <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Dewisiadau amgryptio</translation>
 <translation id="6596816719288285829">Cyfeiriad IP</translation>
 <translation id="6597017209724497268">Samplau</translation>
@@ -7380,7 +7372,6 @@
 <translation id="8184318863960255706">Rhagor o wybodaeth</translation>
 <translation id="8184472985242519288">Unffurf</translation>
 <translation id="8186609076106987817">Ni allai'r gweinydd ddod o hyd i'r ffeil.</translation>
-<translation id="8186704951085064172">Chwilio Rhan o'r Dudalen gyda <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Gwiriwch osodiadau eich dyfais a throwch Bluetooth ymlaen i barhau</translation>
 <translation id="8188742492803591566">Rhowch y cod mynediad a ddangosir ar y Chromecast neu'r teledu i ddechrau castio eich sgrîn.</translation>
 <translation id="8189306097519446565">Cyfrifon ysgol</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 6ec1eff..72a8eb4 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -1426,7 +1426,6 @@
     Hvis du senere beslutter dig for, at dit barn ikke skal have Voice Match, kan du fjerne funktionen fra indstillingerne for Google Assistent. Du kan se eller slette lydklip, som dit barn optager under konfigurationen af Voice Match, ved at gå til <ph name="VOICE_MATCH_SETTINGS_URL" /> via dit barns konto.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Søg på en del af siden med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Dette website er blevet blokeret fra at få adgang til dine bevægelses- eller lyssensorer.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Webadresse</translation>
@@ -2050,7 +2049,6 @@
 <translation id="289695669188700754">Nøgle-id: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Denne tilpassede indstilling fjernes, når du lukker alle inkognitovinduer</translation>
 <translation id="2897878306272793870">Er du sikker på, at du vil åbne <ph name="TAB_COUNT" /> faner?</translation>
-<translation id="2900477968385519153">Søg på din skærm med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Filen anvender funktioner, der ikke understøttes</translation>
 <translation id="2901348420151309559">Seneste billeder og apps</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> kunne ikke kommunikere med denne printer. Sørg for, at printeren er tilsluttet, og prøv igen.</translation>
@@ -2923,7 +2921,6 @@
 <translation id="3778740492972734840">&amp;Udviklerværktøjer</translation>
 <translation id="3778868487658107119">Stil den spørgsmål. Giv den opgaver. Den er dit personlige Google, der altid er parat til at hjælpe dig.</translation>
 <translation id="3781742599892759500">Adgang til mikrofonen i Linux</translation>
-<translation id="378312418865624974">Læs et unikt id for denne computer</translation>
 <translation id="3784472333786002075">Cookies er filer, som oprettes af websites. Der findes to slags cookies: Førstepartscookies oprettes af det website, du besøger. Websitet vises i adresselinjen. Tredjepartscookies oprettes af andre websites. Disse websites ejer noget af indholdet, f.eks. de annoncer eller billeder, der vises på det website, du besøger.</translation>
 <translation id="3785308913036335955">Vis genveje for Apps</translation>
 <translation id="3785727820640310185">Gemte adgangskoder til dette website</translation>
@@ -3576,7 +3573,6 @@
 <translation id="4415748029120993980">SECG elliptisk kurve secp384r1 (også kaldet NIST P-384)</translation>
 <translation id="4416450511678320850">Der er ingen tilgængelige apps for dette indhold</translation>
 <translation id="4416582610654027550">Angiv en gyldig webadresse</translation>
-<translation id="4417162649853416189">Træk over billeder for at søge med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Giv altid <ph name="HOST" /> tilladelse til at gemme cookies</translation>
 <translation id="4421932782753506458">Pjuske</translation>
 <translation id="4423376891418188461">Gendan indstillinger</translation>
@@ -3715,7 +3711,6 @@
 <translation id="4550926046134589611">Nogle understøttede links åbnes fortsat i <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Tryk på <ph name="MODIFIER_KEY_DESCRIPTION" /> for at fortryde</translation>
 <translation id="4553526521109675518">Du skal genstarte din Chromebook for at ændre enhedens sprog. <ph name="BEGIN_LINK_LEARN_MORE" />Få flere oplysninger<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Træk over billeder for at søge med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Ekstern udvidelse er den samme version eller en ældre version end den eksisterende.</translation>
 <translation id="4555769855065597957">Skygge</translation>
 <translation id="4555863373929230635">Du skal logge på og aktivere synkronisering for at gemme adgangskoder på din Google-konto.</translation>
@@ -4566,7 +4561,6 @@
 <translation id="5427459444770871191">Roter med &amp;uret</translation>
 <translation id="542750953150239272">Ved at fortsætte accepterer du, at denne enhed også automatisk kan downloade og installere opdateringer og apps fra Google, dit mobilselskab og enhedsproducenten, muligvis ved hjælp af mobildata. Nogle af disse apps tilbyder muligvis køb i appen.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (tilgængelig opdatering)</translation>
-<translation id="5429373054983029602">Søg på din skærm med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Der skal installeres en opdatering til Trusted Platform Module-firmwaren. Se <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Øjeblikkelig netdeling</translation>
 <translation id="5431318178759467895">Farve</translation>
@@ -4639,7 +4633,6 @@
 <translation id="5494920125229734069">Vælg alle</translation>
 <translation id="5495466433285976480">Dette vil fjerne alle lokale brugere, filer, data og andre indstillinger, når du genstarter næste gang. Alle brugere skal logge ind igen.</translation>
 <translation id="5495597166260341369">Hold skærmen tændt</translation>
-<translation id="549580971452855947">Træk for at søge på billeder med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organiser</translation>
 <translation id="5496730470963166430">Har ikke tilladelse til at sende pop op-vinduer eller bruge omdirigeringer</translation>
 <translation id="5497251278400702716">Denne fil</translation>
@@ -5752,7 +5745,6 @@
 Du har # anden kompromitteret adgangskode. Google Adgangskodeadministrator anbefaler, at du tjekker denne adgangskode nu.}other{Den kompromitterede adgangskode blev ændret.
 
 Du har # andre kompromitterede adgangskoder. Google Adgangskodeadministrator anbefaler, at du tjekker disse adgangskoder nu.}}</translation>
-<translation id="6595792813574514527">Træk for at søge på billeder med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Krypteringsmuligheder</translation>
 <translation id="6596816719288285829">IP-adresse</translation>
 <translation id="6597017209724497268">Prøver</translation>
@@ -6539,7 +6531,7 @@
 <translation id="7404065585741198296">Din telefon med et USB-kabel</translation>
 <translation id="7405938989981604410">{NUM_HOURS,plural, =1{Sikkerhedstjekket blev udført for 1 time siden}one{Sikkerhedstjekket blev udført for {NUM_HOURS} time siden}other{Sikkerhedstjekket blev udført for {NUM_HOURS} timer siden}}</translation>
 <translation id="740624631517654988">Pop op-vindue blokeret</translation>
-<translation id="7407430846095439694">Importér, og tilknyt</translation>
+<translation id="7407430846095439694">Importér og tilknyt</translation>
 <translation id="7407504355934009739">Folk blokerer som regel notifikationer fra dette website</translation>
 <translation id="740810853557944681">Tilføj en printerserver</translation>
 <translation id="7409549334477097887">Ekstra stor</translation>
@@ -7372,7 +7364,6 @@
 <translation id="8184318863960255706">Flere oplysninger</translation>
 <translation id="8184472985242519288">Ensartet</translation>
 <translation id="8186609076106987817">Serveren kunne ikke finde filen.</translation>
-<translation id="8186704951085064172">Søg på en del af siden med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Tjek enhedens indstillinger, og aktivér Bluetooth for at fortsætte</translation>
 <translation id="8188742492803591566">Angiv den adgangskode, der vises på Chromecast-enheden eller fjernsynet, for at komme i gang med at caste din skærm.</translation>
 <translation id="8189306097519446565">Skolekonti</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index f74a5d3..8672fdf 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -1407,7 +1407,6 @@
     Falls du dich später gegen Voice Match entscheidest, entferne die Funktion einfach in den Assistant-Einstellungen deines Kindes. Unter <ph name="VOICE_MATCH_SETTINGS_URL" /> kannst du die Audioclips, die dein Kind während der Voice Match-Einrichtung aufgenommen hat, im Konto deines Kindes aufrufen oder löschen.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Mit <ph name="VISUAL_SEARCH_PROVIDER" /> auf einem Teil der Seite suchen</translation>
 <translation id="2309620859903500144">Diese Website darf nicht auf meine Bewegungs- oder Lichtsensoren zugreifen.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Seiten-URL</translation>
@@ -2031,7 +2030,6 @@
 <translation id="289695669188700754">Schlüssel-ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Diese benutzerdefinierte Einstellung wird entfernt, wenn du alle deine Inkognitofenster schließt</translation>
 <translation id="2897878306272793870">Möchtest du wirklich <ph name="TAB_COUNT" /> Tabs öffnen?</translation>
-<translation id="2900477968385519153">Mit <ph name="VISUAL_SEARCH_PROVIDER" /> auf dem Bildschirm suchen</translation>
 <translation id="290105521672621980">Datei verwendet nicht unterstützte Funktionen</translation>
 <translation id="2901348420151309559">Letzte Fotos und Apps</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> konnte nicht mit diesem Drucker kommunizieren. Vergewissere dich, dass der Drucker angeschlossen ist, und versuche es dann erneut.</translation>
@@ -2904,7 +2902,6 @@
 <translation id="3778740492972734840">E&amp;ntwicklertools</translation>
 <translation id="3778868487658107119">Du kannst ihm Fragen stellen und ihn Dinge erledigen lassen. Er ist immer für dich da.</translation>
 <translation id="3781742599892759500">Mikrofonzugriff für Linux</translation>
-<translation id="378312418865624974">Eindeutige Kennung für diesen Computer lesen</translation>
 <translation id="3784472333786002075">Cookies sind Dateien, die durch Websites erstellt werden. Es gibt zwei Arten von Cookies: Eigene Cookies werden von der Website erstellt, die du besuchst. Die Website wird in der Adressleiste angezeigt. Drittanbieter-Cookies werden von anderen Websites erstellt. Diesen Websites gehören einige der Inhalte, wie z. B. Werbeanzeigen oder Bilder, die du auf der besuchten Website siehst.</translation>
 <translation id="3785308913036335955">Verknüpfung "Apps" anzeigen</translation>
 <translation id="3785727820640310185">Für diese Website gespeicherte Passwörter</translation>
@@ -3557,7 +3554,6 @@
 <translation id="4415748029120993980">Elliptische SECG-Kurve secp384r1 (NIST P-384)</translation>
 <translation id="4416450511678320850">Für diesen Inhalt sind keine Apps verfügbar</translation>
 <translation id="4416582610654027550">Gib eine gültige URL ein</translation>
-<translation id="4417162649853416189">Zum Suchen mit <ph name="VISUAL_SEARCH_PROVIDER" /> Maus über Bilder ziehen</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> darf immer Cookies setzen</translation>
 <translation id="4421932782753506458">Miez</translation>
 <translation id="4423376891418188461">Einstellungen wiederherstellen</translation>
@@ -3628,6 +3624,7 @@
 <translation id="449232563137139956">Websites zeigen zur Veranschaulichung normalerweise Bilder an, z. B. Fotos in Onlineshops oder Nachrichtenartikeln</translation>
 <translation id="4492698018379445570">Hier findest du, was du in deine Einkaufswagen gelegt hast, und kannst bezahlen, wenn du bereit bist</translation>
 <translation id="4493468155686877504">Empfohlen (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">Diese Erweiterung auf <ph name="SITE" /> erlauben?</translation>
 <translation id="4495419450179050807">Nicht auf dieser Seite anzeigen</translation>
 <translation id="4497145443434063861">Der PC und Chromecast befinden sich in verschiedenen WLANs, z. B. 2,4 GHz und 5 GHz</translation>
 <translation id="4500114933761911433"><ph name="PLUGIN_NAME" /> ist abgestürzt</translation>
@@ -3695,7 +3692,6 @@
 <translation id="4550926046134589611">Einige unterstützte Links werden weiterhin in <ph name="APP_NAME" /> geöffnet.</translation>
 <translation id="4551763574344810652">"<ph name="MODIFIER_KEY_DESCRIPTION" />" drücken, um Aktion rückgängig zu machen</translation>
 <translation id="4553526521109675518">Du musst dein Chromebook neu starten, um die Gerätesprache zu ändern. <ph name="BEGIN_LINK_LEARN_MORE" />Weitere Informationen<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Zum Suchen mit <ph name="VISUAL_SEARCH_PROVIDER" /> Maus über Bilder ziehen</translation>
 <translation id="4554591392113183336">Die Version der externen Erweiterung ist identisch mit der vorhandenen Version oder niedriger als diese.</translation>
 <translation id="4555769855065597957">Schatten</translation>
 <translation id="4555863373929230635">Melde dich an und aktiviere die Synchronisierung, um Passwörter in deinem Google-Konto zu speichern.</translation>
@@ -4546,7 +4542,6 @@
 <translation id="5427459444770871191">Im &amp;Uhrzeigersinn drehen</translation>
 <translation id="542750953150239272">Wenn du fortfährst, stimmst du zu, dass auf diesem Gerät auch automatisch Updates und Apps von Google, von deinem Mobilfunkanbieter und vom Hersteller deines Geräts heruntergeladen und installiert werden dürfen, möglicherweise über eine mobile Datenverbindung. Bei einigen dieser Apps werden eventuell In-App-Käufe angeboten.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Update verfügbar)</translation>
-<translation id="5429373054983029602">Mit <ph name="VISUAL_SEARCH_PROVIDER" /> auf dem Bildschirm suchen</translation>
 <translation id="542948651837270806">Für das Trusted Platform Module muss ein Firmwareupdate installiert werden. Weitere Informationen: <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Instant Tethering</translation>
 <translation id="5431318178759467895">Farbe</translation>
@@ -4619,7 +4614,6 @@
 <translation id="5494920125229734069">Alle auswählen</translation>
 <translation id="5495466433285976480">Dadurch werden beim nächsten Neustart alle lokalen Nutzer, Dateien, Daten und anderen Einstellungen entfernt und alle Nutzer müssen sich erneut anmelden.</translation>
 <translation id="5495597166260341369">Display bleibt aktiv</translation>
-<translation id="549580971452855947">Zum Suchen in Bildern mit <ph name="VISUAL_SEARCH_PROVIDER" /> Maus ziehen</translation>
 <translation id="5496587651328244253">Organisieren</translation>
 <translation id="5496730470963166430">Dürfen keine Pop-ups senden oder Weiterleitungen verwenden</translation>
 <translation id="5497251278400702716">Diese Datei</translation>
@@ -5727,7 +5721,6 @@
 Du hast # weiteres gehacktes Passwort. Der Google Passwortmanager empfiehlt, dieses Passwort jetzt zu prüfen.}other{Das gehackte Passwort wurde erfolgreich geändert.
 
 Du hast # weitere gehackte Passwörter. Der Google Passwortmanager empfiehlt, diese Passwörter jetzt zu prüfen.}}</translation>
-<translation id="6595792813574514527">Zum Suchen in Bildern mit <ph name="VISUAL_SEARCH_PROVIDER" /> Maus ziehen</translation>
 <translation id="6596325263575161958">Verschlüsselungsoptionen</translation>
 <translation id="6596816719288285829">IP-Adresse</translation>
 <translation id="6597017209724497268">Proben</translation>
@@ -7347,7 +7340,6 @@
 <translation id="8184318863960255706">Weitere Informationen</translation>
 <translation id="8184472985242519288">Einheitlich</translation>
 <translation id="8186609076106987817">Die Datei konnte nicht gefunden werden.</translation>
-<translation id="8186704951085064172">Mit <ph name="VISUAL_SEARCH_PROVIDER" /> auf einem Teil der Seite suchen</translation>
 <translation id="8188389033983459049">Überprüfe deine Geräteeinstellungen und aktiviere Bluetooth, um fortzufahren</translation>
 <translation id="8188742492803591566">Gib den Zugriffscode ein, der auf Chromecast oder dem Fernseher angezeigt wird, um deinen Bildschirm zu streamen.</translation>
 <translation id="8189306097519446565">Konten von Bildungseinrichtungen</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 8966ac8..cdb51e8 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -182,6 +182,7 @@
 <translation id="1166583374608765787">Έλεγχος ενημέρωσης ονόματος</translation>
 <translation id="1166596238782048887">Η καρτέλα <ph name="TAB_TITLE" /> ανήκει στο γραφείο <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">Άνοιγμα σε <ph name="TIME_REMAINING" />...</translation>
+<translation id="1169266963600477608">Στοιχεία ελέγχου παιχνιδιού</translation>
 <translation id="1169435433292653700">Το αρχείο <ph name="FILE_NAME" /> έχει ευαίσθητα ή επικίνδυνα δεδομένα. Ο διαχειριστής σας λέει: <ph name="CUSTOM_MESSAGE" />.</translation>
 <translation id="1171135284592304528">Επισήμανση του αντικειμένου με εστίαση στο πληκτρολόγιο όταν αλλάζει</translation>
 <translation id="1171515578268894665">Το <ph name="ORIGIN" /> θέλει να συνδεθεί σε μια συσκευή HID</translation>
@@ -1425,7 +1426,6 @@
     Εάν αποφασίσετε αργότερα ότι το Voice Match δεν είναι κατάλληλο για το παιδί σας, μπορείτε απλώς να το καταργήσετε από τις Ρυθμίσεις του Βοηθού. Για να προβάλετε ή να διαγράψετε τα αποσπάσματα ήχου που εγγράφει το παιδί σας κατά τη ρύθμιση του Voice Match, μεταβείτε στο <ph name="VOICE_MATCH_SETTINGS_URL" /> από τον λογαριασμό του παιδιού σας.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Αναζήτηση τμήματος της σελίδας με το <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Έχει αποκλειστεί η πρόσβαση αυτού του ιστοτόπου στους αισθητήρες κίνησης και φωτός.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL σελίδας</translation>
@@ -2049,7 +2049,6 @@
 <translation id="289695669188700754">Αναγνωριστικό κλειδιού: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Αυτή η προσαρμοσμένη ρύθμιση θα καταργηθεί όταν κλείσετε όλα τα παράθυρα ανώνυμης περιήγησης</translation>
 <translation id="2897878306272793870">Είστε βέβαιοι ότι θέλετε να ανοίξετε <ph name="TAB_COUNT" /> καρτέλες;</translation>
-<translation id="2900477968385519153">Αναζήτηση στην οθόνη σας με το <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Το αρχείο χρησιμοποιεί μη υποστηριζόμενες λειτουργίες</translation>
 <translation id="2901348420151309559">Πρόσφατες φωτογραφίες και εφαρμογές</translation>
 <translation id="2902127500170292085">Δεν ήταν δυνατή η επικοινωνία της επέκτασης <ph name="EXTENSION_NAME" /> με αυτόν τον εκτυπωτή. Βεβαιωθείτε ότι ο εκτυπωτής είναι συνδεδεμένος και δοκιμάστε ξανά.</translation>
@@ -2922,7 +2921,6 @@
 <translation id="3778740492972734840">&amp;Εργαλεία για Προγραμματιστές</translation>
 <translation id="3778868487658107119">Κάντε του ερωτήσεις. Πείτε του να κάνει πράγματα. Είναι το προσωπικό σας Google, πάντα έτοιμο να σας βοηθήσει.</translation>
 <translation id="3781742599892759500">Πρόσβαση μικροφώνου Linux</translation>
-<translation id="378312418865624974">Ανάγνωση μοναδικού αναγνωριστικού για αυτόν τον υπολογιστή</translation>
 <translation id="3784472333786002075">Τα cookie είναι αρχεία που δημιουργούνται από ιστοτόπους. Υπάρχουν δύο τύποι cookie: Τα cookie πρώτου μέρους δημιουργούνται από τον ιστότοπο που επισκέπτεστε. Ο ιστότοπος εμφανίζεται στη γραμμή διευθύνσεων. Τα cookie τρίτου μέρους δημιουργούνται από άλλους ιστοτόπους. Αυτοί οι ιστότοποι διαθέτουν κάποιο περιεχόμενο, όπως διαφημίσεις ή εικόνες, το οποίο μπορείτε να δείτε στον ιστότοπο που επισκέπτεστε.</translation>
 <translation id="3785308913036335955">Εμφάνιση συντόμευσης εφαρμογών</translation>
 <translation id="3785727820640310185">Αποθηκευμένοι κωδικοί πρόσβασης για αυτόν τον ιστότοπο</translation>
@@ -3381,6 +3379,7 @@
 <translation id="4227605727325220318">Προσθήκη νέου τηλεφώνου Android</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Δεν επιτρέπεται αυτή η επέκταση}other{Δεν επιτρέπονται ορισμένες επεκτάσεις}}</translation>
 <translation id="4231095370974836764">Εγκαταστήστε εφαρμογές και παιχνίδια από το Google Play στη συσκευή <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Κλείσιμο στοιχείων ελέγχου παιχνιδιού</translation>
 <translation id="4232375817808480934">Διαμόρφωση του Kerberos</translation>
 <translation id="4235965441080806197">Ακύρωση σύνδεσης</translation>
 <translation id="4236163961381003811">Εξερεύνηση περισσότερων επεκτάσεων</translation>
@@ -3575,7 +3574,6 @@
 <translation id="4415748029120993980">Ελλειπτική καμπύλη SECG secp384r1 (επίσης γνωστή ως NIST P-384)</translation>
 <translation id="4416450511678320850">Δεν υπάρχουν διαθέσιμες εφαρμογές για αυτό το περιεχόμενο</translation>
 <translation id="4416582610654027550">Πληκτρολογήστε ένα έγκυρο URL</translation>
-<translation id="4417162649853416189">Σύρετε πάνω από εικόνες για αναζήτηση με το <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Να επιτρέπεται πάντα στο <ph name="HOST" /> να ορίζει cookie</translation>
 <translation id="4421932782753506458">Χνουδωτός</translation>
 <translation id="4423376891418188461">Επαναφορά ρυθμίσεων</translation>
@@ -3646,6 +3644,7 @@
 <translation id="449232563137139956">Οι ιστότοποι προβάλλουν συνήθως εικόνες για την απόδοση του εικονογραφικού περιεχομένου, όπως οι φωτογραφίες στα ηλεκτρονικά καταστήματα ή στα άρθρα ειδήσεων.</translation>
 <translation id="4492698018379445570">Βρείτε το περιεχόμενο που προσθέσατε στα καλάθια αγορών και ρίξτε μια ματιά όταν είστε έτοιμοι.</translation>
 <translation id="4493468155686877504">Προτεινόμενο (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">Επιτρέπετε αυτήν την επέκταση στο <ph name="SITE" />;</translation>
 <translation id="4495419450179050807">Να μην γίνεται εμφάνιση σε αυτήν τη σελίδα</translation>
 <translation id="4497145443434063861">PC και Chromecast σε διαφορετικά δίκτυα Wi-Fi (π.χ. 2,4 GHz
     και 5 GHz)</translation>
@@ -3714,7 +3713,6 @@
 <translation id="4550926046134589611">Ορισμένοι υποστηριζόμενοι σύνδεσμοι θα εξακολουθούν να ανοίγουν στην εφαρμογή <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Πατήστε <ph name="MODIFIER_KEY_DESCRIPTION" /> για αναίρεση.</translation>
 <translation id="4553526521109675518">Πρέπει να επανεκκινήσετε το Chromebook για να αλλάξετε τη γλώσσα συσκευής. <ph name="BEGIN_LINK_LEARN_MORE" />Μάθετε περισσότερα<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Σύρετε πάνω από εικόνες για αναζήτηση με το <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Η εξωτερική επέκταση είναι στην ίδια ή προγενέστερη έκδοση σε σύγκριση με την υπάρχουσα.</translation>
 <translation id="4555769855065597957">Σκιά</translation>
 <translation id="4555863373929230635">Για να αποθηκεύσετε κωδικούς πρόσβασης στον Λογαριασμό σας Google, συνδεθείτε και ενεργοποιήστε τον συγχρονισμό.</translation>
@@ -4565,7 +4563,6 @@
 <translation id="5427459444770871191">Περιστροφή &amp;προς τα δεξιά</translation>
 <translation id="542750953150239272">Εάν συνεχίσετε, αποδέχεστε ότι αυτή η συσκευή θα μπορεί επίσης να κατεβάζει και να εγκαθιστά αυτόματα ενημερώσεις και εφαρμογές από την Google, την εταιρεία κινητής τηλεφωνίας που χρησιμοποιείτε και τον κατασκευαστή της συσκευής σας, πιθανόν με τη χρήση δεδομένων κινητής τηλεφωνίας. Μερικές από αυτές τις εφαρμογές μπορεί να προσφέρουν αγορές εντός εφαρμογής.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Διατίθεται ενημέρωση)</translation>
-<translation id="5429373054983029602">Αναζήτηση στην οθόνη σας με το <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Απαιτείται η εγκατάσταση μιας ενημέρωσης υλικολογισμικού της Μονάδας αξιόπιστης πλατφόρμας. Επισκεφτείτε τη διεύθυνση <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Άμεση σύνδεση</translation>
 <translation id="5431318178759467895">Χρώμα</translation>
@@ -4638,7 +4635,6 @@
 <translation id="5494920125229734069">Επιλογή όλων</translation>
 <translation id="5495466433285976480">Μετά την επόμενη επανεκκίνηση, θα καταργηθούν όλοι οι χρήστες, τα αρχεία και οι υπόλοιπες ρυθμίσεις. Όλοι οι χρήστες θα πρέπει να συνδεθούν ξανά.</translation>
 <translation id="5495597166260341369">Διατήρηση ενεργοποιημένης οθόνης</translation>
-<translation id="549580971452855947">Σύρετε για αναζήτηση εικόνων με το <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Οργάνωση</translation>
 <translation id="5496730470963166430">Δεν επιτρέπεται να αποστέλλουν αναδυόμενα παράθυρα ή να χρησιμοποιούν ανακατευθύνσεις</translation>
 <translation id="5497251278400702716">Αυτό το αρχείο</translation>
@@ -5750,7 +5746,6 @@
 Έχετε ακόμη # παραβιασμένο κωδικό πρόσβασης. Ο Διαχειριστής κωδικών πρόσβασης της Google συνιστά τον άμεσο έλεγχο αυτού του κωδικού πρόσβασης.}other{Ο παραβιασμένος κωδικός πρόσβασης άλλαξε με επιτυχία.
 
 Έχετε ακόμη # παραβιασμένους κωδικούς πρόσβασης. Ο Διαχειριστής κωδικών πρόσβασης της Google συνιστά τον άμεσο έλεγχο αυτών των κωδικών πρόσβασης.}}</translation>
-<translation id="6595792813574514527">Σύρετε για αναζήτηση εικόνων με το <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Επιλογές κρυπτογράφησης</translation>
 <translation id="6596816719288285829">Διεύθυνση IP</translation>
 <translation id="6597017209724497268">Δείγματα</translation>
@@ -7371,7 +7366,6 @@
 <translation id="8184318863960255706">Περισσότερες πληροφορίες</translation>
 <translation id="8184472985242519288">Ομοιόμορφο</translation>
 <translation id="8186609076106987817">Δεν ήταν δυνατός ο εντοπισμός του αρχείου από τον διακομιστή.</translation>
-<translation id="8186704951085064172">Αναζήτηση τμήματος της σελίδας με το <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Ελέγξτε τις ρυθμίσεις της συσκευής σας και ενεργοποιήστε την για να συνεχίσετε</translation>
 <translation id="8188742492803591566">Εισαγάγετε τον κωδικό πρόσβασης που εμφανίζεται στο Chromecast ή την τηλεόραση για να ξεκινήσετε τη μετάδοση της οθόνης σας.</translation>
 <translation id="8189306097519446565">Σχολικοί λογαριασμοί</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index 0f62dfa..529dbec 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -204,6 +204,7 @@
 <translation id="1188807932851744811">Log not uploaded.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{Access a file stored on your computer}other{Access # files stored on your computer}}</translation>
 <translation id="119092896208640858">To clear browsing data from this device only, while keeping it in your Google Account, <ph name="BEGIN_LINK" />sign out<ph name="END_LINK" />.</translation>
+<translation id="1191353342579061195">Choose the theme that fits your needs. To change your theme, wallpaper, screen saver and more, just right-click on the desktop.</translation>
 <translation id="1192706927100816598">{0,plural, =1{You will be automatically signed out in # second.
 <ph name="DOMAIN" /> requires you to keep your smart card inserted.}other{You will be automatically signed out in # seconds.
 <ph name="DOMAIN" /> requires you to keep your smart card inserted.}}</translation>
@@ -1305,6 +1306,7 @@
 <translation id="2220409419896228519">Add bookmarks to your favourite Google apps</translation>
 <translation id="2220529011494928058">Report an issue</translation>
 <translation id="2220572644011485463">PIN or password</translation>
+<translation id="222115440608612541">Switch themes at sunrise and sunset</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">Unnamed media source</translation>
 <translation id="2224444042887712269">This setting belongs to <ph name="OWNER_EMAIL" />.</translation>
@@ -1426,7 +1428,6 @@
     If you decide later that Voice Match isn’t right for your child, simply remove it in their Assistant settings. To view or delete the audio clips that your child records during Voice Match setup, go to <ph name="VOICE_MATCH_SETTINGS_URL" /> from your child’s account.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Search part of the page with <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">This site has been blocked from accessing your motion or light sensors.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Page URL</translation>
@@ -1534,6 +1535,7 @@
 <translation id="241082044617551207">Unknown plug-in</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">Keyboard function keys</translation>
+<translation id="2418307627282545839">Keep things bright and airy</translation>
 <translation id="2419131370336513030">View installed apps</translation>
 <translation id="2419706071571366386">For security, sign out when your computer isn't being used.</translation>
 <translation id="2422125132043002186">Linux restore cancelled</translation>
@@ -2050,7 +2052,6 @@
 <translation id="289695669188700754">Key ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">This custom setting will be removed when you close all your incognito windows</translation>
 <translation id="2897878306272793870">Are you sure that you want to open <ph name="TAB_COUNT" /> tabs?</translation>
-<translation id="2900477968385519153">Search Your Screen with <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">File uses unsupported features</translation>
 <translation id="2901348420151309559">Recent photos and apps</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> could not communicate with this printer. Make sure that the printer is plugged in and try again.</translation>
@@ -2923,7 +2924,6 @@
 <translation id="3778740492972734840">&amp;Developer tools</translation>
 <translation id="3778868487658107119">Ask it questions. Tell it to do things. It's your personal Google, always ready to help.</translation>
 <translation id="3781742599892759500">Linux microphone access</translation>
-<translation id="378312418865624974">Read a unique identifier for this computer</translation>
 <translation id="3784472333786002075">Cookies are files created by websites. There are two types of cookies: first-party cookies are created by the site that you visit. The site is shown on the address bar. Third-party cookies are created by other sites. These sites own some of the content, like ads or images, that you see on the website that you visit.</translation>
 <translation id="3785308913036335955">Show Apps Shortcut</translation>
 <translation id="3785727820640310185">Saved passwords for this site</translation>
@@ -3577,7 +3577,6 @@
 <translation id="4415748029120993980">SECG elliptic curve secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">No apps available for this content</translation>
 <translation id="4416582610654027550">Type a valid URL</translation>
-<translation id="4417162649853416189">Drag over Images to Search with <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Always allow <ph name="HOST" /> to set cookies</translation>
 <translation id="4421932782753506458">Fluffy</translation>
 <translation id="4423376891418188461">Restore Settings</translation>
@@ -3717,7 +3716,6 @@
 <translation id="4550926046134589611">Some supported links will still open in <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Press <ph name="MODIFIER_KEY_DESCRIPTION" /> to undo</translation>
 <translation id="4553526521109675518">You need to restart your Chromebook to change the device language. <ph name="BEGIN_LINK_LEARN_MORE" />Learn more<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Drag over images to search with <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">External extension is at the same or lower version compared to the existing one.</translation>
 <translation id="4555769855065597957">Shadow</translation>
 <translation id="4555863373929230635">To save passwords to your Google account, sign in and turn on sync.</translation>
@@ -4568,7 +4566,6 @@
 <translation id="5427459444770871191">Rotate &amp;clockwise</translation>
 <translation id="542750953150239272">By continuing, you agree that this device may also automatically download and install updates and apps from Google, your operator and your device's manufacturer, possibly using mobile data. Some of these apps may offer in-app purchases.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Update is available)</translation>
-<translation id="5429373054983029602">Search your screen with <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">An update for the trusted platform module firmware needs to be installed. See <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Instant Tethering</translation>
 <translation id="5431318178759467895">Colour</translation>
@@ -4641,7 +4638,6 @@
 <translation id="5494920125229734069">Select all</translation>
 <translation id="5495466433285976480">This will remove all local users, files, data and other settings after your next restart. All users will need to sign in again.</translation>
 <translation id="5495597166260341369">Keep display on</translation>
-<translation id="549580971452855947">Drag to search images with <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organise</translation>
 <translation id="5496730470963166430">Not allowed to send pop-ups or use redirects</translation>
 <translation id="5497251278400702716">This file</translation>
@@ -5752,7 +5748,6 @@
 You have # more compromised password. Google Password Manager recommends checking this password now.}other{Successfully changed the compromised password.
 
 You have # more compromised passwords. Google Password Manager recommends checking these passwords now.}}</translation>
-<translation id="6595792813574514527">Drag to Search Images with <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Encryption options</translation>
 <translation id="6596816719288285829">IP Address</translation>
 <translation id="6597017209724497268">Samples</translation>
@@ -6053,6 +6048,7 @@
 <translation id="6895032998810961280">Report details to Google about harmful software, system settings and processes that were found on your computer during this clean up</translation>
 <translation id="6896758677409633944">Copy</translation>
 <translation id="6897363604023044284">Choose sites to clear</translation>
+<translation id="6897688156970667447">Helpful in low light and saves battery</translation>
 <translation id="6898440773573063262">Kiosk applications can now be configured to auto-launch on this device.</translation>
 <translation id="6900284862687837908">Background App: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">Enhanced protection</translation>
@@ -7373,7 +7369,6 @@
 <translation id="8184318863960255706">More info</translation>
 <translation id="8184472985242519288">Uniform</translation>
 <translation id="8186609076106987817">The server could not find the file.</translation>
-<translation id="8186704951085064172">Search Part of the Page with <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Check your device settings and turn it on to continue</translation>
 <translation id="8188742492803591566">Enter the access code shown on the Chromecast or TV to start casting your screen.</translation>
 <translation id="8189306097519446565">School accounts</translation>
@@ -7542,6 +7537,7 @@
 <translation id="8358685469073206162">Restore pages?</translation>
 <translation id="8358912028636606457">Casting tab audio is not supported on this device.</translation>
 <translation id="835951711479681002">Save in your Google Account</translation>
+<translation id="8360140320636871023">Personalise your display theme</translation>
 <translation id="8363095875018065315">stable</translation>
 <translation id="8363142353806532503">Microphone blocked</translation>
 <translation id="8366396658833131068">Your network connectivity is restored. Please select a different network or press 'Continue' button below to launch your kiosk app.</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index bf5214e6..f50060c 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -1407,7 +1407,6 @@
     Si en algún momento a tu hijo deja de interesarle la función Voice Match, solo debes quitarla de la Configuración de Asistente. Puedes ver o borrar los fragmentos de audio que grabó tu hijo durante la configuración de Voice Match en <ph name="VOICE_MATCH_SETTINGS_URL" /> desde su cuenta.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Buscar parte de la página con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Este sitio no tiene permiso para acceder a los sensores de movimiento y luz.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL de la página</translation>
@@ -2031,7 +2030,6 @@
 <translation id="289695669188700754">ID de clave: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Se quitará esta configuración personalizada cuando cierres todas las ventanas de incógnito</translation>
 <translation id="2897878306272793870">¿Estás seguro de que deseas abrir <ph name="TAB_COUNT" /> pestañas?</translation>
-<translation id="2900477968385519153">Buscar en la pantalla con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">El archivo utiliza funciones no compatibles</translation>
 <translation id="2901348420151309559">Fotos y apps recientes</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> no pudo comunicarse con esta impresora. Asegúrate de que la impresora esté conectada y vuelve a intentarlo.</translation>
@@ -2904,7 +2902,6 @@
 <translation id="3778740492972734840">&amp;Herramientas del desarrollador</translation>
 <translation id="3778868487658107119">Hazle preguntas. Encárgale tareas. Es tu versión personal de Google, está siempre lista para ayudarte.</translation>
 <translation id="3781742599892759500">Acceso al micrófono en Linux</translation>
-<translation id="378312418865624974">Leer un identificador único para esta computadora</translation>
 <translation id="3784472333786002075">Las cookies son archivos que crean los sitios web. Existen dos tipos de cookies. Las propias son aquellas que crea el sitio que visitas. El sitio se muestra en la barra de direcciones. Las cookies de terceros son las que se generan desde otros sitios, a los cuales pertenece parte del contenido que ves en el sitio web que visitas (como anuncios o imágenes).</translation>
 <translation id="3785308913036335955">Mostrar acceso directo a las aplicaciones</translation>
 <translation id="3785727820640310185">Se guardaron contraseñas para este sitio</translation>
@@ -3557,7 +3554,6 @@
 <translation id="4415748029120993980">Curva elíptica SECG secp384r1 (también conocido como NIST P-384)</translation>
 <translation id="4416450511678320850">No hay apps disponibles para este contenido</translation>
 <translation id="4416582610654027550">Escribe una URL válida</translation>
-<translation id="4417162649853416189">Arrastrar imágenes para buscar con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Permitir siempre que <ph name="HOST" /> configure las cookies</translation>
 <translation id="4421932782753506458">Peludito</translation>
 <translation id="4423376891418188461">Restaurar configuración</translation>
@@ -3695,7 +3691,6 @@
 <translation id="4550926046134589611">Algunos vínculos compatibles se seguirán abriendo en <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Presiona <ph name="MODIFIER_KEY_DESCRIPTION" /> para deshacer</translation>
 <translation id="4553526521109675518">Para cambiar el idioma del dispositivo, debes reiniciar la Chromebook. <ph name="BEGIN_LINK_LEARN_MORE" />Más información<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Arrastrar imágenes para buscar con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">La versión de la extensión externa es igual o anterior a la actual.</translation>
 <translation id="4555769855065597957">Sombra</translation>
 <translation id="4555863373929230635">Para guardar contraseñas en tu Cuenta de Google, accede a ella y activa la sincronización.</translation>
@@ -4546,7 +4541,6 @@
 <translation id="5427459444770871191">Girar &amp;a la derecha</translation>
 <translation id="542750953150239272">Si continúas, aceptas que este dispositivo también descargue e instale automáticamente actualizaciones y apps de Google, tu operador y el fabricante del dispositivo usando datos móviles. Es posible que algunas de estas apps ofrezcan compras directas desde la aplicación.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (actualización disponible)</translation>
-<translation id="5429373054983029602">Buscar en la pantalla con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Debe instalarse una actualización del firmware del Módulo de plataforma de confianza. Consulta <ph name="TPM_FIRMWARE_UPDATE_LINK" />.</translation>
 <translation id="5430931332414098647">Conexión instantánea mediante dispositivo móvil</translation>
 <translation id="5431318178759467895">Color</translation>
@@ -4619,7 +4613,6 @@
 <translation id="5494920125229734069">Seleccionar todo</translation>
 <translation id="5495466433285976480">Esta acción eliminará todos los archivos, los datos y los usuarios locales, entre otros parámetros de configuración, la próxima vez que reinicies. Todos los usuarios deberán volver a acceder.</translation>
 <translation id="5495597166260341369">Pantalla encendida</translation>
-<translation id="549580971452855947">Arrastrar para buscar imágenes con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organizar</translation>
 <translation id="5496730470963166430">No puede enviar ventanas emergentes ni usar redireccionamientos</translation>
 <translation id="5497251278400702716">Este archivo</translation>
@@ -5730,7 +5723,6 @@
 Tienes # contraseña hackeada más. El Administrador de contraseñas de Google te recomienda revisar la contraseña ahora.}other{Cambiaste correctamente la contraseña hackeada.
 
 Tienes # contraseñas hackeadas más. El Administrador de contraseñas de Google te recomienda revisar las contraseñas ahora.}}</translation>
-<translation id="6595792813574514527">Arrastrar para buscar imágenes con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opciones de encriptación</translation>
 <translation id="6596816719288285829">Dirección IP</translation>
 <translation id="6597017209724497268">Muestras</translation>
@@ -7351,7 +7343,6 @@
 <translation id="8184318863960255706">Más información</translation>
 <translation id="8184472985242519288">Uniforme</translation>
 <translation id="8186609076106987817">El servidor no pudo encontrar el archivo.</translation>
-<translation id="8186704951085064172">Buscar parte de la página con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Revisa la configuración del dispositivo y activa la conexión Bluetooth para continuar</translation>
 <translation id="8188742492803591566">Ingresa el código de acceso que se muestra en el Chromecast o la TV para empezar a transmitir tu pantalla.</translation>
 <translation id="8189306097519446565">Cuentas de instituciones educativas</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index 850be58..b250685 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -1411,7 +1411,6 @@
     Si en algún momento quieres que tu hijo/a deje de usar Voice Match, basta con que lo inhabilites en los ajustes del Asistente. Para ver o eliminar los audios que ha grabado tu hijo/a durante la configuración de Voice Match, accede a <ph name="VOICE_MATCH_SETTINGS_URL" /> con su cuenta.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Buscar parte de la página con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Esta página no tiene permiso para acceder a los sensores de luz y movimiento.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL de la página</translation>
@@ -2034,7 +2033,6 @@
 <translation id="289695669188700754">ID de clave: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Este ajuste personalizado se quitará cuando cierres todas tus ventanas de incógnito</translation>
 <translation id="2897878306272793870">¿Seguro que quieres abrir <ph name="TAB_COUNT" /> pestañas?</translation>
-<translation id="2900477968385519153">Buscar en la pantalla con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">El archivo utiliza funciones no admitidas</translation>
 <translation id="2901348420151309559">Fotos y aplicaciones recientes</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> no ha podido establecer comunicación con la impresora. Comprueba que la impresora esté conectada e inténtalo de nuevo.</translation>
@@ -2907,7 +2905,6 @@
 <translation id="3778740492972734840">&amp;Herramientas para desarrolladores</translation>
 <translation id="3778868487658107119">Puedes hacerle preguntas e indicarle tareas para que las realice. Esta función, siempre lista para ayudarte, te permite utilizar Google de forma personalizada.</translation>
 <translation id="3781742599892759500">Acceso a micrófono en Linux</translation>
-<translation id="378312418865624974">Leer un identificador único para este ordenador</translation>
 <translation id="3784472333786002075">Las cookies son archivos que crean los sitios web. Existen dos tipos de cookies: las cookies propias las crea el sitio web al que accedes. El sitio web se muestra en la barra de direcciones. Las cookies de terceros las crean otros sitios web. Parte del contenido que ves en el sitio web que visitas, como anuncios o imágenes, pertenece a esos otros sitios web.</translation>
 <translation id="3785308913036335955">Mostrar acceso directo de aplicaciones</translation>
 <translation id="3785727820640310185">Contraseñas guardadas de este sitio web</translation>
@@ -3559,7 +3556,6 @@
 <translation id="4415748029120993980">Curva elíptica SECG secp384r1 (también denominada NIST P-384)</translation>
 <translation id="4416450511678320850">No hay aplicaciones disponibles para este contenido</translation>
 <translation id="4416582610654027550">Escribe una URL válida</translation>
-<translation id="4417162649853416189">Seleccionar la parte de una imagen para buscar con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Permitir siempre que <ph name="HOST" /> pueda establecer cookies.</translation>
 <translation id="4421932782753506458">Gatito</translation>
 <translation id="4423376891418188461">Restaurar configuración</translation>
@@ -3697,7 +3693,6 @@
 <translation id="4550926046134589611">Algunos enlaces compatibles se seguirán abriendo en <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Pulsa <ph name="MODIFIER_KEY_DESCRIPTION" /> para deshacer</translation>
 <translation id="4553526521109675518">Debes reiniciar tu Chromebook para cambiar el idioma del dispositivo. <ph name="BEGIN_LINK_LEARN_MORE" />Más información<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Seleccionar la parte de una imagen para buscar con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">La versión de la extensión externa es igual o anterior a la actual.</translation>
 <translation id="4555769855065597957">Sombra</translation>
 <translation id="4555863373929230635">Para guardar contraseñas en tu cuenta de Google, inicia sesión y activa la sincronización.</translation>
@@ -4548,7 +4543,6 @@
 <translation id="5427459444770871191">Girar a la &amp;derecha</translation>
 <translation id="542750953150239272">Al continuar, aceptas que el dispositivo pueda descargar e instalar actualizaciones de aplicaciones de Google, de tu operador y del fabricante del dispositivo automáticamente, y que incluso pueda usar datos móviles. Es posible que algunas de estas aplicaciones ofrezcan compras en la aplicación.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (actualización disponible)</translation>
-<translation id="5429373054983029602">Buscar en la pantalla con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Se necesita instalar una actualización para el firmware del módulo de plataforma de confianza. Consulta <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Conexión compartida instantánea</translation>
 <translation id="5431318178759467895">Color</translation>
@@ -4621,7 +4615,6 @@
 <translation id="5494920125229734069">Seleccionar todo</translation>
 <translation id="5495466433285976480">Esta acción eliminará todos los archivos, datos y usuarios locales, entre otras opciones, la próxima vez que reinicies. Todos los usuarios deberán volver a iniciar sesión.</translation>
 <translation id="5495597166260341369">Mantener la pantalla activada</translation>
-<translation id="549580971452855947">Seleccionar para buscar imágenes con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organizar</translation>
 <translation id="5496730470963166430">No puede enviar ventanas emergentes ni usar redirecciones</translation>
 <translation id="5497251278400702716">Este archivo</translation>
@@ -5401,7 +5394,7 @@
 <translation id="6271780480930459892">Ponte en contacto con tu administrador para obtener la versión más reciente.</translation>
 <translation id="6272643420381259437">Se ha producido un error (<ph name="ERROR" />) al descargar el complemento</translation>
 <translation id="6273677812470008672">Calidad</translation>
-<translation id="6274202259872570803">Captura de vídeo</translation>
+<translation id="6274202259872570803">Grabación de pantalla</translation>
 <translation id="6276210637549544171">El proxy <ph name="PROXY_SERVER" /> requiere un nombre de usuario y una contraseña.</translation>
 <translation id="6277105963844135994">Tiempo de espera de red agotado</translation>
 <translation id="6277518330158259200">H&amp;acer captura de pantalla</translation>
@@ -5732,7 +5725,6 @@
 Tienes # contraseña vulnerada más. El gestor de contraseñas de Google te recomienda que compruebes esa contraseña ahora.}other{Contraseña vulnerada cambiada correctamente.
 
 Tienes # contraseñas vulneradas más. El gestor de contraseñas de Google te recomienda que compruebes esas contraseñas ahora.}}</translation>
-<translation id="6595792813574514527">Seleccionar para buscar imágenes con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opciones de cifrado</translation>
 <translation id="6596816719288285829">Dirección IP</translation>
 <translation id="6597017209724497268">Ejemplos</translation>
@@ -7353,7 +7345,6 @@
 <translation id="8184318863960255706">Más información</translation>
 <translation id="8184472985242519288">Uniforme</translation>
 <translation id="8186609076106987817">El servidor no ha podido encontrar el archivo.</translation>
-<translation id="8186704951085064172">Buscar parte de la página con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Comprueba los ajustes del dispositivo y actívalo para continuar</translation>
 <translation id="8188742492803591566">Introduce el código de acceso mostrado en el Chromecast o en la televisión para empezar a enviar tu pantalla.</translation>
 <translation id="8189306097519446565">Cuentas de centros educativos</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index f675f06..193a51a 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -1416,7 +1416,6 @@
     Kui otsustate hiljem, et ei soovi lubada oma lapsel Voice Matchi kasutada, eemaldage see lihtsalt tema assistendi seadetes. Selleks et vaadata või kustutada heliklippe, mille teie laps Voice Matchi seadistamisel salvestab, minge lapse kontol saidile <ph name="VOICE_MATCH_SETTINGS_URL" />.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Otsige lehe osast rakendusega <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Sellel saidil on juurdepääs teie liikumis- ja valgusanduritele blokeeritud.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Lehe URL</translation>
@@ -2040,7 +2039,6 @@
 <translation id="289695669188700754">Võtme ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">See kohandatud seade eemaldatakse, kui sulgete kõik oma inkognito aknad</translation>
 <translation id="2897878306272793870">Kas te soovite kindlasti avada <ph name="TAB_COUNT" /> vahekaarti?</translation>
-<translation id="2900477968385519153">Otsige oma ekraanikuvalt rakendusega <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Fail kasutab toetamata funktsioone</translation>
 <translation id="2901348420151309559">Hiljutised fotod ja rakendused</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ei saanud printeriga sidet pidada. Veenduge, et printeri toide oleks sees, ja proovige uuesti.</translation>
@@ -2913,7 +2911,6 @@
 <translation id="3778740492972734840">&amp;Arendaja tööriistad</translation>
 <translation id="3778868487658107119">Esitage talle küsimusi või paluge tal toiminguid teha. See on teie isiklik Google – alati valmis teid aitama.</translation>
 <translation id="3781742599892759500">Linuxi juurdepääs mikrofonile</translation>
-<translation id="378312418865624974">Arvuti ainuidentifikaatori lugemine</translation>
 <translation id="3784472333786002075">Küpsisefailid on veebisaitide loodud failid. Küpsisefaile on kahte tüüpi: esimese osapoole küpsisefailid loob sait, mida külastate. Saidi aadress kuvatakse aadressiribal. Kolmanda osapoole küpsisefailid loovad teised saidid. Need saidid omavad külastatud veebisaidil kuvatud sisu, nt reklaame või pilte.</translation>
 <translation id="3785308913036335955">Kuva teenuse Apps otsetee</translation>
 <translation id="3785727820640310185">Selle saidi jaoks salvestatud paroolid</translation>
@@ -3566,7 +3563,6 @@
 <translation id="4415748029120993980">SECG elliptilise kõveraga secp384r1 (ehk NIST P-384)</translation>
 <translation id="4416450511678320850">Selle sisu jaoks pole ühtki rakendust saadaval</translation>
 <translation id="4416582610654027550">Sisestage kehtiv URL</translation>
-<translation id="4417162649853416189">Pukseerige piltide peale, et otsida rakendusega <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Luba hostil <ph name="HOST" /> alati küpsiseid seada</translation>
 <translation id="4421932782753506458">Miisu</translation>
 <translation id="4423376891418188461">Taasta seaded</translation>
@@ -3704,7 +3700,6 @@
 <translation id="4550926046134589611">Mõned toetatud lingid avanevad endiselt rakenduses <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Tagasivõtmiseks vajutage klahvi <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4553526521109675518">Seadme keele muutmiseks peate oma Chromebooki taaskäivitama. <ph name="BEGIN_LINK_LEARN_MORE" />Lisateave<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Pukseerige piltide peale, et otsida rakendusega <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Välise laienduse versioon on sama või vanem mis olemasoleval.</translation>
 <translation id="4555769855065597957">Vari</translation>
 <translation id="4555863373929230635">Paroolide salvestamiseks oma Google'i kontole logige sisse ja lülitage sünkroonimine sisse.</translation>
@@ -4555,7 +4550,6 @@
 <translation id="5427459444770871191">Pööra &amp;päripäeva</translation>
 <translation id="542750953150239272">Jätkamisel nõustute, et seade võib Google'i, teie operaatori ja seadme tootja värskendusi ning rakendusi ka automaatselt alla laadida ja installida, kasutades selleks võib-olla mobiilset andmesidet. Mõned neist rakendustest võivad pakkuda rakendusesiseseid oste.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (värskendus on saadaval)</translation>
-<translation id="5429373054983029602">Otsige oma ekraanikuvalt rakendusega <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Installida tuleb usaldusväärse platvormi mooduli püsivara. Kuva <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Automaatne jagamine</translation>
 <translation id="5431318178759467895">Värv</translation>
@@ -4628,7 +4622,6 @@
 <translation id="5494920125229734069">Valige kõik</translation>
 <translation id="5495466433285976480">See eemaldab pärast taaskäivitamist kõik kohalikud kasutajad, failid, andmed ja muud seaded. Kõik kasutajad peavad uuesti sisse logima.</translation>
 <translation id="5495597166260341369">Ära lülita ekraani välja</translation>
-<translation id="549580971452855947">Pukseerige piltide otsimiseks rakendusega <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Korraldamine</translation>
 <translation id="5496730470963166430">Pole lubatud saata hüpikaknaid ega kasutada ümbersuunamisi</translation>
 <translation id="5497251278400702716">See fail</translation>
@@ -5739,7 +5732,6 @@
 Teil on veel # ohustatud parool. Google'i paroolihaldur soovitab kohe seda parooli kontrollida.}other{Ohustatud parooli muutmine õnnestus.
 
 Teil on veel # ohustatud parooli. Google'i paroolihaldur soovitab kohe neid paroole kontrollida.}}</translation>
-<translation id="6595792813574514527">Pukseerige piltide otsimiseks rakendusega <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Krüpteerimise valikud</translation>
 <translation id="6596816719288285829">IP-aadress</translation>
 <translation id="6597017209724497268">Näidised</translation>
@@ -7360,7 +7352,6 @@
 <translation id="8184318863960255706">Lisateave</translation>
 <translation id="8184472985242519288">Ühtne</translation>
 <translation id="8186609076106987817">Server ei leidnud faili.</translation>
-<translation id="8186704951085064172">Otsige lehe osast rakendusega <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Kontrollige oma seadme seadeid ja lülitage see jätkamiseks sisse</translation>
 <translation id="8188742492803591566">Ekraanikuva ülekandmise alustamiseks sisestage Chromecastis või teleris kuvatud pääsukood.</translation>
 <translation id="8189306097519446565">Koolikontod</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb
index bd8d41b..a9dc835 100644
--- a/chrome/app/resources/generated_resources_eu.xtb
+++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -201,6 +201,7 @@
 <translation id="1188807932851744811">Ez da erregistroa kargatu.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{Atzitu ordenagailuan gordetako fitxategi bat}other{Atzitu ordenagailuan gordetako # fitxategi}}</translation>
 <translation id="119092896208640858">Gailu honetako arakatze-datuak soilik garbitzeko, baina haiek Google-ko kontuan mantentzeko, <ph name="BEGIN_LINK" />amaitu saioa<ph name="END_LINK" />.</translation>
+<translation id="1191353342579061195">Aukeratu zure beharretara egokituta gaia. Gaia, horma-papera, pantaila-babeslea eta beste gauza batzuk aldatzeko, egin klik eskuineko botoiarekin mahaigainean.</translation>
 <translation id="1192706927100816598">{0,plural, =1{# segundo barru amaituko da saioa automatikoki.
 Txartel adimenduna sartuta edukitzea eskatzen du <ph name="DOMAIN" /> domeinuak.}other{# segundo barru amaituko da saioa automatikoki.
 Txartel adimenduna sartuta edukitzea eskatzen du <ph name="DOMAIN" /> domeinuak.}}</translation>
@@ -1292,6 +1293,7 @@
 <translation id="2220409419896228519">Gehitu laster-markak gogoko dituzun Google-ren aplikazioetan</translation>
 <translation id="2220529011494928058">Eman arazo baten berri</translation>
 <translation id="2220572644011485463">PINa edo pasahitza</translation>
+<translation id="222115440608612541">Aldatu gaiak egunsentian eta ilunabarrean</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">Multimedia-iturburu izengabea</translation>
 <translation id="2224444042887712269">Ezarpen hau <ph name="OWNER_EMAIL" /> erabiltzailearena da.</translation>
@@ -1410,7 +1412,6 @@
     Inoiz Voice Match zure haurrarentzat egokia ez dela erabakitzen baduzu, ken ezazu haren Laguntzailea zerbitzuaren ezarpenetara joanda. Haurrak Voice Match konfiguratzean grabatutako audio zatiak ikusteko edo ezabatzeko, joan <ph name="VOICE_MATCH_SETTINGS_URL" /> helbidera haurraren kontuaren bidez.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Bilatu orriaren zati bat <ph name="VISUAL_SEARCH_PROVIDER" /> bidez</translation>
 <translation id="2309620859903500144">Webgune honi blokeatu egin zaio mugimenduaren edo argiaren sentsoreak atzitzeko aukera.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Orriaren URLa</translation>
@@ -1518,6 +1519,7 @@
 <translation id="241082044617551207">Plugin ezezaguna</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">Teklatuko funtzio-teklak</translation>
+<translation id="2418307627282545839">Mantendu gauzak argi eta zabala dirudien gune batean</translation>
 <translation id="2419131370336513030">Ikusi instalatutako aplikazioak</translation>
 <translation id="2419706071571366386">Babestuta egoteko, amaitu saioa ordenagailua erabili behar ez duzunean.</translation>
 <translation id="2422125132043002186">Bertan behera utzi da Linux-eko leheneratzea</translation>
@@ -2033,7 +2035,6 @@
 <translation id="289695669188700754">Gakoaren IDa: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Ezarpen pertsonalizatu hau kendu egingo da ezkutuko moduko leiho guztiak ixten dituzunean</translation>
 <translation id="2897878306272793870">Ziur <ph name="TAB_COUNT" /> fitxa ireki nahi dituzula?</translation>
-<translation id="2900477968385519153">Bilatu pantailako edukia <ph name="VISUAL_SEARCH_PROVIDER" /> bidez</translation>
 <translation id="290105521672621980">Fitxategiak eginbide bateraezinak darabiltza</translation>
 <translation id="2901348420151309559">Azken argazkiak eta aplikazioak</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> luzapenak ezin izan du komunikatu inprimagailu honekin. Egiaztatu inprimagailua konektatuta dagoela eta saiatu berriro.</translation>
@@ -2906,7 +2907,6 @@
 <translation id="3778740492972734840">&amp;Garatzaileen tresnak</translation>
 <translation id="3778868487658107119">Egin iezazkiozu galderak. Eska iezaiozu gauzak egiteko. Zure neurrira egindako Google-ren zerbitzua duzu, eta beti dago laguntzeko prest.</translation>
 <translation id="3781742599892759500">Linux-en mikrofonorako sarbidea</translation>
-<translation id="378312418865624974">Irakurri ordenagailuaren identifikatzaile esklusiboa</translation>
 <translation id="3784472333786002075">Webguneek sortutako fitxategiak dira cookieak. Bi cookie mota daude: domeinuaren cookie propioak bisitatzen dituzun webguneek sortutakoak dira. Webgunea helbide-barran bistaratzen da. Hirugarrenen cookieak beste webgune batzuek sortzen dituzte. Bisitatzen duzun webgunean ikusten dituzun eduki batzuen jabeak dira webgune horiek (adibidez, iragarkiak edo irudiak).</translation>
 <translation id="3785308913036335955">Erakutsi aplikazioen lasterbidea</translation>
 <translation id="3785727820640310185">Webgune honetan gordetako pasahitzak</translation>
@@ -3559,7 +3559,6 @@
 <translation id="4415748029120993980">SECG kurba eliptikoko secp384r1 (edo, bestela esanda: NIST P-384)</translation>
 <translation id="4416450511678320850">Ez dago eduki honetarako balio duen aplikaziorik</translation>
 <translation id="4416582610654027550">Idatzi balio duen URL bat</translation>
-<translation id="4417162649853416189">Arrastatu irudiak <ph name="VISUAL_SEARCH_PROVIDER" /> bidez bilatzeko</translation>
 <translation id="4419409365248380979">Eman beti cookieak ezartzeko baimena <ph name="HOST" /> ostalariari</translation>
 <translation id="4421932782753506458">Katutxoa</translation>
 <translation id="4423376891418188461">Berrezarri ezarpenak</translation>
@@ -3697,7 +3696,6 @@
 <translation id="4550926046134589611">Laguntza emateko esteka batzuek <ph name="APP_NAME" /> aplikazioan irekitzen jarraituko dute.</translation>
 <translation id="4551763574344810652">Sakatu <ph name="MODIFIER_KEY_DESCRIPTION" /> desegiteko</translation>
 <translation id="4553526521109675518">Gailuaren hizkuntza aldatzeko, Chromebook berrabiarazi egin behar duzu. <ph name="BEGIN_LINK_LEARN_MORE" />Lortu informazio gehiago<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Arrastatu irudiak <ph name="VISUAL_SEARCH_PROVIDER" /> bidez bilatzeko</translation>
 <translation id="4554591392113183336">Kanpoko luzapena lehendik dagoenaren bertsio berean edo zaharragoan dago.</translation>
 <translation id="4555769855065597957">Itzala</translation>
 <translation id="4555863373929230635">Pasahitzak Google-ko kontuan gordetzeko, hasi saioa eta aktibatu sinkronizazioa.</translation>
@@ -4548,7 +4546,6 @@
 <translation id="5427459444770871191">Biratu &amp;eskuinera</translation>
 <translation id="542750953150239272">Halaber, aurrera eginez gero, onartu egingo duzu litekeena dela Google-ren, operadorearen edo fabrikatzailearen eguneratzeak eta aplikazioak automatikoki deskargatu eta instalatzea, beharbada datu-konexioa erabilita. Baliteke aplikazio horietako batzuetan erosketak egin ahal izatea.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (eguneratze bat erabilgarri dago)</translation>
-<translation id="5429373054983029602">Bilatu pantailako edukia <ph name="VISUAL_SEARCH_PROVIDER" /> bidez</translation>
 <translation id="542948651837270806">Trusted Platform Module firmwarearen eguneratze bat instalatu behar da. Ikusi <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Konexioa bizkor partekatzeko eginbidea</translation>
 <translation id="5431318178759467895">Kolorez</translation>
@@ -4621,7 +4618,6 @@
 <translation id="5494920125229734069">Hautatu guztiak</translation>
 <translation id="5495466433285976480">Gailuko erabiltzaile, fitxategi, datu eta bestelako ezarpen guztiak kenduko dira gailua berrabiarazten duzun hurrengoan. Erabiltzaile guztiek saioa hasi beharko dute berriro.</translation>
 <translation id="5495597166260341369">Mantendu pantaila piztuta</translation>
-<translation id="549580971452855947">Arrastatu irudiak <ph name="VISUAL_SEARCH_PROVIDER" /> bidez bilatzeko</translation>
 <translation id="5496587651328244253">Antolatu</translation>
 <translation id="5496730470963166430">Ezin dituzte bidali leiho gainerakorrak, ezta birbideratzeak erabili ere</translation>
 <translation id="5497251278400702716">Fitxategi hau</translation>
@@ -5729,7 +5725,6 @@
 Arriskuan dagoen # pasahitz gehiago daukazu. Google-ren Pasahitz-kudeatzailea zerbitzuak pasahitz hori orain aldatzea gomendatzen du.}other{Aldatu da arriskuan zegoen pasahitza.
 
 Arriskuan dauden # pasahitz gehiago dauzkazu. Google-ren Pasahitz-kudeatzailea zerbitzuak pasahitz horiek orain aldatzea gomendatzen du.}}</translation>
-<translation id="6595792813574514527">Arrastatu irudiak <ph name="VISUAL_SEARCH_PROVIDER" /> bidez bilatzeko</translation>
 <translation id="6596325263575161958">Enkriptatze aukerak</translation>
 <translation id="6596816719288285829">IP helbidea</translation>
 <translation id="6597017209724497268">Adibideak</translation>
@@ -6030,6 +6025,7 @@
 <translation id="6895032998810961280">Eman Google-ri software kaltegarriaren, sistemaren ezarpenen eta garbiketa honen bitartez ordenagailuan aurkitutako prozesuen berri.</translation>
 <translation id="6896758677409633944">Kopiatu</translation>
 <translation id="6897363604023044284">Aukeratu garbitu nahi dituzun webguneak</translation>
+<translation id="6897688156970667447">Argi gutxi dagoenerako eta bateria aurrezteko balio du</translation>
 <translation id="6898440773573063262">Orain, aplikazio espezializatuak konfigura daitezke gailuan automatikoki abiaraz daitezen.</translation>
 <translation id="6900284862687837908">Atzeko planoko aplikazioa: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">Babes hobetua</translation>
@@ -7348,7 +7344,6 @@
 <translation id="8184318863960255706">Informazio gehiago</translation>
 <translation id="8184472985242519288">Uniformea</translation>
 <translation id="8186609076106987817">Zerbitzariak ezin izan du fitxategia aurkitu.</translation>
-<translation id="8186704951085064172">Bilatu orriaren zati bat <ph name="VISUAL_SEARCH_PROVIDER" /> bidez</translation>
 <translation id="8188389033983459049">Aurrera egiteko, egiaztatu gailuaren ezarpenak eta aktibatu giltza</translation>
 <translation id="8188742492803591566">Pantaila igortzen hasteko, idatzi Chromecast-ean edo telebistan agertu zaizun sarbide-kodea.</translation>
 <translation id="8189306097519446565">Ikastetxeko kontuak</translation>
@@ -7517,6 +7512,7 @@
 <translation id="8358685469073206162">Orriak leheneratu nahi dituzu?</translation>
 <translation id="8358912028636606457">Edukia igortzen ari den fitxako audioa ez da bateragarria gailu honekin.</translation>
 <translation id="835951711479681002">Gorde Google-ko kontuan</translation>
+<translation id="8360140320636871023">Pertsonalizatu gailuaren gaia</translation>
 <translation id="8363095875018065315">egonkorra</translation>
 <translation id="8363142353806532503">Mikrofonoa blokeatua dago</translation>
 <translation id="8366396658833131068">Sareko konexioa leheneratu da. Hautatu beste sare bat edo sakatu hemen behean dagoen "Jarraitu" botoia kiosko-aplikazioa abiarazteko.</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index 1f40e8d..0435445 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -1422,7 +1422,6 @@
     اگر بعداً تشخیص دهید که Voice Match مناسب فرزندتان نیست، کافی است آن را از بخش «تنظیمات دستیار» او بردارید. برای مشاهده یا حذف کلیپ‌های صوتی‌ای که فرزندتان درطول راه‌اندازی Voice Match ضبط می‌کند، با حساب فرزندتان به <ph name="VOICE_MATCH_SETTINGS_URL" /> بروید.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">جستجوی قسمتی از صفحه با <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">دسترسی این سایت به حسگرهای نور یا حرکت مسدود شده است.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">نشانی وب صفحه</translation>
@@ -2046,7 +2045,6 @@
 <translation id="289695669188700754">شناسه کلید: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">وقتی همه پنجره‌های ناشناس را ببندید، این تنظیم سفارشی برداشته خواهد شد</translation>
 <translation id="2897878306272793870">آیا می‌خواهید برگه‌های <ph name="TAB_COUNT" /> باز شوند؟</translation>
-<translation id="2900477968385519153">جستجوی صفحه‌نمایش با <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">فایل از قابلیت‌های پشتیبانی‌نشده استفاده می‌کند</translation>
 <translation id="2901348420151309559">عکس‌ها و برنامه‌های اخیر</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> نتوانست با این چاپگر ارتباط برقرار کند. مطمئن شوید چاپگر روشن است و دوباره امتحان کنید.</translation>
@@ -2919,7 +2917,6 @@
 <translation id="3778740492972734840">ابزارهای &amp;برنامه نویس</translation>
 <translation id="3778868487658107119">‏از آن سؤال بپرسید. بگویید کاری انجام دهد. این Google شخصی شما است و همیشه برای کمک آماده است.</translation>
 <translation id="3781742599892759500">‏دسترسی به میکروفون Linux</translation>
-<translation id="378312418865624974">خواندن شناسه بی‌نظیر در این رایانه</translation>
 <translation id="3784472333786002075">کوکی‌ها فایل‌هایی هستند که توسط وبسایت‌ها ایجاد می‌شوند. دو نوع کوکی وجود دارد: کوکی‌های شخص اول که توسط سایتی که بازدید می‌کنید ایجاد می‌شوند. این سایت در نوار نشانی نشان داده می‌شود. کوکی‌های شخص ثالث که توسط سایت‌های دیگر ایجاد می‌شوند. برخی از محتواها، مثل آگهی‌ها یا تصاویر موجود در وبسایتی که بازدید می‌کنید، متعلق به این سایت‌ها هستند.</translation>
 <translation id="3785308913036335955">نمایش میان‌بر «برنامه‌ها»</translation>
 <translation id="3785727820640310185">گذرواژه‌های ذخیره‌شده برای این سایت</translation>
@@ -3572,7 +3569,6 @@
 <translation id="4415748029120993980">‏منحنی بیضوی SECG مدل secp384r1 (به‌ نام NIST P-384)</translation>
 <translation id="4416450511678320850">هیچ برنامه‌ای برای این محتوا دردسترس نیست</translation>
 <translation id="4416582610654027550">نشانی وب معتبری تایپ کنید</translation>
-<translation id="4417162649853416189">کشیدن تصاویر برای جستجو با <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">همیشه به <ph name="HOST" /> اجازه دهید کوکی‌ها را تنظیم کند</translation>
 <translation id="4421932782753506458">پشمالو</translation>
 <translation id="4423376891418188461">بازیابی تنظیمات</translation>
@@ -3643,6 +3639,7 @@
 <translation id="449232563137139956">سایت‌ها معمولاً تصاویر را برای روشن‌سازی نمایش می‌دهند، برای مثال عکس‌های فروشگاه‌های آنلاین یا مقاله‌های خبری</translation>
 <translation id="4492698018379445570">ببینید چه چیزهایی را به سبدهای خریدتان اضافه کرده‌اید و هروقت آماده بودید تسویه‌حساب کنید</translation>
 <translation id="4493468155686877504">(<ph name="INSTALL_SIZE" />) توصیه‌شده</translation>
+<translation id="4495002167047709180">این افزونه در <ph name="SITE" /> مجاز شود؟</translation>
 <translation id="4495419450179050807">در این صفحه نشان داده نشود</translation>
 <translation id="4497145443434063861">‏رایانه شخصی و Chromecast در شبکه‌های مختلف Wi-Fi (مثلاً ۲٫۴ گیگاهرتز
     در مقابل ۵ گیگاهرتز)</translation>
@@ -3711,7 +3708,6 @@
 <translation id="4550926046134589611">برخی‌از پیوندهای پشتیبانی‌شده همچنان در <ph name="APP_NAME" /> باز خواهد شد.</translation>
 <translation id="4551763574344810652">برای واگرد، <ph name="MODIFIER_KEY_DESCRIPTION" /> را فشار دهید</translation>
 <translation id="4553526521109675518">‏باید Chromebook را بازراه‌اندازی کنید تا زبان دستگاه تغییر کند. <ph name="BEGIN_LINK_LEARN_MORE" />بیشتر بدانید<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">کشیدن تصاویر برای جستجو با <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">برنامه افزودنی خارجی در مقایسه با برنامه کنونی، دارای همان نسخه یا نسخه پایین‌تر است.</translation>
 <translation id="4555769855065597957">سایه</translation>
 <translation id="4555863373929230635">‏برای ذخیره گذرواژه در «حساب Google»، به سیستم وارد شوید و همگام‌سازی را روشن کنید.</translation>
@@ -4562,7 +4558,6 @@
 <translation id="5427459444770871191">چرخاندن در جهت &amp;عقربه‌های ساعت</translation>
 <translation id="542750953150239272">‏با ادامه دادن، موافقت می‌کنید این دستگاه همچنین می‌تواند به‌طور خودکار به‌روزرسانی و برنامه از Google، شرکت مخابراتی، و سازنده دستگاهتان بارگیری و نصب کند و احتمالاً این کار با مصرف داده شبکه تلفن همراه خواهد بود. بعضی از این برنامه‌ها ممکن است خریدهای درون‌برنامه ارائه دهند.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (به‌روزرسانی موجود است)</translation>
-<translation id="5429373054983029602">جستجوی صفحه‌نمایش با <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">به‌روزرسانی برای سفت‌افزار «مدول پلتفورم معتمد» باید نصب شود. مشاهده <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">اشتراک‌گذاری اینترنت فوری</translation>
 <translation id="5431318178759467895">رنگ</translation>
@@ -4635,7 +4630,6 @@
 <translation id="5494920125229734069">انتخاب همه</translation>
 <translation id="5495466433285976480">با این کار بعد از راه‌اندازی مجدد، همه داده‌ها، فایل‌ها، کاربران محلی و سایر تنظیمات حذف خواهد شد. همه کاربران باید دوباره وارد سیستم شوند.</translation>
 <translation id="5495597166260341369">روشن ماندن نمایشگر</translation>
-<translation id="549580971452855947">کشیدن برای جستجوی تصاویر با <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">سازماندهی</translation>
 <translation id="5496730470963166430">اجازه ندارد بالاپر ارسال کند یا از هدایت‌ها استفاده کند</translation>
 <translation id="5497251278400702716">این فایل</translation>
@@ -5748,7 +5742,6 @@
 # گذرواژه لورفته دیگر دارید. «مدیر گذرواژه Google» توصیه می‌کند این گذرواژه‌ها را همین‌حالا بررسی کنید.}other{‏گذرواژه لورفته باموفقیت تغییر کرد.
 
 # گذرواژه لورفته دیگر دارید. «مدیر گذرواژه Google» توصیه می‌کند این گذرواژه‌ها را همین‌حالا بررسی کنید.}}</translation>
-<translation id="6595792813574514527">کشیدن برای جستجوی تصاویر با <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">گزینه‌های رمزگذاری</translation>
 <translation id="6596816719288285829">‏نشانی IP</translation>
 <translation id="6597017209724497268">نمونه‌ها</translation>
@@ -7368,7 +7361,6 @@
 <translation id="8184318863960255706">اطلاعات بیشتر</translation>
 <translation id="8184472985242519288">یکسان</translation>
 <translation id="8186609076106987817">سرور نتوانست فایل را پیدا کند.</translation>
-<translation id="8186704951085064172">جستجوی قسمتی از صفحه با <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">تنظیمات دستگاه را بررسی کنید و برای ادامه، آن را روشن کنید</translation>
 <translation id="8188742492803591566">‏برای ارسال محتوای صفحه، کد دسترسی نمایش داده‌شده در Chromecast یا تلویزیون را وارد کنید.</translation>
 <translation id="8189306097519446565">حساب‌های مدرسه</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index 888f2a2c..d7929da 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -1424,7 +1424,6 @@
     Jos lapsi haluaa myöhemmin lopettaa Voice Matchin käytön, voi sen helposti poistaa sen Assistantin asetuksista. Jos haluat tarkastella tai poistaa lapsen Voice Matchin käyttöönoton aikana tallentamia ääniklippejä, siirry osoitteeseen <ph name="VOICE_MATCH_SETTINGS_URL" />.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Hae sivun osasta: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Tältä sivustolta on estetty liikkeen- tai valontunnistimien käyttö.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Sivun URL-osoite</translation>
@@ -2048,7 +2047,6 @@
 <translation id="289695669188700754">Avaimen tunnus: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Tämä oma asetus poistetaan, kun suljet kaikki incognito-ikkunat</translation>
 <translation id="2897878306272793870">Haluatko varmasti avata <ph name="TAB_COUNT" /> välilehteä?</translation>
-<translation id="2900477968385519153">Hae näytöltä: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Tiedosto käyttää tukemattomia ominaisuuksia.</translation>
 <translation id="2901348420151309559">Viimeisimmät kuvat ja sovellukset</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ei saanut yhteyttä tähän tulostimeen. Varmista, että tulostin on kytketty pistorasiaan, ja yritä uudelleen.</translation>
@@ -2921,7 +2919,6 @@
 <translation id="3778740492972734840">&amp;Kehittäjän työkalut</translation>
 <translation id="3778868487658107119">Voit kysyä siltä tietoa ja pyytää asioita – se on henkilökohtainen Googlesi ja aina valmiina auttamaan.</translation>
 <translation id="3781742599892759500">Linuxin mikrofonin käyttöoikeus</translation>
-<translation id="378312418865624974">Käyttää tämän tietokoneen yksilöllistä tunnusta</translation>
 <translation id="3784472333786002075">Evästeet ovat verkkosivustojen luomia tiedostoja. Evästeitä on kahdentyyppisiä: ensimmäisen osapuolen evästeet luo sivusto, jolla käyt. Sivusto näkyy osoitepalkissa. Kolmannen osapuolen evästeet luo muut sivustot. Nämä sivustot omistavat mainoksia, kuvia tai muita sisältöjä, joita näet avaamallasi sivulla.</translation>
 <translation id="3785308913036335955">Näytä Apps-oikopolku</translation>
 <translation id="3785727820640310185">Tämän sivuston tallennetut salasanat</translation>
@@ -3571,7 +3568,6 @@
 <translation id="4415748029120993980">SECG elliptinen käyrä secp384r1 (eli NIST P-384)</translation>
 <translation id="4416450511678320850">Ei sovelluksia saatavilla tälle sisällölle</translation>
 <translation id="4416582610654027550">Kirjoita kelvollinen URL-osoite</translation>
-<translation id="4417162649853416189">Hae vetämällä hiirellä kuvien päällä: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Salli aina verkkotunnuksen <ph name="HOST" /> asettamat evästeet</translation>
 <translation id="4421932782753506458">Pörrö</translation>
 <translation id="4423376891418188461">Palauta asetukset</translation>
@@ -3642,6 +3638,7 @@
 <translation id="449232563137139956">Sivustot näyttävät yleensä kuvituskuvia, esim. kuvia uutisjutun ohessa tai verkkokaupassa</translation>
 <translation id="4492698018379445570">Katso ostoskoreihin lisäämäsi tuotteet ja maksa, kun olet valmis</translation>
 <translation id="4493468155686877504">Suositus (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">Sallitaanko laajennukset sivustolla <ph name="SITE" />?</translation>
 <translation id="4495419450179050807">Älä näytä tällä sivulla</translation>
 <translation id="4497145443434063861">PC ja Chromecast eri langattomissa verkoissa (esim. 2,4 GHz
     vs. 5 GHz)</translation>
@@ -3710,7 +3707,6 @@
 <translation id="4550926046134589611">Jotkin tuetut linkit avautuvat edelleen tässä sovelluksessa: <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Kumoa painamalla <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4553526521109675518">Chromebook on käynnistettävä uudelleen, jotta laitteen kieli vaihtuu. <ph name="BEGIN_LINK_LEARN_MORE" />Lue lisää<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Hae vetämällä hiirellä kuvien päällä: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Ulkoinen laajennus on sama tai aiempi versio kuin nykyinen.</translation>
 <translation id="4555769855065597957">Varjo</translation>
 <translation id="4555863373929230635">Jos haluat tallentaa salasanoja Google-tilillesi, kirjaudu sisään ja ota synkronointi käyttöön.</translation>
@@ -4561,7 +4557,6 @@
 <translation id="5427459444770871191">Käännä &amp;myötäpäivään</translation>
 <translation id="542750953150239272">Jatkamalla hyväksyt, että laite voi automaattisesti ladata ja asentaa Googlen, operaattorisi tai laitevalmistajan päivityksiä ja sovelluksia, mahdollisesti mobiilidatayhteyden välityksellä. Jotkin näistä sovelluksista voivat tarjota sovelluksen sisäisiä ostoksia.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (päivitys on saatavilla)</translation>
-<translation id="5429373054983029602">Hae näytöltä: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Trusted Platform Modulen päivitys on asennettava. Näytä <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Yhteyden pikajakaminen</translation>
 <translation id="5431318178759467895">Väri</translation>
@@ -4634,7 +4629,6 @@
 <translation id="5494920125229734069">Valitse kaikki</translation>
 <translation id="5495466433285976480">Tämä poistaa kaikki paikalliset käyttäjät, tiedostot, tiedot ja muut asetukset seuraavan uudelleenkäynnistyksesi jälkeen. Kaikkien käyttäjien on kirjauduttava sisään uudelleen.</translation>
 <translation id="5495597166260341369">Älä sulje näyttöä</translation>
-<translation id="549580971452855947">Hae kuvia vetämällä: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Järjestä</translation>
 <translation id="5496730470963166430">Ponnahdusikkunat tai uudelleenohjaukset kielletty</translation>
 <translation id="5497251278400702716">Tämä tiedosto</translation>
@@ -5745,7 +5739,6 @@
 Sinulla on vielä # vaarantunut salasana. Google Salasanat suosittelee, että tarkistat sen heti.}other{Vaarantunut salasana vaihdettu onnistuneesti.
 
 Sinulla on vielä # vaarantunutta salasanaa. Google Salasanat suosittelee, että tarkistat salasanat heti.}}</translation>
-<translation id="6595792813574514527">Hae kuvia vetämällä: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Salausasetukset</translation>
 <translation id="6596816719288285829">IP-osoite</translation>
 <translation id="6597017209724497268">Esimerkit</translation>
@@ -7365,7 +7358,6 @@
 <translation id="8184318863960255706">Lisätietoja</translation>
 <translation id="8184472985242519288">Yhdenmukainen</translation>
 <translation id="8186609076106987817">Palvelin ei löydä tiedostoa.</translation>
-<translation id="8186704951085064172">Hae sivun osasta: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Tarkista laitteesi asetukset ja ota se käyttöön jatkaaksesi</translation>
 <translation id="8188742492803591566">Striimaa näytölle lisäämällä Chromecastissa tai televisiossa näkyvä käyttökoodi.</translation>
 <translation id="8189306097519446565">Koulutilit</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index ce99101..795147d 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -182,6 +182,7 @@
 <translation id="1166583374608765787">Suriin ang update sa pangalan</translation>
 <translation id="1166596238782048887">Kabilang ang <ph name="TAB_TITLE" /> sa desk na <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">Binubuksan sa <ph name="TIME_REMAINING" />...</translation>
+<translation id="1169266963600477608">Mga kontrol ng laro</translation>
 <translation id="1169435433292653700">May sensitibo o mapanganib na data ang <ph name="FILE_NAME" /> Sabi ng iyong administrator: "<ph name="CUSTOM_MESSAGE" />"</translation>
 <translation id="1171135284592304528">I-highlight ang object gamit ang keyboard focus kapag nagbago ito</translation>
 <translation id="1171515578268894665">Gustong kumonekta ng <ph name="ORIGIN" /> sa isang HID device</translation>
@@ -1426,7 +1427,6 @@
     Kung mapagpapasyahan mo sa ibang pagkakataon na hindi naaangkop sa iyong anak ang Voice Match, alisin lang ito sa kanyang Mga Setting ng Assistant. Para tingnan o i-delete ang mga audio clip na na-record ng iyong anak habang sine-set up ang Voice Match, pumunta sa <ph name="VOICE_MATCH_SETTINGS_URL" /> mula sa account ng anak mo.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Hanapin ang bahagi ng page gamit ang <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Na-block ang site na ito sa pag-access sa iyong sensor ng paggalaw o liwanag.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL ng Page</translation>
@@ -2050,7 +2050,6 @@
 <translation id="289695669188700754">Key ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Maaalis ang custom na setting na ito kapag isinara mo ang lahat ng iyong Incognito window</translation>
 <translation id="2897878306272793870">Sigurado ka bang gusto mong buksan ang <ph name="TAB_COUNT" /> tab?</translation>
-<translation id="2900477968385519153">Maghanap sa Iyong Screen gamit ang <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Gumagamit ang file ng mga hindi sinusuportahang feature</translation>
 <translation id="2901348420151309559">Mga kamakailang larawan at app</translation>
 <translation id="2902127500170292085">Ang <ph name="EXTENSION_NAME" /> ay hindi magawang makipag-ugnayan sa printer na ito. Tiyaking naka-plug in ang printer at subukang muli.</translation>
@@ -2923,7 +2922,6 @@
 <translation id="3778740492972734840">Mga tool ng Nag-&amp;develop</translation>
 <translation id="3778868487658107119">Tanungin ito. Utusan ito. Ito ang iyong personal na Google, laging handang tumulong.</translation>
 <translation id="3781742599892759500">Access sa mikropono ng Linux</translation>
-<translation id="378312418865624974">Magbasa ng natatanging identifier para sa computer na ito</translation>
 <translation id="3784472333786002075">Ang cookies ay mga file na ginawa ng mga website. May dalawang uri ng cookies: Ginagawa ng site na iyong binibisita ang cookies ng first-party. Ipinapakita ang site sa address bar. Ginagawa ng iba pang site ang third-party na cookies. Pagmamay-ari ng mga site na ito ang ilan sa content, tulad ng mga ad o larawan, na nakikita mo sa website na iyong binibisita.</translation>
 <translation id="3785308913036335955">Ipakita ang Shortcut ng Apps</translation>
 <translation id="3785727820640310185">Mga naka-save na password para sa site na ito</translation>
@@ -3382,6 +3380,7 @@
 <translation id="4227605727325220318">Magdagdag ng bagong Android phone</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Hindi pinapayagan ang extension na ito}one{Hindi pinapayagan ang ilang extension}other{Hindi pinapayagan ang ilang extension}}</translation>
 <translation id="4231095370974836764">Mag-install ng mga app at laro mula sa Google Play sa iyong <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Isara ang mga kontrol sa laro</translation>
 <translation id="4232375817808480934">I-configure ang Kerberos</translation>
 <translation id="4235965441080806197">Kanselahin ang pag-sign in</translation>
 <translation id="4236163961381003811">Tumuklas ng higit pang extension</translation>
@@ -3576,7 +3575,6 @@
 <translation id="4415748029120993980">SECG elliptic curve secp384r1 (na tinatawag ding NIST P-384)</translation>
 <translation id="4416450511678320850">Walang available na app para sa content na ito</translation>
 <translation id="4416582610654027550">Mag-type ng valid na URL</translation>
-<translation id="4417162649853416189">Mag-drag ng Mga Larawan para Maghanap gamit ang <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Laging payagan ang <ph name="HOST" /> na magset ng cookies</translation>
 <translation id="4421932782753506458">Mingming</translation>
 <translation id="4423376891418188461">I-restore ang Mga Setting</translation>
@@ -3647,6 +3645,7 @@
 <translation id="449232563137139956">Karaniwang nagpapakita ng mga larawan ang mga site bilang ilustrasyon, gaya ng mga litrato para sa mga online na store o artikulo ng balita</translation>
 <translation id="4492698018379445570">Makita ang idinagdag mo sa mga shopping cart at mag-check out kapag handa ka na</translation>
 <translation id="4493468155686877504">Inirerekomenda (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">Payagan ang extension na ito sa <ph name="SITE" />?</translation>
 <translation id="4495419450179050807">Huwag ipakita sa pahinang ito</translation>
 <translation id="4497145443434063861">PC at Chromecast sa magkakaibang Wi-Fi network (hal. 2.4GHz
     vs. 5GHz)</translation>
@@ -3715,7 +3714,6 @@
 <translation id="4550926046134589611">Bubukas pa rin ang ilang sinusuportahang link sa <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Pindutin ang <ph name="MODIFIER_KEY_DESCRIPTION" /> para i-undo</translation>
 <translation id="4553526521109675518">Kailangan mong i-restart ang iyong Chromebook para mapalitan ang wika ng device. <ph name="BEGIN_LINK_LEARN_MORE" />Matuto pa<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Mag-drag ng mga larawan para maghanap gamit ang <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Pareho o mas mababa ang bersyon ng external na extension kumpara sa umiiral nang extension.</translation>
 <translation id="4555769855065597957">Shadow</translation>
 <translation id="4555863373929230635">Para mag-save ng mga password sa iyong Google Account, mag-sign in at i-on ang pag-sync.</translation>
@@ -4566,7 +4564,6 @@
 <translation id="5427459444770871191">I-rotate &amp;Pakanan</translation>
 <translation id="542750953150239272">Sa pamamagitan ng pagpapatuloy, sumasang-ayon kang ang device na ito ay puwede ring awtomatikong mag-download at mag-install ng mga update at app mula sa Google, iyong carrier, at manufacturer ng device mo, nang posibleng gamit ang cellular data. Posibleng mag-alok ng mga in-app na pagbili ang ilan sa mga app na ito.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Available ang update)</translation>
-<translation id="5429373054983029602">Maghanap sa iyong screen gamit ang <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">May kailangang i-install na update para sa Trusted Platform Module firmware. Tingnan ang <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Instant na Pag-tether</translation>
 <translation id="5431318178759467895">Kulay</translation>
@@ -4639,7 +4636,6 @@
 <translation id="5494920125229734069">Piliin ang lahat</translation>
 <translation id="5495466433285976480">Tatanggalin nito ang lahat ng lokal na user, file, data, at iba pang mga setting sa iyong susunod na pag-restart. Kakailanganing mag-sign in muli ng lahat ng user.</translation>
 <translation id="5495597166260341369">Panatilihing naka-on ang display</translation>
-<translation id="549580971452855947">Mag-drag para maghanap ng mga larawan gamit ang <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Isaayos</translation>
 <translation id="5496730470963166430">Hindi pinapayagang magpadala ng mga pop-up o gumamit ng mga pag-redirect</translation>
 <translation id="5497251278400702716">File na ito</translation>
@@ -5752,7 +5748,6 @@
 May # ka pang nakompromisong password. Inirerekomenda ng Google Password Manager na tingnan na ngayon ang mga password na ito.}other{Napalitan ang nakompromisong password.
 
 May # ka pang nakompromisong password. Inirerekomenda ng Google Password Manager na tingnan na ngayon ang mga password na ito.}}</translation>
-<translation id="6595792813574514527">Mag-drag para Maghanap ng Mga Larawan gamit ang <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Mga pagpipilian sa pag-encrypt</translation>
 <translation id="6596816719288285829">IP Address</translation>
 <translation id="6597017209724497268">Mga Sample</translation>
@@ -7373,7 +7368,6 @@
 <translation id="8184318863960255706">Higit pang impormasyon</translation>
 <translation id="8184472985242519288">Magkapareho</translation>
 <translation id="8186609076106987817">Hindi makita ng server ang file.</translation>
-<translation id="8186704951085064172">Hanapin ang Bahagi ng Page gamit ang <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Suriin ang mga setting ng iyong device at i-on ito para magpatuloy</translation>
 <translation id="8188742492803591566">Ilagay ang access code na ipinapakita sa Chromecast o TV para simulan ang pag-cast sa iyong screen.</translation>
 <translation id="8189306097519446565">Mga pampaaralang account</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb
index c82c917..1ad6e97 100644
--- a/chrome/app/resources/generated_resources_fr-CA.xtb
+++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -1411,7 +1411,6 @@
     Si vous décidez plus tard que la fonctionnalité Voice Match ne convient pas à votre enfant, retirez-la simplement dans les paramètres de l'Assistant. Pour afficher ou supprimer les extraits audio enregistrés par votre enfant lors de la configuration de la fonctionnalité Voice Match, accédez à l'adresse <ph name="VOICE_MATCH_SETTINGS_URL" /> à partir du compte de votre enfant.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Rechercher une partie de la page au moyen de <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">L'accès à vos capteurs de mouvement et de luminosité a été bloqué pour ce site.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL de la page</translation>
@@ -2036,7 +2035,6 @@
 <translation id="289695669188700754">Identifiant de la clé : <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Ce paramètre personnalisé sera retiré lorsque vous fermerez toutes vos fenêtres de navigation privée</translation>
 <translation id="2897878306272793870">Voulez-vous vraiment ouvrir <ph name="TAB_COUNT" /> onglets?</translation>
-<translation id="2900477968385519153">Rechercher sur votre écran au moyen de <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Le fichier utilise des fonctionnalités qui ne sont pas prises en charge</translation>
 <translation id="2901348420151309559">Photos et applications récentes</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> n'a pas pu communiquer avec cette imprimante. Assurez-vous que l'imprimante est bien branchée, puis recommencez.</translation>
@@ -2909,7 +2907,6 @@
 <translation id="3778740492972734840">Outils de &amp;développement</translation>
 <translation id="3778868487658107119">Posez-lui des questions. Dites-lui ce qu'il doit faire. C'est votre Google personnel, toujours prêt à vous aider.</translation>
 <translation id="3781742599892759500">Accès au microphone pour Linux</translation>
-<translation id="378312418865624974">Lire un identificateur unique pour cet ordinateur</translation>
 <translation id="3784472333786002075">Les témoins sont des fichiers créés par les sites Web. Il y a deux types de témoins : les témoins directs sont ceux que créent les sites que vous visitez. Le site en question figure dans la barre d'adresse. Les témoins tiers sont ceux que créent d'autres sites. Ces sites possèdent certains types de contenu, comme des annonces et des images, que vous voyez sur les sites que vous visitez.</translation>
 <translation id="3785308913036335955">Afficher le raccourci des applications</translation>
 <translation id="3785727820640310185">Mots de passe enregistrés pour ce site</translation>
@@ -3562,7 +3559,6 @@
 <translation id="4415748029120993980">Courbe elliptique SECG secp384r1 (aussi appelée NIST P-384)</translation>
 <translation id="4416450511678320850">Aucune application n'est offerte pour gérer ce contenu</translation>
 <translation id="4416582610654027550">Entrez une URL valide</translation>
-<translation id="4417162649853416189">Faire glisser sur les images pour rechercher au moyen de <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Toujours autoriser <ph name="HOST" /> à enregistrer des témoins</translation>
 <translation id="4421932782753506458">Félix</translation>
 <translation id="4423376891418188461">Restaurer les paramètres</translation>
@@ -3633,6 +3629,7 @@
 <translation id="449232563137139956">Les sites affichent généralement des images à des fins d'illustration, par exemple des photos dans les boutiques en ligne ou dans les articles d'actualités</translation>
 <translation id="4492698018379445570">Voyez ce que vous avez ajouté à vos paniers d'achats et passez à la caisse lorsque vous êtes prêt</translation>
 <translation id="4493468155686877504">Recommandé (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">Autoriser cette extension sur <ph name="SITE" />?</translation>
 <translation id="4495419450179050807">Ne pas afficher sur cette page</translation>
 <translation id="4497145443434063861">L'ordinateur et le Chromecast sont sur des réseaux Wi-Fi différents (par exemple, 2,4 GHz et 5 GHz)</translation>
 <translation id="4500114933761911433">Le plugiciel <ph name="PLUGIN_NAME" /> a planté</translation>
@@ -3700,7 +3697,6 @@
 <translation id="4550926046134589611">Certains liens pris en charge continueront de s'ouvrir dans <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Appuyez sur <ph name="MODIFIER_KEY_DESCRIPTION" /> pour annuler l'action</translation>
 <translation id="4553526521109675518">Vous devez redémarrer votre Chromebook pour changer la langue de l'appareil. <ph name="BEGIN_LINK_LEARN_MORE" />En savoir plus<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Faire glisser sur les images pour rechercher au moyen de <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">La version d'extension externe est égale ou inférieure à celle existante.</translation>
 <translation id="4555769855065597957">Ombre</translation>
 <translation id="4555863373929230635">Pour enregistrer des mots de passe dans votre compte Google, connectez-vous et activez la synchronisation.</translation>
@@ -4551,7 +4547,6 @@
 <translation id="5427459444770871191">Rotation dans le sens &amp;horaire</translation>
 <translation id="542750953150239272">En continuant, vous acceptez que cet appareil puisse également télécharger et installer automatiquement des mises à jour et des applications de Google, de votre fournisseur de services et du fabricant de l'appareil, possiblement par l'intermédiaire du réseau de données cellulaires. Certaines de ces applications peuvent proposer des achats au moyen de l'application.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (une mise à jour est offerte)</translation>
-<translation id="5429373054983029602">Rechercher sur votre écran au moyen de <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Une mise à jour pour le micrologiciel du module de plateforme de confiance doit être installée. Consultez <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Partage de connexion instantané</translation>
 <translation id="5431318178759467895">Couleur</translation>
@@ -4624,7 +4619,6 @@
 <translation id="5494920125229734069">Tout sélectionner</translation>
 <translation id="5495466433285976480">Cette fonctionnalité a pour effet de supprimer tous les utilisateurs, les fichiers, les données et les autres paramètres locaux au prochain redémarrage. Tous les utilisateurs devront se reconnecter.</translation>
 <translation id="5495597166260341369">Maintenir l'écran activé</translation>
-<translation id="549580971452855947">Faire glisser pour rechercher des images au moyen de <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organiser</translation>
 <translation id="5496730470963166430">Non autorisés à afficher des fenêtres contextuelles ni à utiliser de redirections</translation>
 <translation id="5497251278400702716">Ce fichier</translation>
@@ -5737,7 +5731,6 @@
 Vous avez # autre mot de passe compromis. Le gestionnaire de mots de passe de Google vous recommande de vérifier ce mots de passe maintenant.}other{Le mot de passe compromis a bien été changé.
 
 Vous avez # autres mots de passe compromis. Le gestionnaire de mots de passe de Google vous recommande de vérifier ces mots de passe maintenant.}}</translation>
-<translation id="6595792813574514527">Faire glisser pour rechercher des images au moyen de <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Options de chiffrement</translation>
 <translation id="6596816719288285829">Adresse IP</translation>
 <translation id="6597017209724497268">Échantillons</translation>
@@ -7357,7 +7350,6 @@
 <translation id="8184318863960255706">Renseignements supplémentaires</translation>
 <translation id="8184472985242519288">Uniforme</translation>
 <translation id="8186609076106987817">Le serveur n'a pas trouvé le fichier.</translation>
-<translation id="8186704951085064172">Rechercher une partie de la page au moyen de <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Vérifiez les paramètres de votre appareil et activez cette option pour continuer</translation>
 <translation id="8188742492803591566">Entrez le code d'accès affiché sur le Chromecast ou le téléviseur pour commencer à diffuser votre écran.</translation>
 <translation id="8189306097519446565">Comptes scolaires</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 2fd071b..283a0e7 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -1411,7 +1411,6 @@
     Si, par la suite, vous décidez que Voice Match ne convient pas à votre enfant, supprimez-le dans les paramètres de l'Assistant. Pour voir ou supprimer les extraits audio que votre enfant enregistre quand il configure Voice Match, accédez à <ph name="VOICE_MATCH_SETTINGS_URL" /> depuis son compte.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Rechercher sur une partie de la page avec <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">L'accès à vos capteurs de mouvement ou de lumière a été bloqué pour ce site.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL de la page</translation>
@@ -2035,7 +2034,6 @@
 <translation id="289695669188700754">ID de clé : <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Ce paramètre personnalisé sera supprimé lorsque vous fermerez toutes les fenêtres de navigation privée</translation>
 <translation id="2897878306272793870">Voulez-vous vraiment ouvrir <ph name="TAB_COUNT" /> onglets ?</translation>
-<translation id="2900477968385519153">Rechercher sur votre écran avec <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Ce fichier utilise des fonctionnalités non compatibles</translation>
 <translation id="2901348420151309559">Photos et applis récentes</translation>
 <translation id="2902127500170292085">Communication impossible entre l'extension "<ph name="EXTENSION_NAME" />" et cette imprimante. Veuillez vous assurer que l'imprimante est branchée, puis réessayer.</translation>
@@ -2908,7 +2906,6 @@
 <translation id="3778740492972734840">Outils de &amp;développement</translation>
 <translation id="3778868487658107119">Posez-lui des questions et donnez-lui des choses à faire. L'Assistant Google est toujours là pour vous aider.</translation>
 <translation id="3781742599892759500">Accès au micro sous Linux</translation>
-<translation id="378312418865624974">Accéder à un identifiant unique pour cet ordinateur</translation>
 <translation id="3784472333786002075">Les cookies sont des fichiers créés par les sites Web. Il en existe deux types : les cookies propriétaires et les cookies tiers. Les cookies propriétaires sont créés par le site que vous consultez et qui est indiqué dans la barre d'adresse. Les cookies tiers sont créés par d'autres sites, lesquels possèdent une partie du contenu, comme les annonces ou les images, que vous voyez sur le site Web que vous consultez.</translation>
 <translation id="3785308913036335955">Afficher le raccourci des applications</translation>
 <translation id="3785727820640310185">Mots de passe enregistrés pour ce site</translation>
@@ -3561,7 +3558,6 @@
 <translation id="4415748029120993980">Courbe elliptique SECG secp384r1 (également appelée "NIST P-384")</translation>
 <translation id="4416450511678320850">Aucune appli disponible pour ce contenu</translation>
 <translation id="4416582610654027550">Saisissez une URL valide</translation>
-<translation id="4417162649853416189">Faire glisser sur les images pour rechercher avec <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Toujours autoriser <ph name="HOST" /> à paramétrer les cookies</translation>
 <translation id="4421932782753506458">Félix</translation>
 <translation id="4423376891418188461">Rétablir les paramètres</translation>
@@ -3699,7 +3695,6 @@
 <translation id="4550926046134589611">Certains liens compatibles continueront à s'ouvrir dans <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Appuyez sur <ph name="MODIFIER_KEY_DESCRIPTION" /> pour annuler</translation>
 <translation id="4553526521109675518">Vous devez redémarrer votre Chromebook pour changer la langue de l'appareil. <ph name="BEGIN_LINK_LEARN_MORE" />En savoir plus<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Faire glisser sur les images pour rechercher avec <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">La version d'extension externe est identique ou antérieure à la version existante.</translation>
 <translation id="4555769855065597957">Duplicata</translation>
 <translation id="4555863373929230635">Pour enregistrer vos mots de passe dans votre compte Google, connectez-vous et activez la synchronisation.</translation>
@@ -4550,7 +4545,6 @@
 <translation id="5427459444770871191">Rotation &amp;horaire</translation>
 <translation id="542750953150239272">En continuant, vous acceptez que cet appareil puisse aussi télécharger et installer automatiquement des mises à jour et des applis de Google, de votre opérateur et du fabricant de votre appareil, probablement via le réseau mobile. Certaines de ces applis permettent d'y effectuer des achats.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (mise à jour disponible)</translation>
-<translation id="5429373054983029602">Rechercher sur votre écran avec <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Vous devez mettre à jour le micrologiciel TPM (Trusted Platform Module). Consultez la page <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Partage de connexion instantané</translation>
 <translation id="5431318178759467895">Couleur</translation>
@@ -4623,7 +4617,6 @@
 <translation id="5494920125229734069">Tout sélectionner</translation>
 <translation id="5495466433285976480">Cette option a pour effet de supprimer tous les utilisateurs, les fichiers, les données et les autres paramètres en local au prochain redémarrage. Tous les utilisateurs devront se reconnecter.</translation>
 <translation id="5495597166260341369">Laisser l'écran activé</translation>
-<translation id="549580971452855947">Faire glisser pour rechercher dans les images avec <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organiser</translation>
 <translation id="5496730470963166430">Non autorisé à afficher des pop-ups ni à utiliser des redirections</translation>
 <translation id="5497251278400702716">Ce fichier</translation>
@@ -5737,7 +5730,6 @@
 Vous avez # autre mot de passe compromis. Le Gestionnaire de mots de passe Google vous recommande de le vérifier immédiatement.}other{Le mot de passe compromis a bien été modifié.
 
 Vous avez # autres mots de passe compromis. Le Gestionnaire de mots de passe Google vous recommande de les vérifier immédiatement.}}</translation>
-<translation id="6595792813574514527">Faire glisser pour rechercher dans les images avec <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Options de chiffrement</translation>
 <translation id="6596816719288285829">Adresse IP</translation>
 <translation id="6597017209724497268">échantillons</translation>
@@ -7358,7 +7350,6 @@
 <translation id="8184318863960255706">Plus d'infos</translation>
 <translation id="8184472985242519288">Uniforme</translation>
 <translation id="8186609076106987817">Impossible de trouver le fichier sur le serveur.</translation>
-<translation id="8186704951085064172">Rechercher sur une partie de la page avec <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Activez le Bluetooth dans les paramètres de votre appareil pour continuer</translation>
 <translation id="8188742492803591566">Saisissez le code d'accès affiché sur le Chromecast ou la télévision pour commencer à caster votre écran.</translation>
 <translation id="8189306097519446565">Comptes scolaires</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb
index 54a31d54..142dfe9c 100644
--- a/chrome/app/resources/generated_resources_gl.xtb
+++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -1409,7 +1409,6 @@
 Se máis tarde decides que prefires que o teu fillo ou filla non utilice Voice Match, só tes que quitalo da configuración do Asistente. Para ver ou eliminar os clips de audio que o teu fillo ou filla gravase durante a configuración de Voice Match, vai a <ph name="VOICE_MATCH_SETTINGS_URL" /> coa súa conta.
     <ph name="BR" />
 <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Buscar parte da páxina con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Bloqueouse o acceso deste sitio aos teus sensores de movemento ou luz.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL da páxina</translation>
@@ -2032,7 +2031,6 @@
 <translation id="289695669188700754">ID da clave: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Esta opción de configuración personalizada quitarase cando peches todas as ventás do modo de incógnito</translation>
 <translation id="2897878306272793870">Seguro que queres abrir <ph name="TAB_COUNT" /> pestanas?</translation>
-<translation id="2900477968385519153">Buscar a túa pantalla con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">O ficheiro utiliza funcións que non son compatibles</translation>
 <translation id="2901348420151309559">Aplicacións e fotos recentes</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> non se puido comunicar con esta impresora. Asegúrate de que a impresora estea conectada e téntao de novo.</translation>
@@ -2905,7 +2903,6 @@
 <translation id="3778740492972734840">&amp;Ferramentas para programadores</translation>
 <translation id="3778868487658107119">Faille preguntas e pídelle que faga cousas. Esta función personalizada de Google sempre está lista para axudarche.</translation>
 <translation id="3781742599892759500">Acceso ao micrófono de Linux</translation>
-<translation id="378312418865624974">Ler un identificador único para este ordenador</translation>
 <translation id="3784472333786002075">As cookies son ficheiros creados polos sitios web e poden ser de dous tipos: propias ou de terceiros. As propias son as que crean os sitios que visitas. Neste caso, o sitio en cuestión aparece na barra de enderezos. As de terceiros son as que crean outros sitios. Parte do contido que ves nos sitios que visitas, como anuncios ou imaxes, pertence a esoutros sitios.</translation>
 <translation id="3785308913036335955">Mostrar o atallo das aplicacións</translation>
 <translation id="3785727820640310185">Gardáronse os contrasinais para este sitio</translation>
@@ -3558,7 +3555,6 @@
 <translation id="4415748029120993980">SECG Elliptic Curve secp384r1 (tamén se denomina NIST P-384)</translation>
 <translation id="4416450511678320850">Non hai ningunha aplicación dispoñible para este contido</translation>
 <translation id="4416582610654027550">Escribe un URL válido</translation>
-<translation id="4417162649853416189">Arrastrar cursor sobre imaxes para facer buscas con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Permitir sempre a <ph name="HOST" /> establecer cookies</translation>
 <translation id="4421932782753506458">Gatiño</translation>
 <translation id="4423376891418188461">Restaurar configuración</translation>
@@ -3696,7 +3692,6 @@
 <translation id="4550926046134589611">Algunhas ligazóns compatibles seguirán abríndose na aplicación <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Preme <ph name="MODIFIER_KEY_DESCRIPTION" /> para desfacer a acción</translation>
 <translation id="4553526521109675518">Para cambiar o idioma do teu Chromebook, debes reiniciar o dispositivo. <ph name="BEGIN_LINK_LEARN_MORE" />Máis información<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Arrastrar cursor sobre imaxes para facer buscas con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">A extensión externa ten a mesma versión ou unha inferior en comparación coa existente.</translation>
 <translation id="4555769855065597957">Sombra</translation>
 <translation id="4555863373929230635">Para gardar os contrasinais na túa Conta de Google, inicia sesión e activa a sincronización.</translation>
@@ -4547,7 +4542,6 @@
 <translation id="5427459444770871191">Xirar á &amp;dereita</translation>
 <translation id="542750953150239272">Ao continuar, aceptas que este dispositivo tamén poida descargar e instalar automaticamente actualizacións e aplicacións de Google, do teu operador e do fabricante do teu dispositivo; posiblemente usando datos móbiles. Algunhas destas aplicacións poden ofrecer compras integradas.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (hai unha actualización dispoñible)</translation>
-<translation id="5429373054983029602">Buscar a túa pantalla con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">É necesario instalar unha actualización do firmware de Trusted Platform Module (Módulo de plataforma fiable). Consulta <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Conexión compartida instantánea</translation>
 <translation id="5431318178759467895">Cor</translation>
@@ -4620,7 +4614,6 @@
 <translation id="5494920125229734069">Seleccionar todo</translation>
 <translation id="5495466433285976480">Esta acción eliminará todos os usuarios, ficheiros, datos e outras configuracións locais a próxima vez que reinicies. Todos os usuarios deberán iniciar sesión de novo.</translation>
 <translation id="5495597166260341369">Manter a pantalla activada</translation>
-<translation id="549580971452855947">Arrastrar para buscar imaxes con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organizar</translation>
 <translation id="5496730470963166430">Sitios que non poden mostrar ventás emerxentes ou usar redireccións</translation>
 <translation id="5497251278400702716">Este ficheiro</translation>
@@ -5728,7 +5721,6 @@
 Quédache # máis. O xestor de contrasinais de Google recomenda que comprobes este contrasinal de inmediato.}other{Cambiouse correctamente o contrasinal vulnerado.
 
 Quédanche # máis. O xestor de contrasinais de Google recomenda que comprobes estes contrasinais de inmediato.}}</translation>
-<translation id="6595792813574514527">Arrastrar para buscar imaxes con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opcións de cifrado</translation>
 <translation id="6596816719288285829">Enderezo IP</translation>
 <translation id="6597017209724497268">Mostras</translation>
@@ -7347,7 +7339,6 @@
 <translation id="8184318863960255706">Máis información</translation>
 <translation id="8184472985242519288">Uniforme</translation>
 <translation id="8186609076106987817">O servidor non puido atopar o ficheiro.</translation>
-<translation id="8186704951085064172">Buscar parte da páxina con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Comproba a configuración do teu dispositivo e activa a función para continuar</translation>
 <translation id="8188742492803591566">Para comezar a emitir o contido da túa pantalla, mete o código de acceso que se mostra no Chromecast ou na televisión.</translation>
 <translation id="8189306097519446565">Contas de centro educativo</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index 61ee0127..31e4c87a 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -1408,7 +1408,6 @@
     જો ભવિષ્યમાં તમને લાગે કે Voice Matchની સુવિધા તમારા બાળક માટે યોગ્ય નથી, તો Assistantના સેટિંગમાં જઈને તમે તેને સરળતાથી કાઢી શકો છો. Voice Matchના સેટઅપ દરમિયાન તમારા બાળકે રેકૉર્ડ કરેલી ઑડિયો ક્લિપ જોવા કે તેને ડિલીટ કરવા માટે તમારા બાળકના એકાઉન્ટમાંથી <ph name="VOICE_MATCH_SETTINGS_URL" /> પર જાઓ.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> વડે પેજનો ભાગ શોધો</translation>
 <translation id="2309620859903500144">આ સાઇટને તમારા મોશન અથવા લાઇટ સેન્સરને ઍક્સેસ કરવાથી બ્લૉક કરવામાં આવી છે.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">પેજનું URL</translation>
@@ -2032,7 +2031,6 @@
 <translation id="289695669188700754">કી ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">જ્યારે તમે તમારી બધી છુપી વિન્ડો બંધ કરશો, ત્યારે આ કસ્ટમ સેટિંગ કાઢી નાખવામાં આવશે</translation>
 <translation id="2897878306272793870">શું તમે ખરેખર <ph name="TAB_COUNT" /> ટૅબ્સ ખોલવા માંગો છો?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> વડે તમારી સ્ક્રીન શોધો</translation>
 <translation id="290105521672621980">ફાઇલ અસમર્થિત સુવિધાઓનો ઉપયોગ કરે છે</translation>
 <translation id="2901348420151309559">તાજેતરના ફોટા અને ઍપ</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" />, આ પ્રિન્ટર સાથે સંચાર કરી શક્યું નથી. ખાતરી કરો કે પ્રિન્ટર પ્લગ ઇન છે અને ફરી પ્રયાસ કરો.</translation>
@@ -2905,7 +2903,6 @@
 <translation id="3778740492972734840">&amp;વિકાસકર્તા  ટુલ્સ</translation>
 <translation id="3778868487658107119">તેને પ્રશ્નો પૂછો. તેને વસ્તુઓ કરવા માટે કહો. આ તમારું વ્યક્તિગત Google છે, હંમેશા મદદ કરવા માટે તૈયાર છે.</translation>
 <translation id="3781742599892759500">માઇક્રોફોનને Linuxનો ઍક્સેસ આપવાના સેટિંગ</translation>
-<translation id="378312418865624974">આ કમ્પ્યુટર માટે અનન્ય ઓળખકર્તાને વાંચો</translation>
 <translation id="3784472333786002075">કુકી એ વેબસાઇટ દ્વારા બનાવવામાં આવેલી ફાઇલો છે. કુકી બે પ્રકારની હોય છે: પહેલા પક્ષની કુકી જે તમે મુલાકાત લો છો તે સાઇટ દ્વારા બનાવવામાં આવે છે. સાઇટ ઍડ્રેસ બાર પર બતાવવામાં આવે છે. ત્રીજા પક્ષની કુકી અન્ય સાઇટ દ્વારા બનાવવામાં આવે છે. અમુક પ્રકારનું કન્ટેન્ટ આ સાઇટની માલિકીનું હોય છે, જેમ કે તમે મુલાકાત લો છો તે વેબસાઇટ પર તમે જુઓ છો તે જાહેરાતો અથવા છબીઓ.</translation>
 <translation id="3785308913036335955">ઍપ્લિકેશનો શોર્ટકટ બતાવો</translation>
 <translation id="3785727820640310185">આ સાઇટ માટે પાસવર્ડ સાચવેલા છે</translation>
@@ -3558,7 +3555,6 @@
 <translation id="4415748029120993980">SECG એલિપ્ટિક કર્વ secp384r1 (ઉર્ફ NIST P-384)</translation>
 <translation id="4416450511678320850">આ કન્ટેન્ટ માટે કોઈ ઍપ ઉપલબ્ધ નથી</translation>
 <translation id="4416582610654027550">માન્ય URL લખો</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> વડે શોધવા માટે છબીઓની ઉપર ખેંચો</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> ને હંમેશા કૂકીઝ સેટ કરવાની મંજૂરી આપો</translation>
 <translation id="4421932782753506458">ફ્લફી</translation>
 <translation id="4423376891418188461">સેટિંગ રિસ્ટોર કરો</translation>
@@ -3629,6 +3625,7 @@
 <translation id="449232563137139956">ઑનલાઇન સ્ટોર કે નવા લેખ માટે ફોટા આપવા જેવા મુદ્દાઓ માટે ચિત્ર આપવા માટે, સાઇટ સામાન્ય રીતે છબીઓ બતાવે છે</translation>
 <translation id="4492698018379445570">તમે શૉપિંગ કાર્ટમાં શું ઉમેર્યું તે જુઓ અને જ્યારે તમે તૈયાર હો, ત્યારે ચેક આઉટ કરો</translation>
 <translation id="4493468155686877504">સુઝાવ આપેલું (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180"><ph name="SITE" /> પર આ એક્સ્ટેન્શનને મંજૂરી આપીએ?</translation>
 <translation id="4495419450179050807">આ પેજ પર બતાવશો નહીં</translation>
 <translation id="4497145443434063861">PC અને Chromecast અલગ વાઇ-ફાઇ નેટવર્ક પર (દા.ત. 2.4GHz વિ. 5GHz)</translation>
 <translation id="4500114933761911433"><ph name="PLUGIN_NAME" /> ક્રૅશ થયું છે</translation>
@@ -3696,7 +3693,6 @@
 <translation id="4550926046134589611">અમુક સપોર્ટેડ લિંક હજી પણ <ph name="APP_NAME" />માં ખૂલશે.</translation>
 <translation id="4551763574344810652">છેલ્લો ફેરફાર રદ કરવા માટે <ph name="MODIFIER_KEY_DESCRIPTION" /> દબાવો</translation>
 <translation id="4553526521109675518">ડિવાઇસની ભાષા બદલવા માટે તમારે તમારું Chromebook ફરી ચાલુ કરવું જરૂરી છે. <ph name="BEGIN_LINK_LEARN_MORE" />વધુ જાણો<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> વડે શોધવા માટે છબીઓની ઉપર ખેંચો</translation>
 <translation id="4554591392113183336">બાહ્ય એક્સ્ટેંશન હાલના એક્સ્ટેંશનની સરખામણીએ સમાન અથવા નીચલા વર્ઝન પર છે.</translation>
 <translation id="4555769855065597957">શેડો</translation>
 <translation id="4555863373929230635">તમારા Google એકાઉન્ટમાં પાસવર્ડ સાચવવા માટે, સાઇન ઇન કરો અને સિંક કરવાનું ચાલુ કરો.</translation>
@@ -4547,7 +4543,6 @@
 <translation id="5427459444770871191">&amp;ઘડિયાળની દિશામાં ફેરવો</translation>
 <translation id="542750953150239272">આગળ વધીને, તમે સંમત થાઓ છો કે આ ડિવાઇસ Google, તમારા મોબાઇલ ઑપરેટર અને તમારા ડિવાઇસના નિર્માતા તરફથી સંભવિત રીતે સેલ્યુલર ડેટાનો ઉપયોગ કરીને, અપડેટ અને ઍપને ઑટોમૅટિક રીતે ડાઉનલોડ અને ઇન્સ્ટૉલ પણ કરી શકે છે. આમાંની અમુક ઍપ, ઍપમાંથી ખરીદીઓની ઑફર કરી શકે છે.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (અપડેટ ઉપલબ્ધ છે)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> વડે તમારી સ્ક્રીન શોધો</translation>
 <translation id="542948651837270806">વિશ્વસનીય પ્લૅટફૉર્મ મૉડ્યૂલ ફર્મવેયર માટે અપડેટ ઇન્સ્ટૉલ કરવું જરૂરી છે. <ph name="TPM_FIRMWARE_UPDATE_LINK" /> જુઓ</translation>
 <translation id="5430931332414098647">ફટાફટ ટિથરિંગ</translation>
 <translation id="5431318178759467895">રંગ</translation>
@@ -4620,7 +4615,6 @@
 <translation id="5494920125229734069">બધા પસંદ કરો</translation>
 <translation id="5495466433285976480">આ તમારા રિસ્ટાર્ટ કર્યા પછી બધા સ્થાનિક વપરાશકર્તાઓ, ફાઇલો, ડેટા અને અન્ય સેટિંગને કાઢી નાખશે. બધા વપરાશકર્તાઓને ફરી સાઇન ઇન કરવાની જરૂર પડશે.</translation>
 <translation id="5495597166260341369">ડિસ્પ્લે ચાલુ રાખે છે</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> વડે છબીઓ શોધવા માટે ખેંચો</translation>
 <translation id="5496587651328244253">ગોઠવો</translation>
 <translation id="5496730470963166430">પૉપ-અપ મોકલવા અથવા રીડાયરેક્ટનો ઉપયોગ કરવાની મંજૂરી નથી</translation>
 <translation id="5497251278400702716">આ ફાઇલ</translation>
@@ -5735,7 +5729,6 @@
 તમે ચેડાં કરાયેલો વધુ # પાસવર્ડ ધરાવો છો. Google Password Manager હમણાં જ આ પાસવર્ડ ચેક કરવાનો સુઝાવ આપે છે.}other{ચેડાં કરાયેલો પાસવર્ડ સફળતાપૂર્વક બદલ્યો.
 
 તમે ચેડાં કરાયેલા વધુ # પાસવર્ડ ધરાવો છો. Google Password Manager હમણાં જ આ પાસવર્ડ ચેક કરવાનો સુઝાવ આપે છે.}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> વડે છબીઓ શોધવા માટે ખેંચો</translation>
 <translation id="6596325263575161958">એન્ક્રિપ્શન વિકલ્પો</translation>
 <translation id="6596816719288285829">IP સરનામું</translation>
 <translation id="6597017209724497268">નમૂના</translation>
@@ -7350,7 +7343,6 @@
 <translation id="8184318863960255706">વધુ માહિતી</translation>
 <translation id="8184472985242519288">સમાન</translation>
 <translation id="8186609076106987817">સર્વર ફાઇલને શોધી શક્યું નથી.</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> વડે પેજનો ભાગ શોધો</translation>
 <translation id="8188389033983459049">તમારા ઉપકરણની સેટિંગ તપાસો અને ચાલુ રાખવા માટે તેને ચાલુ કરો</translation>
 <translation id="8188742492803591566">તમારી સ્ક્રીન કાસ્ટ કરવાનું શરૂ કરવા માટે, તમારા Chromecast કે ટીવી પર બતાવવામાં આવેલો ઍક્સેસ કોડ દાખલ કરો.</translation>
 <translation id="8189306097519446565">સ્કૂલ એકાઉન્ટ</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index 0aa69938..1a6b0f2 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -1426,7 +1426,6 @@
     अगर बाद में आपको लगता है कि वॉइस मैच की सुविधा आपके बच्चे के लिए सही नहीं है, तो Assistant की सेटिंग में जाकर, इस सुविधा को आसानी से बंद किया जा सकता है. वॉइस मैच की सुविधा सेट अप करने के दौरान, अपने बच्चे की रिकॉर्ड की गई ऑडियो क्लिप देखने या मिटाने के लिए, अपने बच्चे के खाते से <ph name="VOICE_MATCH_SETTINGS_URL" /> पर जाएं.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> की मदद से पेज का हिस्सा खोजें</translation>
 <translation id="2309620859903500144">इस साइट को आपके डिवाइस के गति या रोशनी के सेंसर ऐक्सेस करने से ब्लॉक कर दिया गया है.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">पेज का यूआरएल</translation>
@@ -2049,7 +2048,6 @@
 <translation id="289695669188700754">कुंजी ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">इस कस्टम सेटिंग को तब हटाया जाएगा, जब आप अपने सभी गुप्त विंडो बंद करेंगे</translation>
 <translation id="2897878306272793870">क्या आप वाकई <ph name="TAB_COUNT" /> टैब खोलना चाहते हैं?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> की मदद से स्क्रीन खोजें</translation>
 <translation id="290105521672621980">फ़ाइल असमर्थित सुविधाओं का उपयोग कर‍‍ती है</translation>
 <translation id="2901348420151309559">हाल ही के फ़ोटो और ऐप्लिकेशन</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> इस प्रिंटर के साथ जुड़ नहीं सका. पक्का करें कि प्रिंटर को प्लग इन किया गया है और पुनः प्रयास करें.</translation>
@@ -2922,7 +2920,6 @@
 <translation id="3778740492972734840">&amp;डेवलपर टूल</translation>
 <translation id="3778868487658107119">इससे प्रश्न पूछें. इसे कुछ काम करने को कहें. यह आपका व्यक्तिगत Google है, जो हमेशा सहायता के लिए तैयार रहता है.</translation>
 <translation id="3781742599892759500">Linux में माइक्रोफ़ोन का ऐक्सेस</translation>
-<translation id="378312418865624974">इस कंप्यूटर का अद्वितीय पहचानकर्ता पढ़ें</translation>
 <translation id="3784472333786002075">कुकी ऐसी फ़ाइलें होती हैं जिन्हें वेबसाइटें बनाती हैं. कुकी दो तरह की होती हैं: पहले पक्ष की कुकी वह साइट बनाती है जिस पर आप जाते हैं. यह साइट, पता बार में दिखती है. तीसरे पक्ष की कुकी, अन्य साइटें बनाती हैं. इन साइटों पर विज्ञापन या इमेज जैसी कुछ ऐसी चीज़ें होती हैं जो उस वेबसाइट पर दिखती हैं जिस पर आप जाते हैं.</translation>
 <translation id="3785308913036335955">ऐप्स  शॉर्टकट दिखाएं</translation>
 <translation id="3785727820640310185">इस साइट के लिए सेव किए गए पासवर्ड</translation>
@@ -3574,7 +3571,6 @@
 <translation id="4415748029120993980">SECG अंडाकार वक्र secp384r1 (अर्थात NIST P-384)</translation>
 <translation id="4416450511678320850">इस कॉन्टेंट के लिए कोई भी ऐप्लिकेशन उपलब्ध नहीं है</translation>
 <translation id="4416582610654027550">एक मान्य यूआरएल टाइप करें</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> की मदद से खोजने के लिए, खींचें और इमेज पर छोड़ें</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> को हमेशा कुकी सेट करने की अनुमति दें</translation>
 <translation id="4421932782753506458">फ्लफ़ी</translation>
 <translation id="4423376891418188461">सेटिंग फिर से स्थापित करें</translation>
@@ -3645,6 +3641,7 @@
 <translation id="449232563137139956">आम तौर पर, साइटें उदाहरण देने के लिए इमेज दिखाती हैं. जैसे कि ऑनलाइन स्टोर या समाचार लेखों के लिए फ़ोटो</translation>
 <translation id="4492698018379445570">देखें कि आपने शॉपिंग कार्ट में किन चीज़ों को जोड़ा है और सभी चीज़ें जांचने के बाद पैसे चुकाएं</translation>
 <translation id="4493468155686877504">(<ph name="INSTALL_SIZE" />) सुझाया गया</translation>
+<translation id="4495002167047709180">क्या <ph name="SITE" /> पर इस एक्सटेंशन को चलाने की अनुमति देनी है?</translation>
 <translation id="4495419450179050807">इस पेज पर न दिखाएं</translation>
 <translation id="4497145443434063861">अलग-अलग वाई-फ़ाई नेटवर्क पर PC और Chromecast (जैसे कि 2.4GHz
     बनाम 5GHz)</translation>
@@ -3713,7 +3710,6 @@
 <translation id="4550926046134589611">कुछ सहायता लिंक <ph name="APP_NAME" /> में अब भी खुलेंगे.</translation>
 <translation id="4551763574344810652">पहले जैसा करने के लिए <ph name="MODIFIER_KEY_DESCRIPTION" /> दबाएं</translation>
 <translation id="4553526521109675518">आपको डिवाइस की भाषा बदलने के लिए, अपने Chromebook को रीस्टार्ट करना होगा. <ph name="BEGIN_LINK_LEARN_MORE" />ज़्यादा जानें<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> की मदद से खोजने के लिए, खींचें और इमेज पर छोड़ें</translation>
 <translation id="4554591392113183336">बाहरी एक्‍सटेंशन मौजूदा की तुलना में समान या निम्नतर संस्‍करण पर है.</translation>
 <translation id="4555769855065597957">परछाई</translation>
 <translation id="4555863373929230635">अपने Google खाते में पासवर्ड सेव करने के लिए, साइन इन करें और सिंक करना चालू करें.</translation>
@@ -4564,7 +4560,6 @@
 <translation id="5427459444770871191">&amp;घड़ी की दिशा में घुमाएं</translation>
 <translation id="542750953150239272">जारी रखने का मतलब है कि यह डिवाइस, Google, आपके मोबाइल पर नेटवर्क सेवा देने वाली कंपनी, और इस डिवाइस को बनाने वाली कंपनी से मिलने वाले अपडेट और ऐप्लिकेशन को अपने-आप डाउनलोड और इंस्टॉल भी कर सकता है. ऐसा करने के लिए, हो सकता है कि डिवाइस मोबाइल डेटा का इस्तेमाल करे. इनमें से कुछ ऐप्लिकेशन, इन-ऐप्लिकेशन खरीदारी का ऑफ़र दे सकते हैं.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (अपडेट उपलब्‍ध है)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> की मदद से स्क्रीन खोजें</translation>
 <translation id="542948651837270806">भरोसेमंद प्लैटफ़ॉर्म मॉड्यूल फ़र्मवेयर के लिए अपडेट इंस्टॉल करने की ज़रूरत है. <ph name="TPM_FIRMWARE_UPDATE_LINK" /> देखें</translation>
 <translation id="5430931332414098647">इंस्टैंट टेदरिंग</translation>
 <translation id="5431318178759467895">रंग</translation>
@@ -4637,7 +4632,6 @@
 <translation id="5494920125229734069">सभी को चुनें</translation>
 <translation id="5495466433285976480">आपके अगली बार फिर से शुरू करने के बाद ये सभी स्थानीय उपयोगकर्ताओं, फ़ाइलों, डेटा, और अन्य सेटिंग को हटा देगा. सभी उपयोगकर्ताओं को फिर से साइन इन करना होगा.</translation>
 <translation id="5495597166260341369">डिसप्ले चालू रखें</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> की मदद से इमेज खोजने के लिए, खींचें और छोड़ें</translation>
 <translation id="5496587651328244253">व्यवस्थित करें</translation>
 <translation id="5496730470963166430">पॉप-अप भेजने या दूसरे वेबलिंक पर भेजने वाले यूआरएल इस्तेमाल करने की अनुमति नहीं है</translation>
 <translation id="5497251278400702716">इस फ़ाइल</translation>
@@ -5750,7 +5744,6 @@
 आपका # और पासवर्ड या तो हैक हुआ है या चोरी हुआ है. Google Password Manager, इस पासवर्ड को तुरंत बदलने का सुझाव देता है.}other{हैक किए गए या चोरी हुए पासवर्ड बदल दिए गए हैं.
 
 आपके # और पासवर्ड या तो हैक हुए हैं या चोरी हुए हैं. Google Password Manager, इन पासवर्ड को तुरंत बदलने का सुझाव देता है.}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> की मदद से इमेज खोजने के लिए, खींचें और छोड़ें</translation>
 <translation id="6596325263575161958">सुरक्षित करने के तरीकों के विकल्प</translation>
 <translation id="6596816719288285829">आईपी पता</translation>
 <translation id="6597017209724497268">नमूने</translation>
@@ -7370,7 +7363,6 @@
 <translation id="8184318863960255706">ज़्यादा जानकारी</translation>
 <translation id="8184472985242519288">एक जैसा</translation>
 <translation id="8186609076106987817">सर्वर को फ़ाइल नहीं मिल सकी.</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> की मदद से पेज का हिस्सा खोजें</translation>
 <translation id="8188389033983459049">अपनी डिवाइस सेटिंग जांचें और जारी रखने के लिए उसे चालू करें</translation>
 <translation id="8188742492803591566">स्क्रीन को कास्ट करने के लिए, Chromecast या टीवी पर दिख रहा ऐक्सेस कोड डालें.</translation>
 <translation id="8189306097519446565">स्कूल वाले खाते</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index 6e6dfc2..d52019d 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -180,6 +180,7 @@
 <translation id="1166583374608765787">Pregled ažuriranja naziva</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> pripada radnoj površini <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">Otvaranje u <ph name="TIME_REMAINING" />...</translation>
+<translation id="1169266963600477608">Kontrole igre</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> sadrži osjetljive ili opasne podatke. Administrator kaže: "<ph name="CUSTOM_MESSAGE" />"</translation>
 <translation id="1171135284592304528">Istaknite objekt fokusom na tipkovnici kada se promijeni</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> želi se povezati s HID uređajem</translation>
@@ -1413,7 +1414,6 @@
     Ako kasnije odlučite da Voice Match ne odgovara vašem djetetu, jednostavno ga uklonite u djetetovim postavkama Asistenta. Da biste pregledali ili izbrisali audioisječke koje dijete snimi tijekom postavljanja Voice Matcha, posjetite <ph name="VOICE_MATCH_SETTINGS_URL" /> na djetetovom računu.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Pretraži dio stranice pomoću usluge <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Web-lokaciji je zabranjen pristup vašim senzorima pokreta ili svjetla.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL stranice</translation>
@@ -2037,7 +2037,6 @@
 <translation id="289695669188700754">ID ključa: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Ta će se prilagođena postavka ukloniti kad zatvorite sve anonimne prozore</translation>
 <translation id="2897878306272793870">Jeste li sigurni da želite otvoriti <ph name="TAB_COUNT" /> kartica?</translation>
-<translation id="2900477968385519153">Pretraži zaslon pomoću usluge <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Datoteka upotrebljava nepodržane značajke</translation>
 <translation id="2901348420151309559">Nedavne fotografije i aplikacije</translation>
 <translation id="2902127500170292085">Proširenje <ph name="EXTENSION_NAME" /> nije uspostavilo komunikaciju s tim pisačem. Provjerite je li pisač priključen i pokušajte ponovo.</translation>
@@ -2910,7 +2909,6 @@
 <translation id="3778740492972734840">&amp;Alati za razvojne programere</translation>
 <translation id="3778868487658107119">Postavljajte mu pitanja. Dajte mu naredbe. To je vaš osobni Google, uvijek spreman pomoći.</translation>
 <translation id="3781742599892759500">Linuxov pristup mikrofonu</translation>
-<translation id="378312418865624974">pročitati jedinstveni identifikator ovog računala</translation>
 <translation id="3784472333786002075">Kolačići su datoteke web-lokacija. Postoje dvije vrste kolačića: kolačiće prve strane izrađuje web-lokacija koju posjetite. Ta je web-lokacija navedena u adresnoj traci. Kolačiće trećih strana izrađuju ostale web-lokacije. Te web-lokacije posjeduju dio sadržaja prikazanog na web-lokaciji koju ste posjetili, primjerice oglase ili slike.</translation>
 <translation id="3785308913036335955">Prikaži prečac za Aplikacije</translation>
 <translation id="3785727820640310185">Spremljene zaporke za tu web-lokaciju</translation>
@@ -3369,6 +3367,7 @@
 <translation id="4227605727325220318">Dodajte novi Android telefon</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{To proširenje nije dopušteno}one{Neka proširenja nisu dopuštena}few{Neka proširenja nisu dopuštena}other{Neka proširenja nisu dopuštena}}</translation>
 <translation id="4231095370974836764">Instalirajte aplikacije i igre s Google Playa na <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Zatvori kontrole za videoigre</translation>
 <translation id="4232375817808480934">Konfigurirajte Kerberos</translation>
 <translation id="4235965441080806197">Otkaži prijavu</translation>
 <translation id="4236163961381003811">Otkrijte više proširenja</translation>
@@ -3563,7 +3562,6 @@
 <translation id="4415748029120993980">SECG eliptična krivulja secp384r1 (poznata i kao NIST P-384)</translation>
 <translation id="4416450511678320850">Nije dostupna nijedna aplikacija za taj sadržaj</translation>
 <translation id="4416582610654027550">Unesite važeći URL</translation>
-<translation id="4417162649853416189">Povuci preko slika za pretraživanje pomoću usluge <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Hostu <ph name="HOST" /> uvijek dopusti postavljanje kolačića</translation>
 <translation id="4421932782753506458">Pahuljica</translation>
 <translation id="4423376891418188461">Vrati postavke</translation>
@@ -3634,6 +3632,7 @@
 <translation id="449232563137139956">Web-lokacije obično prikazuju slike radi ilustracije, primjerice fotografije za online trgovine ili novinske članke</translation>
 <translation id="4492698018379445570">Pronađite što ste dodali u potrošačke košarice i završite kupnju kad ste spremni</translation>
 <translation id="4493468155686877504">Preporučeno (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">Želite li dopustiti ovo proširenje na web-lokaciji <ph name="SITE" />?</translation>
 <translation id="4495419450179050807">Ne prikazuj na ovoj stranici</translation>
 <translation id="4497145443434063861">PC i Chromecast na različitim Wi-Fi mrežama (primjerice 2,4 GHz i 5 GHz)</translation>
 <translation id="4500114933761911433">Srušio se dodatak <ph name="PLUGIN_NAME" /></translation>
@@ -3701,7 +3700,6 @@
 <translation id="4550926046134589611">Neke podržane veze i dalje će se otvarati u aplikaciji <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Pritisnite <ph name="MODIFIER_KEY_DESCRIPTION" /> za poništavanje</translation>
 <translation id="4553526521109675518">Da biste promijenili jezik uređaja, trebate ponovo pokrenuti Chromebook. <ph name="BEGIN_LINK_LEARN_MORE" />Saznajte više<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Povuci preko slika za pretraživanje pomoću usluge <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Vanjsko proširenje iste je ili starije verzije u odnosu na postojeću.</translation>
 <translation id="4555769855065597957">Sjena</translation>
 <translation id="4555863373929230635">Da biste spremili zaporke na svoj Google račun, prijavite se i uključite sinkronizaciju.</translation>
@@ -4552,7 +4550,6 @@
 <translation id="5427459444770871191">Zakreni u &amp;smjeru kretanja kazaljke na satu</translation>
 <translation id="542750953150239272">Ako nastavite, pristajete na to da ovaj uređaj također može, između ostalog i mobilnim podatkovnim prijenosom, automatski preuzimati i instalirati ažuriranja i aplikacije koje šalju Google, vaš mobilni operater i proizvođač uređaja. U nekima od tih aplikacija mogu se nuditi kupnje putem aplikacije.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Dostupno je ažuriranje)</translation>
-<translation id="5429373054983029602">Pretraži zaslon pomoću usluge <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Potrebno je instalirati ažuriranje za opremu za Trusted Platform Module. Prikaži <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Automatsko modemsko povezivanje</translation>
 <translation id="5431318178759467895">Boja</translation>
@@ -4625,7 +4622,6 @@
 <translation id="5494920125229734069">Odaberi sve</translation>
 <translation id="5495466433285976480">Time će se ukloniti svi lokalni korisnici, datoteke, podaci i ostale postavke nakon sljedećeg ponovnog pokretanja uređaja. Svi će se korisnici morati ponovo prijaviti.</translation>
 <translation id="5495597166260341369">Ostavi uključen zaslon</translation>
-<translation id="549580971452855947">Povuci za pretraživanje slika pomoću usluge <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organizacija</translation>
 <translation id="5496730470963166430">Nije dopušteno slanje skočnih prozora i upotreba preusmjeravanja</translation>
 <translation id="5497251278400702716">Ova datoteka</translation>
@@ -5737,7 +5733,6 @@
 Imate još # ugrožene zaporke. Google upravitelj zaporki preporučuje da odmah provjerite te zaporke.}other{Uspješno ste promijenili ugroženu zaporku.
 
 Imate još # ugroženih zaporki. Google upravitelj zaporki preporučuje da odmah provjerite te zaporke.}}</translation>
-<translation id="6595792813574514527">Povuci za pretraživanje slika pomoću usluge <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opcije šifriranja</translation>
 <translation id="6596816719288285829">IP adresa</translation>
 <translation id="6597017209724497268">Uzorci</translation>
@@ -7357,7 +7352,6 @@
 <translation id="8184318863960255706">Više informacija</translation>
 <translation id="8184472985242519288">Ujednačeno</translation>
 <translation id="8186609076106987817">Poslužitelj nije mogao pronaći datoteku.</translation>
-<translation id="8186704951085064172">Pretraži dio stranice pomoću usluge <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Pregledajte postavke uređaja i uključite ga da biste nastavili</translation>
 <translation id="8188742492803591566">Unesite pristupnu šifru koja se prikazuje na Chromecastu ili TV-u da biste počeli emitirati zaslon.</translation>
 <translation id="8189306097519446565">Školski računi</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index 8462db6..b6d04d6 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -1424,7 +1424,6 @@
     Ha később úgy dönt, hogy a Voice Match funkció mégsem megfelelő gyermeke számára, kikapcsolhatja a Segéd beállításai között. A gyermeke fiókjával való bejelentkezés után a(z) <ph name="VOICE_MATCH_SETTINGS_URL" /> webhelyen tekintheti át és törölheti azokat a hangfelvételeket, amelyeket gyermeke a Voice Match beállítása során rögzített.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Keresés az oldal adott részén a következő segítségével: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Ennél a webhelynél le van tiltva a hozzáférés a felhasználó mozgás- vagy fényérzékelőihez.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Oldal URL-címe</translation>
@@ -2047,7 +2046,6 @@
 <translation id="289695669188700754">Kulcsazonosító: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Ez az egyéni beállítás el lesz távolítva, amikor bezárja az összes inkognitó ablakot.</translation>
 <translation id="2897878306272793870">Biztosan meg szeretne nyitni <ph name="TAB_COUNT" /> lapot?</translation>
-<translation id="2900477968385519153">Keresés a képernyőn a következővel: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">A fájl nem támogatott funkciókat használ</translation>
 <translation id="2901348420151309559">Friss fotók és alkalmazások</translation>
 <translation id="2902127500170292085">A(z) <ph name="EXTENSION_NAME" /> nem tud kommunikálni ezzel a nyomtatóval. Győződjön meg róla, hogy a nyomtató be van kapcsolva, majd próbálja újra.</translation>
@@ -2920,7 +2918,6 @@
 <translation id="3778740492972734840">Fejlesz&amp;tői eszközök</translation>
 <translation id="3778868487658107119">Tegyen fel neki kérdéseket. Adjon neki utasításokat. Az Ön személyes Google-ja mindig segítségre kész.</translation>
 <translation id="3781742599892759500">A Linux mikrofon-hozzáférése</translation>
-<translation id="378312418865624974">Egyedi azonosító olvasása ennél a számítógépnél</translation>
 <translation id="3784472333786002075">A cookie-k webhelyek által létrehozott fájlok. Kétféle cookie-t különböztetünk meg: A belső cookie-kat a meglátogatott webhelyek hozzák létre. Az adott webhely a címsávban látható. A harmadik féltől származó cookie-kat más webhelyek hozzák létre. Ezek a webhelyek birtokolják a meglátogatott webhelyeken látható tartalom bizonyos részét (például hirdetéseket vagy képeket).</translation>
 <translation id="3785308913036335955">Alkalmazások gyorsparancs megjelenítése</translation>
 <translation id="3785727820640310185">A webhelyhez mentett jelszavak</translation>
@@ -3572,7 +3569,6 @@
 <translation id="4415748029120993980">SECG elliptikus görbe secp384r1 (vagyis NIST P-384)</translation>
 <translation id="4416450511678320850">Nem állnak rendelkezésre alkalmazások ehhez a tartalomhoz</translation>
 <translation id="4416582610654027550">Érvényes URL-t írjon be</translation>
-<translation id="4417162649853416189">Húzás képek fölé a(z) <ph name="VISUAL_SEARCH_PROVIDER" /> segítségével való kereséshez</translation>
 <translation id="4419409365248380979">Mindig engedélyezi, hogy a(z) <ph name="HOST" /> cookie-kat állítson be</translation>
 <translation id="4421932782753506458">Bolyhos</translation>
 <translation id="4423376891418188461">A beállítások visszaállítása</translation>
@@ -3711,7 +3707,6 @@
 <translation id="4550926046134589611">Egyes támogatott linkek továbbra is a(z) <ph name="APP_NAME" /> alkalmazásban nyílnak meg.</translation>
 <translation id="4551763574344810652">Nyomja meg a <ph name="MODIFIER_KEY_DESCRIPTION" /> billentyűparancsot a visszavonáshoz</translation>
 <translation id="4553526521109675518">Az eszköz nyelvének módosításához újra kell indítani a Chromebookot. <ph name="BEGIN_LINK_LEARN_MORE" />További információ<ph name="END_LINK_LEARN_MORE" />.</translation>
-<translation id="4554491709904933912">Húzás képek fölé a(z) <ph name="VISUAL_SEARCH_PROVIDER" /> segítségével való kereséshez</translation>
 <translation id="4554591392113183336">A külső bővítmény a meglévő bővítmény verziószintjén vagy az alatt van.</translation>
 <translation id="4555769855065597957">Árnyék</translation>
 <translation id="4555863373929230635">A jelszavak Google-fiókba való mentéséhez jelentkezzen be, és kapcsolja be a szinkronizálást.</translation>
@@ -4563,7 +4558,6 @@
 <translation id="5427459444770871191">Forgatás &amp;jobbra</translation>
 <translation id="542750953150239272">Ha továbblép, azzal elfogadja, hogy az eszköz automatikusan letölthet és telepíthet frissítéseket és alkalmazásokat a Google-tól, az Ön szolgáltatójától és az eszköz gyártójától, akár mobiladat-kapcsolaton keresztül is. Egyes alkalmazások alkalmazáson belüli vásárlásokat kínálhatnak.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Frissítés érhető el)</translation>
-<translation id="5429373054983029602">Keresés a képernyőn a következővel: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Telepíteni kell a Megbízható platform modul (Trusted Platform Module) firmware-ének frissítését. Tekintse meg a következő webhelyet: <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Azonnali internetmegosztás</translation>
 <translation id="5431318178759467895">Színes</translation>
@@ -4636,7 +4630,6 @@
 <translation id="5494920125229734069">Összes kiválasztása</translation>
 <translation id="5495466433285976480">Ezzel a következő újraindítás után eltávolítja az összes helyi felhasználót, valamint minden fájlt, adatot és egyéb beállítást. Az összes felhasználónak újra be kell jelentkeznie.</translation>
 <translation id="5495597166260341369">A kijelző bekapcsolva marad</translation>
-<translation id="549580971452855947">Húzás a(z) <ph name="VISUAL_SEARCH_PROVIDER" /> segítségével való kereséshez</translation>
 <translation id="5496587651328244253">Rendezés</translation>
 <translation id="5496730470963166430">Nem jeleníthetnek meg előugró ablakokat, és nem használhatnak átirányításokat</translation>
 <translation id="5497251278400702716">Ez a fájl</translation>
@@ -5748,7 +5741,6 @@
 # további jelszavához fértek hozzá illetéktelenül. A Google Jelszókezelő a jelszó haladéktalan ellenőrzését javasolja.}other{Sikerült módosítani a jelszót, amelyhez illetéktelenül hozzáfértek.
 
 # további jelszavához fértek hozzá illetéktelenül. A Google Jelszókezelő a jelszavak haladéktalan ellenőrzését javasolja.}}</translation>
-<translation id="6595792813574514527">Húzás a(z) <ph name="VISUAL_SEARCH_PROVIDER" /> segítségével való kereséshez</translation>
 <translation id="6596325263575161958">Titkosítási lehetőségek</translation>
 <translation id="6596816719288285829">IP-cím</translation>
 <translation id="6597017209724497268">Minták</translation>
@@ -7368,7 +7360,6 @@
 <translation id="8184318863960255706">További információ</translation>
 <translation id="8184472985242519288">Szabványos</translation>
 <translation id="8186609076106987817">A szerver nem találta a fájlt.</translation>
-<translation id="8186704951085064172">Keresés az oldal adott részén a következő segítségével: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Ellenőrizze eszköze beállításait, és kapcsolja be a folytatáshoz</translation>
 <translation id="8188742492803591566">A képernyőre való átküldés megkezdéséhez adja meg a Chromecast eszközön vagy a tévén megjelenített hozzáférési kódot.</translation>
 <translation id="8189306097519446565">Iskolai fiókok</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb
index 1d7c756..d107c9e 100644
--- a/chrome/app/resources/generated_resources_hy.xtb
+++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -180,6 +180,7 @@
 <translation id="1166583374608765787">Դիտեք անվան փոփոխությունները</translation>
 <translation id="1166596238782048887">«<ph name="TAB_TITLE" />» ներդիրը պատկանում է «<ph name="DESK_TITLE" />» աշխատասեղանին</translation>
 <translation id="1168020859489941584">Բացվում է <ph name="TIME_REMAINING" />-ից…</translation>
+<translation id="1169266963600477608">Խաղի կարգավորումներ</translation>
 <translation id="1169435433292653700">«<ph name="FILE_NAME" />» ֆայլը պարունակում է խիստ անձնական կամ վտանգավոր տվյալներ։ Հաղորդագրություն ձեր ադմինիստրատորից․ «<ph name="CUSTOM_MESSAGE" />»։</translation>
 <translation id="1171135284592304528">Ընդգծել ստեղնաշարի միջոցով ընտրված օբյեկտները, երբ դրանք փոխվում են</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> կայքն ուզում է միանալ HID սարքին</translation>
@@ -1412,7 +1413,6 @@
     Ցանկության դեպքում Voice Match գործառույթը կարող եք անջատել Օգնականի կարգավորումներում։ Voice Match-ի կարգավորման ժամանակ երեխայի կողմից արված ձայնագրությունները լսելու կամ ջնջելու համար նրա հաշվից անցեք <ph name="VOICE_MATCH_SETTINGS_URL" /> էջ։
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Որոնել էջի հատվածում <ph name="VISUAL_SEARCH_PROVIDER" /> հավելվածի միջոցով</translation>
 <translation id="2309620859903500144">Այս կայքին արգելված է օգտագործել շարժման և լույսի ձեր տվիչները:</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Էջի URL</translation>
@@ -2035,7 +2035,6 @@
 <translation id="289695669188700754">Բանալու ID` <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Այս հատուկ կարգավորումը կհեռացվի, երբ դուք փակեք ձեր բոլոր ինկոգնիտո պատուհանները</translation>
 <translation id="2897878306272793870">Իսկապե՞ս ուզում եք բացել <ph name="TAB_COUNT" /> ներդիր:</translation>
-<translation id="2900477968385519153">Որոնել էկրանին <ph name="VISUAL_SEARCH_PROVIDER" /> հավելվածի միջոցով</translation>
 <translation id="290105521672621980">Ֆայլն օգտագործում է չաջակցվող գործառույթներ</translation>
 <translation id="2901348420151309559">Նոր լուսանկարներ և հավելվածներ</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" />-ին չհաջողվեց կապվել այս տպիչի հետ: Համոզվեք, որ տպիչը միացված է և նորից փորձեք:</translation>
@@ -2907,7 +2906,6 @@
 <translation id="3778740492972734840">&amp;Մշակողի գործիքներ</translation>
 <translation id="3778868487658107119">Տվեք հարցեր և առաջադրանքներ: Ձեր անձնական Google Օգնականը միշտ պատրաստ է օգնել ձեզ:</translation>
 <translation id="3781742599892759500">Խոսափողի օգտագործման թույլտվություն Լինուքսում</translation>
-<translation id="378312418865624974">Դիտել այս համակարգչի եզակի նույնացուցիչը</translation>
 <translation id="3784472333786002075">Քուքիները ֆայլեր են, որոնք ստեղծվում են կայքերի կողմից։ Քուքիների երկու տեսակ կա. առաջին կողմի քուքիները ստեղծվում են ձեր այցելած կայքի կողմից։ Կայքը ցուցադրվում է հասցեագոտում։ Երրորդ կողմի քուքիները ստեղծվում են այլ կայքերի կողմից։ Այս կայքերն ունեն որոշակի բովանդակություն, օր․՝ գովազդ կամ պատկերներ, որոնք դուք տեսնում եք ձեր այցելած կայքում։</translation>
 <translation id="3785308913036335955">Ցուցադրել հավելվածների դյուրանցումը</translation>
 <translation id="3785727820640310185">Այս կայքի պահված գաղտնաբառերը</translation>
@@ -3366,6 +3364,7 @@
 <translation id="4227605727325220318">Ավելացնել նոր Android հեռախոս</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Այս ընդլայնումը չի թույլատրվում օգտագործել}one{Այս ընդլայնումը չի թույլատրվում օգտագործել}other{Այս ընդլայնումները չի թույլատրվում օգտագործել}}</translation>
 <translation id="4231095370974836764"><ph name="DEVICE_TYPE" /> սարքում տեղադրեք հավելվածներ ու խաղեր Google Play-ից։ <ph name="LINK_BEGIN" />Իմանալ ավելին<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Փակել խաղի կարգավորումները</translation>
 <translation id="4232375817808480934">Kerberos-ի կարգավորում</translation>
 <translation id="4235965441080806197">Չեղարկել մուտքը</translation>
 <translation id="4236163961381003811">Բացահայտեք այլ ընդլայնումներ</translation>
@@ -3560,7 +3559,6 @@
 <translation id="4415748029120993980">SECG օվալաձև կոր secp384r1 (հայտնի է նաև որպես NIST P-384)</translation>
 <translation id="4416450511678320850">Հասանելի հավելվածներ չկան</translation>
 <translation id="4416582610654027550">Մուտքագրեք վավեր URL</translation>
-<translation id="4417162649853416189">Քաշել տարածքը և որոնել ըստ պատկերների <ph name="VISUAL_SEARCH_PROVIDER" /> հավելվածի միջոցով</translation>
 <translation id="4419409365248380979">Միշտ թույլատրել <ph name="HOST" /> խնամորդին կայել քուքիները</translation>
 <translation id="4421932782753506458">Փափկամազիկ</translation>
 <translation id="4423376891418188461">Վերականգնել կարգավորումները</translation>
@@ -3698,7 +3696,6 @@
 <translation id="4550926046134589611">Որոշ աջակցվող հղումներ նախկինի պես կբացվեն <ph name="APP_NAME" /> հավելվածում։</translation>
 <translation id="4551763574344810652">Հետարկելու համար սեղմեք <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4553526521109675518">Սարքի լեզուն փոխելու համար վերագործարկեք Chromebook-ը։ <ph name="BEGIN_LINK_LEARN_MORE" />Իմանալ ավելին<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Քաշել տարածքը և որոնել ըստ պատկերների <ph name="VISUAL_SEARCH_PROVIDER" /> հավելվածի միջոցով</translation>
 <translation id="4554591392113183336">Արտաքին ընդլայնումը ընթացիկի համեմատ ունի նույն կամ ավելի հին տարբերակ:</translation>
 <translation id="4555769855065597957">Ստվեր</translation>
 <translation id="4555863373929230635">Գաղտնաբառերը ձեր Google հաշվում պահելու համար մտեք հաշիվ և միացրեք համաժամացումը։</translation>
@@ -4551,7 +4548,6 @@
 <translation id="5427459444770871191">Պտտել &amp;ժամացույցի սլաքի ուղղությամբ</translation>
 <translation id="542750953150239272">Շարունակելով՝ դուք համաձայնում եք, որ այս սարքը նույնպես կարող է ավտոմատ ներբեռնել և տեղադրել Google-ի, ձեր օպերատորի և սարքի արտադրողի կողմից տրամադրվող թարմացումները և հավելվածները (նաև բջջային ինտերնետի միջոցով)։ Որոշ հավելվածներում կարող է առաջարկվել վճարովի բովանդակություն։</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (մատչելի է թարմացում)</translation>
-<translation id="5429373054983029602">Որոնել էկրանին <ph name="VISUAL_SEARCH_PROVIDER" /> հավելվածի միջոցով</translation>
 <translation id="542948651837270806">Անհրաժեշտ է տեղադրել Trusted Platform Module-ի ներկառուցված ծրագրի թարմացում։ Անցեք <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Անկթարթային մուտքի կետ</translation>
 <translation id="5431318178759467895">Գունավոր</translation>
@@ -4624,7 +4620,6 @@
 <translation id="5494920125229734069">Ընտրել բոլորը</translation>
 <translation id="5495466433285976480">Հաջորդ վերագործարկումից հետո այս գործողությունը կջնջի բոլոր տեղային օգտատերերին, ֆայլերը, տվյալները և այլ կարգավորումները: Բոլոր օգտատերերը պետք է նորից մուտք գործեն:</translation>
 <translation id="5495597166260341369">Չանջատել էկրանը</translation>
-<translation id="549580971452855947">Քաշել պատկերները՝ <ph name="VISUAL_SEARCH_PROVIDER" /> հավելվածի միջոցով որոնելու համար</translation>
 <translation id="5496587651328244253">Կազմակերպել</translation>
 <translation id="5496730470963166430">Չի թույլատրվում ցուցադրել ելնող պատուհաններ և օգտագործել վերահասցեավորումներ</translation>
 <translation id="5497251278400702716">Այս ֆայլը</translation>
@@ -5734,7 +5729,6 @@
 Դուք ունեք ևս # կոտրված գաղտնաբառ։ Google գաղտնաբառերի կառավարիչը խորհուրդ է տալիս ստուգել այս գաղտնաբառը։}other{Կոտրված գաղտնաբառը փոխվեց։
 
 Դուք ունեք ևս # կոտրված գաղտնաբառ։ Google գաղտնաբառերի կառավարիչը խորհուրդ է տալիս ստուգել այս գաղտնաբառերը։}}</translation>
-<translation id="6595792813574514527">Քաշել պատկերները՝ <ph name="VISUAL_SEARCH_PROVIDER" /> հավելվածի միջոցով որոնելու համար</translation>
 <translation id="6596325263575161958">Գաղտնագրման ընտրանքներ</translation>
 <translation id="6596816719288285829">IP հասցե</translation>
 <translation id="6597017209724497268">Նմուշներ</translation>
@@ -7352,7 +7346,6 @@
 <translation id="8184318863960255706">Լրացուցիչ տեղեկություններ</translation>
 <translation id="8184472985242519288">Միանման</translation>
 <translation id="8186609076106987817">Սերվերը չկարողացավ գտնել ֆայլը:</translation>
-<translation id="8186704951085064172">Որոնել էջի հատվածում <ph name="VISUAL_SEARCH_PROVIDER" /> հավելվածի միջոցով</translation>
 <translation id="8188389033983459049">Շարունակելու համար ստուգեք սարքի կարգավորումները և միացրեք Bluetooth-ը</translation>
 <translation id="8188742492803591566">Էկրանի հեռարձակումը սկսելու համար մուտքագրեք Chromecast-ում կամ հեռուստացույցի էկրանին ցուցադրված մուտքի կոդը։</translation>
 <translation id="8189306097519446565">Ուսումնական հաշիվներ</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index be31a65..9cb6dd1 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -1425,7 +1425,6 @@
     Jika nantinya Anda memutuskan bahwa Voice Match tidak cocok untuk anak Anda, cukup nonaktifkan fitur tersebut di Setelan Asisten. Untuk melihat atau menghapus klip audio yang direkam oleh anak Anda selama penyiapan Voice Match, buka <ph name="VOICE_MATCH_SETTINGS_URL" /> dari akunnya.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Telusuri bagian halaman dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Situs ini telah diblokir agar tidak dapat mengakses sensor gerakan atau sensor cahaya.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL Halaman</translation>
@@ -2049,7 +2048,6 @@
 <translation id="289695669188700754">ID Kunci: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Setelan khusus ini akan dihapus saat Anda menutup semua jendela Samaran</translation>
 <translation id="2897878306272793870">Anda yakin ingin membuka <ph name="TAB_COUNT" /> tab?</translation>
-<translation id="2900477968385519153">Telusuri Layar Anda dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">File menggunakan fitur yang tidak didukung</translation>
 <translation id="2901348420151309559">Aplikasi dan foto terbaru</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> tidak dapat berkomunikasi dengan printer ini. Pastikan printer dicolokkan dan coba lagi.</translation>
@@ -2922,7 +2920,6 @@
 <translation id="3778740492972734840">Alat &amp;pengembang</translation>
 <translation id="3778868487658107119">Ajukan pertanyaan. Minta untuk melakukan berbagai hal. Ini adalah Google pribadi Anda yang selalu siap membantu.</translation>
 <translation id="3781742599892759500">Akses mikrofon Linux</translation>
-<translation id="378312418865624974">Membaca pengenal unik untuk komputer ini</translation>
 <translation id="3784472333786002075">Cookie adalah file yang dibuat oleh situs. Terdapat dua jenis cookie: Cookie pihak pertama dibuat oleh situs yang Anda kunjungi. Situs tersebut ditampilkan di kolom URL. Cookie pihak ketiga dibuat oleh situs lain. Situs ini memiliki beberapa konten, seperti iklan atau gambar, yang dilihat di situs yang Anda kunjungi.</translation>
 <translation id="3785308913036335955">Tampilkan Pintasan Aplikasi</translation>
 <translation id="3785727820640310185">Sandi yang tersimpan untuk situs ini</translation>
@@ -3575,7 +3572,6 @@
 <translation id="4415748029120993980">Kurva eliptis SECG secp384r1 (alias NIST P-384)</translation>
 <translation id="4416450511678320850">Tidak ada aplikasi yang tersedia untuk konten ini</translation>
 <translation id="4416582610654027550">Ketik URL yang valid</translation>
-<translation id="4417162649853416189">Tarik Gambar untuk Menelusuri dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Selalu izinkan <ph name="HOST" /> untuk menetapkan cookie</translation>
 <translation id="4421932782753506458">Si Manis</translation>
 <translation id="4423376891418188461">Pulihkan Setelan</translation>
@@ -3714,7 +3710,6 @@
 <translation id="4550926046134589611">Beberapa link yang didukung akan tetap dibuka di <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Tekan <ph name="MODIFIER_KEY_DESCRIPTION" /> untuk mengurungkan</translation>
 <translation id="4553526521109675518">Anda perlu memulai ulang Chromebook untuk mengubah bahasa perangkat. <ph name="BEGIN_LINK_LEARN_MORE" />Pelajari lebih lanjut<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Tarik gambar untuk menelusuri dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Versi ekstensi eksternal sama atau lebih rendah dibandingkan yang sudah ada.</translation>
 <translation id="4555769855065597957">Bayangan</translation>
 <translation id="4555863373929230635">Untuk menyimpan sandi ke Akun Google Anda, login dan aktifkan sinkronisasi.</translation>
@@ -4565,7 +4560,6 @@
 <translation id="5427459444770871191">Putar &amp;Searah Jarum Jam</translation>
 <translation id="542750953150239272">Dengan melanjutkan, Anda setuju bahwa perangkat ini juga dapat otomatis mendownload serta menginstal update dan aplikasi dari Google, operator Anda, dan produsen perangkat Anda, yang mungkin menggunakan data seluler. Sebagian aplikasi tersebut mungkin menawarkan pembelian dalam aplikasi.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Pembaruan tersedia)</translation>
-<translation id="5429373054983029602">Telusuri layar Anda dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Update untuk firmware Trusted Platform Module yang perlu diinstal. Lihat <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Tethering Instan</translation>
 <translation id="5431318178759467895">Warna</translation>
@@ -4638,7 +4632,6 @@
 <translation id="5494920125229734069">Pilih semua</translation>
 <translation id="5495466433285976480">Hal ini akan menghapus semua pengguna lokal, file, data, dan setelan lain setelah Anda memulai ulang lagi. Semua pengguna perlu masuk kembali.</translation>
 <translation id="5495597166260341369">Biarkan layar tetap menyala</translation>
-<translation id="549580971452855947">Tarik untuk menelusuri gambar dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Atur</translation>
 <translation id="5496730470963166430">Tidak diizinkan mengirimkan pop-up atau menggunakan pengalihan</translation>
 <translation id="5497251278400702716">File ini</translation>
@@ -5749,7 +5742,6 @@
 Anda memiliki # sandi lainnya yang telah dibobol. Pengelola Sandi Google merekomendasikan untuk memeriksa sandi ini sekarang.}other{Berhasil mengubah sandi yang telah dibobol.
 
 Anda memiliki # sandi lainnya yang telah dibobol. Pengelola Sandi Google merekomendasikan untuk memeriksa sandi ini sekarang.}}</translation>
-<translation id="6595792813574514527">Tarik untuk Menelusuri Gambar dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opsi enkripsi</translation>
 <translation id="6596816719288285829">Alamat IP</translation>
 <translation id="6597017209724497268">Contoh</translation>
@@ -7370,7 +7362,6 @@
 <translation id="8184318863960255706">Info selengkapnya</translation>
 <translation id="8184472985242519288">Seragam</translation>
 <translation id="8186609076106987817">Server tidak dapat menemukan file.</translation>
-<translation id="8186704951085064172">Telusuri Bagian Halaman dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Periksa setelan perangkat Anda dan aktifkan untuk melanjutkan</translation>
 <translation id="8188742492803591566">Masukkan kode akses yang ditampilkan di Chromecast atau TV untuk mulai mentransmisikan layar.</translation>
 <translation id="8189306097519446565">Akun sekolah</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb
index c631063..09bd1206 100644
--- a/chrome/app/resources/generated_resources_is.xtb
+++ b/chrome/app/resources/generated_resources_is.xtb
@@ -1426,7 +1426,6 @@
     Ef þú ákveður síðar að Voice Match sé ekki fyrir barnið skaltu einfaldlega fjarlægja raddlíkanið í stillingum Hjálparans. Til að skoða eða eyða hljóðbútum sem eru teknir upp af rödd barnsins við uppsetningu Voice Match skaltu fara á <ph name="VOICE_MATCH_SETTINGS_URL" /> á reikningi barnsins.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Leita á hluta síðunnar með <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Lokað hefur verið á aðgang þessa vefsvæðis að hreyfi- eða birtuskynjara.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Vefslóð síðu</translation>
@@ -2049,7 +2048,6 @@
 <translation id="289695669188700754">Lykilsauðkenni: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Þessi sérstilling verður fjarlægð þegar þú lokar öllum huliðsgluggum</translation>
 <translation id="2897878306272793870">Viltu örugglega opna <ph name="TAB_COUNT" /> flipa?</translation>
-<translation id="2900477968385519153">Leitaðu á skjánum með <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Skráin notast við óstudda eiginleika</translation>
 <translation id="2901348420151309559">Nýlegar myndir og forrit</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> gat ekki átt samskipti við þennan prentara. Gættu þess að prentarinn sé í sambandi og reyndu aftur.</translation>
@@ -2922,7 +2920,6 @@
 <translation id="3778740492972734840">Forritunartól</translation>
 <translation id="3778868487658107119">Spyrðu hann spurninga. Biddu hann um að gera eitthvað fyrir þig. Þetta er þitt eigið Google, alltaf reiðubúið til aðstoðar.</translation>
 <translation id="3781742599892759500">Aðgangur að hljóðnema í Linux</translation>
-<translation id="378312418865624974">Lesa einkvæmt auðkenni fyrir þessa tölvu</translation>
 <translation id="3784472333786002075">Fótspor eru skrár sem vefsvæði búa til. Það eru tvær tegundir af fótsporum: Fótspor frá fyrsta aðila eru búin til af vefsvæðinu sem þú heimsækir. Vefsvæðið kemur fram á veffangastikunni. Fótspor frá þriðja aðila eru búin til af öðrum vefsvæðum. Þessi vefsvæði eiga eitthvað af efninu, eins og auglýsingar eða myndir, sem þú sérð á vefsvæðinu sem þú heimsækir.</translation>
 <translation id="3785308913036335955">Sýna flýtileiðir í forrit</translation>
 <translation id="3785727820640310185">Vistuð aðgangsorð fyrir þetta vefsvæði</translation>
@@ -3575,7 +3572,6 @@
 <translation id="4415748029120993980">SECG sporger ferill secp384r1 (e.þ.s. NIST P-384)</translation>
 <translation id="4416450511678320850">Engin forrit í boði fyrir þetta efni</translation>
 <translation id="4416582610654027550">Sláðu inn gilda vefslóð</translation>
-<translation id="4417162649853416189">Dragðu yfir myndir til að leita með <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Leyfa <ph name="HOST" /> alltaf að vista fótspor</translation>
 <translation id="4421932782753506458">Flippkisi</translation>
 <translation id="4423376891418188461">Endurheimta stillingar</translation>
@@ -3714,7 +3710,6 @@
 <translation id="4550926046134589611">Sumir studdir tenglar munu áfram opnast í <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Ýttu á <ph name="MODIFIER_KEY_DESCRIPTION" /> til að afturkalla</translation>
 <translation id="4553526521109675518">Endurræsa þarf Chromebook til að breyta tungumáli tækisins. <ph name="BEGIN_LINK_LEARN_MORE" />Frekari upplýsingar<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Dragðu yfir myndir til að leita með <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Útgáfa ytri viðbótar er hin sama og eða eldri en útgáfa fyrirliggjandi viðbótar.</translation>
 <translation id="4555769855065597957">Móri</translation>
 <translation id="4555863373929230635">Skráðu þig inn og kveiktu á samstillingu til að vista aðgangsorð á Google reikningnum þínum.</translation>
@@ -4565,7 +4560,6 @@
 <translation id="5427459444770871191">Snúa réttsælis</translation>
 <translation id="542750953150239272">Með því að halda áfram samþykkirðu að þetta tæki megi einnig hlaða sjálfkrafa niður og setja upp uppfærslur og forrit frá Google, símafyrirtækinu þínu og framleiðanda tækisins, hugsanlega með því að nota farsímagögn. Einhver þessara forrita gætu boðið upp á innkaup í forriti.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (uppfærsla er í boði)</translation>
-<translation id="5429373054983029602">Leitaðu á skjánum með <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Setja þarf upp uppfærslu fyrir TPM-fastbúnaðinn (Trusted Platform Module). Sjá <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Skynditjóðrun</translation>
 <translation id="5431318178759467895">Í lit</translation>
@@ -4638,7 +4632,6 @@
 <translation id="5494920125229734069">Velja allt</translation>
 <translation id="5495466433285976480">Þetta mun fjarlægja alla notendur, skrár, gögn og aðrar stillingar tækisins næst þegar þú endurræsir. Allir notendur þurfa að skrá sig inn aftur.</translation>
 <translation id="5495597166260341369">Hafa kveikt á skjá</translation>
-<translation id="549580971452855947">Dragðu til að leita í myndum með <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Skipuleggja</translation>
 <translation id="5496730470963166430">Mega ekki senda sprettiglugga eða nota framsendingu</translation>
 <translation id="5497251278400702716">Þessi skrá</translation>
@@ -5751,7 +5744,6 @@
 # aðgangsorð í viðbót er í hættu. Aðgangsorðastjórnun Google mælir með að þessi aðgangsorð verði athuguð núna.}other{Aðgangsorði í hættu var breytt.
 
 # aðgangsorð í viðbót eru í hættu. Aðgangsorðastjórnun Google mælir með að þessi aðgangsorð verði athuguð núna.}}</translation>
-<translation id="6595792813574514527">Dragðu til að leita í myndum með <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Dulkóðunarvalkostir</translation>
 <translation id="6596816719288285829">IP-tala</translation>
 <translation id="6597017209724497268">Dæmi</translation>
@@ -7371,7 +7363,6 @@
 <translation id="8184318863960255706">Frekari upplýsingar</translation>
 <translation id="8184472985242519288">Jafnt</translation>
 <translation id="8186609076106987817">Þjónninn fann ekki skrána.</translation>
-<translation id="8186704951085064172">Leita á hluta síðunnar með <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Athugaðu tækjastillingar þínar og kveiktu á Bluetooth til að halda áfram</translation>
 <translation id="8188742492803591566">Sláðu inn aðgangskóðann sem birtist í Chromecast eða sjónvarpinu til að senda út af skjánum.</translation>
 <translation id="8189306097519446565">Skólareikningar</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index 9038a03..6869bc0 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -1410,7 +1410,6 @@
     Se in un secondo momento decidi che la funzionalità Voice Match non è adatta alle esigenze di tuo figlio, puoi disattivarla dalle impostazioni del suo assistente. Per visualizzare o eliminare i clip audio registrati da tuo figlio durante la configurazione di Voice Match, visita la pagina <ph name="VOICE_MATCH_SETTINGS_URL" /> dal suo account.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Esegui ricerche in una parte della pagina con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">A questo sito è stato impedito l'accesso ai sensori di movimento o della luce.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL della pagina</translation>
@@ -2034,7 +2033,6 @@
 <translation id="289695669188700754">ID chiave: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Questa impostazione personalizzata verrà rimossa quando chiuderai tutte le finestre di navigazione in incognito</translation>
 <translation id="2897878306272793870">Aprire <ph name="TAB_COUNT" /> schede?</translation>
-<translation id="2900477968385519153">Esegui ricerche sullo schermo con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Il file utilizza funzioni non supportate</translation>
 <translation id="2901348420151309559">App e foto recenti</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> non riesce a comunicare con questa stampante. Assicurati che la stampante sia collegata e riprova.</translation>
@@ -2907,7 +2905,6 @@
 <translation id="3778740492972734840">&amp;Strumenti per sviluppatori</translation>
 <translation id="3778868487658107119">Chiedigli tutto quello che vuoi e fatti aiutare nelle tue attività. Google è personalizzato per te ed è sempre al tuo fianco.</translation>
 <translation id="3781742599892759500">Accesso al microfono su Linux</translation>
-<translation id="378312418865624974">Leggere un identificatore univoco di questo computer</translation>
 <translation id="3784472333786002075">I cookie sono file creati dai siti web. Esistono due tipi di cookie: i cookie originali, che vengono creati dal sito visitato, visualizzato nella barra degli indirizzi, e i cookie di terze parti, che vengono creati da altri siti. Questi ultimi sono proprietari di alcuni dei contenuti, ad esempio annunci o immagini, che vengono visualizzati sul sito web che visiti.</translation>
 <translation id="3785308913036335955">Mostra scorciatoia app</translation>
 <translation id="3785727820640310185">Password salvate per questo sito</translation>
@@ -3560,7 +3557,6 @@
 <translation id="4415748029120993980">Curva ellittica SECG secp384r1 (anche nota come NIST P-384)</translation>
 <translation id="4416450511678320850">Nessuna app disponibile per questi contenuti</translation>
 <translation id="4416582610654027550">Digita un URL valido</translation>
-<translation id="4417162649853416189">Trascina il puntatore del mouse sulle immagini per eseguire ricerche con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Consenti sempre a <ph name="HOST" /> di impostare cookie</translation>
 <translation id="4421932782753506458">Micio</translation>
 <translation id="4423376891418188461">Ripristina impostazioni</translation>
@@ -3698,7 +3694,6 @@
 <translation id="4550926046134589611">Alcuni link supportati saranno comunque aperti nell'app <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Premi <ph name="MODIFIER_KEY_DESCRIPTION" /> per annullare</translation>
 <translation id="4553526521109675518">Per cambiare la lingua del dispositivo, devi riavviare il Chromebook. <ph name="BEGIN_LINK_LEARN_MORE" />Ulteriori informazioni<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Trascina il puntatore del mouse sulle immagini per eseguire ricerche con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">La versione dell'estensione esterna è pari o precedente a quella dell'estensione esistente.</translation>
 <translation id="4555769855065597957">Ombra</translation>
 <translation id="4555863373929230635">Per salvare le password nel tuo Account Google, accedi e attiva la sincronizzazione.</translation>
@@ -4549,7 +4544,6 @@
 <translation id="5427459444770871191">Ruota in senso o&amp;rario</translation>
 <translation id="542750953150239272">Se continui, accetti che questo dispositivo possa anche scaricare e installare automaticamente aggiornamenti e app da Google, dal tuo operatore e dal produttore del tuo dispositivo, utilizzando eventualmente la rete dati. Alcune di queste app potrebbero offrire acquisti in-app.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (aggiornamento disponibile)</translation>
-<translation id="5429373054983029602">Esegui ricerche sullo schermo con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">È necessario installare un aggiornamento del firmware Trusted Platform Module. Visita il sito <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Tethering istantaneo</translation>
 <translation id="5431318178759467895">A colori</translation>
@@ -4622,7 +4616,6 @@
 <translation id="5494920125229734069">Seleziona tutto</translation>
 <translation id="5495466433285976480">Questa operazione rimuoverà tutti gli utenti, i file e i dati locali nonché altre impostazioni al successivo riavvio. Tutti gli utenti dovranno eseguire di nuovo l'accesso.</translation>
 <translation id="5495597166260341369">Mantieni attivo lo schermo</translation>
-<translation id="549580971452855947">Trascina per cercare immagini con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organizza</translation>
 <translation id="5496730470963166430">Non possono inviare popup o utilizzare reindirizzamenti</translation>
 <translation id="5497251278400702716">Questo file</translation>
@@ -5730,7 +5723,6 @@
 Hai # altra password compromessa. Gestore delle password di Google consiglia di controllarla subito.}other{Password compromessa cambiata.
 
 Hai altre # password compromesse. Gestore delle password di Google consiglia di controllarle subito.}}</translation>
-<translation id="6595792813574514527">Trascina per cercare immagini con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opzioni di crittografia</translation>
 <translation id="6596816719288285829">Indirizzo IP</translation>
 <translation id="6597017209724497268">Esempi</translation>
@@ -7351,7 +7343,6 @@
 <translation id="8184318863960255706">Ulteriori informazioni</translation>
 <translation id="8184472985242519288">Uniforme</translation>
 <translation id="8186609076106987817">Impossibile trovare il file sul server.</translation>
-<translation id="8186704951085064172">Esegui ricerche in una parte della pagina con <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Controlla le impostazioni sul dispositivo e attivalo per continuare</translation>
 <translation id="8188742492803591566">Inserisci il codice di accesso mostrato su Chromecast o sulla TV per iniziare a trasmettere il tuo schermo.</translation>
 <translation id="8189306097519446565">Account della scuola</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index 37034708..c5bea62 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -1424,7 +1424,6 @@
     החלטת שהתכונה Voice Match לא מתאימה לילד או לילדה? בכל שלב ניתן להסיר את התכונה בהגדרות של Assistant שלהם. יש לך אפשרות לראות או למחוק את קטעי הקול שהילד או הילדה הקליטו בהגדרה של Voice Match בכתובת <ph name="VOICE_MATCH_SETTINGS_URL" />, מהחשבון של הילד או הילדה.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">חיפוש בחלק מהדף באמצעות <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">נחסמה הגישה של האתר הזה אל חיישני התנועה או התאורה.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">‏כתובת ה-URL של הדף</translation>
@@ -2049,7 +2048,6 @@
 <translation id="289695669188700754">מזהה מפתח: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">לאחר הסגירה של כל החלונות האנונימיים, ההגדרה שהותאמה אישית תוסר</translation>
 <translation id="2897878306272793870">ברצונך באמת לפתוח <ph name="TAB_COUNT" /> כרטיסיות?</translation>
-<translation id="2900477968385519153">מחפשים במסך באמצעות <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">הקובץ דורש תכונות שאינן נתמכות</translation>
 <translation id="2901348420151309559">תמונות ואפליקציות אחרונות</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> לא הצליח לתקשר עם המדפסת הזו. יש לוודא שהמדפסת מחוברת ולנסות שוב.</translation>
@@ -2922,7 +2920,6 @@
 <translation id="3778740492972734840">&amp;כלים עבור מפתחים</translation>
 <translation id="3778868487658107119">‏אפשר לשאול אותו שאלות ולומר לו לבצע פעולות. העוזר הפרטי של Google מוכן תמיד לסייע לך.</translation>
 <translation id="3781742599892759500">‏גישה של Linux למיקרופון</translation>
-<translation id="378312418865624974">קריאה של מזהה ייחודי עבור מחשב זה</translation>
 <translation id="3784472333786002075">‏קובצי cookie הם קבצים שנוצרים על ידי אתרים. יש שני סוגים של קובצי cookie: קובצי cookie של צד ראשון נוצרים על ידי האתר שנכנסת אליו. האתר מופיע בסרגל הכתובות. קובצי cookie של צד שלישי נוצרים על-ידי אתרים אחרים. האתרים האלה הם הבעלים של חלק מהתוכן בדף האינטרנט שנכנסת אליו, כמו מודעות או תמונות.</translation>
 <translation id="3785308913036335955">הצגת קיצור דרך אל יישומים</translation>
 <translation id="3785727820640310185">סיסמאות שמורות לאתר הזה</translation>
@@ -3575,7 +3572,6 @@
 <translation id="4415748029120993980">‏עקומה אליפטית SECG מסוג secp384r1 (מוכרת גם בשם NIST P-384)</translation>
 <translation id="4416450511678320850">אין אפליקציות זמינות לתוכן הזה</translation>
 <translation id="4416582610654027550">יש להקליד כתובת אתר חוקית</translation>
-<translation id="4417162649853416189">גוררים את סמן העכבר מעל תמונות כדי לחפש באמצעות <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">‏לאפשר תמיד ל-<ph name="HOST" /> להגדיר קובצי Cookie</translation>
 <translation id="4421932782753506458">לקיק</translation>
 <translation id="4423376891418188461">שחזור הגדרות</translation>
@@ -3714,7 +3710,6 @@
 <translation id="4550926046134589611">חלק מהקישורים הנתמכים ימשיכו להיפתח ב-<ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">אפשר לבטל את הפעולה בהקשה על <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4553526521109675518">‏כדי לשנות את שפת המכשיר, עליך להפעיל את Chromebook מחדש. <ph name="BEGIN_LINK_LEARN_MORE" />מידע נוסף<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">גוררים את סמן העכבר מעל תמונות כדי לחפש באמצעות <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">התוסף החיצוני הוא מגרסה זהה או קודמת לזו של התוסף הקיים.</translation>
 <translation id="4555769855065597957">צל</translation>
 <translation id="4555863373929230635">‏כדי לשמור סיסמאות בחשבון Google, יש להיכנס ולהפעיל את הסנכרון.</translation>
@@ -4565,7 +4560,6 @@
 <translation id="5427459444770871191">סיבוב &amp;בכיוון השעון</translation>
 <translation id="542750953150239272">‏המשך מבטא את הסכמתך לכך שהמכשיר יוכל להוריד ולהתקין עדכונים ואפליקציות באופן אוטומטי מ-Google, מהספק ומיצרן המכשיר שלך, גם אם ייעשה לשם כך שימוש בחבילת הגלישה. ייתכן שיחולו חיובים על השימוש בחבילת הגלישה. חלק מהאפליקציות האלו עשויות להציע רכישות מהאפליקציה.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (עדכון זמין)</translation>
-<translation id="5429373054983029602">מחפשים במסך באמצעות <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">‏צריך להתקין עדכון לקושחה של Trusted Platform Module. יש לעיין בכתובת <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">שיתוף אינטרנט מיידי בין ניידים</translation>
 <translation id="5431318178759467895">צבע</translation>
@@ -4638,7 +4632,6 @@
 <translation id="5494920125229734069">בחירת הכול</translation>
 <translation id="5495466433285976480">פעולה זו תסיר את כל המשתמשים, הקבצים והנתונים המקומיים והגדרות מקומיות אחרות לאחר ביצוע של הפעלה מחדש בפעם הבאה. כל המשתמשים יצטרכו להיכנס שוב.</translation>
 <translation id="5495597166260341369">אין לכבות את הצג</translation>
-<translation id="549580971452855947">גוררים כדי לחפש תמונות באמצעות <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">ארגון</translation>
 <translation id="5496730470963166430">לא מורשים להציג חלונות קופצים או להשתמש בהפניות אוטומטיות</translation>
 <translation id="5497251278400702716">הקובץ הזה</translation>
@@ -5753,7 +5746,6 @@
 נותרו עוד # סיסמאות שנחשפו. לפי מנהל הסיסמאות של Google, מומלץ לשנות את הסיסמאות האלו עכשיו.}other{‏הסיסמה שנחשפה הוחלפה בהצלחה.
 
 נותרו עוד # סיסמאות שנחשפו. לפי מנהל הסיסמאות של Google, מומלץ לשנות את הסיסמאות האלו עכשיו.}}</translation>
-<translation id="6595792813574514527">גוררים כדי לחפש תמונות באמצעות <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">אפשרויות הצפנה</translation>
 <translation id="6596816719288285829">‏כתובת IP</translation>
 <translation id="6597017209724497268">דגימות</translation>
@@ -7375,7 +7367,6 @@
 <translation id="8184318863960255706">מידע נוסף</translation>
 <translation id="8184472985242519288">אחיד</translation>
 <translation id="8186609076106987817">השרת לא הצליח למצוא את הקובץ.</translation>
-<translation id="8186704951085064172">חיפוש בחלק מהדף באמצעות <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">יש לבדוק את הגדרות המכשיר ולהפעיל אותו כדי להמשיך</translation>
 <translation id="8188742492803591566">‏צריך להזין את קוד הגישה שמופיע ב-Chromecast או בטלוויזיה כדי להתחיל בהעברה של המסך.</translation>
 <translation id="8189306097519446565">חשבונות בית ספריים</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index 747b9c6f..5fd0ab5f 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -1405,7 +1405,6 @@
     Voice Match はお子様には必要ないと判断された場合は、お子様の [アシスタントの設定] で削除してください。Voice Match のセットアップ中にお子様が録音した音声クリップを確認または削除するには、お子様のアカウントから <ph name="VOICE_MATCH_SETTINGS_URL" /> にアクセスしてください。
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> でページの一部を検索</translation>
 <translation id="2309620859903500144">このサイトではモーション センサーまたは光センサーへのアクセスがブロックされています。</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">ページの URL</translation>
@@ -2028,7 +2027,6 @@
 <translation id="289695669188700754">キー ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">このカスタム設定はシークレット ウィンドウをすべて閉じると削除されます</translation>
 <translation id="2897878306272793870"><ph name="TAB_COUNT" /> 個のタブが開きます。本当によろしいですか?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> で画面を検索</translation>
 <translation id="290105521672621980">サポートされていない機能がファイルで使用されています</translation>
 <translation id="2901348420151309559">最近の写真とアプリ</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> はこのプリンタと通信できませんでした。プリンタが接続されていることを確認して、もう一度お試しください。</translation>
@@ -2900,7 +2898,6 @@
 <translation id="3778740492972734840">デベロッパー ツール(&amp;D)</translation>
 <translation id="3778868487658107119">あなただけの Google が、知りたいこと、やりたいことをサポートします。なんでも話してみてください。</translation>
 <translation id="3781742599892759500">Linux のマイクへのアクセス</translation>
-<translation id="378312418865624974">このパソコンの一意の識別子の読み取り</translation>
 <translation id="3784472333786002075">Cookie はウェブサイトによって作成されるファイルです。Cookie には 2 種類あります。1 つ目の「ファーストパーティの Cookie」は、現在アクセスしているサイト、つまりアドレスバーに表示されているサイトによって作成されます。2 つ目の「サードパーティの Cookie」は、他のサイト、つまりアクセス中のウェブサイトに表示されているコンテンツの一部(広告、画像など)を所有しているサイトによって作成されます。</translation>
 <translation id="3785308913036335955">アプリのショートカットを表示</translation>
 <translation id="3785727820640310185">このサイト用に保存されているパスワード</translation>
@@ -3549,7 +3546,6 @@
 <translation id="4415748029120993980">SECG 楕円曲線 secp384r1(別名 NIST P-384)</translation>
 <translation id="4416450511678320850">このコンテンツで使用できるアプリはありません</translation>
 <translation id="4416582610654027550">有効な URL を入力してください</translation>
-<translation id="4417162649853416189">画像上をドラッグして <ph name="VISUAL_SEARCH_PROVIDER" /> で検索</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> による Cookie 設定を常に許可する</translation>
 <translation id="4421932782753506458">フワフワ</translation>
 <translation id="4423376891418188461">設定を元に戻す</translation>
@@ -3620,6 +3616,7 @@
 <translation id="449232563137139956">多くのサイトは、オンライン ショップやニュース記事の写真や挿絵として使用するために画像を表示します。</translation>
 <translation id="4492698018379445570">ショッピング カートに追加したアイテムを確認して、ご購入手続きに進むことができます</translation>
 <translation id="4493468155686877504">推奨(<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180"><ph name="SITE" /> でこの拡張機能を許可しますか?</translation>
 <translation id="4495419450179050807">このページに表示しない</translation>
 <translation id="4497145443434063861">PC と Chromecast が別の Wi-Fi ネットワークに接続している(例: 2.4 GHz と 5 GHz)</translation>
 <translation id="4500114933761911433"><ph name="PLUGIN_NAME" /> で問題が発生しました</translation>
@@ -3687,7 +3684,6 @@
 <translation id="4550926046134589611">サポートされているリンクの一部は、引き続き <ph name="APP_NAME" /> で開かれます。</translation>
 <translation id="4551763574344810652">元に戻すには <ph name="MODIFIER_KEY_DESCRIPTION" /> を押します</translation>
 <translation id="4553526521109675518">デバイスの言語を変更するには Chromebook を再起動する必要があります。<ph name="BEGIN_LINK_LEARN_MORE" />詳細<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">画像上をドラッグして <ph name="VISUAL_SEARCH_PROVIDER" /> で検索</translation>
 <translation id="4554591392113183336">外部の拡張機能のバージョンが既存のバージョン以下です。</translation>
 <translation id="4555769855065597957">シャドウ</translation>
 <translation id="4555863373929230635">パスワードを Google アカウントに保存するには、ログインして同期を有効にします。</translation>
@@ -4535,7 +4531,6 @@
 <translation id="5427459444770871191">時計回りに回転(&amp;C)</translation>
 <translation id="542750953150239272">続行すると、Google、ご利用の携帯通信会社、デバイスの製造元からのアップデートやアプリもデバイスで自動的にダウンロードおよびインストールされる場合があることについて、同意したものと見なされます(ダウンロードの際にはモバイルデータ通信が使用される可能性もあります)。こうしたアプリの一部ではアプリ内購入が提案される場合もあります。</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" />(アップデート利用可)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> で画面を検索</translation>
 <translation id="542948651837270806">Trusted Platform Module ファームウェアのアップデートをインストールする必要があります。<ph name="TPM_FIRMWARE_UPDATE_LINK" /> をご覧ください。</translation>
 <translation id="5430931332414098647">インスタント テザリング</translation>
 <translation id="5431318178759467895">カラー</translation>
@@ -4608,7 +4603,6 @@
 <translation id="5494920125229734069">すべて選択する</translation>
 <translation id="5495466433285976480">すべてのローカル ユーザー、ファイル、データ、およびその他の設定が次回の再起動後に削除されます。すべてのユーザーは、もう一度ログインする必要があります。</translation>
 <translation id="5495597166260341369">画面をオンのままにする</translation>
-<translation id="549580971452855947">ドラッグして <ph name="VISUAL_SEARCH_PROVIDER" /> で画像を検索</translation>
 <translation id="5496587651328244253">管理</translation>
 <translation id="5496730470963166430">ポップアップの送信やリダイレクトの使用を許可しないサイト</translation>
 <translation id="5497251278400702716">このファイル</translation>
@@ -5715,7 +5709,6 @@
 不正使用されたパスワードは他にも # 件あります。Google パスワード マネージャーでは、このパスワードを今すぐ確認することをおすすめします。}other{不正使用されたパスワードを変更しました。
 
 不正使用されたパスワードは他にも # 件あります。Google パスワード マネージャーでは、これらのパスワードを今すぐ確認することをおすすめします。}}</translation>
-<translation id="6595792813574514527">ドラッグして <ph name="VISUAL_SEARCH_PROVIDER" /> で画像を検索</translation>
 <translation id="6596325263575161958">暗号化オプション</translation>
 <translation id="6596816719288285829">IP アドレス</translation>
 <translation id="6597017209724497268">サンプル</translation>
@@ -7332,7 +7325,6 @@
 <translation id="8184318863960255706">詳細</translation>
 <translation id="8184472985242519288">均一</translation>
 <translation id="8186609076106987817">お探しのファイルはサーバーにはありません。</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> でページの一部を検索</translation>
 <translation id="8188389033983459049">続行するには、デバイスの設定で Bluetooth をオンにしてください</translation>
 <translation id="8188742492803591566">Chromecast またはテレビに表示されたアクセスコードを入力すると画面でキャストを開始できます。</translation>
 <translation id="8189306097519446565">学校用アカウント</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb
index fe646dec..dd62506 100644
--- a/chrome/app/resources/generated_resources_ka.xtb
+++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -180,6 +180,7 @@
 <translation id="1166583374608765787">შეამოწმეთ სახელის განახლება</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> ეკუთვნის სამუშაო დაფას „<ph name="DESK_TITLE" />“</translation>
 <translation id="1168020859489941584">დრო გახსნამდე: <ph name="TIME_REMAINING" />…</translation>
+<translation id="1169266963600477608">თამაშის მართვის საშუალებები</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> შეიცავს სენსიტიურ ან სახიფათო მონაცემებს. თქვენი ადმინისტრატორის შეტყობინება: „<ph name="CUSTOM_MESSAGE" />“</translation>
 <translation id="1171135284592304528">შეცვლისას, კლავიატურის მეშვეობით არჩეული ობიექტის გამოყოფა</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> ითხოვს HID მოწყობილობასთან დაკავშირებას</translation>
@@ -201,6 +202,7 @@
 <translation id="1188807932851744811">ჟურნალი არ არის ატვირთული.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{თქვენს კომპიუტერში შენახულ ფაილზე წვდომა}other{თქვენს კომპიუტერში შენახულ # ფაილზე წვდომა}}</translation>
 <translation id="119092896208640858">დათვალიერების მონაცემების მხოლოდ ამ მოწყობილობიდან გასასუფთავებლად და Google ანგარიშში მათ შესანარჩუნებლად <ph name="BEGIN_LINK" />გამოდით სისტემიდან<ph name="END_LINK" />.</translation>
+<translation id="1191353342579061195">აირჩიეთ თქვენი საჭიროებების შესაბამისი თემა. თემის, ფონის, ეკრანმზოგის და სხვა დაკავშირებული პარამეტრების შესაცვლელად მარჯვენა ღილაკით დააწკაპუნეთ დესკტოპზე.</translation>
 <translation id="1192706927100816598">{0,plural, =1{# წამში სისტემიდან ავტომატურად გამოხვალთ.
 <ph name="DOMAIN" /> მოითხოვს, რომ თქვენი სმარტ-ბარათი ჩასმული იყოს.}other{# წამში სისტემიდან ავტომატურად გამოხვალთ.
 <ph name="DOMAIN" /> მოითხოვს, რომ თქვენი სმარტ-ბარათი ჩასმული იყოს.}}</translation>
@@ -1292,6 +1294,7 @@
 <translation id="2220409419896228519">დაამატეთ სანიშნეები თქვენს რჩეულ Google აპებს</translation>
 <translation id="2220529011494928058">შეტყობინება პრობლემის შესახებ</translation>
 <translation id="2220572644011485463">PIN-კოდი ან პაროლი</translation>
+<translation id="222115440608612541">თემები შეიცვლება მზის ამოსვლისას და მზის ჩასვლისას</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">მედიის უსახელო წყარო</translation>
 <translation id="2224444042887712269">ამ პარამეტრის მფლობელია <ph name="OWNER_EMAIL" />.</translation>
@@ -1410,7 +1413,6 @@
     თუ მოგვიანებით გადაწყვეტთ, რომ Voice Match თქვენი ბავშვისთვის შესაფერისი არ არის, უბრალოდ, ამოშალეთ ის ასისტენტის პარამეტრებიდან. Voice Match-ის დაყენებისას ჩაწერილი აუდიოკლიპების სანახავად ან წასაშლელად თქვენი ბავშვის ანგარიშით გადადით მისამართზე <ph name="VOICE_MATCH_SETTINGS_URL" />.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">გვერდის ნაწილში ძიება <ph name="VISUAL_SEARCH_PROVIDER" />-ით</translation>
 <translation id="2309620859903500144">ამ საიტს აეკრძალა მოძრაობისა თუ განათების სენსორებზე წვდომა.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">გვერდის URL</translation>
@@ -1518,6 +1520,7 @@
 <translation id="241082044617551207">უცნობი დანამატი</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">კლავიატურის ფუნქციური კლავიშები</translation>
+<translation id="2418307627282545839">ყველაფერი კარგად განათებული და მსუბუქი იქნება</translation>
 <translation id="2419131370336513030">დაინსტალირებული აპების ნახვა</translation>
 <translation id="2419706071571366386">უსაფრთხოების მიზნით გირჩევთ, გამოხვიდეთ სისტემიდან, როცა კომპიუტერს არ იყენებთ.</translation>
 <translation id="2422125132043002186">Linux აღდგენა გაუქმდა</translation>
@@ -2034,7 +2037,6 @@
 <translation id="289695669188700754">გასაღების ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">ეს მორგებული პარამეტრი გაუქმდება, როცა ყველა ინკოგნიტო ფანჯარას დახურავთ</translation>
 <translation id="2897878306272793870">ნამდვილად გსურთ გახსნათ <ph name="TAB_COUNT" /> ჩანართი?</translation>
-<translation id="2900477968385519153">ეკრანზე ძიება <ph name="VISUAL_SEARCH_PROVIDER" />-ით</translation>
 <translation id="290105521672621980">ფაილი იყენებს მხარდაუჭერელ ფუნქციებს</translation>
 <translation id="2901348420151309559">ბოლოდროინდელი ფოტოები და აპები</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ვერ უკავშირდება ამ პრინტერს. დარწმუნდით, რომ პრინტერი შეერთებულია და ისევ ცადეთ.</translation>
@@ -2907,7 +2909,6 @@
 <translation id="3778740492972734840">შ&amp;ემმუშავებლის ხელსაწყოები</translation>
 <translation id="3778868487658107119">დაუსვით შეკითხვები, მიეცით დავალებები — თქვენი საკუთარი Google ყოველთვის მზად არის თქვენს დასახმარებლად.</translation>
 <translation id="3781742599892759500">Linux-ის წვდომა მიკროფონზე</translation>
-<translation id="378312418865624974">ამ კომპიუტერის უნიკალური იდენტიფიკატორის წაკითხვა</translation>
 <translation id="3784472333786002075">ქუქი-ჩანაწერები ვებსაიტების მიერ შექმნილი ფაილებია. არსებობს ქუქი-ჩანაწერების ორი ტიპი: პირველი მხარის ქუქი-ჩანაწერები იქმნება თქვენ მიერ მონახულებული საიტის მიერ. საიტი ნაჩვენებია მისამართთა ზოლში. მესამე მხარის ქუქი-ჩანაწერები იქმნება სხვა საიტების მიერ. აღნიშნულ საიტებს ეკუთვნის თქვენ მიერ მონახულებულ ვებსაიტზე თქვენთვის ხილული გარკვეული კონტენტი (როგორიცაა რეკლამა ან სურათები).</translation>
 <translation id="3785308913036335955">პროგრამების მალსახმობის ჩვენება</translation>
 <translation id="3785727820640310185">ამ საიტისთვის შენახული პაროლები</translation>
@@ -3366,6 +3367,7 @@
 <translation id="4227605727325220318">ახალი Android ტელეფონის დამატება</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{ამ გაფართოების გამოყენება დაუშვებელია}other{ზოგიერთი გაფართოების გამოყენება დაუშვებელია}}</translation>
 <translation id="4231095370974836764">დააინსტალირეთ აპები და თამაშები Google Play-დან თქვენს <ph name="DEVICE_TYPE" />-ზე. <ph name="LINK_BEGIN" />შეიტყვეთ მეტი<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">თამაშის მართვის საშუალებების დახურვა</translation>
 <translation id="4232375817808480934">Kerberos-ის კონფიგურაცია</translation>
 <translation id="4235965441080806197">შესვლის გაუქმება</translation>
 <translation id="4236163961381003811">მეტი გაფართოებების აღმოჩენა</translation>
@@ -3560,7 +3562,6 @@
 <translation id="4415748029120993980">SECG ეკლიპტიკური მრუდი secp384r1 (ასევე ცნობილი, როგორც NIST P-384)</translation>
 <translation id="4416450511678320850">ამ კონტენტისთვის აპების მიუწვდომელია</translation>
 <translation id="4416582610654027550">აკრიფეთ სწორი URL</translation>
-<translation id="4417162649853416189">სურათების ჩავლებით გადმოტანა <ph name="VISUAL_SEARCH_PROVIDER" />-ით ძიებისთვის</translation>
 <translation id="4419409365248380979"><ph name="HOST" />-ზე ქუქი-ფაილების ყოველთვის დაშვება</translation>
 <translation id="4421932782753506458">ბუსუსი</translation>
 <translation id="4423376891418188461">პარამეტრების აღდგენა</translation>
@@ -3631,6 +3632,7 @@
 <translation id="449232563137139956">როგორც წესი, საიტების მიერ სურათების ჩვენება ხდება საილუსტრაციო მიზნით, მაგალითად, ონლაინ-მაღაზიებსა და სტატიებში ახალი ამბების შესახებ</translation>
 <translation id="4492698018379445570">იპოვეთ თქვენ მიერ საყიდლების კალათებში დამატებული პროდუქცია და შეიძინეთ, როცა მზად იქნებით</translation>
 <translation id="4493468155686877504">რეკომენდებულია (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">გსურთ, დაუშვათ ამ გაფართოების გამოყენება <ph name="SITE" />-ზე?</translation>
 <translation id="4495419450179050807">არ აჩვენო ამ გვერდზე</translation>
 <translation id="4497145443434063861">კომპიუტერი და Chromecast სხვადასხვა Wi-Fi ქსელშია (მაგ. 2,4 გჰც და 5 გჰც)</translation>
 <translation id="4500114933761911433"><ph name="PLUGIN_NAME" /> ავარიულად გაითიშა</translation>
@@ -3698,7 +3700,6 @@
 <translation id="4550926046134589611">ზოგიერთი მხარდაჭერილი ბმული კვლავ გაიხსნება <ph name="APP_NAME" />-ში.</translation>
 <translation id="4551763574344810652">მოქმედების გასაუქმებლად დაჭერით აირჩიეთ „<ph name="MODIFIER_KEY_DESCRIPTION" />“</translation>
 <translation id="4553526521109675518">მოწყობილობის ენის შესაცვლელად საჭიროა თქვენი Chromebook-ის გადატვირთვა. <ph name="BEGIN_LINK_LEARN_MORE" />შეიტყვეთ მეტი<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">სურათების ჩავლებით გადმოტანა <ph name="VISUAL_SEARCH_PROVIDER" />-ით ძიებისთვის</translation>
 <translation id="4554591392113183336">გარე გაფართოების ვერსია იგივე ან უფრო დაბალი ვერსიაა, არსებულთან შედარებით.</translation>
 <translation id="4555769855065597957">ჩრდილი</translation>
 <translation id="4555863373929230635">პაროლების თქვენს Google ანგარიშში შესანახად შედით სისტემაში და ჩართეთ სინქრონიზაცია.</translation>
@@ -4549,7 +4550,6 @@
 <translation id="5427459444770871191">შეტრიალება &amp;საათის ისრის მიმართულებით</translation>
 <translation id="542750953150239272">გაგრძელებით თანახმა ხართ, ამ მოწყობილობამ ავტომატურად ჩამოტვირთოს და დააინსტალიროს Google-ის, თქვენი ოპერატორის და მოწყობილობის მწარმოებლის განახლებები/აპები (მათ შორის, მობილური ინტერნეტის მეშვეობით). ზოგიერთი ზემოაღნიშნული აპი შეიძლება გთავაზობდეთ კონტენტის აპიდან შეძენის შესაძლებლობას.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (ხელმისაწვდომია განახლება)</translation>
-<translation id="5429373054983029602">ეკრანზე ძიება <ph name="VISUAL_SEARCH_PROVIDER" />-ით</translation>
 <translation id="542948651837270806">საჭიროა სანდო პლატფორმის მოდულის ჩაშენებული პროგრამული უზრუნველყოფის ინსტალაცია. იხილეთ <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">მყისიერი ტეტერინგი</translation>
 <translation id="5431318178759467895">ფერი</translation>
@@ -4622,7 +4622,6 @@
 <translation id="5494920125229734069">აარჩიეთ ყველა</translation>
 <translation id="5495466433285976480">წაიშლება ყველა ლოკალური მომხმარებელი, ფაილი, მონაცემები და სხვა პარამეტრები შემდეგი გადატვირთვის დროს. მომხმარებლებს მოუწევთ ხელახლა შესვლა.</translation>
 <translation id="5495597166260341369">ეკრანის ჩართულად დატოვება</translation>
-<translation id="549580971452855947">ჩავლების გადმოტანა სურათების <ph name="VISUAL_SEARCH_PROVIDER" />-ით ძიებისთვის</translation>
 <translation id="5496587651328244253">ორგანიზება</translation>
 <translation id="5496730470963166430">ამომხტარი ფანჯრების გამოგზავნა და გადამისამართებების გამოყენება დაუშვებელია</translation>
 <translation id="5497251278400702716">ეს ფაილი</translation>
@@ -5733,7 +5732,6 @@
 დაგრჩათ # გატეხილი პაროლი. Google პაროლების მმართველი გირჩევთ, ახლავე შეამოწმოთ ეს პაროლი.}other{გატეხილი პაროლები წარმატებით შეიცვალა.
 
 დაგრჩათ # გატეხილი პაროლი. Google პაროლების მმართველი გირჩევთ, ახლავე შეამოწმოთ ეს პაროლები.}}</translation>
-<translation id="6595792813574514527">ჩავლების გადმოტანა სურათების <ph name="VISUAL_SEARCH_PROVIDER" />-ით ძიებისთვის</translation>
 <translation id="6596325263575161958">დაშიფვრის პარამეტრები</translation>
 <translation id="6596816719288285829">IP მისამართი</translation>
 <translation id="6597017209724497268">ნიმუშები</translation>
@@ -6034,6 +6032,7 @@
 <translation id="6895032998810961280">საზიანო პროგრამული უზრუნველყოფის, სისტემის პარამეტრების და თქვენი კომპიუტერის გასუფთავებისას აღმოჩენილი მიმდინარე პროცესების შესახებ დეტალური ინფორმაციის შეტყობინება Google-ისთვის</translation>
 <translation id="6896758677409633944">კოპირება</translation>
 <translation id="6897363604023044284">გასასუფთავებლად აირჩიეთ საიტები</translation>
+<translation id="6897688156970667447">დაგეხმარებათ ცუდი განათების პირობებში და დაგიზოგავთ ბატარეას</translation>
 <translation id="6898440773573063262">ახლა შეგიძლიათ ისე დააკონფიგურიროთ კიოსკის პროგრამები, რომ ავტომატურად გაიშვას ამ მოწყობილობაში.</translation>
 <translation id="6900284862687837908">ფონური აპი: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">გაძლიერებული დაცვა</translation>
@@ -7352,7 +7351,6 @@
 <translation id="8184318863960255706">დაწვრილებით</translation>
 <translation id="8184472985242519288">ერთგვაროვანი</translation>
 <translation id="8186609076106987817">სერვერმა ვერ იპოვა ფაილი.</translation>
-<translation id="8186704951085064172">გვერდის ნაწილში ძიება <ph name="VISUAL_SEARCH_PROVIDER" />-ით</translation>
 <translation id="8188389033983459049">გასაგრძელებლად შეამოწმეთ თქვენი მოწყობილობის პარამეტრები და ჩართეთ ის</translation>
 <translation id="8188742492803591566">თქვენი ეკრანის ტრანსლირების დასაწყებად შეიყვანეთ Chromecast-ზე ან ტელევიზორზე ნაჩვენები წვდომის კოდი.</translation>
 <translation id="8189306097519446565">სასწავლებლის ანგარიშები</translation>
@@ -7521,6 +7519,7 @@
 <translation id="8358685469073206162">აღვადგინოთ გვერდები?</translation>
 <translation id="8358912028636606457">ჩანართის აუდიოს ტრანსლირება ამ მოწყობილობაზე მხარდაუჭერელია.</translation>
 <translation id="835951711479681002">თქვენს Google ანგარიშში შენახვა</translation>
+<translation id="8360140320636871023">მოირგეთ ეკრანის თემა</translation>
 <translation id="8363095875018065315">სტაბილური</translation>
 <translation id="8363142353806532503">მიკროფონი დაბლოკილია</translation>
 <translation id="8366396658833131068">თქვენი ქსელური კავშირი აღდგენილია. აირჩიეთ სხვა მისამართი ან დააჭირეთ ღილაკს „გაგრძელება“ ქვემოთ, კიოსკის პროგრამის გასაშვებად.</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb
index 9bcbdb5..c229aa9 100644
--- a/chrome/app/resources/generated_resources_kk.xtb
+++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -1407,7 +1407,6 @@
     Егер Voice Match функциясы балаңызға керек болмаса, оны Assistant параметрлерінен өшіре салыңыз. Voice Match реттеген кезде сақталған жазбаларды көру немесе жою үшін балаңыздың аккаунтынан <ph name="VOICE_MATCH_SETTINGS_URL" /> бетіне өтіңіз.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> арқылы бет бөлігін іздеу</translation>
 <translation id="2309620859903500144">Бұл сайттың қозғалыс не жарық датчиктеріңізге кіруіне тыйым салынды.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Беттің URL сілтемесі</translation>
@@ -2030,7 +2029,6 @@
 <translation id="289695669188700754">Кілт индентификаторы: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Сіз барлық инкогнито терезесін жапқан кезде, бұл арнаулы параметр өз күшін жояды.</translation>
 <translation id="2897878306272793870"><ph name="TAB_COUNT" /> қойындыны ашқыңыз келе ме?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> арқылы экраннан іздеу</translation>
 <translation id="290105521672621980">Файл қолдау көрсетілмеген мүмкіндіктерді пайдаланады</translation>
 <translation id="2901348420151309559">Соңғы фотосуреттер мен қолданбалар</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> бұл принтермен байланыса алмады. Принтер жалғанғанын тескеріп, әрекетті қайталап көріңіз.</translation>
@@ -2903,7 +2901,6 @@
 <translation id="3778740492972734840">&amp;Әзірлеуші құралдары</translation>
 <translation id="3778868487658107119">Оған сұрақтар қойыңыз. Тапсырмалар беріңіз. Ол – әрқашан көмекке дайын жеке Google қызметіңіз.</translation>
 <translation id="3781742599892759500">Linux жүйесінде микрофонды пайдалану</translation>
-<translation id="378312418865624974">Осы компьютерге арналған бірегей идентификаторды оқу</translation>
 <translation id="3784472333786002075">Cookie файлдары веб-сайттарда жасалады. Олардың екі түрі бар: сіз кірген сайт жасаған меншікті cookie файлдары. Сайт мекенжай жолағында көрсетіледі. Үшінші тараптың cookie файлдары басқа сайттарда жасалады. Бұл сайттарда сіз кірген сайттың мазмұны (мысалы, жарнамалар немесе суреттер) болады.</translation>
 <translation id="3785308913036335955">Қолданбалар таңбашасын көрсету</translation>
 <translation id="3785727820640310185">Бұл сайтқа арналған құпия сөздер сақталды</translation>
@@ -3556,7 +3553,6 @@
 <translation id="4415748029120993980">SECG эллипстік қисық сызығы, secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">Бұл мазмұн үшін қолжетімді қолданба жоқ</translation>
 <translation id="4416582610654027550">URL сілтемесін дұрыс теріңіз</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> арқылы іздеу үшін суреттерді сүйреу</translation>
 <translation id="4419409365248380979">Әрқашан <ph name="HOST" /> хостына cookie файлдарын орнату рұқсатын беру</translation>
 <translation id="4421932782753506458">Fluffy</translation>
 <translation id="4423376891418188461">Параметрлерді қалпына келтіру</translation>
@@ -3694,7 +3690,6 @@
 <translation id="4550926046134589611">Кейбір қолдау көрсету сілтемелері <ph name="APP_NAME" /> қолданбасында ашық болады.</translation>
 <translation id="4551763574344810652">Қайтару үшін <ph name="MODIFIER_KEY_DESCRIPTION" /> пернелерін басыңыз.</translation>
 <translation id="4553526521109675518">Құрылғының тілін өзгерту үшін Chromebook құрылғысын өшіріп, қосуыңыз керек. <ph name="BEGIN_LINK_LEARN_MORE" />Толығырақ<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> арқылы іздеу үшін суреттерді сүйреу</translation>
 <translation id="4554591392113183336">Сыртқы кеңейтім бар нұсқамен бірдей немесе онымен салыстырғанда төменірек нұсқа болып табылады.</translation>
 <translation id="4555769855065597957">Көлеңке</translation>
 <translation id="4555863373929230635">Құпия сөздерді Google аккаунтыңызға сақтау үшін оған кіріп, синхрондауды қосыңыз.</translation>
@@ -4545,7 +4540,6 @@
 <translation id="5427459444770871191">&amp;Сағат тілімен бұру</translation>
 <translation id="542750953150239272">Жалғастыру арқылы бұл құрылғының Google қызметінен, оператордан және құрылғы өндірушісінен жаңа нұсқалар мен қолданбаларды автоматты түрде жүктеп алуына және орнатуына келісім бересіз (мобильдік интернет пайдаланылуы мүмкін). Бұл қолданбалардың кейбірінде қолданба арқылы сатып алу ұсынылуы мүмкін.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Жаңарту қолжетімді)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> арқылы экраннан іздеу</translation>
 <translation id="542948651837270806">Trusted Platform Module микробағдарламасының жаңа нұсқасы орнатылуы тиіс. <ph name="TPM_FIRMWARE_UPDATE_LINK" /> сілтемесін қараңыз.</translation>
 <translation id="5430931332414098647">Жылдам тетеринг</translation>
 <translation id="5431318178759467895">Түс</translation>
@@ -4618,7 +4612,6 @@
 <translation id="5494920125229734069">Барлығын таңдау</translation>
 <translation id="5495466433285976480">Келесі жолы қайта іске қосқаннан кейін, барлық жергілікті пайдаланушылар, файлдар, деректер және басқа параметрлер жойылады. Барлық пайдаланушылар жүйеге қайта кіруі керек болады.</translation>
 <translation id="5495597166260341369">Дисплейді қосулы қалдыру</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> арқылы суреттерді іздеу үшін сүйреу</translation>
 <translation id="5496587651328244253">Ұйымдастыру</translation>
 <translation id="5496730470963166430">Қалқымалы терезелерді жіберу мен бағытты ауыстыру функцияларын пайдалануға рұқсаты жоқтар</translation>
 <translation id="5497251278400702716">Осы файл</translation>
@@ -5726,7 +5719,6 @@
 Тағы # құпия сөзіңіз ұрланған. Google Құпия сөз менеджері бұл құпия сөзді дереу тексеруді ұсынады.}other{Ұрланған құпия сөз өзгертілді.
 
 Тағы # құпия сөзіңіз ұрланған. Google Құпия сөз менеджері бұл құпия сөздерді дереу тексеруді ұсынады.}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> арқылы суреттерді іздеу үшін сүйреу</translation>
 <translation id="6596325263575161958">Шифрлау опциялары</translation>
 <translation id="6596816719288285829">IP мекенжайы</translation>
 <translation id="6597017209724497268">Үлгілер</translation>
@@ -7345,7 +7337,6 @@
 <translation id="8184318863960255706">Қосымша ақпарат</translation>
 <translation id="8184472985242519288">Бірыңғай</translation>
 <translation id="8186609076106987817">Сервер файлды таба алмады.</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> арқылы бет бөлігін іздеу</translation>
 <translation id="8188389033983459049">Құрылғы параметрлерін тексеріңіз және жалғастыру үшін оны іске қосыңыз</translation>
 <translation id="8188742492803591566">Экранды трансляциялай бастау үшін Chromecast құрылғысында немесе теледидарда көрсетілген рұқсат кодын енгізіңіз.</translation>
 <translation id="8189306097519446565">Мектеп аккаунттары</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index d04e519..81ee91d 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -182,6 +182,7 @@
 <translation id="1166583374608765787">ពិនិត្យមើល​ការប្ដូរឈ្មោះ</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> ជារបស់តុ <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">កំពុងបើកនៅក្នុង <ph name="TIME_REMAINING" />...</translation>
+<translation id="1169266963600477608">ការគ្រប់គ្រង​ហ្គេម</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> មានទិន្នន័យ​រសើប ឬ​គ្រោះថ្នាក់។ អ្នកគ្រប់គ្រង​របស់អ្នក​និយាយថា៖ "<ph name="CUSTOM_MESSAGE" />"</translation>
 <translation id="1171135284592304528">ហាយឡាយ៍របស់អ្វីមួយដោយប្រើការផ្តោតក្តារចុចនៅពេលវាផ្លាស់ប្តូរ</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> ចង់ភ្ជាប់​ទៅឧបករណ៍ HID</translation>
@@ -1425,7 +1426,6 @@
     ប្រសិនបើ​អ្នកសម្រេចចិត្ត​នៅពេលក្រោយថា​មុខងារ Voice Match មិនស័ក្តិសម​សម្រាប់​កូនអ្នកនោះទេ គ្រាន់តែ​លុបមុខងារនេះ​ចេញពីការកំណត់​ជំនួយការ​របស់គាត់​ជាការស្រេច។ ដើម្បីមើល ឬ​លុបឃ្លីប​សំឡេង ដែលកូនអ្នកថត​អំឡុងពេល​រៀបចំមុខងារ Voice Match សូមចូល​ទៅកាន់ <ph name="VOICE_MATCH_SETTINGS_URL" /> ពីគណនី​របស់កូនអ្នក​។
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">ស្វែងរក​ផ្នែកនៃទំព័រ​ដោយប្រើ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">គេហទំព័រ​នេះ​ត្រូវបាន​ទប់ស្កាត់មិនឱ្យចូលប្រើ​ឧបករណ៍​ចាប់​ពន្លឺ ឬ​ឧបករណ៍​ចាប់​​ចលនា​របស់អ្នក។​</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL ទំព័រ</translation>
@@ -2049,7 +2049,6 @@
 <translation id="289695669188700754">លេខសម្គាល់សោ៖ <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">ការកំណត់​ផ្ទាល់ខ្លួននេះ​នឹងត្រូវបាន​លុបចេញ នៅពេលដែល​អ្នកបិទផ្ទាំងឯកជន​ទាំងអស់​របស់អ្នក</translation>
 <translation id="2897878306272793870">តើអ្នកប្រាកដថាចង់បើក <ph name="TAB_COUNT" /> ផ្ទាំងទេ?</translation>
-<translation id="2900477968385519153">ស្វែងរក​នៅលើអេក្រង់​របស់អ្នក​ដោយប្រើ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">ឯកសារ​ប្រើប្រាស់​មុខងារ​ដែល​មិនស្គាល់</translation>
 <translation id="2901348420151309559">រូបថត និងកម្មវិធីថ្មីៗ</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> មិនអាចទាក់ទងជាមួយម៉ាស៊ីនបោះពុម្ពនេះបានទេ។ សូមប្រាកដថាម៉ាស៊ីនបោះពុម្ពនេះបានភ្ជាប់យ៉ាងត្រឹមត្រូវ ហើយព្យាយាមម្តងទៀត។</translation>
@@ -2922,7 +2921,6 @@
 <translation id="3778740492972734840">ឧបករណ៍អ្នកអភិវឌ្ឍន៍</translation>
 <translation id="3778868487658107119">សួរ​សំណួរ និង​ប្រាប់វា​ឲ្យធ្វើ​កិច្ចការ​។ វាជា Google ផ្ទាល់ខ្លួន​របស់អ្នក ដែលត្រៀម​ជួយអ្នក​ជានិច្ច។</translation>
 <translation id="3781742599892759500">ការចូលប្រើមីក្រូហ្វូន​សម្រាប់ Linux</translation>
-<translation id="378312418865624974">អានឧបករណ៍សម្គាល់ពិសេសសម្រាប់កុំព្យូទ័រនេះ</translation>
 <translation id="3784472333786002075">ខូគី​គឺជាឯកសារ​ដែលបង្កើត​ដោយ​គេហទំព័រ។ ខូគី​មានពីរ​ប្រភេទ៖ ខូគី​ភាគីទីមួយ​បង្កើត​ដោយ​គេហទំព័រ​ដែលអ្នក​ចូលមើល។ គេហទំព័រ​នេះ​បង្ហាញ​នៅលើ​របារអាសយដ្ឋាន។ ខូគី​ភាគីទីបី​បង្កើត​ដោយ​គេហទំព័រ​ផ្សេងទៀត។ គេហទំព័រ​ទាំងនេះ​គឺជាម្ចាស់​នៃខ្លឹមសារ​មួយចំនួន ​ដូចជា​ការផ្សាយពាណិជ្ជកម្ម ឬរូបភាព ដែលអ្នក​ឃើញ​នៅលើ​គេហទំព័រ​ដែលអ្នកចូលមើលជាដើម។</translation>
 <translation id="3785308913036335955">បង្ហាញផ្លូវកាត់កម្មវិធី</translation>
 <translation id="3785727820640310185">បាន​រក្សា​ទុក​ពាក្យសម្ងាត់​​សម្រាប់​ទំព័រ​នេះ</translation>
@@ -3381,6 +3379,7 @@
 <translation id="4227605727325220318">បញ្ចូលទូរសព្ទ Android ថ្មី</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{កម្មវិធីបន្ថែម​នេះ​មិនត្រូវបាន​អនុញ្ញាតទេ}other{កម្មវិធីបន្ថែម​មួយចំនួន​មិនត្រូវបាន​អនុញ្ញាតទេ}}</translation>
 <translation id="4231095370974836764">ដំឡើង​កម្មវិធី និង​ហ្គេមពី Google Play នៅលើ <ph name="DEVICE_TYPE" /> របស់អ្នក។ <ph name="LINK_BEGIN" />ស្វែងយល់បន្ថែម<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">បិទ​ការគ្រប់គ្រង​ហ្គេម</translation>
 <translation id="4232375817808480934">កំណត់​រចនាសម្ព័ន្ធ Kerberos</translation>
 <translation id="4235965441080806197">បោះបង់ការចូលគណនី</translation>
 <translation id="4236163961381003811">ស្វែងរកកម្មវិធីបន្ថែម​ជាច្រើនទៀត</translation>
@@ -3575,7 +3574,6 @@
 <translation id="4415748029120993980">SECG elliptic curve secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">មិនមាន​កម្មវិធីសម្រាប់​ខ្លឹមសារនេះទេ</translation>
 <translation id="4416582610654027550">វាយ​បញ្ចូល URL ដែល​ត្រឹមត្រូវ</translation>
-<translation id="4417162649853416189">អូសពីលើ​រូបភាព ដើម្បី​ស្វែងរក​ដោយប្រើ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">អនុញ្ញាតឲ្យ <ph name="HOST" /> កំណត់ខុកឃីជានិច្ច</translation>
 <translation id="4421932782753506458">ថ្លុះគួរឲ្យស្រលាញ់</translation>
 <translation id="4423376891418188461">ស្តារការកំណត់</translation>
@@ -3715,7 +3713,6 @@
 <translation id="4550926046134589611">តំណដែលអាចប្រើបាន​មួយចំនួននឹងនៅ​តែបើកនៅក្នុង <ph name="APP_NAME" /> ដដែល។</translation>
 <translation id="4551763574344810652">ចុច <ph name="MODIFIER_KEY_DESCRIPTION" /> ដើម្បី​ត្រឡប់​វិញ</translation>
 <translation id="4553526521109675518">អ្នក​ត្រូវ​ចាប់ផ្ដើម Chromebook ​របស់​អ្នក​ឡើង​វិញ ដើម្បី​ផ្លាស់ប្ដូរភាសារបស់ឧបករណ៍។ <ph name="BEGIN_LINK_LEARN_MORE" />ស្វែងយល់បន្ថែម<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">អូសពីលើ​រូបភាព ដើម្បី​ស្វែងរក​ដោយប្រើ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">កម្មវិធីបន្ថែមខាងក្រៅស្ថិតនៅក្នុងកំណែដូចគ្នា ឬទាបជាងបើប្រៀបនឺងកំណែដែលមានស្រាប់។</translation>
 <translation id="4555769855065597957">ស្រមោល</translation>
 <translation id="4555863373929230635">ដើម្បី​រក្សាទុកពាក្យសម្ងាត់​ទៅក្នុងគណនី Google របស់អ្នក សូមចូលគណនី រួចបើក "សមកាលកម្ម"។</translation>
@@ -4566,7 +4563,6 @@
 <translation id="5427459444770871191">បង្វិលបញ្ច្រាសទ្រនិចនាឡិកា</translation>
 <translation id="542750953150239272">ប្រសិនបើ​បន្ត មានន័យ​ថាអ្នកក៏យល់ព្រម​ឱ្យឧបករណ៍​នេះអាច​ទាញយក និងដំឡើង​កម្មវិធីនិង​កំណែថ្មី​ដោយ​ស្វ័យប្រវត្តិពី Google, ក្រុមហ៊ុន​សេវាទូរសព្ទ​របស់អ្នក និង​ក្រុមហ៊ុន​ផលិត​ឧបករណ៍​របស់អ្នក ដោយអាចនឹង​ប្រើ​ទិន្នន័យ​ទូរសព្ទ​ចល័តផងដែរ។ កម្មវិធី​ទាំងនេះមួយចំនួន​អាច​ផ្ដល់ជូន​ការទិញ​ក្នុងកម្មវិធី។</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (មានការធ្វើបច្ចុប្បន្នភាព)</translation>
-<translation id="5429373054983029602">ស្វែងរក​នៅលើអេក្រង់​របស់អ្នក​ដោយប្រើ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">ត្រូវដំឡើងកំណែថ្មីសម្រាប់កម្មវិធីបង្កប់ Trusted Platform Module។ សូមមើល <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">ការ​ភ្ជាប់​ភ្លាមៗ</translation>
 <translation id="5431318178759467895">ពណ៌</translation>
@@ -4639,7 +4635,6 @@
 <translation id="5494920125229734069">ជ្រើសរើសទាំងអស់</translation>
 <translation id="5495466433285976480">វានឹងដកអ្នកប្រើមូលដ្ឋាន ឯកសារ ទិន្នន័យ និងការកំណត់ផ្សេងទៀតទាំងអស់ចេញ បន្ទាប់ពីការចាប់ផ្តើមឡើងវិញរបស់អ្នកលើកក្រោយ។ អ្នកប្រើទាំងអស់នឹងត្រូវចូលម្តងទៀត។</translation>
 <translation id="5495597166260341369">បន្តបើក​អេក្រង់</translation>
-<translation id="549580971452855947">អូសដើម្បី​ស្វែងរក​រូបភាព​ដោយប្រើ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">រៀបចំ</translation>
 <translation id="5496730470963166430">មិនអនុញ្ញាតឱ្យផ្ញើផ្ទាំងលោតឡើង ឬប្រើការបញ្ជូន​បន្តទេ</translation>
 <translation id="5497251278400702716">ឯកសារ​នេះ</translation>
@@ -5751,7 +5746,6 @@
 អ្នកមាន​ពាក្យសម្ងាត់ដែលរងការលុកលុយ # ទៀត។ កម្មវិធីគ្រប់គ្រង​ពាក្យសម្ងាត់ Google ណែនាំឱ្យ​ពិនិត្យមើល​ពាក្យសម្ងាត់នេះ​ឥឡូវនេះ។}other{បានប្ដូរ​ពាក្យសម្ងាត់ដែលរងការលុកលុយ​ដោយជោគជ័យហើយ។
 
 អ្នកមាន​ពាក្យសម្ងាត់ដែល​រងការលុកលុយ # ទៀត។ កម្មវិធីគ្រប់គ្រង​ពាក្យសម្ងាត់ Google ណែនាំឱ្យ​ពិនិត្យមើល​ពាក្យសម្ងាត់​ទាំងនេះ​ឥឡូវនេះ។}}</translation>
-<translation id="6595792813574514527">អូសដើម្បី​ស្វែងរក​រូបភាព​ដោយប្រើ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">ជម្រើសការអ៊ីនគ្រីប</translation>
 <translation id="6596816719288285829">អាសយដ្ឋាន IP</translation>
 <translation id="6597017209724497268">គំរូ</translation>
@@ -7371,7 +7365,6 @@
 <translation id="8184318863960255706">ព័ត៌មានបន្ថែម</translation>
 <translation id="8184472985242519288">ឯកសណ្ឋាន</translation>
 <translation id="8186609076106987817">ម៉ាស៊ីនមេមិនអាចស្វែងរកឯកសារទេ។</translation>
-<translation id="8186704951085064172">ស្វែងរក​ផ្នែកនៃទំព័រ​ដោយប្រើ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">ពិនិត្យមើល​ការកំណត់​ឧបករណ៍​របស់អ្នក ហើយបើកវា​ដើម្បីបន្ត</translation>
 <translation id="8188742492803591566">បញ្ចូលលេខកូដចូលប្រើប្រាស់ដែលបង្ហាញនៅលើ Chromecast ឬទូរទស្សន៍ ដើម្បីចាប់ផ្ដើមភ្ជាប់អេក្រង់របស់អ្នក។</translation>
 <translation id="8189306097519446565">គណនីសាលារៀន</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index 2f7ba4b..ea4cc96 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -1418,7 +1418,6 @@
     Voice Match ನಿಮ್ಮ ಮಗುವಿಗೆ ಸರಿಹೊಂದುವುದಿಲ್ಲ ಎಂದು ನೀವು ನಂತರ ನಿರ್ಧರಿಸಿದರೆ, ಅದನ್ನು ಅವರ Assistant ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ತೆಗೆದುಹಾಕಿ. Voice Match ಸೆಟಪ್‌ನ ಸಮಯದಲ್ಲಿ ನಿಮ್ಮ ಮಗು ರೆಕಾರ್ಡ್ ಮಾಡುವ ಆಡಿಯೋ ಕ್ಲಿಪ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಅಥವಾ ಅಳಿಸಲು, ನಿಮ್ಮ ಮಗುವಿನ ಖಾತೆಯಿಂದ <ph name="VOICE_MATCH_SETTINGS_URL" /> ಗೆ ಹೋಗಿ.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> ಬಳಸಿಕೊಂಡು ಪುಟದ ಭಾಗವನ್ನು ಹುಡುಕಿ</translation>
 <translation id="2309620859903500144">ನಿಮ್ಮ ಚಲನೆಯ ಅಥವಾ ಲೈಟ್‌ ಸೆನ್ಸರ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸದಂತೆ ಈ ಸೈಟ್‌ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">ಪುಟದ URL</translation>
@@ -2041,7 +2040,6 @@
 <translation id="289695669188700754">ಕೀಲಿ ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">ನಿಮ್ಮ ಎಲ್ಲಾ ಅಜ್ಞಾತ ವಿಂಡೋಗಳನ್ನು ನೀವು ಮುಚ್ಚಿದಾಗ ಈ ಕಸ್ಟಮ್ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ</translation>
 <translation id="2897878306272793870"><ph name="TAB_COUNT" /> ಟ್ಯಾಬ್‌ಗಳನ್ನು ತೆರೆಯಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಹುಡುಕಿ</translation>
 <translation id="290105521672621980">ಬೆಂಬಲಿಸದ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಫೈಲ್ ಬಳಸುತ್ತದೆ</translation>
 <translation id="2901348420151309559">ಇತ್ತೀಚಿನ ಫೋಟೋಗಳು ಮತ್ತು ಆ್ಯಪ್‌ಗಳು</translation>
 <translation id="2902127500170292085">ಈ ಪ್ರಿಂಟರ್‌ ಜೊತೆಗೆ <ph name="EXTENSION_NAME" /> ಸಂವಹನ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪ್ರಿಂಟರ್‌ ಪ್ಲಗಿನ್‌ ಮಾಡಲಾಗಿದೆಯೇ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಹಾಗೂ ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
@@ -2915,7 +2913,6 @@
 <translation id="3778740492972734840">&amp;ಡೆವೆಲಪರ್  ಟೂಲ್‌ಗಳು</translation>
 <translation id="3778868487658107119">ಇದಕ್ಕೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಿ. ಕೆಲಸಗಳನ್ನು ಮಾಡಲು ತಿಳಿಸಿ. ಇದು ನಿಮ್ಮ ಸ್ವಂತ Google, ಸಹಾಯಕ್ಕೆ ಯಾವಾಗಲೂ ಸಿದ್ಧವಾಗಿರುತ್ತದೆ.</translation>
 <translation id="3781742599892759500">Linux ಮೈಕ್ರೋಫೋನ್ ಪ್ರವೇಶ</translation>
-<translation id="378312418865624974">ಈ ಕಂಪ್ಯೂಟರ್‌ಗಾಗಿ ಅನನ್ಯ ಗುರುತಿಸುವಿಕೆಯನ್ನು ಓದಿ</translation>
 <translation id="3784472333786002075">ಕುಕೀಗಳು ಎಂದರೆ ವೆಬ್‌ಸೈಟ್‌ಗಳು ರಚಿಸಿದ ಫೈಲ್‌ಗಳು. ಎರಡು ರೀತಿಯ ಕುಕೀಗಳಿವೆ: ನೀವು ಭೇಟಿ ನೀಡುವ ಸೈಟ್‌ ಬಳಸಿಕೊಂಡು ಫರ್ಸ್ಟ್-ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ರಚಿಸಲಾಗಿದೆ. ವಿಳಾಸ ಪಟ್ಟಿಯಲ್ಲಿ ಸೈಟ್ ಅನ್ನು ತೋರಿಸಲಾಗಿದೆ. ಥರ್ಡ್-ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ಇತರ ಸೈಟ್‌ಗಳಿಂದ ರಚಿಸಲಾಗಿದೆ. ನೀವು ಭೇಟಿ ನೀಡುವ ವೆಬ್‌ಸೈಟ್‌ನಲ್ಲಿ ನೀವು ನೋಡುವ ಜಾಹೀರಾತುಗಳು ಅಥವಾ ಚಿತ್ರಗಳಂತಹ ಕೆಲವು ರೀತಿಯ ವಿಷಯವನ್ನು, ಈ ಸೈಟ್‌ಗಳು ಮಾಲೀಕತ್ವವನ್ನು ಹೊಂದಿವೆ.</translation>
 <translation id="3785308913036335955">ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಶಾರ್ಟ್‌ಕಟ್ ತೋರಿಸು</translation>
 <translation id="3785727820640310185">ಈ ಸೈಟ್‌ಗಾಗಿ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಉಳಿಸಲಾಗಿದೆ</translation>
@@ -3568,7 +3565,6 @@
 <translation id="4415748029120993980">SECG ಎಲಿಪ್ಟಿಕ್ ಕರ್ವ್ secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">ಈ ವಿಷಯಕ್ಕೆ ಯಾವುದೇ ಆ್ಯಪ್‌ಗಳು ಲಭ್ಯವಿಲ್ಲ</translation>
 <translation id="4416582610654027550">ಮಾನ್ಯವಾದ URL ಟೈಪ್ ಮಾಡಿ</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> ಬಳಸಿಕೊಂಡು ಹುಡುಕಲು ಚಿತ್ರಗಳ ಮೇಲೆ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ</translation>
 <translation id="4419409365248380979">ಕುಕೀಗಳನ್ನು ಹೊಂದಿಸಲು <ph name="HOST" /> ಯಾವಾಗಲೂ ಅನುಮತಿಸುತ್ತದೆ</translation>
 <translation id="4421932782753506458">ಫ್ಲುಫಿ</translation>
 <translation id="4423376891418188461">ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರುಸ್ಥಾಪಿಸು</translation>
@@ -3639,6 +3635,7 @@
 <translation id="449232563137139956">ಸೈಟ್‌ಗಳು ಸಾಮಾನ್ಯವಾಗಿ, ಆನ್‌ಲೈನ್ ಸ್ಟೋರ್‌ಗಳ ಫೋಟೋಗಳು ಅಥವಾ ಸುದ್ದಿ ಲೇಖನಗಳಂತಹ ಉದಾಹರಣೆಯನ್ನು ಒದಗಿಸಲು ಚಿತ್ರಗಳನ್ನು ತೋರಿಸುತ್ತವೆ</translation>
 <translation id="4492698018379445570">ಶಾಪಿಂಗ್ ಕಾರ್ಟ್‌ಗಳಿಗೆ ನೀವು ಏನನ್ನು ಸೇರಿಸಿದ್ದೀರಿ ಎಂಬುದನ್ನು ಹುಡುಕಿ ಮತ್ತು ಸಿದ್ಧರಾದಾಗ ಚೆಕ್ ಔಟ್ ಮಾಡಿ</translation>
 <translation id="4493468155686877504">ಶಿಫಾರಸು ಮಾಡಲಾಗಿರುವುದು (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180"><ph name="SITE" /> ನಲ್ಲಿ ಈ ವಿಸ್ತರಣೆಯನ್ನು ಅನುಮತಿಸುವುದೇ?</translation>
 <translation id="4495419450179050807">ಈ ಪುಟದಲ್ಲಿ ತೋರಿಸಬೇಡ</translation>
 <translation id="4497145443434063861">ವಿಭಿನ್ನ ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗೆ ಕನೆಕ್ಟ್ ಆಗಿರುವ PC ಮತ್ತು Chromecast (ಉದಾ. 2.4GHz ವಿರುದ್ಧ 5GHz)</translation>
 <translation id="4500114933761911433"><ph name="PLUGIN_NAME" /> ಕ್ರ್ಯಾಶ್ ಆಗಿದೆ</translation>
@@ -3706,7 +3703,6 @@
 <translation id="4550926046134589611">ಕೆಲವು ಬೆಂಬಲಿಸಿದ ಲಿಂಕ್‌ಗಳು <ph name="APP_NAME" /> ನಲ್ಲಿ ಈಗಲೂ ಲಭ್ಯವಿರುತ್ತವೆ.</translation>
 <translation id="4551763574344810652">ರದ್ದುಮಾಡಲು <ph name="MODIFIER_KEY_DESCRIPTION" /> ಅನ್ನು ಒತ್ತಿರಿ</translation>
 <translation id="4553526521109675518">ಸಾಧನದ ಭಾಷೆ ಬದಲಾಯಿಸಲು ನಿಮ್ಮ Chromebook ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸುವ ಅಗತ್ಯವಿದೆ. <ph name="BEGIN_LINK_LEARN_MORE" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> ಬಳಸಿಕೊಂಡು ಹುಡುಕಲು ಚಿತ್ರಗಳ ಮೇಲೆ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ</translation>
 <translation id="4554591392113183336">ಬಾಹ್ಯ ವಿಸ್ತರಣೆಯು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವುದಕ್ಕೆ ಹೋಲಿಸಿದರೆ ಅದೇ ಅಥವಾ ಕಡಿಮೆ ಆವೃತ್ತಿಯಲ್ಲಿದೆ</translation>
 <translation id="4555769855065597957">ನೆರಳು</translation>
 <translation id="4555863373929230635">ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಉಳಿಸಲು, ಸೈನ್ ಇನ್ ಮಾಡಿ ಮತ್ತು ಸಿಂಕ್ ಆನ್ ಮಾಡಿ.</translation>
@@ -4558,7 +4554,6 @@
 <translation id="5427459444770871191">&amp;ಪ್ರದಕ್ಷಿಣೆಯಂತೆ ತಿರುಗಿಸಿ</translation>
 <translation id="542750953150239272">ಮುಂದುವರೆಯುವ ಮೂಲಕ, ಈ ಸಾಧನವು ಸಂಭಾವ್ಯವಾಗಿ ಸೆಲ್ಯುಲರ್ ಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು Google, ನಿಮ್ಮ ವಾಹಕ ಮತ್ತು ನಿಮ್ಮ ಸಾಧನದ ತಯಾರಕರ ಅಪ್‌ಡೇಟ್‌ಗಳು ಮತ್ತು ಆ್ಯಪ್‌ಗಳನ್ನು ಸಹ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು ಮತ್ತು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ನೀವು ಒಪ್ಪಿಕೊಳ್ಳುವಿರಿ. ಇವುಗಳಲ್ಲಿ ಕೆಲವೊಂದು ಆ್ಯಪ್‌ಗಳು, ಆ್ಯಪ್‌ಗಳಲ್ಲಿ ಖರೀದಿಸುವ ಅವಕಾಶ ಒದಗಿಸಬಹುದು.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (ಅಪ್‌ಡೇಟ್‌ ಲಭ್ಯವಿದೆ)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಹುಡುಕಿ</translation>
 <translation id="542948651837270806">ವಿಶ್ವಾಸಾರ್ಹ ಪ್ಲ್ಯಾಟ್‌ಫಾರ್ಮ್ ಮಾಡ್ಯೂಲ್ ಫರ್ಮ್‌ವೇರ್‌ಗಾಗಿ ಅಪ್‌ಡೇಟ್‌ ಒಂದನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ. <ph name="TPM_FIRMWARE_UPDATE_LINK" /> ಅನ್ನು ನೋಡಿ</translation>
 <translation id="5430931332414098647">ತತ್‌ಕ್ಷಣದ ಟೆಥರಿಂಗ್‌</translation>
 <translation id="5431318178759467895">ಬಣ್ಣ</translation>
@@ -4631,7 +4626,6 @@
 <translation id="5494920125229734069">ಎಲ್ಲವನ್ನೂ ಆಯ್ಕೆ ಮಾಡಿ</translation>
 <translation id="5495466433285976480">ಇದು ನಿಮ್ಮ ಮುಂದಿನ ಮರುಪ್ರಾರಂಭದ ನಂತರ ಎಲ್ಲಾ ಸ್ಥಳೀಯ ಬಳಕೆದಾರರು, ಫೈಲ್‌ಗಳು, ಡೇಟಾ ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. ಎಲ್ಲಾ ಬಳಕೆದಾರರು ಮತ್ತೆ ಸೈನ್ ಇನ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.</translation>
 <translation id="5495597166260341369">ಡಿಸ್‌ಪ್ಲೇ ಅನ್ನು ಆನ್‌ನಲ್ಲೇ ಇರಿಸಿ</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> ಬಳಸಿಕೊಂಡು ಚಿತ್ರಗಳನ್ನು ಹುಡುಕಲು ಡ್ರ್ಯಾಗ್ ಮಾಡಿ</translation>
 <translation id="5496587651328244253">ವ್ಯವಸ್ಥಿತಗೊಳಿಸಿ</translation>
 <translation id="5496730470963166430">ಪಾಪ್-ಅಪ್‌ಗಳನ್ನು ಕಳುಹಿಸಲು ಅಥವಾ ಮರುನಿರ್ದೇಶನಗಳನ್ನು ಬಳಸಲು ಈ ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ</translation>
 <translation id="5497251278400702716">ಈ ಫೈಲ್</translation>
@@ -5745,7 +5739,6 @@
 ನೀವು ಇನ್ನೂ # ಅಪಾಯಕ್ಕೀಡಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಹೊಂದಿರುವಿರಿ. Google Password Manager, ಈಗಲೇ ಈ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.}other{ಅಪಾಯಕ್ಕೀಡಾದ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಬದಲಾಯಿಸಲಾಗಿದೆ.
 
 ನೀವು ಇನ್ನೂ # ಅಪಾಯಕ್ಕೀಡಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಹೊಂದಿರುವಿರಿ. Google Password Manager, ಈಗಲೇ ಈ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> ಬಳಸಿಕೊಂಡು ಚಿತ್ರಗಳನ್ನು ಹುಡುಕಲು ಡ್ರ್ಯಾಗ್ ಮಾಡಿ</translation>
 <translation id="6596325263575161958">ಎನ್‌ಕ್ರಿಫ್ಶನ್ ಆಯ್ಕೆಗಳು</translation>
 <translation id="6596816719288285829">IP ವಿಳಾಸ</translation>
 <translation id="6597017209724497268">ಮಾದರಿಗಳು</translation>
@@ -7363,7 +7356,6 @@
 <translation id="8184318863960255706">ಹೆಚ್ಚಿನ ಮಾಹಿತಿ</translation>
 <translation id="8184472985242519288">ಏಕರೂಪ</translation>
 <translation id="8186609076106987817">ಸರ್ವರ್‌ಗೆ ಫೈಲ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಲಿಲ್ಲ.</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> ಬಳಸಿಕೊಂಡು ಪುಟದ ಭಾಗವನ್ನು ಹುಡುಕಿ</translation>
 <translation id="8188389033983459049">ನಿಮ್ಮ ಸಾಧನದ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಮುಂದುವರಿಸಲು ಬ್ಲೂಟೂತ್ ಆನ್ ಮಾಡಿ</translation>
 <translation id="8188742492803591566">ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ ಅನ್ನು ಬಿತ್ತರಿಸುವುದನ್ನು ಪ್ರಾರಂಭಿಸಲು Chromecast ಅಥವಾ ಟಿವಿಯಲ್ಲಿ ತೋರಿಸಿರುವ ಪ್ರವೇಶ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ.</translation>
 <translation id="8189306097519446565">ಶಾಲಾ ಖಾತೆಗಳು</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index 737e188..1d6530b 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -1426,7 +1426,6 @@
     나중에 Voice Match가 자녀에게 적합하지 않다고 생각되면 어시스턴트 설정에서 삭제하세요. Voice Match 설정 중에 녹음된 자녀 오디오 클립을 보거나 삭제하려면 자녀의 계정에서 <ph name="VOICE_MATCH_SETTINGS_URL" />로 이동하세요.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" />로 페이지 일부 검색</translation>
 <translation id="2309620859903500144">모션 센서 또는 조도 센서 액세스가 차단된 사이트입니다.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">페이지 URL</translation>
@@ -2050,7 +2049,6 @@
 <translation id="289695669188700754">키 ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">시크릿 창을 모두 닫으면 맞춤 설정이 삭제됩니다.</translation>
 <translation id="2897878306272793870"><ph name="TAB_COUNT" />개 탭을 여시겠습니까?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" />로 화면 검색</translation>
 <translation id="290105521672621980">파일에 지원되지 않는 기능이 있습니다.</translation>
 <translation id="2901348420151309559">최근 사진과 앱</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" />이(가) 이 프린터와 통신할 수 없습니다. 프린터가 연결되어 있는지 확인한 후 다시 시도해 주세요.</translation>
@@ -2923,7 +2921,6 @@
 <translation id="3778740492972734840">개발자 도구(&amp;D)</translation>
 <translation id="3778868487658107119">질문을 하고 작업을 지시하세요. 나만의 Google이 언제든지 도와드립니다.</translation>
 <translation id="3781742599892759500">Linux 마이크 액세스</translation>
-<translation id="378312418865624974">이 컴퓨터의 고유 식별자 조회</translation>
 <translation id="3784472333786002075">쿠키는 웹사이트에서 생성된 파일로, 다음과 같은 2가지 유형이 있습니다. 제1사 쿠키는 사용자가 방문하는 사이트에 의해 생성됩니다. 이때 사이트가 주소 표시줄에 나타납니다. 제3사 쿠키는 다른 사이트, 즉 광고나 이미지 등 사용자가 방문하는 웹사이트에 표시되는 일부 콘텐츠를 소유한 사이트에 의해 생성됩니다.</translation>
 <translation id="3785308913036335955">앱 단축키 표시</translation>
 <translation id="3785727820640310185">이 사이트의 저장된 비밀번호</translation>
@@ -3574,7 +3571,6 @@
 <translation id="4415748029120993980">SECG 타원 곡선 secp384r1(또는 NIST P-384)</translation>
 <translation id="4416450511678320850">콘텐츠에 사용할 수 있는 앱이 없음</translation>
 <translation id="4416582610654027550">유효한 URL을 입력하세요.</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" />로 이미지 위로 드래그하여 검색</translation>
 <translation id="4419409365248380979"><ph name="HOST" />에서 항상 쿠키를 설정하도록 허용</translation>
 <translation id="4421932782753506458">복실이</translation>
 <translation id="4423376891418188461">설정 복원</translation>
@@ -3713,7 +3709,6 @@
 <translation id="4550926046134589611">지원되는 링크 일부는 <ph name="APP_NAME" />에서 계속 열 수 있습니다.</translation>
 <translation id="4551763574344810652">실행취소하려면 <ph name="MODIFIER_KEY_DESCRIPTION" />을(를) 누르세요.</translation>
 <translation id="4553526521109675518">기기 언어를 변경하려면 Chromebook을 다시 시작해야 합니다. <ph name="BEGIN_LINK_LEARN_MORE" />자세히 알아보기<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" />로 이미지 위로 드래그하여 검색</translation>
 <translation id="4554591392113183336">외부 확장 프로그램의 버전이 기존 프로그램과 동일하거나 낮습니다.</translation>
 <translation id="4555769855065597957">그림자</translation>
 <translation id="4555863373929230635">Google 계정에 비밀번호를 저장하려면 로그인한 다음 동기화를 사용 설정하세요.</translation>
@@ -4564,7 +4559,6 @@
 <translation id="5427459444770871191">시계 방향으로 회전(&amp;C)</translation>
 <translation id="542750953150239272">계속하면 이 기기에서 Google, 이동통신사, 기기 제조업체로부터 업데이트와 앱을 자동으로 다운로드하고 설치할 수 있으며 모바일 데이터를 사용할 수도 있음에 동의하는 것으로 간주됩니다. 일부 앱에서는 인앱 구매가 제공될 수도 있습니다.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" />(업데이트 사용 가능)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" />로 화면 검색</translation>
 <translation id="542948651837270806">신뢰할 수 있는 플랫폼 모듈 펌웨어 업데이트를 설치해야 합니다. <ph name="TPM_FIRMWARE_UPDATE_LINK" /> 보기</translation>
 <translation id="5430931332414098647">인스턴트 테더링</translation>
 <translation id="5431318178759467895">컬러</translation>
@@ -4637,7 +4631,6 @@
 <translation id="5494920125229734069">모두 선택</translation>
 <translation id="5495466433285976480">다음에 다시 시작할 때 모든 로컬 사용자, 파일, 데이터 및 기타 설정이 삭제됩니다. 모든 사용자는 다시 로그인해야 합니다.</translation>
 <translation id="5495597166260341369">디스플레이를 켜진 상태로 유지</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" />로 드래그하여 이미지 검색</translation>
 <translation id="5496587651328244253">정리</translation>
 <translation id="5496730470963166430">팝업 전송 또는 리디렉션 사용이 허용되지 않음</translation>
 <translation id="5497251278400702716">이 파일</translation>
@@ -5748,7 +5741,6 @@
 유출된 비밀번호가 #개 더 있습니다. Google 비밀번호 관리자에서 지금 바로 비밀번호를 확인하시기 바랍니다.}other{유출된 비밀번호를 변경했습니다.
 
 유출된 비밀번호가 #개 더 있습니다. Google 비밀번호 관리자에서 지금 바로 비밀번호를 확인하시기 바랍니다.}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" />로 드래그하여 이미지 검색</translation>
 <translation id="6596325263575161958">암호화 옵션</translation>
 <translation id="6596816719288285829">IP 주소</translation>
 <translation id="6597017209724497268">샘플</translation>
@@ -7370,7 +7362,6 @@
 <translation id="8184318863960255706">추가 정보</translation>
 <translation id="8184472985242519288">균일</translation>
 <translation id="8186609076106987817">서버에서 파일을 찾을 수 없습니다.</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" />로 페이지 일부 검색</translation>
 <translation id="8188389033983459049">계속하려면 기기 설정을 확인하고 사용 설정하세요.</translation>
 <translation id="8188742492803591566">화면 전송을 시작하려면 Chromecast 또는 TV에 표시되는 액세스 코드를 입력하세요.</translation>
 <translation id="8189306097519446565">학교 계정</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index 09ae6b8de..81af25551 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -1425,7 +1425,6 @@
     Voice Match балаңызга кереги жок деп чечсеңиз, аны Жардамчынын жөндөөлөрүнөн өчүрүп койсоңуз болот. Voice Match'ти жөндөөдө балаңыз жаздырган аудио клиптерди угуп же өчүрүү үчүн анын аккаунтунан <ph name="VOICE_MATCH_SETTINGS_URL" /> дарегине өтүңүз.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Барактын бир бөлүгүн <ph name="VISUAL_SEARCH_PROVIDER" /> менен издөө</translation>
 <translation id="2309620859903500144">Бул сайттын кыймыл же жарык сенсорлорун колдонуу мүмкүнчүлүгү бөгөттөлгөн.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Барактын URL'и</translation>
@@ -2049,7 +2048,6 @@
 <translation id="289695669188700754">Ачкычтын далдаштырма коду: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Бул жеке жөндөө бардык Жашыруун терезелер жабылганда өчүрүлөт</translation>
 <translation id="2897878306272793870"><ph name="TAB_COUNT" /> өтмөктү чын эле ачасызбы?</translation>
-<translation id="2900477968385519153">Экраныңызда <ph name="VISUAL_SEARCH_PROVIDER" /> менен издөө</translation>
 <translation id="290105521672621980">Файл колдоого алынбаган функцияларды пайдаланууда</translation>
 <translation id="2901348420151309559">Акыркы сүрөттөр жана колдонмолор</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> бул принтер менен байланыша алган жок. Принтер сайылып турганын тактап, кайталап көрүңүз.</translation>
@@ -2922,7 +2920,6 @@
 <translation id="3778740492972734840">&amp;Иштеп чыгуучунун куралдары</translation>
 <translation id="3778868487658107119">Ага суроолорду, ар кандай буйруктарды берсеңиз болот. Ал сизден жардамын аябаган жеке жардамчыңыз болот.</translation>
 <translation id="3781742599892759500">Linux'ка микрофонду колдонууга уруксат берүү</translation>
-<translation id="378312418865624974">Бул компьютердин бөтөнчө далдаштыргычын окуу</translation>
 <translation id="3784472333786002075">Cookie файлдары вебсайттарда түзүлөт. Алардын эки түрү болот: Жеке cookie файлдарын сиз баш баккан сайт өзү түзөт. Сайт дарек тилкесинде көрүнүп турат. Ал эми үчүнчү тараптардын cookie файлдарын сиз баш баккан сайтка жарнамалар же сүрөттөр сыяктуу материалдарын жайгаштырган башка сайттар түзүшөт.</translation>
 <translation id="3785308913036335955">Колдонмолор кыска жолун көрсөтүү</translation>
 <translation id="3785727820640310185">Бул сайт үчүн сакталган сырсөздөр</translation>
@@ -3575,7 +3572,6 @@
 <translation id="4415748029120993980">SECG эллиптикалык ийри сызыгы secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">Бул мазмун үчүн жеткиликтүү колдонмолор жок</translation>
 <translation id="4416582610654027550">Жарактуу URL'ди териңиз</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> менен издөө үчүн сүрөттөрдү сүйрөө</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> кукилерди ар дайым коё берсин</translation>
 <translation id="4421932782753506458">Телчигип жаткан</translation>
 <translation id="4423376891418188461">Жөндөөлөрдү калыбына келтирүү</translation>
@@ -3714,7 +3710,6 @@
 <translation id="4550926046134589611">Колдоого алынган айрым шилтемелер <ph name="APP_NAME" /> колдонмосунда ачыла берет.</translation>
 <translation id="4551763574344810652">Артка кайтаруу үчүн "<ph name="MODIFIER_KEY_DESCRIPTION" />" баскычтарын басыңыз</translation>
 <translation id="4553526521109675518">Түзмөктүн тилин өзгөртүү үчүн Chromebook түзмөгүңүздү өчүрүп күйгүзүңүз. <ph name="BEGIN_LINK_LEARN_MORE" />Кеңири маалымат<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> менен издөө үчүн сүрөттөрдү сүйрөө</translation>
 <translation id="4554591392113183336">Тышкы кеңейтүү учурдагыга окшош же версиясы эскирээк.</translation>
 <translation id="4555769855065597957">Көлөкө</translation>
 <translation id="4555863373929230635">Сырсөздөрдү Google аккаунтуңузга сактоо үчүн кирип, шайкештирүүнү күйгүзүңүз.</translation>
@@ -4565,7 +4560,6 @@
 <translation id="5427459444770871191">&amp;Сааттын жебеси боюнча айландыруу</translation>
 <translation id="542750953150239272">Улантуу менен түзмөккө Google'дан, байланыш операторуңуздан жана түзмөгүңүздү иштеп чыккандардан жаңыртууларды жана колдонмолорду автоматтык түрдө жүктөп алып орнотушуна уруксат бересиз. Айрым колдонмолор кандайдыр бир кошумча нерселерди сатып алууну сунуштайт.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Жаңыртуу бар)</translation>
-<translation id="5429373054983029602">Экраныңызда <ph name="VISUAL_SEARCH_PROVIDER" /> менен издөө</translation>
 <translation id="542948651837270806">Ишенимдүү Платформа модулунун орнотулган программасынын жаңыртуусун орнотуу керек. <ph name="TPM_FIRMWARE_UPDATE_LINK" /> көрүү</translation>
 <translation id="5430931332414098647">Ыкчам байланыш түйүнү</translation>
 <translation id="5431318178759467895">Түс</translation>
@@ -4638,7 +4632,6 @@
 <translation id="5494920125229734069">Баарын тандоо</translation>
 <translation id="5495466433285976480">Кийинки жолу өчүрүп күйгүзүлгөндө, бардык жергиликтүү колдонуучулар, файлдар, дайындар жана башка жөндөөлөр чыгарылып салынат. Колдонуучулардын баары кайра кириши керек.</translation>
 <translation id="5495597166260341369">Дисплей күйүп турсун</translation>
-<translation id="549580971452855947">Сүрөттөрдү <ph name="VISUAL_SEARCH_PROVIDER" /> менен издөө үчүн сүйрөө</translation>
 <translation id="5496587651328244253">Уюштуруу</translation>
 <translation id="5496730470963166430">Калкыма терезелерди жөнөтүп же багыттоолорду колдоно албайт</translation>
 <translation id="5497251278400702716">Бул файл</translation>
@@ -5749,7 +5742,6 @@
 Дагы # уурдалган сырсөз бар. Сырсөздөрдү башкаргыч бул сырсөздү азыр текшерүүнү сунуштайт.}other{Уурдалган сырсөз ийгиликтүү өзгөртүлдү.
 
 Дагы # уурдалган сырсөз бар. Сырсөздөрдү башкаргыч бул сырсөздөрдү азыр текшерүүнү сунуштайт.}}</translation>
-<translation id="6595792813574514527">Сүрөттөрдү <ph name="VISUAL_SEARCH_PROVIDER" /> менен издөө үчүн сүйрөө</translation>
 <translation id="6596325263575161958">Шифрлөө параметрлери</translation>
 <translation id="6596816719288285829">IP дарек</translation>
 <translation id="6597017209724497268">Үлгүлөр</translation>
@@ -7369,7 +7361,6 @@
 <translation id="8184318863960255706">Көбүрөөк маалымат</translation>
 <translation id="8184472985242519288">Бир ыктай</translation>
 <translation id="8186609076106987817">Сервер файлды тапкан жок.</translation>
-<translation id="8186704951085064172">Барактын бир бөлүгүн <ph name="VISUAL_SEARCH_PROVIDER" /> менен издөө</translation>
 <translation id="8188389033983459049">Түзмөгүңүздүн жөндөөлөрүн текшерип, улантуу үчүн аны күйгүзүңүз</translation>
 <translation id="8188742492803591566">Экранды тышкы экранга чыгарып баштоо үчүн Chromecast'та же сыналгыда көрсөтүлгөн кирүү кодун киргизиңиз.</translation>
 <translation id="8189306097519446565">Мектептин аккаунттары</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb
index 85421ad..87ea599 100644
--- a/chrome/app/resources/generated_resources_lo.xtb
+++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -1424,7 +1424,6 @@
     ຫາກທ່ານຕັດສິນໃຈໃນພາຍຫຼັງວ່າ Voice Match ບໍ່ເໝາະສຳລັບລູກຂອງທ່ານ, ກໍພຽງລຶບມັນອອກໃນການຕັ້ງຄ່າຜູ້ຊ່ວຍຂອງເຂົາເຈົ້າ. ເພື່ອເບິ່ງ ຫຼື ລຶບຄລິບສຽງທີ່ລູກຂອງທ່ານບັນທຶກໃນລະຫວ່າງການຕັ້ງຄ່າ Voice Match, ໃຫ້ເຂົ້າໄປ <ph name="VOICE_MATCH_SETTINGS_URL" /> ຈາກບັນຊີຂອງລູກທ່ານ.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">ຊອກຫາບາງສ່ວນຂອງໜ້າດ້ວຍ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">ເວັບໄຊນີ້ໄດ້ຖືກບລັອກບໍ່ໃຫ້ເຂົ້າເຖິງເຊັນເຊີກວດຈັບການເຄື່ອນໄຫວ ຫຼື ແສງຂອງທ່ານ.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL ຂອງໜ້າ</translation>
@@ -2048,7 +2047,6 @@
 <translation id="289695669188700754">ID ປຸ່ມ: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">ລະບົບຈະລຶບການຕັ້ງຄ່າແບບກຳນົດເອງນີ້ອອກເມື່ອທ່ານປິດໜ້າຈໍທີ່ບໍ່ເປີດເຜີຍຕົວຕົນທັງໝົດຂອງທ່ານ</translation>
 <translation id="2897878306272793870">ທ່ານແນ່ໃຈບໍວ່າ ທ່ານຕ້ອງການເປີດແຖບ <ph name="TAB_COUNT" />?</translation>
-<translation id="2900477968385519153">ຊອກຫາໜ້າຈໍຂອງທ່ານດ້ວຍ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">ໄຟລ໌ໃຊ້ຄຸນສົມບັດທີ່ບໍ່ຮອງຮັບ</translation>
 <translation id="2901348420151309559">ຮູບພາບ ແລະ ແອັບຫຼ້າສຸດ</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ບໍ່​ສາ​ມາດ​ສື່​ສານ​ກັບ​ເຄື່ອງ​ພິມ​ນີ້​. ໃຫ້​ແນ່​ໃຈວ່​າ​​ໄດ້​ສຽບເຄື່ອງພິມແລ້ວ ແລະລອງໃໝ່ອີກຄັ້ງ​.</translation>
@@ -2921,7 +2919,6 @@
 <translation id="3778740492972734840">ເຄື່ອງ​ມື​ຜູ້ພັດ​ທະ​ນາ</translation>
 <translation id="3778868487658107119">ຖາມມັນຄຳຖາມຕ່າງໆ. ບອກມັນເຮັດສິ່ງຕ່າງໆ. ມັນແມ່ນ Google ສ່ວນຕົວຂອງທ່ານ, ພ້ອມຊ່ວຍທ່ານຕະຫຼອດເວລາ.</translation>
 <translation id="3781742599892759500">ສິດເຂົ້າເຖິງໄມໂຄຣໂຟນ Linux</translation>
-<translation id="378312418865624974">ອ່ານຕົວກໍານົດສະເພາະສໍາລັບຄອມພິວເຕີນີ້</translation>
 <translation id="3784472333786002075">ຄຸກກີ້ແມ່ນໄຟລ໌ທີ່ເວັບໄຊສ້າງຂຶ້ນ. ມີຄຸກກີ້ຢູ່ສອງປະເພດຄື: ຄຸກກີ້ພາກສ່ວນທຳອິດຖືກສ້າງຂຶ້ນໂດຍເວັບໄຊທີ່ທ່ານເຂົ້າເບິ່ງ. ເວັບໄຊປາກົດໃນແຖບທີ່ຢູ່. ຄຸກກີ້ພາກສ່ວນທີສາມຖືກສ້າງຂຶ້ນໂດຍເວັບໄຊອື່ນ. ເວັບໄຊເຫຼົ່ານີ້ເປັນເຈົ້າຂອງບາງເນື້ອຫາ ເຊັ່ນ: ໂຄສະນາ ຫຼື ຮູບພາບ ທີ່ທ່ານເຫັນໃນເວັບໄຊທີ່ທ່ານເຂົ້າເບິ່ງ.</translation>
 <translation id="3785308913036335955">ສະ​ແດງ​ທາງລັດແອັບ</translation>
 <translation id="3785727820640310185">ລະຫັດຜ່ານທີ່ບັນທຶກໄວ້ສຳລັບເວັບໄຊນີ້</translation>
@@ -3574,7 +3571,6 @@
 <translation id="4415748029120993980">SECG elliptic curve secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">ບໍ່ມີແອັບທີ່ສາມາດໃຊ້ໄດ້ສຳລັບເນື້ອຫານີ້</translation>
 <translation id="4416582610654027550">ພິມ URL ທີ່ຖືກຕ້ອງ</translation>
-<translation id="4417162649853416189">ລາກຜ່ານຮູບເພື່ອຊອກຫາດ້ວຍ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">ອະນຸຍາດໃຫ້ <ph name="HOST" /> ຕັ້ງຄຸກກີ້ທຸກຄັ້ງ</translation>
 <translation id="4421932782753506458">ຟູ</translation>
 <translation id="4423376891418188461">ກູ້ຄືນການຕັ້ງຄ່າ</translation>
@@ -3714,7 +3710,6 @@
 <translation id="4550926046134589611">ລິ້ງທີ່ຮອງຮັບບາງຢ່າງຈະຍັງຄົງເປີດໃນ <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">ກົດ <ph name="MODIFIER_KEY_DESCRIPTION" /> ເພື່ອຍົກເລີກ</translation>
 <translation id="4553526521109675518">ທ່ານຕ້ອງຣີສະຕາດ Chromebook ຂອງທ່ານເພື່ອປ່ຽນພາສາຂອງອຸປະກອນ. <ph name="BEGIN_LINK_LEARN_MORE" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">ລາກຜ່ານຮູບເພື່ອຊອກຫາດ້ວຍ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">ສ່ວນຂະຫຍາຍທາງນອກເປັນລຸ້ນຄືກັນກັບ ຫຼືຕໍ່າກ່ວາ ເມື່ອປຽບທຽບກັບອັນທີ່ມີຢູ່ແລ້ວ.</translation>
 <translation id="4555769855065597957">ເງົາ</translation>
 <translation id="4555863373929230635">ເພື່ອບັນທຶກລະຫັດຜ່ານໄວ້ໃນບັນຊີ Google ຂອງທ່ານ, ກະລຸນາເຂົ້າສູ່ລະບົບ ແລະ ເປີດການຊິ້ງຂໍ້ມູນ.</translation>
@@ -4564,7 +4559,6 @@
 <translation id="5427459444770871191">ໝຸນຕາມເຂັມໂມງ</translation>
 <translation id="542750953150239272">ໂດຍການສືບຕໍ່, ແມ່ນຖືວ່າທ່ານຍິນຍອມໃຫ້ອຸປະກອນນີ້ສາມາດດາວໂຫຼດ ແລະ ຕິດຕັ້ງອັບເດດ ແລະ ແອັບຈາກ Google, ຜູ້ໃຫ້ບໍລິການຂອງທ່ານ ແລະ ຜູ້ຜະລິດອຸປະກອນຂອງທ່ານໄດ້ໂດຍອັດຕະໂນມັດ, ເຊິ່ງເປັນໄປໄດ້ວ່າຈະໃຊ້ອິນເຕີເນັດມືຖື. ແອັບເຫຼົ່ານີ້ບາງອັນອາດສະເໜີການຊື້ໃນແອັບ.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (ມີອັບເດດໃຫ້ຢູ່)</translation>
-<translation id="5429373054983029602">ຊອກຫາໜ້າຈໍຂອງທ່ານດ້ວຍ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">ຈຳເປັນຕ້ອງຕິດຕັ້ງການອັບເດດສຳລັບເຟີມແວໂມດູນແພລດຟອມທີ່ເຊື່ອຖືໄດ້. ເບິ່ງ <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">ການປ່ອຍສັນຍານທັນທີ</translation>
 <translation id="5431318178759467895">ສີ</translation>
@@ -4637,7 +4631,6 @@
 <translation id="5494920125229734069">ເລືອກ​ທັງ​ຫມົດ</translation>
 <translation id="5495466433285976480">ອັນນີ້ຈະເອົາຜູ້ໃຊ້ພາຍໃນ, ໄຟລ໌, ຂໍ້ມູນ ແລະການຕັ້ງຄ່າອື່ນໆທັງໝົດອອກໄປ ຫຼັງຈາກການປິດເປີດໃໝ່ຄັ້ງຕໍ່ໄປຂອງທ່ານ. ຜູ້ໃຊ້ທຸກຄົນຕ້ອງໄດ້ລົງຊື່ເຂົ້າ​ໃຊ້ອີກ.</translation>
 <translation id="5495597166260341369">ຮັກສາໃຫ້ໜ້າຈໍເປີດຢູ່</translation>
-<translation id="549580971452855947">ລາກເພື່ອຊອກຫາດ້ວຍ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">ຈັດຕັ້ງ</translation>
 <translation id="5496730470963166430">ບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ສົ່ງປັອບອັບ ຫຼື ໃຊ້ການປ່ຽນເສັ້ນທາງ</translation>
 <translation id="5497251278400702716">ໄຟລ໌ນີ້</translation>
@@ -5748,7 +5741,6 @@
 ທ່ານມີລະຫັດຜ່ານທີ່ຖືກລະເມີດອີກ # ລາຍການ. ຕົວຈັດການລະຫັດຜ່ານ Google ແນະນຳໃຫ້ກວດສອບລະຫັດຜ່ານນີ້ດຽວນີ້.}other{ປ່ຽນລະຫັດຜ່ານທີ່ຖືກລະເມີດສຳເລັດແລ້ວ.
 
 ທ່ານມີລະຫັດຜ່ານທີ່ຖືກລະເມີດອີກ # ລາຍການ. ຕົວຈັດການລະຫັດຜ່ານ Google ແນະນຳໃຫ້ກວດສອບລະຫັດຜ່ານເຫຼົ່ານີ້ດຽວນີ້.}}</translation>
-<translation id="6595792813574514527">ລາກເພື່ອຊອກຫາດ້ວຍ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">ທາງເລືອກການໃສ່ລະຫັດ</translation>
 <translation id="6596816719288285829">ທີ່​ຢູ່ IP</translation>
 <translation id="6597017209724497268">ຕົວ​ຢ່າງ</translation>
@@ -7367,7 +7359,6 @@
 <translation id="8184318863960255706">ຂໍ້ມູນເພີ່ມເຕີມ</translation>
 <translation id="8184472985242519288">ແບບດຽວກັນ</translation>
 <translation id="8186609076106987817">ເຊີບເວີບໍ່​ສາ​ມາດ​ຊອກ​ຫາ​ໄຟລ​໌​ໄດ້.</translation>
-<translation id="8186704951085064172">ຊອກຫາບາງສ່ວນຂອງໜ້າດ້ວຍ <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">ກວດເບິ່ງການຕັ້ງຄ່າອຸປະກອນຂອງທ່ານ ແລະ ເປີດມັນເພື່ອສືບຕໍ່</translation>
 <translation id="8188742492803591566">ໃສ່ລະ​ຫັດ​ການ​ເຂົ້າ​ຫາທີ່ສະແດງຢູ່ Chromecast ຫຼື ໂທລະທັດເພື່ອເລີ່ມການສົ່ງສັນຍານໜ້າຈໍຂອງທ່ານ.</translation>
 <translation id="8189306097519446565">ບັນຊີໂຮງຮຽນ</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index 5d1e18d..768b6315 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -203,6 +203,7 @@
 <translation id="1188807932851744811">Žurnalas neįkeltas.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{Suteikta prieiga prie kompiuteryje saugomo failo}one{Suteikta prieiga prie # kompiuteryje saugomo failo}few{Suteikta prieiga prie # kompiuteryje saugomų failų}many{Suteikta prieiga prie # kompiuteryje saugomo failo}other{Suteikta prieiga prie # kompiuteryje saugomų failų}}</translation>
 <translation id="119092896208640858">Norėdami išvalyti naršymo duomenis tik iš šio įrenginio ir palikti juos „Google“ paskyroje, <ph name="BEGIN_LINK" />atsijunkite<ph name="END_LINK" />.</translation>
+<translation id="1191353342579061195">Pasirinkite jūsų poreikius atitinkančią temą. Jei norite pakeisti temą, ekrano foną, ekrano užsklandą ir kt., tiesiog dešiniuoju pelės klavišu spustelėkite darbalaukį.</translation>
 <translation id="1192706927100816598">{0,plural, =1{Būsite automatiškai atjungti po # sekundės.
 <ph name="DOMAIN" /> reikia, kad paliktumėte įdėtą išmaniąją kortelę.}one{Būsite automatiškai atjungti po # sekundės.
 <ph name="DOMAIN" /> reikia, kad paliktumėte įdėtą išmaniąją kortelę.}few{Būsite automatiškai atjungti po # sekundžių.
@@ -1307,6 +1308,7 @@
 <translation id="2220409419896228519">Pridėkite žymių prie mėgstamiausių „Google“ programų</translation>
 <translation id="2220529011494928058">Pranešti apie problemą</translation>
 <translation id="2220572644011485463">PIN kodas arba slaptažodis</translation>
+<translation id="222115440608612541">Perjunkite temas saulei patekėjus ir nusileidus</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">Medijos šaltinis be pavadinimo</translation>
 <translation id="2224444042887712269">Šis nustatymas priklauso <ph name="OWNER_EMAIL" />.</translation>
@@ -1428,7 +1430,6 @@
     Jei vėliau nuspręsite, kad funkcija „Voice Match“ jūsų vaikui netinkama, tiesiog pašalinkite ją iš vaiko Padėjėjo nustatymų. Jei norite peržiūrėti ar ištrinti garso įrašų klipus, kuriuos vaikas įrašė nustatydamas „Voice Match“, apsilankykite adresu <ph name="VOICE_MATCH_SETTINGS_URL" /> iš vaiko paskyros.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Paieška puslapio dalyje naudojant „<ph name="VISUAL_SEARCH_PROVIDER" />“</translation>
 <translation id="2309620859903500144">Ši svetainė užblokuota, kad nebūtų naudojami judesio ar šviesos jutikliai.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Puslapio URL</translation>
@@ -1536,6 +1537,7 @@
 <translation id="241082044617551207">Nežinomas papildinys</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">Klaviatūros funkcijų klavišai</translation>
+<translation id="2418307627282545839">Ryškus ir nuotaikingas režimas</translation>
 <translation id="2419131370336513030">Žr. įdiegtas programas</translation>
 <translation id="2419706071571366386">Saugos sumetimais baigę naudoti kompiuterį atsijunkite.</translation>
 <translation id="2422125132043002186">„Linux“ atkūrimas atšauktas</translation>
@@ -2052,7 +2054,6 @@
 <translation id="289695669188700754">Rakto ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Šis tinkintas nustatymas bus pašalintas, kai uždarysite visus inkognito langus</translation>
 <translation id="2897878306272793870">Ar tikrai norite atidaryti <ph name="TAB_COUNT" /> skirtukus(-ų)?</translation>
-<translation id="2900477968385519153">Paieška ekrane naudojant „<ph name="VISUAL_SEARCH_PROVIDER" />“</translation>
 <translation id="290105521672621980">Faile naudojamos nepalaikomos funkcijos</translation>
 <translation id="2901348420151309559">Naujausios nuotraukos ir programos</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> nepavyko užmegzti ryšio su šiuo spausdintuvu. Įsitikinkite, kad spausdintuvas įjungtas į maitinimo lizdą, ir bandykite dar kartą.</translation>
@@ -2925,7 +2926,6 @@
 <translation id="3778740492972734840">&amp;Kūrėjo įrankiai</translation>
 <translation id="3778868487658107119">Užduokite klausimų. Nurodykite atlikti užduotis. Tai jūsų asmeninė „Google“, kuri visada pasiruošusi padėti.</translation>
 <translation id="3781742599892759500">„Linux“ prieiga prie mikrofono</translation>
-<translation id="378312418865624974">Skaityti unikalų šio kompiuterio identifikatorių</translation>
 <translation id="3784472333786002075">Slapukai yra svetainių sukurti failai. Yra dviejų tipų slapukai: pirmųjų šalių slapukus kuria svetainė, kurioje lankotės. Svetainė rodoma adreso juostoje. Trečiųjų šalių slapukus kuria kitos svetainės. Šioms svetainėms priklauso tam tikras svetainės, kurioje lankotės, rodomas turinys, pvz., skelbimai ar vaizdai.</translation>
 <translation id="3785308913036335955">Rodyti spartųjį programų klavišą</translation>
 <translation id="3785727820640310185">Išsaugoti šios svetainės slaptažodžiai</translation>
@@ -3578,7 +3578,6 @@
 <translation id="4415748029120993980">SECG elipsės formos kreivės secp384r1 (taip pat vadinama NIST P-384)</translation>
 <translation id="4416450511678320850">Nėra jokių pasiekiamų šiam turiniui tinkančių programų</translation>
 <translation id="4416582610654027550">Įveskite tinkamą URL</translation>
-<translation id="4417162649853416189">Paieška velkant vaizdus naudojant „<ph name="VISUAL_SEARCH_PROVIDER" />“</translation>
 <translation id="4419409365248380979">Visada leisti <ph name="HOST" /> nustatyti slapukus</translation>
 <translation id="4421932782753506458">Pūkuotasis</translation>
 <translation id="4423376891418188461">Atkurti nustatymus</translation>
@@ -3717,7 +3716,6 @@
 <translation id="4550926046134589611">Kai kurios palaikomos nuorodos vis tiek bus atidarytos „<ph name="APP_NAME" />“.</translation>
 <translation id="4551763574344810652">Paspauskite „<ph name="MODIFIER_KEY_DESCRIPTION" />“, kad anuliuotumėte</translation>
 <translation id="4553526521109675518">Turite iš naujo paleisti „Chromebook“, kad pakeistumėte įrenginio kalbą. <ph name="BEGIN_LINK_LEARN_MORE" />Sužinokite daugiau<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Paieška velkant vaizdus naudojant „<ph name="VISUAL_SEARCH_PROVIDER" />“</translation>
 <translation id="4554591392113183336">Išorinis plėtinys yra tos pačios arba senesnės versijos, palyginti su esama.</translation>
 <translation id="4555769855065597957">Šešėlis</translation>
 <translation id="4555863373929230635">Kad slaptažodžiai būtų išsaugomi „Google“ paskyroje, prisijunkite ir įjunkite sinchronizavimą.</translation>
@@ -4568,7 +4566,6 @@
 <translation id="5427459444770871191">Sukti pagal &amp;laikrodžio rodyklę</translation>
 <translation id="542750953150239272">Tęsdami sutinkate, kad šis įrenginys taip pat gali automatiškai atsisiųsti ir įdiegti naujinius bei programas iš „Google“, operatoriaus ir šio įrenginio gamintojo (gali būti naudojami mobiliojo ryšio duomenys). Kai kurios programos gali siūlyti įsigyti pirkinių programoje.</translation>
 <translation id="5428850089342283580">„<ph name="ACCNAME_APP" />“ (pasiekiamas naujinys)</translation>
-<translation id="5429373054983029602">Paieška ekrane naudojant „<ph name="VISUAL_SEARCH_PROVIDER" />“</translation>
 <translation id="542948651837270806">Reikia įdiegti patikimo platformos modulio programinės aparatinės įrangos naujinį. Žr. <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Momentinis įrenginio kaip modemo naudojimas</translation>
 <translation id="5431318178759467895">Spalva</translation>
@@ -4641,7 +4638,6 @@
 <translation id="5494920125229734069">Pasirinkti viską</translation>
 <translation id="5495466433285976480">Jei atliksite šį veiksmą, kitą kartą paleidus iš naujo bus pašalinti visi vietiniai naudotojai, failai, duomenys ir kiti nustatymai. Visiems naudotojams reikės dar kartą prisijungti.</translation>
 <translation id="5495597166260341369">Neišjungti ekrano</translation>
-<translation id="549580971452855947">Vaizdų paieška velkant naudojant „<ph name="VISUAL_SEARCH_PROVIDER" />“</translation>
 <translation id="5496587651328244253">Tvarkyti</translation>
 <translation id="5496730470963166430">Neleidžiama siųsti iššokančiųjų langų ar naudoti peradresavimų</translation>
 <translation id="5497251278400702716">Šis failas</translation>
@@ -5759,7 +5755,6 @@
 Turite dar # pažeisto slaptažodžio. „Google“ slaptažodžių tvarkyklė rekomenduoja patikrinti šiuos slaptažodžius dabar.}other{Pažeistas slaptažodis sėkmingai pakeistas.
 
 Turite dar # pažeistų slaptažodžių. „Google“ slaptažodžių tvarkyklė rekomenduoja patikrinti šiuos slaptažodžius dabar.}}</translation>
-<translation id="6595792813574514527">Vaizdų paieška velkant naudojant „<ph name="VISUAL_SEARCH_PROVIDER" />“</translation>
 <translation id="6596325263575161958">Šifravimo parinktys</translation>
 <translation id="6596816719288285829">IP adresas</translation>
 <translation id="6597017209724497268">Duomenų imčių skaičius</translation>
@@ -6060,6 +6055,7 @@
 <translation id="6895032998810961280">Pateikti išsamią informaciją „Google“ apie kenkėjišką programinę įrangą, sistemos nustatymus ir procesus, rastus kompiuteryje vykdant šį valymą</translation>
 <translation id="6896758677409633944">Kopijuoti</translation>
 <translation id="6897363604023044284">Pasirinkite svetaines, kurių duomenis norite išvalyti</translation>
+<translation id="6897688156970667447">Naudinga esant prastam apšvietimui ir taupoma akumuliatoriaus energija</translation>
 <translation id="6898440773573063262">Dabar galima sukonfigūruoti, kad viešojo terminalo programos būtų automatiškai paleidžiamos šiame įrenginyje.</translation>
 <translation id="6900284862687837908">Foninė programa: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">Sustiprinta apsauga</translation>
@@ -7380,7 +7376,6 @@
 <translation id="8184318863960255706">Daugiau informacijos</translation>
 <translation id="8184472985242519288">Vienodas</translation>
 <translation id="8186609076106987817">Serveriui nepavyko rasti failo.</translation>
-<translation id="8186704951085064172">Paieška puslapio dalyje naudojant „<ph name="VISUAL_SEARCH_PROVIDER" />“</translation>
 <translation id="8188389033983459049">Patikrinkite įrenginio nustatymus ir įjunkite jį, kad galėtumėte tęsti</translation>
 <translation id="8188742492803591566">Įveskite prieigos kodą, rodomą „Chromecast“ arba TV, kad pradėtumėte savo ekrano perdavimą.</translation>
 <translation id="8189306097519446565">Mokyklos paskyros</translation>
@@ -7549,6 +7544,7 @@
 <translation id="8358685469073206162">Atkurti puslapius?</translation>
 <translation id="8358912028636606457">Skirtuko garso perdavimas šiame įrenginyje nepalaikomas.</translation>
 <translation id="835951711479681002">Išsaugoti „Google“ paskyroje</translation>
+<translation id="8360140320636871023">Ekrano temos suasmeninimas</translation>
 <translation id="8363095875018065315">stabilus</translation>
 <translation id="8363142353806532503">Mikrofonas užblokuotas</translation>
 <translation id="8366396658833131068">Tinklo ryšys atkurtas. Pasirinkite kitą tinklą arba paspauskite toliau pateiktą mygtuką „Tęsti“, kad paleistumėte viešojo terminalo programą.</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index 8eb3a3f..11ac508 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -1412,7 +1412,6 @@
     Ja vēlāk vairs nevēlēsieties, lai bērns izmanto funkciju Voice Match, varēsiet to vienkārši noņemt no Asistenta iestatījumiem. Lai skatītu vai dzēstu audioklipus, ko bērns ieraksta funkcijas Voice Match iestatīšanas laikā, atveriet vietni <ph name="VOICE_MATCH_SETTINGS_URL" />, izmantojot bērna kontu.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Meklēt lapas daļā, izmantojot <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Šīs vietnes piekļuve kustību vai gaismas sensoriem ir bloķēta.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Lapas URL</translation>
@@ -2036,7 +2035,6 @@
 <translation id="289695669188700754">Atslēgas ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Aizverot visus inkognito režīma logus, šis pielāgotais iestatījums tiks noņemts.</translation>
 <translation id="2897878306272793870">Vai tiešām vēlaties atvērt <ph name="TAB_COUNT" /> cilnes?</translation>
-<translation id="2900477968385519153">Meklēt ekrānā, izmantojot <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Failā tiek izmantotas neatbalstītas funkcijas.</translation>
 <translation id="2901348420151309559">Jaunākie fotoattēli un lietotnes</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> nevarēja sazināties ar šo printeri. Pārbaudiet, vai printeris ir pievienots, un mēģiniet vēlreiz.</translation>
@@ -2909,7 +2907,6 @@
 <translation id="3778740492972734840">Izstrā&amp;dātāja rīki</translation>
 <translation id="3778868487658107119">Uzdodiet tam jautājumus. Lieciet tam veikt darbības. Pakalpojums Google darbojas jūsu labā — vienmēr gatavs palīdzēt.</translation>
 <translation id="3781742599892759500">Linux piekļuve mikrofonam</translation>
-<translation id="378312418865624974">Lasīt unikālu šī datora identifikatoru</translation>
 <translation id="3784472333786002075">Sīkfaili ir faili, ko izveido vietnes. Ir divu veidu sīkfaili. Pirmās puses sīkfailus izveido jūsu apmeklētā vietne. Šī vietne ir redzama adreses joslā. Trešo pušu sīkfailus izveido citas vietnes. Jūsu apmeklētajā vietnē var būt ietverts citu vietņu saturs, piemēram, reklāmas vai attēli.</translation>
 <translation id="3785308913036335955">Rādīt lietotņu saīsnes</translation>
 <translation id="3785727820640310185">Saglabātās paroles šai vietnei</translation>
@@ -3562,7 +3559,6 @@
 <translation id="4415748029120993980">SECG eliptiska līkne secp384r1 (jeb NIST P-384)</translation>
 <translation id="4416450511678320850">Šim saturam nav pieejama neviena lietotne</translation>
 <translation id="4416582610654027550">Ievadiet derīgu URL.</translation>
-<translation id="4417162649853416189">Vilkt kursoru pār attēliem, lai meklēšanai izmantotu <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Vienmēr var <ph name="HOST" /> iestatīt sīkfailus</translation>
 <translation id="4421932782753506458">Minka</translation>
 <translation id="4423376891418188461">Atjaunot iestatījumus</translation>
@@ -3700,7 +3696,6 @@
 <translation id="4550926046134589611">Dažas atbalstītas saites joprojām tiks atvērtas lietotnē <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Lai atsauktu, nospiediet <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4553526521109675518">Lai mainītu ierīces valodu, jums ir jārestartē Chromebook dators. <ph name="BEGIN_LINK_LEARN_MORE" />Uzzināt vairāk<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Vilkt kursoru pār attēliem, lai meklēšanai izmantotu <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Ārējā paplašinājuma versija ir tāda pati vai vecāka nekā pašreizējā paplašinājuma versija.</translation>
 <translation id="4555769855065597957">Ēna</translation>
 <translation id="4555863373929230635">Lai saglabātu paroles savā Google kontā, pierakstieties un ieslēdziet sinhronizāciju.</translation>
@@ -4551,7 +4546,6 @@
 <translation id="5427459444770871191">Pagriezt &amp;pulksteņrādītāju kustības virzienā</translation>
 <translation id="542750953150239272">Turpinot jūs piekrītat, ka šajā ierīcē drīkst arī automātiski lejupielādēt un instalēt atjauninājumus un lietotnes, ko nodrošina Google, jūsu mobilo sakaru operators un ierīces ražotājs. Iespējams, tiks izmantoti mobilie dati. Dažās lietotnēs var tikt piedāvāti pirkumi.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (ir pieejams atjauninājums)</translation>
-<translation id="5429373054983029602">Meklēt ekrānā, izmantojot <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Ir jāinstalē uzticama platformas moduļa aparātprogrammatūras atjauninājums. Skatiet: <ph name="TPM_FIRMWARE_UPDATE_LINK" />.</translation>
 <translation id="5430931332414098647">Tūlītēja piesaiste</translation>
 <translation id="5431318178759467895">Krāsās</translation>
@@ -4624,7 +4618,6 @@
 <translation id="5494920125229734069">Atlasīt visu</translation>
 <translation id="5495466433285976480">Šādi pēc nākamās restartēšanas reizes tiks noņemti visi lokālie lietotāji, faili, dati un citi iestatījumi. Visiem lietotājiem būs atkārtoti jāpierakstās.</translation>
 <translation id="5495597166260341369">Paturēt displeju ieslēgtu</translation>
-<translation id="549580971452855947">Vilkt, lai attēlu meklēšanai izmantotu <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Sakārtot</translation>
 <translation id="5496730470963166430">Nedrīkst rādīt uznirstošos elementus vai veikt novirzīšanu</translation>
 <translation id="5497251278400702716">(šis fails)</translation>
@@ -5736,7 +5729,6 @@
 Jums ir vēl # uzlauzta parole. Google paroļu pārvaldnieks iesaka nekavējoties pārbaudīt šīs paroles.}other{Uzlauztā parole tika sekmīgi nomainīta.
 
 Jums ir vēl # uzlauztas paroles. Google paroļu pārvaldnieks iesaka nekavējoties pārbaudīt šīs paroles.}}</translation>
-<translation id="6595792813574514527">Vilkt, lai attēlu meklēšanai izmantotu <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Šifrēšanas opcijas</translation>
 <translation id="6596816719288285829">IP adrese</translation>
 <translation id="6597017209724497268">Paraugi</translation>
@@ -7356,7 +7348,6 @@
 <translation id="8184318863960255706">Plašāka informācija</translation>
 <translation id="8184472985242519288">Vienota</translation>
 <translation id="8186609076106987817">Serveris nevarēja atrast failu.</translation>
-<translation id="8186704951085064172">Meklēt lapas daļā, izmantojot <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Lai turpinātu, pārbaudiet ierīces iestatījumus un ieslēdziet to.</translation>
 <translation id="8188742492803591566">Lai sāktu ekrāna apraidi, ievadiet piekļuves kodu, kas norādīts Chromecast ierīcē vai televizorā.</translation>
 <translation id="8189306097519446565">Mācību iestāžu konti</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb
index 60c948d..8f4eb36 100644
--- a/chrome/app/resources/generated_resources_mk.xtb
+++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -182,6 +182,7 @@
 <translation id="1166583374608765787">Прегледајте го ажурирањето на името</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> припаѓа на работната површина <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">Ќе се отвори за <ph name="TIME_REMAINING" />...</translation>
+<translation id="1169266963600477608">Контроли за игри</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> содржи чувствителни или опасни податоци. Порака од администраторот: „<ph name="CUSTOM_MESSAGE" />“</translation>
 <translation id="1171135284592304528">Нагласи го предметот со фокус на тастатурата кога се менува</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> сака да се поврзе со HID-уред</translation>
@@ -1426,7 +1427,6 @@
     Ако подоцна одлучите дека Voice Match не е за вашето дете, едноставно отстранете го од поставките за „Помошникот“ на детето. За да ги прегледате или избришете аудиоисечоците коишто вашето дете ги снима при поставувањето на Voice Match, одете на <ph name="VOICE_MATCH_SETTINGS_URL" /> од сметката на детето.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Пребарајте дел од страницата со <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Пристапот на сајтов до сензорите за движење или светлина е блокиран.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL на страницата</translation>
@@ -2050,7 +2050,6 @@
 <translation id="289695669188700754">ИД на клуч: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Оваа приспособена поставка ќе биде отстранета кога ќе ги затворите сите ваши прозорци „Инкогнито“</translation>
 <translation id="2897878306272793870">Дали сте сигурни дека сакате да отворите <ph name="TAB_COUNT" /> картички?</translation>
-<translation id="2900477968385519153">Пребарајте го екранот со <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Датотеката користи неподдржани функции</translation>
 <translation id="2901348420151309559">Неодамнешни фотографии и апликации</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> не може да комуницира со печатачов. Погрижете се печатачот да е приклучен и обидете се повторно.</translation>
@@ -2923,7 +2922,6 @@
 <translation id="3778740492972734840">&amp;Програмерски алатки</translation>
 <translation id="3778868487658107119">Поставувајте му прашања. Кажувајте му што да направи. Тој е вашиот личен Google, секогаш подготвен да помогне.</translation>
 <translation id="3781742599892759500">Пристап до микрофонот на Linux</translation>
-<translation id="378312418865624974">Прочитајте го уникатниот идентификатор за овој компјутер</translation>
 <translation id="3784472333786002075">Колачињата се датотеки што ги создаваат веб-сајтовите. Има два типа колачиња: првиот тип колачиња ги создава сајтот што го посетувате. Сајтот се прикажува во лентата за адреси. Вториот тип колачиња ги создаваат други сајтови. Овие сајтови се сопственици на дел од содржините, како рекламите или сликите што ги гледате на веб-сајтот што го посетувате.</translation>
 <translation id="3785308913036335955">Покажи кратенка за Апликации</translation>
 <translation id="3785727820640310185">Зачувани лозинки за сајтов</translation>
@@ -3382,6 +3380,7 @@
 <translation id="4227605727325220318">Додајте нов телефон со Android</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Екстензијава не е дозволена}one{Некои екстензии не се дозволени}other{Некои екстензии не се дозволени}}</translation>
 <translation id="4231095370974836764">Инсталирајте апликации и игри од Google Play на вашиот <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Дознајте повеќе<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Затвори ги контролите за игри</translation>
 <translation id="4232375817808480934">Конфигурирајте го Kerberos</translation>
 <translation id="4235965441080806197">Откажи најавување</translation>
 <translation id="4236163961381003811">Откријте други екстензии</translation>
@@ -3576,7 +3575,6 @@
 <translation id="4415748029120993980">SECG елиптична крива secp384r1 (наречена NIST P-384)</translation>
 <translation id="4416450511678320850">Нема достапни апликации за содржиниве</translation>
 <translation id="4416582610654027550">Внесете валидна URL</translation>
-<translation id="4417162649853416189">Повлечете преку сликите за да пребарате со <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Секогаш дозволи <ph name="HOST" /> да поставува колачиња</translation>
 <translation id="4421932782753506458">Fluffy</translation>
 <translation id="4423376891418188461">Обнови поставки</translation>
@@ -3716,7 +3714,6 @@
 <translation id="4550926046134589611">Некои поддржани линкови сѐ уште ќе се отвораат во <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Притиснете <ph name="MODIFIER_KEY_DESCRIPTION" /> за да се врати</translation>
 <translation id="4553526521109675518">Треба да го рестартирате вашиот Chromebook за да го промените јазикот на уредот. <ph name="BEGIN_LINK_LEARN_MORE" />Дознајте повеќе<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Повлечете преку сликите за да пребарате со <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Надворешната наставка е иста или пониска верзија споредена со постоечката.</translation>
 <translation id="4555769855065597957">Сенка</translation>
 <translation id="4555863373929230635">За да се зачувуваат лозинки во сметката на Google, најавете се и вклучете синхронизација.</translation>
@@ -4567,7 +4564,6 @@
 <translation id="5427459444770871191">Ротирај &amp;надесно</translation>
 <translation id="542750953150239272">Ако продолжите, се согласувате дека уредов може и автоматски да презема и инсталира ажурирања и апликации од Google, од вашиот оператор и од производителот на уредот, веројатно со користење мобилен интернет. Некои од овие апликации може да нудат купувања во апликациите.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Достапно е ажурирање)</translation>
-<translation id="5429373054983029602">Пребарајте го екранот со <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Треба да се инсталира ажурирање за фирмверот на Trusted Platform Module. Видете <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Инстант врзување</translation>
 <translation id="5431318178759467895">Боја</translation>
@@ -4640,7 +4636,6 @@
 <translation id="5494920125229734069">Избери сè</translation>
 <translation id="5495466433285976480">Ова ќе ги отстрани сите локални корисници, датотеки, податоци и други поставки по вашето следно рестартирање. Сите корисници ќе треба да се пријават повторно.</translation>
 <translation id="5495597166260341369">Држи го екранот вклучен</translation>
-<translation id="549580971452855947">Повлечете за да пребарате слики со <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Организирај</translation>
 <translation id="5496730470963166430">Не им е дозволено да испраќаат скокачки програми, ниту да користат пренасочувања</translation>
 <translation id="5497251278400702716">Оваа датотека</translation>
@@ -5753,7 +5748,6 @@
 Имате уште # компромитирана лозинка. „Управникот со лозинки на Google“ препорачува веднаш да ги проверите лозинкиве.}other{Успешно ја променивте компромитираната лозинка.
 
 Имате уште # компромитирани лозинки. „Управникот со лозинки на Google“ препорачува веднаш да ги проверите лозинкиве.}}</translation>
-<translation id="6595792813574514527">Повлечете за да пребарате слики со <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Опции за шифрирање</translation>
 <translation id="6596816719288285829">IP-адреса</translation>
 <translation id="6597017209724497268">Примероци</translation>
@@ -7373,7 +7367,6 @@
 <translation id="8184318863960255706">Повеќе информации</translation>
 <translation id="8184472985242519288">Унифициран</translation>
 <translation id="8186609076106987817">Серверот не може да ја најде датотеката.</translation>
-<translation id="8186704951085064172">Пребарајте дел од страницата со <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Проверете ги поставките на уредот и вклучете го за да продолжите</translation>
 <translation id="8188742492803591566">Внесете го кодот за пристап прикажан на Chromecast или на телевизорот за да започнете со емитување на екранот.</translation>
 <translation id="8189306097519446565">Училишни сметки</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index a8aeb22..e2a520e6 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -182,6 +182,7 @@
 <translation id="1166583374608765787">പേര് അപ്‌ഡേറ്റ് ചെയ്തത് അവലോകനം ചെയ്യുക</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" />, <ph name="DESK_TITLE" /> എന്ന ഡെസ്കിൽ ഉൾപ്പെടുന്നു</translation>
 <translation id="1168020859489941584"><ph name="TIME_REMAINING" /> ല്‍ തുറക്കുന്നു...</translation>
+<translation id="1169266963600477608">ഗെയിം നിയന്ത്രണങ്ങൾ</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> എന്നതിൽ സൂക്ഷ്‌മമായി കൈകാര്യം ചെയ്യേണ്ടതോ അപകടകരമായതോ ആയ ഡാറ്റയുണ്ട്. നിങ്ങളുടെ അഡ്‌മിൻ പറയുന്നു: "<ph name="CUSTOM_MESSAGE" />"</translation>
 <translation id="1171135284592304528">ഒബ്‌ജക്‌റ്റ് മാറുമ്പോൾ അതിനെ കീബോർഡ് ഫോക്കസ് ഉപയോഗിച്ച് ഹൈലൈറ്റ് ചെയ്യുക</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> ഒരു HID ഉപകരണത്തിലേക്ക് കണക്‌റ്റ് ചെയ്യാൻ താൽപ്പര്യപ്പെടുന്നു</translation>
@@ -203,6 +204,7 @@
 <translation id="1188807932851744811">ലോഗ് അപ്‌ലോഡ് ചെയ്‌തില്ല.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ സംഭരിച്ചിരിക്കുന്ന ഒരു ഫയൽ ആക്‌സസ് ചെയ്യുക}other{നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ സംഭരിച്ചിരിക്കുന്ന # ഫയലുകൾ ആക്‌സസ് ചെയ്യുക}}</translation>
 <translation id="119092896208640858">ബ്രൗസിംഗ് ഡാറ്റ നിങ്ങളുടെ Google അക്കൗണ്ടിൽ നിലനിർത്തുമ്പോൾ തന്നെ, ഈ ഉപകരണത്തിൽ നിന്ന് മാത്രം അവ മായ്ക്കാനായി, <ph name="BEGIN_LINK" />സൈൻ ഔട്ട്<ph name="END_LINK" /> ചെയ്യുക.</translation>
+<translation id="1191353342579061195">നിങ്ങളുടെ ആവശ്യങ്ങൾക്ക് അനുയോജ്യമായ തീം തിരഞ്ഞെടുക്കുക. നിങ്ങളുടെ തീമും വാൾപേപ്പറും സ്ക്രീൻ സേവറും മറ്റും മാറ്റാൻ ഡെസ്‌ക്ടോപ്പിൽ വലത്-ക്ലിക്ക് ചെയ്യൂ.</translation>
 <translation id="1192706927100816598">{0,plural, =1{# സെക്കൻഡിൽ നിങ്ങൾ സ്വയമേവ സൈൻ ഔട്ട് ആകും.
 <ph name="DOMAIN" />-ൽ തുടരുന്നതിന് നിങ്ങളുടെ സ്‌മാർട്ട് കാർഡ് ഇൻസേർട്ട് ചെയ്ത നിലയിൽ തുടരേണ്ടതുണ്ട്.}other{# സെക്കൻഡിൽ നിങ്ങൾ സ്വയമേവ സൈൻ ഔട്ട് ആകും.
 <ph name="DOMAIN" />-ൽ തുടരുന്നതിന് നിങ്ങളുടെ സ്‌മാർട്ട് കാർഡ് ഇൻസേർട്ട് ചെയ്ത നിലയിൽ തുടരേണ്ടതുണ്ട്.}}</translation>
@@ -1291,6 +1293,7 @@
 <translation id="2220409419896228519">പ്രിയപ്പെട്ട Google ആപ്പുകളിലേക്ക് ബുക്ക്‌മാർക്കുകൾ ചേർക്കുക</translation>
 <translation id="2220529011494928058">ഒരു പ്രശ്‌നം റിപ്പോർട്ട് ചെയ്യുക</translation>
 <translation id="2220572644011485463">പിൻ അല്ലെങ്കിൽ പാസ്‌വേഡ്</translation>
+<translation id="222115440608612541">സൂര്യോദയത്തിലും സൂര്യാസ്തമയത്തിലും തീമുകൾ മാറ്റുന്നു</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">പേരില്ലാത്ത മീഡിയ ഉറവിടം</translation>
 <translation id="2224444042887712269">ഈ ക്രമീകരണം <ph name="OWNER_EMAIL" />-ന്റേതാണ്.</translation>
@@ -1409,7 +1412,6 @@
     Voice Match നിങ്ങളുടെ കുട്ടിക്ക് പറ്റിയതല്ലെന്ന് പിന്നീട് തോന്നുകയാണെങ്കിൽ അവരുടെ Assistant ക്രമീകരണത്തിൽ നിന്ന് അത് നീക്കം ചെയ്യാവുന്നതാണ്. Voice Match സജ്ജീകരിക്കുമ്പോൾ നിങ്ങളുടെ കുട്ടി റെക്കോർഡ് ചെയ്യുന്ന ഓഡിയോ ക്ലിപ്പുകൾ കാണാനോ ഇല്ലാതാക്കാനോ കുട്ടിയുടെ അക്കൗണ്ടിൽ നിന്ന് <ph name="VOICE_MATCH_SETTINGS_URL" /> സന്ദർശിക്കുക.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> ഉപയോഗിച്ച് പേജിന്റെ ഭാഗം തിരയുക</translation>
 <translation id="2309620859903500144">നിങ്ങളുടെ ചലന സെൻസർ അല്ലെങ്കിൽ പ്രകാശ സെൻസർ ആക്‌സസ് ചെയ്യുന്നതിൽ നിന്ന് ഈ സൈറ്റിനെ ബ്ലോക്ക് ചെയ്‌തിരിക്കുന്നു.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">പേജ് URL</translation>
@@ -1517,6 +1519,7 @@
 <translation id="241082044617551207">അജ്ഞാത പ്ലഗ് ഇൻ</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">കീബോർഡ് ഫംഗ്ഷൻ കീകൾ</translation>
+<translation id="2418307627282545839">തെളിച്ചവും വ്യക്തതയും നിലനിർത്തുന്നു</translation>
 <translation id="2419131370336513030">ഇൻസ്റ്റാൾ ചെയ്ത ആപ്പുകൾ കാണുക</translation>
 <translation id="2419706071571366386">സുരക്ഷയ്ക്കായി, നിങ്ങളുടെ കമ്പ്യൂട്ടർ ഉപയോഗിക്കാത്തപ്പോൾ സൈൻ ഔട്ട് ചെയ്യുക.</translation>
 <translation id="2422125132043002186">Linux പുനഃസ്ഥാപിക്കൽ റദ്ദാക്കി</translation>
@@ -2033,7 +2036,6 @@
 <translation id="289695669188700754">കീ ഐഡി: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">നിങ്ങളുടെ എല്ലാ അദൃശ്യ വിൻഡോകളും അടയ്‌ക്കുമ്പോൾ, ഈ ഇഷ്‌ടാനുസൃത ക്രമീകരണം നീക്കം ചെയ്യും</translation>
 <translation id="2897878306272793870">നിങ്ങള്‍ <ph name="TAB_COUNT" /> ടാബുകള്‍ തുറക്കാന്‍ പോവുകയാണെന്ന് ഉറപ്പുണ്ടോ?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> ഉപയോഗിച്ച് നിങ്ങളുടെ സ്ക്രീൻ തിരയുക</translation>
 <translation id="290105521672621980">ഉപയോഗിക്കാനാവാത്ത ഫീച്ചറുകളാണ് ഫയൽ ഉപയോഗിക്കുന്നത്</translation>
 <translation id="2901348420151309559">പുതിയ ഫോട്ടോകളും ആപ്പുകളും</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> എന്നതിന് ഈ പ്രിന്ററുമായി ആശയവിനിമയം നടത്താനായില്ല. പ്രിന്റർ പ്ലഗിൻ ചെയ്‌തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കി വീണ്ടും ശ്രമിക്കുക.</translation>
@@ -2906,7 +2908,6 @@
 <translation id="3778740492972734840">&amp;ഡെവലപ്പര്‍ ഉപകരണങ്ങള്‍‌</translation>
 <translation id="3778868487658107119">അതിനോട് ചോദ്യങ്ങൾ ചോദിക്കുക. ആവശ്യമുള്ള കാര്യങ്ങൾ ചെയ്യാൻ പറയുക. ഇത് എപ്പോഴും സഹായിക്കാൻ സന്നദ്ധമായ, നിങ്ങളുടെ വ്യക്തിഗത Google ആണ്.</translation>
 <translation id="3781742599892759500">Linux-നുള്ള മൈക്രോഫോൺ ആക്സസ്</translation>
-<translation id="378312418865624974">ഈ കമ്പ്യൂട്ടറിന് ഒരു സവിശേഷ ഐഡന്റിഫയർ വായിക്കുക</translation>
 <translation id="3784472333786002075">വെബ്‌സൈറ്റുകൾ സൃഷ്ടിക്കുന്ന ഫയലുകളാണ് കുക്കികൾ. രണ്ട് തരത്തിലുള്ള കുക്കികളുണ്ട്: ആദ്യ കക്ഷി കുക്കികളെ സൃഷ്ടിക്കുന്നത് നിങ്ങൾ സന്ദർശിക്കുന്ന സൈറ്റാണ്. വിലാസ ബാറിൽ സൈറ്റ് കാണാം. മൂന്നാം കക്ഷി കുക്കികളെ സൃഷ്ടിക്കുന്നത് മറ്റ് സൈറ്റുകളാണ്. നിങ്ങൾ സന്ദർശിക്കുന്ന വെബ്സൈറ്റിൽ കാണുന്ന പരസ്യങ്ങളോ ചിത്രങ്ങളോ പോലുള്ള ചില ഉള്ളടക്കം ഈ സൈറ്റുകളുടെ ഉടമസ്ഥതയിലാണ്.</translation>
 <translation id="3785308913036335955">ആപ്പുകളുടെ കുറുക്കുവഴി കാണിക്കുക</translation>
 <translation id="3785727820640310185">ഈ സൈറ്റിനായി സംരക്ഷിച്ച പാസ്‌വേഡുകൾ</translation>
@@ -3364,6 +3365,7 @@
 <translation id="4227605727325220318">പുതിയ Android ഫോൺ ചേർക്കുക</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{ഈ വിപുലീകരണം അനുവദനീയമല്ല}other{ചില വിപുലീകരണങ്ങൾ അനുവദനീയമല്ല}}</translation>
 <translation id="4231095370974836764">Google Play-യിൽ നിന്ന് നിങ്ങളുടെ <ph name="DEVICE_TYPE" />-ൽ ആപ്പുകളും ഗെയിമുകളും ഇൻസ്‌റ്റാൾ ചെയ്യുക. <ph name="LINK_BEGIN" />കൂടുതലറിയുക<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">ഗെയിം നിയന്ത്രണങ്ങൾ അടയ്ക്കുക</translation>
 <translation id="4232375817808480934">Kerberos കോൺഫിഗർ ചെയ്യുക</translation>
 <translation id="4235965441080806197">സൈൻ ഇൻ റദ്ദാക്കുക</translation>
 <translation id="4236163961381003811">കൂടുതൽ വിപുലീകരണങ്ങൾ കണ്ടെത്തുക</translation>
@@ -3558,7 +3560,6 @@
 <translation id="4415748029120993980">SECG എലി‌പ്‌റ്റിക്‌ കർവ്‌ secp384r1 (NIST P-384 എന്നും അറിയപ്പെടുന്നു)</translation>
 <translation id="4416450511678320850">ഈ ഉള്ളടക്കത്തിന് ആപ്പുകളൊന്നും ലഭ്യമല്ല</translation>
 <translation id="4416582610654027550">സാധുതയുള്ള URL ടൈപ്പ് ചെയ്യുക</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> ഉപയോഗിച്ച് തിരയാൻ ചിത്രങ്ങൾ വലിച്ചിടുക</translation>
 <translation id="4419409365248380979">കുക്കികളെ സജ്ജീകരിക്കാന്‍ <ph name="HOST" />-നെ എപ്പോഴും അനുവദിക്കുക</translation>
 <translation id="4421932782753506458">ഫ്ലഫി</translation>
 <translation id="4423376891418188461">ക്രമീകരണം പുനഃസ്ഥാപിക്കുക</translation>
@@ -3629,6 +3630,7 @@
 <translation id="449232563137139956">ഓൺലൈൻ സ്‌റ്റോറുകൾക്കോ വാർത്താ ലേഖനകൾക്കോ ചിത്രങ്ങൾ നൽകുന്നത് പോലുള്ള ചിത്രീകരണത്തിനായി സൈറ്റുകൾ സാധാരണയായി ചിത്രങ്ങൾ കാണിക്കുന്നു</translation>
 <translation id="4492698018379445570">നിങ്ങൾ ഷോപ്പിംഗ് കാർട്ടുകളിലേക്ക് ചേർത്തിരിക്കുന്നത് എന്താണെന്ന് കണ്ടെത്തി നിങ്ങൾ തയ്യാറാകുമ്പോൾ ചെക്ക് ഔട്ട് ചെയ്യുക</translation>
 <translation id="4493468155686877504">(<ph name="INSTALL_SIZE" />) ശുപാർശ ചെയ്യുന്നു</translation>
+<translation id="4495002167047709180"><ph name="SITE" /> എന്നതിൽ ഈ വിപുലീകരണം അനുവദിക്കണോ?</translation>
 <translation id="4495419450179050807">ഈ പേജില്‍ കാണിക്കരുത്</translation>
 <translation id="4497145443434063861">വ്യത്യസ്‌ത Wi-Fi നെറ്റ്‌വർക്കുകളിലെ (ഉദാ. 2.4GHz, 5GHz എന്നിവ തമ്മിൽ) PC, Chromecast എന്നിവ</translation>
 <translation id="4500114933761911433"><ph name="PLUGIN_NAME" /> ക്രാഷ് ചെയ്തിരിക്കുന്നു</translation>
@@ -3696,7 +3698,6 @@
 <translation id="4550926046134589611"><ph name="APP_NAME" /> ആപ്പിൽ ചില പിന്തുണാ ലിങ്കുകൾ തുടർന്നും തുറക്കാനാകും.</translation>
 <translation id="4551763574344810652">പഴയപടിയാക്കാൻ <ph name="MODIFIER_KEY_DESCRIPTION" /> അമർത്തുക</translation>
 <translation id="4553526521109675518">ഉപകരണത്തിന്റെ ഭാഷ മാറ്റാൻ, Chromebook റീസ്‌റ്റാർട്ട് ചെയ്യേണ്ടതുണ്ട്. <ph name="BEGIN_LINK_LEARN_MORE" />കൂടുതലറിയുക<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> ഉപയോഗിച്ച് തിരയാൻ ചിത്രങ്ങൾ വലിച്ചിടുക</translation>
 <translation id="4554591392113183336">നിലവിലുള്ള ഒന്നുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ, ബാഹ്യ വിപുലീകരണത്തിന്റെ പതിപ്പ് സമാനമായതോ അതിന് മുമ്പുള്ളതോ ആണ്.</translation>
 <translation id="4555769855065597957">ഷാഡോ</translation>
 <translation id="4555863373929230635">നിങ്ങളുടെ Google അക്കൗണ്ടിലേക്ക് പാസ്‍വേഡുകൾ സംരക്ഷിക്കാൻ, സൈൻ ഇൻ ചെയ്‌ത് സമന്വയിപ്പിക്കൽ ഓണാക്കുക.</translation>
@@ -4547,7 +4548,6 @@
 <translation id="5427459444770871191">&amp;ഘടികാരദിശയില്‍‌ തിരിക്കുക</translation>
 <translation id="542750953150239272">തുടരുന്നതിലൂടെ, ഈ ഉപകരണം Google-ൽ നിന്നും നിങ്ങളുടെ കാരിയറിൽ നിന്നും ഉപകരണ നിർമ്മാതാവിൽ നിന്നും, ഒരുപക്ഷേ സെല്ലുലാർ ഡാറ്റ ഉപയോഗിച്ച്, അപ്ഡേറ്റുകളും ആപ്പുകളും സ്വയമേവ ഡൗൺലോഡും ഇൻസ്റ്റാളും ചെയ്തേക്കാമെന്നും നിങ്ങൾ അംഗീകരിക്കുന്നു. ഈ ആപ്പുകളിൽ ചിലത് ആപ്പ് വഴി വാങ്ങാനുള്ള സൗകര്യം നൽകിയേക്കാം.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (അപ്‌ഡേറ്റ് ലഭ്യമാണ്)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> ഉപയോഗിച്ച് നിങ്ങളുടെ സ്ക്രീൻ തിരയുക</translation>
 <translation id="542948651837270806">പരിചിത പ്ലാറ്റ്‌ഫോം മൊഡ്യൂൾ ഫേംവെയറിനുള്ള അപ്‌ഡേറ്റ് ഇൻസ്‌റ്റാൾ ചെയ്യേണ്ടതുണ്ട്. <ph name="TPM_FIRMWARE_UPDATE_LINK" /> കാണുക</translation>
 <translation id="5430931332414098647">തൽക്ഷണ ടെതറിംഗ്</translation>
 <translation id="5431318178759467895">വര്‍ണ്ണം</translation>
@@ -4620,7 +4620,6 @@
 <translation id="5494920125229734069">എല്ലാം തിരഞ്ഞെടുക്കുക</translation>
 <translation id="5495466433285976480">നിങ്ങളുടെ അടുത്ത പുനരാരംഭത്തിനുശേഷം, നിങ്ങളുടെ പ്രാദേശിക ഉപയോക്താക്കൾ, ഫയലുകൾ, ഡാറ്റ, മറ്റ് ക്രമീകരണങ്ങൾ എന്നിവയെല്ലാം ഇത് നീക്കംചെയ്യും. എല്ലാ ഉപയോക്താക്കളും വീണ്ടും സൈൻ ഇൻ ചെയ്യേണ്ടിവരും.</translation>
 <translation id="5495597166260341369">ഡിസ്പ്ലേ ഓണാക്കി നിലനിർത്തുക</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> ഉപയോഗിച്ച് ചിത്രങ്ങൾ തിരയാൻ വലിച്ചിടുക</translation>
 <translation id="5496587651328244253">ഓര്‍ഗനൈസുചെയ്യുക</translation>
 <translation id="5496730470963166430">പോപ്പ് അപ്പ് അയയ്‌ക്കാനോ റീഡയറക്‌റ്റുകൾ ഉപയോഗിക്കാനോ അനുവാദമില്ല</translation>
 <translation id="5497251278400702716">ഈ ഫയൽ</translation>
@@ -5733,7 +5732,6 @@
 അപഹരിക്കപ്പെട്ട # പാസ്‌വേഡ് കൂടി നിങ്ങൾക്കുണ്ട്. ഈ പാസ്‌വേഡ് ഇപ്പോൾ തന്നെ പരിശോധിക്കാൻ Google Password Manager നിർദ്ദേശിക്കുന്നു.}other{അപഹരിക്കപ്പെട്ട പാസ്‌വേഡ് മാറ്റി.
 
 അപഹരിക്കപ്പെട്ട # പാസ്‌വേഡുകൾ കൂടി നിങ്ങൾക്കുണ്ട്. ഈ പാസ്‌വേഡുകൾ ഇപ്പോൾ തന്നെ പരിശോധിക്കാൻ Google Password Manager നിർദ്ദേശിക്കുന്നു.}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> ഉപയോഗിച്ച് ചിത്രങ്ങൾ തിരയാൻ വലിച്ചിടുക</translation>
 <translation id="6596325263575161958">എൻക്രിപ്‌ഷൻ ഓപ്‌ഷനുകൾ</translation>
 <translation id="6596816719288285829">IP വിലാസം</translation>
 <translation id="6597017209724497268">സാമ്പിളുകൾ</translation>
@@ -6034,6 +6032,7 @@
 <translation id="6895032998810961280">ഈ ക്ലീൻഅപ്പ് സമയത്ത് നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ കണ്ടെത്തിയ ദോഷകരമായ സോഫ്‌റ്റ്‌വെയർ, സിസ്‌റ്റം ക്രമീകരണം, പ്രോസസുകൾ എന്നിവയെ കുറിച്ചുള്ള വിശദാംശങ്ങൾ Google-ന് റിപ്പോർട്ട് ചെയ്യുക</translation>
 <translation id="6896758677409633944">പകര്‍ത്തുക</translation>
 <translation id="6897363604023044284">ഡാറ്റ മായ്ക്കാൻ സൈറ്റുകൾ തിരഞ്ഞെടുക്കുക</translation>
+<translation id="6897688156970667447">വെളിച്ചം കുറവായിരിക്കുമ്പോൾ സഹായകരം, ബാറ്ററി ലാഭിക്കുന്നു</translation>
 <translation id="6898440773573063262">ഈ ഉപകരണത്തിൽ സ്വയമേവ ലോഞ്ച് ചെയ്യാൻ കിയോസ്‌ക് ആപ്പുകൾ ഇപ്പോൾ കോൺഫിഗർ ചെയ്യാനാകും.</translation>
 <translation id="6900284862687837908">പശ്ചാത്തല ആപ്പ്: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">മെച്ചപ്പെടുത്തിയ പരിരക്ഷ</translation>
@@ -7353,7 +7352,6 @@
 <translation id="8184318863960255706">കൂടുതൽ‍ വിവരങ്ങള്‍</translation>
 <translation id="8184472985242519288">ഏകരൂപം</translation>
 <translation id="8186609076106987817">സെർവറിന് ഫയൽ കണ്ടെത്താൻ കഴിഞ്ഞില്ല.</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> ഉപയോഗിച്ച് പേജിന്റെ ഭാഗം തിരയുക</translation>
 <translation id="8188389033983459049">നിങ്ങളുടെ ഉപകരണ ക്രമീകരണം പരിശോധിച്ച്, തുടരാനായി അത് ഓണാക്കുക</translation>
 <translation id="8188742492803591566">നിങ്ങളുടെ സ്ക്രീൻ കാസ്റ്റ് ചെയ്തുതുടങ്ങാൻ, Chromecast-ലോ ടിവിയിലോ കാണിച്ചിരിക്കുന്ന ആക്‌സസ് കോഡ് നൽകുക.</translation>
 <translation id="8189306097519446565">സ്കൂൾ അക്കൗണ്ടുകൾ</translation>
@@ -7522,6 +7520,7 @@
 <translation id="8358685469073206162">പേജുകൾ പുനഃസ്ഥാപിക്കണോ?</translation>
 <translation id="8358912028636606457">ഈ ഉപകരണത്തിൽ ടാബ് ഓഡിയോ കാസ്‌റ്റ് ചെയ്യാനാവില്ല.</translation>
 <translation id="835951711479681002">നിങ്ങളുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിക്കുക</translation>
+<translation id="8360140320636871023">നിങ്ങളുടെ ഡിസ്പ്ലേ തീം വ്യക്തിപരമാക്കുക</translation>
 <translation id="8363095875018065315">സുസ്ഥിരം</translation>
 <translation id="8363142353806532503">മൈക്രോഫോൺ ബ്ലോക്ക് ചെയ്‌‌തു</translation>
 <translation id="8366396658833131068">നിങ്ങളുടെ നെറ്റ്‌വർക്ക് കണക്റ്റിവിറ്റി പുനഃസ്‌ഥാപിച്ചു. നിങ്ങളുടെ കിയോസ്‌ക് ആപ്പ് സമാരംഭിക്കാൻ മറ്റൊരു നെറ്റ്‌വർക്ക് തിരഞ്ഞെടുക്കുകയോ ചുവടെയുള്ള 'തുടരുക' ബട്ടൺ അമർത്തുകയോ ചെയ്യുക.</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index bd192a6..b9967e5 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -182,6 +182,7 @@
 <translation id="1166583374608765787">Нэрийн шинэчлэлтийг шалгах</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> нь <ph name="DESK_TITLE" />-н дэлгэцэд харьяалагдана</translation>
 <translation id="1168020859489941584"><ph name="TIME_REMAINING" /> дотор нээж байна ...</translation>
+<translation id="1169266963600477608">Тоглоомын тохиргоо</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> эмзэг эсвэл аюултай өгөгдөлтэй байна. Таны администратор "<ph name="CUSTOM_MESSAGE" />" гэж хэлж байна</translation>
 <translation id="1171135284592304528">Объектыг өөрчлөгдөх явцад гарын фокусаар тодруулна уу</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> HID төхөөрөмжид холбогдох хүсэлтэй байна</translation>
@@ -203,6 +204,7 @@
 <translation id="1188807932851744811">Протоколыг ачааллаагүй.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{Компьютер дээрээ хадгалагдсан файл руу нэвтрэх}other{Компьютер дээрээ хадгалагдсан # файл руу нэвтрэх}}</translation>
 <translation id="119092896208640858">Хөтчийн өгөгдлийг зөвхөн энэ төхөөрөмжөөс устгаж, Google Бүртгэлдээ хэвээр үлдээхийн тулд <ph name="BEGIN_LINK" />гарна уу<ph name="END_LINK" />.</translation>
+<translation id="1191353342579061195">Таны хэрэгцээнд тохирсон загварыг сонгоно уу. Загвар, дэлгэцийн зураг, дэлгэц амраагч болон бусад зүйлээ өөрчлөхийн тулд ердөө дэлгэц дээр баруун талыг товшино уу.</translation>
 <translation id="1192706927100816598">{0,plural, =1{Та # секундийн дараа автоматаар гарна.
 <ph name="DOMAIN" /> таныг ухаалаг картаа оруулсан хэвээр байхыг шаардана.}other{Та # секундийн дараа автоматаар гарна.
 <ph name="DOMAIN" /> таныг ухаалаг картаа оруулсан хэвээр байхыг шаардана.}}</translation>
@@ -1300,6 +1302,7 @@
 <translation id="2220409419896228519">Дуртай Google Аппууддаа хавчуурга нэмэх</translation>
 <translation id="2220529011494928058">Асуудлыг мэдэгдэх</translation>
 <translation id="2220572644011485463">ПИН, эсвэл нууц үг</translation>
+<translation id="222115440608612541">Нар мандах болон нар жаргах үед загваруудыг сэлгээрэй</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">Нэргүй медиа эх сурвалж</translation>
 <translation id="2224444042887712269">Энэ тохиргоо нь <ph name="OWNER_EMAIL" />-д хамаатай.</translation>
@@ -1421,7 +1424,6 @@
     Хэрэв та хожим нь Voice Match-г таны хүүхдэд тохирохгүй гэж шийдвэл үүнийг ердөө хүүхдийнхээ Туслахын Тохиргоо хэсэгт хасна уу. Voice Match-н тохируулгын үеэр хүүхдийнхээ бичсэн аудио клипийг харах эсвэл устгахын тулд хүүхдийнхээ бүртгэлээс <ph name="VOICE_MATCH_SETTINGS_URL" /> руу очно уу.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" />-р хуудасны хэсгийг хайх</translation>
 <translation id="2309620859903500144">Энэ сайтад таны хөдөлгөөн болон гэрлийн мэдрэгчид хандахыг блоклосон байна.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Хуудасны URL</translation>
@@ -1529,6 +1531,7 @@
 <translation id="241082044617551207">Үл мэдэх нэмэлт өргөтгөл</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">Гарын функцийн түлхүүр</translation>
+<translation id="2418307627282545839">Зүйлсийг гэрэлтэй бөгөөд зөөлөн байлгаарай</translation>
 <translation id="2419131370336513030">Суулгасан аппуудыг харах</translation>
 <translation id="2419706071571366386">Аюулгүй байдлын үүднээс компьютерээ ашиглаагүй үедээ гарна уу.</translation>
 <translation id="2422125132043002186">Linux-г сэргээхийг цуцалсан</translation>
@@ -2045,7 +2048,6 @@
 <translation id="289695669188700754">Гол ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Таныг бүх нууцлалтай цонхоо хаах үед энэ захиалгат тохиргоог хасах болно</translation>
 <translation id="2897878306272793870">Та <ph name="TAB_COUNT" /> цонхнуудыг нээхийг хүсч байна уу?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" />-р дэлгэцээ хайх</translation>
 <translation id="290105521672621980">Файл нь дэмжээгүй онцлогийг ашиглаж байна</translation>
 <translation id="2901348420151309559">Саяхны зургууд болон аппууд</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> нь хэвлэгчтэй холбогдохгүй байна. Хэвлэгч залгаатай байгаа эсэхээ шалгаад дахин оролдоно уу.</translation>
@@ -2918,7 +2920,6 @@
 <translation id="3778740492972734840">&amp; Хөгжүүлэгч хэрэгслүүд</translation>
 <translation id="3778868487658107119">Асуулт асууж, хийх зүйлийг нь хэлнэ үү. Таны хувийн Google танд туслахад хэзээд бэлэн байна.</translation>
 <translation id="3781742599892759500">Linux-н микрофоны хандалт</translation>
-<translation id="378312418865624974">Энэ компьютерийн тусгай танигчийг уншуул</translation>
 <translation id="3784472333786002075">Күүки нь вебсайтуудын үүсгэдэг файл юм. Хоёр төрлийн күүки байдаг: Анхдагч талын күүкиг таны зочилдог сайт үүсгэдэг. Сайтыг хаяг оруулах хэсэгт харуулдаг. Гуравдагч талын күүкиг бусад сайт үүсгэдэг. Эдгээр сайт нь таны зочилдог вебсайт дээрээ хардаг зар эсвэл зураг зэрэг контентын заримыг нь эзэмшдэг.</translation>
 <translation id="3785308913036335955">Аппликейшнуудын богино холболтыг харуулах</translation>
 <translation id="3785727820640310185">Энэ сайтад хадгалсан нууц үг</translation>
@@ -3376,6 +3377,7 @@
 <translation id="4227605727325220318">Шинэ Android утас нэмэх</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Энэ өргөтгөлийг зөвшөөрдөггүй}other{Зарим өргөтгөлийг зөвшөөрдөггүй}}</translation>
 <translation id="4231095370974836764"><ph name="DEVICE_TYPE" /> дээрээ Google Play-с апп болон тоглоомууд суулгана уу. <ph name="LINK_BEGIN" />Нэмэлт мэдээлэл авах<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Тоглоомын тохиргоог хаах</translation>
 <translation id="4232375817808480934">Kerberos-г тохируулах</translation>
 <translation id="4235965441080806197">Нэвтрэхийг цуцлах</translation>
 <translation id="4236163961381003811">Бусад өргөтгөлтэй танилцах</translation>
@@ -3570,7 +3572,6 @@
 <translation id="4415748029120993980">SECG зууван муруй secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">Энэ контентод боломжтой ямар ч апп байхгүй байна</translation>
 <translation id="4416582610654027550">Хүчинтэй URL оруулна уу</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" />-р хайхын тулд зураг чирэх</translation>
 <translation id="4419409365248380979"><ph name="HOST" />-д cookies-н тохиргоог тогтмол хийх эрхийг олгох</translation>
 <translation id="4421932782753506458">Найдваргүй</translation>
 <translation id="4423376891418188461">Тохиргоог сэргээх</translation>
@@ -3641,6 +3642,7 @@
 <translation id="449232563137139956">Сайтууд ихэвчлэн онлайн дэлгүүрийн эсвэл мэдээний нийтлэлийн зураг зэрэг зурагт тайлбар өгөхийн тулд зураг харуулдаг</translation>
 <translation id="4492698018379445570">Та худалдан авалтын сагсандаа юу нэмснээ харж, бэлэн болсон үедээ тооцоо хийнэ үү</translation>
 <translation id="4493468155686877504">Санал болгосон (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">Энэ өргөтгөлийг <ph name="SITE" /> дээр зөвшөөрөх үү?</translation>
 <translation id="4495419450179050807">Энэ хуудсан дээр бүү харуул</translation>
 <translation id="4497145443434063861">Өөр өөр Wi-Fi сүлжээнд холбогдсон компьютер болон Chromecast (ж.нь 2.4Гц
     ба 5Гц)</translation>
@@ -3709,7 +3711,6 @@
 <translation id="4550926046134589611">Зарим дэмжигдсэн холбоосыг <ph name="APP_NAME" />-д нээх боломжтой хэвээр байна.</translation>
 <translation id="4551763574344810652">Болихын тулд <ph name="MODIFIER_KEY_DESCRIPTION" />-г дарна уу</translation>
 <translation id="4553526521109675518">Та төхөөрөмжийн хэлийг өөрчлөхийн тулд Chromebook-ээ дахин эхлүүлэх шаардлагатай. <ph name="BEGIN_LINK_LEARN_MORE" />Нэмэлт мэдээлэл авах<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" />-р хайхын тулд зураг чирэх</translation>
 <translation id="4554591392113183336">Энэ программын гадаад өргөтгөл одоогийн хувилбартай адилхан эсвэл хуучин байна.</translation>
 <translation id="4555769855065597957">Сүүдэр</translation>
 <translation id="4555863373929230635">Google Бүртгэлдээ нууц үг хадгалахын тулд нэвтрээд, синк хийхийг асаана уу.</translation>
@@ -4560,7 +4561,6 @@
 <translation id="5427459444770871191">Эргэлдэх &amp; Цагийн зүүний дагуу</translation>
 <translation id="542750953150239272">Үргэлжлүүлснээр та энэ төхөөрөмж нь мөн мобайл дата ашиглан Google, таны оператор компани, таны төхөөрөмжийн үйлдвэрлэгчээс шинэчлэлт болон аппыг автоматаар татаж суулгаж болохыг зөвшөөрч байна. Эдгээр аппын зарим нь аппын худалдан авалтыг санал болгож магадгүй.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (шинэчлэх боломжтой)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" />-р дэлгэцээ хайх</translation>
 <translation id="542948651837270806">Итгэмжлэгдсэн платформ модулийн жижиг программын шинэчлэлтийг суулгах хэрэгтэй. <ph name="TPM_FIRMWARE_UPDATE_LINK" />-г үзнэ үү</translation>
 <translation id="5430931332414098647">Шуурхай модем болгох</translation>
 <translation id="5431318178759467895">Өнгө</translation>
@@ -4633,7 +4633,6 @@
 <translation id="5494920125229734069">Бүгдийг сонго</translation>
 <translation id="5495466433285976480">Энэ нь дараагийн удаа системийг дахин эхлүүлэхэд бүх суурин хэрэглэгч, файл, дата, бусад тохиргоог арилгах болно. Бүх хэрэглэгчид дахин нэвтрэх хэрэгтэй.</translation>
 <translation id="5495597166260341369">Дэлгэцийг асаалттай байлгах</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" />-р зураг хайхын тулд чирэх</translation>
 <translation id="5496587651328244253">Зохион байгуулах</translation>
 <translation id="5496730470963166430">Попап илгээх эсвэл дахин чиглүүлэлт ашиглахыг зөвшөөрөөгүй</translation>
 <translation id="5497251278400702716">Энэ файл</translation>
@@ -5744,7 +5743,6 @@
 Танд өөр # алдагдсан нууц үг байна. Google Password Manager энэ нууц үгийг одоо шалгахыг зөвлөж байна.}other{Алдагдсан нууц үгийг амжилттай өөрчиллөө.
 
 Танд өөр # алдагдсан нууц үг байна. Google Password Manager эдгээр нууц үгийг одоо шалгахыг зөвлөж байна.}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" />-р зураг хайхын тулд чирэх</translation>
 <translation id="6596325263575161958">Шифрлэлтийн сонголтууд</translation>
 <translation id="6596816719288285829">IP хаяг</translation>
 <translation id="6597017209724497268">Жишээ загвар</translation>
@@ -6045,6 +6043,7 @@
 <translation id="6895032998810961280">Энэ цэвэрлэгээний үеэр компьютероосоо олдсон хортой программ хангамж, системийн тохиргоо болон боловсруулалтын талаар дэлгэрэнгүй мэдээллийг Google-д мэдээлнэ үү</translation>
 <translation id="6896758677409633944">Хуулах</translation>
 <translation id="6897363604023044284">Устгах сайтуудыг сонгох</translation>
+<translation id="6897688156970667447">Бүүдгэр гэрэлтэй үед хэрэгтэй бөгөөд батарейг хэмнэнэ</translation>
 <translation id="6898440773573063262">Kiosk аппликейшнүүд энэ төхөөрөмж дээр автоматаар ажиллаж эхэлдэг байхаар тохирууллаа</translation>
 <translation id="6900284862687837908">Дэвсгэрийн апп: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">Сайжруулсан хамгаалалт</translation>
@@ -7362,7 +7361,6 @@
 <translation id="8184318863960255706">Дэлгэрэнгүй мэдээлэл</translation>
 <translation id="8184472985242519288">Нэгэн жигд</translation>
 <translation id="8186609076106987817">Сервер файлыг олж чадсангүй.</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" />-р хуудасны хэсгийг хайх</translation>
 <translation id="8188389033983459049">Төхөөрөмжийнхөө тохиргоог шалгаад үргэлжлүүлэх бол асаана уу</translation>
 <translation id="8188742492803591566">Дэлгэц дээрээ дамжуулж эхлэхийн тулд Chromecast эсвэл ТВ дээр харуулсан нэвтрэх кодыг оруулна уу.</translation>
 <translation id="8189306097519446565">Сургуулийн бүртгэлүүд</translation>
@@ -7531,6 +7529,7 @@
 <translation id="8358685469073206162">Хуудсуудыг сэргээх үү?</translation>
 <translation id="8358912028636606457">Энэ төхөөрөмж табын аудио дамжуулахыг дэмждэггүй.</translation>
 <translation id="835951711479681002">Google Бүртгэлдээ хадгалах</translation>
+<translation id="8360140320636871023">Дэлгэцийн загвараа хувийн болгоoрой</translation>
 <translation id="8363095875018065315">тогтвортой</translation>
 <translation id="8363142353806532503">Микрофоныг блоклосон</translation>
 <translation id="8366396658833131068">Таны сүлжээний холболтыг дахин сэргээсэн байна. Өөрийн киоск аппликейшнуудаа эхлүүлэхийн тулд өөр сүлжээ сонгох эсвэл доор байгаа "Үргэлжүүлэх" товчийг дарна уу.</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index 57b08c7..d9e4fa89 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -182,6 +182,7 @@
 <translation id="1166583374608765787">अपडेट केलेल्या नावाचे पुनरावलोकन करा</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> हा <ph name="DESK_TITLE" /> डेस्‍कशी कनेक्ट केलेला आहे</translation>
 <translation id="1168020859489941584"><ph name="TIME_REMAINING" /> मध्ये उघडत आहे...</translation>
+<translation id="1169266963600477608">गेम नियंत्रणे</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> मध्ये संवेदनशील किंवा धोकादायक डेटा आहे. तुमच्या अ‍ॅडमिनिस्ट्रेटरनुसार: "<ph name="CUSTOM_MESSAGE" />"</translation>
 <translation id="1171135284592304528">ऑब्जेक्ट बदलते तेव्हा ते कीबोर्ड फोकससह हायलाइट करा</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> ला HID डिव्हाइसशी कनेक्ट करायचे आहे</translation>
@@ -1424,7 +1425,6 @@
     Voice Match हे तुमच्या लहान मुलासाठी योग्य नाही असे तुम्हाला नंतर वाटल्यास, ते फक्त त्यांच्या Assistant सेटिंग्ज मधून काढून टाका. Voice Match सेट करताना तुमच्या लहान मुलाने रेकॉर्ड केलेल्या ऑडिओ क्लिप पाहण्यासाठी किंवा त्या हटवण्यासाठी, तुमच्या लहान मुलाच्या खात्यामधून <ph name="VOICE_MATCH_SETTINGS_URL" /> वर जा.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> वापरून पेजचा काही भाग शोधा</translation>
 <translation id="2309620859903500144">या साइटला तुमचे गती किंवा प्रकाश सेन्सर ॲक्सेस करण्यापासून ब्लॉक केले गेले आहे.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">पेज URL</translation>
@@ -2048,7 +2048,6 @@
 <translation id="289695669188700754">की आयडी: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">तुम्ही तुमच्या सर्व गुप्त विंडो बंद केल्यास, हे कस्टम सेटिंग काढून टाकले जाईल</translation>
 <translation id="2897878306272793870">तुमची खात्री आहे की तुम्ही <ph name="TAB_COUNT" /> टॅब उघडू इच्छिता?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> वापरून तुमची स्क्रीन शोधा</translation>
 <translation id="290105521672621980">फाइल अ‍समर्थित वैशिष्ट्यांचा वापर करीत आहे</translation>
 <translation id="2901348420151309559">अलीकडील फोटो आणि अ‍ॅप्स</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ला या प्रिंटरसह संवाद प्रस्थापित करणे शक्य झाले नाही. प्रिंटर प्लग इन केले आहे हे सुनिश्चित करा आणि पुन्हा प्रयत्न करा.</translation>
@@ -2921,7 +2920,6 @@
 <translation id="3778740492972734840">&amp;विकसक साधने</translation>
 <translation id="3778868487658107119">त्याला प्रश्न विचारा. त्याला गोष्टी करण्यास सांगा. ते खास तुमचे Google आहे, मदतीसाठी सदैव तत्पर.</translation>
 <translation id="3781742599892759500">Linux मायक्रोफोन अ‍ॅक्सेस</translation>
-<translation id="378312418865624974">या कॉंप्युटरचा एक अद्वितीय आयडेंटिफायर रीड करा</translation>
 <translation id="3784472333786002075">कुकी म्हणजे वेबसाइटने तयार केलेल्या फाइल. दोन प्रकारच्या कुकी आहेत: पहिल्या पक्षाच्या कुकी तुम्ही भेट दिलेल्या साइटद्वारे तयार केल्या जातात. साइट अ‍ॅड्रेस बारवर दाखवली जाते. तृतीय पक्षीय कुकी इतर साइटद्वारे तयार केल्या जातात. या साइटमध्ये जाहिराती किंवा इमेज यांसारखा काही आशय आहे जो तुम्ही भेट देत असलेल्या वेबसाइटवर दिसतो.</translation>
 <translation id="3785308913036335955">अ‍ॅप्स शॉर्टकट दर्शवा</translation>
 <translation id="3785727820640310185">या साइटसाठी सेव्ह केलेले पासवर्ड</translation>
@@ -3378,6 +3376,7 @@
 <translation id="4227605727325220318">नवीन Android फोन जोडा</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{या एक्स्टेंशनला अनुमती नाही}other{काही एक्स्टेंशनला अनुमती नाही}}</translation>
 <translation id="4231095370974836764">Google Play वरून तुमच्या <ph name="DEVICE_TYPE" /> वर ॲप्स आणि गेम इंस्टॉल करा. <ph name="LINK_BEGIN" />अधिक जाणून घ्या<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">गेम नियंत्रणे बंद करा</translation>
 <translation id="4232375817808480934">Kerberos कॉंफिगर करा</translation>
 <translation id="4235965441080806197">साइन इन रद्द करा</translation>
 <translation id="4236163961381003811">आणखी एक्स्टेंशन शोधा</translation>
@@ -3572,7 +3571,6 @@
 <translation id="4415748029120993980">SECG एल्लिपटिक कर्व्ह secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">या आशयासाठी कोणतीही अ‍ॅप्स उपलब्ध नाहीत</translation>
 <translation id="4416582610654027550">योग्य URL टाइप करा</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> वापरून शोधण्यासाठी इमेजवर ड्रॅग करा</translation>
 <translation id="4419409365248380979">कुकी सेट करण्यासाठी <ph name="HOST" />ना नेहमी परवानगी द्या </translation>
 <translation id="4421932782753506458">Fluffy</translation>
 <translation id="4423376891418188461">सेटिंग्ज पुनर्संचयित करा</translation>
@@ -3711,7 +3709,6 @@
 <translation id="4550926046134589611">सपोर्ट असलेल्या काही लिंक तरीही <ph name="APP_NAME" /> मध्ये उघडतील.</translation>
 <translation id="4551763574344810652">पहिल्यासारखे करण्यासाठी <ph name="MODIFIER_KEY_DESCRIPTION" /> दाबा</translation>
 <translation id="4553526521109675518">डिव्हाइसची भाषा बदलण्यासाठी तुम्हाला तुमचे Chromebook रीस्टार्ट करावे लागेल. <ph name="BEGIN_LINK_LEARN_MORE" />अधिक जाणून घ्या<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> वापरून शोधण्यासाठी इमेजवर ड्रॅग करा</translation>
 <translation id="4554591392113183336">बाह्य एक्स्टेंशन अस्‍तित्वात असलेल्‍याच्या तुलनेत समान किंवा कमी आवृत्तीवर आहे.</translation>
 <translation id="4555769855065597957">शॅडो</translation>
 <translation id="4555863373929230635">तुमच्या Google खाते मध्ये पासवर्ड सेव्ह करण्यासाठी साइन इन करा आणि सिंक सुरू करा.</translation>
@@ -4562,7 +4559,6 @@
 <translation id="5427459444770871191">&amp;घड्याळाच्या दिशेने फिरवा</translation>
 <translation id="542750953150239272">पुढे सुरू ठेवून, तुम्ही सहमती दर्शवता, की हे डिव्हाइस कदाचित मोबाइल डेटा वापरून Google, तुमचा वाहक आणि तुमच्या डिव्हाइसच्या उत्पादकाकडूनदेखील अपडेट व अ‍ॅप्स आपोआप डाउनलोड आणि इंस्टॉल करू शकते. यांपैकी काही अ‍ॅप्स अ‍ॅप्समधील खरेदीचा पर्याय देऊ करू शकतात.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (अपडेट उपलब्ध आहे)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> वापरून तुमची स्क्रीन शोधा</translation>
 <translation id="542948651837270806">विश्वासू प्लॅटफॉर्म मॉड्युल फर्मवेयरचा एखादा अपडेट इंस्टॉल करणे आवश्यक आहे. <ph name="TPM_FIRMWARE_UPDATE_LINK" /> पहा</translation>
 <translation id="5430931332414098647">झटपट टेदरिंग</translation>
 <translation id="5431318178759467895">रंग</translation>
@@ -4635,7 +4631,6 @@
 <translation id="5494920125229734069">सर्व निवडा</translation>
 <translation id="5495466433285976480">तुम्हाला पुढील रीस्टार्टनंतर हे सर्व स्थानिक वापरकर्ते, फाइल, डेटा आणि अन्य सेटिंग्ज काढेल. सर्व वापरकर्त्यांना पुन्हा साइन इन करण्याची आवश्यकता असेल.</translation>
 <translation id="5495597166260341369">डिस्प्ले सुरू ठेवा</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> वापरून इमेज शोधण्यासाठी ड्रॅग करा</translation>
 <translation id="5496587651328244253">संयोजित करा</translation>
 <translation id="5496730470963166430">पॉप-अप पाठवण्याची आणि रीडिरेक्‍ट वापरण्याची अनुमती नाही</translation>
 <translation id="5497251278400702716">ही फाइल</translation>
@@ -5747,7 +5742,6 @@
 तुमच्याकडे धोक्यात असलेला आणखी # पासवर्ड आहे. हा पासवर्ड आता तपासण्याची शिफारस Google Password Manager करते.}other{धोक्यात असलेला पासवर्ड यशस्वीरीत्या बदलला.
 
 तुमच्याकडे धोक्यात असलेले आणखी # पासवर्ड आहेत. हे पासवर्ड आता तपासण्याची शिफारस Google Password Manager करते.}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> वापरून इमेज शोधण्यासाठी ड्रॅग करा</translation>
 <translation id="6596325263575161958">एंक्रिप्शन पर्याय</translation>
 <translation id="6596816719288285829">IP पत्ता</translation>
 <translation id="6597017209724497268">नमुने</translation>
@@ -7366,7 +7360,6 @@
 <translation id="8184318863960255706">अधिक माहिती</translation>
 <translation id="8184472985242519288">एकसमान</translation>
 <translation id="8186609076106987817">सर्व्हर फाइल शोधू शकले नाही.</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> वापरून पेजचा काही भाग शोधा</translation>
 <translation id="8188389033983459049">तुमची डिव्हाइस सेटिंग्ज तपासा आणि सुरू ठेवण्यासाठी ती सुरू करा</translation>
 <translation id="8188742492803591566">तुमची स्क्रीन कास्ट करणे सुरू करण्यासाठी Chromecast किंवा TV वर दाखवलेला अ‍ॅक्सेस कोड एंटर करा.</translation>
 <translation id="8189306097519446565">शाळेची खाती</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index 09b4a770b..c0f34b2 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -182,6 +182,7 @@
 <translation id="1166583374608765787">Semak kemaskinian nama</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> milik meja <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">Dibuka dalam <ph name="TIME_REMAINING" />...</translation>
+<translation id="1169266963600477608">Kawalan permainan</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> mengandungi data sensitif atau berbahaya. Pentadbir anda berkata: "<ph name="CUSTOM_MESSAGE" />"</translation>
 <translation id="1171135284592304528">Serlahkan objek dengan fokus papan kekunci apabila objek berubah</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> mahu menyambung ke peranti HID</translation>
@@ -203,6 +204,7 @@
 <translation id="1188807932851744811">Log belum dimuat naik.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{Akses fail yang disimpan pada komputer anda}other{Akses # fail yang disimpan pada komputer anda}}</translation>
 <translation id="119092896208640858">Untuk mengosongkan data semakan imbas daripada peranti ini sahaja dan menyimpannya dalam Akaun Google anda, <ph name="BEGIN_LINK" />log keluar<ph name="END_LINK" />.</translation>
+<translation id="1191353342579061195">Pilih tema yang sesuai dengan keperluan anda. Untuk menukar tema, kertas dinding, penyelamat skrin dan pelbagai lagi, cuma klik kanan pada desktop.</translation>
 <translation id="1192706927100816598">{0,plural, =1{Anda akan dilog keluar secara automatik dalam masa # saat.
 <ph name="DOMAIN" /> menghendaki anda memastikan kad pintar anda tidak dikeluarkan.}other{Anda akan dilog keluar secara automatik dalam masa # saat.
 <ph name="DOMAIN" /> menghendaki anda memastikan kad pintar anda tidak dikeluarkan.}}</translation>
@@ -1304,6 +1306,7 @@
 <translation id="2220409419896228519">Tambahkan penanda halaman pada Google Apps kegemaran anda</translation>
 <translation id="2220529011494928058">Laporkan isu</translation>
 <translation id="2220572644011485463">PIN atau kata laluan</translation>
+<translation id="222115440608612541">Tukar tema pada waktu matahari terbit dan terbenam</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">Sumber media tidak bernama.</translation>
 <translation id="2224444042887712269">Tetapan ini milik <ph name="OWNER_EMAIL" />.</translation>
@@ -1425,7 +1428,6 @@
     Jika nanti anda memutuskan bahawa Voice Match tidak sesuai untuk anak anda, hanya alih keluar ciri itu dalam Tetapan Assistant mereka. Untuk melihat atau memadamkan klip audio yang dirakam oleh anak anda semasa persediaan Voice Match, pergi ke <ph name="VOICE_MATCH_SETTINGS_URL" /> daripada akaun anak anda.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Cari sebahagian daripada halaman ini dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Tapak ini telah disekat daripada mengakses penderia gerakan atau cahaya anda.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL halaman</translation>
@@ -1533,6 +1535,7 @@
 <translation id="241082044617551207">Pemalam tidak diketahui</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">Kekunci fungsi papan kekunci</translation>
+<translation id="2418307627282545839">Pastikan imej terang dan jelas</translation>
 <translation id="2419131370336513030">Lihat apl yang dipasang</translation>
 <translation id="2419706071571366386">Demi keselamatan, log keluar apabila komputer anda tidak digunakan.</translation>
 <translation id="2422125132043002186">Pemulihan Linux dibatalkan</translation>
@@ -2049,7 +2052,6 @@
 <translation id="289695669188700754">ID Kekunci: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Tetapan tersuai ini akan dialih keluar apabila anda menutup semua tetingkap Inkognito anda</translation>
 <translation id="2897878306272793870">Adakah anda pasti anda mahu buka tab <ph name="TAB_COUNT" />?</translation>
-<translation id="2900477968385519153">Cari di Skrin Anda dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Fail menggunakan ciri tidak disokong</translation>
 <translation id="2901348420151309559">Foto dan apl terkini</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> tidak dapat berkomunikasi dengan pencetak ini. Pastikan pencetak dipalamkan dan cuba lagi.</translation>
@@ -2922,7 +2924,6 @@
 <translation id="3778740492972734840">&amp;Alat pembangun</translation>
 <translation id="3778868487658107119">Tanya soalan dan berikannya tugas. Peranti ini ialah Google peribadi anda yang sentiasa bersedia untuk membantu.</translation>
 <translation id="3781742599892759500">Akses mikrofon Linux</translation>
-<translation id="378312418865624974">Baca pengecam unik untuk komputer ini</translation>
 <translation id="3784472333786002075">Kuki ialah fail yang dibuat oleh laman web. Terdapat dua jenis kuki: Kuki pihak pertama dibuat oleh tapak yang anda lawati. Tapak ini ditunjukkan pada bar alamat. Kuki pihak ketiga dibuat oleh tapak lain. Tapak ini memiliki sebahagian daripada kandungan seperti iklan atau imej yang anda lihat pada laman web yang anda lawati.</translation>
 <translation id="3785308913036335955">Paparkan Pintasan Apl</translation>
 <translation id="3785727820640310185">Kata laluan disimpan untuk tapak ini</translation>
@@ -3381,6 +3382,7 @@
 <translation id="4227605727325220318">Tambah telefon Android baharu</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Sambungan ini tidak dibenarkan}other{Sesetengah sambungan tidak dibenarkan}}</translation>
 <translation id="4231095370974836764">Pasang apl dan permainan daripada Google Play pada <ph name="DEVICE_TYPE" /> anda. <ph name="LINK_BEGIN" />Ketahui lebih lanjut<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Tutup kawalan permainan</translation>
 <translation id="4232375817808480934">Konfigurasikan Kerberos</translation>
 <translation id="4235965441080806197">Batalkan log masuk</translation>
 <translation id="4236163961381003811">Temukan lebih banyak sambungan</translation>
@@ -3575,7 +3577,6 @@
 <translation id="4415748029120993980">Lengkung eliptik SECG secp384r1 (alias NIST P-384)</translation>
 <translation id="4416450511678320850">Tiada apl tersedia untuk kandungan ini`</translation>
 <translation id="4416582610654027550">Taip URL yang sah</translation>
-<translation id="4417162649853416189">Seret Imej untuk Mencari dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Sentiasa benarkan <ph name="HOST" /> untuk menetapkan kuki</translation>
 <translation id="4421932782753506458">Gebu</translation>
 <translation id="4423376891418188461">Pulihkan Tetapan</translation>
@@ -3715,7 +3716,6 @@
 <translation id="4550926046134589611">Sesetengah pautan yang disokong masih akan dibuka dalam <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Tekan <ph name="MODIFIER_KEY_DESCRIPTION" /> untuk buat asal</translation>
 <translation id="4553526521109675518">Anda perlu memulakan semula Chromebook anda untuk menukar bahasa peranti. <ph name="BEGIN_LINK_LEARN_MORE" />Ketahui lebih lanjut<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Seret imej untuk mencari dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Sambungan luar ialah versi yang sama atau lebih rendah berbanding yang sedia ada.</translation>
 <translation id="4555769855065597957">Bayang</translation>
 <translation id="4555863373929230635">Untuk menyimpan kata laluan pada Akaun Google anda, log masuk dan aktifkan penyegerakan.</translation>
@@ -4566,7 +4566,6 @@
 <translation id="5427459444770871191">Putar &amp;Ikut Arah Jam</translation>
 <translation id="542750953150239272">Dengan meneruskan pemasangan, anda bersetuju bahawa peranti ini juga boleh memuat turun dan memasang kemas kini serta apl secara automatik daripada Google, pembawa dan pengeluar peranti anda, mungkin menggunakan data selular. Sesetengah apl ini mungkin menawarkan pembelian dalam apl.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Kemas kini tersedia)</translation>
-<translation id="5429373054983029602">Cari di skrin anda dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Kemas kini untuk perisian tegar Modul Platform Dipercayai perlu dipasang. Lihat <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Penambatan Segera</translation>
 <translation id="5431318178759467895">Warna</translation>
@@ -4639,7 +4638,6 @@
 <translation id="5494920125229734069">Pilih semua</translation>
 <translation id="5495466433285976480">Tindakan ini akan mengalih keluar semua pengguna, fail dan data setempat serta tetapan lain selepas mula semula anda yang seterusnya. Semua pengguna perlu log masuk sekali lagi.</translation>
 <translation id="5495597166260341369">Biarkan paparan hidup</translation>
-<translation id="549580971452855947">Seret untuk mencari imej dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Atur</translation>
 <translation id="5496730470963166430">Tidak dibenarkan untuk menghantar tetingkap timbul atau menggunakan ubah hala</translation>
 <translation id="5497251278400702716">Fail ini</translation>
@@ -5750,7 +5748,6 @@
 Anda mempunyai # lagi kata laluan yang terjejas. Google Password Manager mengesyorkan supaya anda menyemak kata laluan ini sekarang.}other{Berjaya menukar kata laluan yang terjejas.
 
 Anda mempunyai # lagi kata laluan yang terjejas. Google Password Manager mengesyorkan supaya anda menyemak kata laluan ini sekarang.}}</translation>
-<translation id="6595792813574514527">Seret untuk Mencari Imej dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Pilihan penyulitan</translation>
 <translation id="6596816719288285829">Alamat IP</translation>
 <translation id="6597017209724497268">Sampel</translation>
@@ -6051,6 +6048,7 @@
 <translation id="6895032998810961280">Laporkan butiran tentang perisian, tetapan sistem dan proses berbahaya yang ditemui pada komputer anda semasa pembersihan ini kepada Google</translation>
 <translation id="6896758677409633944">Salin</translation>
 <translation id="6897363604023044284">Pilih tapak untuk dikosongkan</translation>
+<translation id="6897688156970667447">Membantu dalam cahaya malap dan menjimatkan bateri</translation>
 <translation id="6898440773573063262">Aplikasi kios kini boleh dikonfigurasikan supaya autolancar pada peranti ini.</translation>
 <translation id="6900284862687837908">Apl Latar Belakang: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">Perlindungan dipertingkat</translation>
@@ -7371,7 +7369,6 @@
 <translation id="8184318863960255706">Maklumat lanjut</translation>
 <translation id="8184472985242519288">Seragam</translation>
 <translation id="8186609076106987817">Pelayan tidak dapat mencari fail.</translation>
-<translation id="8186704951085064172">Cari Sebahagian daripada Halaman Ini dengan <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Semak tetapan peranti anda dan hidupkannya untuk meneruskan</translation>
 <translation id="8188742492803591566">Masukkan kod akses yang ditunjukkan pada Chromecast atau TV untuk mula menghantar skrin anda.</translation>
 <translation id="8189306097519446565">Akaun sekolah</translation>
@@ -7541,6 +7538,7 @@
 <translation id="8358685469073206162">Pulihkan halaman?</translation>
 <translation id="8358912028636606457">Ciri menghantar audio tab tidak disokong pada peranti ini.</translation>
 <translation id="835951711479681002">Simpan dalam Akaun Google anda</translation>
+<translation id="8360140320636871023">Peribadikan tema paparan anda</translation>
 <translation id="8363095875018065315">stabil</translation>
 <translation id="8363142353806532503">Mikrofon disekat</translation>
 <translation id="8366396658833131068">Sambungan rangkaian anda sudah dipulihkan. Sila pilih rangkaian lain atau tekan butang 'Teruskan' di bawah untuk melancarkan apl kios anda.</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb
index ce6cdb9..d60c96d 100644
--- a/chrome/app/resources/generated_resources_my.xtb
+++ b/chrome/app/resources/generated_resources_my.xtb
@@ -204,6 +204,7 @@
 <translation id="1188807932851744811">လော့ဂ် မမွမ်းမံ ရသေးပါ။</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{သင့်ကွန်ပျူတာရှိ ဖိုင်အား ဝင်ရောက်သုံးရန်}other{သင့်ကွန်ပျူတာရှိ ဖိုင်များ # အား ဝင်ရောက်သုံးရန်}}</translation>
 <translation id="119092896208640858">ဖွင့်ကြည့်ထားသည့်မှတ်တမ်းဒေတာများကို ဤစက်မှသာ ရှင်းထုတ်ပြီး သင့် Google အကောင့်တွင် သိမ်းထားရန် <ph name="BEGIN_LINK" />အကောင့်မှ ထွက်ပါ<ph name="END_LINK" />။</translation>
+<translation id="1191353342579061195">သင်နှင့်သင့်တော်သည့် အပြင်အဆင်ကို ရွေးနိုင်သည်။ အပြင်အဆင်၊ နောက်ခံ၊ ဖန်သားပြင်နားချိန်နှင့် အခြားအရာများပြောင်းရန် ဒက်စ်တော့တွင် ညာဘက်ခလုတ်ကို နှိပ်နိုင်သည်။</translation>
 <translation id="1192706927100816598">{0,plural, =1{# စက္ကန့်အကြာတွင် သင်အလိုအလျောက် ထွက်သွားပါမည်။
 သင့်စမတ်ကတ်ကို ထည့်သွင်းထားရန် <ph name="DOMAIN" /> က သတ်မှတ်ထားသည်။}other{# စက္ကန့်အကြာတွင် သင်အလိုအလျောက် ထွက်သွားပါမည်။
 သင့်စမတ်ကတ်ကို ထည့်သွင်းထားရန် <ph name="DOMAIN" /> က သတ်မှတ်ထားသည်။}}</translation>
@@ -1303,6 +1304,7 @@
 <translation id="2220409419896228519">သင်အကြိုက်ဆုံး Google Apps သို့ လိပ်စာများထည့်သည်။</translation>
 <translation id="2220529011494928058">ပြဿနာ အစီရင်ခံရန်</translation>
 <translation id="2220572644011485463">ပင်နံပါတ် သို့မဟုတ် စကားဝှက်</translation>
+<translation id="222115440608612541">ရောင်နီနှင့် ဆည်းဆာတွင် အပြင်အဆင် ချိန်းရန်</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />၊ <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">အမည်မပါသော မီဒီယာရင်းမြစ်</translation>
 <translation id="2224444042887712269">ဒီဆက်တင် <ph name="OWNER_EMAIL" />က ပိုင်ဆိုင်သည်။</translation>
@@ -1424,7 +1426,6 @@
     နောက်ပိုင်းတွင် Voice Match ကို သင့်ကလေးအတွက် အသုံးမပြုလိုတော့ပါက သူ၏ Assistant ဆက်တင်များတွင် ၎င်းကို ဖယ်ရှားပါ။ Voice Match စနစ်ထည့်သွင်းစဉ်အတွင်း သင့်ကလေးဖမ်းယူထားသော အသံအပိုင်းအစများကို ကြည့်ရန် (သို့) ဖျက်ရန် သူ၏အကောင့်တွင် <ph name="VOICE_MATCH_SETTINGS_URL" /> သို့ သွားပါ။
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> ဖြင့် စာမျက်နှာ တစ်စိတ်တစ်ဒေသကို ရှာရန်</translation>
 <translation id="2309620859903500144">သင်၏လှုပ်ရှားမှု သို့မဟုတ် အလင်းရောင် အာရုံခံကိရိယာ အသုံးပြုခွင့်ကို ဤဝဘ်ဆိုက်အတွက် ပိတ်ထားပါသည်။</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">စာမျက်နှာ URL</translation>
@@ -1532,6 +1533,7 @@
 <translation id="241082044617551207">အမည်မသိ ပလတ်အင်</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">လက်ကွက်လုပ်ဆောင်ချက် ကီးများ</translation>
+<translation id="2418307627282545839">အကြောင်းအရာများကို ကြည်လင်ပေါ့ပါးစွာ ထားပါ</translation>
 <translation id="2419131370336513030">ထည့်သွင်းထားသော အက်ပ်များ ကြည့်ရန်</translation>
 <translation id="2419706071571366386">လုံခြုံရေးအတွက် သင့်ကွန်ပျူတာကို အသုံးပြုနေခြင်းမရှိသည့်အခါ ထွက်ထားပါ။</translation>
 <translation id="2422125132043002186">Linux ပြန်ယူခြင်းကို ပယ်ဖျက်ထားသည်</translation>
@@ -2048,7 +2050,6 @@
 <translation id="289695669188700754">သော့ ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">ရုပ်ဖျက် ဝင်ဒိုးအားလုံးကို ပိတ်လိုက်သောအခါ ဤစိတ်ကြိုက်ဆက်တင်ကို ဖယ်ရှားပါမည်</translation>
 <translation id="2897878306272793870">သင်သည် တဘ် <ph name="TAB_COUNT" />ခုကို ဖွင့်ချင်တာ သေချာသလား?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> ဖြင့် သင့် ‘ဖန်သားပြင်’ ကိုရှာရန်</translation>
 <translation id="290105521672621980">ပံ့ပိုးခြင်းမရှိသော ဝန်ဆောင်မှုများကို ဖိုင်က သုံးထားသည်</translation>
 <translation id="2901348420151309559">လတ်တလော ဓာတ်ပုံနှင့် အက်ပ်များ</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ဤပရင်တာဖြင့် ချိတ်ဆက်နိုင်ခြင်း မရှိပါ။ ပရင်တာ ပလပ်တပ်ထားကြောင်း သေချာစေပြီး ထပ်မံကြိုးစားပါ။</translation>
@@ -2921,7 +2922,6 @@
 <translation id="3778740492972734840">ပြုစုသူ ကိရိယာများ</translation>
 <translation id="3778868487658107119">၎င်းကို မေးခွန်းများမေးပါ။ အလုပ်များ စေခိုင်းပါ။ ၎င်းသည် သင့်ကိုယ်ပိုင် Google ဖြစ်ပြီး အကူအညီပေးရန် အမြဲအသင့်ရှိနေပါသည်။</translation>
 <translation id="3781742599892759500">Linux မိုက်ခရိုဖုန်း သုံးခွင့်</translation>
-<translation id="378312418865624974">ဒီကွန်ပျူတာ အတွက် ပင်ကိုယ် နံပါတ်စဉ်</translation>
 <translation id="3784472333786002075">ကွတ်ကီးများဟူသည်မှာ ဝဘ်ဆိုက်များက ပြုလုပ်ထားသော ဖိုင်များဖြစ်သည်။ ကွက်ကီးနှစ်မျိုး ရှိပါသည်− ပင်မကွတ်ကီးများကို သင်ဝင်ကြည့်သော ဝဘ်ဆိုက်က ပြုလုပ်ခြင်းဖြစ်သည်။ ဝဘ်ဆိုက်ကို လိပ်စာဘားတွင် ပြထားသည်။ ပြင်ပကွတ်ကီးများကို အခြားဝဘ်ဆိုက်များက ပြုလုပ်ခြင်းဖြစ်သည်။ ဤဝဘ်ဆိုက်များတွင် သင်ဝင်ကြည့်သည့်ဝဘ်ဆိုက်ပေါ်တွင် တွေ့ရသည့်ကြော်ငြာ သို့မဟုတ် ပုံများကဲ့သို့ အကြောင်းအရာအချို့ ပါဝင်သည်။</translation>
 <translation id="3785308913036335955">အက်ပ်များ ဖြတ်လမ်းကို ပြပေးရန်</translation>
 <translation id="3785727820640310185">ဤဝဘ်ဆိုက်အတွက် သိမ်းဆည်းထားသည့် စကားဝှက်များ</translation>
@@ -3574,7 +3574,6 @@
 <translation id="4415748029120993980">SECG elliptic curve secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">ဤအကြောင်းအရာအတွက် အက်ပ်များ မရနိုင်ပါ</translation>
 <translation id="4416582610654027550">မှန်ကန်သည့် URL ကို ရိုက်ပါ</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> ဖြင့် ‘ရှာ’ ရန် ‘ပုံများ’ ပေါ်တွင်ဖိဆွဲပါ</translation>
 <translation id="4419409365248380979">ကူကီးများ သတ်မှတ်ရန် <ph name="HOST" /> ကို အမြဲခွင့်ပြုပါ။</translation>
 <translation id="4421932782753506458">အမွေးနု</translation>
 <translation id="4423376891418188461">ဆက်တင်များအား ပြန်ယူရန်</translation>
@@ -3645,6 +3644,7 @@
 <translation id="449232563137139956">အွန်လိုင်းစတိုး (သို့) သတင်းဆောင်းပါးတို့အတွက် ဓာတ်ပုံများကဲ့သို့ သရုပ်ဖော်ပုံပံ့ပိုးရန် ဝဘ်ဆိုက်များက ရုပ်ပုံများ ပြလေ့ရှိသည်</translation>
 <translation id="4492698018379445570">ဈေးခြင်းတောင်းများတွင် ထည့်လိုက်သည်များကို ကြည့်ပြီး အသင့်ဖြစ်သည့်အခါ ငွေရှင်းပါ</translation>
 <translation id="4493468155686877504">အကြံပြုထားသည် (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">ဤနောက်ဆက်တွဲကို <ph name="SITE" /> တွင် ခွင့်ပြုမလား။</translation>
 <translation id="4495419450179050807">ဤစာမျက်နှာတွင် မပြပါနှင့်</translation>
 <translation id="4497145443434063861">PC နှင့် Chromecast သည် မတူညီသော Wi-Fi ကွန်ရက်များတွင် ရှိသည် (ဥပမာ ၂.၄ GHz
     နှင့် ၅ GHz)</translation>
@@ -3713,7 +3713,6 @@
 <translation id="4550926046134589611">ပံ့ပိုးထားသောလင့်ခ်အချို့ကို <ph name="APP_NAME" /> တွင် ဖွင့်နိုင်ပါဦးမည်။</translation>
 <translation id="4551763574344810652">တစ်ဆင့်နောက်ပြန်ရန် <ph name="MODIFIER_KEY_DESCRIPTION" /> ကို နှိပ်ပါ</translation>
 <translation id="4553526521109675518">စက်၏ဘာသာစကားပြောင်းရန် သင်၏ Chromebook ကို ပြန်စရပါမည်။ <ph name="BEGIN_LINK_LEARN_MORE" />ပိုမိုလေ့လာရန်<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> ဖြင့်ရှာရန် ပုံများပေါ်တွင် ဖိဆွဲပါ</translation>
 <translation id="4554591392113183336">ပြင်ပတိုးချဲ့လိုင်းသည် လက်ရှိတစ်ခုနှင့် နှိုင်းယှဉ်ပါက အတူတူ သို့မဟုတ် ပိုမိုနိမ့်သော ဗားရှင်းတွင် ဖြစ်၏။</translation>
 <translation id="4555769855065597957">အရိပ်</translation>
 <translation id="4555863373929230635">စကားဝှက်များကို သင်၏ Google အကောင့်တွင် သိမ်းရန် လက်မှတ်ထိုးဝင်ပြီး စင့်ခ်လုပ်ခြင်းကိုဖွင့်ပါ။</translation>
@@ -4564,7 +4563,6 @@
 <translation id="5427459444770871191">&amp;နာရီလက်တံအတိုင်း လည်</translation>
 <translation id="542750953150239272">ရှေ့ဆက်ခြင်းအားဖြင့် ဤစက်ပစ္စည်းသည် Google၊ သင်၏ မိုဘိုင်းဝန်ဆောင်မှုပေးသူနှင့် သင့်စက်ပစ္စည်း၏ ထုတ်လုပ်သူ တို့ထံမှနေ၍ အပ်ဒိတ်များနှင့် အက်ပ်များကို ဆယ်လူလာ ဒေတာအား အသုံးပြုပြီး အလိုအလျောက် ဒေါင်းလုဒ်လုပ်၍ ထည့်သွင်းနိုင်ခြင်းကို သဘောတူရာ ရောက်ပါသည်။ ဤအက်ပ်အချို့တွင် အက်ပ်အတွင်း ဝယ်ယူခြင်းများ ကမ်းလှမ်းနိုင်သည်။</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (မွမ်းမံမှု ရနိုင်)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> ဖြင့် သင့်ဖန်သားပြင်ကို ရှာရန်</translation>
 <translation id="542948651837270806">'ယုံကြည်စိတ်ချရသည့် စနစ်မော်ဂျူး' ဖာမ်းဝဲအတွက် အပ်ဒိတ်ထည့်သွင်းရန် လိုအပ်သည်။ <ph name="TPM_FIRMWARE_UPDATE_LINK" /> ကို ကြည့်ပါ</translation>
 <translation id="5430931332414098647">အမြန်ချိတ်ဆက်မျှဝေခြင်း</translation>
 <translation id="5431318178759467895">အရောင်</translation>
@@ -4637,7 +4635,6 @@
 <translation id="5494920125229734069">အားလုံး ရွေးရန်</translation>
 <translation id="5495466433285976480">သို့ဆိုလျှင်၊ သင်၏ နောက် တစ်ကြိမ် စတင်မှု နောက်မှာ ဒေသန္တရ အသုံးပြုသူများ၊ ဖိုင်များ၊ ဒေတာ၊ နှင့် အခြား ဆက်တင်များ အားလုံးကို ဖယ်ရှားပစ်လိမ့်မည်။ အသုံးပြုသူ အားလုံးတို့သည် ထပ်ပြီး လက်မှတ်ထိုး ဝင်ကြရမည်။</translation>
 <translation id="5495597166260341369">မျက်နှာပြင်ပြသမှုကို ဖွင့်ထားရန်</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> ဖြင့်ပုံများရှာရန် ဖိဆွဲပါ</translation>
 <translation id="5496587651328244253">စည်းရုံးရန်</translation>
 <translation id="5496730470963166430">ပေါ့ပ်အပ်များပို့ရန်နှင့် တစ်ဆင့်ပြန်ညွှန်ပြရန် ခွင့်ပြုမထားပါ</translation>
 <translation id="5497251278400702716">ဤဖိုင်</translation>
@@ -5746,7 +5743,6 @@
 သင့်တွင် ကျိုးပေါက်ထားသည့် စကားဝှက် နောက် # ခု ရှိပါသည်။ ‘Google စကားဝှက်မန်နေဂျာ’ က ဤစကားဝှက်ကို ယခုစစ်ရန် အကြံပြုပါသည်။}other{ကျိုးပေါက်ထားသည့် စကားဝှက်ကို ပြောင်းပြီးပါပြီ။
 
 သင့်တွင် ကျိုးပေါက်ထားသည့် စကားဝှက် နောက် # ခု ရှိပါသည်။ ‘Google စကားဝှက်မန်နေဂျာ’ က ဤစကားဝှက်များကို ယခုစစ်ရန် အကြံပြုပါသည်။}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> ဖြင့် ‘ပုံများရှာရန်’ ဖိဆွဲပါ</translation>
 <translation id="6596325263575161958">လုံခြုံအောင်ပြုလုပ်ခြင်း ရွေးချယ်မှုများ</translation>
 <translation id="6596816719288285829">IP လိပ်စာ</translation>
 <translation id="6597017209724497268">နမူနာများ</translation>
@@ -6047,6 +6043,7 @@
 <translation id="6895032998810961280">ရှင်းထုတ်ချိန်အတွင်း သင့်ကွန်ပျူတာတွင် တွေ့သော အန္တရာယ်ဖြစ်စေနိုင်သည့် ဆော့ဖ်ဝဲ၊ စနစ် ဆက်တင်များနှင့် လုပ်ဆောင်ချက်များအကြောင်း အသေးစိတ်များကို Google သို့ အစီရင်ခံပါ</translation>
 <translation id="6896758677409633944">ကူးယူရန်</translation>
 <translation id="6897363604023044284">ရှင်းလင်းရန်အတွက် ဝဘ်ဆိုက်ကို ရွေးရန်</translation>
+<translation id="6897688156970667447">အလင်းနည်းချိန်တွင် အကူအညီဖြစ်ပြီး ဘက်ထရီ ချွေတာနိုင်သည်</translation>
 <translation id="6898440773573063262">Kiosk အပလီကေးရှင်းမျာကို ယခုတော့ ဒီကိရိယာ ပေါ်မှာ အော်တို-ဖွင့်တင်ပေးရန် စီစဉ်ဖွဲ့စည်း၍ ရနိုင်ပြီ။</translation>
 <translation id="6900284862687837908">နောက်ခံအက်ပ်: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">အရည်အသွေးမြှင့်တင်ထားသည့် ကာကွယ်မှု</translation>
@@ -7366,7 +7363,6 @@
 <translation id="8184318863960255706">နောက်ထပ် အချက်အလက်</translation>
 <translation id="8184472985242519288">တညီတညာတည်း</translation>
 <translation id="8186609076106987817">ဆာဗာမှ ဖိုင်ကိုရှာမတွေ့ပါ။</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> ဖြင့် ‘စာမျက်နှာ တစ်စိတ်တစ်ဒေသ’ ကိုရှာရန်</translation>
 <translation id="8188389033983459049">ဆက်လုပ်ရန် သင့်စက်ပစ္စည်း ဆက်တင်များကို စစ်ဆေးပြီး ဖွင့်ပါ</translation>
 <translation id="8188742492803591566">သင်၏စခရင်တွင် ကာစ်စလုပ်ရန် Chromecast (သို့) TV တွင် ပြထားသော ဝင်ခွင့်ကုဒ် ထည့်နိုင်သည်။</translation>
 <translation id="8189306097519446565">ကျောင်းအကောင့်များ</translation>
@@ -7535,6 +7531,7 @@
 <translation id="8358685469073206162">စာမျက်နှာများ ပြန်လည်သိုလှောင်မလား?</translation>
 <translation id="8358912028636606457">တဘ်အသံကို ကာစ်လုပ်ခြင်းအား ဤစက်ပစ္စည်းပေါ်တွင် ပံ့ပိုးမထားပါ။</translation>
 <translation id="835951711479681002">သင့် Google Account တွင် သိမ်းရန်</translation>
+<translation id="8360140320636871023">ပြသမည့်အပြင်အဆင်ကို ပုဂ္ဂိုလ်ရေးသီးသန့်ပြုလုပ်ခြင်း</translation>
 <translation id="8363095875018065315">တည်ငြိမ်</translation>
 <translation id="8363142353806532503">မိုက်ခရိုဖုန်းကို ပိတ်ထားသည်</translation>
 <translation id="8366396658833131068">သင့် ကွန်ရက်၏ ချိတ်ဆက်နိုင်စွမ်း ပြန်လည် ကောင်းလာပါပြီ။ ကျေးဇူးပြုပြီး အခြား ကွန်ရက် တစ်ခုကို ရွေးပါ သို့မဟုတ် သင်၏ kiosk အက်ပ်ကို ဖွင့်တင်ရန် အောက်ပါ 'ဆက်လုပ်ရန်' ခလုတ်ကို နှိပ်ပါ။</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb
index 4394d7f4..9a6c56f 100644
--- a/chrome/app/resources/generated_resources_ne.xtb
+++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -1408,7 +1408,6 @@
     तपाईंलाई पछि Voice Match आफ्नो बच्चाका लागि उपयुक्त छैन भन्ने लाग्यो भने उनको सहायकसम्बन्धी सेटिङमा गई यसलाई हटाए पुग्छ। Voice Match सेटअप गर्ने क्रममा तपाईंको बच्चाले रेकर्ड गरेका अडियो क्लिपहरू हेर्न वा मेटाउन उनको खातामार्फत <ph name="VOICE_MATCH_SETTINGS_URL" /> मा जानुहोस्।
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> प्रयोग गरी पेजको कुनै भाग खोज्नुहोस्</translation>
 <translation id="2309620859903500144">यो साइटलाई तपाईंको चाल वा प्रकाशसम्बन्धी सेन्सरहरूको पहुँच राख्नबाट रोक लागाइएको छ।</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">पेजको URL</translation>
@@ -2032,7 +2031,6 @@
 <translation id="289695669188700754">कुञ्जी आइडी: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">तपाईंले सबै इन्कोग्निटो विन्डो बन्द गरेपछि तपाईंको रोजाइअनुसारको यो सेटिङ हटाइने छ</translation>
 <translation id="2897878306272793870">के तपाईं <ph name="TAB_COUNT" /> ट्याबहरू खोल्न चाहनुभएकोमा निश्चित हुनुहुन्छ?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> प्रयोग गरी आफ्नो स्क्रिनमा भएको कुरा खोज्नुहोस्</translation>
 <translation id="290105521672621980">फाइलले असमर्थित विशेषताहरू प्रयोग गर्दछ</translation>
 <translation id="2901348420151309559">हालसालैका फोटो तथा एपहरू</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ले यो प्रिन्टरसँग संचार गर्न सकेन। प्रिन्टर प्लग इन भएको छ भन्ने सुनिश्चित गर्नुहोस् र फेरि प्रयास गर्नुहोस्।</translation>
@@ -2906,7 +2904,6 @@
 <translation id="3778740492972734840">&amp;विकासकर्ता उपकरणहरू</translation>
 <translation id="3778868487658107119">यसलाई प्रश्नहरू सोध्नुहोस्। यसलाई कार्यहरू गर्न अह्राउनुहोस्। यो मद्दतका लागि सधैँ तत्पर तपाईंको व्यक्तिगत Google हो।</translation>
 <translation id="3781742599892759500">Linux लाई माइक्रोफोन प्रयोग गर्न दिने सेटिङ</translation>
-<translation id="378312418865624974">यो कम्प्युटरको लागि एउटा अद्वितीय पहिचानकर्ता पढ्नुहोस्</translation>
 <translation id="3784472333786002075">कुकीहरू भनेका वेबसाइटहरूले सिर्जना गर्ने फाइल हुन्। कुकीहरू दुई प्रकारका हुन्छन्: तपाईं जाने साइटले प्राथमिक श्रोतका कुकीहरू बनाउँछ। यो साइट ठेगाना पट्टीमा देखाइन्छ। अन्य साइटहरूले तेस्रो पक्षीय कुकीहरू सिर्जना गर्छन्। तपाईं जाने वेबसाइटमा तपाईंले देख्ने विज्ञापन वा फोटो जस्ता केही सामग्री यी साइटहरूको स्वामित्वमा रहन्छन्।</translation>
 <translation id="3785308913036335955">एप्स शर्टकट देखाउनुहोस्</translation>
 <translation id="3785727820640310185">यस साइटका लागि सुरक्षित गरिएका पासवर्डहरू</translation>
@@ -3559,7 +3556,6 @@
 <translation id="4415748029120993980">SECG अण्डाकार कर्भ secp384r1 (NIST P-521 पनि भनिन्छ)</translation>
 <translation id="4416450511678320850">यो सामग्रीका लागि कुनै पनि एप उपलब्ध छैन</translation>
 <translation id="4416582610654027550">कुनै मान्य URL टाइप गर्नुहोस्</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> प्रयोग गरी खोज्न फोटोहरूमाथि ड्र्याग गर्नुहोस्</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> लाई सधैँ कुकीहरू सेट गर्ने अनुमति दिनुहोस्</translation>
 <translation id="4421932782753506458">फ्लफी</translation>
 <translation id="4423376891418188461">सेटिङहरूलाई पुनर्स्थापना गर्नुहोस्</translation>
@@ -3630,6 +3626,7 @@
 <translation id="449232563137139956">साइटहरूले अनलाइन स्टोर वा समाचारमूलक लेखमा फोटो देखाउने जस्ता प्रयोजनका लागि चित्रण उपलब्ध गराउन सामान्यतया फोटोहरू देखाउँछन्</translation>
 <translation id="4492698018379445570">आफूले सपिङ कार्टमा हालेका वस्तुहरू हेर्नुहोस् र आफूलाई मन लागेका बेला चेक आउट गर्नुहोस्</translation>
 <translation id="4493468155686877504">सिफारिस गरिएको (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">यो एक्स्टेन्सनलाई <ph name="SITE" /> मा चल्ने अनुमति दिने हो?</translation>
 <translation id="4495419450179050807">यो पेजमा नदेखाउनुहोस्</translation>
 <translation id="4497145443434063861">कम्प्युटर र Chromecast बेग्लाबेग्लै Wi-Fi नेटवर्कहरू (जस्तै: २.४ GHz र ५ GHz) मा कनेक्ट गरिएका छन्</translation>
 <translation id="4500114933761911433"><ph name="PLUGIN_NAME" /> क्र्यास भएको छ</translation>
@@ -3697,7 +3694,6 @@
 <translation id="4550926046134589611">खोल्न मिल्ने केही लिंकहरू अझै पनि <ph name="APP_NAME" /> मा खुल्ने छन्।</translation>
 <translation id="4551763574344810652">अन्डू गर्न <ph name="MODIFIER_KEY_DESCRIPTION" /> थिच्नुहोस्</translation>
 <translation id="4553526521109675518">तपाईंले आफ्नो Chromebook को भाषा परिवर्तन यसलाई रिस्टार्ट गर्नु पर्ने हुन्छ। <ph name="BEGIN_LINK_LEARN_MORE" />थप जान्नुहोस्<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> प्रयोग गरी खोज्न फोटोहरूमाथि ड्र्याग गर्नुहोस्</translation>
 <translation id="4554591392113183336">अवस्थित संस्करणसँग तुलना गर्दा बाह्य विस्तार समान वा तल्लो संस्करणमा छ।</translation>
 <translation id="4555769855065597957">छाया</translation>
 <translation id="4555863373929230635">आफ्नो Google खातामा पासवर्डहरू सुरक्षित गर्न साइन इन गरी सिंक गर्ने सुविधा अन गर्नुहोस्।</translation>
@@ -4548,7 +4544,6 @@
 <translation id="5427459444770871191">दायाँबाट &amp;घुमाउनुहोस्</translation>
 <translation id="542750953150239272">तपाईंले जारी राख्नुभयो भने तपाईं यो डिभाइसले Google, तपाईंको मोबाइल सेवा प्रदायक र तपाईंको डिभाइसको निर्माताबाट सम्भवतः मोबाइल डेटा प्रयोग गरी अपडेट र एपहरू स्वतः डाउनलोड तथा इन्स्टल गर्न सक्छ भन्ने कुरामा सहमत हुनुहुन्छ भन्ने अर्थ लाग्छ। यीमध्ये केही एपहरूले एपभित्र किनमेल गर्ने सुविधा उपलब्ध गराउन सक्छन्।</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (अपडेट उपलब्ध छ)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> प्रयोग गरी आफ्नो स्क्रिनमा भएको कुरा खोज्नुहोस्</translation>
 <translation id="542948651837270806">विश्वसनीय प्लेटफर्मको मोड्युलको अद्यावधिक स्थापना गरिनु पर्छ। <ph name="TPM_FIRMWARE_UPDATE_LINK" /> हेर्नुहोस्</translation>
 <translation id="5430931332414098647">तात्कालिक टेदरिङ</translation>
 <translation id="5431318178759467895">रङ्ग</translation>
@@ -4621,7 +4616,6 @@
 <translation id="5494920125229734069">सबै चयन गर्नुहोस्</translation>
 <translation id="5495466433285976480">यसले तपाईंको अर्को पुन: सुरुवात पछि सबै स्थानीय प्रयोगकर्ताहरू, फाइलहरू, डाटा, र अन्य सेटिङहरू हटाउनेछ। सबै प्रयोगकर्ताहरूलाई पुन: साइन इन गर्न आवश्यक हुनेछ।</translation>
 <translation id="5495597166260341369">प्रदर्शन सक्रिय राख्नुहोस्</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> प्रयोग गरी फोटोहरू खोज्न ड्र्याग गर्नुहोस्</translation>
 <translation id="5496587651328244253">सुव्यवस्थित गर्नुहोस्</translation>
 <translation id="5496730470963166430">पप-अपहरू पठाउन वा रिडिरेक्टहरू प्रयोग गर्नेे अनुमति नदिइएका साइटहरू</translation>
 <translation id="5497251278400702716">यो फाइल</translation>
@@ -5731,7 +5725,6 @@
 तपाईंको थप # वटा पासवर्ड अरूले देखेका छन्। Google पासवर्ड म्यानेजरले यो पासवर्ड तत्काल जाँच्न सिफारिस गरेको छ।}other{अरूले देखेको पासवर्ड सफलतापूर्वक परिवर्तन गरियो।
 
 तपाईंका थप # वटा पासवर्ड अरूले देखेका छन्। Google पासवर्ड म्यानेजरले यी पासवर्डहरू तत्काल जाँच्न सिफारिस गरेको छ।}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> प्रयोग गरी फोटोहरू खोज्न ड्र्याग गर्नुहोस्</translation>
 <translation id="6596325263575161958">गुप्तीकरण विकल्पहरू</translation>
 <translation id="6596816719288285829">IP ​​ठेगाना</translation>
 <translation id="6597017209724497268">नमूनाहरू</translation>
@@ -7351,7 +7344,6 @@
 <translation id="8184318863960255706">थप जानकारी</translation>
 <translation id="8184472985242519288">एकरूपता</translation>
 <translation id="8186609076106987817">सर्भरले फाइल फेला पार्न सकेन।</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> प्रयोग गरी पेजको कुनै भाग खोज्नुहोस्</translation>
 <translation id="8188389033983459049">आफ्नो यन्त्रको सेटिङको जाँच गर्नुहोस् र जारी राख्न यसलाई अन गर्नुहोस्</translation>
 <translation id="8188742492803591566">आफ्नो स्क्रिन कास्ट गर्न थाल्न Chromecast वा टिभीमा देखाइएको एक्सेस कोड हाल्नुहोस्।</translation>
 <translation id="8189306097519446565">विद्यालयका खाताहरू</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index 88e3a52..054bd74d 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -1410,7 +1410,6 @@
 Als je later besluit dat je niet wilt dat je kind Voice Match gebruikt, verwijder je de functie via de instellingen voor de Assistent op het apparaat van je kind. Als je de audiofragmenten die je kind opneemt tijdens het instellen van Voice Match wilt bekijken of verwijderen, ga je vanuit het account van je kind naar <ph name="VOICE_MATCH_SETTINGS_URL" />.
     <ph name="BR" />
 <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Deel van de pagina zoeken met <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Deze site heeft geen toegang tot je bewegings- of lichtsensoren.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Pagina-URL</translation>
@@ -2033,7 +2032,6 @@
 <translation id="289695669188700754">Sleutel-ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Deze aangepaste instelling wordt verwijderd als je al je incognitovensters sluit</translation>
 <translation id="2897878306272793870">Weet je zeker dat je <ph name="TAB_COUNT" /> tabbladen wilt openen?</translation>
-<translation id="2900477968385519153">Zoeken op je scherm met <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Bestand maakt gebruik van niet-ondersteunde functies</translation>
 <translation id="2901348420151309559">Recente foto's en apps</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> kan niet communiceren met deze printer. Controleer of de printer is aangesloten en probeer het opnieuw.</translation>
@@ -2906,7 +2904,6 @@
 <translation id="3778740492972734840">&amp;Hulpprogramma's voor ontwikkelaars</translation>
 <translation id="3778868487658107119">Je kunt de Assistent vragen stellen en opdrachten geven. De Assistent is je eigen persoonlijke Google dat altijd klaarstaat om je te helpen.</translation>
 <translation id="3781742599892759500">Microfoontoegang voor Linux</translation>
-<translation id="378312418865624974">Een unieke ID voor deze computer lezen</translation>
 <translation id="3784472333786002075">Cookies zijn bestanden die worden gemaakt door websites. Er zijn twee typen cookies: first-party cookies worden gemaakt door de site die je bezoekt. Je vindt de site in de adresbalk. Cookies van derden (third-party cookies) worden gemaakt door andere sites. Deze sites zijn eigenaar van een deel van de content (zoals advertenties of afbeeldingen) die je ziet op de website die je bezoekt.</translation>
 <translation id="3785308913036335955">Snelle link voor apps bekijken</translation>
 <translation id="3785727820640310185">Opgeslagen wachtwoorden voor deze site</translation>
@@ -3558,7 +3555,6 @@
 <translation id="4415748029120993980">Elliptische SECG-kromme secp384r1 (ook wel NIST P-384)</translation>
 <translation id="4416450511678320850">Geen apps beschikbaar voor deze content</translation>
 <translation id="4416582610654027550">Voer een geldige URL in</translation>
-<translation id="4417162649853416189">Slepen over afbeeldingen om te zoeken met <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979"><ph name="HOST" /> altijd toestaan om cookies in te stellen</translation>
 <translation id="4421932782753506458">Pluisje</translation>
 <translation id="4423376891418188461">Instellingen herstellen</translation>
@@ -3629,6 +3625,7 @@
 <translation id="449232563137139956">Sites bekijken afbeeldingen meestal ter illustratie, zoals foto's voor online winkels of nieuwsartikelen</translation>
 <translation id="4492698018379445570">Vind wat je hebt toegevoegd aan winkelwagens en reken af zodra je er klaar voor bent</translation>
 <translation id="4493468155686877504">Aanbevolen (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">Deze extensie toestaan op <ph name="SITE" />?</translation>
 <translation id="4495419450179050807">Niet op deze pagina bekijken</translation>
 <translation id="4497145443434063861">Pc en Chromecast op verschillende wifi-netwerken (bijvoorbeeld 2,4 GHz en 5 GHz)</translation>
 <translation id="4500114933761911433"><ph name="PLUGIN_NAME" /> is gecrasht</translation>
@@ -3696,7 +3693,6 @@
 <translation id="4550926046134589611">Bepaalde ondersteunde links worden nog steeds geopend in <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Druk op <ph name="MODIFIER_KEY_DESCRIPTION" /> om dit ongedaan te maken</translation>
 <translation id="4553526521109675518">Je moet je Chromebook opnieuw opstarten om de taal van het apparaat te wijzigen. <ph name="BEGIN_LINK_LEARN_MORE" />Meer informatie<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Slepen over afbeeldingen om te zoeken met <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Externe uitbreiding heeft dezelfde of een lagere versie dan de bestaande.</translation>
 <translation id="4555769855065597957">Schaduw</translation>
 <translation id="4555863373929230635">Log in en zet de synchronisatie aan om wachtwoorden op te slaan in je Google-account.</translation>
@@ -4546,7 +4542,6 @@
 <translation id="5427459444770871191">Rechtsom &amp;draaien</translation>
 <translation id="542750953150239272">Als je doorgaat, ga je ermee akkoord dat dit apparaat ook automatisch updates of apps van Google, je provider of de fabrikant van je apparaat kan downloaden en installeren, en dat hiervoor mogelijk mobiele data worden gebruikt. Sommige van deze apps kunnen in-app-aankopen aanbieden.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Update is beschikbaar)</translation>
-<translation id="5429373054983029602">Zoeken op je scherm met <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Er moet een update voor de Trusted Platform Module-firmware worden geïnstalleerd. Zie <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Instant-tethering</translation>
 <translation id="5431318178759467895">Kleur</translation>
@@ -4619,7 +4614,6 @@
 <translation id="5494920125229734069">Alles selecteren</translation>
 <translation id="5495466433285976480">Hiermee worden alle lokale gebruikers, bestanden, gegevens en andere instellingen verwijderd nadat je het apparaat opnieuw hebt opgestart. Alle gebruikers moeten opnieuw inloggen.</translation>
 <translation id="5495597166260341369">Scherm aan laten</translation>
-<translation id="549580971452855947">Slepen om afbeeldingen te zoeken met <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organiseren</translation>
 <translation id="5496730470963166430">Geen toestemming om pop-ups te sturen of omleidingen te gebruiken</translation>
 <translation id="5497251278400702716">Dit bestand</translation>
@@ -5726,7 +5720,6 @@
 Je hebt nog # gehackt wachtwoord. Google Wachtwoordmanager raadt je aan dit wachtwoord nu te checken.}other{Het gehackte wachtwoord is gewijzigd.
 
 Je hebt nog # gehackte wachtwoorden. Google Wachtwoordmanager raadt je aan deze wachtwoorden nu te checken.}}</translation>
-<translation id="6595792813574514527">Slepen om afbeeldingen te zoeken met <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opties voor encryptie</translation>
 <translation id="6596816719288285829">IP-adres</translation>
 <translation id="6597017209724497268">Voorbeelden</translation>
@@ -7344,7 +7337,6 @@
 <translation id="8184318863960255706">Meer informatie</translation>
 <translation id="8184472985242519288">Uniform</translation>
 <translation id="8186609076106987817">De server kan het bestand niet vinden.</translation>
-<translation id="8186704951085064172">Deel van de pagina zoeken met <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Check de instellingen van je apparaat en zet je apparaat aan om door te gaan</translation>
 <translation id="8188742492803591566">Geef de toegangscode op die je ziet op de Chromecast of tv om je scherm te casten.</translation>
 <translation id="8189306097519446565">Schoolaccounts</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 19146d6..439cbc6 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -182,6 +182,7 @@
 <translation id="1166583374608765787">Gjennomgå navneoppdatering</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> tilhører skrivebordet <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">Åpner om <ph name="TIME_REMAINING" />...</translation>
+<translation id="1169266963600477608">Spillkontroller</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> inneholder sensitive eller farlige data. Administratoren din sier «<ph name="CUSTOM_MESSAGE" />».</translation>
 <translation id="1171135284592304528">Fremhev objektet med tastaturfokus når det endres</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> vil koble til en HID-enhet</translation>
@@ -203,6 +204,7 @@
 <translation id="1188807932851744811">Loggen er ikke lastet opp.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{Tilgang til en fil som er lagret på datamaskinen din}other{Tilgang til # filer som er lagret på datamaskinen din}}</translation>
 <translation id="119092896208640858">For å slette nettleserdata på kun denne enheten, men beholde dataene på Google-kontoen, må du <ph name="BEGIN_LINK" />logge ut<ph name="END_LINK" />.</translation>
+<translation id="1191353342579061195">Velg temaet som passer til behovene dine. For å endre tema, bakgrunn, skjermsparer med mer, bare høyreklikk på skrivebordet.</translation>
 <translation id="1192706927100816598">{0,plural, =1{Du blir logget av automatisk om # sekund.
 <ph name="DOMAIN" /> krever at smartkortet blir stående i.}other{Du blir logget av automatisk om # sekunder.
 <ph name="DOMAIN" /> krever at smartkortet blir stående i.}}</translation>
@@ -1298,6 +1300,7 @@
 <translation id="2220409419896228519">Legg til bokmerker i favorittappene dine fra Google</translation>
 <translation id="2220529011494928058">Rapporter et problem</translation>
 <translation id="2220572644011485463">PIN-kode eller passord</translation>
+<translation id="222115440608612541">Bytt tema ved soloppgang og solnedgang</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">Mediekilde uten navn</translation>
 <translation id="2224444042887712269">Denne innstillingen tilhører <ph name="OWNER_EMAIL" />.</translation>
@@ -1419,7 +1422,6 @@
     Hvis du senere kommer frem til at barnet ikke skal ha Voice Match, kan du fjerne dette i barnets Assistent-innstillinger. For å se eller slette lydklippene barnet tar opp under Voice Match-konfigureringen, gå til <ph name="VOICE_MATCH_SETTINGS_URL" /> med barnets konto.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Søk på en del av siden med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Bevegelses- og lyssensorene er blokkert fra dette nettstedet.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Sidens nettadresse</translation>
@@ -1527,6 +1529,7 @@
 <translation id="241082044617551207">Ukjent programtillegg</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">Funksjonstaster på tastaturet</translation>
+<translation id="2418307627282545839">Hold det lett og luftig</translation>
 <translation id="2419131370336513030">Se installerte apper</translation>
 <translation id="2419706071571366386">Av sikkerhetsårsaker bør du logge av når datamaskinen ikke er i bruk.</translation>
 <translation id="2422125132043002186">Gjenopprettingen av Linux er avbrutt</translation>
@@ -2043,7 +2046,6 @@
 <translation id="289695669188700754">Nøkkel-id: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Denne egendefinerte innstillingen blir fjernet når du lukker alle inkognitovinduer</translation>
 <translation id="2897878306272793870">Er du sikker på at du vil åpne <ph name="TAB_COUNT" /> faner?</translation>
-<translation id="2900477968385519153">Søk på skjermen med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Filen bruker funksjoner som ikke støttes</translation>
 <translation id="2901348420151309559">Nylige bilder og apper</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> kunne ikke kommunisere med denne skriveren. Sørg for at skriveren er koblet til, og prøv igjen.</translation>
@@ -2916,7 +2918,6 @@
 <translation id="3778740492972734840">&amp;Utviklerverktøy</translation>
 <translation id="3778868487658107119">Still den spørsmål. Be den gjøre ting. Den er din personlige Google – alltid klar til å hjelpe.</translation>
 <translation id="3781742599892759500">Mikrofontilgang i Linux</translation>
-<translation id="378312418865624974">lese en unik identifikator for denne datamaskinen</translation>
 <translation id="3784472333786002075">Informasjonskapsler er filer som opprettes av nettsteder. Det finnes to typer informasjonskapsler: Informasjonskapsler fra førstepart opprettes av nettstedet du besøker. Nettstedet vises i adressefeltet. Informasjonskapsler fra tredjeparter opprettes av andre nettsteder. Disse nettstedene eier noe av innholdet, for eksempel annonser eller bilder, som du ser på nettstedet du besøker.</translation>
 <translation id="3785308913036335955">Vis appsnarveien</translation>
 <translation id="3785727820640310185">Lagrede passord for dette nettstedet</translation>
@@ -3373,6 +3374,7 @@
 <translation id="4227605727325220318">Legg til en ny Android-telefon</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Denne utvidelsen er ikke tillatt}other{Noen utvidelser er ikke tillatt}}</translation>
 <translation id="4231095370974836764">Installer apper og spill fra Google Play på <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Lukk spillkontrollene</translation>
 <translation id="4232375817808480934">Konfigurer Kerberos</translation>
 <translation id="4235965441080806197">Avbryt påloggingen</translation>
 <translation id="4236163961381003811">Oppdag flere utvidelser</translation>
@@ -3567,7 +3569,6 @@
 <translation id="4415748029120993980">SECG elliptisk kurve secp384r1 (også kjent som NIST P-384)</translation>
 <translation id="4416450511678320850">Ingen apper er tilgjengelige for dette innholdet</translation>
 <translation id="4416582610654027550">Skriv inn en gyldig nettadresse</translation>
-<translation id="4417162649853416189">Dra over bilder for å søke med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Tillat alltid at <ph name="HOST" /> angir informasjonskapsler</translation>
 <translation id="4421932782753506458">Pus</translation>
 <translation id="4423376891418188461">Gjenopprett innstillingene</translation>
@@ -3638,6 +3639,7 @@
 <translation id="449232563137139956">Nettsteder viser vanligvis bilder for illustrasjonsformål, som for eksempel bilder i nettbutikker eller nyhetsartikler</translation>
 <translation id="4492698018379445570">Finn det du har lagt til i handlekurver, og betal når du er klar</translation>
 <translation id="4493468155686877504">Anbefalt (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">Vil du tillate denne utvidelsen på <ph name="SITE" />?</translation>
 <translation id="4495419450179050807">Ikke vis på denne siden</translation>
 <translation id="4497145443434063861">PC og Chromecast på ulike Wi-Fi-nettverk (f.eks. 2,4 GHz og 5 GHz)</translation>
 <translation id="4500114933761911433"><ph name="PLUGIN_NAME" /> har krasjet</translation>
@@ -3705,7 +3707,6 @@
 <translation id="4550926046134589611">Noen støttede linker åpnes fremdeles i <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Trykk på <ph name="MODIFIER_KEY_DESCRIPTION" /> for å angre</translation>
 <translation id="4553526521109675518">Du må starte Chromebooken på nytt for å bytte enhetsspråket. <ph name="BEGIN_LINK_LEARN_MORE" />Finn ut mer<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Dra over bilder for å søke med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Den eksterne utvidelsen har samme eller lavere versjonsnummer som den eksisterende utvidelsen.</translation>
 <translation id="4555769855065597957">Skygge</translation>
 <translation id="4555863373929230635">For å lagre passord i Google-kontoen, logg på og slå på synkronisering.</translation>
@@ -4555,7 +4556,6 @@
 <translation id="5427459444770871191">Rotér &amp;med klokken</translation>
 <translation id="542750953150239272">Ved å fortsette godtar du at denne enheten også kan laste ned og installere oppdateringer automatisk fra Google, operatøren din og enhetens produsent. Dette bruker muligens mobildata. Noen av disse appene kan tilby kjøp i appen.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (oppdatering er tilgjengelig)</translation>
-<translation id="5429373054983029602">Søk på skjermen med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">En oppdatering for Trusted Platform Module-fastvaren må installeres. Se <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Umiddelbar internettdeling</translation>
 <translation id="5431318178759467895">Farge</translation>
@@ -4628,7 +4628,6 @@
 <translation id="5494920125229734069">Velg alle</translation>
 <translation id="5495466433285976480">Dette fjerner alle lokale brukere, filer, data og andre innstillinger etter neste omstart. Alle brukere må logge inn på nytt.</translation>
 <translation id="5495597166260341369">Hold skjermen påslått</translation>
-<translation id="549580971452855947">Dra for å søke i bilder med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organiser</translation>
 <translation id="5496730470963166430">Nettsteder som ikke har lov til å sende forgrunnsvinduer eller bruke viderekoblinger</translation>
 <translation id="5497251278400702716">Denne filen</translation>
@@ -5739,7 +5738,6 @@
 Du har # passord til som er utsatt for sikkerhetsbrudd. Google Passordlagring anbefaler at du sjekker dette passordet nå.}other{Passordet som var utsatt for sikkerhetsbrudd, ble endret.
 
 Du har # passord til som er utsatt for sikkerhetsbrudd. Google Passordlagring anbefaler at du sjekker disse passordene nå.}}</translation>
-<translation id="6595792813574514527">Dra for å søke i bilder med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Krypteringsalternativer</translation>
 <translation id="6596816719288285829">IP-adresse</translation>
 <translation id="6597017209724497268">Datapunkter</translation>
@@ -6040,6 +6038,7 @@
 <translation id="6895032998810961280">Rapportér detaljer til Google om skadelige programmer, systeminnstillinger og prosesser som ble funnet på datamaskinen din i denne opprydningen.</translation>
 <translation id="6896758677409633944">Kopiér</translation>
 <translation id="6897363604023044284">Velg nettsteder å slette data fra</translation>
+<translation id="6897688156970667447">Nyttig i svakt lys og sparer batteri</translation>
 <translation id="6898440773573063262">Nå kan kioskapper konfigureres til å starte automatisk på denne enheten.</translation>
 <translation id="6900284862687837908">Bakgrunnsapp: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">Økt beskyttelse</translation>
@@ -7359,7 +7358,6 @@
 <translation id="8184318863960255706">Mer informasjon</translation>
 <translation id="8184472985242519288">Helhetlig</translation>
 <translation id="8186609076106987817">Tjeneren fant ikke filen.</translation>
-<translation id="8186704951085064172">Søk på en del av siden med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Sjekk enhetsinnstillingene dine og slå det på for å fortsette</translation>
 <translation id="8188742492803591566">Oppgi tilgangskoden som vises på Chromecasten eller TV-en, for å begynne å caste skjermen din.</translation>
 <translation id="8189306097519446565">Skolekontoer</translation>
@@ -7528,6 +7526,7 @@
 <translation id="8358685469073206162">Vil du gjenopprette sidene?</translation>
 <translation id="8358912028636606457">Denne enheten har ikke støtte for å caste fanelyd.</translation>
 <translation id="835951711479681002">Lagre i Google-kontoen din</translation>
+<translation id="8360140320636871023">Gi skjermtemaet personlig preg</translation>
 <translation id="8363095875018065315">stabil</translation>
 <translation id="8363142353806532503">Mikrofonen er blokkert</translation>
 <translation id="8366396658833131068">Nettverkstilkoblingen er gjenopprettet. Velg et annet nettverk eller trykk på «Fortsett»-knappen nedenfor for å starte kioskappen din.</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb
index 0bbd5a1b..79b543f 100644
--- a/chrome/app/resources/generated_resources_or.xtb
+++ b/chrome/app/resources/generated_resources_or.xtb
@@ -1408,7 +1408,6 @@
 ଯଦି Voice Matchଟି ଆପଣଙ୍କ ପିଲା ପାଇଁ ଠିକ୍ ନୁହେଁ ବୋଲି ଆପଣ ପରେ ନିଷ୍ପତ୍ତି ନିଅନ୍ତି, ତେବେ ଏହାକୁ ତା'ର Assistant ସେଟିଂସରୁ କାଢ଼ି ଦିଅନ୍ତୁ। Voice Match ସେଟଅପ୍ କରିବା ସମୟରେ ଆପଣଙ୍କ ପିଲା ରେକର୍ଡ କରିଥିବା ଅଡିଓ କ୍ଲିପଗୁଡ଼ିକ ଦେଖିବାକୁ କିମ୍ବା ଡିଲିଟ୍ କରିବାକୁ ଆପଣଙ୍କ ପିଲାର ଆକାଉଣ୍ଟରୁ <ph name="VOICE_MATCH_SETTINGS_URL" />କୁ ଯାଆନ୍ତୁ।
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> ମାଧ୍ୟମରେ ପୃଷ୍ଠାର କିଛି ଅଂଶ ସନ୍ଧାନ କରନ୍ତୁ</translation>
 <translation id="2309620859903500144">ଏହି ସାଇଟ୍‍କୁ ଆପଣଙ୍କ ମୋସନ୍ ଏବଂ ଲାଇଟ୍ ସେନ୍‌ସର୍ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ବ୍ଲକ୍ କରାଯାଇଛି।</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">ପୃଷ୍ଠା URL</translation>
@@ -2032,7 +2031,6 @@
 <translation id="289695669188700754">କୀ ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">ଆପଣ ଆପଣଙ୍କ ସମସ୍ତ ଇନକଗ୍ନିଟୋ ୱିଣ୍ଡୋ ବନ୍ଦ କଲେ ଏହି କଷ୍ଟମ୍ ସେଟିଂକୁ କାଢ଼ି ଦିଆଯିବ</translation>
 <translation id="2897878306272793870">ଆପଣ <ph name="TAB_COUNT" /> ଟ୍ୟାବଗୁଡିକ ଖୋଲିବାକୁ ଚାହିଁବା ନିଶ୍ଚିତ କି?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> ମାଧ୍ୟମରେ ଆପଣଙ୍କ ସ୍କ୍ରିନ୍ ସନ୍ଧାନ କରନ୍ତୁ</translation>
 <translation id="290105521672621980">ଫାଇଲ୍, ଅସମର୍ଥିତ ବୈଶିଷ୍ଟ୍ୟଗୁଡ଼ିକୁ ବ୍ୟବହାର କରେ</translation>
 <translation id="2901348420151309559">ବର୍ତ୍ତମାନର ଫଟୋ ଏବଂ ଆପ୍ସ</translation>
 <translation id="2902127500170292085">ଏହି ପ୍ରିଣ୍ଟର୍ ସହ <ph name="EXTENSION_NAME" /> ଯୋଗାଯୋଗ କରିପାରିଲା ନାହିଁ। ପ୍ରିଣ୍ଟର୍ ପ୍ଲଗ୍‌ଇନ୍ ଥିବା ସୁନିଶ୍ଚିତ କରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
@@ -2905,7 +2903,6 @@
 <translation id="3778740492972734840">&amp;ଡେଭଲପର୍‍ ଟୁଲ୍‍</translation>
 <translation id="3778868487658107119">ଏହାକୁ ପ୍ରଶ୍ନଗୁଡ଼ିକ ପଚାରନ୍ତୁ। ଏହାକୁ କିଛି କରିବାକୁ କୁହନ୍ତୁ। ଏହା ଆପଣଙ୍କ ବ୍ୟକ୍ତିଗତ Google, ସହାୟତା ପାଇଁ ସର୍ବଦା ପ୍ରସ୍ତୁତ।</translation>
 <translation id="3781742599892759500">Linux ମାଇକ୍ରୋଫୋନ୍ ଆକ୍ସେସ୍</translation>
-<translation id="378312418865624974">ଏହି କମ୍ପ୍ୟୁଟର୍ ପାଇଁ ଏକ ସ୍ଵତନ୍ତ୍ର ଚିହ୍ନଟକାରୀ ପଢ଼ନ୍ତୁ</translation>
 <translation id="3784472333786002075">କୁକୀଗୁଡ଼ିକ ହେଉଛି ୱେବସାଇଟଗୁଡ଼ିକୁ ଭିଜିଟ୍ କଲେ ତିଆରି ହେଉଥିବା ଫାଇଲଗୁଡ଼ିକ। କୁକୀଗୁଡ଼ିକ ଦୁଇ ପ୍ରକାରର ଅଟେ: ଆପଣ ୱେବସାଇଟଗୁଡ଼ିକୁ ଭିଜିଟ୍ କଲେ ପ୍ରଥମ-ପକ୍ଷ କୁକୀଗୁଡ଼ିକ ତିଆରି ହୁଏ। ଠିକଣା ବାରରେ ସାଇଟ୍ ଦେଖାଯାଏ। ଅନ୍ୟ ସାଇଟଗୁଡ଼ିକୁ ଭିଜିଟ୍ କଲେ ତୃତୀୟ-ପକ୍ଷ କୁକୀଗୁଡ଼ିକ ତିଆରି ହୁଏ। ଏହି ସାଇଟଗୁଡ଼ିକର ବିଜ୍ଞାପନଗୁଡ଼ିକ କିମ୍ବା ଛବିଗୁଡ଼ିକ ପରି କିଛି ବିଷୟବସ୍ତୁ ଉପରେ ମାଲିକାନା ଅଛି, ଯାହାକୁ ଆପଣ ଭିଜିଟ୍ କରୁଥିବା ୱେବସାଇଟରେ ଦେଖନ୍ତି।</translation>
 <translation id="3785308913036335955">ଆପ୍ସ ସର୍ଟକଟ୍ ଦେଖାନ୍ତୁ</translation>
 <translation id="3785727820640310185">ଏହି ସାଇଟ୍ ପାଇଁ ସେଭ୍ ଥିବା ପାସ୍‌ୱାର୍ଡ</translation>
@@ -3557,7 +3554,6 @@
 <translation id="4415748029120993980">SECG ଅଣ୍ଡାକାର ବକ୍ର secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">ଏହି ବିଷୟବସ୍ତୁ ପାଇଁ କୌଣସି ଆପ୍ ଉପଲବ୍ଧ ନାହିଁ</translation>
 <translation id="4416582610654027550">ଏକ ଵୈଧ URL ଟାଇପ୍‌ କରନ୍ତୁ</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> ମାଧ୍ୟମରେ ସନ୍ଧାନ କରିବାକୁ ଇମେଜଗୁଡ଼ିକ ଉପରେ ଡ୍ରାଗ୍ କରନ୍ତୁ</translation>
 <translation id="4419409365248380979">ସର୍ବଦା <ph name="HOST" />କୁ କୁକୀଗୁଡ଼ିକ ସେଟ୍ କରିବା ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ</translation>
 <translation id="4421932782753506458">ଫ୍ଲୁଫି</translation>
 <translation id="4423376891418188461">ସେଟିଂସ୍‍ ରିଷ୍ଟୋର୍‍ କରନ୍ତୁ</translation>
@@ -3696,7 +3692,6 @@
 <translation id="4550926046134589611">କିଛି ସମର୍ଥିତ ଲିଙ୍କ ଏବେ ବି <ph name="APP_NAME" />ରେ ଖୋଲିବ।</translation>
 <translation id="4551763574344810652">ପୂର୍ବବତ୍ କରିବା ପାଇଁ <ph name="MODIFIER_KEY_DESCRIPTION" /> ଦବାନ୍ତୁ</translation>
 <translation id="4553526521109675518">ଡିଭାଇସର ଭାଷା ବଦଳାଇବା ପାଇଁ ଆପଣଙ୍କୁ ଆପଣଙ୍କ Chromebook ରିଷ୍ଟାର୍ଟ କରିବାକୁ ହେବ। <ph name="BEGIN_LINK_LEARN_MORE" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> ମାଧ୍ୟମରେ ସନ୍ଧାନ କରିବାକୁ ଇମେଜଗୁଡ଼ିକ ଉପରେ ଡ୍ରାଗ୍ କରନ୍ତୁ</translation>
 <translation id="4554591392113183336">ବାହ୍ୟ ସମ୍ପ୍ରସାରଣ ବିଦ୍ୟମାନ ଥିବା ସଂସ୍କରଣ ତୁଳନାରେ ସମାନ କିମ୍ବା ନିମ୍ନତର ସଂସ୍କରଣରେ ଅଛି।</translation>
 <translation id="4555769855065597957">ଛାୟା</translation>
 <translation id="4555863373929230635">ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ପାସ୍‌ୱାର୍ଡଗୁଡ଼ିକୁ ସେଭ୍ କରିବା ପାଇଁ ସାଇନ୍ ଇନ୍ କରି ସିଙ୍କ୍ ଚାଲୁ କରନ୍ତୁ।</translation>
@@ -4547,7 +4542,6 @@
 <translation id="5427459444770871191">&amp;ଘଣ୍ଟାକଣ୍ଟା ଦିଗରେ ଘୂରାନ୍ତୁ</translation>
 <translation id="542750953150239272">ଜାରି ରଖି, ଏହି ଡିଭାଇସ ସମ୍ଭବତଃ ସେଲ୍ୟୁଲାର ଡାଟା ବ୍ୟବହାର କରି, Google, ଆପଣଙ୍କ କ୍ୟାରିଅର ଏବଂ ଆପଣଙ୍କ ଡିଭାଇସର ନିର୍ମାତାଙ୍କଠାରୁ, ଅପଡେଟ ଓ ଆପଗୁଡ଼ିକୁ ମଧ୍ୟ ସ୍ଵଚାଳିତ ଭାବେ ଡାଉନଲୋଡ ଏବଂ ଇନଷ୍ଟଲ କରିପାରିବ ବୋଲି ଆପଣ ସମ୍ମତ ହୁଅନ୍ତି। ଏହି ଆପଗୁଡ଼ିକ ମଧ୍ୟରୁ କିଛି ଆପ ଇନ-ଆପ କ୍ରୟଗୁଡ଼ିକ ଅଫର କରିପାରେ।</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (ଅପ୍‍‍ଡେଟ୍ ଉପଲବ୍ଧ ଅଛି)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> ମାଧ୍ୟମରେ ଆପଣଙ୍କ ସ୍କ୍ରିନ୍ ସନ୍ଧାନ କରନ୍ତୁ</translation>
 <translation id="542948651837270806">ବିଶ୍ୱସ୍ତ ପ୍ଲାଟଫର୍ମ ମଡ୍ୟୁଲ୍ ଫାର୍ମୱେର୍ ପାଇଁ ଏକ ଅପଡେଟ୍ ଇନଷ୍ଟଲ୍ କରିବାର ଆବଶ୍ୟକତା ଅଛି। <ph name="TPM_FIRMWARE_UPDATE_LINK" /> ଦେଖନ୍ତୁ</translation>
 <translation id="5430931332414098647">ଇନ୍‌ଷ୍ଟାଣ୍ଟ ଟିଥରିଂ</translation>
 <translation id="5431318178759467895">ରଙ୍ଗ</translation>
@@ -4620,7 +4614,6 @@
 <translation id="5494920125229734069">ସମସ୍ତ ଚୟନ କରନ୍ତୁ</translation>
 <translation id="5495466433285976480">ଆପଣଙ୍କର ପରବର୍ତ୍ତୀ ରିଷ୍ଟାର୍ଟ ପରେ ଏହ ସମସ୍ତ ସ୍ଥାନୀୟ ଉପଯୋଗକର୍ତ୍ତା, ଫାଇଲ୍‌, ଡାଟା ଏବଂ ଅନ୍ୟ ସେଟିଂସ୍‍ କାଢ଼ିବ। ସମସ୍ତ ଉପଯୋଗକର୍ତ୍ତା ପୁଣି ସାଇନ୍‌ ଇନ୍‌ କରିବା ଆବଶ୍ୟକ କରିବେ।</translation>
 <translation id="5495597166260341369">ଡିସ୍‌ପ୍ଲେ ଚାଲୁ ରଖନ୍ତୁ</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> ମାଧ୍ୟମରେ ଇମେଜଗୁଡ଼ିକୁ ସନ୍ଧାନ କରିବା ପାଇଁ ଡ୍ରାଗ୍ କରନ୍ତୁ</translation>
 <translation id="5496587651328244253">ଆୟୋଜିତ</translation>
 <translation id="5496730470963166430">ପପ୍-ଅପଗୁଡ଼ିକ ପଠାଇବାକୁ କିମ୍ବା ରିଡାଇରେକ୍ଟଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବାକୁ ଅନୁମତି ଦିଆଯାଇନାହିଁ</translation>
 <translation id="5497251278400702716">ଏହି ଫାଇଲ୍</translation>
@@ -5729,7 +5722,6 @@
 ଆପଣଙ୍କର ଅଧିକ #ଟି ଚୋରି ହୋଇଯାଇଥିବା ପାସୱାର୍ଡ ଅଛି। Google Password Manager ବର୍ତ୍ତମାନ ଏହି ପାସୱାର୍ଡକୁ ଯାଞ୍ଚ କରିବା ପାଇଁ ସୁପାରିଶ କରେ।}other{ଚୋରି ହୋଇଯାଇଥିବା ପାସୱାର୍ଡ ସଫଳତାର ସହ ପରିବର୍ତ୍ତନ କରାଯାଇଛି।
 
 ଆପଣଙ୍କର ଅଧିକ #ଟି ଚୋରି ହୋଇଯାଇଥିବା ପାସୱାର୍ଡ ଅଛି। Google Password Manager ବର୍ତ୍ତମାନ ଏହି ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିବା ପାଇଁ ସୁପାରିଶ କରେ।}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> ମାଧ୍ୟମରେ ଇମେଜଗୁଡ଼ିକୁ ସନ୍ଧାନ କରିବା ପାଇଁ ଡ୍ରାଗ୍ କରନ୍ତୁ</translation>
 <translation id="6596325263575161958">ଏନ୍‌କ୍ରିପ୍ସନ୍ ବିକଳ୍ପ</translation>
 <translation id="6596816719288285829">IP ଠିକଣା</translation>
 <translation id="6597017209724497268">ନମୁନା</translation>
@@ -7348,7 +7340,6 @@
 <translation id="8184318863960255706">ଅଧିକ ସୂଚନା</translation>
 <translation id="8184472985242519288">ସମାନ</translation>
 <translation id="8186609076106987817">ଫାଇଲ୍‌କୁ ସର୍ଭର୍‌ ଖୋଜିପାରିଲା ନାହିଁ।</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> ମାଧ୍ୟମରେ ପୃଷ୍ଠାର କିଛି ଅଂଶ ସନ୍ଧାନ କରନ୍ତୁ</translation>
 <translation id="8188389033983459049">ନିଜର ଡିଭାଇସ୍ ସେଟିଂସ୍ ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ଜାରି ରଖିବାକୁ ଏହାକୁ ଚାଲୁ କରନ୍ତୁ</translation>
 <translation id="8188742492803591566">ଆପଣଙ୍କ ସ୍କ୍ରିନ କାଷ୍ଟ କରିବା ଆରମ୍ଭ କରିବାକୁ Chromecast କିମ୍ବା ଟିଭିରେ ଦେଖାଯାଇଥିବା ଆକ୍ସେସ କୋଡ ଲେଖନ୍ତୁ।</translation>
 <translation id="8189306097519446565">ସ୍କୁଲ୍ ଆକାଉଣ୍ଟଗୁଡ଼ିକ</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb
index cd868c3..e477868 100644
--- a/chrome/app/resources/generated_resources_pa.xtb
+++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -1426,7 +1426,6 @@
     ਜੇ ਤੁਸੀਂ ਬਾਅਦ ਵਿੱਚ ਇਹ ਫ਼ੈਸਲਾ ਕਰਦੇ ਹੋ ਕਿ Voice Match ਤੁਹਾਡੇ ਬੱਚੇ ਲਈ ਸਹੀ ਨਹੀਂ ਹੈ, ਤਾਂ ਬਸ ਇਸ ਨੂੰ ਉਨ੍ਹਾਂ ਦੀਆਂ Assistant ਸੈਟਿੰਗਾਂ ਤੋਂ ਹਟਾ ਦਿਓ। Voice Match ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਵੇਲੇ ਆਪਣੇ ਬੱਚੇ ਦੀਆਂ ਰਿਕਾਰਡ ਕੀਤੀਆਂ ਆਡੀਓ ਕਲਿੱਪਾਂ ਦੇਖਣ ਜਾਂ ਮਿਟਾਉਣ ਲਈ, ਆਪਣੇ ਬੱਚੇ ਦੇ ਖਾਤੇ ਤੋਂ <ph name="VOICE_MATCH_SETTINGS_URL" /> 'ਤੇ ਜਾਓ।
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> ਨਾਲ ਪੰਨੇ ਦਾ ਹਿੱਸਾ ਖੋਜੋ</translation>
 <translation id="2309620859903500144">ਇਸ ਸਾਈਟ ਨੂੰ ਤੁਹਾਡੇ ਮੋਸ਼ਨ ਜਾਂ ਲਾਈਟ ਸੈਂਸਰਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਤੋਂ ਬਲਾਕ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ।</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL ਪੰਨਾ</translation>
@@ -2050,7 +2049,6 @@
 <translation id="289695669188700754">ਕੁੰਜੀ ਆਈ.ਡੀ.: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">ਤੁਹਾਡੇ ਵੱਲੋਂ ਆਪਣੀ ਸਾਰੀਆਂ ਇਨਕੋਗਨਿਟੋ ਵਿੰਡੋਆਂ ਨੂੰ ਬੰਦ ਕਰਨ 'ਤੇ ਇਸ ਵਿਉਂਤਬੱਧ ਸੈਟਿੰਗ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ</translation>
 <translation id="2897878306272793870">ਕੀ ਤੁਸੀਂ ਯਕੀਨੀ ਤੌਰ ਤੇ <ph name="TAB_COUNT" /> ਟੈਬਸ ਖੋਲ੍ਹਣੀਆਂ ਹਨ?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> ਨਾਲ ਆਪਣੀ ਸਕ੍ਰੀਨ ਖੋਜੋ</translation>
 <translation id="290105521672621980">ਫ਼ਾਈਲ ਅਸਮਰਥਿਤ ਵਿਸੇਸ਼ਤਾਵਾਂ ਵਰਤਦੀ ਹੈ</translation>
 <translation id="2901348420151309559">ਹਾਲੀਆ ਫ਼ੋਟੋਆਂ ਅਤੇ ਐਪਾਂ</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ਇਸ ਪ੍ਰਿੰਟਰ ਨਾਲ ਸੰਚਾਰ ਨਹੀਂ ਕਰ ਸਕਿਆ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਪ੍ਰਿੰਟਰ ਪਲਗ ਇਨ ਕੀਤਾ ਹੋਇਆ ਹੈ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation>
@@ -2922,7 +2920,6 @@
 <translation id="3778740492972734840">&amp;ਵਿਕਾਸਕਾਰ ਟੂਲ</translation>
 <translation id="3778868487658107119">ਇਸਨੂੰ ਸਵਾਲ ਪੁੱਛੋ। ਇਸਨੂੰ ਕੰਮ ਕਰਨ ਲਈ ਕਹੋ। ਇਹ ਤੁਹਾਡਾ ਆਪਣਾ Google ਹੈ, ਜੋ ਹਮੇਸ਼ਾ ਮਦਦ ਲਈ ਤਿਆਰ ਹੈ।</translation>
 <translation id="3781742599892759500">Linux ਦੀ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਤੱਕ ਪਹੁੰਚ</translation>
-<translation id="378312418865624974">ਇਸ ਕੰਪਿਊਟਰ ਲਈ ਕਿਸੇ ਵਿਲੱਖਣ ਪਛਾਣਕਰਤਾ ਨੂੰ ਪੜ੍ਹੋ</translation>
 <translation id="3784472333786002075">ਕੁਕੀਜ਼ ਉਹ ਫ਼ਾਈਲਾਂ ਹਨ ਜੋ ਵੈੱਬਸਾਈਟਾਂ ਵੱਲੋਂ ਬਣਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ। ਕੁਕੀਜ਼ ਦੋ ਕਿਸਮਾਂ ਦੀਆਂ ਹੁੰਦੀਆਂ ਹਨ: ਪਹਿਲੀ-ਧਿਰ ਦੀਆਂ ਕੁਕੀਜ਼ ਤੁਹਾਡੇ ਵੱਲੋਂ ਦੇਖੀ ਸਾਈਟ ਵੱਲੋਂ ਬਣਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ। ਸਾਈਟ ਪਤਾ ਬਾਰ 'ਤੇ ਦਿਖਾਈ ਜਾਂਦੀ ਹੈ। ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਕੁਕੀਜ਼ ਹੋਰ ਸਾਈਟਾਂ ਵੱਲੋਂ ਬਣਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ। ਇਹ ਸਾਈਟਾਂ ਵਿਗਿਆਪਨਾਂ ਜਾਂ ਚਿੱਤਰਾਂ ਵਰਗੀ ਕੁਝ ਸਮੱਗਰੀ ਦੀਆਂ ਮਾਲਕ ਹੁੰਦੀਆਂ ਹਨ, ਜੋ ਤੁਸੀਂ ਵੈੱਬਸਾਈਟ 'ਤੇ ਦੇਖਦੇ ਹੋ।</translation>
 <translation id="3785308913036335955">ਐਪ ਸ਼ਾਰਟਕੱਟ ਦਿਖਾਓ</translation>
 <translation id="3785727820640310185">ਇਸ ਸਾਈਟ ਲਈ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡ</translation>
@@ -3575,7 +3572,6 @@
 <translation id="4415748029120993980">SECG ਅੰਡਾਕਾਰ ਘੁਮਾਓ secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">ਇਸ ਸਮੱਗਰੀ ਲਈ ਕੋਈ ਐਪ ਉਪਲਬਧ ਨਹੀਂ</translation>
 <translation id="4416582610654027550">ਕੋਈ ਵੈਧ URL ਟਾਈਪ ਕਰੋ</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> ਨਾਲ ਖੋਜਣ ਲਈ ਚਿੱਤਰਾਂ 'ਤੇ ਘਸੀਟੋ</translation>
 <translation id="4419409365248380979">ਹਮੇਸ਼ਾਂ <ph name="HOST" /> ਨੂੰ ਕੁਕੀਜ਼ ਸੈਟ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿਓ</translation>
 <translation id="4421932782753506458">Fluffy</translation>
 <translation id="4423376891418188461">ਸੈਟਿੰਗਾਂ ਮੁੜ-ਬਹਾਲ ਕਰੋ</translation>
@@ -3646,6 +3642,7 @@
 <translation id="449232563137139956">ਸਾਈਟਾਂ ਆਮ ਤੌਰ 'ਤੇ ਉਦਾਹਰਨ ਮੁਹੱਈਆ ਕਰਵਾਉਣ ਲਈ ਚਿੱਤਰ ਦਿਖਾਉਂਦੀਆਂ ਹਨ ਜਿਵੇਂ ਕਿ ਆਨਲਾਈਨ ਸਟੋਰਾਂ ਜਾਂ ਖਬਰ ਲੇਖਾਂ ਲਈ ਫ਼ੋਟੋਆਂ</translation>
 <translation id="4492698018379445570">ਲੱਭੋ ਕਿ ਖਰੀਦਦਾਰੀ ਕਾਰਟਾਂ ਵਿੱਚ ਤੁਸੀਂ ਕੀ ਸ਼ਾਮਲ ਕੀਤਾ ਹੈ ਅਤੇ ਜਦੋਂ ਤੁਸੀਂ ਤਿਆਰ ਹੋਵੋ, ਤਾਂ ਚੈੱਕ-ਆਊਟ ਕਰੋ</translation>
 <translation id="4493468155686877504">ਸਿਫ਼ਾਰਸ਼ੀ (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">ਕੀ <ph name="SITE" /> 'ਤੇ ਇਸ ਐਕਸਟੈਂਸ਼ਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?</translation>
 <translation id="4495419450179050807">ਇਸ ਸਫ਼ੇ ਤੇ ਨਾ ਦਿਖਾਓ</translation>
 <translation id="4497145443434063861">PC ਅਤੇ Chromecast ਵੱਖ-ਵੱਖ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕਾਂ 'ਤੇ ਹਨ (ਜਿਵੇਂ ਕਿ 2.4GHz
     ਬਨਾਮ 5GHz)</translation>
@@ -3714,7 +3711,6 @@
 <translation id="4550926046134589611">ਕੁਝ ਸਮਰਥਿਤ ਲਿੰਕ ਹਾਲੇ ਵੀ <ph name="APP_NAME" /> ਵਿੱਚ ਖੁੱਲ੍ਹਣਗੇ।</translation>
 <translation id="4551763574344810652">ਅਣਕੀਤਾ ਕਰਨ ਲਈ <ph name="MODIFIER_KEY_DESCRIPTION" /> ਨੂੰ ਦਬਾਓ</translation>
 <translation id="4553526521109675518">ਤੁਹਾਨੂੰ ਡੀਵਾਈਸ ਦੀ ਭਾਸ਼ਾ ਬਦਲਣ ਲਈ Chromebook ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। <ph name="BEGIN_LINK_LEARN_MORE" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> ਨਾਲ ਖੋਜਣ ਲਈ ਚਿੱਤਰਾਂ 'ਤੇ ਘਸੀਟੋ</translation>
 <translation id="4554591392113183336">ਬਾਹਰੀ ਐਕਸਟੈਂਸ਼ਨ ਮੌਜੂਦਾ ਜਾਂ ਘੱਟ ਵਰਜਨ ਦੀ ਹੈ।</translation>
 <translation id="4555769855065597957">ਸ਼ੈਡੋ</translation>
 <translation id="4555863373929230635">ਪਾਸਵਰਡਾਂ ਨੂੰ ਆਪਣੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕਰਨ ਲਈ, ਸਾਈਨ-ਇਨ ਕਰੋ ਅਤੇ ਸਿੰਕ ਚਾਲੂ ਕਰੋ।</translation>
@@ -4565,7 +4561,6 @@
 <translation id="5427459444770871191">&amp;ਕਲੌਕਵਾਈਜ ਰੋਟੇਟ ਕਰੋ</translation>
 <translation id="542750953150239272">ਜਾਰੀ ਰੱਖ ਕੇ, ਤੁਸੀਂ ਸਹਿਮਤੀ ਦਿੰਦੇ ਹੋ ਕਿ ਇਹ ਡੀਵਾਈਸ ਸੰਭਾਵੀ ਤੌਰ 'ਤੇ ਸੈਲਿਊਲਰ ਡਾਟੇ ਦੀ ਵਰਤੋਂ ਨਾਲ Google, ਤੁਹਾਡੇ ਕੈਰੀਅਰ ਅਤੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੇ ਨਿਰਮਾਤਾ ਤੋਂ ਵੀ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਅੱਪਡੇਟ ਅਤੇ ਐਪਾਂ ਨੂੰ ਡਾਊਨਲੋਡ ਅਤੇ ਸਥਾਪਤ ਕਰ ਸਕਦਾ ਹੈ। ਇਨ੍ਹਾਂ ਐਪਾਂ ਵਿੱਚੋਂ ਕੁਝ ਐਪ-ਅੰਦਰ ਖਰੀਦਾਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰ ਸਕਦੀਆਂ ਹਨ।</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (ਅੱਪਡੇਟ ਉਪਲਬਧ ਹੈ)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> ਨਾਲ ਆਪਣੀ ਸਕ੍ਰੀਨ ਖੋਜੋ</translation>
 <translation id="542948651837270806">ਭਰੋਸੇਯੋਗ ਪਲੇਟਫਾਰਮ ਮਾਡਿਊਲ ਫ਼ਰਮਵੇਅਰ ਲਈ ਇੱਕ ਅੱਪਡੇਟ ਸਥਾਪਤ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। <ph name="TPM_FIRMWARE_UPDATE_LINK" /> ਦੇਖੋ</translation>
 <translation id="5430931332414098647">ਤਤਕਾਲ ਟੈਦਰਿੰਗ</translation>
 <translation id="5431318178759467895">ਰੰਗ</translation>
@@ -4638,7 +4633,6 @@
 <translation id="5494920125229734069">ਸਾਰੇ ਚੁਣੋ</translation>
 <translation id="5495466433285976480">ਇੰਝ ਕਰਨ ਨਾਲ ਅਗਲੀ ਵਾਰ ਸਿਸਟਮ ਮੁੜ-ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਬਾਅਦ ਸਾਰੇ ਸਥਾਨਕ ਵਰਤੋਂਕਾਰਾਂ, ਫ਼ਾਈਲਾਂ, ਡਾਟੇ ਅਤੇ ਹੋਰ ਸੈਟਿੰਗਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਦੁਬਾਰਾ ਸਾਈਨ-ਇਨ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ।</translation>
 <translation id="5495597166260341369">ਡਿਸਪਲੇ ਚਾਲੂ ਰੱਖੋ</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> ਨਾਲ ਚਿੱਤਰ ਖੋਜਣ ਲਈ ਘਸੀਟੋ</translation>
 <translation id="5496587651328244253">ਪ੍ਰਬੰਧ ਕਰੋ</translation>
 <translation id="5496730470963166430">ਪੌਪ-ਅੱਪ ਭੇਜਣ ਜਾਂ ਰੀਡਾਇਰੈਕਟ ਵਰਤਣ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ</translation>
 <translation id="5497251278400702716">ਇਹ ਫ਼ਾਈਲ</translation>
@@ -5751,7 +5745,6 @@
 ਤੁਹਾਡੇ ਕੋਲ # ਹੋਰ ਛੇੜਛਾੜ ਵਾਲਾ ਪਾਸਵਰਡ ਹੈ। Google Password Manager ਹੁਣੇ ਇਸ ਪਾਸਵਰਡ ਦੀ ਜਾਂਚ ਕਰਨ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕਰਦਾ ਹੈ।}other{ਛੇੜਛਾੜ ਵਾਲਾ ਪਾਸਵਰਡ ਸਫਲਤਾਪੂਰਕ ਬਦਲਿਆ ਗਿਆ।
 
 ਤੁਹਾਡੇ ਕੋਲ # ਹੋਰ ਛੇੜਛਾੜ ਵਾਲੇ ਪਾਸਵਰਡ ਹਨ। Google Password Manager ਹੁਣੇ ਇਨ੍ਹਾਂ ਪਾਸਵਰਡਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕਰਦਾ ਹੈ।}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> ਨਾਲ ਚਿੱਤਰ ਖੋਜਣ ਲਈ ਘਸੀਟੋ</translation>
 <translation id="6596325263575161958">ਐਨਕ੍ਰਿਪਸ਼ਨ ਚੋਣਾਂ</translation>
 <translation id="6596816719288285829">IP ਪਤਾ</translation>
 <translation id="6597017209724497268">ਨਮੂਨੇ</translation>
@@ -7371,7 +7364,6 @@
 <translation id="8184318863960255706">ਹੋਰ ਜਾਣਕਾਰੀ</translation>
 <translation id="8184472985242519288">ਇੱਕ-ਸਮਾਨ</translation>
 <translation id="8186609076106987817">ਸਰਵਰ ਫਾਈਲ ਨਹੀਂ ਲੱਭ ਸਕਿਆ।</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> ਨਾਲ ਪੰਨੇ ਦਾ ਹਿੱਸਾ ਖੋਜੋ</translation>
 <translation id="8188389033983459049">ਆਪਣੇ ਡੀਵਾਈਸ ਦੀਆਂ ਸੈਟਿੰਗਾਂ ਦੀ ਜਾਂਚ ਕਰੋ ਅਤੇ ਜਾਰੀ ਰੱਖਣ ਲਈ ਇਸਨੂੰ ਚਾਲੂ ਕਰੋ</translation>
 <translation id="8188742492803591566">ਆਪਣੀ ਸਕ੍ਰੀਨ ਨੂੰ ਕਾਸਟ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰਨ ਲਈ Chromecast ਜਾਂ ਟੀਵੀ 'ਤੇ ਦਿਖਾਇਆ ਗਿਆ ਪਹੁੰਚ ਕੋਡ ਦਾਖਲ ਕਰੋ।</translation>
 <translation id="8189306097519446565">ਸਕੂਲੀ ਖਾਤੇ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index 69908a89..a84a516 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -1397,7 +1397,6 @@
     Jeśli później uznasz, że funkcja Voice Match nie jest odpowiednia dla Twojego dziecka, po prostu usuń ją w ustawieniach Asystenta. Aby zobaczyć lub usunąć klipy audio utworzone przez dziecko podczas konfigurowania Voice Match, wejdź na <ph name="VOICE_MATCH_SETTINGS_URL" /> na jego koncie.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Przeszukaj część strony narzędziem <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Ta witryna ma zablokowany dostęp do czujników ruchu i oświetlenia.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL strony</translation>
@@ -2020,7 +2019,6 @@
 <translation id="289695669188700754">Identyfikator klucza: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Gdy zamkniesz wszystkie okna incognito, to niestandardowe ustawienie zostanie usunięte</translation>
 <translation id="2897878306272793870">Czy na pewno chcesz otworzyć <ph name="TAB_COUNT" /> zakładki?</translation>
-<translation id="2900477968385519153">Przeszukaj ekran narzędziem <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Plik korzysta z nieobsługiwanych funkcji</translation>
 <translation id="2901348420151309559">Ostatnie zdjęcia i aplikacje</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> nie może skomunikować się z drukarką. Upewnij się, że jest ona podłączona, i spróbuj ponownie.</translation>
@@ -2893,7 +2891,6 @@
 <translation id="3778740492972734840">&amp;Narzędzia dla deweloperów</translation>
 <translation id="3778868487658107119">Zadawaj mu pytania i wydawaj polecenia. To Twój osobisty asystent, zawsze gotowy do pomocy.</translation>
 <translation id="3781742599892759500">Dostęp do mikrofonu dla Linuksa</translation>
-<translation id="378312418865624974">Odczyt unikalnego identyfikatora tego komputera</translation>
 <translation id="3784472333786002075">Pliki cookie są tworzone przez strony internetowe. Dzielą się na dwa typy: własne pliki cookie są zapisywane przez odwiedzaną stronę. Jej adres znajdziesz w pasku adresu. Pliki cookie innych firm są tworzone przez inne strony. Na tych stronach znajdują się niektóre treści, np. reklamy i obrazy, które wyświetlają się na odwiedzanej stronie.</translation>
 <translation id="3785308913036335955">Pokaż skrót do aplikacji</translation>
 <translation id="3785727820640310185">Zapisano hasła do tej strony</translation>
@@ -3546,7 +3543,6 @@
 <translation id="4415748029120993980">Kryptografia krzywych eliptycznych SECG secp384r1 (inna nazwa: NIST P-384)</translation>
 <translation id="4416450511678320850">Brak aplikacji obsługujących tę zawartość</translation>
 <translation id="4416582610654027550">Wpisz prawidłowy URL</translation>
-<translation id="4417162649853416189">Przeciągnij po obrazie, aby wyszukać narzędziem <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Zawsze zezwalaj witrynie <ph name="HOST" /> na zapisywanie plików cookie</translation>
 <translation id="4421932782753506458">Puszysty</translation>
 <translation id="4423376891418188461">Przywróć ustawienia</translation>
@@ -3685,7 +3681,6 @@
 <translation id="4550926046134589611">Niektóre obsługiwane linki nadal będą się otwierać w aplikacji <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Naciśnij <ph name="MODIFIER_KEY_DESCRIPTION" />, by cofnąć</translation>
 <translation id="4553526521109675518">Aby zmienić język, musisz ponownie uruchomić Chromebooka. <ph name="BEGIN_LINK_LEARN_MORE" />Więcej informacji<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Przeciągnij po obrazie, aby wyszukać narzędziem <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Wersja rozszerzenia zewnętrznego jest starsza lub taka sama jak wersja obecna.</translation>
 <translation id="4555769855065597957">Cień</translation>
 <translation id="4555863373929230635">Aby zapisywać hasła na swoim koncie Google, zaloguj się i włącz synchronizację.</translation>
@@ -4535,7 +4530,6 @@
 <translation id="5427459444770871191">Obróć w &amp;prawo</translation>
 <translation id="542750953150239272">Kontynuując, zgadzasz się na to, żeby to urządzenie mogło automatycznie pobierać oraz instalować aktualizacje i aplikacje od Google, operatora sieci komórkowej i producenta urządzenia, oraz żeby mogło używać w tym celu komórkowej transmisji danych. Niektóre z aplikacji umożliwiają robienie zakupów.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (dostępna aktualizacja)</translation>
-<translation id="5429373054983029602">Przeszukaj ekran narzędziem <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Trzeba zainstalować aktualizację oprogramowania Trusted Platform Module. Zobacz: <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Instant Tethering</translation>
 <translation id="5431318178759467895">Kolor</translation>
@@ -4608,7 +4602,6 @@
 <translation id="5494920125229734069">Wybierz wszystko</translation>
 <translation id="5495466433285976480">To spowoduje usunięcie wszystkich lokalnych użytkowników, plików, danych i innych ustawień po ponownym uruchomieniu. Wszyscy użytkownicy będą musieli zalogować się od nowa.</translation>
 <translation id="5495597166260341369">Nie wyłączaj ekranu</translation>
-<translation id="549580971452855947">Przeciągnij, aby przeszukać obrazy narzędziem <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organizuj</translation>
 <translation id="5496730470963166430">Nie zezwolono na wysyłanie wyskakujących okienek ani używanie przekierowań</translation>
 <translation id="5497251278400702716">Ten plik</translation>
@@ -5723,7 +5716,6 @@
 Masz jeszcze # przejętych haseł. Menedżer haseł Google zaleca, aby jak najszybciej je sprawdzić.}other{Zmieniono przejęte hasło.
 
 Masz jeszcze # przejętego hasła. Menedżer haseł Google zaleca, aby jak najszybciej je sprawdzić.}}</translation>
-<translation id="6595792813574514527">Przeciągnij, aby przeszukać obrazy narzędziem <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opcje szyfrowania</translation>
 <translation id="6596816719288285829">Adres IP</translation>
 <translation id="6597017209724497268">Przykłady</translation>
@@ -7344,7 +7336,6 @@
 <translation id="8184318863960255706">Więcej informacji</translation>
 <translation id="8184472985242519288">Jednolity</translation>
 <translation id="8186609076106987817">Serwer nie znalazł pliku.</translation>
-<translation id="8186704951085064172">Przeszukaj część strony narzędziem <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Sprawdź ustawienia urządzenia i włącz tę opcję, by kontynuować</translation>
 <translation id="8188742492803591566">Aby rozpocząć przesyłanie ekranu, wpisz kod dostępu widoczny na urządzeniu Chromecast lub telewizorze.</translation>
 <translation id="8189306097519446565">Konta szkolne</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index 99707fbe..2b31fbf 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -1426,7 +1426,6 @@
     Se você decidir que não quer mais usar o Voice Match com a criança, basta removê-lo nas configurações do Google Assistente. Para ver ou excluir os clipes de áudio gravados durante a configuração do Voice Match, acesse <ph name="VOICE_MATCH_SETTINGS_URL" /> pela conta da criança.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Pesquisar parte da página usando o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Este site foi impedido de acessar os sensores de luz ou movimento.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL da página</translation>
@@ -2050,7 +2049,6 @@
 <translation id="289695669188700754">ID da chave: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Esta configuração personalizada será removida quando você fechar todas as janelas anônimas</translation>
 <translation id="2897878306272793870">Você quer mesmo abrir <ph name="TAB_COUNT" /> guias?</translation>
-<translation id="2900477968385519153">Pesquisar na tela usando o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">O arquivo utiliza recursos não compatíveis</translation>
 <translation id="2901348420151309559">Fotos e apps recentes</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> não conseguiu se comunicar com esta impressora. Verifique se a impressora está conectada e tente novamente.</translation>
@@ -2924,7 +2922,6 @@
 <translation id="3778740492972734840">Ferramentas do &amp;desenvolvedor</translation>
 <translation id="3778868487658107119">Faça perguntas ou diga a ele o que fazer. É o seu Google pessoal, sempre pronto para ajudar.</translation>
 <translation id="3781742599892759500">Acesso ao microfone no Linux</translation>
-<translation id="378312418865624974">Ler o identificador exclusivo deste computador</translation>
 <translation id="3784472333786002075">Os cookies são arquivos criados pelos sites. Há dois tipos de cookies: os primários são criados pelo site que você visita. Esse é o site exibido na barra de endereço. Os cookies de terceiros são criados por outros sites. Esses sites possuem uma parte do conteúdo, como anúncios ou imagens, que você vê na página da Web visitada.</translation>
 <translation id="3785308913036335955">Mostrar atalho para aplicativos</translation>
 <translation id="3785727820640310185">Senhas salvas para este site</translation>
@@ -3577,7 +3574,6 @@
 <translation id="4415748029120993980">Curva elíptica SECG secp384r1 (também conhecida como NIST P-384)</translation>
 <translation id="4416450511678320850">Nenhum app disponível para esse conteúdo</translation>
 <translation id="4416582610654027550">Digite um URL válido</translation>
-<translation id="4417162649853416189">Arrastar imagens para pesquisar usando o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Sempre permitir que <ph name="HOST" /> configure cookies</translation>
 <translation id="4421932782753506458">Pelúcia</translation>
 <translation id="4423376891418188461">Restaurar configurações</translation>
@@ -3648,6 +3644,7 @@
 <translation id="449232563137139956">Os sites geralmente exibem imagens para fornecer ilustrações, como fotos em lojas on-line ou matérias jornalísticas</translation>
 <translation id="4492698018379445570">Veja o que você adicionou aos carrinhos e finalize a compra quando estiver tudo pronto</translation>
 <translation id="4493468155686877504">Recomendado (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">Permitir essa extensão em <ph name="SITE" />?</translation>
 <translation id="4495419450179050807">Não mostrar esta página</translation>
 <translation id="4497145443434063861">PC e Chromecast em diferentes redes Wi-Fi (por exemplo, 2,4 GHz
     e 5 GHz)</translation>
@@ -3716,7 +3713,6 @@
 <translation id="4550926046134589611">Alguns links com suporte ainda serão abertos no app <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Pressione <ph name="MODIFIER_KEY_DESCRIPTION" /> para desfazer</translation>
 <translation id="4553526521109675518">Será necessário reiniciar o Chromebook para mudar o idioma do dispositivo. <ph name="BEGIN_LINK_LEARN_MORE" />Saiba mais<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Arrastar imagens para pesquisar usando o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">A extensão externa está na mesma versão ou em uma versão anterior à existente.</translation>
 <translation id="4555769855065597957">Shadow</translation>
 <translation id="4555863373929230635">Para salvar senhas na Conta do Google, faça login e ative a sincronização.</translation>
@@ -4567,7 +4563,6 @@
 <translation id="5427459444770871191">Girar no &amp;sentido horário</translation>
 <translation id="542750953150239272">Ao continuar, você aceita que este dispositivo também pode fazer o download e a instalação de atualizações e apps do Google, da operadora e do fabricante do dispositivo automaticamente, possivelmente usando dados da rede celular. Alguns desses apps podem oferecer compras no aplicativo.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (atualização disponível)</translation>
-<translation id="5429373054983029602">Pesquisar na tela usando o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">É necessário instalar uma atualização do firmware Trusted Platform Module. Acesse <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Tethering instantâneo</translation>
 <translation id="5431318178759467895">Colorido</translation>
@@ -4640,7 +4635,6 @@
 <translation id="5494920125229734069">Selecionar tudo</translation>
 <translation id="5495466433285976480">Isto removerá todos os usuários locais, arquivos, dados e outras configurações após sua próxima reinicialização. Todos os usuários terão que fazer login novamente.</translation>
 <translation id="5495597166260341369">Manter a tela ligada</translation>
-<translation id="549580971452855947">Arrastar imagens para pesquisar usando o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organizar</translation>
 <translation id="5496730470963166430">Bloquear o envio de pop-ups ou o uso de redirecionamentos</translation>
 <translation id="5497251278400702716">Este arquivo</translation>
@@ -5754,7 +5748,6 @@
 Há # outra senha comprometida. O Gerenciador de senhas do Google recomenda que ela seja verificada agora mesmo.}other{Você mudou a senha comprometida.
 
 Há # outras senhas comprometidas. O Gerenciador de senhas do Google recomenda que elas sejam verificadas agora mesmo.}}</translation>
-<translation id="6595792813574514527">Arrastar imagens para pesquisar usando o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opções de criptografia</translation>
 <translation id="6596816719288285829">Endereço IP</translation>
 <translation id="6597017209724497268">Exemplos</translation>
@@ -7375,7 +7368,6 @@
 <translation id="8184318863960255706">Mais informações</translation>
 <translation id="8184472985242519288">Uniforme</translation>
 <translation id="8186609076106987817">O servidor não encontrou o arquivo.</translation>
-<translation id="8186704951085064172">Pesquisar parte da página usando o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Verifique as configurações do seu dispositivo e ative-o para continuar</translation>
 <translation id="8188742492803591566">Insira o código de acesso mostrado no Chromecast ou na TV para transmitir a tela.</translation>
 <translation id="8189306097519446565">Contas escolares</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index b54aa298..ba38884 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -180,6 +180,7 @@
 <translation id="1166583374608765787">Analise a atualização do nome</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> pertence ao espaço de trabalho <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">A abrir dentro de <ph name="TIME_REMAINING" />...</translation>
+<translation id="1169266963600477608">Controlos do jogo</translation>
 <translation id="1169435433292653700">O ficheiro <ph name="FILE_NAME" /> tem dados confidenciais ou perigosos. O administrador diz "<ph name="CUSTOM_MESSAGE" />"</translation>
 <translation id="1171135284592304528">Realçar o objeto com o foco do teclado quando é alterado</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> pretende estabelecer ligação a um dispositivo HID</translation>
@@ -201,6 +202,7 @@
 <translation id="1188807932851744811">Registo não carregado.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{Acesso a um ficheiro armazenado no computador}other{Acesso a # ficheiros armazenados no computador}}</translation>
 <translation id="119092896208640858">Para limpar os dados de navegação apenas deste dispositivo e mantê-los na sua Conta Google, <ph name="BEGIN_LINK" />termine a sessão<ph name="END_LINK" />.</translation>
+<translation id="1191353342579061195">Escolha o tema que se adequa às suas necessidades. Para alterar o tema, a imagem de fundo, a proteção de ecrã e muito mais, basta clicar com o botão direito no ambiente de trabalho.</translation>
 <translation id="1192706927100816598">{0,plural, =1{A sua sessão será terminada automaticamente dentro de # segundo.
 <ph name="DOMAIN" /> requer que mantenha o seu cartão inteligente inserido.}other{A sua sessão será terminada automaticamente dentro de # segundos.
 <ph name="DOMAIN" /> requer que mantenha o seu cartão inteligente inserido.}}</translation>
@@ -1292,6 +1294,7 @@
 <translation id="2220409419896228519">Adicione marcadores às suas aplicações Google favoritas.</translation>
 <translation id="2220529011494928058">Comunicar um problema</translation>
 <translation id="2220572644011485463">PIN ou palavra-passe</translation>
+<translation id="222115440608612541">Mude de tema ao nascer e pôr do sol</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">Origem multimédia sem nome</translation>
 <translation id="2224444042887712269">Esta definição pertence a <ph name="OWNER_EMAIL" />.</translation>
@@ -1410,7 +1413,6 @@
     Se decidir mais tarde que o Voice Match não é adequado para a criança, basta removê-lo nas Definições do Assistente. Para ver ou eliminar os clipes de áudio que a criança grava durante a configuração do Voice Match, aceda a <ph name="VOICE_MATCH_SETTINGS_URL" /> na respetiva conta.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Pesquisar parte da página com o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Este site foi impedido de aceder aos seus sensores de movimento ou de luz.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL da página</translation>
@@ -1518,6 +1520,7 @@
 <translation id="241082044617551207">Plug-in desconhecido</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">Teclas de função do teclado</translation>
+<translation id="2418307627282545839">Mantenha o conteúdo claro e iluminado</translation>
 <translation id="2419131370336513030">Ver apps instaladas</translation>
 <translation id="2419706071571366386">Por motivos de segurança, termine a sessão quando não estiver a utilizar o computador.</translation>
 <translation id="2422125132043002186">Restauro do Linux cancelado</translation>
@@ -2034,7 +2037,6 @@
 <translation id="289695669188700754">ID da chave: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Esta definição personalizada é removida quando fecha todas as janelas de navegação anónima.</translation>
 <translation id="2897878306272793870">Tem a certeza de que pretende abrir <ph name="TAB_COUNT" /> separadores?</translation>
-<translation id="2900477968385519153">Pesquisar no ecrã com o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">O ficheiro utiliza funcionalidades não suportadas</translation>
 <translation id="2901348420151309559">Fotos e apps recentes</translation>
 <translation id="2902127500170292085">A extensão <ph name="EXTENSION_NAME" /> não conseguiu comunicar com esta impressora. Certifique-se de que a impressora está ligada à corrente e tente novamente.</translation>
@@ -2908,7 +2910,6 @@
 <translation id="3778740492972734840">Ferramentas &amp;do programador</translation>
 <translation id="3778868487658107119">Faça-lhe perguntas. Diga-lhe para realizar tarefas. É o seu Google pessoal, sempre pronto para ajudar.</translation>
 <translation id="3781742599892759500">Acesso ao microfone do Linux</translation>
-<translation id="378312418865624974">Ler um identificador único para este computador</translation>
 <translation id="3784472333786002075">Os cookies são ficheiros criados pelos Websites. Existem dois tipos de cookies: os cookies originais são criados pelo site ao qual acede. O site é apresentado na barra de endereço. Os cookies de terceiros são criados por outros sites. Estes sites possuem algum do conteúdo, tal como anúncios ou imagens, que vê no Website ao qual acede.</translation>
 <translation id="3785308913036335955">Mostrar Atalho das Apps</translation>
 <translation id="3785727820640310185">Palavras-passe guardadas para este site</translation>
@@ -3367,6 +3368,7 @@
 <translation id="4227605727325220318">Adicionar um novo telemóvel Android</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Esta extensão não é permitida}other{Estas extensões não são permitidas}}</translation>
 <translation id="4231095370974836764">Instale apps e jogos do Google Play no dispositivo <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Fechar controlos de jogos</translation>
 <translation id="4232375817808480934">Configure o Kerberos</translation>
 <translation id="4235965441080806197">Cancelar início de sessão</translation>
 <translation id="4236163961381003811">Descobrir mais extensões</translation>
@@ -3561,7 +3563,6 @@
 <translation id="4415748029120993980">SECG de curva elíptica secp384r1 (também denominada NIST P-384)</translation>
 <translation id="4416450511678320850">Sem apps disponíveis para este conteúdo</translation>
 <translation id="4416582610654027550">Introduza um URL válido.</translation>
-<translation id="4417162649853416189">Arrastar imagens para pesquisar com o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Permitir sempre que <ph name="HOST" /> instale cookies</translation>
 <translation id="4421932782753506458">Fofo</translation>
 <translation id="4423376891418188461">Restaurar definições</translation>
@@ -3700,7 +3701,6 @@
 <translation id="4550926046134589611">Alguns links suportados continuarão a ser abertos na app <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Prima <ph name="MODIFIER_KEY_DESCRIPTION" /> para anular</translation>
 <translation id="4553526521109675518">Tem de reiniciar o seu Chromebook para alterar o idioma do dispositivo. <ph name="BEGIN_LINK_LEARN_MORE" />Saiba mais<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Arrastar imagens para pesquisar com o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">A extensão externa tem a mesma versão ou uma versão inferior à existente.</translation>
 <translation id="4555769855065597957">Sombra</translation>
 <translation id="4555863373929230635">Para guardar palavras-passe na sua Conta Google, inicie sessão e ative a sincronização.</translation>
@@ -4551,7 +4551,6 @@
 <translation id="5427459444770871191">Rodar para a &amp;Direita</translation>
 <translation id="542750953150239272">Ao continuar, aceita que este dispositivo também pode transferir e instalar automaticamente atualizações e apps a partir da Google, do seu operador e do fabricante do dispositivo, possivelmente através de dados móveis. Algumas destas apps podem disponibilizar compras na app.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Atualização disponível)</translation>
-<translation id="5429373054983029602">Pesquisar no ecrã com o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">É necessário instalar uma atualização do firmware Trusted Platform Module. Consulte <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Ligação via telemóvel instantânea</translation>
 <translation id="5431318178759467895">Cor</translation>
@@ -4624,7 +4623,6 @@
 <translation id="5494920125229734069">Selecionar tudo</translation>
 <translation id="5495466433285976480">Isto irá remover todos os utilizadores locais, ficheiros, dados e outras definições depois do próximo reinício. Todos os utilizadores terão de iniciar sessão novamente.</translation>
 <translation id="5495597166260341369">Manter o ecrã ligado</translation>
-<translation id="549580971452855947">Arrastar para pesquisar imagens com o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organizar</translation>
 <translation id="5496730470963166430">Sem autorização para enviar pop-ups ou utilizar redirecionamentos</translation>
 <translation id="5497251278400702716">Este ficheiro</translation>
@@ -5736,7 +5734,6 @@
 Tem mais # palavra-passe comprometida. O Gestor de Palavras-passe da Google recomenda que verifique esta palavra-passe agora.}other{Alterou com êxito a palavra-passe comprometida.
 
 Tem mais # palavras-passe comprometidas. O Gestor de Palavras-passe da Google recomenda que verifique estas palavras-passe agora.}}</translation>
-<translation id="6595792813574514527">Arrastar para pesquisar imagens com o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opções de encriptação</translation>
 <translation id="6596816719288285829">Endereço IP</translation>
 <translation id="6597017209724497268">Amostras</translation>
@@ -6037,6 +6034,7 @@
 <translation id="6895032998810961280">Comunicar detalhes à Google sobre software prejudicial, definições do sistema e processos encontrados no seu computador durante esta limpeza</translation>
 <translation id="6896758677409633944">Copiar</translation>
 <translation id="6897363604023044284">Escolher sites a limpar</translation>
+<translation id="6897688156970667447">Útil em condições de pouca luminosidade e poupa bateria</translation>
 <translation id="6898440773573063262">Já é possível configurar aplicações de quiosque para início automático neste dispositivo.</translation>
 <translation id="6900284862687837908">Aplicação em segundo plano: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">Proteção melhorada</translation>
@@ -7357,7 +7355,6 @@
 <translation id="8184318863960255706">Mais informações</translation>
 <translation id="8184472985242519288">Uniforme</translation>
 <translation id="8186609076106987817">O servidor não conseguiu encontrar o ficheiro.</translation>
-<translation id="8186704951085064172">Pesquisar parte da página com o <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Verifique as definições do dispositivo e ative-o para continuar.</translation>
 <translation id="8188742492803591566">Introduza o código de acesso apresentado no Chromecast ou na TV para começar a transmitir o ecrã.</translation>
 <translation id="8189306097519446565">Contas escolares</translation>
@@ -7526,6 +7523,7 @@
 <translation id="8358685469073206162">Restaurar páginas?</translation>
 <translation id="8358912028636606457">A transmissão do áudio do separador não é suportada neste dispositivo.</translation>
 <translation id="835951711479681002">Guardar na sua Conta Google</translation>
+<translation id="8360140320636871023">Personalize o tema do ecrã</translation>
 <translation id="8363095875018065315">estável</translation>
 <translation id="8363142353806532503">Microfone bloqueado</translation>
 <translation id="8366396658833131068">A conetividade de rede foi restaurada. Selecione uma rede diferente ou prima "Continuar" abaixo para iniciar a app de quiosque.</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index ad6ceb08..0b71b37 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -1411,7 +1411,6 @@
     Dacă ulterior decizi că Voice Match nu i se potrivește copilului, elimină funcția din Setările Asistentului. Ca să vezi sau să ștergi înregistrările audio făcute de copil în timpul configurării Voice Match, accesează <ph name="VOICE_MATCH_SETTINGS_URL" /> din contul său.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Caută într-o secțiune a paginii cu <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Accesul acestui site la senzorii de mișcare sau de lumină a fost blocat.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Adresa URL a paginii</translation>
@@ -2035,7 +2034,6 @@
 <translation id="289695669188700754">ID cheie: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Această setare personalizată va fi eliminată când închizi toate ferestrele incognito</translation>
 <translation id="2897878306272793870">Sunteți sigur că doriți să deschideți <ph name="TAB_COUNT" /> (de) file?</translation>
-<translation id="2900477968385519153">Caută pe ecran folosind <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Fișierul folosește funcții neacceptate</translation>
 <translation id="2901348420151309559">Fotografii și aplicații recente</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> nu poate comunica cu imprimanta. Asigură-te că imprimanta este conectată și încearcă din nou.</translation>
@@ -2908,7 +2906,6 @@
 <translation id="3778740492972734840">Instrumente pentru &amp;dezvoltatori</translation>
 <translation id="3778868487658107119">Pune-i întrebări. Spune-i să facă diverse lucruri. Este serviciul tău Google personal, gata oricând să te ajute.</translation>
 <translation id="3781742599892759500">Accesul la microfon în Linux</translation>
-<translation id="378312418865624974">Citește un identificator unic pentru acest computer</translation>
 <translation id="3784472333786002075">Cookie-urile sunt fișiere create de site-uri. Există două tipuri de cookie-uri: cookie-urile primare sunt create de site-ul pe care îl accesezi. Site-ul este afișat în bara de adrese. Cookie-urile terță parte sunt create de alte site-uri. Aceste site-uri dețin o parte din conținut, cum ar fi anunțuri sau imagini, pe care le vezi pe site-ul pe care îl accesezi.</translation>
 <translation id="3785308913036335955">Afișați comanda rapidă pentru aplicații</translation>
 <translation id="3785727820640310185">Parolele salvate pentru acest site</translation>
@@ -3561,7 +3558,6 @@
 <translation id="4415748029120993980">Curbură eliptică SECG secp384r1 (cunoscută și sub numele de NIST P-384)</translation>
 <translation id="4416450511678320850">Nu sunt disponibile aplicații pentru acest conținut</translation>
 <translation id="4416582610654027550">Introdu o adresă URL validă</translation>
-<translation id="4417162649853416189">Trage imagini pentru a căuta cu <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Permite întotdeauna ca <ph name="HOST" /> să seteze cookie-uri</translation>
 <translation id="4421932782753506458">Pufoșel</translation>
 <translation id="4423376891418188461">Restabilește setările</translation>
@@ -3700,7 +3696,6 @@
 <translation id="4550926046134589611">Unele linkuri acceptate se vor deschide în continuare în <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Apasă pe <ph name="MODIFIER_KEY_DESCRIPTION" /> pentru a anula</translation>
 <translation id="4553526521109675518">Trebuie să repornești Chromebookul pentru a schimba limba dispozitivului. <ph name="BEGIN_LINK_LEARN_MORE" />Află mai multe<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Trage imagini pentru a căuta cu <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Extensia externă este în aceeași versiune sau într-o versiune inferioară celei existente.</translation>
 <translation id="4555769855065597957">Umbră</translation>
 <translation id="4555863373929230635">Conectează-te și activează sincronizarea ca să salvezi parolele în Contul tău Google.</translation>
@@ -4551,7 +4546,6 @@
 <translation id="5427459444770871191">Rotiți în sensul acelor de &amp;ceasornic</translation>
 <translation id="542750953150239272">Dacă alegi să continui, accepți ca acest dispozitiv să descarce și să instaleze automat actualizări și aplicații de la Google, de la operatorul tău și de la producătorul dispozitivului, posibil folosind datele mobile. Unele dintre aceste aplicații pot oferi achiziții în aplicație.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (este disponibilă o actualizare)</translation>
-<translation id="5429373054983029602">Caută pe ecran folosind <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Este necesară instalarea unei actualizări pentru firmware-ul Trusted Platform Module. Vezi <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Tethering instantaneu</translation>
 <translation id="5431318178759467895">Color</translation>
@@ -4624,7 +4618,6 @@
 <translation id="5494920125229734069">Selectează-le pe toate</translation>
 <translation id="5495466433285976480">Această acțiune va elimina utilizatorii, fișierele, datele și alte setări locale după următoarea repornire. Va fi necesar ca toți utilizatorii să se conecteze din nou.</translation>
 <translation id="5495597166260341369">Ecranul rămâne activ</translation>
-<translation id="549580971452855947">Trage pentru a căuta imagini cu <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organizați</translation>
 <translation id="5496730470963166430">Nu au permisiunea de a afișa ferestre pop-up sau de a folosi redirecționări</translation>
 <translation id="5497251278400702716">Acest fișier</translation>
@@ -5737,7 +5730,6 @@
 Mai ai # parole compromise. Managerul de parole Google recomandă să verifici parolele acum.}other{Parola compromisă a fost schimbată.
 
 Mai ai # de parole compromise. Managerul de parole Google recomandă să verifici parolele acum.}}</translation>
-<translation id="6595792813574514527">Trage pentru a căuta imagini cu <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opțiuni de criptare</translation>
 <translation id="6596816719288285829">Adresă IP</translation>
 <translation id="6597017209724497268">Eșantioane</translation>
@@ -7357,7 +7349,6 @@
 <translation id="8184318863960255706">Mai multe informații</translation>
 <translation id="8184472985242519288">Uniform</translation>
 <translation id="8186609076106987817">Serverul nu a putut găsi fișierul.</translation>
-<translation id="8186704951085064172">Caută într-o secțiune a paginii cu <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Verifică setările dispozitivului și activează-l pentru a continua</translation>
 <translation id="8188742492803591566">Introdu codul de acces afișat pe Chromecast sau pe televizor pentru a începe să proiectezi ecranul.</translation>
 <translation id="8189306097519446565">Conturi de la școală</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index 48932ab87..24c1e01 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -1412,7 +1412,6 @@
     Отключить функцию Voice Match можно в настройках Ассистента. Чтобы послушать или удалить записи, сделанные при настройке Voice Match, войдите в аккаунт ребенка и откройте страницу <ph name="VOICE_MATCH_SETTINGS_URL" />.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Искать часть страницы с помощью функции "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="2309620859903500144">Этому сайту запрещено использовать датчики движения и освещенности.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL страницы</translation>
@@ -2035,7 +2034,6 @@
 <translation id="289695669188700754">Идентификатор ключа: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Когда вы закроете все окна в режиме инкогнито, эта специальная настройка будет сброшена</translation>
 <translation id="2897878306272793870">Вы действительно хотите открыть столько вкладок (<ph name="TAB_COUNT" />)?</translation>
-<translation id="2900477968385519153">Искать содержимое экрана с помощью функции "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="290105521672621980">Файл использует неподдерживаемые функции</translation>
 <translation id="2901348420151309559">Недавние фотографии и приложения</translation>
 <translation id="2902127500170292085">Расширение "<ph name="EXTENSION_NAME" />" не может установить связь с принтером. Убедитесь, что он подключен и повторите попытку.</translation>
@@ -2908,7 +2906,6 @@
 <translation id="3778740492972734840">&amp;Инструменты разработчика</translation>
 <translation id="3778868487658107119">Это ваш личный помощник, который всегда рядом. Просто спросите его о чем-нибудь или дайте поручение.</translation>
 <translation id="3781742599892759500">Доступ к микрофону в Linux</translation>
-<translation id="378312418865624974">Просмотр уникального идентификатора этого компьютера</translation>
 <translation id="3784472333786002075">Файлы cookie создаются сайтами. Существует два типа таких файлов. Собственные файлы cookie создает тот сайт, на который вы зашли. Он указан в адресной строке браузера. Сторонние файлы cookie создаются другими сайтами, которые размещают свой контент (например, объявления или изображения) на просматриваемых вами веб-страницах.</translation>
 <translation id="3785308913036335955">Показывать кнопку "Сервисы"</translation>
 <translation id="3785727820640310185">Сохраненные пароли для этого сайта</translation>
@@ -3561,7 +3558,6 @@
 <translation id="4415748029120993980">Эллиптическая кривая SECG secp384r1 (она же NIST P-384)</translation>
 <translation id="4416450511678320850">Нет подходящих приложений</translation>
 <translation id="4416582610654027550">Введите действительный URL.</translation>
-<translation id="4417162649853416189">Выделять изображения перетаскиванием курсора для поиска с помощью функции "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="4419409365248380979">Разрешить сайту <ph name="HOST" /> сохранять файлы cookie</translation>
 <translation id="4421932782753506458">Пушистик</translation>
 <translation id="4423376891418188461">Восстановить настройки</translation>
@@ -3699,7 +3695,6 @@
 <translation id="4550926046134589611">Некоторые поддерживаемые ссылки будут по-прежнему открываться в приложении "<ph name="APP_NAME" />".</translation>
 <translation id="4551763574344810652">Чтобы отменить действие, нажмите <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4553526521109675518">Чтобы изменить язык устройства, нужно перезапустить Chromebook. <ph name="BEGIN_LINK_LEARN_MORE" />Подробнее…<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Выделять изображения перетаскиванием курсора для поиска с помощью функции "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="4554591392113183336">Внешнее расширение не новее существующего.</translation>
 <translation id="4555769855065597957">Тень</translation>
 <translation id="4555863373929230635">Чтобы сохранять пароли в аккаунте Google, войдите в него и включите синхронизацию.</translation>
@@ -4550,7 +4545,6 @@
 <translation id="5427459444770871191">Повернуть &amp;по часовой стрелке</translation>
 <translation id="542750953150239272">Продолжая, вы разрешаете устройству автоматически скачивать и устанавливать обновления и приложения от производителя устройства, оператора связи и компании Google (в том числе по мобильной сети). Некоторые из этих приложений могут предлагать платный контент.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (доступно обновление)</translation>
-<translation id="5429373054983029602">Искать содержимое экрана с помощью функции "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="542948651837270806">Требуется обновить встроенное ПО доверенного платформенного модуля (TPM). Подробнее: <ph name="TPM_FIRMWARE_UPDATE_LINK" />.</translation>
 <translation id="5430931332414098647">Мгновенная точка доступа</translation>
 <translation id="5431318178759467895">Цветная печать</translation>
@@ -4623,7 +4617,6 @@
 <translation id="5494920125229734069">Выделить все</translation>
 <translation id="5495466433285976480">После перезагрузки все локальные аккаунты, файлы, данные и другие настройки будут удалены. Все пользователи должны снова войти в аккаунт.</translation>
 <translation id="5495597166260341369">Не выключать экран</translation>
-<translation id="549580971452855947">Перетаскивать для поиска изображений с помощью функции "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="5496587651328244253">Управление</translation>
 <translation id="5496730470963166430">Запретить сайтам показывать всплывающие окна или использовать переадресацию</translation>
 <translation id="5497251278400702716">Этот файл</translation>
@@ -5740,7 +5733,6 @@
 Осталось # раскрытых паролей. Измените их прямо сейчас в Google Менеджере паролей.}other{Раскрытый пароль изменен.
 
 Осталось # раскрытого пароля. Измените их прямо сейчас в Google Менеджере паролей.}}</translation>
-<translation id="6595792813574514527">Перетаскивать для поиска изображений с помощью функции "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="6596325263575161958">Параметры шифрования</translation>
 <translation id="6596816719288285829">IP-адрес</translation>
 <translation id="6597017209724497268">Примеры</translation>
@@ -7360,7 +7352,6 @@
 <translation id="8184318863960255706">Подробнее</translation>
 <translation id="8184472985242519288">Без объема</translation>
 <translation id="8186609076106987817">Этот файл отсутствует на сервере.</translation>
-<translation id="8186704951085064172">Искать часть страницы с помощью функции "<ph name="VISUAL_SEARCH_PROVIDER" />"</translation>
 <translation id="8188389033983459049">Чтобы продолжить, проверьте настройки устройства и включите Bluetooth.</translation>
 <translation id="8188742492803591566">Чтобы транслировать экран, введите код доступа, показанный на устройстве Chromecast или на телевизоре.</translation>
 <translation id="8189306097519446565">Учебные аккаунты</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb
index 9ef3d38d..c313f92 100644
--- a/chrome/app/resources/generated_resources_si.xtb
+++ b/chrome/app/resources/generated_resources_si.xtb
@@ -1414,7 +1414,6 @@
     Voice Match ඔබගේ දරුවාට සුදුසු නොවන බව ඔබ පසුව තීරණය කළහොත්, එය ඔවුන්ගේ සහායක සැකසීම් තුළ ඉවත් කරන්න. Voice Match පිහිටුවීම අතරතුර ඔබගේ දරුවා පටිගත කරන ලද ශ්‍රව්‍ය පසුරු බැලීමට හෝ මැකීමට, ඔබගේ දරුවාගේ ගිණුමෙන් <ph name="VOICE_MATCH_SETTINGS_URL" /> වෙත යන්න.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> සමඟ පිටුවේ කොටසක් සොයන්න</translation>
 <translation id="2309620859903500144">මෙම අඩවිය ඔබේ චලන හෝ ආලෝක සංවේදක වෙත පිවිසීමෙන් මෙම පිටුව අවහිර කර තිබේ.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">පිටු URL</translation>
@@ -2037,7 +2036,6 @@
 <translation id="289695669188700754">යතුරු ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">ඔබ ඔබගේ සියලු අප්‍රසිද්ධ කවුළු වැසූ විට මෙම අභිරුචි සැකසීම ඉවත් කරනු ඇත</translation>
 <translation id="2897878306272793870">ඔබට ටැබ <ph name="TAB_COUNT" />ක් විවෘත කිරීමට අවශ්‍ය බව ඔබට විශ්වාසද?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> සමග ඔබගේ තිරය සොයන්න</translation>
 <translation id="290105521672621980">ගොනුව සහාය නොදක්වන විශේෂාංග භාවිත කරයි</translation>
 <translation id="2901348420151309559">මෑත ඡායාරූප සහ දැනුම්දීම්</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> මෙම මුද්‍රණ යන්ත්‍රය සමග සම්බන්ධ වීමට නොහැකි විය. මුද්‍රණ යන්ත්‍රය පේනුගත කර ඇති බව සහතික කරගෙන නැවත උත්සාහ කරන්න.</translation>
@@ -2910,7 +2908,6 @@
 <translation id="3778740492972734840">ප්‍රවර්ධක මෙවලම්</translation>
 <translation id="3778868487658107119">එයින් ප්‍රශ්න අසන්න. දේවල් කිරීමට එයට කියන්න. එය හැමවිටම උදවු කිරීමට සූදානම්, ඔබේම Google වේ.</translation>
 <translation id="3781742599892759500">ලිනක්ස් මයික්‍රොෆෝන ප්‍රවේශය</translation>
-<translation id="378312418865624974">මෙම පරිගණකය සඳහා අනුපම අනන්‍යකාරකයක් කියවන්න</translation>
 <translation id="3784472333786002075">කුකී යනු වෙබ් අඩවිවලින් නිර්මාණ කෙරෙන ගොනු වේ. කුකී වර්ග දෙකක් තිබේ: පළවෙනි පාර්ශ්ව කුකී ඔබ පැමිණෙන වෙබ් අඩවියෙන් නිර්මාණ කෙරේ. වෙබ් අඩවිය ලිපින තීරුවේ පෙන්වනු ලැබේ. තෙවන පාර්ශ්ව කුකී වෙනත් වෙබ් අඩවිවලින් නිර්මාණ කෙරේ. මෙම වෙබ් අඩවිවලට ඔබ පැමිණෙන වෙබ් අඩවිය මත ඔබ දකින රූප හෝ දැන්වීම් වැනි සමහර අන්තර්ගත හිමි වේ.</translation>
 <translation id="3785308913036335955">යෙදුම් කෙටිමං පෙන්වන්න</translation>
 <translation id="3785727820640310185">මෙම අඩවිය සඳහා සුරැකි මුරපද</translation>
@@ -3564,7 +3561,6 @@
 <translation id="4415748029120993980">SECG ඉලිප්සාකාර වක්‍ර secp384r1 (එනම් NIST P-384)</translation>
 <translation id="4416450511678320850">මෙම අන්තර්ගතය සඳහා යෙදුම් නොමැත</translation>
 <translation id="4416582610654027550">වලංගු URL එකක් යතුරු ලියන්න</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> සමග සෙවීමට රූපවලට උඩින් අදින්න</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> හට කුකී සැකසීමට සැමවිට ඉඩ දෙන්න</translation>
 <translation id="4421932782753506458">Fluffy</translation>
 <translation id="4423376891418188461">සැකසීම් ප්‍රතිසාධනය කරන්න</translation>
@@ -3703,7 +3699,6 @@
 <translation id="4550926046134589611">සමහර සහාය දක්වන සබැඳි තවම <ph name="APP_NAME" /> තුළ විවෘතව තිබෙනු ඇත.</translation>
 <translation id="4551763574344810652">අස් කිරීමට <ph name="MODIFIER_KEY_DESCRIPTION" /> ඔබන්න</translation>
 <translation id="4553526521109675518">උපාංග භාෂාව වෙනස් කිරීමට ඔබ ඔබේ Chromebook යළි ඇරඹීමට අවශ්‍යයි. <ph name="BEGIN_LINK_LEARN_MORE" />තවත් දැන ගන්න<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> සමග සෙවීමට රූපවලට උඩින් අදින්න</translation>
 <translation id="4554591392113183336">පවතින දිගුවට සාපේක්ශව බාහිර දිගුව සමාන හෝ පහත අනුවාදනයකි.</translation>
 <translation id="4555769855065597957">ඡායාව</translation>
 <translation id="4555863373929230635">මුරපද ඔබේ Google ගිණුමට සුරැකීමට, පුරනය වී සමමුහූර්තය සක්‍රීය කරන්න.</translation>
@@ -4554,7 +4549,6 @@
 <translation id="5427459444770871191">දක්ෂිණාවර්ථව කරකවන්න</translation>
 <translation id="542750953150239272">ඉදිරියට යාමෙන්, බොහෝ විට සෙලියුලර් දත්ත භාවිතයෙන් මෙම උපාංගයට Google, ඔබගේ වාහකය සහ ඔබගේ උපාංගයේ නිෂ්පාදක වෙතින් යාවත්කාලීන සහ යෙදුම් ස්වයංක්‍රියව බාගෙන ස්ථාපනය කළ හැකි බවටද ඔබ එකඟ වේ. මෙම යෙදුම්වලින් සමහරක් යෙදුම තුළ මිලදී ගැනීම් පිරිනැමිය හැකිය.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (යාවත් පවතී)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> සමග ඔබගේ තිරය සොයන්න</translation>
 <translation id="542948651837270806">විශ්වාසදායී වේදිකා මොඩියුල ස්ථිරාංගය සඳහා යාවත්කාලීනයක් ස්ථාපන කිරීමට අවශ්‍යයි. <ph name="TPM_FIRMWARE_UPDATE_LINK" /> බලන්න</translation>
 <translation id="5430931332414098647">ක්ෂණික ටෙදරින්</translation>
 <translation id="5431318178759467895">වර්ණය</translation>
@@ -4627,7 +4621,6 @@
 <translation id="5494920125229734069">සියල්ල තෝරන්න</translation>
 <translation id="5495466433285976480">මෙය ඔබේ ඊලඟ ආරම්භයේදී සියළු දේශීය පරිශීලකයන්, ගොනු දත්ත හා වෙනත් සැකසුම් ඉවත් කරයි, සියළුම පරීශීලකයන්ට නැවත පිවිසීමට සිදුවේ.</translation>
 <translation id="5495597166260341369">සංදර්ශකය ක්‍රියාත්මකව තබන්න</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> සමග රූප සෙවීමට අදින්න</translation>
 <translation id="5496587651328244253">සංවිධානය කරන්න</translation>
 <translation id="5496730470963166430">උත්පතන එවීමට සහ ප්‍රතියොමු කිරීම් භාවිත කිරීමට ඉඩ නොදේ</translation>
 <translation id="5497251278400702716">මෙම ගොනුව</translation>
@@ -5739,7 +5732,6 @@
 ඔබට අවදානමට පත් වූ මුරපද තව #ක් ඇත. Google මුරපද කළමනාකරු මෙම මුරපද දැන් පරීක්ෂා කිරීම නිර්දේශ කරයි.}other{අවදානමට පත් වූ මුරපදය සාර්ථකව වෙනස් කරන ලදි.
 
 ඔබට අවදානමට පත් වූ මුරපද තව #ක් ඇත. Google මුරපද කළමනාකරු මෙම මුරපද දැන් පරීක්ෂා කිරීම නිර්දේශ කරයි.}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> සමග රූප සෙවීමට අදින්න</translation>
 <translation id="6596325263575161958">සංකේතනය කිරීමේ විකල්ප</translation>
 <translation id="6596816719288285829">IP ලිපිනය</translation>
 <translation id="6597017209724497268">සාම්පල</translation>
@@ -7357,7 +7349,6 @@
 <translation id="8184318863960255706">තවත් තතු</translation>
 <translation id="8184472985242519288">ඒකරූපී</translation>
 <translation id="8186609076106987817">සර්වරයට ගොනුව සොයා ගත නොහැක.</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> සමඟ පිටුවේ කොටසක් සොයන්න</translation>
 <translation id="8188389033983459049">ඔබගේ උපාංග සැකසීම් පරීක්ෂා කර දිගටම කරගෙන යාමට එය ක්‍රියාත්මක කරන්න</translation>
 <translation id="8188742492803591566">ඔබගේ තිරය විකාශය කිරීම ආරම්භ කිරීමට Chromecast හෝ TV හි පෙන්වා ඇති ප්‍රවේශ කේතය ඇතුළු කරන්න.</translation>
 <translation id="8189306097519446565">පාසල් ගිණුම්</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 60d802e..fb8cb1bb 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -180,6 +180,7 @@
 <translation id="1166583374608765787">Kontrola aktualizácie názvu</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> patrí na plochu <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">Čas do otvorenia: <ph name="TIME_REMAINING" /></translation>
+<translation id="1169266963600477608">Ovládanie hry</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> obsahuje citlivé alebo nebezpečné údaje. Toto je správa od vášho správcu: <ph name="CUSTOM_MESSAGE" />.</translation>
 <translation id="1171135284592304528">Pri zmene zvýrazňovať objekt so zameraním klávesnice</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> sa chce pripojiť k zariadeniu HID</translation>
@@ -1412,7 +1413,6 @@
     Ak sa neskôr rozhodnete, že funkcia Voice Match nie je pre neho vhodná, stačí ju vypnúť v sekcii Nastavenia jeho Asistenta. Zvukové klipy, ktoré vaše dieťa nahrá počas nastavovania funkcie Voice Match, môžete zobraziť alebo odstrániť v jeho účte na <ph name="VOICE_MATCH_SETTINGS_URL" />.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Hľadať časť stránky pomocou funkcie <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Tento web má zablokovaný prístup k senzorom pohybu alebo svetla.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Webová adresa stránky</translation>
@@ -2036,7 +2036,6 @@
 <translation id="289695669188700754">Identifikácia kľúča: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Keď zavriete všetky okná inkognito, toto vlastné nastavenie bude odstránené</translation>
 <translation id="2897878306272793870">Naozaj chcete otvoriť tento počet kariet: <ph name="TAB_COUNT" />?</translation>
-<translation id="2900477968385519153">Hľadať na obrazovke pomocou funkcie <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Súbor používa nepodporované funkcie</translation>
 <translation id="2901348420151309559">Nedávne fotky a aplikácie</translation>
 <translation id="2902127500170292085">Rozšíreniu <ph name="EXTENSION_NAME" /> sa nepodarilo komunikovať s touto tlačiarňou. Skontrolujte, či je tlačiareň pripojená a skúste to znova.</translation>
@@ -2909,7 +2908,6 @@
 <translation id="3778740492972734840">&amp;Nástroje pre vývojárov</translation>
 <translation id="3778868487658107119">Môžete mu klásť otázky. Môžete mu zadávať príkazy. Je to váš osobný Google, ktorý je vždy pripravený pomôcť.</translation>
 <translation id="3781742599892759500">Prístup k mikrofónu v systéme Linux</translation>
-<translation id="378312418865624974">Čítať jedinečný identifikátor pre tento počítač</translation>
 <translation id="3784472333786002075">Súbory cookie sú vytvárané webmi. Existujú dva typy súborov cookie: súbory cookie hostiteľskej domény sú vytvorené webom, ktorý navštívite. Tento web je uvedený v paneli s adresou. Súbory cookie tretích strán sú vytvárané ďalšími webmi. Tieto weby sú vlastníkmi niektorého obsahu (napríklad reklám alebo obrázkov), ktorý sa vám pri ich návšteve zobrazuje.</translation>
 <translation id="3785308913036335955">Zobrazovať odkaz aplikácií</translation>
 <translation id="3785727820640310185">Uložené heslá pre tento web</translation>
@@ -3368,6 +3366,7 @@
 <translation id="4227605727325220318">Pridať nový telefón s Androidom</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Toto rozšírenie nie je povolené}few{Niektoré rozšírenia nie sú povolené}many{Niektoré rozšírenia nie sú povolené}other{Niektoré rozšírenia nie sú povolené}}</translation>
 <translation id="4231095370974836764">Nainštalujte si aplikácie a hry zo služby Google Play v zariadení <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Ďalšie informácie<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Zavrieť ovládanie hry</translation>
 <translation id="4232375817808480934">Konfigurácia protokolu Kerberos</translation>
 <translation id="4235965441080806197">Zrušiť prihlasovanie</translation>
 <translation id="4236163961381003811">Objavte ďalšie rozšírenia</translation>
@@ -3562,7 +3561,6 @@
 <translation id="4415748029120993980">Eliptická krivka SECG secp384r1 (známa tiež ako NIST P-384)</translation>
 <translation id="4416450511678320850">Pre tento obsah nie sú k dispozícii žiadne aplikácie</translation>
 <translation id="4416582610654027550">Zadajte platnú webovú adresu</translation>
-<translation id="4417162649853416189">Presunutím cez obrázky spustiť vyhľadávanie pomocou funkcie <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Vždy povoliť prehliadaču <ph name="HOST" /> nastavovať súbory cookie</translation>
 <translation id="4421932782753506458">Páperový</translation>
 <translation id="4423376891418188461">Obnoviť nastavenia</translation>
@@ -3700,7 +3698,6 @@
 <translation id="4550926046134589611">Niektoré podporované odkazy sa budú stále otvárať v aplikácii <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Stlačením skratky <ph name="MODIFIER_KEY_DESCRIPTION" /> vrátite akciu späť</translation>
 <translation id="4553526521109675518">Ak chcete zmeniť jazyk zariadenia, musíte svoj Chromebook reštartovať. <ph name="BEGIN_LINK_LEARN_MORE" />Ďalšie informácie<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Presunutím cez obrázky spustiť vyhľadávanie pomocou funkcie <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Verzia externého rozšírenia je rovnaká alebo nižšia ako existujúca verzia</translation>
 <translation id="4555769855065597957">Tieň</translation>
 <translation id="4555863373929230635">Ak chcete ukladať heslá do svojho účtu Google, prihláste sa a zapnite synchronizáciu.</translation>
@@ -4551,7 +4548,6 @@
 <translation id="5427459444770871191">Otočiť &amp;v smere hodinových ručičiek</translation>
 <translation id="542750953150239272">Pokračovaním vyjadrujete súhlas s tým, že toto zariadenie môže tiež automaticky sťahovať a inštalovať aktualizácie a aplikácie od Googlu, vášho operátora a výrobcu zariadenia a v prípade potreby pri tom môže používať mobilné dáta. Niektoré tieto aplikácie môžu ponúkať nákupy v aplikácii.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (K dispozícií je aktualizácia)</translation>
-<translation id="5429373054983029602">Hľadať na obrazovke pomocou funkcie <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Musíte nainštalovať aktualizáciu firmvéru Trusted Platform Module. Pozrite si <ph name="TPM_FIRMWARE_UPDATE_LINK" />.</translation>
 <translation id="5430931332414098647">Dynamický tethering</translation>
 <translation id="5431318178759467895">Farebne</translation>
@@ -4624,7 +4620,6 @@
 <translation id="5494920125229734069">Vybrať všetko</translation>
 <translation id="5495466433285976480">Týmto sa po nasledujúcom spustení odstránia všetci miestni používatelia, súbory, údaje a ďalšie nastavenia. Všetci používatelia sa budú musieť znova prihlásiť.</translation>
 <translation id="5495597166260341369">Ponechať zapnutú obrazovku</translation>
-<translation id="549580971452855947">Presunutím spustiť vyhľadávanie obrázkov pomocou funkcie <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Usporiadať</translation>
 <translation id="5496730470963166430">Nemôže odosielať vyskakovacie okná ani používať presmerovania</translation>
 <translation id="5497251278400702716">Tento súbor</translation>
@@ -5739,7 +5734,6 @@
 You have # more compromised passwords. Google Password Manager recommends checking these passwords now.}other{Odhalené heslo bolo úspešne zmenené.
 
 Máte ešte # ďalších. Správca hesiel Google odporúča okamžite dané heslá skontrolovať.}}</translation>
-<translation id="6595792813574514527">Presunutím spustiť vyhľadávanie obrázkov pomocou funkcie <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Možnosti šifrovania</translation>
 <translation id="6596816719288285829">Adresa IP</translation>
 <translation id="6597017209724497268">Vzorky</translation>
@@ -7359,7 +7353,6 @@
 <translation id="8184318863960255706">Ďalšie informácie</translation>
 <translation id="8184472985242519288">Jednotný</translation>
 <translation id="8186609076106987817">Server nemohol nájsť súbor.</translation>
-<translation id="8186704951085064172">Hľadať časť stránky pomocou funkcie <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Ak chcete pokračovať, skontrolujte nastavenia zariadenia a zapnite ho</translation>
 <translation id="8188742492803591566">Ak chcete začať prenášať obrazovku, zadajte prístupový kód zobrazený v Chromecaste alebo televízore.</translation>
 <translation id="8189306097519446565">Školské účty</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index 3e108b7d..8ada286 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -1428,7 +1428,6 @@
     Če pozneje ugotovite, da Voice Match vašemu otroku ne ustreza, ga preprosto odstranite v njegovih nastavitvah Pomočnika. Če želite pregledati ali izbrisati zvočne posnetke, ki jih otrok ustvari med nastavitvijo Voice Matcha, v otrokovem računu odprite <ph name="VOICE_MATCH_SETTINGS_URL" />.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Išči del strani s tem: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Temu spletnemu mestu je onemogočen dostop do tipal gibanja ali svetlobe.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL strani</translation>
@@ -2052,7 +2051,6 @@
 <translation id="289695669188700754">ID ključa: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Ta nastavitev po meri bo odstranjena, ko zaprete vsa anonimna okna.</translation>
 <translation id="2897878306272793870">Ali ste prepričani, da želite odpreti naslednje število zavihkov: <ph name="TAB_COUNT" /></translation>
-<translation id="2900477968385519153">Išči po zaslonu s tem: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Datoteka uporablja nepodprte funkcije</translation>
 <translation id="2901348420151309559">Nedavne fotografije in aplikacije</translation>
 <translation id="2902127500170292085">Komunikacija razširitve <ph name="EXTENSION_NAME" /> s tem tiskalnikom ni bila mogoča. Poskrbite, da je tiskalnik priključen, in poskusite znova.</translation>
@@ -2925,7 +2923,6 @@
 <translation id="3778740492972734840">&amp;Orodja za razvijalce</translation>
 <translation id="3778868487658107119">Postavite mu vprašanja ali mu naročite, kaj naj naredi. Je vaš osebni Google, ki vam je vedno pripravljen priskočiti na pomoč.</translation>
 <translation id="3781742599892759500">Dostop do mikrofona v Linuxu</translation>
-<translation id="378312418865624974">Branje enoličnega identifikatorja za ta računalnik</translation>
 <translation id="3784472333786002075">Piškotki so datoteke, ki jih ustvarijo spletna mesta. Obstajata dve vrsti piškotkov: Piškotke domene ustvari spletno mesto, ki ga obiščete. Spletno mesto je prikazano v naslovni vrstici. Piškotke drugih spletnih mest ustvarijo druga spletna mesta. Ta spletna mesta imajo v lasti nekatero vsebino, na primer oglase ali slike, ki jo vidite na spletnem mestu, ki ga obiščete.</translation>
 <translation id="3785308913036335955">Pokaži bližnjico do aplikacij</translation>
 <translation id="3785727820640310185">Shranjena gesla za to spletno mesto</translation>
@@ -3578,7 +3575,6 @@
 <translation id="4415748029120993980">Eliptična krivulja SECG secp384r1 (oziroma NIST P-384)</translation>
 <translation id="4416450511678320850">Za to vsebino ni na voljo aplikacij.</translation>
 <translation id="4416582610654027550">Vnesite veljaven URL</translation>
-<translation id="4417162649853416189">Povlecite čez slike za iskanje s tem: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Vedno dovoli, da <ph name="HOST" /> nastavi piškotke</translation>
 <translation id="4421932782753506458">Puhek</translation>
 <translation id="4423376891418188461">Obnovi nastavitve</translation>
@@ -3717,7 +3713,6 @@
 <translation id="4550926046134589611">Nekatere podprte povezave se bodo še vedno odprle v aplikaciji <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Pritisnite <ph name="MODIFIER_KEY_DESCRIPTION" /> za razveljavitev</translation>
 <translation id="4553526521109675518">Če želite spremeniti jezik naprave, morate znova zagnati Chromebook. <ph name="BEGIN_LINK_LEARN_MORE" />Več o tem<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Povlecite čez slike za iskanje s tem: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Zunanja razširitev je iste ali starejše različice kot trenutna.</translation>
 <translation id="4555769855065597957">Senca</translation>
 <translation id="4555863373929230635">Če želite shraniti gesla v račun Google, se prijavite in vklopite sinhronizacijo.</translation>
@@ -4568,7 +4563,6 @@
 <translation id="5427459444770871191">&amp;Zasukaj v smeri urinega kazalca</translation>
 <translation id="542750953150239272">Če nadaljujete, se strinjate, da lahko ta naprava tudi samodejno prenese in namesti posodobitve ter aplikacije, ki jih zagotavljajo Google, vaš operater in proizvajalec vaše naprave – morda s prenosom podatkov v mobilnih omrežjih. Nekatere od teh aplikacij morda ponujajo nakupe v aplikaciji.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (posodobitev je na voljo)</translation>
-<translation id="5429373054983029602">Išči po zaslonu s tem: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Namestiti morate posodobitev za vdelano programsko opremo modula Trusted Platform Module. Oglejte si <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Takojšnji internet prek mobilnega telefona</translation>
 <translation id="5431318178759467895">Barvno</translation>
@@ -4641,7 +4635,6 @@
 <translation id="5494920125229734069">Izberi vse</translation>
 <translation id="5495466433285976480">S tem bodo po naslednjem vnovičnem zagonu odstranjeni vsi lokalni uporabniki, datoteke, podatki in druge nastavitve. Vsi uporabniki se bodo morali še enkrat prijaviti.</translation>
 <translation id="5495597166260341369">Naj bo zaslon vklopljen</translation>
-<translation id="549580971452855947">Povlecite za iskanje slik s tem: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Urejanje</translation>
 <translation id="5496730470963166430">Ni dovoljeno pošiljanje pojavnih oken ali uporaba preusmeritev</translation>
 <translation id="5497251278400702716">Ta datoteka</translation>
@@ -5760,7 +5753,6 @@
 Imate še # ogrožena gesla. Googlov upravitelj gesel priporoča, da takoj preverite ta gesla.}other{Ogroženo geslo je bilo uspešno spremenjeno.
 
 Imate še # ogroženih gesel. Googlov upravitelj gesel priporoča, da takoj preverite ta gesla.}}</translation>
-<translation id="6595792813574514527">Povlecite za iskanje slik s tem: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Možnosti šifriranja</translation>
 <translation id="6596816719288285829">Naslov IP</translation>
 <translation id="6597017209724497268">Vzorci</translation>
@@ -7381,7 +7373,6 @@
 <translation id="8184318863960255706">Več informacij</translation>
 <translation id="8184472985242519288">Enotno</translation>
 <translation id="8186609076106987817">Strežnik ni mogel najti datoteke.</translation>
-<translation id="8186704951085064172">Išči del strani s tem: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Preverite nastavitve naprave in jo vklopite, če želite nadaljevati</translation>
 <translation id="8188742492803591566">Če želite začeti predvajati svoj zaslon, vnesite kodo za dostop, prikazano v Chromecastu ali na televizorju.</translation>
 <translation id="8189306097519446565">Šolski računi</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb
index 524a1c01..ec2ab34 100644
--- a/chrome/app/resources/generated_resources_sq.xtb
+++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -1408,7 +1408,6 @@
     Nëse vendos më vonë se Voice Match nuk është i përshtatshëm për fëmijën tënd, thjesht hiqe atë nga "Cilësimet" e "Asistentit". Për të parë ose fshirë klipet e audios që regjistron fëmija yt gjatë konfigurimit të Voice Match, shko te <ph name="VOICE_MATCH_SETTINGS_URL" /> nga llogaria e fëmijës tënd.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Kërko në një pjesë të faqes me <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Kësaj faqeje i është bllokuar qasja te sensorët e lëvizjes ose të dritës.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL-ja e faqes</translation>
@@ -2031,7 +2030,6 @@
 <translation id="289695669188700754">ID-ja e çelësit: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Ky cilësim i parazgjedhur do të hiqet kur të mbyllësh të gjitha dritaret "e fshehta"</translation>
 <translation id="2897878306272793870">Je i sigurt se dëshiron të hapësh <ph name="TAB_COUNT" /> skeda?</translation>
-<translation id="2900477968385519153">Kërko ekranin tënd me <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Skedari përdor funksione që nuk mbështeten</translation>
 <translation id="2901348420151309559">Fotografitë dhe aplikacionet e fundit</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> nuk mund të komunikonte me këtë printer. Sigurohu që printeri të jetë i lidhur dhe provo përsëri.</translation>
@@ -2904,7 +2902,6 @@
 <translation id="3778740492972734840">&amp;Mjetet e zhvilluesit</translation>
 <translation id="3778868487658107119">Bëji pyetje. Thuaji që të bëjë gjëra. Është Google yt personal, gjithmonë gati për të të ndihmuar.</translation>
 <translation id="3781742599892759500">Qasja te mikrofoni i Linux</translation>
-<translation id="378312418865624974">Lexo një identifikues unik për këtë kompjuter</translation>
 <translation id="3784472333786002075">Kukit janë skedarë të krijuar nga sajtet e uebit. Ka dy lloje kukish: Kukit e palëve të para krijohen nga sajti që viziton ti. Sajti shfaqet në shiritin e adresës. Kukit e palëve të treta krijohen nga sajte të tjera. Këto sajte zotërojnë disa nga përmbajtjet, si p.sh. reklamat ose imazhet që ti shikon në sajtin e uebit që viziton.</translation>
 <translation id="3785308913036335955">Shfaq shkurtoren e aplikacioneve</translation>
 <translation id="3785727820640310185">Fjalëkalimet e ruajtura për këtë sajt</translation>
@@ -3557,7 +3554,6 @@
 <translation id="4415748029120993980">Kurba eliptike SECG secp384r1 (e njohur edhe si NIST P-384)</translation>
 <translation id="4416450511678320850">Nuk ka aplikacione të disponueshme për këtë përmbajtje</translation>
 <translation id="4416582610654027550">Shkruaj një URL të vlefshme</translation>
-<translation id="4417162649853416189">Zvarrit mbi imazhe për të kërkuar me <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Lejo gjithmonë që <ph name="HOST" /> të caktojë kuki</translation>
 <translation id="4421932782753506458">Mace</translation>
 <translation id="4423376891418188461">Restauro cilësimet</translation>
@@ -3695,7 +3691,6 @@
 <translation id="4550926046134589611">Disa lidhje të mbështetura do të vazhdojnë të hapen në <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Shtyp <ph name="MODIFIER_KEY_DESCRIPTION" /> për ta zhbërë</translation>
 <translation id="4553526521109675518">Duhet të rinisësh pajisjen tënde Chromebook për të ndryshuar gjuhën e pajisjes. <ph name="BEGIN_LINK_LEARN_MORE" />Mëso më shumë<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Zvarrit mbi imazhe për të kërkuar me <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Shtesa e jashtme është në të njëjtin version ose më të ulët në krahasim me ekzistuesin.</translation>
 <translation id="4555769855065597957">Hije</translation>
 <translation id="4555863373929230635">Për të ruajtur fjalëkalimet në "Llogarinë tënde të Google", identifikohu dhe aktivizo sinkronizimin.</translation>
@@ -4546,7 +4541,6 @@
 <translation id="5427459444770871191">Rrotullo në drejtim &amp;të akrepave të orës</translation>
 <translation id="542750953150239272">Duke vazhduar, ti pranon që kjo pajisje mund të shkarkojë dhe të instalojë po ashtu automatikisht përditësime dhe aplikacione nga Google, operatori yt celular dhe nga prodhuesi pajisjes sate, mundësisht duke përdorur të dhënat celulare. Disa prej këtyre aplikacioneve mund të ofrojnë blerje përmes aplikacionit. Disa prej këtyre aplikacioneve mund të ofrojnë blerje përmes aplikacionit.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (ofrohet përditësim)</translation>
-<translation id="5429373054983029602">Kërko ekranin tënd me <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Duhet të instalohet një përditësim për firmuerin e "Modulit të platformës së besuar". Shiko <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Ndarja e internetit në çast</translation>
 <translation id="5431318178759467895">Ngjyra</translation>
@@ -4619,7 +4613,6 @@
 <translation id="5494920125229734069">Zgjidh të gjitha</translation>
 <translation id="5495466433285976480">Kjo do të heqë të gjithë përdoruesit lokalë, skedarët, të dhënat dhe cilësimet e tjera pas rinisjes së radhës. Të gjithë përdoruesit do të duhet të identifikohen sërish.</translation>
 <translation id="5495597166260341369">Mbaje ekranin të ndezur</translation>
-<translation id="549580971452855947">Zvarrit për të kërkuar imazhe me <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organizo</translation>
 <translation id="5496730470963166430">Nuk lejohen të dërgojnë dritare kërcyese ose të përdorin ridrejtimet</translation>
 <translation id="5497251278400702716">Ky skedar</translation>
@@ -5730,7 +5723,6 @@
 Ke edhe # fjalëkalim tjetër të komprometuar. "Menaxheri i fjalëkalimeve" i Google rekomandon ta kontrollosh këtë fjalëkalim tani.}other{Fjalëkalimi i komprometuar u ndryshua me sukses.
 
 Ke edhe # fjalëkalime të tjera të komprometuara. "Menaxheri i fjalëkalimeve" i Google rekomandon t'i kontrollosh këto fjalëkalime tani.}}</translation>
-<translation id="6595792813574514527">Zvarrit për të kërkuar imazhe me <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opsionet e enkriptimit</translation>
 <translation id="6596816719288285829">Adresa e IP-së</translation>
 <translation id="6597017209724497268">Shembuj</translation>
@@ -7348,7 +7340,6 @@
 <translation id="8184318863960255706">Më shumë informacione</translation>
 <translation id="8184472985242519288">Uniform</translation>
 <translation id="8186609076106987817">Serveri nuk mund të gjejë skedarin.</translation>
-<translation id="8186704951085064172">Kërko në një pjesë të faqes me <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Kontrollo cilësimet e pajisjes dhe aktivizoje për të vazhduar</translation>
 <translation id="8188742492803591566">Fut kodin e qasjes që shfaqet në Chromecast ose në televizor për të filluar transmetimin në ekran.</translation>
 <translation id="8189306097519446565">Llogaritë e shkollës</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb
index 4a662f53..01d60ce 100644
--- a/chrome/app/resources/generated_resources_sr-Latn.xtb
+++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -180,6 +180,7 @@
 <translation id="1166583374608765787">Pregledajte ažuriranje naziva</translation>
 <translation id="1166596238782048887">Kartica <ph name="TAB_TITLE" /> pripada radnoj površini <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">Otvaranje za <ph name="TIME_REMAINING" />...</translation>
+<translation id="1169266963600477608">Kontrole igre</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> sadrži osetljive ili opasne podatke. Administrator kaže: „<ph name="CUSTOM_MESSAGE" />“</translation>
 <translation id="1171135284592304528">Istakni objekat pomoću fokusa tastature kada se promeni</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> želi da se poveže sa HID uređajem</translation>
@@ -1409,7 +1410,6 @@
     Ako kasnije odlučite da Voice Match ne odgovara vašem detetu, jednostavno ga uklonite iz podešavanja Pomoćnika. Da biste pregledali ili izbrisali audio snimke koje dete snimi tokom podešavanja Voice Match-a, idite na <ph name="VOICE_MATCH_SETTINGS_URL" /> sa detetovog naloga.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Pretraži deo stranice pomoću: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Ovom sajtu je zabranjen pristup senzorima za pokret ili svetlo.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL stranice</translation>
@@ -2033,7 +2033,6 @@
 <translation id="289695669188700754">ID ključa: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Ovo prilagođeno podešavanje se uklanja kada zatvorite sve prozore bez arhiviranja</translation>
 <translation id="2897878306272793870">Želite li stvarno da otvorite <ph name="TAB_COUNT" /> kartica?</translation>
-<translation id="2900477968385519153">Pretraži ekran pomoću: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Datoteka koristi funkcije koje nisu podržane</translation>
 <translation id="2901348420151309559">Nedavne slike i aplikacije</translation>
 <translation id="2902127500170292085">Komunikacija dodatka <ph name="EXTENSION_NAME" /> sa ovim štampačem nije uspela. Proverite da li je štampač priključen i pokušajte ponovo.</translation>
@@ -2906,7 +2905,6 @@
 <translation id="3778740492972734840">&amp;Alatke za programere</translation>
 <translation id="3778868487658107119">Postavljajte mu pitanja. Dajte mu da radi nešto. To je vaš lični Google, uvek na usluzi.</translation>
 <translation id="3781742599892759500">Pristup mikrofonu za Linux</translation>
-<translation id="378312418865624974">Čitanje jedinstvenog identifikatora za ovaj računar</translation>
 <translation id="3784472333786002075">Kolačići su datoteke koje prave veb-sajtovi. Postoje dva tipa kolačića: Kolačiće prve strane pravi sajt koji posećujete. Sajt je prikazan na traci za adresu. Kolačiće treće strane prave drugi sajtovi. Ti sajtovi su vlasnici delova sadržaja koji vidite na posećenom veb-sajtu, poput oglasa ili slika.</translation>
 <translation id="3785308913036335955">Prikaži prečicu za aplikacije</translation>
 <translation id="3785727820640310185">Sačuvane lozinke za ovaj sajt</translation>
@@ -3365,6 +3363,7 @@
 <translation id="4227605727325220318">Dodajte novi Android telefon</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Ovaj dodatak nije dozvoljen}one{Neki dodaci nisu dozvoljeni}few{Neki dodaci nisu dozvoljeni}other{Neki dodaci nisu dozvoljeni}}</translation>
 <translation id="4231095370974836764">Instalirajte aplikacije i igre sa Google Play-a na uređaju <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Zatvori kontrole igara</translation>
 <translation id="4232375817808480934">Konfigurišite Kerberos</translation>
 <translation id="4235965441080806197">Otkaži prijavljivanje</translation>
 <translation id="4236163961381003811">Otkrijte još dodataka</translation>
@@ -3559,7 +3558,6 @@
 <translation id="4415748029120993980">Eliptična kriva SECG secp384r1 (takođe poznata kao NIST P-384)</translation>
 <translation id="4416450511678320850">Nema dostupnih aplikacija za ovaj sadržaj</translation>
 <translation id="4416582610654027550">Unesite važeći URL</translation>
-<translation id="4417162649853416189">Prevlači preko slika radi pretrage pomoću: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Uvek dozvoli da <ph name="HOST" /> podešava kolačiće</translation>
 <translation id="4421932782753506458">Pufnica</translation>
 <translation id="4423376891418188461">Vrati podešavanja</translation>
@@ -3697,7 +3695,6 @@
 <translation id="4550926046134589611">Neki podržani linkovi će se i dalje otvarati u <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Pritisnite <ph name="MODIFIER_KEY_DESCRIPTION" /> da biste opozvali</translation>
 <translation id="4553526521109675518">Morate da restartujete Chromebook da biste promenili jezik uređaja. <ph name="BEGIN_LINK_LEARN_MORE" />Saznajte više<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Prevlači preko slika radi pretrage pomoću: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Verzija spoljnog dodatka je ista ili starija od postojećeg.</translation>
 <translation id="4555769855065597957">Novi profil</translation>
 <translation id="4555863373929230635">Da biste sačuvali lozinke na Google nalogu, prijavite se i uključite sinhronizaciju.</translation>
@@ -3889,7 +3886,7 @@
 <translation id="4742970037960872810">Ukloni isticanje</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" />Saznajte kako da ažurirate aplikacije<ph name="END_LINK" /></translation>
 <translation id="4744981231093950366">{NUM_TABS,plural, =1{Uključi zvuk sajta}one{Uključi zvuk sajtova}few{Uključi zvuk sajtova}other{Uključi zvuk sajtova}}</translation>
-<translation id="474609389162964566">Pristupajte Pomoćniku pomoću fraze „Hej Google“</translation>
+<translation id="474609389162964566">Pristupajte Pomoćniku frazom „Hej Google“</translation>
 <translation id="4746351372139058112">Poruke</translation>
 <translation id="4748783296226936791">Sajtovi se obično povezuju sa HID uređajima za potrebe funkcija koje koriste neuobičajene tastature, kontrolere za igre i druge uređaje</translation>
 <translation id="4750185073185658673">Idite na telefon da biste pregledali još nekoliko dozvola. Uverite se da su Bluetooth i WiFi telefona uključeni.</translation>
@@ -4547,7 +4544,6 @@
 <translation id="5427459444770871191">Okreći &amp;u smeru kretanja kazaljke na satu</translation>
 <translation id="542750953150239272">Ako nastavite, slažete se da ovaj uređaj može i da automatski preuzima i instalira ažuriranja i aplikacije od Google-a, mobilnog operatera i proizvođača uređaja, uz moguće korišćenje mobilnih podataka. Neke od ovih aplikacija mogu da nude kupovine u aplikacijama.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Dostupno je ažuriranje)</translation>
-<translation id="5429373054983029602">Pretraži ekran pomoću: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Treba da instalirate ažuriranje firmvera za Modul pouzdane platforme. Posetite <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Trenutno privezivanje</translation>
 <translation id="5431318178759467895">U boji</translation>
@@ -4620,7 +4616,6 @@
 <translation id="5494920125229734069">Izbor svih stavki</translation>
 <translation id="5495466433285976480">Ovim ćete ukloniti sve lokalne korisnike, datoteke, podatke i druga podešavanja posle sledećeg ponovnog pokretanja. Svi korisnici će morati ponovo da se prijave.</translation>
 <translation id="5495597166260341369">Kada je ekran uključen</translation>
-<translation id="549580971452855947">Prevlači radi pretrage slika pomoću: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Organizovanje</translation>
 <translation id="5496730470963166430">Nije im dozvoljeno da šalju iskačuće prozore ili da koriste preusmeravanja</translation>
 <translation id="5497251278400702716">Ova datoteka</translation>
@@ -5736,7 +5731,6 @@
 Imate još # ugrožene lozinke. Google menadžer lozinki preporučuje da odmah proverite ove lozinke.}other{Promenili ste ugroženu lozinku.
 
 Imate još # ugroženih lozinki. Google menadžer lozinki preporučuje da odmah proverite ove lozinke.}}</translation>
-<translation id="6595792813574514527">Prevlači radi pretrage slika pomoću: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Opcije šifrovanja</translation>
 <translation id="6596816719288285829">IP adresa</translation>
 <translation id="6597017209724497268">Uzorci</translation>
@@ -7356,7 +7350,6 @@
 <translation id="8184318863960255706">Više informacija</translation>
 <translation id="8184472985242519288">Jednoobrazno</translation>
 <translation id="8186609076106987817">Server nije mogao da pronađe datoteku.</translation>
-<translation id="8186704951085064172">Pretraži deo stranice pomoću: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Proverite podešavanja uređaja i uključite ga da biste nastavili</translation>
 <translation id="8188742492803591566">Unesite pristupni kôd prikazan na Chromecast-u ili TV-u da biste počeli da prebacujete sadržaj ekrana.</translation>
 <translation id="8189306097519446565">Školski nalozi</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index d901c7c..7ba521d9 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -180,6 +180,7 @@
 <translation id="1166583374608765787">Прегледајте ажурирање назива</translation>
 <translation id="1166596238782048887">Картица <ph name="TAB_TITLE" /> припада радној површини <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">Отварање за <ph name="TIME_REMAINING" />...</translation>
+<translation id="1169266963600477608">Контроле игре</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> садржи осетљиве или опасне податке. Администратор каже: „<ph name="CUSTOM_MESSAGE" />“</translation>
 <translation id="1171135284592304528">Истакни објекат помоћу фокуса тастатуре када се промени</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> жели да се повеже са HID уређајем</translation>
@@ -1409,7 +1410,6 @@
     Ако касније одлучите да Voice Match не одговара вашем детету, једноставно га уклоните из подешавања Помоћника. Да бисте прегледали или избрисали аудио снимке које дете сними током подешавања Voice Match-а, идите на <ph name="VOICE_MATCH_SETTINGS_URL" /> са дететовог налога.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Претражи део странице помоћу: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Овом сајту је забрањен приступ сензорима за покрет или светло.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL странице</translation>
@@ -2033,7 +2033,6 @@
 <translation id="289695669188700754">ИД кључа: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Ово прилагођено подешавање се уклања када затворите све прозоре без архивирања</translation>
 <translation id="2897878306272793870">Желите ли стварно да отворите <ph name="TAB_COUNT" /> картицa?</translation>
-<translation id="2900477968385519153">Претражи екран помоћу: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Датотека користи функције које нису подржане</translation>
 <translation id="2901348420151309559">Недавне слике и апликације</translation>
 <translation id="2902127500170292085">Комуникација додатка <ph name="EXTENSION_NAME" /> са овим штампачем није успела. Проверите да ли је штампач прикључен и покушајте поново.</translation>
@@ -2906,7 +2905,6 @@
 <translation id="3778740492972734840">&amp;Алатке за програмере</translation>
 <translation id="3778868487658107119">Постављајте му питања. Дајте му да ради нешто. То је ваш лични Google, увек на услузи.</translation>
 <translation id="3781742599892759500">Приступ микрофону за Linux</translation>
-<translation id="378312418865624974">Читање јединственог идентификатора за овај рачунар</translation>
 <translation id="3784472333786002075">Колачићи су датотеке које праве веб-сајтови. Постоје два типа колачића: Колачиће прве стране прави сајт који посећујете. Сајт је приказан на траци за адресу. Колачиће треће стране праве други сајтови. Ти сајтови су власници делова садржаја који видите на посећеном веб-сајту, попут огласа или слика.</translation>
 <translation id="3785308913036335955">Прикажи пречицу за апликације</translation>
 <translation id="3785727820640310185">Сачуване лозинке за овај сајт</translation>
@@ -3365,6 +3363,7 @@
 <translation id="4227605727325220318">Додајте нови Android телефон</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Овај додатак није дозвољен}one{Неки додаци нису дозвољени}few{Неки додаци нису дозвољени}other{Неки додаци нису дозвољени}}</translation>
 <translation id="4231095370974836764">Инсталирајте апликације и игре са Google Play-а на уређају <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Сазнајте више<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">Затвори контроле игара</translation>
 <translation id="4232375817808480934">Конфигуришите Kerberos</translation>
 <translation id="4235965441080806197">Откажи пријављивање</translation>
 <translation id="4236163961381003811">Откријте још додатака</translation>
@@ -3559,7 +3558,6 @@
 <translation id="4415748029120993980">Елиптична крива SECG secp384r1 (такође позната као NIST P-384)</translation>
 <translation id="4416450511678320850">Нема доступних апликација за овај садржај</translation>
 <translation id="4416582610654027550">Унесите важећи URL</translation>
-<translation id="4417162649853416189">Превлачи преко слика ради претраге помоћу: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Увек дозволи да <ph name="HOST" /> подешава колачиће</translation>
 <translation id="4421932782753506458">Пуфница</translation>
 <translation id="4423376891418188461">Врати подешавања</translation>
@@ -3697,7 +3695,6 @@
 <translation id="4550926046134589611">Неки подржани линкови ће се и даље отварати у <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Притисните <ph name="MODIFIER_KEY_DESCRIPTION" /> да бисте опозвали</translation>
 <translation id="4553526521109675518">Морате да рестартујете Chromebook да бисте променили језик уређаја. <ph name="BEGIN_LINK_LEARN_MORE" />Сазнајте више<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Превлачи преко слика ради претраге помоћу: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Верзија спољног додатка је иста или старија од постојећег.</translation>
 <translation id="4555769855065597957">Нови профил</translation>
 <translation id="4555863373929230635">Да бисте сачували лозинке на Google налогу, пријавите се и укључите синхронизацију.</translation>
@@ -3889,7 +3886,7 @@
 <translation id="4742970037960872810">Уклони истицање</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" />Сазнајте како да ажурирате апликације<ph name="END_LINK" /></translation>
 <translation id="4744981231093950366">{NUM_TABS,plural, =1{Укључи звук сајта}one{Укључи звук сајтова}few{Укључи звук сајтова}other{Укључи звук сајтова}}</translation>
-<translation id="474609389162964566">Приступајте Помоћнику помоћу фразе „Хеј Google“</translation>
+<translation id="474609389162964566">Приступајте Помоћнику фразом „Хеј Google“</translation>
 <translation id="4746351372139058112">Поруке</translation>
 <translation id="4748783296226936791">Сајтови се обично повезују са HID уређајима за потребе функција које користе неуобичајене тастатуре, контролере за игре и друге уређаје</translation>
 <translation id="4750185073185658673">Идите на телефон да бисте прегледали још неколико дозвола. Уверите се да су Bluetooth и WiFi телефона укључени.</translation>
@@ -4547,7 +4544,6 @@
 <translation id="5427459444770871191">Окрећи &amp;у смеру кретања казаљке на сату</translation>
 <translation id="542750953150239272">Ако наставите, слажете се да овај уређај може и да аутоматски преузима и инсталира ажурирања и апликације од Google-а, мобилног оператера и произвођача уређаја, уз могуће коришћење мобилних података. Неке од ових апликација могу да нуде куповине у апликацијама.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Доступно је ажурирање)</translation>
-<translation id="5429373054983029602">Претражи екран помоћу: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Треба да инсталирате ажурирање фирмвера за Модул поуздане платформе. Посетите <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Тренутно привезивање</translation>
 <translation id="5431318178759467895">У боји</translation>
@@ -4620,7 +4616,6 @@
 <translation id="5494920125229734069">Избор свих ставки</translation>
 <translation id="5495466433285976480">Овим ћете уклонити све локалне кориснике, датотеке, податке и друга подешавања после следећег поновног покретања. Сви корисници ће морати поново да се пријаве.</translation>
 <translation id="5495597166260341369">Када је екран укључен</translation>
-<translation id="549580971452855947">Превлачи ради претраге слика помоћу: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Организовање</translation>
 <translation id="5496730470963166430">Није им дозвољено да шаљу искачуће прозоре или да користе преусмеравања</translation>
 <translation id="5497251278400702716">Ова датотека</translation>
@@ -5736,7 +5731,6 @@
 Имате још # угрожене лозинке. Google менаџер лозинки препоручује да одмах проверите ове лозинке.}other{Променили сте угрожену лозинку.
 
 Имате још # угрожених лозинки. Google менаџер лозинки препоручује да одмах проверите ове лозинке.}}</translation>
-<translation id="6595792813574514527">Превлачи ради претраге слика помоћу: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Опције шифровања</translation>
 <translation id="6596816719288285829">IP адреса</translation>
 <translation id="6597017209724497268">Узорци</translation>
@@ -7356,7 +7350,6 @@
 <translation id="8184318863960255706">Више информација</translation>
 <translation id="8184472985242519288">Једнообразно</translation>
 <translation id="8186609076106987817">Сервер није могао да пронађе датотеку.</translation>
-<translation id="8186704951085064172">Претражи део странице помоћу: <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Проверите подешавања уређаја и укључите га да бисте наставили</translation>
 <translation id="8188742492803591566">Унесите приступни кôд приказан на Chromecast-у или ТВ-у да бисте почели да пребацујете садржај екрана.</translation>
 <translation id="8189306097519446565">Школски налози</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index b35d19d..67ad24b 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -1425,7 +1425,6 @@
     Om du vill att barnet ska sluta använda Voice Match vid ett senare tillfälle tar du helt enkelt bort funktionen från Assistent-inställningarna. Öppna <ph name="VOICE_MATCH_SETTINGS_URL" /> i barnets konto om du vill visa eller radera ljudklipp från konfigurationen av Voice Match.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Sök i en del av sidan med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Den här webbplatsen får inte använda enhetens rörelse- eller ljussensor.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Sidans webbadress</translation>
@@ -2049,7 +2048,6 @@
 <translation id="289695669188700754">Nyckel-ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Den här anpassade inställningen tas bort när du stänger alla inkognitofönster</translation>
 <translation id="2897878306272793870">Vill du verkligen öppna <ph name="TAB_COUNT" /> flikar?</translation>
-<translation id="2900477968385519153">Sök på skärmen med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Funktioner som inte stöds används i filer</translation>
 <translation id="2901348420151309559">Senaste foton och appar</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> kunde inte kommunicera med den här skrivaren. Kontrollera att skrivaren är ansluten och försök igen.</translation>
@@ -2922,7 +2920,6 @@
 <translation id="3778740492972734840">&amp;Verktyg för programmerare</translation>
 <translation id="3778868487658107119">Ställ frågor. Be den att göra saker. Det är Google anpassat just för dig, alltid redo att hjälpa dig.</translation>
 <translation id="3781742599892759500">Mikrofonåtkomst i Linux</translation>
-<translation id="378312418865624974">Läsa en unik identifierare för den här datorn</translation>
 <translation id="3784472333786002075">Cookies är filer som har skapats av webbplatser. Det finns två sorters cookies. Cookies från första part skapas av webbplatsen du besöker. Webbplatsen visas i adressfältet. Cookies från tredje part skapas av andra webbplatser. Dessa webbplatser äger en del av innehållet som visas på webbplatsen du besöker, till exempel annonser eller bilder.</translation>
 <translation id="3785308913036335955">Visa genväg för appar</translation>
 <translation id="3785727820640310185">Sparade lösenord för den här webbplatsen</translation>
@@ -3575,7 +3572,6 @@
 <translation id="4415748029120993980">SECG med elliptisk kurva secp384r1 (kallas även NIST P-384)</translation>
 <translation id="4416450511678320850">Inga appar tillgängliga för detta innehåll</translation>
 <translation id="4416582610654027550">Ange en giltig webbadress</translation>
-<translation id="4417162649853416189">Tryck och dra över bilder för att söka med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Tillåt alltid <ph name="HOST" /> att använda cookies</translation>
 <translation id="4421932782753506458">Misse</translation>
 <translation id="4423376891418188461">Återställ inställningar</translation>
@@ -3714,7 +3710,6 @@
 <translation id="4550926046134589611">Vissa länkar som stöds öppnas fortfarande i <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Tryck på <ph name="MODIFIER_KEY_DESCRIPTION" /> för att ångra</translation>
 <translation id="4553526521109675518">Om du vill byta språk på Chromebook måste du starta om enheten. <ph name="BEGIN_LINK_LEARN_MORE" />Läs mer<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Tryck och dra över bilder för att söka med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Det externa tillägget har samma eller lägre version än det som redan finns.</translation>
 <translation id="4555769855065597957">Skugga</translation>
 <translation id="4555863373929230635">Logga in och aktivera synkronisering om du vill spara lösenord i Google-kontot.</translation>
@@ -4565,7 +4560,6 @@
 <translation id="5427459444770871191">Rotera &amp;medurs</translation>
 <translation id="542750953150239272">Genom att fortsätta godkänner du att enheten kan ladda ned och installera uppdateringar och appar automatiskt från Google, operatören och enhetstillverkaren, eventuellt genom att använda mobildata. Det kan hända att köp i appar erbjuds.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (uppdatering tillgänglig)</translation>
-<translation id="5429373054983029602">Sök på skärmen med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">En uppdatering av Trusted Platform Module-firmware måste installeras. Se <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Direktinternetdelning</translation>
 <translation id="5431318178759467895">Färg</translation>
@@ -4638,7 +4632,6 @@
 <translation id="5494920125229734069">Markera alla</translation>
 <translation id="5495466433285976480">Om du gör detta tas alla lokala användare, filer, data och andra inställningar bort efter nästa omstart. Alla användare måste logga in igen.</translation>
 <translation id="5495597166260341369">Låt skärmen vara på</translation>
-<translation id="549580971452855947">Tryck och dra för att söka efter bilder med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Ordna</translation>
 <translation id="5496730470963166430">Får inte öppna popup-fönster eller använda omdirigering</translation>
 <translation id="5497251278400702716">Denna fil</translation>
@@ -5749,7 +5742,6 @@
 Det finns # utsatt lösenord till. Du rekommenderas av Google Lösenordshantering att kontrollera detta lösenord nu.}other{Det utsatta lösenordet har ändrats.
 
 Det finns # utsatta lösenord till. Du rekommenderas av Google Lösenordshantering att kontrollera dessa lösenord nu.}}</translation>
-<translation id="6595792813574514527">Tryck och dra för att söka efter bilder med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Krypteringsalternativ</translation>
 <translation id="6596816719288285829">IP-adress</translation>
 <translation id="6597017209724497268">Stickprov</translation>
@@ -7370,7 +7362,6 @@
 <translation id="8184318863960255706">Mer info</translation>
 <translation id="8184472985242519288">Jämnhög</translation>
 <translation id="8186609076106987817">Servern kunde inte hitta filen.</translation>
-<translation id="8186704951085064172">Sök i en del av sidan med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Kontrollera enhetsinställningarna och aktivera Bluetooth om du vill fortsätta</translation>
 <translation id="8188742492803591566">Ange åtkomstkoden som visas på Chromecast-enheten eller tv:n om du vill börja casta skärmen</translation>
 <translation id="8189306097519446565">Skolkonton</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index 89291ce2..99a216e 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -1422,7 +1422,6 @@
     Ukiamua baadaye kwamba Voice Match haimfai mtoto wako, iondoe kwenye Mipangilio ya programu ya Mratibu. Ili uangalie au ufute klipu za sauti zinazorekodiwa na mtoto wako anapoweka mipangilio ya Voice Match, nenda kwenye <ph name="VOICE_MATCH_SETTINGS_URL" /> katika akaunti ya mtoto wako.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Tafuta kwenye sehemu ya ukurasa ukitumia <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Tovuti hii imezuiliwa ili isifikie vitambuzi vya mwangaza au mwendo.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL ya Ukurasa</translation>
@@ -2046,7 +2045,6 @@
 <translation id="289695669188700754">Utambulisho wa Ufunguo: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Mipangilio hii maalum itaondolewa ukifunga madirisha fiche yako yote</translation>
 <translation id="2897878306272793870">Je, una hakika kuwa ungependa kufungua vichupo <ph name="TAB_COUNT" />?</translation>
-<translation id="2900477968385519153">Tafuta Kwenye Skrini Yako ukitumia <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Faili inatumia vipengele visivyokubalika</translation>
 <translation id="2901348420151309559">Picha na programu za hivi karibuni</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> hakikuwasiliana na printa hii. Hakikisha kuwa printa imewashwa na ujaribu tena.</translation>
@@ -2919,7 +2917,6 @@
 <translation id="3778740492972734840">Zana za &amp;Wasanidi Programu</translation>
 <translation id="3778868487658107119">Iulize maswali. Iambie ifanye kitu. Ni Google yako mwenyewe, tayari kukusaidia kila wakati.</translation>
 <translation id="3781742599892759500">Uwezo wa kufikia maikrofoni kwenye Linux</translation>
-<translation id="378312418865624974">Soma kitambulisho cha kipekee cha kompyuta hii</translation>
 <translation id="3784472333786002075">Vidakuzi ni faili zinazotengenezwa na tovuti. Kuna aina mbili za vidakuzi: Vidakuzi vilivyowekwa na vikoa unavyotembelea hutengenezwa na tovuti unayotembelea. Tovuti inaonyeshwa kwenye sehemu ya anwani. Vidakuzi vya washirika wengine hutengenezwa na tovuti nyingine. Tovuti hizo humiliki baadhi ya maudhui kama vile matangazo au picha ambazo unaona kwenye tovuti unazotembelea.</translation>
 <translation id="3785308913036335955">Onyesha Mkato wa Programu</translation>
 <translation id="3785727820640310185">Manenosiri ya tovuti hii yamehifadhiwa</translation>
@@ -3570,7 +3567,6 @@
 <translation id="4415748029120993980">SECG kizingo cha mviringo secp384r1 (pia inayojuliakana kama NIST P-384)</translation>
 <translation id="4416450511678320850">Hakuna programu za kushiriki maudhui haya zinazopatikana</translation>
 <translation id="4416582610654027550">Andika URL sahihi</translation>
-<translation id="4417162649853416189">Buruta juu ya Picha ili Utafute kwa kutumia <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Kila mara ruhusu <ph name="HOST" /> kuweka vidakuzi</translation>
 <translation id="4421932782753506458">Kibonge</translation>
 <translation id="4423376891418188461">Rejesha Mipangilio</translation>
@@ -3709,7 +3705,6 @@
 <translation id="4550926046134589611">Baadhi ya viungo vinavyotumika bado vitafunguka kwenye <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Bofya <ph name="MODIFIER_KEY_DESCRIPTION" /> ili utendue</translation>
 <translation id="4553526521109675518">Unahitaji kuzima kisha uwashe Chromebook yako ili ubadilishe lugha inayotumika kwenye kifaa. <ph name="BEGIN_LINK_LEARN_MORE" />Pata maelezo zaidi<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Buruta juu ya picha ili utafute kwa kutumia <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Kiendelezi cha nje ni sawa na au toleo la chini likilinganishwa na toleo lililopo.</translation>
 <translation id="4555769855065597957">Kivuli</translation>
 <translation id="4555863373929230635">Ili uhifadhi manenosiri yako kwenye Akaunti ya Google, ingia katika akaunti na uwashe kipengele cha kusawazisha.</translation>
@@ -4560,7 +4555,6 @@
 <translation id="5427459444770871191">Zungusha Kisaa</translation>
 <translation id="542750953150239272">Kwa kuendelea, unakubali kwamba kifaa hiki pia kinaweza kupakua na kusakinisha masasisho na programu kiotomatiki kutoka Google, mtoa huduma wako wa simu na mtengenezaji wa kifaa chako, labda kwa kutumia data ya mtandao wa simu. Baadhi ya programu hizi zinaweza kuwa na ununuzi wa ndani ya programu.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Usasishaji inapatikana)</translation>
-<translation id="5429373054983029602">Tafuta kwenye skrini yako ukitumia <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Unahitaji kusakinisha sasisho la programu dhibiti ya Trusted Platform Module. Angalia <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Mtandao wa Kusambazwa Papo Hapo</translation>
 <translation id="5431318178759467895">Rangi</translation>
@@ -4633,7 +4627,6 @@
 <translation id="5494920125229734069">Chagua zote</translation>
 <translation id="5495466433285976480">Hii itaondoa watumiaji wote wa karibu, faili, data, na mipangilio mingine baada ya kuwasha upya kunakofuata. Watumiaji wote watahitajika kuingia katika akaunti tena.</translation>
 <translation id="5495597166260341369">Iwashe skrini</translation>
-<translation id="549580971452855947">Buruta ili utafute picha kwa kutumia <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Panga</translation>
 <translation id="5496730470963166430">Zisizoruhusiwa kutuma madirisha ibukizi wala kukuelekeza kwingine</translation>
 <translation id="5497251278400702716">Faili hii</translation>
@@ -5744,7 +5737,6 @@
 Una nenosiri # zaidi lililoathiriwa. Kidhibiti cha Manenosiri cha Google kinapendekeza ukague nenosiri hili sasa.}other{Imebadilisha nenosiri lililoathiriwa.
 
 Una manenosiri # zaidi yaliyoathiriwa. Kidhibiti cha Manenosiri cha Google kinapendekeza ukague manenosiri haya sasa.}}</translation>
-<translation id="6595792813574514527">Buruta ili Utafute Picha kwa kutumia <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Chaguo za usimbaji fiche</translation>
 <translation id="6596816719288285829">Anwani ya IP</translation>
 <translation id="6597017209724497268">Sampuli</translation>
@@ -7366,7 +7358,6 @@
 <translation id="8184318863960255706">Maelezo zaidi</translation>
 <translation id="8184472985242519288">Kingo sawa</translation>
 <translation id="8186609076106987817">Seva hii haikuweza kupata faili.</translation>
-<translation id="8186704951085064172">Tafuta kwenye Sehemu ya Ukurasa ukitumia <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Angalia mipangilio ya kifaa chako na uiwashe ili uendelee</translation>
 <translation id="8188742492803591566">Weka msimbo wa kufikia uliooneshwa katika Chromecast au Televisheni ili uanze kutuma maudhui ya kwenye skrini yako.</translation>
 <translation id="8189306097519446565">Akaunti za shuleni</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index b8c98e8..4844969 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -1425,7 +1425,6 @@
     Voice Match உங்கள் பிள்ளைக்கு ஏற்றது அல்ல என நீங்கள் பின்னர் முடிவு செய்தால் அதை Assistant அமைப்புகளுக்குச் சென்று முடக்கவும். Voice Match அமைவின்போது உங்கள் பிள்ளை ரெக்கார்டு செய்த ஆடியோ கிளிப்புகளைப் பார்க்கவோ நீக்கவோ அவரின் கணக்கில் இருந்து <ph name="VOICE_MATCH_SETTINGS_URL" /> தளத்திற்குச் செல்லவும்.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> மூலம் பக்கத்தின் ஒரு பகுதியைத் தேடு</translation>
 <translation id="2309620859903500144">இந்தத் தளம் உங்கள் நகர்வு அல்லது ஒளி சென்சார்களை அணுகுவதிலிருந்து தடைசெய்யப்பட்டுள்ளது.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">பக்கத்தின் URL</translation>
@@ -2049,7 +2048,6 @@
 <translation id="289695669188700754">விசை ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">மறைநிலைச் சாளரங்கள் அனைத்தையும் மூடினால் இந்தப் பிரத்தியேக அமைப்பு அகற்றப்படும்</translation>
 <translation id="2897878306272793870">நிச்சயமாக <ph name="TAB_COUNT" /> தாவல்களைத் திறக்க விரும்புகிறீர்களா?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> மூலம் திரையில் இருப்பவற்றைத் தேடு</translation>
 <translation id="290105521672621980">ஆதரிக்கப்படாத அம்சங்களை ஃபைல் பயன்படுத்துகிறது</translation>
 <translation id="2901348420151309559">சமீபத்திய படங்கள் &amp; ஆப்ஸ்</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ஆல் இந்த பிரிண்டருடன் தொடர்புகொள்ள முடியவில்லை. பிரிண்டர் இணைக்கப்பட்டிருப்பதை, உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.</translation>
@@ -2922,7 +2920,6 @@
 <translation id="3778740492972734840">&amp;டெவெலப்பர் கருவிகள்</translation>
 <translation id="3778868487658107119">அதனிடம் கேள்விகளைக் கேட்கலாம். பணிகளைச் செய்யும்படி சொல்லலாம். இது உங்கள் தனிப்பட்ட Google, உங்களுக்கு உதவுவதற்காக எப்போதும் தயாராக இருக்கும்.</translation>
 <translation id="3781742599892759500">Linux மைக்ரோஃபோன் அணுகல்</translation>
-<translation id="378312418865624974">இந்தக் கம்ப்யூட்டருக்கான தனிப்பட்ட அடையாளங்காட்டியைப் படிக்கலாம்</translation>
 <translation id="3784472333786002075">இணையதளங்களால் உருவாக்கப்படும் கோப்புகளே குக்கீகள். இரண்டு வகையான குக்கீகள் உள்ளன: முதல் தரப்பு குக்கீகள், இவை நீங்கள் பார்வையிடும் தளங்களால் உருவாக்கப்படுபவை. முகவரிப் பட்டியில் அந்தத் தளம் காட்டப்படும். மூன்றாம் தரப்புக் குக்கீகள், இவை பிற தளங்களால் உருவாக்கப்படுபவை. நீங்கள் பார்வையிடும் தளங்களில் தோன்றக்கூடிய விளம்பரங்கள் அல்லது படங்கள் போன்ற சில உள்ளடக்கங்கள் இந்தத் தளங்களுடையவையாக இருக்கும்.</translation>
 <translation id="3785308913036335955">ஆப்ஸின் ஷார்ட்கட்டைக் காட்டு</translation>
 <translation id="3785727820640310185">இந்தத் தளத்திற்குச் சேமிக்கப்பட்ட கடவுச்சொற்கள்</translation>
@@ -3575,7 +3572,6 @@
 <translation id="4415748029120993980">SECG நீள்வட்ட வளைவான secp384r1 (NIST P-384 எனவும் அறியப்படும்)</translation>
 <translation id="4416450511678320850">இந்த உள்ளடக்கத்தைக் காட்டக்கூடிய ஆப்ஸ் எதுவுமில்லை</translation>
 <translation id="4416582610654027550">சரியான URLஐ உள்ளிடவும்</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> மூலம் தேட, படங்களைக் கிளிக் செய்து இழுக்கவும்</translation>
 <translation id="4419409365248380979">குக்கீகளை அமைக்க <ph name="HOST" /> ஐ எப்போதும் அனுமதி</translation>
 <translation id="4421932782753506458">ஃபளஃபி</translation>
 <translation id="4423376891418188461">அமைப்புகளை மீட்டெடு</translation>
@@ -3646,6 +3642,7 @@
 <translation id="449232563137139956">ஆன்லைன் ஸ்டோர்கள்/செய்திக் கட்டுரைகளுக்கான படங்கள் போன்ற விளக்கப்படத்தை வழங்க, தளங்கள் வழக்கமாகப் படங்களைக் காட்டும்</translation>
 <translation id="4492698018379445570">ஷாப்பிங் கார்ட்டில் உள்ளவற்றைப் பார்க்கலாம் வாங்கத் தயாரானதும் செக்-அவுட் செய்யலாம்</translation>
 <translation id="4493468155686877504">பரிந்துரைக்கப்படுவது (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180"><ph name="SITE" /> தளத்தில் இந்த நீட்டிப்பை அனுமதிக்கவா?</translation>
 <translation id="4495419450179050807">இந்தப் பக்கத்தில் காண்பிக்க வேண்டாம்</translation>
 <translation id="4497145443434063861">PC, Chromecast ஆகியவை வெவ்வேறு வைஃபை நெட்வொர்க்குகளில் இணைக்கப்பட்டுள்ளன (எ.கா. 2.4GHz
     vs. 5GHz)</translation>
@@ -3714,7 +3711,6 @@
 <translation id="4550926046134589611"><ph name="APP_NAME" /> ஆப்ஸில் சில ஆதரிக்கப்படும் இணைப்புகள் இப்போதும் திறக்கும்.</translation>
 <translation id="4551763574344810652">செயல்தவிர்க்க <ph name="MODIFIER_KEY_DESCRIPTION" />ஐ அழுத்தவும்</translation>
 <translation id="4553526521109675518">சாதனத்தின் மொழியை மாற்ற உங்கள் Chromebookகை மீண்டும் தொடங்கவும். <ph name="BEGIN_LINK_LEARN_MORE" />மேலும் அறிக<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> மூலம் தேட, படங்களைக் கிளிக் செய்து இழுக்கவும்</translation>
 <translation id="4554591392113183336">ஏற்கனவே இருப்பதுடன் ஒப்பிடும் போது வெளிப்புற நீட்டிப்பு ஒரே அல்லது குறைவான பதிப்பைக் கொண்டுள்ளது.</translation>
 <translation id="4555769855065597957">நிழல்</translation>
 <translation id="4555863373929230635">கடவுச்சொற்களை உங்கள் Google கணக்கில் சேமிக்க உள்நுழைந்து ஒத்திசைவை இயக்கவும்.</translation>
@@ -4565,7 +4561,6 @@
 <translation id="5427459444770871191">&amp;வலஞ்சுழியாகச் சுற்று</translation>
 <translation id="542750953150239272">தொடர்வதன் மூலம் Google, உங்கள் மொபைல் நிறுவனம், உங்கள் சாதனத்தின் உற்பத்தியாளர் ஆகியோரிடமிருந்து புதுப்பிப்புகளையும் ஆப்ஸையும் மொபைல் டேட்டா மூலம் இந்தச் சாதனம் தானாகவே பதிவிறக்கி, நிறுவக்கூடும் என்பதை ஏற்கிறீர்கள். 'ஆப்ஸில் வாங்குதல்' வசதி சில ஆப்ஸில் இருக்கலாம்.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (புதுப்பித்தல் இருக்கிறது)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> மூலம் திரையில் இருப்பவற்றைத் தேடு</translation>
 <translation id="542948651837270806">Trusted Platform Module நிலைபொருளுக்கான புதுப்பிப்பை நிறுவ வேண்டும். <ph name="TPM_FIRMWARE_UPDATE_LINK" />ஐக் காட்டு</translation>
 <translation id="5430931332414098647">உடனடி இணைப்பு முறை</translation>
 <translation id="5431318178759467895">வண்ணம்</translation>
@@ -4638,7 +4633,6 @@
 <translation id="5494920125229734069">எல்லாவற்றையும் தேர்ந்தெடு</translation>
 <translation id="5495466433285976480">நீங்கள் அடுத்தமுறை மறுதொடக்கம் செய்தபின்னர், அகப் பயனர்கள், ஃபைல்கள் , தரவு அனைத்தையும், பிற அமைப்புகளையும் இது அகற்றும். எல்லா பயனர்களும் மீண்டும் உள்நுழைய வேண்டியிருக்கும்.</translation>
 <translation id="5495597166260341369">திரையை இயக்கத்தில் வை</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> மூலம் படங்களைத் தேட, கிளிக் செய்து இழுக்கவும்</translation>
 <translation id="5496587651328244253">ஒழுங்கமை</translation>
 <translation id="5496730470963166430">பாப்-அப்களை அனுப்ப/திசைதிருப்புதல்களைப் பயன்படுத்த அனுமதி இல்லாத தளங்கள்</translation>
 <translation id="5497251278400702716">இந்த ஃபைல்</translation>
@@ -5750,7 +5744,6 @@
 களவாடப்பட்ட கடவுச்சொல் இன்னும் # உள்ளது. அதை இப்போதே சரிபார்க்குமாறு Google Password Manager பரிந்துரைக்கிறது.}other{களவாடப்பட்ட கடவுச்சொல் மாற்றப்பட்டது.
 
 களவாடப்பட்ட கடவுச்சொற்கள் இன்னும் # உள்ளன. அவற்றை இப்போதே சரிபார்க்குமாறு Google Password Manager பரிந்துரைக்கிறது.}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> மூலம் படங்களைத் தேட, கிளிக் செய்து இழுக்கவும்</translation>
 <translation id="6596325263575161958">என்க்ரிப்ஷன் விருப்பங்கள்</translation>
 <translation id="6596816719288285829">IP முகவரி</translation>
 <translation id="6597017209724497268">மாதிரிகள்</translation>
@@ -7371,7 +7364,6 @@
 <translation id="8184318863960255706">மேலும் தகவல்</translation>
 <translation id="8184472985242519288">சீரானது</translation>
 <translation id="8186609076106987817">சேவையகத்தால் ஃபைலைக் கண்டறிய முடியவில்லை.</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> மூலம் பக்கத்தின் ஒரு பகுதியைத் தேடு</translation>
 <translation id="8188389033983459049">தொடர்வதற்கு, சாதன அமைப்புகளைச் சரிபார்த்து, புளூடூத்தை இயக்கவும்</translation>
 <translation id="8188742492803591566">உங்கள் ஸ்கிரீனை அலைபரப்பத் தொடங்க, Chromecast அல்லது டிவியில் காட்டப்படும் அணுகல் குறியீட்டை டைப் செய்யுங்கள்.</translation>
 <translation id="8189306097519446565">பள்ளிக் கணக்குகள்</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index 4619856..138efa9a 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -204,6 +204,7 @@
 <translation id="1188807932851744811">లాగ్ అప్‌లోడ్ కాలేదు.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{మీ కంప్యూటర్‌లో నిల్వ చేసిన ఫైల్‌ను యాక్సెస్ చేయండి}other{ మీ కంప్యూటర్‌లో నిల్వ చేసిన # ఫైళ్లను యాక్సెస్ చేయండి}}</translation>
 <translation id="119092896208640858">బ్రౌజింగ్ డేటాను మీ Google ఖాతాలో అలాగే ఉంచి, కేవలం ఈ పరికరం నుండి మాత్రమే తీసివేయడానికి <ph name="BEGIN_LINK" />సైన్ అవుట్ చేయండి<ph name="END_LINK" />.</translation>
+<translation id="1191353342579061195">మీ అవసరాలకు తగిన రూపాన్ని ఎంచుకోండి. మీ రూపాన్ని, వాల్‌పేపర్‌ను, స్క్రీన్ సేవర్‌ను, మరిన్నింటిని మార్చడానికి, డెస్క్‌టాప్‌పై కేవలం కుడి క్లిక్ చేయండి.</translation>
 <translation id="1192706927100816598">{0,plural, =1{మీరు # సెకనులో ఆటోమేటిక్‌గా సైన్ అవుట్ చేయబడతారు.
 మీ స్మార్ట్ కార్డ్‌ను ఇన్‌సర్ట్ చేసి ఉంచమని <ph name="DOMAIN" /> మిమ్మల్ని కోరుతుంది.}other{మీరు # సెకన్లలో ఆటోమేటిక్‌గా సైన్ అవుట్ చేయబడతారు.
 మీ స్మార్ట్ కార్డ్‌ను ఇన్‌సర్ట్ చేసి ఉంచమని <ph name="DOMAIN" /> మిమ్మల్ని కోరుతుంది.}}</translation>
@@ -1304,6 +1305,7 @@
 <translation id="2220409419896228519">మీకు ఇష్టమైన Google యాప్‌లకు బుక్‌మార్క్‌లను జోడించండి</translation>
 <translation id="2220529011494928058">సమస్యను రిపోర్ట్ చేయండి</translation>
 <translation id="2220572644011485463">PIN లేదా పాస్‌వర్డ్</translation>
+<translation id="222115440608612541">సూర్యోదయ సమయంలో, సూర్యాస్తమయం సమయంలో రూపాలను మార్చండి</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">పేరు లేని మీడియా సోర్స్</translation>
 <translation id="2224444042887712269">ఈ సెట్టింగ్ <ph name="OWNER_EMAIL" />కి సంబంధించినది.</translation>
@@ -1425,7 +1427,6 @@
     తర్వాత ఎప్పుడైనా మీ చిన్నారి కోసం వాయిస్ మ్యాచ్ వద్దని మీరు నిర్ణయించుకుంటే, దానిని వారి Assistant సెట్టింగ్‌ల నుండి తీసివేయండి. వాయిస్ మ్యాచ్‌ను సెటప్ చేసేటప్పుడు మీ చిన్నారి రికార్డ్ చేసే ఆడియో క్లిప్‌లను చూడడానికి లేదా తొలగించడానికి, మీ చిన్నారి ఖాతా నుండి <ph name="VOICE_MATCH_SETTINGS_URL" />కు వెళ్లండి.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> సహాయంతో పేజీలోని భాగాన్ని సెర్చ్ చేయండి</translation>
 <translation id="2309620859903500144">మీ మోషన్ లేదా లైట్ సెన్సార్‌లను యాక్సెస్ చేయనీయకుండా ఈ సైట్ బ్లాక్ చేయబడింది.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">పేజీ URL</translation>
@@ -1533,6 +1534,7 @@
 <translation id="241082044617551207">తెలియని ప్లగ్ఇన్‌</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">కీబోర్డ్ ఫంక్షన్ కీలు</translation>
+<translation id="2418307627282545839">ప్రకాశవంతంగా, చూడచక్కని రంగులతో అందంగా ఉంచుకోండి</translation>
 <translation id="2419131370336513030">ఇన్‌స్టాల్ చేసిన యాప్‌లను చూడండి</translation>
 <translation id="2419706071571366386">భద్రత కోసం, మీ కంప్యూటర్‌ని ఉపయోగించనప్పుడు సైన్ అవుట్ చేయండి.</translation>
 <translation id="2422125132043002186">Linux పునరుద్ధరణ రద్దయింది</translation>
@@ -2049,7 +2051,6 @@
 <translation id="289695669188700754">కీ ID: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">మీరు మీ అన్ని అజ్ఞాత విండోలను మూసివేసినప్పుడు, ఈ అనుకూల సెట్టింగ్ తీసివేయబడుతుంది</translation>
 <translation id="2897878306272793870">మీరు <ph name="TAB_COUNT" /> ట్యాబ్‌లను తెరవాలనుకుంటున్నారా?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> సహాయంతో మీ స్క్రీన్‌ను సెర్చ్ చేయండి</translation>
 <translation id="290105521672621980">ఫైల్ మద్దతు లేని లక్షణాలను ఉపయోగిస్తోంది</translation>
 <translation id="2901348420151309559">తాజా ఫోటోలు, యాప్‌లు</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ఈ ప్రింటర్‌తో కమ్యూనికేట్ చేయలేకపోయింది. ప్రింటర్ ప్లగిన్ చేయబడిందని నిర్ధారించుకొని, ఆపై మళ్లీ ప్రయత్నించండి.</translation>
@@ -2922,7 +2923,6 @@
 <translation id="3778740492972734840">డెవలపర్ ఉపకరణాలు</translation>
 <translation id="3778868487658107119">దీనిని ప్రశ్నలు అడగండి. పనులు చేయమని చెప్పండి. ఇది మీ వ్యక్తిగతమైన Google, ఎల్లవేళలా సహాయం చేయడానికి సిద్ధంగా ఉంటుంది.</translation>
 <translation id="3781742599892759500">Linux మైక్రోఫోన్ యాక్సెస్</translation>
-<translation id="378312418865624974">ఈ కంప్యూటర్ యొక్క ప్రత్యేక ఐడెంటిఫైయర్‌ని చదవడం</translation>
 <translation id="3784472333786002075">వెబ్‌సైట్‌లు రూపొందించిన ఫైళ్లను కుక్కీలు అంటారు. కుక్కీలు రెండు రకాలు ఉంటాయి: మీరు సందర్శించే సైట్‌లు రూపొందించిన కుక్కీలను మొదటి పక్షం కుక్కీలు అంటారు. అడ్రస్‌ బార్‌లో ఈ సైట్ చూపించబడుతుంది. ఇతర సైట్‌లు రూపొందించిన కుక్కీలను మూడవ పక్ష కుక్కీలు అంటారు. మీరు సందర్శించే వెబ్‌సైట్‌లో మీరు చూసే ప్రకటనలు లేదా చిత్రాల వంటి, కొంత కంటెంట్‌ను ఈ సైట్‌లు స్వంతంగా కలిగి ఉంటాయి.</translation>
 <translation id="3785308913036335955">యాప్‌ల షార్ట్‌కట్‌ను చూపు</translation>
 <translation id="3785727820640310185">ఈ సైట్ కోసం సేవ్ చేసిన పాస్‌వర్డ్‌లు</translation>
@@ -3576,7 +3576,6 @@
 <translation id="4415748029120993980">SECG దీర్ఘవృత్తాకార వక్రం secp384r1 (NIST P-384గా కూడా పిలువబడుతుంది)</translation>
 <translation id="4416450511678320850">ఈ కంటెంట్‌కు ఎలాంటి యాప్‌లు అందుబాటులో లేవు</translation>
 <translation id="4416582610654027550">చెల్లుబాటు అయ్యే URLను టైప్ చేయండి</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> సహాయంతో సెర్చ్ చేయడానికి ఇమేజ్‌ల పైకి లాగండి</translation>
 <translation id="4419409365248380979">కుకీలను సెట్ చేయడానికి <ph name="HOST" />ని ఎల్లపుడు అనుమతించండి</translation>
 <translation id="4421932782753506458">ఫ్లఫ్ఫీ</translation>
 <translation id="4423376891418188461">సెట్టింగ్‌లను పునరుద్ధరించు</translation>
@@ -3715,7 +3714,6 @@
 <translation id="4550926046134589611">కొన్ని సపోర్ట్ లింక్‌లు ఇప్పటికీ <ph name="APP_NAME" />లో తెరవబడతాయి.</translation>
 <translation id="4551763574344810652">చర్యరద్దు చేయడానికి <ph name="MODIFIER_KEY_DESCRIPTION" />ను నొక్కండి</translation>
 <translation id="4553526521109675518">పరికర భాషను మార్చడానికి మీరు Chromebookను రీస్టార్ట్ చేయవలసి ఉంటుంది. <ph name="BEGIN_LINK_LEARN_MORE" />మరింత తెలుసుకోండి<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> సహాయంతో సెర్చ్ చేయడానికి ఇమేజ్‌ల పైకి లాగండి</translation>
 <translation id="4554591392113183336">ప్రస్తుతం ఉన్న వెర్షన్‌తో పోలిస్తే, బాహ్య ఎక్స్‌టెన్షన్ అదే వెర్షన్‌కు చెందినది లేదా తక్కువ వెర్షన్‌కు చెందినది.</translation>
 <translation id="4555769855065597957">నీడ</translation>
 <translation id="4555863373929230635">పాస్‌వర్డ్‌లను మీ Google ఖాతాలో సేవ్ చేయడానికి, సైన్ ఇన్ చేసి, సింక్ ఆన్ చేయండి.</translation>
@@ -4566,7 +4564,6 @@
 <translation id="5427459444770871191">&amp;సవ్యదిశలో తిప్పు</translation>
 <translation id="542750953150239272">కొనసాగించడం ద్వారా, మీరు ఈ పరికరం ఆటోమేటిక్‌గా Google, మీ క్యారియర్, మీ పరికర తయారీదారు నుండి సెల్యులార్ డేటాతో కూడా అప్‌డేట్‌లు, యాప్‌లను డౌన్‌లోడ్ చేసి, ఇన్‌స్టాల్ చేయవచ్చని మీరు అంగీకరిస్తున్నారు. ఈ యాప్‌లలో కొన్ని, 'యాప్‌లోని కొనుగోళ్ల'ను ఆఫర్ చేయవచ్చు.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (అప్‌డేట్‌ అందుబాటులో ఉంది)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> సహాయంతో మీ స్క్రీన్‌ను సెర్చ్ చేయండి</translation>
 <translation id="542948651837270806">విశ్వసనీయ ప్లాట్‌ఫామ్ మాడ్యూల్ ఫర్మ్‌వేర్ కోసం అప్‌డేట్‌ను ఇన్‌స్టాల్ చేయాలి. <ph name="TPM_FIRMWARE_UPDATE_LINK" />ను చూడండి</translation>
 <translation id="5430931332414098647">తక్షణ టెథెరింగ్</translation>
 <translation id="5431318178759467895">రంగు</translation>
@@ -4639,7 +4636,6 @@
 <translation id="5494920125229734069">అన్నీ ఎంచుకోండి</translation>
 <translation id="5495466433285976480">మీరు తర్వాతిసారి పునఃప్రారంభించినప్పుడు ఇది స్థానిక వినియోగదారులు, ఫైళ్లు, డేటా మరియు ఇతర సెట్టింగ్‌లు మొత్తాన్ని తీసివేస్తుంది. వినియోగదారులందరూ మళ్లీ సైన్ ఇన్ చేయాల్సి ఉంటుంది.</translation>
 <translation id="5495597166260341369">ప్రదర్శనను ఆన్‌లో ఉంచండి</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> సహాయంతో ఇమేజ్‌లను సెర్చ్ చేయడానికి లాగండి</translation>
 <translation id="5496587651328244253">క్రమంగా పేర్చు</translation>
 <translation id="5496730470963166430">పాప్-అప్‌లను పంపడానికి లేదా మళ్లింపులను ఉపయోగించడానికి అనుమతించబడలేదు</translation>
 <translation id="5497251278400702716">ఈ ఫైల్</translation>
@@ -5750,7 +5746,6 @@
 మీ వద్ద మరో # చోరీకి గురైన పాస్‌వర్డ్ ఉంది. ఈ పాస్‌వర్డ్‌ను ఇప్పుడే చెక్ చేయమని Google Password Manager సిఫార్సు చేస్తోంది.}other{చోరీకి గురైన పాస్‌వర్డ్ విజయవంతంగా మార్చబడింది.
 
 మీ వద్ద మరో # చోరీకి గురైన పాస్‌వర్డ్‌లు ఉన్నాయి. ఈ పాస్‌వర్డ్‌లను ఇప్పుడే చెక్ చేయమని Google Password Manager సిఫార్సు చేస్తోంది.}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> సహాయంతో ఇమేజ్‌లను సెర్చ్ చేయడానికి లాగండి</translation>
 <translation id="6596325263575161958">ఎన్‌క్రిప్షన్ ఎంపికలు</translation>
 <translation id="6596816719288285829">IP అడ్రస్‌</translation>
 <translation id="6597017209724497268">నమూనాలు</translation>
@@ -6051,6 +6046,7 @@
 <translation id="6895032998810961280">ఈ క్లీన్అప్ సమయంలో మీ కంప్యూటర్‌లో గుర్తించిన హానికరమైన సాఫ్ట్‌వేర్, సిస్టమ్ సెట్టింగ్‌లు, అలాగే ప్రాసెస్‌ల గురించిన వివరాలను Googleకు రిపోర్ట్ చేయండి</translation>
 <translation id="6896758677409633944">కాపీ చేయి</translation>
 <translation id="6897363604023044284">క్లియర్ చేయడానికి సైట్‌లను ఎంచుకోండి</translation>
+<translation id="6897688156970667447">తక్కువ వెలుతురు ఉన్న దగ్గర సహాయకరంగా ఉంటుంది, బ్యాటరీని సేవ్ చేస్తుంది</translation>
 <translation id="6898440773573063262">కియోస్క్ యాప్‌లను ఇప్పుడు ఈ పరికరంలో ఆటోమేటిక్‌గా ప్రారంభించడానికి కాన్ఫిగర్ చేయవచ్చు.</translation>
 <translation id="6900284862687837908">బ్యాక్‌గ్రౌండ్ యాప్: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">మెరుగైన రక్షణ</translation>
@@ -7367,7 +7363,6 @@
 <translation id="8184318863960255706">మరింత సమాచారం</translation>
 <translation id="8184472985242519288">ఏకరీతి</translation>
 <translation id="8186609076106987817">సర్వర్ ఫైల్‌ను కనుగొనలేకపోయింది.</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> సహాయంతో పేజీలోని భాగాన్ని సెర్చ్ చేయండి</translation>
 <translation id="8188389033983459049">మీ పరికర సెట్టింగ్‌లను తనిఖీ చేసి, కొనసాగించడానికి దాన్ని ఆన్ చేయండి</translation>
 <translation id="8188742492803591566">మీ స్క్రీన్‌ను ప్రసారం చేయడం ప్రారంభించడానికి, Chromecast లేదా TVలో కనిపించే యాక్సెస్ కోడ్‌ను ఎంటర్ చేయండి.</translation>
 <translation id="8189306097519446565">స్కూల్ ఖాతాలు</translation>
@@ -7536,6 +7531,7 @@
 <translation id="8358685469073206162">పేజీలను పునరుద్ధరించాలా?</translation>
 <translation id="8358912028636606457">ట్యాబ్ ఆడియోను ప్రసారం చేయడానికి ఈ పరికరంలో మద్దతు లేదు.</translation>
 <translation id="835951711479681002">మీ Google ఖాతాలో సేవ్ చేయండి</translation>
+<translation id="8360140320636871023">మీ డిస్‌ప్లే రూపాన్ని వ్యక్తిగతీకరించండి</translation>
 <translation id="8363095875018065315">స్థిరం</translation>
 <translation id="8363142353806532503">మైక్రోఫోన్ బ్లాక్ చేయబడింది</translation>
 <translation id="8366396658833131068">మీ నెట్‌వర్క్ కనెక్టివిటీ పునరుద్ధరించబడింది. దయచేసి వేరే నెట్‌వర్క్‌ను ఎంచుకోండి లేదా మీ కియోస్క్ యాప్‌ను ప్రారంభించడానికి కింది 'కొనసాగించు' బటన్ నొక్కండి.</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index 05706ea9..58059d9 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -180,6 +180,7 @@
 <translation id="1166583374608765787">ตรวจสอบการอัปเดตชื่อ</translation>
 <translation id="1166596238782048887"><ph name="TAB_TITLE" /> อยู่ในเดสก์ <ph name="DESK_TITLE" /></translation>
 <translation id="1168020859489941584">กำลังจะเปิดภายใน <ph name="TIME_REMAINING" />...</translation>
+<translation id="1169266963600477608">การควบคุมเกม</translation>
 <translation id="1169435433292653700"><ph name="FILE_NAME" /> มีข้อมูลที่ละเอียดอ่อนหรือเป็นอันตราย ผู้ดูแลระบบบอกว่า "<ph name="CUSTOM_MESSAGE" />"</translation>
 <translation id="1171135284592304528">ไฮไลต์วัตถุที่มีโฟกัสของแป้นพิมพ์เมื่อมีการเปลี่ยนแปลง</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> ต้องการเชื่อมต่อกับอุปกรณ์ HID</translation>
@@ -1410,7 +1411,6 @@
     หากภายหลังคุณคิดว่า Voice Match ไม่เหมาะใช้งานสำหรับบุตรหลาน ก็แค่นำฟีเจอร์นี้ออกจากการตั้งค่า Assistant หากต้องการดูหรือลบคลิปเสียงที่บุตรหลานบันทึกไว้ระหว่างการตั้งค่า Voice Match ให้ไปที่ <ph name="VOICE_MATCH_SETTINGS_URL" /> จากบัญชีของบุตรหลาน
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">ค้นหาบางส่วนของหน้าด้วย <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">เว็บไซต์นี้ถูกบล็อกไม่ให้เข้าถึงเซ็นเซอร์ตรวจจับการเคลื่อนไหวหรือแสง</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL ของหน้าเว็บ</translation>
@@ -2034,7 +2034,6 @@
 <translation id="289695669188700754">รหัสคีย์: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">ระบบจะนำการตั้งค่าที่กำหนดเองนี้ออกเมื่อคุณปิดหน้าต่างที่ไม่ระบุตัวตนทั้งหมด</translation>
 <translation id="2897878306272793870">คุณแน่ใจหรือไม่ว่าต้องการเปิด <ph name="TAB_COUNT" /> แท็บ</translation>
-<translation id="2900477968385519153">ค้นหาบนหน้าจอของคุณด้วย <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">ไฟล์ใช้ฟีเจอร์ที่ไม่รองรับ</translation>
 <translation id="2901348420151309559">รูปภาพและแอปล่าสุด</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> ไม่สามารถสื่อสารกับเครื่องพิมพ์นี้ โปรดตรวจสอบว่าเครื่องพิมพ์เสียบปลั๊กอยู่และลองอีกครั้ง</translation>
@@ -2907,7 +2906,6 @@
 <translation id="3778740492972734840">&amp;เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์</translation>
 <translation id="3778868487658107119">ถามคำถามและบอกให้ทำสิ่งต่างๆ ได้เหมือนเป็น Google ส่วนตัวที่พร้อมช่วยเหลือคุณเสมอ</translation>
 <translation id="3781742599892759500">การเข้าถึงไมโครโฟนใน Linux</translation>
-<translation id="378312418865624974">อ่านตัวระบุเฉพาะสำหรับคอมพิวเตอร์เครื่องนี้</translation>
 <translation id="3784472333786002075">คุกกี้คือไฟล์ที่เว็บไซต์ต่างๆ สร้างขึ้น มีคุกกี้อยู่ 2 ประเภท ได้แก่ คุกกี้ของบุคคลที่หนึ่งซึ่งเว็บไซต์ที่คุณเข้าชมเป็นผู้สร้างขึ้น เว็บไซต์จะแสดงอยู่ในแถบที่อยู่ คุกกี้ของบุคคลที่สามซึ่งเว็บไซต์อื่นๆ เป็นผู้สร้างขึ้น เว็บไซต์เหล่านี้เป็นเจ้าของเนื้อหาบางอย่าง เช่น โฆษณาหรือรูปภาพที่คุณเห็นในเว็บไซต์ที่เข้าชม</translation>
 <translation id="3785308913036335955">แสดงทางลัดแอป</translation>
 <translation id="3785727820640310185">รหัสผ่านที่บันทึกไว้สำหรับเว็บไซต์นี้</translation>
@@ -3366,6 +3364,7 @@
 <translation id="4227605727325220318">เพิ่มโทรศัพท์ Android เครื่องใหม่</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{ไม่อนุญาตส่วนขยายนี้}other{ไม่อนุญาตส่วนขยายบางรายการ}}</translation>
 <translation id="4231095370974836764">ติดตั้งแอปและเกมจาก Google Play ใน <ph name="DEVICE_TYPE" /> <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">ปิดการควบคุมเกม</translation>
 <translation id="4232375817808480934">กำหนดค่า Kerberos</translation>
 <translation id="4235965441080806197">ยกเลิกการลงชื่อเข้าใช้</translation>
 <translation id="4236163961381003811">สำรวจส่วนขยายเพิ่มเติม</translation>
@@ -3560,7 +3559,6 @@
 <translation id="4415748029120993980">SECG elliptic curve secp384r1 (เรียกอีกอย่างว่า NIST P-384)</translation>
 <translation id="4416450511678320850">ไม่มีแอปที่ใช้ได้กับเนื้อหานี้</translation>
 <translation id="4416582610654027550">พิมพ์ URL ที่ถูกต้อง</translation>
-<translation id="4417162649853416189">ลากไปบนรูปภาพเพื่อค้นหาด้วย <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">อนุญาตให้ <ph name="HOST" /> ตั้งค่าคุกกี้ได้ตลอดเวลา</translation>
 <translation id="4421932782753506458">ฟลัฟฟี</translation>
 <translation id="4423376891418188461">กู้คืนการตั้งค่า</translation>
@@ -3631,6 +3629,7 @@
 <translation id="449232563137139956">โดยปกติแล้วเว็บไซต์จะแสดงรูปภาพประกอบ เช่น รูปภาพสำหรับร้านค้าออนไลน์หรือบทความข่าว</translation>
 <translation id="4492698018379445570">หาสิ่งที่คุณใส่ไว้ในรถเข็นช็อปปิ้งและชำระเงินเมื่อพร้อม</translation>
 <translation id="4493468155686877504">แนะนำ (<ph name="INSTALL_SIZE" />)</translation>
+<translation id="4495002167047709180">อนุญาตให้ใช้ส่วนขยายนี้ใน <ph name="SITE" /> ไหม</translation>
 <translation id="4495419450179050807">ไม่แสดงในหน้านี้อีก</translation>
 <translation id="4497145443434063861">PC และ Chromecast ใช้เครือข่าย Wi-Fi ต่างกัน (เช่น 2.4 GHz กับ 5 GHz)</translation>
 <translation id="4500114933761911433"><ph name="PLUGIN_NAME" /> ขัดข้อง</translation>
@@ -3698,7 +3697,6 @@
 <translation id="4550926046134589611">ลิงก์ที่รองรับบางลิงก์จะยังคงเปิดใน <ph name="APP_NAME" /></translation>
 <translation id="4551763574344810652">กด <ph name="MODIFIER_KEY_DESCRIPTION" /> เพื่อเลิกทำ</translation>
 <translation id="4553526521109675518">คุณต้องรีสตาร์ท Chromebook เพื่อเปลี่ยนภาษาของอุปกรณ์ <ph name="BEGIN_LINK_LEARN_MORE" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">ลากไปบนรูปภาพเพื่อค้นหาด้วย <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">ส่วนขยายภายนอกเป็นเวอร์ชันเดียวกันหรือต่ำกว่าเมื่อเปรียบเทียบกับส่วนขยายที่มีอยู่</translation>
 <translation id="4555769855065597957">เงา</translation>
 <translation id="4555863373929230635">หากต้องการบันทึกรหัสผ่านลงในบัญชี Google ให้ลงชื่อเข้าใช้และเปิดการซิงค์</translation>
@@ -4549,7 +4547,6 @@
 <translation id="5427459444770871191">หมุน&amp;ตามเข็มนาฬิกา</translation>
 <translation id="542750953150239272">การดำเนินการต่อเป็นการยอมรับว่าอุปกรณ์นี้อาจใช้อินเทอร์เน็ตมือถือดาวน์โหลดและติดตั้งการอัปเดตและแอปจาก Google, ผู้ให้บริการของคุณ และผู้ผลิตอุปกรณ์โดยอัตโนมัติด้วย บางแอปเหล่านี้อาจมีการซื้อในแอป</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (มีการอัปเดต)</translation>
-<translation id="5429373054983029602">ค้นหาบนหน้าจอของคุณด้วย <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">ต้องติดตั้งอัปเดตเฟิร์มแวร์ของโมดูลแพลตฟอร์มที่เชื่อถือได้ ดู <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">การเชื่อมต่อ Wi-Fi ฮอตสปอตจากมือถือโดยอัตโนมัติ</translation>
 <translation id="5431318178759467895">สี</translation>
@@ -4622,7 +4619,6 @@
 <translation id="5494920125229734069">เลือกทั้งหมด</translation>
 <translation id="5495466433285976480">การดำเนินการนี้จะลบผู้ใช้ท้องถิ่น ไฟล์ ข้อมูล และการตั้งค่าอื่นๆ ทั้งหมดหลังจากการรีสตาร์ทครั้งถัดไปของคุณ ผู้ใช้ทุกคนจะต้องลงชื่อเข้าใช้อีกครั้ง</translation>
 <translation id="5495597166260341369">เปิดจอแสดงผลค้างไว้</translation>
-<translation id="549580971452855947">ลากเพื่อค้นหารูปภาพด้วย <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">จัดระเบียบ</translation>
 <translation id="5496730470963166430">ไม่ได้รับอนุญาตให้ส่งป๊อปอัปหรือใช้การเปลี่ยนเส้นทาง</translation>
 <translation id="5497251278400702716">ไฟล์นี้</translation>
@@ -5730,7 +5726,6 @@
 คุณมีรหัสผ่านที่ถูกละเมิดอีก # รายการ Google เครื่องมือจัดการรหัสผ่านแนะนำให้ตรวจสอบรหัสผ่านนี้ทันที}other{เปลี่ยนรหัสผ่านที่ถูกละเมิดเรียบร้อยแล้ว
 
 คุณมีรหัสผ่านที่ถูกละเมิดอีก # รายการ Google เครื่องมือจัดการรหัสผ่านแนะนำให้ตรวจสอบรหัสผ่านเหล่านี้ทันที}}</translation>
-<translation id="6595792813574514527">ลากเพื่อค้นหารูปภาพด้วย <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">ตัวเลือกการเข้ารหัส</translation>
 <translation id="6596816719288285829">ที่อยู่ IP</translation>
 <translation id="6597017209724497268">ตัวอย่าง</translation>
@@ -7350,7 +7345,6 @@
 <translation id="8184318863960255706">ข้อมูลเพิ่มเติม</translation>
 <translation id="8184472985242519288">แบบเดียวกัน</translation>
 <translation id="8186609076106987817">เซิร์ฟเวอร์ไม่พบไฟล์</translation>
-<translation id="8186704951085064172">ค้นหาบางส่วนของหน้าด้วย <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">ตรวจสอบการตั้งค่าอุปกรณ์และเปิดบลูทูธเพื่อดำเนินการต่อ</translation>
 <translation id="8188742492803591566">ป้อนรหัสการเข้าถึงที่แสดงใน Chromecast หรือทีวีเพื่อเริ่มแคสต์หน้าจอ</translation>
 <translation id="8189306097519446565">บัญชีโรงเรียน</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index a7bdef7..c938170 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -1408,7 +1408,6 @@
     Daha sonra Voice Match'in çocuğunuza uygun olmadığına karar verirseniz bunu Asistan Ayarları'ndan kaldırabilirsiniz. Voice Match kurulumu sırasında çocuğunuzun kaydettiği ses kliplerini görüntülemek veya silmek için çocuğunuzun hesabından <ph name="VOICE_MATCH_SETTINGS_URL" /> adresine gidin.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> ile sayfanın bir kısmında arama yap</translation>
 <translation id="2309620859903500144">Bu sitenin, hareket veya ışık sensörlerinize erişimi engellenmiştir.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Sayfa URL'si</translation>
@@ -2031,7 +2030,6 @@
 <translation id="289695669188700754">Anahtar Kimliği: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Tüm Gizli pencerelerinizi kapattığınızda bu özel ayar kaldırılır</translation>
 <translation id="2897878306272793870"><ph name="TAB_COUNT" /> sekmeyi açmak istediğinizden emin misiniz?</translation>
-<translation id="2900477968385519153">Ekranınızı <ph name="VISUAL_SEARCH_PROVIDER" /> ile arayın</translation>
 <translation id="290105521672621980">Dosyada desteklenmeyen özellikler kullanılıyor</translation>
 <translation id="2901348420151309559">Son fotoğraflar ve uygulamalar</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> bu yazıcıyla iletişim kuramadı. Yazıcının fişinin takılı olduğundan emin olun ve tekrar deneyin.</translation>
@@ -2904,7 +2902,6 @@
 <translation id="3778740492972734840">&amp;Geliştirici araçları</translation>
 <translation id="3778868487658107119">Sorular sorun. Bir şeyler yapmasını isteyin. Bu cihaz sizin kendi Google'ınızdır ve her zaman yardıma hazırdır.</translation>
 <translation id="3781742599892759500">Linux mikrofon erişimi</translation>
-<translation id="378312418865624974">Bu bilgisayara ilişkin benzersiz bir tanıtıcıyı okuma</translation>
 <translation id="3784472333786002075">Çerezler, web siteleri tarafından oluşturulan dosyalardır. İki tür çerez vardır: Birinci taraf çerezleri ziyaret ettiğiniz site tarafından oluşturulur. Site, adres çubuğunda gösterilir. Üçüncü taraf çerezleri diğer siteler tarafından oluşturulur. Bu siteler, ziyaret ettiğiniz web sitesinde gördüğünüz reklam veya resim gibi içeriğin bir kısmına sahiptir.</translation>
 <translation id="3785308913036335955">Uygulamalar Kısayolunu Göster</translation>
 <translation id="3785727820640310185">Bu site için kaydedilen şifreler</translation>
@@ -3557,7 +3554,6 @@
 <translation id="4415748029120993980">SECG eliptik eğri secp384r1 (önceki adı NIST P-384)</translation>
 <translation id="4416450511678320850">Bu içerik için kullanılabilen uygulama yok</translation>
 <translation id="4416582610654027550">Geçerli bir URL yazın</translation>
-<translation id="4417162649853416189">Görselleri <ph name="VISUAL_SEARCH_PROVIDER" /> ile aramak için üzerine sürükleyin</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> ana makinesinin her zaman çerezleri ayarlamasına izin ver</translation>
 <translation id="4421932782753506458">Mırnav</translation>
 <translation id="4423376891418188461">Ayarları Geri Yükle</translation>
@@ -3695,7 +3691,6 @@
 <translation id="4550926046134589611">Bazı desteklenen uygulamalar <ph name="APP_NAME" /> uygulamasında açılmaya devam eder.</translation>
 <translation id="4551763574344810652">Geri Almak için <ph name="MODIFIER_KEY_DESCRIPTION" /> kısayoluna basın</translation>
 <translation id="4553526521109675518">Cihaz dilini değiştirmek için Chromebook'unuzu yeniden başlatmanız gerekir. <ph name="BEGIN_LINK_LEARN_MORE" />Daha fazla bilgi<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Görselleri <ph name="VISUAL_SEARCH_PROVIDER" /> ile aramak için üzerine sürükleyin</translation>
 <translation id="4554591392113183336">Harici uzantı, mevcut bir uzantıyla aynı veya daha eski sürümde.</translation>
 <translation id="4555769855065597957">Gölge</translation>
 <translation id="4555863373929230635">Şifreleri Google Hesabınıza kaydetmek için oturum açın ve senkronizasyonu etkinleştirin.</translation>
@@ -4546,7 +4541,6 @@
 <translation id="5427459444770871191">Saat &amp;Yönünde Döndür</translation>
 <translation id="542750953150239272">Devam ederek bu cihazın Google'dan, operatörünüzden ve cihazınızın üreticisinden (muhtemelen hücresel veri kullanarak) gönderilen güncelleme ve uygulamaları otomatik olarak indirip yükleyebileceğini kabul etmiş olursunuz. Bu uygulamalardan bazıları uygulama içi satın alma seçenekleri sunabilir.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Güncelleme mevcut)</translation>
-<translation id="5429373054983029602">Ekranınızı <ph name="VISUAL_SEARCH_PROVIDER" /> ile arayın</translation>
 <translation id="542948651837270806">Güvenilir Platform Modülü donanım yazılımı için bir güncellemenin yüklenmesi gerekiyor. <ph name="TPM_FIRMWARE_UPDATE_LINK" /> ürününe göz atın</translation>
 <translation id="5430931332414098647">Anında Tethering</translation>
 <translation id="5431318178759467895">Renk</translation>
@@ -4619,7 +4613,6 @@
 <translation id="5494920125229734069">Tümünü seç</translation>
 <translation id="5495466433285976480">Bu işlem, cihazı tekrar başlattığınızda tüm yerel kullanıcıları, dosyaları, verileri ve diğer ayarları kaldıracak. Tüm kullanıcıların yeniden oturum açması gerekecek.</translation>
 <translation id="5495597166260341369">Ekranı açık tut</translation>
-<translation id="549580971452855947">Görselleri <ph name="VISUAL_SEARCH_PROVIDER" /> ile aramak için sürükleyin</translation>
 <translation id="5496587651328244253">Düzenle</translation>
 <translation id="5496730470963166430">Pop-up'lar göndermesine veya yönlendirmeler kullanmasına izin verilmeyen siteler</translation>
 <translation id="5497251278400702716">Bu dosya</translation>
@@ -5731,7 +5724,6 @@
 Güvenliği ihlal edilmiş # şifreniz daha var. Google Şifre Yöneticisi bu şifreyi hemen kontrol etmenizi öneriyor.}other{Güvenliği ihlal edilmiş şifre değiştirildi.
 
 Güvenliği ihlal edilmiş # şifreniz daha var. Google Şifre Yöneticisi bu şifreleri hemen kontrol etmenizi öneriyor.}}</translation>
-<translation id="6595792813574514527">Görselleri <ph name="VISUAL_SEARCH_PROVIDER" /> ile aramak için sürükleyin</translation>
 <translation id="6596325263575161958">Şifreleme seçenekleri</translation>
 <translation id="6596816719288285829">IP Adresi</translation>
 <translation id="6597017209724497268">Örnek Sayısı</translation>
@@ -7351,7 +7343,6 @@
 <translation id="8184318863960255706">Daha fazla bilgi</translation>
 <translation id="8184472985242519288">Tek tip</translation>
 <translation id="8186609076106987817">Sunucu dosyayı bulamadı.</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> ile Sayfanın Bir Kısmında Arama Yap</translation>
 <translation id="8188389033983459049">Cihaz ayarlarınızı kontrol edin ve devam etmek için açın</translation>
 <translation id="8188742492803591566">Ekranınızdaki içeriği yayınlamaya başlamak için Chromecast veya televizyonda gösterilen erişim kodunu girin.</translation>
 <translation id="8189306097519446565">Okul hesapları</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index 18d4c21..e6ac61ad 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -1428,7 +1428,6 @@
     Якщо згодом ви вирішите, що функція Voice Match дитині не потрібна, просто вимкніть її в налаштуваннях Асистента. Щоб переглянути або видалити аудіозаписи, які дитина додає під час налаштування Voice Match, перейдіть на сторінку <ph name="VOICE_MATCH_SETTINGS_URL" /> із її облікового запису.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Шукати на сторінці за допомогою технології <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Доступ цього сайту до датчиків руху чи світла заблоковано.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL-адреса сторінки</translation>
@@ -2052,7 +2051,6 @@
 <translation id="289695669188700754">Ідентифікатор ключа: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Це спеціальне налаштування буде вилучено, коли ви закриєте всі вікна в режимі анонімного перегляду</translation>
 <translation id="2897878306272793870">Ви дійсно бажаєте відкрити <ph name="TAB_COUNT" /> вкладки?</translation>
-<translation id="2900477968385519153">Пошук об’єктів на екрані за допомогою технології <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Файл використовує непідтримувані функції</translation>
 <translation id="2901348420151309559">Нещодавні фотографії та додатки</translation>
 <translation id="2902127500170292085">Розширення <ph name="EXTENSION_NAME" /> не може зв’язатися з цим принтером. Перевірте, чи принтер підключено, і повторіть спробу.</translation>
@@ -2925,7 +2923,6 @@
 <translation id="3778740492972734840">&amp;Інструменти розробника</translation>
 <translation id="3778868487658107119">Ставте запитання. Давайте завдання. Ваш персональний Google Асистент завжди готовий допомогти.</translation>
 <translation id="3781742599892759500">Доступ до мікрофона в Linux</translation>
-<translation id="378312418865624974">Читати унікальний ідентифікатор для цього комп’ютера</translation>
 <translation id="3784472333786002075">Файли cookie – це файли, створені веб-сайтами. Їх є два види. Основні файли cookie створюються сайтом, який ви відвідуєте. Цей сайт указується в адресному рядку. Сторонні файли cookie створюються іншими сайтами. Ці сайти показують власний контент, як-от оголошення чи зображення, на веб-сторінці, яку ви відвідуєте.</translation>
 <translation id="3785308913036335955">Показувати ярлики додатків</translation>
 <translation id="3785727820640310185">Збережені паролі для цього сайту</translation>
@@ -3578,7 +3575,6 @@
 <translation id="4415748029120993980">Еліптична крива SECG secp384r1 (також відома як NIST P-384)</translation>
 <translation id="4416450511678320850">Немає доступних додатків</translation>
 <translation id="4416582610654027550">Введіть дійсну URL-адресу</translation>
-<translation id="4417162649853416189">Перетягувати на екрані зображення для пошуку за допомогою технології <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Завжди дозволяти хосту <ph name="HOST" /> створювати файли cookie</translation>
 <translation id="4421932782753506458">Киця</translation>
 <translation id="4423376891418188461">Відновити налаштування</translation>
@@ -3717,7 +3713,6 @@
 <translation id="4550926046134589611">Деякі підтримувані посилання все ще відкриватимуться в додатку <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Щоб відмінити, натисніть <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4553526521109675518">Щоб змінити мову пристрою, потрібно перезапустити Chromebook. <ph name="BEGIN_LINK_LEARN_MORE" />Докладніше<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Перетягувати на екрані зображення для пошуку за допомогою технології <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Зовнішнє розширення має таку саму або нижчу версію порівняно з наявним.</translation>
 <translation id="4555769855065597957">Shadow</translation>
 <translation id="4555863373929230635">Щоб зберігати паролі в обліковому записі Google, увійдіть у нього й увімкніть синхронізацію.</translation>
@@ -4568,7 +4563,6 @@
 <translation id="5427459444770871191">Повернути &amp;за годинниковою стрілкою</translation>
 <translation id="542750953150239272">Продовжуючи, ви дозволяєте цьому пристрою автоматично завантажувати та встановлювати оновлення й додатки від Google, вашого оператора та виробника пристрою, зокрема через мобільний трафік. Деякі додатки можуть пропонувати внутрішні покупки.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (оновлення доступне)</translation>
-<translation id="5429373054983029602">Пошук об’єктів на екрані за допомогою технології <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Потрібно встановити оновлення мікропрограми Trusted Platform Module. <ph name="TPM_FIRMWARE_UPDATE_LINK" />: переглянути</translation>
 <translation id="5430931332414098647">Миттєва точка доступу</translation>
 <translation id="5431318178759467895">Колір</translation>
@@ -4641,7 +4635,6 @@
 <translation id="5494920125229734069">Вибрати все</translation>
 <translation id="5495466433285976480">Це вилучить усіх користувачів, файли, дані й інші налаштування після наступного перезапуску. Усім користувачам потрібно буде знову ввійти.</translation>
 <translation id="5495597166260341369">Залишати дисплей увімкненим</translation>
-<translation id="549580971452855947">Перетягнути зображення для пошуку за допомогою технології <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Упорядкувати</translation>
 <translation id="5496730470963166430">Заборонено показувати спливаючі вікна чи використовувати переспрямування</translation>
 <translation id="5497251278400702716">Цей файл</translation>
@@ -5755,7 +5748,6 @@
 У вас є ще # зламаних паролів. Менеджер паролів Google радить негайно їх перевірити.}other{Зламаний пароль змінено.
 
 У вас є ще # зламаного пароля. Менеджер паролів Google радить негайно їх перевірити.}}</translation>
-<translation id="6595792813574514527">Перетягнути зображення для пошуку за допомогою технології <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Параметри шифрування</translation>
 <translation id="6596816719288285829">ІР-адреса</translation>
 <translation id="6597017209724497268">Зразки</translation>
@@ -7376,7 +7368,6 @@
 <translation id="8184318863960255706">Докладніше</translation>
 <translation id="8184472985242519288">Однорідний текст</translation>
 <translation id="8186609076106987817">Серверу не вдалося знайти файл.</translation>
-<translation id="8186704951085064172">Шукати на сторінці за допомогою технології <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Щоб продовжити, перегляньте налаштування пристрою й увімкніть Bluetooth</translation>
 <translation id="8188742492803591566">Щоб почати трансляцію свого екрана, введіть код доступу, що відображається на пристрої Chromecast або телевізорі.</translation>
 <translation id="8189306097519446565">Облікові записи закладів освіти</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb
index 86485fa..062cc331 100644
--- a/chrome/app/resources/generated_resources_ur.xtb
+++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -1412,7 +1412,6 @@
     اگر آپ بعد میں فیصلہ کرتے ہیں کہ Voice Match آپ کے بچے کے لیے صحیح نہیں ہے تو اسے بس اس کی اسسٹنٹ کی ترتیبات سے ہٹائیں۔ Voice Match سیٹ اپ کے دوران جو آڈیو کلپس آپ کا بچہ ریکارڈ کرتا ہے انہیں ملاحظہ کرنے یا حذف کرنے کے لیے اپنے بچے کے اکاؤنٹ سے <ph name="VOICE_MATCH_SETTINGS_URL" /> پر جائیں۔
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723"><ph name="VISUAL_SEARCH_PROVIDER" /> کے ساتھ صفحہ کا حصہ تلاش کریں</translation>
 <translation id="2309620859903500144">اس سائٹ کو آپ کے موشن اور لائٹ سینسرز تک رسائی حاصل کرنے سے مسدود کر دیا گیا ہے۔</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">‏صفحہ کا URL</translation>
@@ -2035,7 +2034,6 @@
 <translation id="289695669188700754">‏کلید ‎ID: <ph name="KEY_ID" />‎</translation>
 <translation id="2897713966423243833">آپ کے اپنی سبھی پوشیدگی ونڈوز بند کرنے پر اس حسب ضرورت ترتیب کو ہٹا دیا جائے گا</translation>
 <translation id="2897878306272793870">کیا آپ واقعی <ph name="TAB_COUNT" /> ٹیبز کھولنا چاہتے ہیں؟</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> کے ساتھ اپنی اسکرین تلاش کریں</translation>
 <translation id="290105521672621980">فائل غیر تعاون یافتہ خصوصیات کا استعمال کرتی ہے</translation>
 <translation id="2901348420151309559">حالیہ تصاویر اور ایپس</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> اس پرنٹر کے ساتھ مواصلت نہیں کر سکا۔ پرنٹر کے پلگ ان ہونے کو یقینی بنائیں اور دوبارہ کوشش کریں۔</translation>
@@ -2908,7 +2906,6 @@
 <translation id="3778740492972734840">&amp;ڈیولپر ٹولز</translation>
 <translation id="3778868487658107119">‏اس سے سوالات پوچھیں۔ اسے کام کرنے کو کہیں۔ یہ آپ کا ذاتی Google ہے، ہمیشہ مدد کرنے کیلئے تیار۔</translation>
 <translation id="3781742599892759500">‏Linux مائیکروفون کی رسائی</translation>
-<translation id="378312418865624974">اس کمپیوٹر کیلئے ایک منفرد شناخت کار پڑھیں</translation>
 <translation id="3784472333786002075">کوکیز ایسی فائلز ہوتی ہیں جنہیں ویب سائٹس تخلیق کرتی ہیں۔ کوکیز کی دو قسمیں ہوتی ہیں: فریق اول کی کوکیز جنہیں آپ کی ملاحظہ کی جانے والی سائٹ تخلیق کرتی ہے۔ سائٹ ایڈریس بار پر دکھائی گئی ہے۔ فریق ثالث کوکیز دیگر سائٹس کے ذریعے تخلیق کی جاتی ہیں۔ یہ سائٹس کچھ مواد کی مالک ہوتی ہیں، جیسے اشتہارات یا تصاویر جنہیں آپ ملاحظہ کی جانے والی ویب سائٹ پر دیکھتے ہیں۔</translation>
 <translation id="3785308913036335955">ایپس شارٹ کٹ دکھائیں</translation>
 <translation id="3785727820640310185">اس سائٹ کے لیے محفوظ کردہ پاسورڈز</translation>
@@ -3561,7 +3558,6 @@
 <translation id="4415748029120993980">‏SECG elliptic curve secp384r1 (المعروف NIST P-384)</translation>
 <translation id="4416450511678320850">اس مواد کے لیے کوئی ایپ دستیاب نہیں ہے</translation>
 <translation id="4416582610654027550">‏ایک درست URL ٹائپ کریں</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> کے ساتھ تلاش کرنے کیلئے تصاویر پر گھسیٹیں</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> کو کوکیز سیٹ کرنے کی ہمیشہ اجازت دیں</translation>
 <translation id="4421932782753506458">Fluffy</translation>
 <translation id="4423376891418188461">ترتیبات بحال کریں</translation>
@@ -3700,7 +3696,6 @@
 <translation id="4550926046134589611">کچھ تعاون یافتہ لنکس اب بھی <ph name="APP_NAME" /> میں کھلیں گے۔</translation>
 <translation id="4551763574344810652">کالعدم کرنے کے لیے <ph name="MODIFIER_KEY_DESCRIPTION" /> دبائيں</translation>
 <translation id="4553526521109675518">‏آلہ کی زبان تبدیل کرنے کے لیے آپ کو اپنا Chromebook ری سٹارٹ کرنا ہوگا۔ <ph name="BEGIN_LINK_LEARN_MORE" />مزید جانیں<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> کے ساتھ تلاش کرنے کیلئے تصاویر پر گھسیٹیں</translation>
 <translation id="4554591392113183336">بیرونی ایکسٹینشن موجودہ ورژن کے مقابلہ ویسا ہی یا اس سے کم تر ورژن پر ہے۔</translation>
 <translation id="4555769855065597957">سایہ</translation>
 <translation id="4555863373929230635">‏اپنے Google اکاؤنٹ میں پاس ورڈز محفوظ کرنے کیلئے، سائن ان کریں اور مطابقت پذیری آن کریں۔</translation>
@@ -4550,7 +4545,6 @@
 <translation id="5427459444770871191">&amp;گھڑی وار گھمائیں</translation>
 <translation id="542750953150239272">‏جاری رکھ کر، آپ اتفاق کرتے ہیں کہ یہ آلہ ممکنہ طور پر سیلولر ڈیٹا استعمال کر کے Google، آپ کے کیریئر، اور آپ کے آلہ کے مینوفیکچرر سے اپ ڈیٹس اور ایپس خودکار طور پر ڈاؤن لوڈ اور انسٹال کر سکتا ہے۔ ان میں سے کچھ ایپس درون ایپ خریداریوں کی پیشکش کر سکتی ہیں۔</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (اپ ڈیٹ دستیاب ہے)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> کے ساتھ اپنی اسکرین تلاش کریں</translation>
 <translation id="542948651837270806">بھروسہ مند پلیٹ فارم ماڈیول فرم ویئر کے لیے اپ ڈیٹ انسٹال کرنے کی ضرورت ہے۔ <ph name="TPM_FIRMWARE_UPDATE_LINK" /> دیکھیں</translation>
 <translation id="5430931332414098647">فوری ٹیدرنگ</translation>
 <translation id="5431318178759467895">رنگ</translation>
@@ -4623,7 +4617,6 @@
 <translation id="5494920125229734069">سبھی کو منتخب کریں</translation>
 <translation id="5495466433285976480">اس سے آپ کی جانب سے اگلی بار دوبارہ شروع کرنے کے بعد سبھی مقامی صارفین، فائلیں، ڈیٹا اور دیگر ترتیبات ہٹ جائیں گی۔ سبھی صارفین کو دوبارہ سائن ان کرنے کی ضرورت ہوگی۔</translation>
 <translation id="5495597166260341369">ڈسپلے آن رکھیں</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> کے ساتھ تصاویر تلاش کرنے کیلئے گھسیٹیں</translation>
 <translation id="5496587651328244253">منظم کریں</translation>
 <translation id="5496730470963166430">ری ڈائریکٹس استعمال کرنے یا پاپ اپس بھیجنے کی اجازت نہیں ہے</translation>
 <translation id="5497251278400702716">یہ فائل</translation>
@@ -5734,7 +5727,6 @@
 آپ کے پاس # متاثرہ پاس ورڈ ہے۔ Google پاس ورڈ مینیجر اس پاس ورڈ کو ابھی چیک کرنے کی تجویز کرتا ہے۔}other{‏متاثرہ پاس ورڈ کو کامیابی کے ساتھ تبدیل کر دیا گیا۔
 
 آپ کے پاس # متاثرہ پاس ورڈز ہیں۔ Google پاس ورڈ مینیجر ان پاس ورڈز کو ابھی چیک کرنے کی تجویز کرتا ہے۔}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> کے ساتھ تصاویر تلاش کرنے کیلئے گھسیٹیں</translation>
 <translation id="6596325263575161958">مرموزکاری کے اختیارات</translation>
 <translation id="6596816719288285829">‏IP پتہ</translation>
 <translation id="6597017209724497268">نمونے</translation>
@@ -7353,7 +7345,6 @@
 <translation id="8184318863960255706">مزید معلومات</translation>
 <translation id="8184472985242519288">یکساں</translation>
 <translation id="8186609076106987817">سرور فائل کو تلاش نہیں کر سکا۔</translation>
-<translation id="8186704951085064172"><ph name="VISUAL_SEARCH_PROVIDER" /> کے ساتھ صفحہ کا حصہ تلاش کریں</translation>
 <translation id="8188389033983459049">اپنے آلے کی ترتیبات چیک کریں اور جاری رکھنے کیلئے اسے آن کریں</translation>
 <translation id="8188742492803591566">‏اپنی اسکرین کاسٹ کرنا شروع کرنے کے لیے Chromecast یا TV پر دکھایا گیا رسائی کوڈ درج کریں۔</translation>
 <translation id="8189306097519446565">اسکول اکاؤنٹس</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb
index 08c7166..eca0e9f 100644
--- a/chrome/app/resources/generated_resources_uz.xtb
+++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -201,6 +201,7 @@
 <translation id="1188807932851744811">Jurnal yuklanmadi.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{kompyuteringizda 1 ta fayl mavjud}other{kompyuteringizda # ta fayl mavjud}}</translation>
 <translation id="119092896208640858">Brauzer tarixini faqat shu qurilmadan tozalash va Google hisobingizda saqlash uchun <ph name="BEGIN_LINK" />hisobingizdan chiqing<ph name="END_LINK" />.</translation>
+<translation id="1191353342579061195">Kerakli mavzuni tanlang. Mavzu, fon rasmi, ekran lavhasi va boshqa sozlamalar uchun ish stolida oʻng klikni bosing.</translation>
 <translation id="1192706927100816598">{0,plural, =1{Siz avtomatik tarzda # soniyadan keyin hisobingizdan chiqarilasiz.
 <ph name="DOMAIN" /> smart karta kiritilishini talab qilmoqda.}other{Siz avtomatik tarzda # soniyadan keyin hisobingizdan chiqarilasiz.
 <ph name="DOMAIN" /> smart karta kiritilishini talab qilmoqda.}}</translation>
@@ -1291,6 +1292,7 @@
 <translation id="2220409419896228519">Sevimli Google ilovalaringizga bukmark qo‘shing</translation>
 <translation id="2220529011494928058">Muammo haqida xabar yuborish</translation>
 <translation id="2220572644011485463">PIN kod yoki parol</translation>
+<translation id="222115440608612541">Mavzularni quyosh chiqishi va botishida almashtirish</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">Nomsiz media manba</translation>
 <translation id="2224444042887712269">Bu sozlama <ph name="OWNER_EMAIL" /> tomonidan o‘rnatilingan.</translation>
@@ -1412,7 +1414,6 @@
     Farzandingiz uchun Voice Match kerak emas deb hisoblasangiz, uni Assistent sozlamalari orqali olib tashlashingiz mumkin. Voice Match sozlanayotganda yozib olingan farzandingizning ovoz namunalarini koʻrish va olib tashlash uchun farzandingiz qurilmasida <ph name="VOICE_MATCH_SETTINGS_URL" /> sahifasini oching.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Sahifa qismidan <ph name="VISUAL_SEARCH_PROVIDER" /> yordamida qidirish</translation>
 <translation id="2309620859903500144">Bu sahifa uchun harakat yoki yorug‘lik sensorlaridan foydalanish taqiqlandi</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Sahifa URL manzili</translation>
@@ -1520,6 +1521,7 @@
 <translation id="241082044617551207">Noma’lum plagin</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">Klaviaturaning funksiya tugmalari</translation>
+<translation id="2418307627282545839">Yorugʻ va yengil muhitda ishlang</translation>
 <translation id="2419131370336513030">Oʻrnatilgan ilovalarni koʻrsatish</translation>
 <translation id="2419706071571366386">Kompyuterni ishlatmagan paytingizda xavfsizlik yuzasidan hisobingizdan chiqing.</translation>
 <translation id="2422125132043002186">Linux tasvirini tiklash bekor qilindi</translation>
@@ -2036,7 +2038,6 @@
 <translation id="289695669188700754">Kalit identifikatori: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Bu maxsus sozlama barcha Inkognito oynalar yopilganda olib tashlanadi</translation>
 <translation id="2897878306272793870">Haqiqatdan ham <ph name="TAB_COUNT" /> ta ichki-oyna ochilsinmi?</translation>
-<translation id="2900477968385519153"><ph name="VISUAL_SEARCH_PROVIDER" /> yordamida ekrandagi narsalarni qidiring</translation>
 <translation id="290105521672621980">Fayl qo‘llab-quvvatlanmaydigan funksiyalarga ega</translation>
 <translation id="2901348420151309559">Oxirgi suratlar va ilovalar</translation>
 <translation id="2902127500170292085">“<ph name="EXTENSION_NAME" />” bu printer bilan aloqa o‘rnata olmadi. Printer yoqilganligini tekshiring va qaytadan urining.</translation>
@@ -2909,7 +2910,6 @@
 <translation id="3778740492972734840">&amp;Dasturchilar asboblari</translation>
 <translation id="3778868487658107119">Undan savol va biror ishni bajarishni so‘rang. U yordamchingiz. Doim yordam berishga tayyor.</translation>
 <translation id="3781742599892759500">Linux tizimidagi mikrofondan foydalanish</translation>
-<translation id="378312418865624974">Bu kompyuterning alohida identifikatorini ko‘rish</translation>
 <translation id="3784472333786002075">Cookie fayllar — veb-saytlar tomonidan yaratilgan fayllar. Cookie fayllar ikki xil boʻladi: Ichki cookielar saytlarga kirganingizda yaratiladi. Saytlar manzillar qatorida chiqadi. Tashqi cookie fayllar boshqa saytlar tomonidan yaratiladi. Bunday saytlarga ochilgan sahifadagi kontent, reklama yoki rasmlar tegishli boʻlishi mumkin.</translation>
 <translation id="3785308913036335955">Ilovalar yorlig‘ini ko‘rsatish</translation>
 <translation id="3785727820640310185">Bu sayt uchun saqlangan parollar</translation>
@@ -3562,7 +3562,6 @@
 <translation id="4415748029120993980">SECG elliptik egri chiziqli secp384r1 (NIST P-384) ochiq kalit algoritmi</translation>
 <translation id="4416450511678320850">Bu kontent bilan ishlaydigan ilova topilmadi</translation>
 <translation id="4416582610654027550">Yaroqli URL manzil kiriting</translation>
-<translation id="4417162649853416189"><ph name="VISUAL_SEARCH_PROVIDER" /> yordamida qidirish uchun rasmlarni tortib joylang</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> saytiga cookie fayllarini saqlash har doim ruxsat berilsin</translation>
 <translation id="4421932782753506458">Momiqvoy</translation>
 <translation id="4423376891418188461">Dastlabki sozlamalarni tiklash</translation>
@@ -3702,7 +3701,6 @@
 <translation id="4550926046134589611">Ayrim tegishli havolalar <ph name="APP_NAME" /> ilovasida ochilaveradi.</translation>
 <translation id="4551763574344810652">Bekor qilish uchun <ph name="MODIFIER_KEY_DESCRIPTION" /> ni bosing</translation>
 <translation id="4553526521109675518">Qurilmadagi tilni almashtirish uchun Chromebookni qayta ishga tushiring. <ph name="BEGIN_LINK_LEARN_MORE" />Batafsil<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912"><ph name="VISUAL_SEARCH_PROVIDER" /> yordamida qidirish uchun rasmlarni tortib joylang</translation>
 <translation id="4554591392113183336">Tashqi kengaytma versiyasi joriysidan yangi emas.</translation>
 <translation id="4555769855065597957">Soya</translation>
 <translation id="4555863373929230635">Parollar Google hisobida saqlanishi uchun sinxronizatsiyani yoqing.</translation>
@@ -4553,7 +4551,6 @@
 <translation id="5427459444770871191">Soat mili yo‘nalishida burish</translation>
 <translation id="542750953150239272">Davom etish orqali siz bu qurilma Google, aloqa operatoringiz va qurilma ishlab chiqaruvchisidan dasturiy yangilanish va ilovalarni mobil internet orqali ham avtomatik ravishda yuklab olishi va oʻrnatishiga rozilik bildirgan hisoblanasiz. Ayrim ilovalar ilova ichida xaridlarni taklif etishi mumkin.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (yangilanish mavjud)</translation>
-<translation id="5429373054983029602"><ph name="VISUAL_SEARCH_PROVIDER" /> yordamida ekrandagi narsalarni qidiring</translation>
 <translation id="542948651837270806">Ishonchli platforma modulining (TPM) ichki dasturi yangilanishi zarur. Batafsil: <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Tezkor modem rejimi</translation>
 <translation id="5431318178759467895">Rang</translation>
@@ -4626,7 +4623,6 @@
 <translation id="5494920125229734069">Hammasini tanlash</translation>
 <translation id="5495466433285976480">Qayta o‘chirib yoqishdan so‘ng barcha mahalliy hisoblar, fayllar, ma’lumotlar va boshqa sozlamalar o‘chirib yuboriladi. Barcha foydalanuvchilar hisobga qaytadan kirishlari kerak bo‘ladi.</translation>
 <translation id="5495597166260341369">Ekran yoniq qolsin</translation>
-<translation id="549580971452855947"><ph name="VISUAL_SEARCH_PROVIDER" /> yordamida qidirish uchun rasmlarni tortib joylang</translation>
 <translation id="5496587651328244253">Boshqarish</translation>
 <translation id="5496730470963166430">Qalqib chiquvchi oynalarni yuborish yoki yoʻnaltirish taqiqlangan</translation>
 <translation id="5497251278400702716">Bu fayl</translation>
@@ -5737,7 +5733,6 @@
 Yana # ta oshkor qilingan parolingiz bor. Google Parollar menejeri bu parolni hoziroq tekshirishni tavsiya etadi.}other{Oshkor qilingan parol almashtirildi.
 
 Yana # ta oshkor qilingan parollaringiz bor. Google Parollar menejeri ularni hoziroq tekshirishni tavsiya etadi.}}</translation>
-<translation id="6595792813574514527"><ph name="VISUAL_SEARCH_PROVIDER" /> yordamida qidirish uchun rasmlarni tortib joylang</translation>
 <translation id="6596325263575161958">Shifrlash parametrlari</translation>
 <translation id="6596816719288285829">IP manzil</translation>
 <translation id="6597017209724497268">Namunalar</translation>
@@ -6038,6 +6033,7 @@
 <translation id="6895032998810961280">Tozalash vaqtida bu kompyuterda topilgan zararli dasturlar, tizim sozlamalari va jarayonlar hisoboti Google serverlariga yuborilsin</translation>
 <translation id="6896758677409633944">Nusxa olish</translation>
 <translation id="6897363604023044284">Tozalash uchun saytlarni tanlang</translation>
+<translation id="6897688156970667447">Qorongʻilikda foydali va batareyani tejaydi</translation>
 <translation id="6898440773573063262">Endi bu qurilmada kiosk-ilovalari avtomatik ishga tushirilishini sozlash mumkin.</translation>
 <translation id="6900284862687837908">Orqa fondagi ilova: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">Kuchaytirilgan himoya</translation>
@@ -7356,7 +7352,6 @@
 <translation id="8184318863960255706">Tafsilotlar</translation>
 <translation id="8184472985242519288">Uniforma</translation>
 <translation id="8186609076106987817">Bu fayl serverda topilmadi.</translation>
-<translation id="8186704951085064172">Sahifa qismidan <ph name="VISUAL_SEARCH_PROVIDER" /> yordamida qidirish</translation>
 <translation id="8188389033983459049">Qurilma sozlamalarini tekshiring va davom ettirish uchun Bluetoothni yoqing</translation>
 <translation id="8188742492803591566">Ekranni namoyish qilish uchun Chromecast yoki TV ekranida chiqqan ruxsat kodini kiriting.</translation>
 <translation id="8189306097519446565">Maktab hisoblari</translation>
@@ -7525,6 +7520,7 @@
 <translation id="8358685469073206162">Sahifalar tiklansinmi?</translation>
 <translation id="8358912028636606457">Bu qurilma varaqdagi ovozni translatsiya qila olmaydi.</translation>
 <translation id="835951711479681002">Google hisobingizga saqlash</translation>
+<translation id="8360140320636871023">Ekran mavzusini moslang</translation>
 <translation id="8363095875018065315">barqaror</translation>
 <translation id="8363142353806532503">Mikforon bloklangan</translation>
 <translation id="8366396658833131068">Tarmoqqa ulanish qayta tiklandi. Kiost-ilovasini ishga tushirish uchun boshqa tarmoqni tanlang yoki “Davom etish” tugmasini bosing.</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index f60aece..a7ad2f5 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -204,6 +204,7 @@
 <translation id="1188807932851744811">Nhật ký chưa được tải lên.</translation>
 <translation id="11901918071949011">{NUM_FILES,plural, =1{Truy cập một tệp được lưu trữ trên máy tính của bạn}other{Truy cập # tệp được lưu trữ trên máy tính của bạn}}</translation>
 <translation id="119092896208640858">Để chỉ xóa dữ liệu duyệt web khỏi thiết bị này nhưng vẫn lưu giữ trong Tài khoản Google của bạn, hãy <ph name="BEGIN_LINK" />đăng xuất<ph name="END_LINK" />.</translation>
+<translation id="1191353342579061195">Chọn giao diện phù hợp với nhu cầu của bạn. Để thay đổi giao diện, hình nền, trình bảo vệ màn hình, v.v., bạn chỉ cần nhấp chuột phải vào màn hình.</translation>
 <translation id="1192706927100816598">{0,plural, =1{Bạn sẽ tự động đăng xuất sau # giây.
 <ph name="DOMAIN" /> yêu cầu bạn không tháo thẻ thông minh.}other{Bạn sẽ tự động đăng xuất sau # giây.
 <ph name="DOMAIN" /> yêu cầu bạn không tháo thẻ thông minh.}}</translation>
@@ -1305,6 +1306,7 @@
 <translation id="2220409419896228519">Thêm dấu trang vào các ứng dụng của Google mà bạn ưa thích</translation>
 <translation id="2220529011494928058">Báo cáo sự cố</translation>
 <translation id="2220572644011485463">Mã PIN hoặc mật khẩu</translation>
+<translation id="222115440608612541">Chuyển đổi giao diện lúc bình minh và hoàng hôn</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" /></translation>
 <translation id="222201875806112242">Nguồn phương tiện nghe nhìn chưa đặt tên</translation>
 <translation id="2224444042887712269">Cài đặt này thuộc về <ph name="OWNER_EMAIL" />.</translation>
@@ -1426,7 +1428,6 @@
     Nếu sau này bạn quyết định rằng tính năng Voice Match không phù hợp với con mình, thì chỉ cần xóa tính năng này trong phần Cài đặt của Trợ lý trên thiết bị của con bạn. Để xem hoặc xóa các đoạn âm thanh mà con bạn ghi lại trong quá trình thiết lập tính năng Voice Match, hãy truy cập <ph name="VOICE_MATCH_SETTINGS_URL" /> bằng tài khoản của con bạn.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Tìm kiếm trên một phần của trang bằng <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Trang web này đã bị chặn sử dụng cảm biến chuyển động hoặc ánh sáng của thiết bị.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">URL của trang</translation>
@@ -1534,6 +1535,7 @@
 <translation id="241082044617551207">Plugin không rõ</translation>
 <translation id="2412753904894530585">Kerberos</translation>
 <translation id="2416435988630956212">Phím chức năng trên bàn phím</translation>
+<translation id="2418307627282545839">Giữ cho mọi thứ luôn sáng sủa và thoáng mát</translation>
 <translation id="2419131370336513030">Xem các ứng dụng đã cài đặt</translation>
 <translation id="2419706071571366386">Vì lý do bảo mật, hãy đăng xuất khi bạn không sử dụng máy tính.</translation>
 <translation id="2422125132043002186">Đã hủy quá trình khôi phục Linux</translation>
@@ -2050,7 +2052,6 @@
 <translation id="289695669188700754">ID Khoá: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Chế độ cài đặt tùy chỉnh này sẽ bị xóa khi bạn đóng tất cả Cửa sổ ẩn danh</translation>
 <translation id="2897878306272793870">Bạn có chắc chắn muốn mở <ph name="TAB_COUNT" /> thẻ không?</translation>
-<translation id="2900477968385519153">Tìm kiếm trên Màn hình của bạn bằng <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Tệp sử dụng các tính năng không được hỗ trợ</translation>
 <translation id="2901348420151309559">Ảnh và ứng dụng gần đây</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> không thể giao tiếp với máy in này. Hãy đảm bảo rằng bạn đã cắm máy in rồi thử lại.</translation>
@@ -2923,7 +2924,6 @@
 <translation id="3778740492972734840">Công cụ dành cho &amp;Nhà phát triển</translation>
 <translation id="3778868487658107119">Đặt câu hỏi cho Trợ lý. Yêu cầu Trợ lý làm mọi việc. Đó là Google của riêng bạn, luôn sẵn sàng trợ giúp bạn.</translation>
 <translation id="3781742599892759500">Quyền truy cập vào micrô của Linux</translation>
-<translation id="378312418865624974">Đọc mã số nhận dạng duy nhất dành cho máy tính này</translation>
 <translation id="3784472333786002075">Cookie là tệp do các trang web tạo ra. Có 2 loại cookie: Cookie của bên thứ nhất do trang web mà bạn truy cập tạo ra. Trang web này hiển thị trên thanh địa chỉ. Cookie của bên thứ ba do các trang web khác tạo ra. Các trang web này sở hữu một số nội dung như quảng cáo hoặc hình ảnh mà bạn thấy trên trang web mình truy cập.</translation>
 <translation id="3785308913036335955">Hiển thị lối tắt cho ứng dụng</translation>
 <translation id="3785727820640310185">Đã lưu mật khẩu cho trang web này</translation>
@@ -3577,7 +3577,6 @@
 <translation id="4415748029120993980">Đường cong elip SECG secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">Không có ứng dụng nào cho nội dung này</translation>
 <translation id="4416582610654027550">Nhập một URL hợp lệ</translation>
-<translation id="4417162649853416189">Kéo qua phần Hình ảnh để Tìm kiếm bằng <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Luôn cho phép <ph name="HOST" /> đặt cookie</translation>
 <translation id="4421932782753506458">Mèo con dễ thương</translation>
 <translation id="4423376891418188461">Khôi phục cài đặt</translation>
@@ -3716,7 +3715,6 @@
 <translation id="4550926046134589611">Một số đường liên kết được hỗ trợ vẫn sẽ mở trong <ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Nhấn <ph name="MODIFIER_KEY_DESCRIPTION" /> để hủy thao tác</translation>
 <translation id="4553526521109675518">Bạn cần khởi động lại Chromebook để thay đổi ngôn ngữ của thiết bị. <ph name="BEGIN_LINK_LEARN_MORE" />Tìm hiểu thêm<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Kéo qua phần hình ảnh để tìm kiếm bằng <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Tiện ích bên ngoài có cùng phiên bản hoặc phiên bản thấp hơn so với tiện ích hiện có.</translation>
 <translation id="4555769855065597957">Bóng</translation>
 <translation id="4555863373929230635">Để lưu mật khẩu vào Tài khoản Google của bạn, hãy đăng nhập và bật tính năng đồng bộ hóa.</translation>
@@ -4567,7 +4565,6 @@
 <translation id="5427459444770871191">Xoay &amp;theo chiều kim đồng hồ</translation>
 <translation id="542750953150239272">Bằng cách tiếp tục, bạn đồng ý rằng thiết bị này cũng có thể tự động tải xuống và cài đặt các bản cập nhật và ứng dụng của Google, nhà mạng của bạn và nhà sản xuất thiết bị (có thể dùng dữ liệu di động). Một vài ứng dụng trong số này có thể cung cấp lựa chọn mua hàng trong ứng dụng.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Có bản cập nhật)</translation>
-<translation id="5429373054983029602">Tìm kiếm trên màn hình của bạn bằng <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Bạn cần cài đặt bản cập nhật của chương trình cơ sở Mô-đun nền tảng đáng tin cậy. Hãy truy cập vào <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">Chia sẻ Internet tức thì</translation>
 <translation id="5431318178759467895">Màu</translation>
@@ -4640,7 +4637,6 @@
 <translation id="5494920125229734069">Chọn tất cả</translation>
 <translation id="5495466433285976480">Quá trình này sẽ xóa tất cả dữ liệu, tệp, người dùng trên máy và các cài đặt khác sau khi bạn khởi động lại vào lần kế tiếp. Tất cả người dùng sẽ cần đăng nhập lại.</translation>
 <translation id="5495597166260341369">Luôn bật màn hình</translation>
-<translation id="549580971452855947">Kéo để tìm kiếm hình ảnh bằng <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Tổ chức</translation>
 <translation id="5496730470963166430">Không được phép gửi cửa sổ bật lên hoặc dùng lệnh chuyển hướng</translation>
 <translation id="5497251278400702716">Tệp này</translation>
@@ -5751,7 +5747,6 @@
 Bạn còn # mật khẩu bị lộ nữa. Trình quản lý mật khẩu của Google khuyên bạn nên kiểm tra mật khẩu này ngay.}other{Đã đổi thành công mật khẩu bị lộ.
 
 Bạn còn # mật khẩu bị lộ nữa. Trình quản lý mật khẩu của Google khuyên bạn nên kiểm tra mật khẩu này ngay.}}</translation>
-<translation id="6595792813574514527">Kéo để Tìm kiếm hình ảnh bằng <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Tùy chọn mã hóa</translation>
 <translation id="6596816719288285829">Địa chỉ IP</translation>
 <translation id="6597017209724497268">Mẫu</translation>
@@ -6052,6 +6047,7 @@
 <translation id="6895032998810961280">Báo cáo chi tiết cho Google về các quy trình, tùy chọn cài đặt hệ thống và phần mềm có hại được phát hiện trên máy tính của bạn trong quá trình làm sạch này</translation>
 <translation id="6896758677409633944">Sao chép</translation>
 <translation id="6897363604023044284">Chọn các trang web có dữ liệu cần xóa</translation>
+<translation id="6897688156970667447">Hữu ích trong điều kiện ánh sáng yếu và tiết kiệm pin</translation>
 <translation id="6898440773573063262">Ứng dụng kiosk giờ đây có thể được định cấu hình để tự động chạy trên thiết bị này.</translation>
 <translation id="6900284862687837908">Ứng dụng nền: <ph name="BACKGROUND_APP_URL" /></translation>
 <translation id="6900532703269623216">Chế độ bảo vệ nâng cao</translation>
@@ -7372,7 +7368,6 @@
 <translation id="8184318863960255706">Thông tin khác</translation>
 <translation id="8184472985242519288">Đồng nhất</translation>
 <translation id="8186609076106987817">Máy chủ không thể tìm thấy tệp.</translation>
-<translation id="8186704951085064172">Tìm kiếm trên một phần của Trang bằng <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Kiểm tra mục cài đặt thiết bị và bật Bluetooth để tiếp tục</translation>
 <translation id="8188742492803591566">Nhập mã truy cập xuất hiện trên Chromecast hoặc TV để bắt đầu truyền tới màn hình.</translation>
 <translation id="8189306097519446565">Tài khoản trường học</translation>
@@ -7541,6 +7536,7 @@
 <translation id="8358685469073206162">Bạn có muốn khôi phục trang không?</translation>
 <translation id="8358912028636606457">Thiết bị này không hỗ trợ truyền âm thanh của thẻ.</translation>
 <translation id="835951711479681002">Lưu trong Tài khoản Google</translation>
+<translation id="8360140320636871023">Cá nhân hoá giao diện hiển thị</translation>
 <translation id="8363095875018065315">chính thức</translation>
 <translation id="8363142353806532503">Micrô bị chặn</translation>
 <translation id="8366396658833131068">Kết nối mạng của bạn đã được khôi phục. Hãy chọn mạng khác hoặc nhấn nút 'Tiếp tục' bên dưới để khởi chạy ứng dụng kiosk của bạn.</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index e3011e6..2502ed6 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -1403,7 +1403,6 @@
     如果您日后又改变了想法,觉得 Voice Match 功能不适合您的孩子,只需在孩子的 Google 助理设置中关闭该功能即可。如需查看或删除您孩子在设置 Voice Match 时录制的音频剪辑,请使用孩子的帐号访问 <ph name="VOICE_MATCH_SETTINGS_URL" />。
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜索网页的某个部分</translation>
 <translation id="2309620859903500144">此网站已被禁止使用您的动态传感器或光传感器。</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">网页网址</translation>
@@ -2025,7 +2024,6 @@
 <translation id="289695669188700754">密钥 ID:<ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">当您关闭所有无痕式窗口后,系统将会撤消这项自定义设置</translation>
 <translation id="2897878306272793870">是否确实要打开 <ph name="TAB_COUNT" /> 个标签页?</translation>
-<translation id="2900477968385519153">使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜索您的屏幕上的内容</translation>
 <translation id="290105521672621980">文件使用了不支持的功能</translation>
 <translation id="2901348420151309559">近期的照片和应用</translation>
 <translation id="2902127500170292085"><ph name="EXTENSION_NAME" />无法与此打印机通信。请确保此打印机已插好并重试。</translation>
@@ -2898,7 +2896,6 @@
 <translation id="3778740492972734840">开发者工具(&amp;D)</translation>
 <translation id="3778868487658107119">您可以向它询问各种问题,指示它处理各种事务。它是专门为您配置的 Google 助手,随时为您提供帮助。</translation>
 <translation id="3781742599892759500">Linux 麦克风使用权限</translation>
-<translation id="378312418865624974">读取此计算机的专属标识符</translation>
 <translation id="3784472333786002075">Cookie 是由网站创建的文件。这些文件分为两类:第一方 Cookie 是由您访问过的网站创建而成,其网站会显示在地址栏中;第三方 Cookie 是由其他网站创建而成,这些网站拥有您在所访问网站上看到的部分内容(比如广告或图片)。</translation>
 <translation id="3785308913036335955">显示应用快捷方式</translation>
 <translation id="3785727820640310185">已保存用于登录此网站的密码</translation>
@@ -3548,7 +3545,6 @@
 <translation id="4415748029120993980">SECG 椭圆曲线 secp384r1(又称 NIST P-384)</translation>
 <translation id="4416450511678320850">这里没有可用来分享此内容的应用</translation>
 <translation id="4416582610654027550">请输入一个有效网址</translation>
-<translation id="4417162649853416189">在图片上拖动光标即可使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜索</translation>
 <translation id="4419409365248380979">总是允许 <ph name="HOST" /> 设置 Cookie</translation>
 <translation id="4421932782753506458">猫咪</translation>
 <translation id="4423376891418188461">还原设置</translation>
@@ -3686,7 +3682,6 @@
 <translation id="4550926046134589611">部分受支持的链接仍会在“<ph name="APP_NAME" />”中打开。</translation>
 <translation id="4551763574344810652">按 <ph name="MODIFIER_KEY_DESCRIPTION" /> 即可撤消</translation>
 <translation id="4553526521109675518">您需要重启 Chromebook 才能更改设备语言。<ph name="BEGIN_LINK_LEARN_MORE" />了解详情<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">在图片上拖动光标即可使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜索</translation>
 <translation id="4554591392113183336">外部扩展程序的版本与现有版本相同或更低。</translation>
 <translation id="4555769855065597957">阴影</translation>
 <translation id="4555863373929230635">若想将密码保存到您的 Google 帐号中,请登录帐号并开启同步功能。</translation>
@@ -4537,7 +4532,6 @@
 <translation id="5427459444770871191">顺时针旋转(&amp;C)</translation>
 <translation id="542750953150239272">继续操作即表示您同意:此设备还可自动下载并安装来自 Google、您的运营商和此设备的制造商的更新及应用(期间可能会使用移动数据网络),其中的部分应用可能会提供应用内购商品。</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" />(可进行更新)</translation>
-<translation id="5429373054983029602">使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜索您的屏幕上的内容</translation>
 <translation id="542948651837270806">需为“可信平台模块”固件安装更新。请访问 <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">即时网络共享</translation>
 <translation id="5431318178759467895">彩色</translation>
@@ -4610,7 +4604,6 @@
 <translation id="5494920125229734069">全选</translation>
 <translation id="5495466433285976480">执行此操作后,所有本地用户、文件、数据和其他设置都将遭到删除,下次重启后您将再也看不到这些内容。所有用户均必须重新登录。</translation>
 <translation id="5495597166260341369">不关闭显示屏</translation>
-<translation id="549580971452855947">拖动光标即可使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜索图片</translation>
 <translation id="5496587651328244253">整理</translation>
 <translation id="5496730470963166430">不允许发送弹出式窗口或使用重定向</translation>
 <translation id="5497251278400702716">此文件</translation>
@@ -5718,7 +5711,6 @@
 您还有 # 个已泄露的密码。Google 密码管理工具建议您立即检查此密码。}other{已成功更改这个已泄露的密码。
 
 您还有 # 个已泄露的密码。Google 密码管理工具建议您立即检查这些密码。}}</translation>
-<translation id="6595792813574514527">拖动光标即可使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜索图片</translation>
 <translation id="6596325263575161958">加密选项</translation>
 <translation id="6596816719288285829">IP 地址</translation>
 <translation id="6597017209724497268">个样本的平均值</translation>
@@ -7338,7 +7330,6 @@
 <translation id="8184318863960255706">更多信息</translation>
 <translation id="8184472985242519288">均匀</translation>
 <translation id="8186609076106987817">服务器找不到该文件。</translation>
-<translation id="8186704951085064172">使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜索网页的某个部分</translation>
 <translation id="8188389033983459049">请检查您的设备设置,并开启蓝牙以继续</translation>
 <translation id="8188742492803591566">只需输入 Chromecast 或电视上显示的访问代码,即可开始投射您的屏幕。</translation>
 <translation id="8189306097519446565">学校帐号</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb
index 6b3d9b1..2ec9522 100644
--- a/chrome/app/resources/generated_resources_zh-HK.xtb
+++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -182,6 +182,7 @@
 <translation id="1166583374608765787">檢查新名稱</translation>
 <translation id="1166596238782048887">「<ph name="TAB_TITLE" />」分頁屬於「<ph name="DESK_TITLE" />」桌面</translation>
 <translation id="1168020859489941584">將於 <ph name="TIME_REMAINING" /> 後開啟…</translation>
+<translation id="1169266963600477608">遊戲控制項</translation>
 <translation id="1169435433292653700">「<ph name="FILE_NAME" />」含有敏感或危險的內容。管理員訊息:「<ph name="CUSTOM_MESSAGE" />」</translation>
 <translation id="1171135284592304528">物件變更時突顯鍵盤焦點的物件</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> 要求連接 HID 裝置</translation>
@@ -1425,7 +1426,6 @@
     如果之後您不想子女使用 Voice Match,只需在「Google 助理」設定中移除即可。如要查看或刪除子女設定 Voice Match 時的錄音,請從子女的帳戶前往 <ph name="VOICE_MATCH_SETTINGS_URL" />。
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">使用「<ph name="VISUAL_SEARCH_PROVIDER" />」搜尋頁面上的部分內容</translation>
 <translation id="2309620859903500144">系統已封鎖此網站存取您的動作或光線感應器。</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">網頁網址</translation>
@@ -2049,7 +2049,6 @@
 <translation id="289695669188700754">金鑰識別碼:<ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">當您關閉所有無痕式視窗時,系統將會移除此自訂設定</translation>
 <translation id="2897878306272793870">您確定要開啟 <ph name="TAB_COUNT" /> 分頁嗎?</translation>
-<translation id="2900477968385519153">使用「<ph name="VISUAL_SEARCH_PROVIDER" />」搜尋螢幕畫面</translation>
 <translation id="290105521672621980">檔案使用的功能不受支援</translation>
 <translation id="2901348420151309559">最近的相片和應用程式</translation>
 <translation id="2902127500170292085">「<ph name="EXTENSION_NAME" />」無法與此打印機通訊。請確定已插上打印機,然後再試一次。</translation>
@@ -2922,7 +2921,6 @@
 <translation id="3778740492972734840">開發人員工具(&amp;D)</translation>
 <translation id="3778868487658107119">度身訂造的「Google 助理」隨時為您提供協助,不但可根據您的問題提供解答,還可以按指令執行各種操作。</translation>
 <translation id="3781742599892759500">Linux 的麥克風存取權</translation>
-<translation id="378312418865624974">讀取這部電腦的專屬識別碼</translation>
 <translation id="3784472333786002075">Cookie 是網站所建立的檔案,並可分為兩種:第一方 Cookie 由您瀏覽的網站建立,網址列上會顯示該網站的網址。第三方 Cookie 則由其他網站建立。這些網站擁有您所瀏覽網站的部分內容,例如廣告和圖片。</translation>
 <translation id="3785308913036335955">顯示應用程式捷徑</translation>
 <translation id="3785727820640310185">已儲存此網站的密碼</translation>
@@ -3381,6 +3379,7 @@
 <translation id="4227605727325220318">新增 Android 手機</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{不允許這個擴充程式}other{不允許部分擴充程式}}</translation>
 <translation id="4231095370974836764">在 <ph name="DEVICE_TYPE" /> 上透過 Google Play 安裝應用程式和遊戲。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">關閉遊戲控制項</translation>
 <translation id="4232375817808480934">設定 Kerberos</translation>
 <translation id="4235965441080806197">取消登入</translation>
 <translation id="4236163961381003811">探索更多擴充程式</translation>
@@ -3575,7 +3574,6 @@
 <translation id="4415748029120993980">SECG 橢圓曲線 secp384r1 (亦稱為 NIST P-384)</translation>
 <translation id="4416450511678320850">沒有與此內容相關的應用程式</translation>
 <translation id="4416582610654027550">輸入有效的網址</translation>
-<translation id="4417162649853416189">在圖片上拖曳以使用「<ph name="VISUAL_SEARCH_PROVIDER" />」的搜尋功能</translation>
 <translation id="4419409365248380979">永遠允許 <ph name="HOST" /> 設定 Coockie</translation>
 <translation id="4421932782753506458">長毛貓</translation>
 <translation id="4423376891418188461">還原設定</translation>
@@ -3715,7 +3713,6 @@
 <translation id="4550926046134589611">部分支援連結將仍會在 <ph name="APP_NAME" /> 中開啟。</translation>
 <translation id="4551763574344810652">按下 <ph name="MODIFIER_KEY_DESCRIPTION" /> 即可復原</translation>
 <translation id="4553526521109675518">您需要重新啟動 Chromebook 才能變更裝置語言。<ph name="BEGIN_LINK_LEARN_MORE" />瞭解詳情<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">在圖片上拖曳以使用「<ph name="VISUAL_SEARCH_PROVIDER" />」的搜尋功能</translation>
 <translation id="4554591392113183336">外部擴充功能與現有擴充功能的版本相同或較低。</translation>
 <translation id="4555769855065597957">陰影</translation>
 <translation id="4555863373929230635">如要將密碼儲存至 Google 帳戶,請登入並開啟同步功能。</translation>
@@ -4566,7 +4563,6 @@
 <translation id="5427459444770871191">順時針旋轉(&amp;C)</translation>
 <translation id="542750953150239272">繼續操作即代表您同意此裝置亦可自動下載及安裝由 Google、您的流動網絡供應商及裝置製造商提供的更新和應用程式 (可能會耗用流動數據)。部分應用程式可能會提供應用程式內購買。</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (有可用的更新)</translation>
-<translation id="5429373054983029602">使用「<ph name="VISUAL_SEARCH_PROVIDER" />」搜尋螢幕畫面</translation>
 <translation id="542948651837270806">需要安裝信任平台模組韌體的更新。請參閱 <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">即時網絡共享</translation>
 <translation id="5431318178759467895">顏色</translation>
@@ -4639,7 +4635,6 @@
 <translation id="5494920125229734069">全部選取</translation>
 <translation id="5495466433285976480">這樣會在下次重新啟動時移除所有本機使用者、檔案、數據和其他設定。所有使用者都必須重新登入。</translation>
 <translation id="5495597166260341369">保持螢幕開啟</translation>
-<translation id="549580971452855947">拖曳以使用「<ph name="VISUAL_SEARCH_PROVIDER" />」搜尋圖片</translation>
 <translation id="5496587651328244253">管理</translation>
 <translation id="5496730470963166430">不允許傳送彈出式視窗或使用重新導向</translation>
 <translation id="5497251278400702716">此檔案</translation>
@@ -5748,7 +5743,6 @@
 您還有 # 個被盜用的密碼。Google 密碼管理工具建議您立即檢查此密碼。}other{已成功變更被盜用的密碼。
 
 您還有 # 個被盜用的密碼。「Google 密碼管理工具」建議您立即檢查這些密碼。}}</translation>
-<translation id="6595792813574514527">拖曳以使用「<ph name="VISUAL_SEARCH_PROVIDER" />」搜尋圖片</translation>
 <translation id="6596325263575161958">加密選項</translation>
 <translation id="6596816719288285829">IP 地址</translation>
 <translation id="6597017209724497268">樣本數目</translation>
@@ -7369,7 +7363,6 @@
 <translation id="8184318863960255706">更多資訊</translation>
 <translation id="8184472985242519288">平均</translation>
 <translation id="8186609076106987817">伺服器無法找到這個檔案。</translation>
-<translation id="8186704951085064172">使用「<ph name="VISUAL_SEARCH_PROVIDER" />」搜尋頁面上的部分內容</translation>
 <translation id="8188389033983459049">檢查您的裝置設定並開啟藍牙以繼續</translation>
 <translation id="8188742492803591566">輸入顯示在 Chromecast 或電視上的存取碼,即可開始投放畫面。</translation>
 <translation id="8189306097519446565">學校帳戶</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 43fd88c..6a9e6b5 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -180,6 +180,7 @@
 <translation id="1166583374608765787">檢查新名稱</translation>
 <translation id="1166596238782048887">「<ph name="TAB_TITLE" />」分頁屬於「<ph name="DESK_TITLE" />」桌面</translation>
 <translation id="1168020859489941584">將於 <ph name="TIME_REMAINING" /> 內開啟...</translation>
+<translation id="1169266963600477608">遊戲控制項</translation>
 <translation id="1169435433292653700">「<ph name="FILE_NAME" />」含有機密或危險的資料。管理員訊息:「<ph name="CUSTOM_MESSAGE" />」</translation>
 <translation id="1171135284592304528">鍵盤焦點所在物件變更時醒目顯示</translation>
 <translation id="1171515578268894665"><ph name="ORIGIN" /> 要求與 HID 裝置連線</translation>
@@ -1410,7 +1411,6 @@
     如果你稍後決定不讓孩子使用 Voice Match,只要從他們的 Google 助理設定中移除這項功能即可。如要查看或刪除孩子設定 Voice Match 時錄製的語音片段,請登入孩子的帳戶並前往 <ph name="VOICE_MATCH_SETTINGS_URL" />。
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜尋頁面上的部分內容</translation>
 <translation id="2309620859903500144">這個網站已遭封鎖,無法存取你的動作感應器或光源感應器。</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">網頁網址</translation>
@@ -2034,7 +2034,6 @@
 <translation id="289695669188700754">金鑰識別碼:<ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">所有無痕式視窗關閉後,這項自訂設定將會移除</translation>
 <translation id="2897878306272793870">你確定要開啟 <ph name="TAB_COUNT" /> 分頁嗎?</translation>
-<translation id="2900477968385519153">使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜尋螢幕畫面</translation>
 <translation id="290105521672621980">檔案使用不受支援的功能</translation>
 <translation id="2901348420151309559">最近的相片和應用程式</translation>
 <translation id="2902127500170292085">「<ph name="EXTENSION_NAME" />」無法與這部印表機進行通訊,請確認您已插上印表機,然後再試一次。</translation>
@@ -2907,7 +2906,6 @@
 <translation id="3778740492972734840">開發人員工具(&amp;D)</translation>
 <translation id="3778868487658107119">Google 助理可根據你的問題提供解答,或是依指令執行各種操作。它是你專屬的 Google 服務,隨時為你提供協助。</translation>
 <translation id="3781742599892759500">Linux 麥克風存取權</translation>
-<translation id="378312418865624974">讀取這台電腦的專屬 ID</translation>
 <translation id="3784472333786002075">Cookie 是網站所建立的檔案,可分為兩種類型:第一方 Cookie 由你造訪過的網站所建立,也就是網址列所顯示的網站。第三方 Cookie 由其他網站所建立。這類網站通常是在你造訪的網站上提供部分內容 (例如廣告或圖片) 的其他網站。</translation>
 <translation id="3785308913036335955">顯示應用程式捷徑</translation>
 <translation id="3785727820640310185">已儲存這個網站的密碼</translation>
@@ -3365,6 +3363,7 @@
 <translation id="4227605727325220318">新增 Android 手機</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{已封鎖這個擴充功能}other{已封鎖部分擴充功能}}</translation>
 <translation id="4231095370974836764">在你的 <ph name="DEVICE_TYPE" /> 上透過 Google Play 安裝應用程式和遊戲。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
+<translation id="4231141543165771749">關閉遊戲控制項</translation>
 <translation id="4232375817808480934">設定 Kerberos</translation>
 <translation id="4235965441080806197">取消登入</translation>
 <translation id="4236163961381003811">探索其他擴充功能</translation>
@@ -3559,7 +3558,6 @@
 <translation id="4415748029120993980">SECG 橢圓曲線 secp384r1 (亦稱為 NIST P-384)</translation>
 <translation id="4416450511678320850">沒有與這個內容相關的應用程式</translation>
 <translation id="4416582610654027550">請輸入有效的網址</translation>
-<translation id="4417162649853416189">在圖片上拖曳游標以使用 <ph name="VISUAL_SEARCH_PROVIDER" />的搜尋功能</translation>
 <translation id="4419409365248380979">一律允許 <ph name="HOST" /> 設定 Coockie</translation>
 <translation id="4421932782753506458">毛毛</translation>
 <translation id="4423376891418188461">還原設定</translation>
@@ -3697,7 +3695,6 @@
 <translation id="4550926046134589611">某些支援連結仍會在「<ph name="APP_NAME" />」中開啟。</translation>
 <translation id="4551763574344810652">按下 <ph name="MODIFIER_KEY_DESCRIPTION" /> 即可復原</translation>
 <translation id="4553526521109675518">你需要重新啟動 Chromebook 才能變更裝置語言。<ph name="BEGIN_LINK_LEARN_MORE" />瞭解詳情<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">在圖片上拖曳游標以使用 <ph name="VISUAL_SEARCH_PROVIDER" />的搜尋功能</translation>
 <translation id="4554591392113183336">外部擴充功能與現有擴充功能的版本相同,或版本較低。</translation>
 <translation id="4555769855065597957">陰影</translation>
 <translation id="4555863373929230635">如要將密碼儲存到你的 Google 帳戶,請登入並開啟同步功能。</translation>
@@ -4548,7 +4545,6 @@
 <translation id="5427459444770871191">順時針旋轉(&amp;C)</translation>
 <translation id="542750953150239272">如果選擇繼續,即表示您允許這部裝置自動下載及安裝來自 Google、您的電信業者和裝置製造商的更新內容和應用程式,上述程序可能會使用行動數據。這類應用程式中,有些可能會提供應用程式內購。</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (有可用的更新)</translation>
-<translation id="5429373054983029602">使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜尋螢幕畫面</translation>
 <translation id="542948651837270806">必須安裝可信任平台模組韌體的更新項目。詳情請參閱 <ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">即時網路共用</translation>
 <translation id="5431318178759467895">彩色</translation>
@@ -4621,7 +4617,6 @@
 <translation id="5494920125229734069">全選</translation>
 <translation id="5495466433285976480">這樣會在下次重新啟動時移除所有本機使用者、檔案、資料和其他設定。所有使用者都必須重新登入。</translation>
 <translation id="5495597166260341369">保持開啟螢幕</translation>
-<translation id="549580971452855947">拖曳游標以使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜尋圖片</translation>
 <translation id="5496587651328244253">整理</translation>
 <translation id="5496730470963166430">不得傳送彈出式視窗或使用重新導向</translation>
 <translation id="5497251278400702716">這個檔案</translation>
@@ -5729,7 +5724,6 @@
 你還有 # 組遭外洩的密碼,Google 密碼管理工具建議你立即變更這組密碼。}other{已成功變更遭外洩的密碼。
 
 你還有 # 組遭外洩的密碼,Google 密碼管理工具建議你立即變更這些密碼。}}</translation>
-<translation id="6595792813574514527">拖曳游標以使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜尋圖片</translation>
 <translation id="6596325263575161958">加密選項</translation>
 <translation id="6596816719288285829">IP 位址</translation>
 <translation id="6597017209724497268">個樣本</translation>
@@ -7350,7 +7344,6 @@
 <translation id="8184318863960255706">更多資訊</translation>
 <translation id="8184472985242519288">平均</translation>
 <translation id="8186609076106987817">伺服器找不到檔案。</translation>
-<translation id="8186704951085064172">使用 <ph name="VISUAL_SEARCH_PROVIDER" />搜尋頁面上的部分內容</translation>
 <translation id="8188389033983459049">檢查裝置設定並開啟藍牙功能,以便繼續操作</translation>
 <translation id="8188742492803591566">輸入顯示在 Chromecast 或電視上的存取碼,即可開始投放畫面。</translation>
 <translation id="8189306097519446565">學校帳戶</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb
index c044608a..e0feb17 100644
--- a/chrome/app/resources/generated_resources_zu.xtb
+++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -1426,7 +1426,6 @@
     Uma ngemuva kwesikhathi unquma ukuthi i-Voice Match ayifanele ingane yakho, vese nje uyisuse Kumasethingi Womsizi wabo. Ukuze ubuke noma usule iziqeshana zomsindo zamarekhodi wengane yakho phakathi nokusetha i-Voice Match, iya ku-<ph name="VOICE_MATCH_SETTINGS_URL" /> kusuka ku-akhawunti yengane yakho.
     <ph name="BR" />
     <ph name="FOOTER_MESSAGE" /></translation>
-<translation id="2307630946657910723">Sesha ingxenye yekhasi nge-<ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="2309620859903500144">Leli sayithi livinjelwe kusukela ekufinyeleleni kuzinzwa zakho zokunyakaza noma zokukhanya.</translation>
 <translation id="2311721625890389967">↓</translation>
 <translation id="2312219318583366810">Ikhasi le-URL</translation>
@@ -2050,7 +2049,6 @@
 <translation id="289695669188700754">I-ID engukhiye: <ph name="KEY_ID" /></translation>
 <translation id="2897713966423243833">Leli sethingi elingokwezifiso lizosuswa uma uvala wonke amawindi akho we-Incognito</translation>
 <translation id="2897878306272793870">Ingabe uqinisekile ukuthi ufuna ukuvula amathebhu angu-<ph name="TAB_COUNT" />?</translation>
-<translation id="2900477968385519153">Sesha Isikrini sakho nge-<ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="290105521672621980">Ifayela lisebenzisa izici ezingasekelwe</translation>
 <translation id="2901348420151309559">Izithombe zakamuva nama-app</translation>
 <translation id="2902127500170292085">I-<ph name="EXTENSION_NAME" /> ayikwazanga ukuxhumana nale phrinta. Qiniseka ukuthi iphrinta ixhunyiwe uphinde uzame futhi.</translation>
@@ -2923,7 +2921,6 @@
 <translation id="3778740492972734840">Amathuluzi wonjiniyela</translation>
 <translation id="3778868487658107119">Ibuze imibuzo. Itshele ukuthi yenze izinto. i-Google yakho siqu, ihlala ilungele ukusiza.</translation>
 <translation id="3781742599892759500">Ukufinyelela kwemakrofoni ye-Linux</translation>
-<translation id="378312418865624974">Funda isikhombi esehlukile sale khompyutha</translation>
 <translation id="3784472333786002075">Amakhukhi kungamafayela adalwe iwebhusayithi. Kunezinhlobo ezimbili zamakhukhi: Amakhukhi wokuqala adalwe isayithi olivakashelayo. Isayithi liboniswa kwibha yekheli. Amakhukhi wenkampani yangaphandle adalwa ngamanye amasayithi. Lawa masayithi aphethe okunye okuqukethwe, njengezikhangiso noma izithombe, ozibona kuwebhusayithi oyivakashelayo.</translation>
 <translation id="3785308913036335955">Bonisa isinqamuleli sezinhlelo zokusebenza</translation>
 <translation id="3785727820640310185">Amaphasiwedi alondoloziwe aleli sayithi</translation>
@@ -3575,7 +3572,6 @@
 <translation id="4415748029120993980">I-SECG elliptic curve secp384r1 (aka NIST P-384)</translation>
 <translation id="4416450511678320850">Awekho ama-app atholakalayo walokhu okuqukethwe</translation>
 <translation id="4416582610654027550">Thayipha i-URL evumelekile</translation>
-<translation id="4417162649853416189">Hudula ngaphezu Kwemifanekiso ukuze Useshe nge-<ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4419409365248380979">Vumela njalo i-<ph name="HOST" /> ukuthi isethe amakhukhi</translation>
 <translation id="4421932782753506458">Tofozelayo</translation>
 <translation id="4423376891418188461">Buyisela izilungiselelo</translation>
@@ -3714,7 +3710,6 @@
 <translation id="4550926046134589611">Amanye amalinki asekelwayo asazovuleka ku-<ph name="APP_NAME" />.</translation>
 <translation id="4551763574344810652">Cindezela ku-<ph name="MODIFIER_KEY_DESCRIPTION" /> ukuze uhlehlise</translation>
 <translation id="4553526521109675518">Kuzomele uqalise kabusha i-Chromebook yakho ukuze ushintshe ulimi lwedivayisi. <ph name="BEGIN_LINK_LEARN_MORE" />Funda kabanzi<ph name="END_LINK_LEARN_MORE" /></translation>
-<translation id="4554491709904933912">Hudula ngaphezu kwemifanekiso ukuze useshe nge-<ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="4554591392113183336">Isandiso sangaphandle sikunguqulo efanayo noma engaphansi ngokuqhathaniswa nesivele ikhona.</translation>
 <translation id="4555769855065597957">Amafu</translation>
 <translation id="4555863373929230635">Ukuze kulondolozwe amaphasiwedi ku-akhawunti yakho ye-Google, ngena ngemvume uphinde uvule ukuvumelanisa.</translation>
@@ -4567,7 +4562,6 @@
 <translation id="5427459444770871191">Phendula ngokuhambisana newashi</translation>
 <translation id="542750953150239272">Ngokuqhubeka, uyavuma ukuthi le divayisi ingalanda ngokuzenzakalelayo futhi ifake izibuyekezo nezinhlelo zokusebenza kusuka ku-Google, inkampani yakho yenethiwekhi, kanye nomkhiqizi wedivayisi yakho, kungenzeka basebenzisa idatha yeselula. Ezinye zalezi nhlelo zokusebenza zinganikezela ngokuthenga okuphakathi nohlelo.</translation>
 <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (Isibuyekezo siyatholakala)</translation>
-<translation id="5429373054983029602">Sesha isikrini sakho nge-<ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="542948651837270806">Isibuyekezo se-Trusted Platform Module firmware sidinya ukufakwa. Bona i-<ph name="TPM_FIRMWARE_UPDATE_LINK" /></translation>
 <translation id="5430931332414098647">I-Tethering esheshayo</translation>
 <translation id="5431318178759467895">Umbala</translation>
@@ -4640,7 +4634,6 @@
 <translation id="5494920125229734069">Khetha konke</translation>
 <translation id="5495466433285976480">Lokhu kuzosusa yonke idatha yasendaweni, amafayela, idatha, nezinye izilungiselelo ngemuva kokuqalisa kabusha kwakho okulandelayo. Bonke abasebenzisi kuzomele baphinde bangene ngemvume.</translation>
 <translation id="5495597166260341369">Gcina isiboniso sivuliwe</translation>
-<translation id="549580971452855947">Hudula ukuze useshe imifanekiso nge-<ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="5496587651328244253">Hlela</translation>
 <translation id="5496730470963166430">Ayivumelekile ukuthumela okwesikhashana noma ukusebenzisa ukuqondisa kabusha</translation>
 <translation id="5497251278400702716">Leli fayela</translation>
@@ -5754,7 +5747,6 @@
 Unamaphasiwedi onakalisiwe angu-# ngokwengeziwe. Umphathi Wephasiwedi Ye-Google uncoma ukuhlola lamaphasiwedi manje.}other{Iphumelele ukushintsha iphasiwedi eyonakalisiwe.
 
 Unamaphasiwedi onakalisiwe angu-# ngokwengeziwe. Umphathi Wephasiwedi Ye-Google uncoma ukuhlola lamaphasiwedi manje.}}</translation>
-<translation id="6595792813574514527">Hudula ukuze Useshe Imifanekiso nge-<ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="6596325263575161958">Izinketho zokubethela</translation>
 <translation id="6596816719288285829">Ikheli le-IP</translation>
 <translation id="6597017209724497268">Amasampuli</translation>
@@ -7373,7 +7365,6 @@
 <translation id="8184318863960255706">Olunye ulwazi</translation>
 <translation id="8184472985242519288">Okufanayo</translation>
 <translation id="8186609076106987817">Iseva ayikwazanga ukuthola ifayela.</translation>
-<translation id="8186704951085064172">Sesha Ingxenye Yekhasi nge-<ph name="VISUAL_SEARCH_PROVIDER" /></translation>
 <translation id="8188389033983459049">Hlola izilungiselelo zedivayisi yakho bese uzivule ukuze uqhubeke</translation>
 <translation id="8188742492803591566">Faka ikhodi yokufinyelela eboniswe ku-Chromecast noma ku-TV ukuze uqale ukusakaza isikrini sakho.</translation>
 <translation id="8189306097519446565">Ama-akhawunti esikole</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es.xtb b/chrome/app/resources/google_chrome_strings_es.xtb
index cce07e76..dbfbbaf 100644
--- a/chrome/app/resources/google_chrome_strings_es.xtb
+++ b/chrome/app/resources/google_chrome_strings_es.xtb
@@ -11,7 +11,7 @@
 <translation id="110877069173485804">Este es tu navegador Chrome</translation>
 <translation id="1125124144982679672">¿Qué perfil de Chrome quieres usar?</translation>
 <translation id="1142745911746664600">No se puede actualizar Chrome</translation>
-<translation id="1152920704813762236">Información de ChromeOS</translation>
+<translation id="1152920704813762236">Información de Chrome OS</translation>
 <translation id="1154147086299354128">&amp;Abrir en Chrome</translation>
 <translation id="1178374936842835197">Si no se muestra alguno de los ajustes en esta página, mira en la <ph name="LINK_BEGIN" />
         configuración de ChromeOS Flex<ph name="LINK_END" /></translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index ed1c08d..247e816 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -353,8 +353,6 @@
     "component_updater/subresource_filter_component_installer.h",
     "component_updater/trust_token_key_commitments_component_installer.cc",
     "component_updater/trust_token_key_commitments_component_installer.h",
-    "component_updater/url_param_classification_component_installer.cc",
-    "component_updater/url_param_classification_component_installer.h",
     "consent_auditor/consent_auditor_factory.cc",
     "consent_auditor/consent_auditor_factory.h",
     "content_index/content_index_metrics.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 4579d01..7990603 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2079,55 +2079,11 @@
     {"start_surface_variation", "single"},
     {"show_tabs_in_mru_order", "true"}};
 
-const FeatureEntry::FeatureParam kStartSurfaceAndroid_SingleSurfaceFinale[] = {
-    {"start_surface_variation", "single"},
-    {"omnibox_focused_on_new_tab", "true"},
-    {"home_button_on_grid_tab_switcher", "true"},
-    {"tab_count_button_on_start_surface", "true"},
-    {"new_home_surface_from_home_button", "hide_tab_switcher_only"},
-    {"hide_switch_when_no_incognito_tabs", "true"},
-    {"show_tabs_in_mru_order", "true"},
-    {"enable_tab_groups_continuation", "true"}};
-
-const FeatureEntry::FeatureParam
-    kStartSurfaceAndroid_SingleSurfaceFinale_NTPTilesOnOmnibox[] = {
-        {"start_surface_variation", "single"},
-        {"omnibox_focused_on_new_tab", "true"},
-        {"show_ntp_tiles_on_omnibox", "true"},
-        {"home_button_on_grid_tab_switcher", "true"},
-        {"tab_count_button_on_start_surface", "true"},
-        {"new_home_surface_from_home_button", "hide_mv_tiles_and_tab_switcher"},
-        {"hide_switch_when_no_incognito_tabs", "true"},
-        {"show_tabs_in_mru_order", "true"},
-        {"enable_tab_groups_continuation", "true"}};
-
 const FeatureEntry::FeatureParam kStartSurfaceAndroid_SingleSurface_V2[] = {
     {"start_surface_variation", "single"},
     {"show_last_active_tab_only", "true"},
     {"open_ntp_instead_of_start", "true"}};
 
-const FeatureEntry::FeatureParam kStartSurfaceAndroid_SingleSurface_V2Finale[] =
-    {{"start_surface_variation", "single"},
-     {"show_last_active_tab_only", "true"},
-     {"omnibox_focused_on_new_tab", "true"},
-     {"home_button_on_grid_tab_switcher", "true"},
-     {"tab_count_button_on_start_surface", "true"},
-     {"new_home_surface_from_home_button", "hide_tab_switcher_only"},
-     {"hide_switch_when_no_incognito_tabs", "true"},
-     {"enable_tab_groups_continuation", "true"}};
-
-const FeatureEntry::FeatureParam
-    kStartSurfaceAndroid_SingleSurface_V2Finale_NTPTilesOnOmnibox[] = {
-        {"start_surface_variation", "single"},
-        {"show_last_active_tab_only", "true"},
-        {"omnibox_focused_on_new_tab", "true"},
-        {"show_ntp_tiles_on_omnibox", "true"},
-        {"home_button_on_grid_tab_switcher", "true"},
-        {"tab_count_button_on_start_surface", "true"},
-        {"hide_switch_when_no_incognito_tabs", "true"},
-        {"new_home_surface_from_home_button", "hide_mv_tiles_and_tab_switcher"},
-        {"enable_tab_groups_continuation", "true"}};
-
 const FeatureEntry::FeatureParam kStartSurfaceAndroid_SingleSurfaceSingleTab[] =
     {{"start_surface_variation", "single"},
      {"show_last_active_tab_only", "true"},
@@ -2184,20 +2140,8 @@
      std::size(kStartSurfaceAndroid_CandidateB_AlwaysShowIncognito), nullptr},
     {"Single Surface", kStartSurfaceAndroid_SingleSurface,
      std::size(kStartSurfaceAndroid_SingleSurface), nullptr},
-    {"Single Surface Finale", kStartSurfaceAndroid_SingleSurfaceFinale,
-     std::size(kStartSurfaceAndroid_SingleSurfaceFinale), nullptr},
-    {"Single Surface Finale + NTP tiles on Omnibox",
-     kStartSurfaceAndroid_SingleSurfaceFinale_NTPTilesOnOmnibox,
-     std::size(kStartSurfaceAndroid_SingleSurfaceFinale_NTPTilesOnOmnibox),
-     nullptr},
     {"Single Surface V2", kStartSurfaceAndroid_SingleSurface_V2,
      std::size(kStartSurfaceAndroid_SingleSurface_V2), nullptr},
-    {"Single Surface V2 Finale", kStartSurfaceAndroid_SingleSurface_V2Finale,
-     std::size(kStartSurfaceAndroid_SingleSurface_V2Finale), nullptr},
-    {"Single Surface V2 Finale + NTP tiles on Omnibox",
-     kStartSurfaceAndroid_SingleSurface_V2Finale_NTPTilesOnOmnibox,
-     std::size(kStartSurfaceAndroid_SingleSurface_V2Finale_NTPTilesOnOmnibox),
-     nullptr},
     {"Single Surface + Single Tab", kStartSurfaceAndroid_SingleSurfaceSingleTab,
      std::size(kStartSurfaceAndroid_SingleSurfaceSingleTab), nullptr},
 };
@@ -4246,6 +4190,10 @@
      flag_descriptions::kStrictSiteIsolationDescription, kOsAndroid,
      SINGLE_VALUE_TYPE(switches::kSitePerProcess)},
 #endif
+    {"install-isolated-apps-at-startup",
+     flag_descriptions::kInstallIssolatedAppsAtStartup,
+     flag_descriptions::kInstallIssolatedAppsAtStartupDescription, kOsAll,
+     ORIGIN_LIST_VALUE_TYPE(switches::kInstallIsolatedAppsAtStartup, "")},
     {"isolate-origins", flag_descriptions::kIsolateOriginsName,
      flag_descriptions::kIsolateOriginsDescription, kOsAll,
      ORIGIN_LIST_VALUE_TYPE(switches::kIsolateOrigins, "")},
@@ -5860,6 +5808,11 @@
      flag_descriptions::kShowScrollableMVTOnNTPAndroidDescription, kOsAndroid,
      FEATURE_VALUE_TYPE(chrome::android::kShowScrollableMVTOnNTPAndroid)},
 
+    {"enable-search-resumption-module",
+     flag_descriptions::kSearchResumptionModuleAndroidName,
+     flag_descriptions::kSearchResumptionModuleAndroidDescription, kOsAndroid,
+     FEATURE_VALUE_TYPE(chrome::android::kSearchResumptionModuleAndroid)},
+
     {"enable-close-tab-suggestions",
      flag_descriptions::kCloseTabSuggestionsName,
      flag_descriptions::kCloseTabSuggestionsDescription, kOsAndroid,
@@ -7507,6 +7460,14 @@
      FEATURE_VALUE_TYPE(features::kPwaUpdateDialogForName)},
 
 #if BUILDFLAG(IS_ANDROID)
+    {"sync-android-promos-with-alternative-title",
+     flag_descriptions::kSyncAndroidPromosWithAlternativeTitleName,
+     flag_descriptions::kSyncAndroidPromosWithAlternativeTitleDescription,
+     kOsAndroid,
+     FEATURE_VALUE_TYPE(syncer::kSyncAndroidPromosWithAlternativeTitle)},
+#endif
+
+#if BUILDFLAG(IS_ANDROID)
     {"sync-android-promos-with-illustration",
      flag_descriptions::kSyncAndroidPromosWithIllustrationName,
      flag_descriptions::kSyncAndroidPromosWithIllustrationDescription,
diff --git a/chrome/browser/android/browserservices/metrics/java/src/org/chromium/chrome/browser/browserservices/metrics/WebApkUmaRecorder.java b/chrome/browser/android/browserservices/metrics/java/src/org/chromium/chrome/browser/browserservices/metrics/WebApkUmaRecorder.java
index ce327b1..2e9ebca 100644
--- a/chrome/browser/android/browserservices/metrics/java/src/org/chromium/chrome/browser/browserservices/metrics/WebApkUmaRecorder.java
+++ b/chrome/browser/android/browserservices/metrics/java/src/org/chromium/chrome/browser/browserservices/metrics/WebApkUmaRecorder.java
@@ -15,6 +15,7 @@
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.task.AsyncTask;
 import org.chromium.components.browser_ui.util.ConversionUtils;
+import org.chromium.components.content_settings.ContentSettingValues;
 import org.chromium.components.webapps.WebApkDistributor;
 
 import java.io.File;
@@ -152,10 +153,10 @@
                 HISTOGRAM_LAUNCH_TO_SPLASHSCREEN_HIDDEN, durationMs);
     }
 
-    /** Records whether a WebAPK has permission to display notifications. */
-    public static void recordNotificationPermissionStatus(boolean permissionEnabled) {
-        RecordHistogram.recordBooleanHistogram(
-                "WebApk.Notification.Permission.Status", permissionEnabled);
+    /** Records the notification permission status for a WebAPK. */
+    public static void recordNotificationPermissionStatus(@ContentSettingValues int settingValue) {
+        RecordHistogram.recordEnumeratedHistogram("WebApk.Notification.Permission.Status2",
+                settingValue, ContentSettingValues.NUM_SETTINGS);
     }
 
     /**
diff --git a/chrome/browser/apps/platform_apps/platform_app_launch.cc b/chrome/browser/apps/platform_apps/platform_app_launch.cc
index c132936..10f4cd2 100644
--- a/chrome/browser/apps/platform_apps/platform_app_launch.cc
+++ b/chrome/browser/apps/platform_apps/platform_app_launch.cc
@@ -138,7 +138,7 @@
     url = GURL(chrome::kChromeUIAppsWithForceInstalledDeprecationDialogURL +
                app_id);
   } else {
-    url = GURL(chrome::kChromeUIAppsWithDeprecationDialogURL);
+    url = GURL(chrome::kChromeUIAppsWithDeprecationDialogURL + app_id);
   }
 
   NavigateParams params(browser, url, ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
diff --git a/chrome/browser/ash/BUILD.gn b/chrome/browser/ash/BUILD.gn
index 4e56b427..b106b05 100644
--- a/chrome/browser/ash/BUILD.gn
+++ b/chrome/browser/ash/BUILD.gn
@@ -842,274 +842,6 @@
     "customization/customization_wallpaper_downloader.h",
     "customization/customization_wallpaper_util.cc",
     "customization/customization_wallpaper_util.h",
-    "dbus/ash_dbus_helper.cc",
-    "dbus/ash_dbus_helper.h",
-    "dbus/chrome_features_service_provider.cc",
-    "dbus/chrome_features_service_provider.h",
-    "dbus/component_updater_service_provider.cc",
-    "dbus/component_updater_service_provider.h",
-    "dbus/cryptohome_key_delegate_service_provider.cc",
-    "dbus/cryptohome_key_delegate_service_provider.h",
-    "dbus/dlp_files_policy_service_provider.cc",
-    "dbus/dlp_files_policy_service_provider.h",
-    "dbus/drive_file_stream_service_provider.cc",
-    "dbus/drive_file_stream_service_provider.h",
-    "dbus/encrypted_reporting_service_provider.cc",
-    "dbus/encrypted_reporting_service_provider.h",
-    "dbus/fusebox_service_provider.cc",
-    "dbus/fusebox_service_provider.h",
-    "dbus/kiosk_info_service_provider.cc",
-    "dbus/kiosk_info_service_provider.h",
-    "dbus/libvda_service_provider.cc",
-    "dbus/libvda_service_provider.h",
-    "dbus/lock_to_single_user_service_provider.cc",
-    "dbus/lock_to_single_user_service_provider.h",
-    "dbus/machine_learning_decision_service_provider.cc",
-    "dbus/machine_learning_decision_service_provider.h",
-    "dbus/metrics_event_service_provider.cc",
-    "dbus/metrics_event_service_provider.h",
-    "dbus/mojo_connection_service_provider.cc",
-    "dbus/mojo_connection_service_provider.h",
-    "dbus/printers_service_provider.cc",
-    "dbus/printers_service_provider.h",
-    "dbus/proxy_resolution_service_provider.cc",
-    "dbus/proxy_resolution_service_provider.h",
-    "dbus/screen_lock_service_provider.cc",
-    "dbus/screen_lock_service_provider.h",
-    "dbus/smb_fs_service_provider.cc",
-    "dbus/smb_fs_service_provider.h",
-    "dbus/virtual_file_request_service_provider.cc",
-    "dbus/virtual_file_request_service_provider.h",
-    "dbus/vm/plugin_vm_service_provider.cc",
-    "dbus/vm/plugin_vm_service_provider.h",
-    "dbus/vm/vm_applications_service_provider.cc",
-    "dbus/vm/vm_applications_service_provider.h",
-    "dbus/vm/vm_disk_management_service_provider.cc",
-    "dbus/vm/vm_disk_management_service_provider.h",
-    "dbus/vm/vm_launch_service_provider.cc",
-    "dbus/vm/vm_launch_service_provider.h",
-    "dbus/vm/vm_permission_service_provider.cc",
-    "dbus/vm/vm_permission_service_provider.h",
-    "dbus/vm/vm_sk_forwarding_service_provider.cc",
-    "dbus/vm/vm_sk_forwarding_service_provider.h",
-    "device_name/device_name_applier.h",
-    "device_name/device_name_applier_impl.cc",
-    "device_name/device_name_applier_impl.h",
-    "device_name/device_name_store.cc",
-    "device_name/device_name_store.h",
-    "device_name/device_name_store_impl.cc",
-    "device_name/device_name_store_impl.h",
-    "device_name/device_name_validator.cc",
-    "device_name/device_name_validator.h",
-    "device_sync/device_sync_client_factory.cc",
-    "device_sync/device_sync_client_factory.h",
-    "diagnostics/diagnostics_browser_delegate_impl.cc",
-    "diagnostics/diagnostics_browser_delegate_impl.h",
-    "display/quirks_manager_delegate_impl.cc",
-    "display/quirks_manager_delegate_impl.h",
-    "drive/drive_integration_service.cc",
-    "drive/drive_integration_service.h",
-    "drive/drivefs_native_message_host.cc",
-    "drive/drivefs_native_message_host.h",
-    "drive/file_system_util.cc",
-    "drive/file_system_util.h",
-    "drive/fileapi/drivefs_async_file_util.cc",
-    "drive/fileapi/drivefs_async_file_util.h",
-    "drive/fileapi/drivefs_file_system_backend_delegate.cc",
-    "drive/fileapi/drivefs_file_system_backend_delegate.h",
-    "eche_app/app_id.h",
-    "eche_app/eche_app_manager_factory.cc",
-    "eche_app/eche_app_manager_factory.h",
-    "eche_app/eche_app_notification_controller.cc",
-    "eche_app/eche_app_notification_controller.h",
-    "enhanced_network_tts/enhanced_network_tts_constants.cc",
-    "enhanced_network_tts/enhanced_network_tts_constants.h",
-    "enhanced_network_tts/enhanced_network_tts_impl.cc",
-    "enhanced_network_tts/enhanced_network_tts_impl.h",
-    "enhanced_network_tts/enhanced_network_tts_utils.cc",
-    "enhanced_network_tts/enhanced_network_tts_utils.h",
-    "eol_notification.cc",
-    "eol_notification.h",
-    "events/event_rewriter_delegate_impl.cc",
-    "events/event_rewriter_delegate_impl.h",
-    "exo/chrome_data_exchange_delegate.cc",
-    "exo/chrome_data_exchange_delegate.h",
-    "external_metrics.cc",
-    "external_metrics.h",
-    "external_protocol_dialog.cc",
-    "external_protocol_dialog.h",
-    "file_manager/app_id.h",
-    "file_manager/app_service_file_tasks.cc",
-    "file_manager/app_service_file_tasks.h",
-    "file_manager/arc_file_tasks.cc",
-    "file_manager/arc_file_tasks.h",
-    "file_manager/copy_or_move_io_task.cc",
-    "file_manager/copy_or_move_io_task.h",
-    "file_manager/delete_io_task.cc",
-    "file_manager/delete_io_task.h",
-    "file_manager/documents_provider_root_manager.cc",
-    "file_manager/documents_provider_root_manager.h",
-    "file_manager/extract_io_task.cc",
-    "file_manager/extract_io_task.h",
-    "file_manager/file_browser_handlers.cc",
-    "file_manager/file_browser_handlers.h",
-    "file_manager/file_manager_copy_or_move_hook_delegate.cc",
-    "file_manager/file_manager_copy_or_move_hook_delegate.h",
-    "file_manager/file_manager_string_util.cc",
-    "file_manager/file_manager_string_util.h",
-    "file_manager/file_tasks.cc",
-    "file_manager/file_tasks.h",
-    "file_manager/file_tasks_notifier.cc",
-    "file_manager/file_tasks_notifier.h",
-    "file_manager/file_tasks_notifier_factory.cc",
-    "file_manager/file_tasks_notifier_factory.h",
-    "file_manager/file_tasks_observer.h",
-    "file_manager/file_watcher.cc",
-    "file_manager/file_watcher.h",
-    "file_manager/fileapi_util.cc",
-    "file_manager/fileapi_util.h",
-    "file_manager/filesystem_api_util.cc",
-    "file_manager/filesystem_api_util.h",
-    "file_manager/fusebox_mounter.cc",
-    "file_manager/fusebox_mounter.h",
-    "file_manager/guest_os_file_tasks.cc",
-    "file_manager/guest_os_file_tasks.h",
-    "file_manager/io_task.cc",
-    "file_manager/io_task.h",
-    "file_manager/io_task_controller.cc",
-    "file_manager/io_task_controller.h",
-    "file_manager/io_task_util.cc",
-    "file_manager/io_task_util.h",
-    "file_manager/open_util.cc",
-    "file_manager/open_util.h",
-    "file_manager/open_with_browser.cc",
-    "file_manager/open_with_browser.h",
-    "file_manager/path_util.cc",
-    "file_manager/path_util.h",
-    "file_manager/prefs_migration_uma.h",
-    "file_manager/restore_io_task.cc",
-    "file_manager/restore_io_task.h",
-    "file_manager/select_file_dialog_util.cc",
-    "file_manager/select_file_dialog_util.h",
-    "file_manager/snapshot_manager.cc",
-    "file_manager/snapshot_manager.h",
-    "file_manager/speedometer.cc",
-    "file_manager/speedometer.h",
-    "file_manager/trash_io_task.cc",
-    "file_manager/trash_io_task.h",
-    "file_manager/url_util.cc",
-    "file_manager/url_util.h",
-    "file_manager/volume_manager.cc",
-    "file_manager/volume_manager.h",
-    "file_manager/volume_manager_factory.cc",
-    "file_manager/volume_manager_factory.h",
-    "file_manager/volume_manager_observer.h",
-    "file_manager/zip_io_task.cc",
-    "file_manager/zip_io_task.h",
-    "file_system_provider/abort_callback.h",
-    "file_system_provider/extension_provider.cc",
-    "file_system_provider/extension_provider.h",
-    "file_system_provider/fileapi/backend_delegate.cc",
-    "file_system_provider/fileapi/backend_delegate.h",
-    "file_system_provider/fileapi/buffering_file_stream_reader.cc",
-    "file_system_provider/fileapi/buffering_file_stream_reader.h",
-    "file_system_provider/fileapi/buffering_file_stream_writer.cc",
-    "file_system_provider/fileapi/buffering_file_stream_writer.h",
-    "file_system_provider/fileapi/file_stream_reader.cc",
-    "file_system_provider/fileapi/file_stream_reader.h",
-    "file_system_provider/fileapi/file_stream_writer.cc",
-    "file_system_provider/fileapi/file_stream_writer.h",
-    "file_system_provider/fileapi/provider_async_file_util.cc",
-    "file_system_provider/fileapi/provider_async_file_util.h",
-    "file_system_provider/fileapi/watcher_manager.cc",
-    "file_system_provider/fileapi/watcher_manager.h",
-    "file_system_provider/icon_set.cc",
-    "file_system_provider/icon_set.h",
-    "file_system_provider/mount_path_util.cc",
-    "file_system_provider/mount_path_util.h",
-    "file_system_provider/notification_manager.cc",
-    "file_system_provider/notification_manager.h",
-    "file_system_provider/notification_manager_interface.h",
-    "file_system_provider/observer.h",
-    "file_system_provider/operations/abort.cc",
-    "file_system_provider/operations/abort.h",
-    "file_system_provider/operations/add_watcher.cc",
-    "file_system_provider/operations/add_watcher.h",
-    "file_system_provider/operations/close_file.cc",
-    "file_system_provider/operations/close_file.h",
-    "file_system_provider/operations/configure.cc",
-    "file_system_provider/operations/configure.h",
-    "file_system_provider/operations/copy_entry.cc",
-    "file_system_provider/operations/copy_entry.h",
-    "file_system_provider/operations/create_directory.cc",
-    "file_system_provider/operations/create_directory.h",
-    "file_system_provider/operations/create_file.cc",
-    "file_system_provider/operations/create_file.h",
-    "file_system_provider/operations/delete_entry.cc",
-    "file_system_provider/operations/delete_entry.h",
-    "file_system_provider/operations/execute_action.cc",
-    "file_system_provider/operations/execute_action.h",
-    "file_system_provider/operations/get_actions.cc",
-    "file_system_provider/operations/get_actions.h",
-    "file_system_provider/operations/get_metadata.cc",
-    "file_system_provider/operations/get_metadata.h",
-    "file_system_provider/operations/move_entry.cc",
-    "file_system_provider/operations/move_entry.h",
-    "file_system_provider/operations/open_file.cc",
-    "file_system_provider/operations/open_file.h",
-    "file_system_provider/operations/operation.cc",
-    "file_system_provider/operations/operation.h",
-    "file_system_provider/operations/read_directory.cc",
-    "file_system_provider/operations/read_directory.h",
-    "file_system_provider/operations/read_file.cc",
-    "file_system_provider/operations/read_file.h",
-    "file_system_provider/operations/remove_watcher.cc",
-    "file_system_provider/operations/remove_watcher.h",
-    "file_system_provider/operations/truncate.cc",
-    "file_system_provider/operations/truncate.h",
-    "file_system_provider/operations/unmount.cc",
-    "file_system_provider/operations/unmount.h",
-    "file_system_provider/operations/write_file.cc",
-    "file_system_provider/operations/write_file.h",
-    "file_system_provider/provided_file_system.cc",
-    "file_system_provider/provided_file_system.h",
-    "file_system_provider/provided_file_system_info.cc",
-    "file_system_provider/provided_file_system_info.h",
-    "file_system_provider/provided_file_system_interface.cc",
-    "file_system_provider/provided_file_system_interface.h",
-    "file_system_provider/provided_file_system_observer.cc",
-    "file_system_provider/provided_file_system_observer.h",
-    "file_system_provider/provider_interface.h",
-    "file_system_provider/queue.cc",
-    "file_system_provider/queue.h",
-    "file_system_provider/registry.cc",
-    "file_system_provider/registry.h",
-    "file_system_provider/registry_interface.cc",
-    "file_system_provider/registry_interface.h",
-    "file_system_provider/request_manager.cc",
-    "file_system_provider/request_manager.h",
-    "file_system_provider/request_value.cc",
-    "file_system_provider/request_value.h",
-    "file_system_provider/scoped_file_opener.cc",
-    "file_system_provider/scoped_file_opener.h",
-    "file_system_provider/service.cc",
-    "file_system_provider/service.h",
-    "file_system_provider/service_factory.cc",
-    "file_system_provider/service_factory.h",
-    "file_system_provider/throttled_file_system.cc",
-    "file_system_provider/throttled_file_system.h",
-    "file_system_provider/watcher.cc",
-    "file_system_provider/watcher.h",
-    "first_run/first_run.cc",
-    "first_run/first_run.h",
-    "floating_workspace/floating_workspace_service.cc",
-    "floating_workspace/floating_workspace_service.h",
-    "floating_workspace/floating_workspace_service_factory.cc",
-    "floating_workspace/floating_workspace_service_factory.h",
-    "floating_workspace/floating_workspace_util.cc",
-    "floating_workspace/floating_workspace_util.h",
-    "fusebox/fusebox_util.cc",
-    "fusebox/fusebox_util.h",
   ]
 
   allow_circular_includes_from = [
@@ -1134,9 +866,6 @@
     "//ash/components/attestation",
     "//ash/components/audio",
     "//ash/components/disks",
-    "//ash/components/drivefs",
-    "//ash/components/drivefs/mojom",
-    "//ash/components/enhanced_network_tts/mojom",
     "//ash/components/login/auth",
     "//ash/components/settings",
     "//ash/components/tpm",
@@ -1147,7 +876,6 @@
     "//ash/services/multidevice_setup/public/cpp",
     "//ash/services/multidevice_setup/public/cpp:android_sms_app_helper_delegate",
     "//ash/services/multidevice_setup/public/cpp:android_sms_pairing_state_tracker",
-    "//ash/webui/eche_app_ui",
     "//base",
     "//chrome/browser/ash/arc/input_overlay/db/proto",
     "//chrome/browser/ash/crosapi",
@@ -1159,11 +887,9 @@
     "//chrome/browser/ui/webui/bluetooth_internals:mojo_bindings",
     "//chrome/browser/ui/webui/chromeos/crostini_upgrader:mojo_bindings_headers",
     "//chrome/browser/web_applications",
-    "//chrome/common",
     "//chrome/common:buildflags",
     "//chrome/common:constants",
     "//chrome/common/extensions/api",
-    "//chrome/services/file_util/public/cpp",
     "//chrome/services/keymaster/public/mojom",
     "//chrome/services/printing/public/mojom",
     "//chromeos/ash/components/dbus/authpolicy",
@@ -1172,28 +898,23 @@
     "//chromeos/ash/components/dbus/cicerone:cicerone_proto",
     "//chromeos/ash/components/dbus/concierge",
     "//chromeos/ash/components/dbus/concierge:concierge_proto",
-    "//chromeos/ash/components/dbus/services",
     "//chromeos/ash/components/dbus/system_clock",
     "//chromeos/ash/components/memory",
     "//chromeos/components/security_token_pin",
     "//chromeos/components/sharesheet:constants",
     "//chromeos/crosapi/mojom",
-    "//chromeos/dbus:metrics_event_proto",
     "//chromeos/dbus/anomaly_detector",
     "//chromeos/dbus/anomaly_detector:proto",
     "//chromeos/dbus/attestation",
     "//chromeos/dbus/attestation:attestation_proto",
     "//chromeos/dbus/common",
     "//chromeos/dbus/constants",
-    "//chromeos/dbus/cros_disks",
     "//chromeos/dbus/dlcservice",
-    "//chromeos/dbus/missive",
     "//chromeos/dbus/power",
     "//chromeos/dbus/power:power_manager_proto",
     "//chromeos/dbus/resourced",
     "//chromeos/dbus/session_manager",
     "//chromeos/dbus/tpm_manager:tpm_manager_proto",
-    "//chromeos/dbus/update_engine",
     "//chromeos/metrics",
     "//chromeos/network",
     "//chromeos/services/cros_healthd/public/mojom",
@@ -1204,14 +925,14 @@
     "//components/arc",
     "//components/arc/common",
     "//components/content_settings/core/browser",
-    "//components/download/content/public",
-    "//components/drive",
     "//components/exo",
     "//components/gcm_driver/instance_id",
     "//components/guest_os",
     "//components/invalidation/public",
     "//components/keyed_service/content",
     "//components/keyed_service/core",
+    "//components/policy:cloud_policy_proto_generated_compile",
+    "//components/policy:generated",
     "//components/policy/core/browser",
     "//components/policy/core/common",
     "//components/policy/core/common:common_constants",
@@ -1219,30 +940,23 @@
     "//components/policy/proto",
     "//components/prefs",
     "//components/printing/common:mojo_interfaces",
-    "//components/quirks",
-    "//components/reporting/proto:record_proto",
-    "//components/reporting/storage_selector",
     "//components/services/app_service/public/cpp:app_types",
     "//components/services/app_service/public/cpp:app_update",
     "//components/services/app_service/public/cpp:icon_types",
     "//components/services/app_service/public/cpp:instance_update",
     "//components/services/app_service/public/mojom",
     "//components/services/app_service/public/mojom:types_headers",
-    "//components/services/unzip/public/cpp",
     "//components/session_manager/core",
     "//components/signin/public/identity_manager",
     "//components/soda",
-    "//components/storage_monitor",
     "//components/sync_preferences",
     "//components/user_manager",
     "//components/viz/common",
     "//content/public/browser",
     "//crypto",
-    "//dbus",
     "//device/bluetooth",
     "//extensions/browser",
     "//extensions/browser/api/automation_internal",
-    "//extensions/browser/api/file_handlers",
     "//extensions/browser/api/messaging:native_messaging",
     "//extensions/common",
     "//gpu/command_buffer/client",
@@ -1250,7 +964,6 @@
     "//media/capture:capture_lib",
     "//mojo/public/c/system:headers",
     "//mojo/public/cpp/bindings",
-    "//mojo/public/cpp/platform",
     "//mojo/public/cpp/system",
     "//net",
     "//services/data_decoder/public/cpp",
@@ -1261,9 +974,7 @@
     "//services/tracing/public/cpp",
     "//skia",
     "//storage/browser",
-    "//storage/common",
     "//third_party/abseil-cpp:absl",
-    "//third_party/blink/public/mojom:mojom_platform",
     "//third_party/boringssl",
     "//ui/accessibility",
     "//ui/accessibility:ax_base",
@@ -1274,7 +985,6 @@
     "//ui/base/ime",
     "//ui/base/ime/ash",
     "//ui/base/metadata",
-    "//ui/chromeos/events",
     "//ui/compositor",
     "//ui/display",
     "//ui/display/types",
@@ -1298,32 +1008,22 @@
     "//ash/components/arc:prefs",
     "//ash/components/arc/input_overlay/resources",
     "//ash/components/arc/media_session",
-    "//ash/components/arc/mojom:notifications",
     "//ash/components/arc/mojom:protected_buffer_manager",
     "//ash/components/cryptohome",
     "//ash/components/device_activity",
+    "//ash/components/drivefs",
     "//ash/components/fwupd",
     "//ash/components/login/session",
-    "//ash/components/multidevice:stub_multidevice_util",
     "//ash/components/multidevice/logging",
     "//ash/components/peripheral_notification",
-    "//ash/components/phonehub",
     "//ash/components/power",
     "//ash/constants",
     "//ash/keyboard/ui",
     "//ash/public/mojom",
     "//ash/resources/vector_icons",
-    "//ash/services/device_sync",
-    "//ash/services/device_sync:stub_device_sync",
     "//ash/services/multidevice_setup/public/cpp:prefs",
     "//ash/services/multidevice_setup/public/mojom",
-    "//ash/services/secure_channel",
-    "//ash/services/secure_channel/public/cpp/client",
-    "//ash/services/secure_channel/public/cpp/shared",
     "//ash/webui/camera_app_ui:document_scanning",
-    "//ash/webui/file_manager:constants",
-    "//ash/webui/file_manager:file_manager_ui",
-    "//ash/webui/file_manager:file_manager_untrusted_ui",
     "//base:i18n",
     "//build:branding_buildflags",
     "//chrome/app:chromium_strings",
@@ -1336,7 +1036,7 @@
     "//chrome/browser/ash/child_accounts/time_limits/web_time_limit_error_page",
     "//chrome/browser/ash/crosapi:browser_util",
     "//chrome/browser/ash/mojo_service_manager",
-    "//chrome/browser/ash/system_web_apps/types",
+    "//chrome/browser/ash/system_web_apps/types:types",
     "//chrome/browser/chromeos:attestation_proto",
     "//chrome/browser/metrics/structured",
     "//chrome/browser/profiles",
@@ -1344,73 +1044,41 @@
     "//chrome/browser/ui/webui/chromeos/crostini_upgrader:mojo_bindings",
     "//chrome/browser/ui/webui/settings/chromeos/constants:mojom",
     "//chrome/browser/webshare:storage",
+    "//chrome/common",
     "//chrome/common:channel_info",
     "//chrome/common:chrome_features",
     "//chrome/common:non_code_constants",
     "//chrome/common/net",
-    "//chromeos/ash/components/dbus/biod",
-    "//chromeos/ash/components/dbus/cros_healthd",
-    "//chromeos/ash/components/dbus/cups_proxy",
-    "//chromeos/ash/components/dbus/fusebox",
-    "//chromeos/ash/components/dbus/hiberman",
-    "//chromeos/ash/components/dbus/ip_peripheral",
-    "//chromeos/ash/components/dbus/kerberos",
-    "//chromeos/ash/components/dbus/media_analytics",
-    "//chromeos/ash/components/dbus/os_install",
-    "//chromeos/ash/components/dbus/patchpanel",
-    "//chromeos/ash/components/dbus/pciguard",
-    "//chromeos/ash/components/dbus/rgbkbd",
-    "//chromeos/ash/components/dbus/rmad",
-    "//chromeos/ash/components/dbus/seneschal",
-    "//chromeos/ash/components/dbus/spaced",
-    "//chromeos/ash/components/dbus/system_proxy",
-    "//chromeos/ash/components/dbus/typecd",
+    "//chromeos/ash/components/dbus/services",
     "//chromeos/ash/components/dbus/upstart",
-    "//chromeos/ash/components/hibernate:buildflags",
     "//chromeos/ash/components/network/portal_detector",
     "//chromeos/components/cdm_factory_daemon:cdm_factory_daemon_browser",
-    "//chromeos/components/chromebox_for_meetings/buildflags",
-    "//chromeos/components/disks:prefs",
     "//chromeos/components/local_search_service/public/cpp",
-    "//chromeos/components/mojo_bootstrap",
     "//chromeos/components/onc",
     "//chromeos/components/sensors",
     "//chromeos/constants",
     "//chromeos/dbus",
-    "//chromeos/dbus:plugin_vm_service_proto",
     "//chromeos/dbus:vm_applications_apps_proto",
-    "//chromeos/dbus:vm_disk_management_proto",
     "//chromeos/dbus:vm_launch_proto",
-    "//chromeos/dbus:vm_permission_service_proto",
-    "//chromeos/dbus:vm_sk_forwarding_proto",
     "//chromeos/dbus/arc",
-    "//chromeos/dbus/audio",
     "//chromeos/dbus/cdm_factory_daemon",
+    "//chromeos/dbus/cros_disks",
     "//chromeos/dbus/cryptohome:attestation_proto",
-    "//chromeos/dbus/cryptohome:cryptohome_proto",
     "//chromeos/dbus/debug_daemon",
     "//chromeos/dbus/dlcservice:dlcservice_proto",
-    "//chromeos/dbus/dlp",
-    "//chromeos/dbus/dlp:dlp_proto",
-    "//chromeos/dbus/federated",
-    "//chromeos/dbus/hermes",
-    "//chromeos/dbus/human_presence",
     "//chromeos/dbus/image_loader",
-    "//chromeos/dbus/init",
-    "//chromeos/dbus/machine_learning",
     "//chromeos/dbus/permission_broker",
+    "//chromeos/dbus/session_manager",
     "//chromeos/dbus/tpm_manager",
-    "//chromeos/dbus/u2f",
     "//chromeos/dbus/userdataauth",
     "//chromeos/dbus/util",
     "//chromeos/dbus/virtual_file_provider",
     "//chromeos/login/login_state",
+    "//chromeos/network",
     "//chromeos/services/assistant/public/cpp",
     "//chromeos/services/cros_healthd/private/cpp",
     "//chromeos/services/cros_healthd/public/cpp",
     "//chromeos/services/machine_learning/public/cpp",
-    "//chromeos/services/rollback_network_config/public/mojom",
-    "//chromeos/strings",
     "//chromeos/system",
     "//chromeos/ui/vector_icons",
     "//components/app_constants",
@@ -1420,88 +1088,73 @@
     "//components/content_settings/core/common",
     "//components/crx_file",
     "//components/device_event_log",
-    "//components/download/public/common:public",
     "//components/embedder_support:browser_util",
-    "//components/gcm_driver",
-    "//components/google/core/common",
     "//components/guest_os:prefs",
     "//components/invalidation/impl",
     "//components/language/core/browser",
     "//components/language/core/common",
     "//components/live_caption:constants",
     "//components/metrics",
-    "//components/metrics:serialization",
     "//components/onc",
     "//components/ownership",
     "//components/permissions",
-    "//components/policy:generated",
     "//components/pref_registry",
-    "//components/proxy_config",
-    "//components/reporting/proto:interface_proto",
-    "//components/reporting/util:status",
-    "//components/reporting/util:status_proto",
+    "//components/quirks",
     "//components/rlz",
     "//components/safe_browsing/core/common:safe_browsing_prefs",
-    "//components/services/app_service/public/cpp:app_file_handling",
     "//components/services/app_service/public/cpp:intents",
     "//components/services/app_service/public/cpp:types",
     "//components/services/app_service/public/mojom:types",
     "//components/services/filesystem/public/mojom",
-    "//components/services/unzip/content",
-    "//components/services/unzip/public/mojom",
     "//components/signin/public/base",
+    "//components/storage_monitor",
     "//components/strings:components_strings",
     "//components/sync/base",
     "//components/sync/driver",
-    "//components/sync_sessions",
     "//components/translate/core/browser",
     "//components/url_matcher",
-    "//components/vector_icons",
     "//components/version_info",
     "//components/version_info:channel",
     "//components/webapps/browser",
     "//components/webapps/browser:constants",
     "//content/public/common",
-    "//extensions/browser/api/messaging",
+    "//dbus",
+    "//extensions/browser/api/file_handlers",
     "//extensions/browser/api/runtime",
     "//extensions/browser/api/virtual_keyboard_private",
     "//extensions/browser/api/virtual_keyboard_private:virtual_keyboard_delegate",
     "//extensions/common:common_constants",
     "//extensions/common:mojom",
     "//google_apis",
-    "//google_apis/common",
     "//gpu/command_buffer/client:gles2_interface",
     "//gpu/command_buffer/common",
     "//gpu/ipc/common",
     "//media/capture/video/chromeos/mojom:cros_camera_shared",
     "//media/capture/video/chromeos/public",
+    "//mojo/public/cpp/bindings:bindings_base",
+    "//mojo/public/cpp/platform",
     "//net/traffic_annotation",
-    "//pdf:buildflags",
     "//printing",
     "//printing:printing_base",
     "//printing/backend",
     "//printing/mojom",
     "//rlz/buildflags",
     "//services/audio/public/cpp",
-    "//services/device/public/mojom:usb",
     "//services/network/public/cpp:cpp_base",
     "//services/network/public/mojom",
     "//services/network/public/mojom:url_loader_base",
     "//services/tracing/public/mojom",
     "//third_party/blink/public/common:headers",
+    "//third_party/blink/public/mojom:mojom_platform",
     "//third_party/icu",
     "//third_party/re2",
     "//third_party/securemessage/proto",
-    "//third_party/zlib/google:zip",
+    "//ui/accessibility",
     "//ui/accessibility:ax_enums_mojo",
     "//ui/base:features",
-    "//ui/base/clipboard",
-    "//ui/base/clipboard:clipboard_types",
-    "//ui/base/clipboard:file_info",
-    "//ui/base/data_transfer_policy",
     "//ui/chromeos",
+    "//ui/chromeos/events",
     "//ui/chromeos/resources",
-    "//ui/chromeos/strings",
     "//ui/chromeos/styles:cros_styles_views",
     "//ui/color:color_headers",
     "//ui/color:mixers",
@@ -1513,9 +1166,8 @@
     "//ui/gfx:color_utils",
     "//ui/gfx:memory_buffer",
     "//ui/gfx/codec",
-    "//ui/message_center",
     "//ui/native_theme",
-    "//ui/strings:ui_strings",
+    "//ui/strings",
     "//ui/views/controls/webview",
     "//ui/wm",
   ]
diff --git a/chrome/browser/ash/arc/input_overlay/constants.h b/chrome/browser/ash/arc/input_overlay/constants.h
index 34838c97..44e192f4 100644
--- a/chrome/browser/ash/arc/input_overlay/constants.h
+++ b/chrome/browser/ash/arc/input_overlay/constants.h
@@ -54,6 +54,14 @@
   kMove,
 };
 
+// Message types for UI displaying different types of messages.
+enum class MessageType {
+  // |kInfo| is the type for info message.
+  kInfo,
+  // |kError| is the type for error message.
+  kError,
+};
+
 }  // namespace input_overlay
 }  // namespace arc
 
diff --git a/chrome/browser/ash/arc/input_overlay/display_overlay_controller.cc b/chrome/browser/ash/arc/input_overlay/display_overlay_controller.cc
index bf2ab0d..834d00ba 100644
--- a/chrome/browser/ash/arc/input_overlay/display_overlay_controller.cc
+++ b/chrome/browser/ash/arc/input_overlay/display_overlay_controller.cc
@@ -389,8 +389,10 @@
   action_edit_menu_ = nullptr;
 }
 
-void DisplayOverlayController::AddEditErrorMsg(ActionView* action_view,
-                                               base::StringPiece error_msg) {
+void DisplayOverlayController::AddEditMessage(ActionView* action_view,
+                                              const base::StringPiece& message,
+                                              MessageType message_type) {
+  RemoveEditMessage();
   auto* overlay_widget = GetOverlayWidget();
   DCHECK(overlay_widget);
   if (!overlay_widget)
@@ -399,15 +401,14 @@
   DCHECK(parent_view);
   if (!parent_view)
     return;
-  auto error = std::make_unique<MessageView>(this, action_view, error_msg);
-  error_ = parent_view->AddChildView(std::move(error));
+  message_ = MessageView::Show(this, parent_view, message, message_type);
 }
 
-void DisplayOverlayController::RemoveEditErrorMsg() {
-  if (!error_)
+void DisplayOverlayController::RemoveEditMessage() {
+  if (!message_)
     return;
-  error_->parent()->RemoveChildViewT(error_);
-  error_ = nullptr;
+  message_->parent()->RemoveChildViewT(message_);
+  message_ = nullptr;
 }
 
 void DisplayOverlayController::OnBindingChange(
@@ -487,7 +488,7 @@
 
 void DisplayOverlayController::ProcessPressedEvent(
     const ui::LocatedEvent& event) {
-  if (!action_edit_menu_ && !error_ && !input_menu_view_ && !nudge_view_)
+  if (!action_edit_menu_ && !message_ && !input_menu_view_ && !nudge_view_)
     return;
 
   auto root_location = event.root_location();
@@ -498,10 +499,10 @@
       RemoveActionEditMenu();
   }
 
-  if (error_) {
-    auto bounds = error_->GetBoundsInScreen();
+  if (message_) {
+    auto bounds = message_->GetBoundsInScreen();
     if (!bounds.Contains(root_location))
-      RemoveEditErrorMsg();
+      RemoveEditMessage();
   }
 
   if (input_menu_view_) {
diff --git a/chrome/browser/ash/arc/input_overlay/display_overlay_controller.h b/chrome/browser/ash/arc/input_overlay/display_overlay_controller.h
index a28c482..fc43e51 100644
--- a/chrome/browser/ash/arc/input_overlay/display_overlay_controller.h
+++ b/chrome/browser/ash/arc/input_overlay/display_overlay_controller.h
@@ -55,8 +55,10 @@
   void AddActionEditMenu(ActionView* anchor, ActionType action_type);
   void RemoveActionEditMenu();
 
-  void AddEditErrorMsg(ActionView* action_view, base::StringPiece error_msg);
-  void RemoveEditErrorMsg();
+  void AddEditMessage(ActionView* action_view,
+                      const base::StringPiece& message,
+                      MessageType message_type);
+  void RemoveEditMessage();
 
   void OnBindingChange(Action* action,
                        std::unique_ptr<InputElement> input_element);
@@ -140,7 +142,7 @@
   raw_ptr<views::ImageButton> menu_entry_ = nullptr;
   raw_ptr<ActionEditMenu> action_edit_menu_ = nullptr;
   raw_ptr<EditFinishView> edit_finish_view_ = nullptr;
-  raw_ptr<MessageView> error_ = nullptr;
+  raw_ptr<MessageView> message_ = nullptr;
   raw_ptr<EducationalView> educational_view_ = nullptr;
   raw_ptr<ash::PillButton> nudge_view_ = nullptr;
 
diff --git a/chrome/browser/ash/arc/input_overlay/touch_injector.cc b/chrome/browser/ash/arc/input_overlay/touch_injector.cc
index 69213e0..1132f231 100644
--- a/chrome/browser/ash/arc/input_overlay/touch_injector.cc
+++ b/chrome/browser/ash/arc/input_overlay/touch_injector.cc
@@ -179,7 +179,7 @@
     Action* target_action,
     std::unique_ptr<InputElement> input_element) {
   if (display_overlay_controller_)
-    display_overlay_controller_->RemoveEditErrorMsg();
+    display_overlay_controller_->RemoveEditMessage();
   Action* overlapped_action = nullptr;
   for (auto& action : actions_) {
     if (action.get() == target_action)
diff --git a/chrome/browser/ash/arc/input_overlay/ui/action_label.cc b/chrome/browser/ash/arc/input_overlay/ui/action_label.cc
index 6ccd6d0..7950872 100644
--- a/chrome/browser/ash/arc/input_overlay/ui/action_label.cc
+++ b/chrome/browser/ash/arc/input_overlay/ui/action_label.cc
@@ -48,6 +48,8 @@
 // TODO(cuicuiruan): move the strings to chrome/app/generated_resources.grd
 // after UX/UI strings are confirmed.
 constexpr base::StringPiece kEditErrorSameKey("Same key");
+constexpr base::StringPiece kEditInfoMessage(
+    "Click on any key, then press a keyboard key to customize");
 
 // Arrow symbols for arrow keys.
 constexpr char kLeftArrow[] = "←";
@@ -249,6 +251,8 @@
 void ActionLabel::OnFocus() {
   SetToEditFocus();
   LabelButton::OnFocus();
+  auto* parent_view = static_cast<ActionView*>(parent());
+  parent_view->ShowInfoMsg(kEditInfoMessage, this);
 }
 
 void ActionLabel::OnBlur() {
diff --git a/chrome/browser/ash/arc/input_overlay/ui/action_label.h b/chrome/browser/ash/arc/input_overlay/ui/action_label.h
index 19ba1c4b..47c5640 100644
--- a/chrome/browser/ash/arc/input_overlay/ui/action_label.h
+++ b/chrome/browser/ash/arc/input_overlay/ui/action_label.h
@@ -37,7 +37,7 @@
   void SetTextActionLabel(const std::string& text);
   void SetImageActionLabel(MouseAction mouse_action);
   void SetDisplayMode(DisplayMode mode);
-  void ShowErrorMsg(base::StringPiece error_msg);
+  void ShowErrorMsg(const base::StringPiece& message);
   void OnKeyBindingChange(ui::DomCode code);
 
   // views::View:
diff --git a/chrome/browser/ash/arc/input_overlay/ui/action_view.cc b/chrome/browser/ash/arc/input_overlay/ui/action_view.cc
index ff9d430..5a0171e 100644
--- a/chrome/browser/ash/arc/input_overlay/ui/action_view.cc
+++ b/chrome/browser/ash/arc/input_overlay/ui/action_view.cc
@@ -96,12 +96,19 @@
   display_overlay_controller_->RemoveActionEditMenu();
 }
 
-void ActionView::ShowErrorMsg(base::StringPiece error_msg,
+void ActionView::ShowErrorMsg(const base::StringPiece& message,
                               ActionLabel* editing_label) {
-  display_overlay_controller_->AddEditErrorMsg(this, error_msg);
+  display_overlay_controller_->AddEditMessage(this, message,
+                                              MessageType::kError);
   SetDisplayMode(DisplayMode::kEditedError, editing_label);
 }
 
+void ActionView::ShowInfoMsg(const base::StringPiece& message,
+                             ActionLabel* editing_label) {
+  display_overlay_controller_->AddEditMessage(this, message,
+                                              MessageType::kInfo);
+}
+
 void ActionView::ChangeBinding(Action* action,
                                ActionLabel* action_label,
                                std::unique_ptr<InputElement> input_element) {
diff --git a/chrome/browser/ash/arc/input_overlay/ui/action_view.h b/chrome/browser/ash/arc/input_overlay/ui/action_view.h
index 5f23958..4354d3c 100644
--- a/chrome/browser/ash/arc/input_overlay/ui/action_view.h
+++ b/chrome/browser/ash/arc/input_overlay/ui/action_view.h
@@ -60,7 +60,11 @@
   gfx::Point GetEditMenuPosition(gfx::Size menu_size);
   void RemoveEditMenu();
   // Show error message for action.
-  void ShowErrorMsg(base::StringPiece error_msg, ActionLabel* editing_label);
+  void ShowErrorMsg(const base::StringPiece& message,
+                    ActionLabel* editing_label);
+  // Show info/edu message.
+  void ShowInfoMsg(const base::StringPiece& message,
+                   ActionLabel* editing_label);
   // Change binding for |action| binding to |input_element| and set
   // |kEditedSuccess| on |action_label| if |action_label| is not nullptr.
   // Otherwise, set |kEditedSuccess| to all |ActionLabel|.
diff --git a/chrome/browser/ash/arc/input_overlay/ui/message_view.cc b/chrome/browser/ash/arc/input_overlay/ui/message_view.cc
index 05762f4..3c1e655 100644
--- a/chrome/browser/ash/arc/input_overlay/ui/message_view.cc
+++ b/chrome/browser/ash/arc/input_overlay/ui/message_view.cc
@@ -6,7 +6,10 @@
 
 #include "ash/ambient/util/ambient_util.h"
 #include "chrome/browser/ash/arc/input_overlay/display_overlay_controller.h"
+#include "components/vector_icons/vector_icons.h"
+#include "ui/gfx/color_utils.h"
 #include "ui/gfx/geometry/size.h"
+#include "ui/gfx/paint_vector_icon.h"
 #include "ui/views/background.h"
 
 namespace arc {
@@ -14,55 +17,89 @@
 
 namespace {
 // UI specs.
-constexpr int kWidthPadding = 10;
-constexpr int kMinHeight = 32;
-constexpr int kSpaceToActionView = 8;
-constexpr char kFontStyle[] = "Google Sans";
-constexpr int kFontSize = 14;
-constexpr SkColor kTextColor = gfx::kGoogleRed300;
+constexpr char kFontStyle[] = "Roboto";
+constexpr int kFontSize = 13;
+constexpr int kLineHeight = 20;
+constexpr int kCornerRadius = 12;
+constexpr int kShadowElevation = 2;
+constexpr int kSideInset = 24;
+constexpr int kTopMargin = 24;
+constexpr int kMinHeight = 72;
+constexpr SkColor kTextColor = gfx::kGoogleGrey200;
+constexpr SkColor kBackgroundColor = gfx::kGoogleGrey900;
+constexpr SkColor kForegroundColor = SkColorSetA(SK_ColorWHITE, 0x0F);
 
+// About Icon.
+constexpr int kIconSize = 32;
+constexpr int kImageLabelSpace = 24;
+constexpr SkColor kInfoIconColor = gfx::kGoogleBlue300;
+constexpr SkColor kErrorIconColor = gfx::kGoogleRed300;
 }  // namespace
 
+// static
+MessageView* MessageView::Show(DisplayOverlayController* controller,
+                               views::View* parent,
+                               const base::StringPiece& message,
+                               MessageType message_type) {
+  auto* view_ptr = parent->AddChildView(std::make_unique<MessageView>(
+      controller, parent->size(), message, message_type));
+  view_ptr->AddShadow();
+  return view_ptr;
+}
+
 MessageView::MessageView(DisplayOverlayController* controller,
-                         ActionView* view,
-                         base::StringPiece text)
-    : views::Label(base::UTF8ToUTF16(text)),
-      display_overlay_controller_(controller) {
+                         const gfx::Size& parent_size,
+                         const base::StringPiece& message,
+                         MessageType message_type)
+    : views::LabelButton(), display_overlay_controller_(controller) {
   DCHECK(display_overlay_controller_);
   if (display_overlay_controller_)
-    display_overlay_controller_->RemoveEditErrorMsg();
-  SetBackground(nullptr);
-  SetFontList(gfx::FontList({kFontStyle}, gfx::Font::NORMAL, kFontSize,
-                            gfx::Font::Weight::MEDIUM));
-  SetAutoColorReadabilityEnabled(false);
-  SetEnabledColor(kTextColor);
-  // Default shadow elevation value is 2 which is expected.
-  SetShadows(ash::ambient::util::GetTextShadowValues(GetColorProvider()));
+    display_overlay_controller_->RemoveEditMessage();
+  SetBackground(views::CreateRoundedRectBackground(
+      color_utils::GetResultingPaintColor(kForegroundColor, kBackgroundColor),
+      kCornerRadius));
+  SetBorder(views::CreateEmptyBorder(gfx::Insets::VH(0, kSideInset)));
 
-  auto preferred_size = GetPreferredSize();
-  auto content_bounds = view->parent()->bounds();
-  auto action_view_bounds = view->bounds();
-  int x = action_view_bounds.x();
-  if (content_bounds.width() - x < preferred_size.width())
-    x = content_bounds.width() - preferred_size.width();
-  x = std::max(0, x);
+  SetText(base::UTF8ToUTF16(message));
+  SetEnabledTextColors(kTextColor);
+  label()->SetFontList(gfx::FontList({kFontStyle}, gfx::Font::NORMAL, kFontSize,
+                                     gfx::Font::Weight::NORMAL));
+  label()->SetLineHeight(kLineHeight);
 
-  int y = action_view_bounds.bottom() + kSpaceToActionView;
-  if (content_bounds.height() - y < preferred_size.height())
-    y = action_view_bounds.y() - preferred_size.height() - kSpaceToActionView;
-  y = std::max(0, y);
+  SetImageLabelSpacing(kImageLabelSpace);
+  image()->SetHorizontalAlignment(views::ImageView::Alignment::kLeading);
+  switch (message_type) {
+    case MessageType::kInfo:
+      SetImage(views::Button::STATE_NORMAL,
+               gfx::CreateVectorIcon(gfx::IconDescription(
+                   vector_icons::kInfoOutlineIcon, kIconSize, kInfoIconColor)));
+      break;
+    case MessageType::kError:
+      SetImage(
+          views::Button::STATE_NORMAL,
+          gfx::CreateVectorIcon(gfx::IconDescription(
+              vector_icons::kErrorOutlineIcon, kIconSize, kErrorIconColor)));
+      break;
+    default:
+      NOTREACHED();
+      break;
+  }
 
-  SetPosition(gfx::Point(x, y));
+  auto preferred_size = CalculatePreferredSize();
+  preferred_size.SetSize(preferred_size.width() + kIconSize + kImageLabelSpace,
+                         kMinHeight);
+  preferred_size.SetToMin(parent_size);
   SetSize(preferred_size);
+  SetPosition(gfx::Point(
+      std::max(0, (parent_size.width() - preferred_size.width()) / 2),
+      kTopMargin));
 }
 
 MessageView::~MessageView() = default;
 
-gfx::Size MessageView::CalculatePreferredSize() const {
-  auto size = Label::CalculatePreferredSize();
-  size.set_width(size.width() + kWidthPadding);
-  size.set_height(std::max(size.height(), kMinHeight));
-  return size;
+void MessageView::AddShadow() {
+  view_shadow_ = std::make_unique<ash::ViewShadow>(this, kShadowElevation);
+  view_shadow_->SetRoundedCornerRadius(kCornerRadius);
 }
 
 }  // namespace input_overlay
diff --git a/chrome/browser/ash/arc/input_overlay/ui/message_view.h b/chrome/browser/ash/arc/input_overlay/ui/message_view.h
index 438c4ca..06c0f83 100644
--- a/chrome/browser/ash/arc/input_overlay/ui/message_view.h
+++ b/chrome/browser/ash/arc/input_overlay/ui/message_view.h
@@ -5,6 +5,7 @@
 #ifndef CHROME_BROWSER_ASH_ARC_INPUT_OVERLAY_UI_MESSAGE_VIEW_H_
 #define CHROME_BROWSER_ASH_ARC_INPUT_OVERLAY_UI_MESSAGE_VIEW_H_
 
+#include "ash/public/cpp/view_shadow.h"
 #include "base/memory/raw_ptr.h"
 #include "chrome/browser/ash/arc/input_overlay/ui/action_view.h"
 #include "ui/views/controls/label.h"
@@ -13,22 +14,28 @@
 namespace input_overlay {
 class DisplayOverlayController;
 
-// MessageView shows when the input for editing key binding is invalid. It shows
-// near the focused ActionView.
-class MessageView : public views::Label {
+// MessageView shows info or error message on the top center of the window.
+class MessageView : public views::LabelButton {
  public:
+  static MessageView* Show(DisplayOverlayController* controller,
+                           views::View* parent,
+                           const base::StringPiece& message,
+                           MessageType message_type);
+
   MessageView(DisplayOverlayController* controller,
-              ActionView* view,
-              base::StringPiece text);
+              const gfx::Size& parent_size,
+              const base::StringPiece& message,
+              MessageType message_type);
   MessageView(const MessageView&) = delete;
   MessageView& operator=(const MessageView&) = delete;
   ~MessageView() override;
 
-  // views::View:
-  gfx::Size CalculatePreferredSize() const override;
-
  private:
+  void AddShadow();
+
   const raw_ptr<DisplayOverlayController> display_overlay_controller_ = nullptr;
+  // View shadow for this view.
+  std::unique_ptr<ash::ViewShadow> view_shadow_;
 };
 
 }  // namespace input_overlay
diff --git a/chrome/browser/ash/file_manager/file_tasks_browsertest.cc b/chrome/browser/ash/file_manager/file_tasks_browsertest.cc
index 4fca832..6470f43 100644
--- a/chrome/browser/ash/file_manager/file_tasks_browsertest.cc
+++ b/chrome/browser/ash/file_manager/file_tasks_browsertest.cc
@@ -359,21 +359,10 @@
 // Check that QuickOffice has a handler installed for common Office doc types.
 // This test only runs with the is_chrome_branded GN flag set because otherwise
 // QuickOffice is not installed.
-
-// TODO(https://crbug.com/1333360): Fix the flakiness.
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-#define MAYBE_QuickOffice DISABLED_QuickOffice
-#else
-#define MAYBE_QuickOffice QuickOffice
-#endif
-
-IN_PROC_BROWSER_TEST_P(FileTasksBrowserTest, MAYBE_QuickOffice) {
+IN_PROC_BROWSER_TEST_P(FileTasksBrowserTest, QuickOffice) {
   std::vector<Expectation> expectations = {
-      {"doc", extension_misc::kQuickOfficeComponentExtensionId,
-       "application/msword"},
-      {"docx", extension_misc::kQuickOfficeComponentExtensionId,
-       "application/"
-       "vnd.openxmlformats-officedocument.wordprocessingml.document"},
+      {"doc", extension_misc::kQuickOfficeComponentExtensionId},
+      {"docx", extension_misc::kQuickOfficeComponentExtensionId},
       {"ppt", extension_misc::kQuickOfficeComponentExtensionId,
        "application/vnd.ms-powerpoint"},
       {"pptx", extension_misc::kQuickOfficeComponentExtensionId,
diff --git a/chrome/browser/ash/login/consolidated_consent_field_trial.cc b/chrome/browser/ash/login/consolidated_consent_field_trial.cc
index bb4ec22..6d0733f 100644
--- a/chrome/browser/ash/login/consolidated_consent_field_trial.cc
+++ b/chrome/browser/ash/login/consolidated_consent_field_trial.cc
@@ -13,7 +13,6 @@
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
 #include "components/variations/variations_associated_data.h"
-#include "components/version_info/version_info.h"
 
 namespace ash::consolidated_consent_field_trial {
 
@@ -88,15 +87,19 @@
 
 }  // namespace
 
+// Experiment is currently disabled on all channels due to a bug. Storing the
+// pref before the experiment is enabled would cause a skew when this experiment
+// is rolled out as existing clients would be in the |kDisabled| group.
+bool ShouldEnableTrial(version_info::Channel channel) {
+  return false;
+}
+
 void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
   registry->RegisterStringPref(kTrialGroupPrefName, std::string());
 }
 
 void Create(base::FeatureList* feature_list, PrefService* local_state) {
-  // Experiment is currently disabled on STABLE channel. Storing the pref would
-  // cause a skew in STABLE when this experiment is rolled out to stable channel
-  // as existing clients would be in the |kDisabled| group.
-  if (chrome::GetChannel() == version_info::Channel::STABLE)
+  if (!ShouldEnableTrial(chrome::GetChannel()))
     return;
 
   // Load the trial group from local state. Groups should be consistent once
diff --git a/chrome/browser/ash/login/consolidated_consent_field_trial.h b/chrome/browser/ash/login/consolidated_consent_field_trial.h
index 9004965..202e057 100644
--- a/chrome/browser/ash/login/consolidated_consent_field_trial.h
+++ b/chrome/browser/ash/login/consolidated_consent_field_trial.h
@@ -8,6 +8,7 @@
 #include "base/feature_list.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
+#include "components/version_info/version_info.h"
 
 namespace ash::consolidated_consent_field_trial {
 
@@ -44,6 +45,9 @@
 // The rollout plan for this feature is 50% for dev/beta.
 void Create(base::FeatureList* feature_list, PrefService* local_state);
 
+// Whether trial should be enabled or not.
+bool ShouldEnableTrial(version_info::Channel channel);
+
 }  // namespace ash::consolidated_consent_field_trial
 
 #endif  // CHROME_BROWSER_ASH_LOGIN_CONSOLIDATED_CONSENT_FIELD_TRIAL_H_
diff --git a/chrome/browser/ash/login/consolidated_consent_field_trial_unittest.cc b/chrome/browser/ash/login/consolidated_consent_field_trial_unittest.cc
index 39468ff..60555d7 100644
--- a/chrome/browser/ash/login/consolidated_consent_field_trial_unittest.cc
+++ b/chrome/browser/ash/login/consolidated_consent_field_trial_unittest.cc
@@ -44,9 +44,8 @@
   const std::string expected_pref_value =
       local_state()->GetString(kTrialGroupPrefName);
 
-  // Experiment should not be active on STABLE channel. This check is here in
-  // case there are any test that run in the stable channel.
-  if (chrome::GetChannel() != version_info::Channel::STABLE) {
+  // This check is here in case experiment is disabled.
+  if (ShouldEnableTrial(chrome::GetChannel())) {
     EXPECT_TRUE(expected_pref_value == kEnabledGroup ||
                 expected_pref_value == kDisabledGroup);
 
@@ -82,9 +81,8 @@
   local_state()->SetString(kTrialGroupPrefName, group_name);
   Create(&feature_list, local_state());
 
-  // Experiment should not be active on STABLE channel. This check is here in
-  // case there are any test that run in the stable channel.
-  if (chrome::GetChannel() != version_info::Channel::STABLE) {
+  // This check is here in case experiment is disabled.
+  if (ShouldEnableTrial(chrome::GetChannel())) {
     // Pref should not change.
     const std::string expected_pref_value =
         local_state()->GetString(kTrialGroupPrefName);
diff --git a/chrome/browser/ash/login/session/user_session_manager.cc b/chrome/browser/ash/login/session/user_session_manager.cc
index a31d2c19..c03fe0088f 100644
--- a/chrome/browser/ash/login/session/user_session_manager.cc
+++ b/chrome/browser/ash/login/session/user_session_manager.cc
@@ -503,6 +503,11 @@
   return false;
 }
 
+void RecordKnownUser(const AccountId& account_id) {
+  user_manager::KnownUser known_user(g_browser_process->local_state());
+  known_user.SaveKnownUser(account_id);
+}
+
 }  // namespace
 
 UserSessionManagerDelegate::~UserSessionManagerDelegate() {}
@@ -682,7 +687,7 @@
                    ash::features::kUseAuthsessionAuthentication)) {
       authenticator_ = new AuthSessionAuthenticator(
           consumer, std::make_unique<ChromeSafeModeDelegate>(),
-          IsEphemeralMountForced());
+          base::BindRepeating(&RecordKnownUser), IsEphemeralMountForced());
     } else {
       authenticator_ =
           base::MakeRefCounted<ChromeCryptohomeAuthenticator>(consumer);
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 36f7799..d8f9ee2 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
@@ -1348,6 +1348,73 @@
   helper_->ChangeConfidentiality(web_contents, kEmptyRestrictionSet);
 }
 
+// Tests that a paused screen share is resumed when the user navigates to
+// content that's under warn restriction, but has already allowed sharing it.
+IN_PROC_BROWSER_TEST_F(DlpContentManagerAshScreenShareBrowserTest,
+                       ScreenShareResumedWhenNavigatingToBypassedContent) {
+  SetupReporting();
+  NotificationDisplayServiceTester display_service_tester(browser()->profile());
+  ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GURL(kExampleUrl)));
+  content::WebContents* web_contents =
+      browser()->tab_strip_model()->GetActiveWebContents();
+  MaybeStartFullScreenShare(web_contents, /*expect_allowed=*/true,
+                            /*expect_warning=*/false);
+  // Nothing is emitted yet since there's no restrictions on web_contents.
+  ASSERT_EQ(events_.size(), 0);
+  VerifyHistogramCounts(/*blocked_count=*/0,
+                        /*warned_count=*/0,
+                        /*total_count=*/1,
+                        /*blocked_suffix=*/dlp::kScreenShareBlockedUMA,
+                        /*warned_suffix=*/dlp::kScreenShareWarnedUMA);
+
+  testing::InSequence s;
+  EXPECT_CALL(state_change_cb_,
+              Run(testing::_, blink::mojom::MediaStreamStateChange::PAUSE))
+      .Times(1);
+  EXPECT_CALL(state_change_cb_,
+              Run(testing::_, blink::mojom::MediaStreamStateChange::PLAY))
+      .Times(1);
+  EXPECT_CALL(stop_cb_, Run).Times(0);
+
+  helper_->ChangeConfidentiality(web_contents, kScreenShareWarned);
+  VerifyHistogramCounts(/*blocked_count=*/0,
+                        /*warned_count=*/1,
+                        /*total_count=*/2,
+                        /*blocked_suffix=*/dlp::kScreenShareBlockedUMA,
+                        /*warned_suffix=*/dlp::kScreenShareWarnedUMA);
+  DismissDialog(/*expect_allowed=*/true);
+
+  EXPECT_CALL(state_change_cb_,
+              Run(testing::_, blink::mojom::MediaStreamStateChange::PAUSE))
+      .Times(1);
+  EXPECT_CALL(state_change_cb_,
+              Run(testing::_, blink::mojom::MediaStreamStateChange::PLAY))
+      .Times(1);
+  helper_->ChangeConfidentiality(web_contents, kScreenShareRestricted);
+  EXPECT_TRUE(
+      display_service_tester.GetNotification(kScreenSharePausedNotificationId)
+          .has_value());
+  VerifyHistogramCounts(/*blocked_count=*/1,
+                        /*warned_count=*/1,
+                        /*total_count=*/3,
+                        /*blocked_suffix=*/dlp::kScreenShareBlockedUMA,
+                        /*warned_suffix=*/dlp::kScreenShareWarnedUMA);
+
+  helper_->ChangeConfidentiality(web_contents, kScreenShareWarned);
+  VerifyHistogramCounts(/*blocked_count=*/1,
+                        /*warned_count=*/2,
+                        /*total_count=*/4,
+                        /*blocked_suffix=*/dlp::kScreenShareBlockedUMA,
+                        /*warned_suffix=*/dlp::kScreenShareWarnedUMA);
+
+  histogram_tester_.ExpectBucketCount(
+      GetDlpHistogramPrefix() + dlp::kScreenShareWarnProceededUMA, true, 1);
+  histogram_tester_.ExpectBucketCount(
+      GetDlpHistogramPrefix() + dlp::kScreenShareWarnProceededUMA, false, 0);
+
+  helper_->ChangeConfidentiality(web_contents, kEmptyRestrictionSet);
+}
+
 IN_PROC_BROWSER_TEST_F(DlpContentManagerAshScreenShareBrowserTest,
                        ContentsUpdatedOnWebContentsTitleChanged) {
   SetupReporting();
@@ -1388,6 +1455,9 @@
   EXPECT_EQ(actual_contents.size(), 1);
   EXPECT_EQ(actual_contents.begin()->title, u"example.com");
 
+  // Another check should be ignored if contents don't change.
+  helper_->ChangeConfidentiality(web_contents, kScreenShareWarned);
+
   // Change the title.
   EXPECT_TRUE(content::ExecJs(web_contents,
                               R"(
@@ -1590,6 +1660,27 @@
       kScreenShareBlockedNotificationId));
 }
 
+IN_PROC_BROWSER_TEST_F(DlpContentManagerAshScreenShareBrowserTest,
+                       ScreenShareWithoutLabelNotReported) {
+  SetupReporting();
+  const GURL origin(kExampleUrl);
+  NotificationDisplayServiceTester display_service_tester(browser()->profile());
+  ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), origin));
+  content::WebContents* web_contents =
+      browser()->tab_strip_model()->GetActiveWebContents();
+
+  const content::DesktopMediaID media_id(content::DesktopMediaID::TYPE_SCREEN,
+                                         content::DesktopMediaID::kFakeId);
+  DlpContentManagerAsh* manager =
+      static_cast<DlpContentManagerAsh*>(helper_->GetContentManager());
+  manager->OnScreenShareStarted("", {media_id}, kApplicationTitle,
+                                stop_cb_.Get(), state_change_cb_.Get(),
+                                source_cb_.Get());
+
+  helper_->ChangeConfidentiality(web_contents, kScreenShareReported);
+  ASSERT_TRUE(events_.empty());
+}
+
 // TODO(crbug.com/1319941): Enable after fixing.
 IN_PROC_BROWSER_TEST_F(DlpContentManagerAshScreenShareBrowserTest,
                        DISABLED_NavigateWebContents) {
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
index 0d35f4d..b074d445 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
@@ -993,7 +993,7 @@
       const std::string& user_agent,
       const std::string& group,
       const std::string& type,
-      std::unique_ptr<const base::Value> body,
+      base::Value::Dict body,
       int depth) override {
     NOTREACHED();
   }
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 78e12c78..15fbb5b 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -586,6 +586,274 @@
   ]
 
   sources = [
+    "../ash/dbus/ash_dbus_helper.cc",
+    "../ash/dbus/ash_dbus_helper.h",
+    "../ash/dbus/chrome_features_service_provider.cc",
+    "../ash/dbus/chrome_features_service_provider.h",
+    "../ash/dbus/component_updater_service_provider.cc",
+    "../ash/dbus/component_updater_service_provider.h",
+    "../ash/dbus/cryptohome_key_delegate_service_provider.cc",
+    "../ash/dbus/cryptohome_key_delegate_service_provider.h",
+    "../ash/dbus/dlp_files_policy_service_provider.cc",
+    "../ash/dbus/dlp_files_policy_service_provider.h",
+    "../ash/dbus/drive_file_stream_service_provider.cc",
+    "../ash/dbus/drive_file_stream_service_provider.h",
+    "../ash/dbus/encrypted_reporting_service_provider.cc",
+    "../ash/dbus/encrypted_reporting_service_provider.h",
+    "../ash/dbus/fusebox_service_provider.cc",
+    "../ash/dbus/fusebox_service_provider.h",
+    "../ash/dbus/kiosk_info_service_provider.cc",
+    "../ash/dbus/kiosk_info_service_provider.h",
+    "../ash/dbus/libvda_service_provider.cc",
+    "../ash/dbus/libvda_service_provider.h",
+    "../ash/dbus/lock_to_single_user_service_provider.cc",
+    "../ash/dbus/lock_to_single_user_service_provider.h",
+    "../ash/dbus/machine_learning_decision_service_provider.cc",
+    "../ash/dbus/machine_learning_decision_service_provider.h",
+    "../ash/dbus/metrics_event_service_provider.cc",
+    "../ash/dbus/metrics_event_service_provider.h",
+    "../ash/dbus/mojo_connection_service_provider.cc",
+    "../ash/dbus/mojo_connection_service_provider.h",
+    "../ash/dbus/printers_service_provider.cc",
+    "../ash/dbus/printers_service_provider.h",
+    "../ash/dbus/proxy_resolution_service_provider.cc",
+    "../ash/dbus/proxy_resolution_service_provider.h",
+    "../ash/dbus/screen_lock_service_provider.cc",
+    "../ash/dbus/screen_lock_service_provider.h",
+    "../ash/dbus/smb_fs_service_provider.cc",
+    "../ash/dbus/smb_fs_service_provider.h",
+    "../ash/dbus/virtual_file_request_service_provider.cc",
+    "../ash/dbus/virtual_file_request_service_provider.h",
+    "../ash/dbus/vm/plugin_vm_service_provider.cc",
+    "../ash/dbus/vm/plugin_vm_service_provider.h",
+    "../ash/dbus/vm/vm_applications_service_provider.cc",
+    "../ash/dbus/vm/vm_applications_service_provider.h",
+    "../ash/dbus/vm/vm_disk_management_service_provider.cc",
+    "../ash/dbus/vm/vm_disk_management_service_provider.h",
+    "../ash/dbus/vm/vm_launch_service_provider.cc",
+    "../ash/dbus/vm/vm_launch_service_provider.h",
+    "../ash/dbus/vm/vm_permission_service_provider.cc",
+    "../ash/dbus/vm/vm_permission_service_provider.h",
+    "../ash/dbus/vm/vm_sk_forwarding_service_provider.cc",
+    "../ash/dbus/vm/vm_sk_forwarding_service_provider.h",
+    "../ash/device_name/device_name_applier.h",
+    "../ash/device_name/device_name_applier_impl.cc",
+    "../ash/device_name/device_name_applier_impl.h",
+    "../ash/device_name/device_name_store.cc",
+    "../ash/device_name/device_name_store.h",
+    "../ash/device_name/device_name_store_impl.cc",
+    "../ash/device_name/device_name_store_impl.h",
+    "../ash/device_name/device_name_validator.cc",
+    "../ash/device_name/device_name_validator.h",
+    "../ash/device_sync/device_sync_client_factory.cc",
+    "../ash/device_sync/device_sync_client_factory.h",
+    "../ash/diagnostics/diagnostics_browser_delegate_impl.cc",
+    "../ash/diagnostics/diagnostics_browser_delegate_impl.h",
+    "../ash/display/quirks_manager_delegate_impl.cc",
+    "../ash/display/quirks_manager_delegate_impl.h",
+    "../ash/drive/drive_integration_service.cc",
+    "../ash/drive/drive_integration_service.h",
+    "../ash/drive/drivefs_native_message_host.cc",
+    "../ash/drive/drivefs_native_message_host.h",
+    "../ash/drive/file_system_util.cc",
+    "../ash/drive/file_system_util.h",
+    "../ash/drive/fileapi/drivefs_async_file_util.cc",
+    "../ash/drive/fileapi/drivefs_async_file_util.h",
+    "../ash/drive/fileapi/drivefs_file_system_backend_delegate.cc",
+    "../ash/drive/fileapi/drivefs_file_system_backend_delegate.h",
+    "../ash/eche_app/app_id.h",
+    "../ash/eche_app/eche_app_manager_factory.cc",
+    "../ash/eche_app/eche_app_manager_factory.h",
+    "../ash/eche_app/eche_app_notification_controller.cc",
+    "../ash/eche_app/eche_app_notification_controller.h",
+    "../ash/enhanced_network_tts/enhanced_network_tts_constants.cc",
+    "../ash/enhanced_network_tts/enhanced_network_tts_constants.h",
+    "../ash/enhanced_network_tts/enhanced_network_tts_impl.cc",
+    "../ash/enhanced_network_tts/enhanced_network_tts_impl.h",
+    "../ash/enhanced_network_tts/enhanced_network_tts_utils.cc",
+    "../ash/enhanced_network_tts/enhanced_network_tts_utils.h",
+    "../ash/eol_notification.cc",
+    "../ash/eol_notification.h",
+    "../ash/events/event_rewriter_delegate_impl.cc",
+    "../ash/events/event_rewriter_delegate_impl.h",
+    "../ash/exo/chrome_data_exchange_delegate.cc",
+    "../ash/exo/chrome_data_exchange_delegate.h",
+    "../ash/external_metrics.cc",
+    "../ash/external_metrics.h",
+    "../ash/external_protocol_dialog.cc",
+    "../ash/external_protocol_dialog.h",
+    "../ash/file_manager/app_id.h",
+    "../ash/file_manager/app_service_file_tasks.cc",
+    "../ash/file_manager/app_service_file_tasks.h",
+    "../ash/file_manager/arc_file_tasks.cc",
+    "../ash/file_manager/arc_file_tasks.h",
+    "../ash/file_manager/copy_or_move_io_task.cc",
+    "../ash/file_manager/copy_or_move_io_task.h",
+    "../ash/file_manager/delete_io_task.cc",
+    "../ash/file_manager/delete_io_task.h",
+    "../ash/file_manager/documents_provider_root_manager.cc",
+    "../ash/file_manager/documents_provider_root_manager.h",
+    "../ash/file_manager/extract_io_task.cc",
+    "../ash/file_manager/extract_io_task.h",
+    "../ash/file_manager/file_browser_handlers.cc",
+    "../ash/file_manager/file_browser_handlers.h",
+    "../ash/file_manager/file_manager_copy_or_move_hook_delegate.cc",
+    "../ash/file_manager/file_manager_copy_or_move_hook_delegate.h",
+    "../ash/file_manager/file_manager_string_util.cc",
+    "../ash/file_manager/file_manager_string_util.h",
+    "../ash/file_manager/file_tasks.cc",
+    "../ash/file_manager/file_tasks.h",
+    "../ash/file_manager/file_tasks_notifier.cc",
+    "../ash/file_manager/file_tasks_notifier.h",
+    "../ash/file_manager/file_tasks_notifier_factory.cc",
+    "../ash/file_manager/file_tasks_notifier_factory.h",
+    "../ash/file_manager/file_tasks_observer.h",
+    "../ash/file_manager/file_watcher.cc",
+    "../ash/file_manager/file_watcher.h",
+    "../ash/file_manager/fileapi_util.cc",
+    "../ash/file_manager/fileapi_util.h",
+    "../ash/file_manager/filesystem_api_util.cc",
+    "../ash/file_manager/filesystem_api_util.h",
+    "../ash/file_manager/fusebox_mounter.cc",
+    "../ash/file_manager/fusebox_mounter.h",
+    "../ash/file_manager/guest_os_file_tasks.cc",
+    "../ash/file_manager/guest_os_file_tasks.h",
+    "../ash/file_manager/io_task.cc",
+    "../ash/file_manager/io_task.h",
+    "../ash/file_manager/io_task_controller.cc",
+    "../ash/file_manager/io_task_controller.h",
+    "../ash/file_manager/io_task_util.cc",
+    "../ash/file_manager/io_task_util.h",
+    "../ash/file_manager/open_util.cc",
+    "../ash/file_manager/open_util.h",
+    "../ash/file_manager/open_with_browser.cc",
+    "../ash/file_manager/open_with_browser.h",
+    "../ash/file_manager/path_util.cc",
+    "../ash/file_manager/path_util.h",
+    "../ash/file_manager/prefs_migration_uma.h",
+    "../ash/file_manager/restore_io_task.cc",
+    "../ash/file_manager/restore_io_task.h",
+    "../ash/file_manager/select_file_dialog_util.cc",
+    "../ash/file_manager/select_file_dialog_util.h",
+    "../ash/file_manager/snapshot_manager.cc",
+    "../ash/file_manager/snapshot_manager.h",
+    "../ash/file_manager/speedometer.cc",
+    "../ash/file_manager/speedometer.h",
+    "../ash/file_manager/trash_io_task.cc",
+    "../ash/file_manager/trash_io_task.h",
+    "../ash/file_manager/url_util.cc",
+    "../ash/file_manager/url_util.h",
+    "../ash/file_manager/volume_manager.cc",
+    "../ash/file_manager/volume_manager.h",
+    "../ash/file_manager/volume_manager_factory.cc",
+    "../ash/file_manager/volume_manager_factory.h",
+    "../ash/file_manager/volume_manager_observer.h",
+    "../ash/file_manager/zip_io_task.cc",
+    "../ash/file_manager/zip_io_task.h",
+    "../ash/file_system_provider/abort_callback.h",
+    "../ash/file_system_provider/extension_provider.cc",
+    "../ash/file_system_provider/extension_provider.h",
+    "../ash/file_system_provider/fileapi/backend_delegate.cc",
+    "../ash/file_system_provider/fileapi/backend_delegate.h",
+    "../ash/file_system_provider/fileapi/buffering_file_stream_reader.cc",
+    "../ash/file_system_provider/fileapi/buffering_file_stream_reader.h",
+    "../ash/file_system_provider/fileapi/buffering_file_stream_writer.cc",
+    "../ash/file_system_provider/fileapi/buffering_file_stream_writer.h",
+    "../ash/file_system_provider/fileapi/file_stream_reader.cc",
+    "../ash/file_system_provider/fileapi/file_stream_reader.h",
+    "../ash/file_system_provider/fileapi/file_stream_writer.cc",
+    "../ash/file_system_provider/fileapi/file_stream_writer.h",
+    "../ash/file_system_provider/fileapi/provider_async_file_util.cc",
+    "../ash/file_system_provider/fileapi/provider_async_file_util.h",
+    "../ash/file_system_provider/fileapi/watcher_manager.cc",
+    "../ash/file_system_provider/fileapi/watcher_manager.h",
+    "../ash/file_system_provider/icon_set.cc",
+    "../ash/file_system_provider/icon_set.h",
+    "../ash/file_system_provider/mount_path_util.cc",
+    "../ash/file_system_provider/mount_path_util.h",
+    "../ash/file_system_provider/notification_manager.cc",
+    "../ash/file_system_provider/notification_manager.h",
+    "../ash/file_system_provider/notification_manager_interface.h",
+    "../ash/file_system_provider/observer.h",
+    "../ash/file_system_provider/operations/abort.cc",
+    "../ash/file_system_provider/operations/abort.h",
+    "../ash/file_system_provider/operations/add_watcher.cc",
+    "../ash/file_system_provider/operations/add_watcher.h",
+    "../ash/file_system_provider/operations/close_file.cc",
+    "../ash/file_system_provider/operations/close_file.h",
+    "../ash/file_system_provider/operations/configure.cc",
+    "../ash/file_system_provider/operations/configure.h",
+    "../ash/file_system_provider/operations/copy_entry.cc",
+    "../ash/file_system_provider/operations/copy_entry.h",
+    "../ash/file_system_provider/operations/create_directory.cc",
+    "../ash/file_system_provider/operations/create_directory.h",
+    "../ash/file_system_provider/operations/create_file.cc",
+    "../ash/file_system_provider/operations/create_file.h",
+    "../ash/file_system_provider/operations/delete_entry.cc",
+    "../ash/file_system_provider/operations/delete_entry.h",
+    "../ash/file_system_provider/operations/execute_action.cc",
+    "../ash/file_system_provider/operations/execute_action.h",
+    "../ash/file_system_provider/operations/get_actions.cc",
+    "../ash/file_system_provider/operations/get_actions.h",
+    "../ash/file_system_provider/operations/get_metadata.cc",
+    "../ash/file_system_provider/operations/get_metadata.h",
+    "../ash/file_system_provider/operations/move_entry.cc",
+    "../ash/file_system_provider/operations/move_entry.h",
+    "../ash/file_system_provider/operations/open_file.cc",
+    "../ash/file_system_provider/operations/open_file.h",
+    "../ash/file_system_provider/operations/operation.cc",
+    "../ash/file_system_provider/operations/operation.h",
+    "../ash/file_system_provider/operations/read_directory.cc",
+    "../ash/file_system_provider/operations/read_directory.h",
+    "../ash/file_system_provider/operations/read_file.cc",
+    "../ash/file_system_provider/operations/read_file.h",
+    "../ash/file_system_provider/operations/remove_watcher.cc",
+    "../ash/file_system_provider/operations/remove_watcher.h",
+    "../ash/file_system_provider/operations/truncate.cc",
+    "../ash/file_system_provider/operations/truncate.h",
+    "../ash/file_system_provider/operations/unmount.cc",
+    "../ash/file_system_provider/operations/unmount.h",
+    "../ash/file_system_provider/operations/write_file.cc",
+    "../ash/file_system_provider/operations/write_file.h",
+    "../ash/file_system_provider/provided_file_system.cc",
+    "../ash/file_system_provider/provided_file_system.h",
+    "../ash/file_system_provider/provided_file_system_info.cc",
+    "../ash/file_system_provider/provided_file_system_info.h",
+    "../ash/file_system_provider/provided_file_system_interface.cc",
+    "../ash/file_system_provider/provided_file_system_interface.h",
+    "../ash/file_system_provider/provided_file_system_observer.cc",
+    "../ash/file_system_provider/provided_file_system_observer.h",
+    "../ash/file_system_provider/provider_interface.h",
+    "../ash/file_system_provider/queue.cc",
+    "../ash/file_system_provider/queue.h",
+    "../ash/file_system_provider/registry.cc",
+    "../ash/file_system_provider/registry.h",
+    "../ash/file_system_provider/registry_interface.cc",
+    "../ash/file_system_provider/registry_interface.h",
+    "../ash/file_system_provider/request_manager.cc",
+    "../ash/file_system_provider/request_manager.h",
+    "../ash/file_system_provider/request_value.cc",
+    "../ash/file_system_provider/request_value.h",
+    "../ash/file_system_provider/scoped_file_opener.cc",
+    "../ash/file_system_provider/scoped_file_opener.h",
+    "../ash/file_system_provider/service.cc",
+    "../ash/file_system_provider/service.h",
+    "../ash/file_system_provider/service_factory.cc",
+    "../ash/file_system_provider/service_factory.h",
+    "../ash/file_system_provider/throttled_file_system.cc",
+    "../ash/file_system_provider/throttled_file_system.h",
+    "../ash/file_system_provider/watcher.cc",
+    "../ash/file_system_provider/watcher.h",
+    "../ash/first_run/first_run.cc",
+    "../ash/first_run/first_run.h",
+    "../ash/floating_workspace/floating_workspace_service.cc",
+    "../ash/floating_workspace/floating_workspace_service.h",
+    "../ash/floating_workspace/floating_workspace_service_factory.cc",
+    "../ash/floating_workspace/floating_workspace_service_factory.h",
+    "../ash/floating_workspace/floating_workspace_util.cc",
+    "../ash/floating_workspace/floating_workspace_util.h",
+    "../ash/fusebox/fusebox_util.cc",
+    "../ash/fusebox/fusebox_util.h",
     "../ash/guest_os/guest_os_capabilities.cc",
     "../ash/guest_os/guest_os_capabilities.h",
     "../ash/guest_os/guest_os_diagnostics_builder.cc",
diff --git a/chrome/browser/chromeos/extensions/telemetry/api/BUILD.gn b/chrome/browser/chromeos/extensions/telemetry/api/BUILD.gn
index fda821c..52bbac4 100644
--- a/chrome/browser/chromeos/extensions/telemetry/api/BUILD.gn
+++ b/chrome/browser/chromeos/extensions/telemetry/api/BUILD.gn
@@ -37,8 +37,6 @@
     "//chrome/browser/ui",
     "//chrome/common/chromeos/extensions",
     "//chrome/common/chromeos/extensions/api",
-    "//components/security_state/content",
-    "//components/security_state/core",
     "//components/user_manager",
     "//content/public/browser",
     "//extensions/browser",
@@ -88,13 +86,10 @@
     "//chromeos/services/cros_healthd/public/cpp",
     "//chromeos/services/cros_healthd/public/mojom",
     "//components/user_manager",
-    "//content/test:test_support",
     "//extensions:test_support",
     "//extensions/browser",
     "//extensions/browser:test_support",
     "//extensions/common",
-    "//net",
-    "//net:test_support",
     "//url",
   ]
 }
diff --git a/chrome/browser/chromeos/extensions/telemetry/api/api_guard_delegate.cc b/chrome/browser/chromeos/extensions/telemetry/api/api_guard_delegate.cc
index 41e0ff24..af387f2 100644
--- a/chrome/browser/chromeos/extensions/telemetry/api/api_guard_delegate.cc
+++ b/chrome/browser/chromeos/extensions/telemetry/api/api_guard_delegate.cc
@@ -17,8 +17,6 @@
 #include "chrome/browser/ui/browser_list.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/common/chromeos/extensions/chromeos_system_extension_info.h"
-#include "components/security_state/content/content_utils.h"
-#include "components/security_state/core/security_state.h"
 #include "components/user_manager/user.h"
 #include "components/user_manager/user_manager.h"
 #include "content/public/browser/web_contents.h"
@@ -72,8 +70,8 @@
       return;
     }
 
-    if (!IsPwaUiOpenAndSecure(context, extension)) {
-      std::move(callback).Run("Companion PWA UI is not open or not secure");
+    if (!IsPwaUiOpen(context, extension)) {
+      std::move(callback).Run("Companion PWA UI is not open");
       return;
     }
 
@@ -99,8 +97,8 @@
     return user_manager::UserManager::Get()->IsCurrentUserOwner();
   }
 
-  bool IsPwaUiOpenAndSecure(content::BrowserContext* context,
-                            const extensions::Extension* extension) {
+  bool IsPwaUiOpen(content::BrowserContext* context,
+                   const extensions::Extension* extension) {
     Profile* profile = Profile::FromBrowserContext(context);
 
     const auto* externally_connectable_info =
@@ -118,13 +116,7 @@
             target_tab_strip->GetWebContentsAt(i);
         if (externally_connectable_info->matches.MatchesURL(
                 target_contents->GetLastCommittedURL())) {
-          // Ensure the PWA URL connection is secure (e.g. valid certificate).
-          const auto visible_security_state =
-              security_state::GetVisibleSecurityState(target_contents);
-          return security_state::GetSecurityLevel(
-                     *visible_security_state,
-                     /*used_policy_installed_certificate=*/false) ==
-                 security_state::SecurityLevel::SECURE;
+          return true;
         }
       }
     }
diff --git a/chrome/browser/chromeos/extensions/telemetry/api/api_guard_delegate_unittest.cc b/chrome/browser/chromeos/extensions/telemetry/api/api_guard_delegate_unittest.cc
index 2b527516c..272c9d8 100644
--- a/chrome/browser/chromeos/extensions/telemetry/api/api_guard_delegate_unittest.cc
+++ b/chrome/browser/chromeos/extensions/telemetry/api/api_guard_delegate_unittest.cc
@@ -16,16 +16,9 @@
 #include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "components/user_manager/scoped_user_manager.h"
 #include "components/user_manager/user.h"
-#include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/ssl_status.h"
 #include "extensions/common/extension.h"
 #include "extensions/common/extension_builder.h"
 #include "extensions/common/extension_urls.h"
-#include "net/base/net_errors.h"
-#include "net/cert/cert_status_flags.h"
-#include "net/cert/x509_certificate.h"
-#include "net/test/cert_test_util.h"
-#include "net/test/test_data_directory.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace chromeos {
@@ -48,7 +41,7 @@
 const std::vector<ExtensionInfoTestParams> kAllExtensionInfoTestParams{
     ExtensionInfoTestParams(
         /*extension_id=*/"gogonhoemckpdpadfnjnpgbjpbjnodgc",
-        /*pwa_page_url=*/"https://www.google.com",
+        /*pwa_page_url=*/"http://www.google.com",
         /*matches_origin=*/"*://www.google.com/*"),
     ExtensionInfoTestParams(
         /*extension_id=*/"alnedpmllcfpgldkagbfbjkloonjlfjb",
@@ -127,24 +120,6 @@
         hardware_info_delegate_factory_.get());
   }
 
-  void OpenPwaUrlAndSetCertificateWithStatus(net::CertStatus cert_status) {
-    const base::FilePath certs_dir = net::GetTestCertsDirectory();
-    scoped_refptr<net::X509Certificate> test_cert(
-        net::ImportCertFromFile(certs_dir, "ok_cert.pem"));
-    ASSERT_TRUE(test_cert);
-
-    // Open the PWA page url and set valid certificate to bypass the
-    // IsPwaUiOpenAndSecure() check.
-    AddTab(browser(), GURL(pwa_page_url()));
-
-    // AddTab() adds a new tab at index 0.
-    auto* web_contents = browser()->tab_strip_model()->GetWebContentsAt(0);
-    auto* entry = web_contents->GetController().GetVisibleEntry();
-    content::SSLStatus& ssl = entry->GetSSL();
-    ssl.certificate = test_cert;
-    ssl.cert_status = cert_status;
-  }
-
  private:
   void CreateExtension() {
     extension_ =
@@ -191,24 +166,12 @@
                                    future.GetCallback());
 
   ASSERT_TRUE(future.Wait());
-  EXPECT_EQ("Companion PWA UI is not open or not secure", future.Get());
-}
-
-TEST_P(ApiGuardDelegateTest, PwaIsOpenButNotSecure) {
-  OpenPwaUrlAndSetCertificateWithStatus(
-      /*cert_status=*/net::CERT_STATUS_INVALID);
-
-  auto api_guard_delegate = ApiGuardDelegate::Factory::Create();
-  base::test::TestFuture<std::string> future;
-  api_guard_delegate->CanAccessApi(profile(), extension(),
-                                   future.GetCallback());
-
-  ASSERT_TRUE(future.Wait());
-  EXPECT_EQ("Companion PWA UI is not open or not secure", future.Get());
+  EXPECT_EQ("Companion PWA UI is not open", future.Get());
 }
 
 TEST_P(ApiGuardDelegateTest, ManufacturerNotAllowed) {
-  OpenPwaUrlAndSetCertificateWithStatus(/*cert_status=*/net::OK);
+  // Open the PWA page url to bypass IsPwaUiOpen() check.
+  AddTab(browser(), GURL(pwa_page_url()));
 
   // Make sure device manufacturer is not allowed.
   SetDeviceManufacturer("GOOGLE");
@@ -224,7 +187,8 @@
 }
 
 TEST_P(ApiGuardDelegateTest, NoError) {
-  OpenPwaUrlAndSetCertificateWithStatus(/*cert_status=*/net::OK);
+  // Open the PWA page url to bypass IsPwaUiOpen() check.
+  AddTab(browser(), GURL(pwa_page_url()));
 
   auto api_guard_delegate = ApiGuardDelegate::Factory::Create();
   base::test::TestFuture<std::string> future;
@@ -282,30 +246,7 @@
                                    future.GetCallback());
 
   ASSERT_TRUE(future.Wait());
-  EXPECT_EQ("Companion PWA UI is not open or not secure", future.Get());
-}
-
-TEST_P(ApiGuardDelegateAffiliatedUserTest, PwaIsOpenButNotSecure) {
-  {
-    extensions::ExtensionManagementPrefUpdater<
-        sync_preferences::TestingPrefServiceSyncable>
-        updater(profile()->GetTestingPrefService());
-    // Make sure the extension is marked as force-installed.
-    updater.SetIndividualExtensionAutoInstalled(
-        extension_id(), extension_urls::kChromeWebstoreUpdateURL,
-        /*forced=*/true);
-  }
-
-  OpenPwaUrlAndSetCertificateWithStatus(
-      /*cert_status=*/net::CERT_STATUS_INVALID);
-
-  auto api_guard_delegate = ApiGuardDelegate::Factory::Create();
-  base::test::TestFuture<std::string> future;
-  api_guard_delegate->CanAccessApi(profile(), extension(),
-                                   future.GetCallback());
-
-  ASSERT_TRUE(future.Wait());
-  EXPECT_EQ("Companion PWA UI is not open or not secure", future.Get());
+  EXPECT_EQ("Companion PWA UI is not open", future.Get());
 }
 
 TEST_P(ApiGuardDelegateAffiliatedUserTest, ManufacturerNotAllowed) {
@@ -319,7 +260,8 @@
         /*forced=*/true);
   }
 
-  OpenPwaUrlAndSetCertificateWithStatus(/*cert_status=*/net::OK);
+  // Open the PWA page url to bypass IsPwaUiOpen() check.
+  AddTab(browser(), GURL(pwa_page_url()));
 
   // Make sure device manufacturer is not allowed.
   SetDeviceManufacturer("GOOGLE");
@@ -345,7 +287,8 @@
         /*forced=*/true);
   }
 
-  OpenPwaUrlAndSetCertificateWithStatus(/*cert_status=*/net::OK);
+  // Open the PWA page url to bypass IsPwaUiOpen() check.
+  AddTab(browser(), GURL(pwa_page_url()));
 
   auto api_guard_delegate = ApiGuardDelegate::Factory::Create();
   base::test::TestFuture<std::string> future;
diff --git a/chrome/browser/chromeos/extensions/telemetry/api/base_telemetry_extension_api_guard_function_browsertest.cc b/chrome/browser/chromeos/extensions/telemetry/api/base_telemetry_extension_api_guard_function_browsertest.cc
index 846f8cc..3c4e74e 100644
--- a/chrome/browser/chromeos/extensions/telemetry/api/base_telemetry_extension_api_guard_function_browsertest.cc
+++ b/chrome/browser/chromeos/extensions/telemetry/api/base_telemetry_extension_api_guard_function_browsertest.cc
@@ -17,11 +17,7 @@
 #include "components/user_manager/user.h"
 #include "components/user_manager/user_manager.h"
 #include "content/public/test/browser_test.h"
-#include "content/public/test/content_mock_cert_verifier.h"
-#include "net/base/net_errors.h"
-#include "net/cert/x509_certificate.h"
 #include "net/dns/mock_host_resolver.h"
-#include "net/test/embedded_test_server/embedded_test_server.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
@@ -298,9 +294,7 @@
     : public BaseTelemetryExtensionBrowserTest {
  public:
   TelemetryExtensionApiGuardRealDelegateBrowserTest()
-      : fake_hardware_info_delegate_factory_("HP"),
-        https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
-    https_server_.ServeFilesFromSourceDirectory(GetChromeTestDataDir());
+      : fake_hardware_info_delegate_factory_("HP") {
     // Make sure device manufacturer is allowlisted.
     HardwareInfoDelegate::Factory::SetForTesting(
         &fake_hardware_info_delegate_factory_);
@@ -313,12 +307,6 @@
       const TelemetryExtensionApiGuardRealDelegateBrowserTest&) = delete;
 
   // BaseTelemetryExtensionBrowserTest:
-  void SetUpCommandLine(base::CommandLine* command_line) override {
-    BaseTelemetryExtensionBrowserTest::SetUpCommandLine(command_line);
-
-    mock_cert_verifier_.SetUpCommandLine(command_line);
-  }
-
   void SetUpOnMainThread() override {
     // Skip BaseTelemetryExtensionBrowserTest::SetUpOnMainThread() as it sets up
     // a FakeApiGuardDelegate instance.
@@ -328,8 +316,6 @@
     user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>(
         std::make_unique<ash::FakeChromeUserManager>());
 
-    ASSERT_TRUE(https_server_.Start());
-
     // This is needed when navigating to a network URL (e.g.
     // ui_test_utils::NavigateToURL). Rules can only be added before
     // BrowserTestBase::InitializeNetworkProcess() is called because host
@@ -348,42 +334,14 @@
     BaseTelemetryExtensionBrowserTest::TearDownOnMainThread();
   }
 
-  void SetUpInProcessBrowserTestFixture() override {
-    BaseTelemetryExtensionBrowserTest::SetUpInProcessBrowserTestFixture();
-
-    mock_cert_verifier_.SetUpInProcessBrowserTestFixture();
-  }
-
-  void TearDownInProcessBrowserTestFixture() override {
-    mock_cert_verifier_.TearDownInProcessBrowserTestFixture();
-
-    BaseTelemetryExtensionBrowserTest::TearDownInProcessBrowserTestFixture();
-  }
-
-  content::ContentMockCertVerifier::CertVerifier* mock_cert_verifier() {
-    return mock_cert_verifier_.mock_cert_verifier();
-  }
-
-  void SetUpMockCertVerifierForHttpsServer() {
-    mock_cert_verifier()->set_default_result(net::OK);
-  }
-
  protected:
   ash::FakeChromeUserManager* GetFakeUserManager() const {
     return static_cast<ash::FakeChromeUserManager*>(
         user_manager::UserManager::Get());
   }
 
-  GURL GetPwaGURL() const { return https_server_.GetURL("/ssl/google.html"); }
-
-  // BaseTelemetryExtensionBrowserTest:
-  std::string pwa_page_url() const override { return GetPwaGURL().spec(); }
-  std::string matches_origin() const override { return GetPwaGURL().spec(); }
-
   FakeHardwareInfoDelegate::Factory fake_hardware_info_delegate_factory_;
   std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_;
-  net::EmbeddedTestServer https_server_;
-  content::ContentMockCertVerifier mock_cert_verifier_;
 };
 
 // Smoke test to verify that real ApiGuardDelegate works in prod.
@@ -397,13 +355,7 @@
   user_manager->SwitchActiveUser(account_id);
   user_manager->SetOwnerId(account_id);
 
-  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
-      chromeos::switches::kTelemetryExtensionPwaOriginOverrideForTesting,
-      pwa_page_url());
-
-  SetUpMockCertVerifierForHttpsServer();
-
-  // Make sure PWA UI is open and secure.
+  // Make sure PWA UI is open.
   auto* pwa_page_rfh =
       ui_test_utils::NavigateToURL(browser(), GURL(pwa_page_url()));
   ASSERT_TRUE(pwa_page_rfh);
diff --git a/chrome/browser/chromeos/extensions/telemetry/api/base_telemetry_extension_browser_test.h b/chrome/browser/chromeos/extensions/telemetry/api/base_telemetry_extension_browser_test.h
index 395a81c..cd98568 100644
--- a/chrome/browser/chromeos/extensions/telemetry/api/base_telemetry_extension_browser_test.h
+++ b/chrome/browser/chromeos/extensions/telemetry/api/base_telemetry_extension_browser_test.h
@@ -30,8 +30,8 @@
  protected:
   std::string extension_id() const;
   std::string public_key() const;
-  virtual std::string pwa_page_url() const;
-  virtual std::string matches_origin() const;
+  std::string pwa_page_url() const;
+  std::string matches_origin() const;
   void CreateExtensionAndRunServiceWorker(
       const std::string& service_worker_content);
   virtual std::string GetManifestFile(const std::string& matches_origin);
diff --git a/chrome/browser/chromeos/extensions/telemetry/api/telemetry_extension_capabilities_browser_test.cc b/chrome/browser/chromeos/extensions/telemetry/api/telemetry_extension_capabilities_browser_test.cc
index a1ace85..a238761 100644
--- a/chrome/browser/chromeos/extensions/telemetry/api/telemetry_extension_capabilities_browser_test.cc
+++ b/chrome/browser/chromeos/extensions/telemetry/api/telemetry_extension_capabilities_browser_test.cc
@@ -174,7 +174,7 @@
   const auto extension_info = GetChromeOSExtensionInfoForId(extension_id());
   EXPECT_EQ(kPwaOriginOverride, extension_info.pwa_origin);
 
-  // Open the PWA page url to bypass IsPwaUiOpenAndSecure() check.
+  // Open the PWA page url to bypass IsPwaUiOpen() check.
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GURL(kPwaPageUrl)));
 
   // Start listening on the extension.
diff --git a/chrome/browser/client_hints/client_hints_browsertest.cc b/chrome/browser/client_hints/client_hints_browsertest.cc
index d2091733..7a45f42 100644
--- a/chrome/browser/client_hints/client_hints_browsertest.cc
+++ b/chrome/browser/client_hints/client_hints_browsertest.cc
@@ -473,7 +473,7 @@
     feature_list->InitializeFromCommandLine(
         "UserAgentClientHint,CriticalClientHint,"
         "AcceptCHFrame,PrefersColorSchemeClientHintHeader,"
-        "ViewportHeightClientHintHeader,UserAgentClientHintFullVersionList",
+        "ViewportHeightClientHintHeader",
         "");
     return feature_list;
   }
@@ -1200,8 +1200,7 @@
     std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
     feature_list->InitializeFromCommandLine(
         "AllowClientHintsToThirdParty,UserAgentClientHint,"
-        "PrefersColorSchemeClientHintHeader,ViewportHeightClientHintHeader,"
-        "UserAgentClientHintFullVersionList",
+        "PrefersColorSchemeClientHintHeader,ViewportHeightClientHintHeader",
         "");
     return feature_list;
   }
@@ -3052,7 +3051,7 @@
     std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
     feature_list->InitializeFromCommandLine(
         "UserAgentClientHint,PrefersColorSchemeClientHintHeader,"
-        "ViewportHeightClientHintHeader,UserAgentClientHintFullVersionList",
+        "ViewportHeightClientHintHeader",
         "");
     feature_list->RegisterFieldTrialOverride(
         features::kNetworkQualityEstimatorWebHoldback.name,
@@ -3152,9 +3151,7 @@
     // Don't include PrefersColorSchemeClientHintHeader in the enabled
     // features; we will verify that PrefersColorScheme is not included.
     feature_list->InitializeFromCommandLine(
-        "UserAgentClientHint,CriticalClientHint,AcceptCHFrame,"
-        "UserAgentClientHintFullVersionList",
-        "");
+        "UserAgentClientHint,CriticalClientHint,AcceptCHFrame", "");
     scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
 
     InProcessBrowserTest::SetUp();
@@ -3567,8 +3564,7 @@
   ClientHintsBrowserTestWithEmulatedMedia()
       : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
     scoped_feature_list_.InitFromCommandLine(
-        "UserAgentClientHint,AcceptCHFrame,PrefersColorSchemeClientHintHeader,"
-        "UserAgentClientHintFullVersionList",
+        "UserAgentClientHint,AcceptCHFrame,PrefersColorSchemeClientHintHeader",
         "");
 
     https_server_.ServeFilesFromSourceDirectory(
diff --git a/chrome/browser/component_updater/registration.cc b/chrome/browser/component_updater/registration.cc
index 2d38bd2..58436a2 100644
--- a/chrome/browser/component_updater/registration.cc
+++ b/chrome/browser/component_updater/registration.cc
@@ -28,7 +28,6 @@
 #include "chrome/browser/component_updater/ssl_error_assistant_component_installer.h"
 #include "chrome/browser/component_updater/subresource_filter_component_installer.h"
 #include "chrome/browser/component_updater/trust_token_key_commitments_component_installer.h"
-#include "chrome/browser/component_updater/url_param_classification_component_installer.h"
 #include "chrome/common/buildflags.h"
 #include "chrome/common/chrome_paths.h"
 #include "components/component_updater/component_updater_service.h"
@@ -37,6 +36,7 @@
 #include "components/component_updater/installer_policies/on_device_head_suggest_component_installer.h"
 #include "components/component_updater/installer_policies/optimization_hints_component_installer.h"
 #include "components/component_updater/installer_policies/safety_tips_component_installer.h"
+#include "components/component_updater/installer_policies/url_param_classification_component_installer.h"
 #include "components/nacl/common/buildflags.h"
 #include "components/services/screen_ai/buildflags/buildflags.h"
 #include "device/vr/buildflags/buildflags.h"
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc b/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc
index 5d6b53a0..fcd63f8 100644
--- a/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc
+++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc
@@ -34,7 +34,6 @@
 #include "components/password_manager/content/browser/password_change_success_tracker_factory.h"
 #include "components/password_manager/core/browser/android_affiliation/affiliation_utils.h"
 #include "components/password_manager/core/browser/bulk_leak_check_service.h"
-#include "components/password_manager/core/browser/insecure_credentials_table.h"
 #include "components/password_manager/core/browser/leak_detection/bulk_leak_check.h"
 #include "components/password_manager/core/browser/leak_detection/encryption_utils.h"
 #include "components/password_manager/core/browser/password_change_success_tracker.h"
@@ -43,7 +42,6 @@
 #include "components/password_manager/core/browser/ui/insecure_credentials_manager.h"
 #include "components/password_manager/core/browser/ui/saved_passwords_presenter.h"
 #include "components/password_manager/core/browser/well_known_change_password_util.h"
-#include "components/password_manager/core/common/password_manager_features.h"
 #include "components/password_manager/core/common/password_manager_pref_names.h"
 #include "components/prefs/pref_service.h"
 #include "components/url_formatter/elide_url.h"
@@ -58,8 +56,8 @@
 namespace {
 
 using password_manager::CanonicalizeUsername;
-using password_manager::CredentialWithPassword;
-using password_manager::InsecureCredentialTypeFlags;
+using password_manager::CredentialUIEntry;
+using password_manager::InsecureType;
 using password_manager::LeakCheckCredential;
 using password_manager::PasswordChangeSuccessTracker;
 using password_manager::PasswordForm;
@@ -181,46 +179,79 @@
       TimeFormat::FORMAT_ELAPSED, TimeFormat::LENGTH_LONG, elapsed_time, true));
 }
 
-// Helper struct that bundles a CredentialWithPassword with a corresponding
-// passwords_private::CompromiseType.
-struct CompromisedCredentialAndType {
-  CredentialWithPassword credential;
-  api::passwords_private::CompromiseType type;
-};
+base::Time GetTimeWhenWasPhishedOrLeaked(const CredentialUIEntry& entry) {
+  base::Time compromise_time;
+  if (entry.IsLeaked()) {
+    compromise_time =
+        entry.password_issues.at(InsecureType::kLeaked).create_time;
+  }
+  if (entry.IsPhished()) {
+    compromise_time =
+        std::max(compromise_time,
+                 entry.password_issues.at(InsecureType::kPhished).create_time);
+  }
+  return compromise_time;
+}
+
+api::passwords_private::CompromiseType GetCompromiseType(
+    const CredentialUIEntry& entry) {
+  if (entry.IsLeaked() && entry.IsPhished()) {
+    return api::passwords_private::COMPROMISE_TYPE_PHISHED_AND_LEAKED;
+  } else if (entry.IsLeaked()) {
+    return api::passwords_private::COMPROMISE_TYPE_LEAKED;
+  } else if (entry.IsPhished()) {
+    return api::passwords_private::COMPROMISE_TYPE_PHISHED;
+  }
+  NOTREACHED();
+  return api::passwords_private::COMPROMISE_TYPE_NONE;
+}
+
+bool IsCredentialMuted(const CredentialUIEntry& entry) {
+  if (!entry.IsLeaked() && !entry.IsPhished())
+    return false;
+
+  bool is_muted = true;
+  if (entry.IsLeaked()) {
+    is_muted &=
+        entry.password_issues.at(InsecureType::kLeaked).is_muted.value();
+  }
+  if (entry.IsPhished()) {
+    is_muted &=
+        entry.password_issues.at(InsecureType::kPhished).is_muted.value();
+  }
+  return is_muted;
+}
 
 // Orders |compromised_credentials| in such a way that phished credentials
 // precede leaked credentials, and that credentials of the same compromise type
 // are ordered by recency.
-std::vector<CompromisedCredentialAndType> OrderCompromisedCredentials(
-    std::vector<CredentialWithPassword> compromised_credentials) {
-  // Move all credentials into a single list, associating with the
-  // corresponding CompromiseType.
-  std::vector<CompromisedCredentialAndType> results;
-  results.reserve(compromised_credentials.size());
-  for (auto& credential : compromised_credentials) {
-    // Since CompromiseType does not contain information about weakness/reuse
-    // of credential, we need to unset those bits in the
-    // |credential.insecure_type|.
-    auto type = static_cast<api::passwords_private::CompromiseType>(
-        UnsetWeakAndReusedCredentialTypeFlags(credential.insecure_type));
-    results.push_back({std::move(credential), type});
-  }
+void OrderInsecureCredentials(std::vector<CredentialUIEntry>& credentials) {
   // Reordering phished credential to the beginning.
-  auto last_phished = std::partition(
-      results.begin(), results.end(), [](const auto& credential) {
-        return credential.type !=
-               api::passwords_private::COMPROMISE_TYPE_LEAKED;
-      });
+  auto non_phished = std::partition(
+      credentials.begin(), credentials.end(),
+      [](const auto& credential) { return credential.IsPhished(); });
 
   // By construction the phished credentials precede the leaked credentials in
   // |results|. Now sort both groups by their creation date so that most recent
   // compromises appear first in both lists.
-  auto create_time_cmp = [](const auto& lhs, const auto& rhs) {
-    return lhs.credential.create_time > rhs.credential.create_time;
+  auto create_time_cmp = [](auto& lhs, auto& rhs) {
+    return GetTimeWhenWasPhishedOrLeaked(lhs) >
+           GetTimeWhenWasPhishedOrLeaked(rhs);
   };
-  std::sort(results.begin(), last_phished, create_time_cmp);
-  std::sort(last_phished, results.end(), create_time_cmp);
-  return results;
+  std::sort(credentials.begin(), non_phished, create_time_cmp);
+  std::sort(non_phished, credentials.end(), create_time_cmp);
+}
+
+api::passwords_private::CompromisedInfo CreateCompromiseInfo(
+    const CredentialUIEntry& form) {
+  api::passwords_private::CompromisedInfo compromise_info;
+  compromise_info.compromise_time =
+      GetTimeWhenWasPhishedOrLeaked(form).ToJsTimeIgnoringNull();
+  compromise_info.elapsed_time_since_compromise =
+      FormatElapsedTime(GetTimeWhenWasPhishedOrLeaked(form));
+  compromise_info.compromise_type = GetCompromiseType(form);
+  compromise_info.is_muted = IsCredentialMuted(form);
+  return compromise_info;
 }
 
 }  // namespace
@@ -258,27 +289,19 @@
 
 std::vector<api::passwords_private::InsecureCredential>
 PasswordCheckDelegate::GetCompromisedCredentials() {
-  std::vector<CompromisedCredentialAndType>
-      ordered_compromised_credential_and_types = OrderCompromisedCredentials(
-          insecure_credentials_manager_.GetInsecureCredentials());
+  std::vector<CredentialUIEntry> ordered_credentials =
+      insecure_credentials_manager_.GetInsecureCredentialEntries();
+  OrderInsecureCredentials(ordered_credentials);
 
   std::vector<api::passwords_private::InsecureCredential>
       compromised_credentials;
-  compromised_credentials.reserve(
-      ordered_compromised_credential_and_types.size());
-  for (const auto& credential_and_type :
-       ordered_compromised_credential_and_types) {
-    const CredentialWithPassword& credential = credential_and_type.credential;
+  compromised_credentials.reserve(ordered_credentials.size());
+  for (const auto& credential : ordered_credentials) {
     api::passwords_private::InsecureCredential api_credential =
         ConstructInsecureCredential(credential);
     api_credential.compromised_info =
-        std::make_unique<api::passwords_private::CompromisedInfo>();
-    api_credential.compromised_info->compromise_time =
-        credential.create_time.ToJsTimeIgnoringNull();
-    api_credential.compromised_info->elapsed_time_since_compromise =
-        FormatElapsedTime(credential.create_time);
-    api_credential.compromised_info->compromise_type = credential_and_type.type;
-    api_credential.compromised_info->is_muted = credential.is_muted.value();
+        std::make_unique<api::passwords_private::CompromisedInfo>(
+            CreateCompromiseInfo(credential));
     compromised_credentials.push_back(std::move(api_credential));
   }
 
@@ -287,12 +310,12 @@
 
 std::vector<api::passwords_private::InsecureCredential>
 PasswordCheckDelegate::GetWeakCredentials() {
-  std::vector<CredentialWithPassword> weak_credentials =
-      insecure_credentials_manager_.GetWeakCredentials();
+  std::vector<CredentialUIEntry> weak_credentials =
+      insecure_credentials_manager_.GetWeakCredentialEntries();
 
   std::vector<api::passwords_private::InsecureCredential> api_credentials;
   api_credentials.reserve(weak_credentials.size());
-  for (const auto& weak_credential : weak_credentials) {
+  for (auto& weak_credential : weak_credentials) {
     api_credentials.push_back(ConstructInsecureCredential(weak_credential));
   }
 
@@ -302,60 +325,56 @@
 absl::optional<api::passwords_private::InsecureCredential>
 PasswordCheckDelegate::GetPlaintextInsecurePassword(
     api::passwords_private::InsecureCredential credential) const {
-  const CredentialWithPassword* insecure_credential =
-      FindMatchingInsecureCredential(credential);
-  if (!insecure_credential)
+  const CredentialUIEntry* entry = FindMatchingEntry(credential);
+  if (!entry)
     return absl::nullopt;
 
-  credential.password = std::make_unique<std::string>(
-      base::UTF16ToUTF8(insecure_credential->password));
+  credential.password =
+      std::make_unique<std::string>(base::UTF16ToUTF8(entry->password));
   return credential;
 }
 
 bool PasswordCheckDelegate::ChangeInsecureCredential(
     const api::passwords_private::InsecureCredential& credential,
     base::StringPiece new_password) {
-  // Try to obtain the original CredentialWithPassword. Return false if fails.
-  const CredentialWithPassword* insecure_credential =
-      FindMatchingInsecureCredential(credential);
-  if (!insecure_credential)
+  // Try to obtain the original CredentialUIEntry. Return false if fails.
+  const CredentialUIEntry* entry = FindMatchingEntry(credential);
+  if (!entry)
     return false;
 
-  return insecure_credentials_manager_.UpdateCredential(*insecure_credential,
-                                                        new_password);
+  CredentialUIEntry credential_to_edit = *entry;
+  credential_to_edit.password = base::UTF8ToUTF16(new_password);
+  return saved_passwords_presenter_->EditSavedCredentials(credential_to_edit);
 }
 
 bool PasswordCheckDelegate::RemoveInsecureCredential(
     const api::passwords_private::InsecureCredential& credential) {
-  // Try to obtain the original CredentialWithPassword. Return false if fails.
-  const CredentialWithPassword* insecure_credential =
-      FindMatchingInsecureCredential(credential);
-  if (!insecure_credential)
+  // Try to obtain the original CredentialUIEntry. Return false if fails.
+  const CredentialUIEntry* entry = FindMatchingEntry(credential);
+  if (!entry)
     return false;
 
-  return insecure_credentials_manager_.RemoveCredential(*insecure_credential);
+  return saved_passwords_presenter_->RemoveCredential(*entry);
 }
 
 bool PasswordCheckDelegate::MuteInsecureCredential(
     const api::passwords_private::InsecureCredential& credential) {
-  // Try to obtain the original CredentialWithPassword. Return false if fails.
-  const CredentialWithPassword* insecure_credential =
-      FindMatchingInsecureCredential(credential);
-  if (!insecure_credential)
+  // Try to obtain the original CredentialUIEntry. Return false if fails.
+  const CredentialUIEntry* entry = FindMatchingEntry(credential);
+  if (!entry)
     return false;
 
-  return insecure_credentials_manager_.MuteCredential(*insecure_credential);
+  return insecure_credentials_manager_.MuteCredential(*entry);
 }
 
 bool PasswordCheckDelegate::UnmuteInsecureCredential(
     const api::passwords_private::InsecureCredential& credential) {
-  // Try to obtain the original CredentialWithPassword. Return false if fails.
-  const CredentialWithPassword* insecure_credential =
-      FindMatchingInsecureCredential(credential);
-  if (!insecure_credential)
+  // Try to obtain the original CredentialUIEntry. Return false if fails.
+  const CredentialUIEntry* entry = FindMatchingEntry(credential);
+  if (!entry)
     return false;
 
-  return insecure_credentials_manager_.UnmuteCredential(*insecure_credential);
+  return insecure_credentials_manager_.UnmuteCredential(*entry);
 }
 
 // Records that a change password flow was started for |credential| and
@@ -439,8 +458,6 @@
   }
 
   State state = bulk_leak_check_service_adapter_.GetBulkLeakCheckState();
-  SavedPasswordsView saved_passwords =
-      saved_passwords_presenter_->GetSavedPasswords();
 
   // Handle the currently running case first, only then consider errors.
   if (state == State::kRunning) {
@@ -459,7 +476,7 @@
     return result;
   }
 
-  if (saved_passwords.empty()) {
+  if (saved_passwords_presenter_->GetSavedCredentials().empty()) {
     result.state = api::passwords_private::PASSWORD_CHECK_STATE_NO_PASSWORDS;
     return result;
   }
@@ -535,23 +552,21 @@
   }
 }
 
-const CredentialWithPassword*
-PasswordCheckDelegate::FindMatchingInsecureCredential(
+const CredentialUIEntry* PasswordCheckDelegate::FindMatchingEntry(
     const api::passwords_private::InsecureCredential& credential) const {
-  const CredentialWithPassword* insecure_credential =
+  const CredentialUIEntry* entry =
       insecure_credential_id_generator_.TryGetKey(credential.id);
-  if (!insecure_credential)
+  if (!entry)
     return nullptr;
 
-  if (credential.signon_realm != insecure_credential->signon_realm ||
-      credential.username != base::UTF16ToUTF8(insecure_credential->username) ||
+  if (credential.signon_realm != entry->signon_realm ||
+      credential.username != base::UTF16ToUTF8(entry->username) ||
       (credential.password &&
-       *credential.password !=
-           base::UTF16ToUTF8(insecure_credential->password))) {
+       *credential.password != base::UTF16ToUTF8(entry->password))) {
     return nullptr;
   }
 
-  return insecure_credential;
+  return entry;
 }
 
 void PasswordCheckDelegate::
@@ -589,22 +604,20 @@
 
 api::passwords_private::InsecureCredential
 PasswordCheckDelegate::ConstructInsecureCredential(
-    const CredentialWithPassword& credential) {
+    const CredentialUIEntry& entry) {
   api::passwords_private::InsecureCredential api_credential;
   auto facet = password_manager::FacetURI::FromPotentiallyInvalidSpec(
-      credential.signon_realm);
+      entry.signon_realm);
   if (facet.IsValidAndroidFacetURI()) {
     api_credential.is_android_credential = true;
     // |formatted_orgin|, |detailed_origin| and |change_password_url| need
     // special handling for Android. Here we use affiliation information
     // instead of the origin.
-    const PasswordForm& android_form =
-        insecure_credentials_manager_.GetSavedPasswordsFor(credential)[0];
-    if (!android_form.app_display_name.empty()) {
-      api_credential.formatted_origin = android_form.app_display_name;
-      api_credential.detailed_origin = android_form.app_display_name;
+    if (!entry.app_display_name.empty()) {
+      api_credential.formatted_origin = entry.app_display_name;
+      api_credential.detailed_origin = entry.app_display_name;
       api_credential.change_password_url =
-          GetChangePasswordUrl(GURL(android_form.affiliated_web_realm));
+          GetChangePasswordUrl(GURL(entry.affiliated_web_realm));
     } else {
       // In case no affiliation information could be obtained show the
       // formatted package name to the user. An empty change_password_url will
@@ -618,7 +631,7 @@
     api_credential.is_android_credential = false;
     api_credential.formatted_origin =
         base::UTF16ToUTF8(url_formatter::FormatUrl(
-            credential.url.DeprecatedGetOriginAsURL(),
+            entry.url.GetWithEmptyPath(),
             url_formatter::kFormatUrlOmitDefaults |
                 url_formatter::kFormatUrlOmitHTTPS |
                 url_formatter::kFormatUrlOmitTrivialSubdomains |
@@ -626,13 +639,13 @@
             base::UnescapeRule::SPACES, nullptr, nullptr, nullptr));
     api_credential.detailed_origin =
         base::UTF16ToUTF8(url_formatter::FormatUrlForSecurityDisplay(
-            credential.url.DeprecatedGetOriginAsURL()));
-    api_credential.change_password_url = GetChangePasswordUrl(credential.url);
+            entry.url.GetWithEmptyPath()));
+    api_credential.change_password_url = GetChangePasswordUrl(entry.url);
   }
 
-  api_credential.id = insecure_credential_id_generator_.GenerateId(credential);
-  api_credential.signon_realm = credential.signon_realm;
-  api_credential.username = base::UTF16ToUTF8(credential.username);
+  api_credential.id = insecure_credential_id_generator_.GenerateId(entry);
+  api_credential.signon_realm = entry.signon_realm;
+  api_credential.username = base::UTF16ToUTF8(entry.username);
 
   return api_credential;
 }
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate.h b/chrome/browser/extensions/api/passwords_private/password_check_delegate.h
index b7db681..1280671 100644
--- a/chrome/browser/extensions/api/passwords_private/password_check_delegate.h
+++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate.h
@@ -18,8 +18,8 @@
 #include "components/password_manager/core/browser/bulk_leak_check_service.h"
 #include "components/password_manager/core/browser/leak_detection/bulk_leak_check.h"
 #include "components/password_manager/core/browser/leak_detection/leak_detection_delegate_interface.h"
-#include "components/password_manager/core/browser/password_store.h"
 #include "components/password_manager/core/browser/ui/bulk_leak_check_service_adapter.h"
+#include "components/password_manager/core/browser/ui/credential_ui_entry.h"
 #include "components/password_manager/core/browser/ui/credential_utils.h"
 #include "components/password_manager/core/browser/ui/insecure_credentials_manager.h"
 #include "components/password_manager/core/browser/ui/saved_passwords_presenter.h"
@@ -134,14 +134,13 @@
   void OnCredentialDone(const password_manager::LeakCheckCredential& credential,
                         password_manager::IsLeaked is_leaked) override;
 
-  // Tries to find the matching CredentialWithPassword for |credential|. It
+  // Tries to find the matching CredentialUIEntry for |credential|. It
   // performs a look-up in |insecure_credential_id_generator_| using
   // |credential.id|. If a matching value exists it also verifies that signon
   // realm, username and when possible password match.
-  // Returns a pointer to the matching CredentialWithPassword on success or
+  // Returns a pointer to the matching CredentialUIEntry on success or
   // nullptr otherwise.
-  const password_manager::CredentialWithPassword*
-  FindMatchingInsecureCredential(
+  const password_manager::CredentialUIEntry* FindMatchingEntry(
       const api::passwords_private::InsecureCredential& credential) const;
 
   // Invoked when a compromised password check completes. Records the current
@@ -157,9 +156,9 @@
   // OnStateChanged.
   void NotifyPasswordCheckStatusChanged();
 
-  // Constructs |InsecureCredential| from |CredentialWithPassword|.
+  // Constructs |InsecureCredential| from |CredentialUIEntry|.
   api::passwords_private::InsecureCredential ConstructInsecureCredential(
-      const password_manager::CredentialWithPassword& credential);
+      const password_manager::CredentialUIEntry& entry);
 
   // Obtain a raw pointer to the |PasswordChangeSuccessTracker| associated
   // with |profile_|.
@@ -219,10 +218,10 @@
 
   // An id generator for insecure credentials. Required to match
   // api::passwords_private::InsecureCredential instances passed to the UI
-  // with the underlying CredentialWithPassword they are based on.
-  IdGenerator<password_manager::CredentialWithPassword,
+  // with the underlying CredentialUIEntry they are based on.
+  IdGenerator<password_manager::CredentialUIEntry,
               int,
-              password_manager::PasswordCredentialLess>
+              password_manager::CredentialUIEntry::Less>
       insecure_credential_id_generator_;
 
   base::WeakPtrFactory<PasswordCheckDelegate> weak_ptr_factory_{this};
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc b/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc
index 4d3e3ed7..375950c 100644
--- a/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc
+++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc
@@ -701,7 +701,9 @@
 }
 
 // Test that changing a insecure password removes duplicates from store.
-TEST_F(PasswordCheckDelegateTest, ChangeInsecureCredentialRemovesDupes) {
+// https://crbug.com/1334160
+TEST_F(PasswordCheckDelegateTest,
+       DISABLED_ChangeInsecureCredentialRemovesDupes) {
   PasswordForm form = MakeSavedPassword(kExampleCom, kUsername1, kPassword1);
   AddIssueToForm(&form, InsecureType::kLeaked);
   store().AddLogin(form);
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 878d0e1..b27a0d03 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -16,7 +16,7 @@
 //     - A string containing '@', which is treated as an email address;
 //     - A string beginning with '//', which is treated as a path to a file
 //       containing a list of owners for this flag (commonly an OWNERS file);
-//     - Any other string, which is treated as the username part of anf
+//     - Any other string, which is treated as the username part of any
 //       @chromium.org email address;
 //
 //   expiry_milestone: the last milestone in which this flag should be present.
@@ -935,7 +935,7 @@
   {
     "name": "context-menu-search-with-google-lens",
     "owners": [ "benwgold@google.com", "lens-chrome@google.com" ],
-    "expiry_milestone": 103
+    "expiry_milestone": 107
   },
   {
     "name": "context-menu-shop-with-google-lens",
@@ -2328,12 +2328,12 @@
   {
     "name": "enable-lens-fullscreen-search",
     "owners": ["stanfield@google.com", "lens-chrome@google.com"],
-    "expiry_milestone": 106
+    "expiry_milestone": 107
   },
   {
     "name": "enable-lens-standalone",
     "owners": [ "stanfield@google.com", "benwgold@google.com", "juanmojica@google.com" ],
-    "expiry_milestone": 103
+    "expiry_milestone": 107
   },
   {
     "name": "enable-libinput-to-handle-touchpad",
@@ -2656,6 +2656,11 @@
     "expiry_milestone": 108
   },
   {
+    "name": "enable-search-resumption-module",
+    "owners": ["clank-start","hanxi","spdonghao", "andrewheard"],
+    "expiry_milestone": 110
+  },
+  {
     "name": "enable-secure-payment-confirmation-android",
     "owners": [ "web-payments-team@google.com" ],
     "expiry_milestone": 110
@@ -3693,6 +3698,11 @@
     "expiry_milestone": 105
   },
   {
+    "name": "install-isolated-apps-at-startup",
+    "owners": [ "jarrydg", "kuragin", "reillyg", "rmcelrath" ],
+    "expiry_milestone": 140
+  },
+  {
     "name": "installed-apps-in-cbd",
     "owners": [ "jarrydg", "pwnall" ],
     "expiry_milestone": 97
@@ -5707,6 +5717,11 @@
     "expiry_milestone": 104
   },
   {
+    "name": "sync-android-promos-with-alternative-title",
+    "owners": ["mmrashad@google.com", "chrome-sync-dev@google.com"],
+    "expiry_milestone": 105
+  },
+  {
     "name": "sync-android-promos-with-illustration",
     "owners": ["mmrashad@google.com", "chrome-sync-dev@google.com"],
     "expiry_milestone": 105
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 4f6db0f..8d917292 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -1584,6 +1584,12 @@
 const char kInProductHelpUseClientConfigDescription[] =
     "Enable In-Product Help to use client side configuration.";
 
+const char kInstallIssolatedAppsAtStartup[] =
+    "Install Isolated Apps at Startup";
+const char kInstallIssolatedAppsAtStartupDescription[] =
+    "Isolated application URLs that Chrome should install during startup, "
+    "specified as a comma-separated list";
+
 const char kInstalledAppsInCbdName[] = "Installed Apps in Clear Browsing Data";
 const char kInstalledAppsInCbdDescription[] =
     "Adds the installed apps warning dialog to the clear browsing data flow "
@@ -3621,6 +3627,10 @@
 const char kFeedPositionAndroidDescription[] =
     "Enable pushing down or pulling up of Feeds on NTP";
 
+const char kSearchResumptionModuleAndroidName[] = "Search Resumption Module";
+const char kSearchResumptionModuleAndroidDescription[] =
+    "Enable showing search suggestions on NTP";
+
 const char kStrictSiteIsolationName[] = "Strict site isolation";
 const char kStrictSiteIsolationDescription[] =
     "Security mode that enables site isolation for all sites (SitePerProcess). "
@@ -3634,6 +3644,11 @@
     "#site-isolation-trial-opt-out for how to disable site isolation for "
     "testing.";
 
+const char kSyncAndroidPromosWithAlternativeTitleName[] =
+    "Enable the sync promos with alternative titles on Android";
+const char kSyncAndroidPromosWithAlternativeTitleDescription[] =
+    "Replace sync promos titles with alternative titles.";
+
 const char kSyncAndroidPromosWithIllustrationName[] =
     "Enable the illustration sync promos on Android";
 const char kSyncAndroidPromosWithIllustrationDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 8d06810..e4bbf55c 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -892,6 +892,9 @@
 extern const char kInProductHelpUseClientConfigName[];
 extern const char kInProductHelpUseClientConfigDescription[];
 
+extern const char kInstallIssolatedAppsAtStartup[];
+extern const char kInstallIssolatedAppsAtStartupDescription[];
+
 extern const char kInstalledAppsInCbdName[];
 extern const char kInstalledAppsInCbdDescription[];
 
@@ -2062,9 +2065,15 @@
 extern const char kFeedPositionAndroidName[];
 extern const char kFeedPositionAndroidDescription[];
 
+extern const char kSearchResumptionModuleAndroidName[];
+extern const char kSearchResumptionModuleAndroidDescription[];
+
 extern const char kStrictSiteIsolationName[];
 extern const char kStrictSiteIsolationDescription[];
 
+extern const char kSyncAndroidPromosWithAlternativeTitleName[];
+extern const char kSyncAndroidPromosWithAlternativeTitleDescription[];
+
 extern const char kSyncAndroidPromosWithIllustrationName[];
 extern const char kSyncAndroidPromosWithIllustrationDescription[];
 
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
index f658255..74c5fe0 100644
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -267,6 +267,7 @@
     &kShareButtonInTopToolbar,
     &kShowScrollableMVTOnNTPAndroid,
     &kFeedPositionAndroid,
+    &kSearchResumptionModuleAndroid,
     &kSpannableInlineAutocomplete,
     &kSpecialLocaleWrapper,
     &kSpecialUserDecision,
@@ -375,6 +376,7 @@
     &switches::kTangibleSync,
     &syncer::kEnableSyncImmediatelyInFRE,
     &syncer::kSyncTrustedVaultPassphraseRecovery,
+    &syncer::kSyncAndroidPromosWithAlternativeTitle,
     &syncer::kSyncAndroidPromosWithIllustration,
     &syncer::kSyncAndroidPromosWithSingleButton,
     &syncer::kSyncAndroidPromosWithTitle,
@@ -839,6 +841,9 @@
 const base::Feature kFeedPositionAndroid{"FeedPositionAndroid",
                                          base::FEATURE_DISABLED_BY_DEFAULT};
 
+const base::Feature kSearchResumptionModuleAndroid{
+    "SearchResumptionModuleAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
+
 // If enabled, keep logging and reporting UMA while chrome is backgrounded.
 const base::Feature kUmaBackgroundSessions{"UMABackgroundSessions",
                                            base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
index a01c273..7ad04adb 100644
--- a/chrome/browser/flags/android/chrome_feature_list.h
+++ b/chrome/browser/flags/android/chrome_feature_list.h
@@ -130,6 +130,7 @@
 extern const base::Feature kSharingHubLinkToggle;
 extern const base::Feature kShowScrollableMVTOnNTPAndroid;
 extern const base::Feature kFeedPositionAndroid;
+extern const base::Feature kSearchResumptionModuleAndroid;
 extern const base::Feature kSpannableInlineAutocomplete;
 extern const base::Feature kSpecialLocaleWrapper;
 extern const base::Feature kSpecialUserDecision;
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
index 6cf7714..f39727c6 100644
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -309,6 +309,8 @@
             "ContextualTriggersSelectionMenu";
     public static final String CONTEXTUAL_TRIGGERS_SELECTION_SIZE =
             "ContextualTriggersSelectionSize";
+    public static final String SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE =
+            "SyncAndroidPromosWithAlternativeTitle";
     public static final String SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION =
             "SyncAndroidPromosWithIllustration";
     public static final String SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON =
@@ -505,6 +507,7 @@
             "SplitCacheByNetworkIsolationKey";
     public static final String START_SURFACE_ANDROID = "StartSurfaceAndroid";
     public static final String FEED_POSITION_ANDROID = "FeedPositionAndroid";
+    public static final String SEARCH_RESUMPTION_MODULE_ANDROID = "SearchResumptionModuleAndroid";
     public static final String STORE_HOURS = "StoreHoursAndroid";
     public static final String SUPPRESS_TOOLBAR_CAPTURES = "SuppressToolbarCaptures";
     public static final String SWAP_PIXEL_FORMAT_TO_FIX_CONVERT_FROM_TRANSLUCENT =
diff --git a/chrome/browser/installable/installed_webapp_bridge.cc b/chrome/browser/installable/installed_webapp_bridge.cc
index 45b2e9d..aa57fc7 100644
--- a/chrome/browser/installable/installed_webapp_bridge.cc
+++ b/chrome/browser/installable/installed_webapp_bridge.cc
@@ -90,6 +90,7 @@
 
 void InstalledWebappBridge::DecidePermission(ContentSettingsType type,
                                              const GURL& origin_url,
+                                             const GURL& last_committed_url,
                                              PermissionCallback callback) {
   JNIEnv* env = base::android::AttachCurrentThread();
 
@@ -100,9 +101,11 @@
   // be destroyed in RunPermissionCallback.
   auto* callback_ptr = new PermissionCallback(std::move(callback));
 
-  ScopedJavaLocalRef<jstring> j_origin =
+  ScopedJavaLocalRef<jstring> j_origin_url =
       base::android::ConvertUTF8ToJavaString(env, origin_url.spec());
+  ScopedJavaLocalRef<jstring> j_last_committed_url =
+      base::android::ConvertUTF8ToJavaString(env, last_committed_url.spec());
   Java_InstalledWebappBridge_decidePermissionSetting(
-      env, static_cast<int>(type), j_origin,
+      env, static_cast<int>(type), j_origin_url, j_last_committed_url,
       reinterpret_cast<jlong>(callback_ptr));
 }
diff --git a/chrome/browser/installable/installed_webapp_bridge.h b/chrome/browser/installable/installed_webapp_bridge.h
index 58460f38..a8895f9 100644
--- a/chrome/browser/installable/installed_webapp_bridge.h
+++ b/chrome/browser/installable/installed_webapp_bridge.h
@@ -31,6 +31,7 @@
 
   static void DecidePermission(ContentSettingsType type,
                                const GURL& origin_url,
+                               const GURL& last_committed_url,
                                PermissionCallback callback);
 };
 
diff --git a/chrome/browser/lifetime/termination_notification.cc b/chrome/browser/lifetime/termination_notification.cc
index da6d54c..c65b488 100644
--- a/chrome/browser/lifetime/termination_notification.cc
+++ b/chrome/browser/lifetime/termination_notification.cc
@@ -38,6 +38,7 @@
       std::move(app_terminating_callback));
 }
 void NotifyAppTerminating() {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   static bool notified = false;
   if (notified)
     return;
@@ -52,6 +53,7 @@
 }
 
 void NotifyAndTerminate(bool fast_path) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 #if BUILDFLAG(IS_CHROMEOS_ASH)
   static bool notified = false;
   // Return if a shutdown request has already been sent.
diff --git a/chrome/browser/notifications/notification_permission_context.cc b/chrome/browser/notifications/notification_permission_context.cc
index a19f7698..0c427d8 100644
--- a/chrome/browser/notifications/notification_permission_context.cc
+++ b/chrome/browser/notifications/notification_permission_context.cc
@@ -143,6 +143,12 @@
     return;
   }
 
+  content::RenderFrameHost* rfh = content::RenderFrameHost::FromID(
+      id.render_process_id(), id.render_frame_id());
+
+  content::WebContents* web_contents =
+      content::WebContents::FromRenderFrameHost(rfh);
+
   // Notifications permission is always denied in incognito. To prevent sites
   // from using that to detect whether incognito mode is active, we deny after a
   // random time delay, to simulate a user clicking a bubble/infobar. See also
@@ -151,12 +157,6 @@
   // PermissionMenuModel::PermissionMenuModel which prevents users from manually
   // allowing the permission.
   if (browser_context()->IsOffTheRecord()) {
-    content::RenderFrameHost* rfh = content::RenderFrameHost::FromID(
-        id.render_process_id(), id.render_frame_id());
-
-    content::WebContents* web_contents =
-        content::WebContents::FromRenderFrameHost(rfh);
-
     // Random number of seconds in the range [1.0, 2.0).
     double delay_seconds = 1.0 + 1.0 * base::RandDouble();
     VisibilityTimerTabHelper::CreateForWebContents(web_contents);
@@ -173,14 +173,23 @@
   }
 
 #if BUILDFLAG(IS_ANDROID)
+  bool contains_webapk =
+      ShortcutHelper::DoesOriginContainAnyInstalledWebApk(requesting_origin);
+  bool contains_twa =
+      ShortcutHelper::DoesOriginContainAnyInstalledTrustedWebActivity(
+          requesting_origin);
+  bool contains_installed_webapp = contains_twa || contains_webapk;
   if (base::android::BuildInfo::GetInstance()->is_at_least_t() &&
       chrome::android::IsJavaDrivenFeatureEnabled(
           chrome::android::
               kTrustedWebActivityNotificationPermissionDelegation) &&
-      ShortcutHelper::DoesOriginContainAnyInstalledTrustedWebActivity(
-          requesting_origin)) {
+      contains_installed_webapp) {
+    // WebAPKs match URLs using a scope URL which may contain a path. An origin
+    // has no path and would not fall within such a scope. So to find a matching
+    // WebAPK we must pass a more complete URL e.g. GetLastCommittedURL.
     InstalledWebappBridge::DecidePermission(
         ContentSettingsType::NOTIFICATIONS, requesting_origin,
+        web_contents->GetLastCommittedURL(),
         base::BindOnce(&NotificationPermissionContext::NotifyPermissionSet,
                        weak_factory_ui_thread_.GetWeakPtr(), id,
                        requesting_origin, embedding_origin, std::move(callback),
diff --git a/chrome/browser/performance_manager/policies/policy_features.h b/chrome/browser/performance_manager/policies/policy_features.h
index 1356073..0a0f80b3 100644
--- a/chrome/browser/performance_manager/policies/policy_features.h
+++ b/chrome/browser/performance_manager/policies/policy_features.h
@@ -93,15 +93,16 @@
 // regardless of the user's interactions with ARCVM.
 extern const base::FeatureParam<bool> kTrimArcVmOnCriticalPressure;
 
-// If true then we will trim ARCVM's crosvm once on the first moderate (or
-// critical though unlikely) memory pressure after ARCVM boot. The trimming is
-// done regardless of the user's interactions with ARCVM.
+// If true then we will drop ARCVM guest page caches once on the first moderate
+// (or critical though unlikely) memory pressure after ARCVM boot. The regular
+// trimming (i.e. moving pages to zram) is not performed, and the page cache
+// drop is done regardless of the user's interactions with ARCVM.
 extern const base::FeatureParam<bool>
     kTrimArcVmOnFirstMemoryPressureAfterArcVmBoot;
 
-// If true then we will drop ARCVM guest's page caches when the trimmer does
-// kTrimArcVmOnFirstMemoryPressureAfterArcVmBoot. If false (default), it also
-// trims ARCVM's shared memory.
+// Deprecated.
+// TODO(yusukes): Remove this once ChromeOSARCVMReclaimThrottle.gcl Finch
+// experiment is done.
 extern const base::FeatureParam<bool>
     kOnlyDropCachesOnFirstMemoryPressureAfterArcVmBoot;
 
diff --git a/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos.cc b/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos.cc
index bf6ea33..24766b2 100644
--- a/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos.cc
+++ b/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos.cc
@@ -330,9 +330,7 @@
       (level == base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
   const mechanism::ArcVmReclaimType trim_once_type_after_arcvm_boot =
       params.trim_arcvm_on_first_memory_pressure_after_arcvm_boot
-          ? (params.only_drop_caches_on_first_memory_pressure_after_arcvm_boot
-                 ? mechanism::ArcVmReclaimType::kReclaimGuestPageCaches
-                 : mechanism::ArcVmReclaimType::kReclaimAll)
+          ? mechanism::ArcVmReclaimType::kReclaimGuestPageCaches
           : mechanism::ArcVmReclaimType::kReclaimNone;
 
   bool is_first_trim_post_boot =
@@ -425,12 +423,14 @@
     bool success,
     const std::string& failure_reason) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  if (reclaim_type == mechanism::ArcVmReclaimType::kReclaimAll) {
-    PerformanceManager::CallOnGraph(
-        FROM_HERE,
-        base::BindOnce(&WorkingSetTrimmerPolicyChromeOS::OnArcVmTrimEnded, ptr,
-                       success));
-  }
+
+  // NOTE: To ease unit test, we invoke OnArcVmTrimEnded even when
+  // |reclaim_type| is not kReclaimAll.
+  PerformanceManager::CallOnGraph(
+      FROM_HERE,
+      base::BindOnce(&WorkingSetTrimmerPolicyChromeOS::OnArcVmTrimEnded, ptr,
+                     reclaim_type, success));
+
   if (success) {
     VLOG(2) << "Reclaimed ARCVM memory";
     return;
@@ -443,7 +443,11 @@
   ++arcvm_trim_count_;
 }
 
-void WorkingSetTrimmerPolicyChromeOS::OnArcVmTrimEnded(bool success) {
+void WorkingSetTrimmerPolicyChromeOS::OnArcVmTrimEnded(
+    mechanism::ArcVmReclaimType reclaim_type,
+    bool success) {
+  if (reclaim_type != mechanism::ArcVmReclaimType::kReclaimAll)
+    return;
   if (success)
     last_arcvm_trim_success_ = base::TimeTicks::Now();
   else
diff --git a/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos.h b/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos.h
index ab31f3f..b406666ef 100644
--- a/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos.h
+++ b/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos.h
@@ -156,7 +156,8 @@
       mechanism::ArcVmReclaimType reclaim_type,
       bool success,
       const std::string& failure_reason);
-  virtual void OnArcVmTrimEnded(bool success);
+  virtual void OnArcVmTrimEnded(mechanism::ArcVmReclaimType reclaim_type,
+                                bool success);
 
   features::TrimOnMemoryPressureParams params_;
 
diff --git a/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos_unittest.cc b/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos_unittest.cc
index f41589a..acde303 100644
--- a/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos_unittest.cc
+++ b/chrome/browser/performance_manager/policies/working_set_trimmer_policy_chromeos_unittest.cc
@@ -206,7 +206,7 @@
                void(base::MemoryPressureListener::MemoryPressureLevel));
   MOCK_METHOD4(OnTrimArcVmProcesses,
                void(mechanism::ArcVmReclaimType, bool, int, int));
-  MOCK_METHOD1(OnArcVmTrimEnded, void(bool));
+  MOCK_METHOD2(OnArcVmTrimEnded, void(mechanism::ArcVmReclaimType, bool));
   MOCK_METHOD0(GetTrimmer, mechanism::WorkingSetTrimmerChromeOS*(void));
 
   // Exposes the default implementations so they can be used in tests.
@@ -245,8 +245,9 @@
         max_pages_per_iteration);
   }
 
-  void DefaultOnArcVmTrimEnded(bool success) {
-    WorkingSetTrimmerPolicyChromeOS::OnArcVmTrimEnded(success);
+  void DefaultOnArcVmTrimEnded(mechanism::ArcVmReclaimType reclaim_type,
+                               bool success) {
+    WorkingSetTrimmerPolicyChromeOS::OnArcVmTrimEnded(reclaim_type, success);
   }
 
   mechanism::WorkingSetTrimmerChromeOS* DefaultGetTrimmer() {
@@ -306,8 +307,9 @@
     run_loop()->Quit();
   }
 
-  void DefaultOnArcVmTrimEndedAndQuit(bool success) {
-    policy()->DefaultOnArcVmTrimEnded(success);
+  void DefaultOnArcVmTrimEndedAndQuit(mechanism::ArcVmReclaimType reclaim_type,
+                                      bool success) {
+    policy()->DefaultOnArcVmTrimEnded(reclaim_type, success);
     run_loop()->Quit();
   }
 
@@ -364,6 +366,7 @@
 
   void ExpectNoReclaim();
   void ExpectFullReclaim(bool is_first_reclaim, int computed_page_limit);
+  void ExpectDropPageCaches();
 
  private:
   std::unique_ptr<base::RunLoop> run_loop_;
@@ -835,7 +838,41 @@
       .Times(Exactly(1));
 
   // 4. Expect success and quit the run loop.
-  EXPECT_CALL(*policy(), OnArcVmTrimEnded(true))
+  EXPECT_CALL(*policy(), OnArcVmTrimEnded(full_reclaim, true))
+      .Times(Exactly(1))
+      .WillOnce(Invoke(this, &WorkingSetTrimmerPolicyChromeOSTest::
+                                 DefaultOnArcVmTrimEndedAndQuit));
+}
+
+// Similarly, builds a list of expectations for dropping guest page caches.
+void WorkingSetTrimmerPolicyChromeOSTest::ExpectDropPageCaches() {
+  // Enforces all EXPECT_CALLS to occur in the order they are stated below.
+  InSequence serialize_expected_calls;
+
+  // 1. The request to trim.
+  EXPECT_CALL(*policy(), TrimArcVmProcesses).Times(Exactly(1));
+
+  // 2. The intermediate forwarding operation. Checking that parameters are
+  //    carried forward.
+  EXPECT_CALL(*policy(),
+              OnTrimArcVmProcesses(
+                  mechanism::ArcVmReclaimType::kReclaimGuestPageCaches,
+                  /*is_first_reclaim=*/true,
+                  /*config_pages_per_minute=*/_, /*config_max_pages=*/_))
+      .Times(Exactly(1));
+
+  // 3. The call to the underlying trimmer. Validate the computed page limit.
+  EXPECT_CALL(
+      *trimmer(),
+      TrimArcVmWorkingSet(/*callback=*/_,
+                          mechanism::ArcVmReclaimType::kReclaimGuestPageCaches,
+                          /*computed_page_limit=*/_))
+      .Times(Exactly(1));
+
+  // 4. Expect success and quit the run loop.
+  EXPECT_CALL(*policy(),
+              OnArcVmTrimEnded(
+                  mechanism::ArcVmReclaimType::kReclaimGuestPageCaches, true))
       .Times(Exactly(1))
       .WillOnce(Invoke(this, &WorkingSetTrimmerPolicyChromeOSTest::
                                  DefaultOnArcVmTrimEndedAndQuit));
@@ -853,9 +890,6 @@
   policy()->trim_arcvm_on_memory_pressure(true);
   policy()->params().trim_arcvm_on_first_memory_pressure_after_arcvm_boot =
       true;
-  policy()
-      ->params()
-      .only_drop_caches_on_first_memory_pressure_after_arcvm_boot = false;
   policy()->params().trim_arcvm_on_critical_pressure = false;
   policy()->params().arcvm_trim_backoff_time = base::Seconds(60);
   policy()->params().trim_arcvm_pages_per_minute = config_pages_per_minute;
@@ -867,7 +901,7 @@
   EXPECT_CALL(*policy(), GetTrimmer).WillRepeatedly(Return(trimmer()));
 
   // -------------------------
-  // Step 1 of 4:  No reclaim.
+  // Step 1 of 5:  No reclaim.
 
   // Tell the fake Arc Delegate to respond as if it is not booted yet.
   delegate.set_eligibility(mechanism::ArcVmReclaimType::kReclaimNone);
@@ -884,13 +918,14 @@
   RecreateRunLoop();
 
   // -------------------------------------------------------------
-  // Step 2 of 4:  First reclaim post-boot, should have no limits.
+  // Step 2 of 5:  First reclaim post-boot, drop guest page caches only.
 
   // Tell fake Arc delegate to respond with first boot information.
-  delegate.set_eligibility(mechanism::ArcVmReclaimType::kReclaimAll);
+  delegate.set_eligibility(
+      mechanism::ArcVmReclaimType::kReclaimGuestPageCaches);
   delegate.set_is_first_trim_post_boot(kYesFirstReclaimPostBoot);
 
-  ExpectFullReclaim(kYesFirstReclaimPostBoot, arc::ArcSession::kNoPageLimit);
+  ExpectDropPageCaches();
 
   // Advance time just past the back-off setting.
   FastForwardBy(base::Seconds(1));
@@ -898,18 +933,19 @@
 
   // Trigger pressure event and wait until last expectation is met.
   policy()->listener().SimulatePressureNotification(
-      base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
+      base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE);
   run_loop()->Run();
   RecreateRunLoop();
 
   // ------------------------------------------------------------------------
-  // Step 3 of 4:  Full reclaim after a few minutes, confirm per-minute rate.
+  // Step 3 of 5:  Full reclaim after a few minutes
 
   // Tell fake Arc delegate to respond saying it is NOT first boot.
   delegate.set_eligibility(mechanism::ArcVmReclaimType::kReclaimAll);
   delegate.set_is_first_trim_post_boot(kNotFirstReclaimPostBoot);
 
-  ExpectFullReclaim(kNotFirstReclaimPostBoot, config_pages_per_minute * 2);
+  // The very first full reclaim is always done with |config_max_pages|.
+  ExpectFullReclaim(kNotFirstReclaimPostBoot, config_max_pages);
 
   // Advance two times the back-off
   FastForwardBy(base::Seconds(1));
@@ -921,8 +957,30 @@
   run_loop()->Run();
   RecreateRunLoop();
 
+  // ------------------------------------------------------------------------
+  // Step 4 of 5:  Full reclaim after a few minutes, confirm per-minute rate.
+
+  // Tell fake Arc delegate to respond saying it is NOT first boot.
+  delegate.set_eligibility(mechanism::ArcVmReclaimType::kReclaimAll);
+  delegate.set_is_first_trim_post_boot(kNotFirstReclaimPostBoot);
+
+  // Subsequent full reclaims are controlled by |config_pages_per_minute|.
+  constexpr int kMinutes = 2;
+  ExpectFullReclaim(kNotFirstReclaimPostBoot,
+                    config_pages_per_minute * kMinutes);
+
+  // Advance two times the back-off
+  FastForwardBy(base::Seconds(1));
+  FastForwardBy(policy()->params().arcvm_trim_backoff_time * kMinutes);
+
+  // Trigger pressure event and wait until last expectation is met.
+  policy()->listener().SimulatePressureNotification(
+      base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
+  run_loop()->Run();
+  RecreateRunLoop();
+
   // -----------------------------------------------------------------------
-  // Step 4 of 4:  Full reclaim after a long time, confirm cap at max pages.
+  // Step 5 of 5:  Full reclaim after a long time, confirm cap at max pages.
 
   // Tell fake Arc delegate to respond saying it is NOT first boot.
   delegate.set_eligibility(mechanism::ArcVmReclaimType::kReclaimAll);
diff --git a/chrome/browser/profile_resetter/profile_resetter.cc b/chrome/browser/profile_resetter/profile_resetter.cc
index 2248581..74aed49 100644
--- a/chrome/browser/profile_resetter/profile_resetter.cc
+++ b/chrome/browser/profile_resetter/profile_resetter.cc
@@ -186,6 +186,7 @@
     }
 
     template_url_service_->RepairPrepopulatedSearchEngines();
+    template_url_service_->RepairStarterPackEngines();
 
     MarkAsDone(DEFAULT_SEARCH_ENGINE);
   } else {
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
index fa40d88..7d95939 100644
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -696,6 +696,10 @@
             << "Guest profiles shouldn't have been saved as active profiles";
         CHECK(!profile->IsOffTheRecord())
             << "OTR profiles shouldn't have been saved as active profiles";
+        // TODO(rsult): If this DCHECK is never hit, turn it into a CHECK.
+        DCHECK((!profile->IsSystemProfile()))
+            << "System profile shouldn't have been saved as active profiles.";
+
         to_return.push_back(profile);
       }
     }
@@ -2372,6 +2376,10 @@
         << "Guest profiles shouldn't be saved as active profiles";
     CHECK(!(*it)->IsOffTheRecord())
         << "OTR profiles shouldn't be saved as active profiles";
+    // TODO(rsult): If this DCHECK is never hit, turn it into a CHECK and remove
+    // the test on `chrome::kSystemProfileDir` below.
+    DCHECK((!(*it)->IsSystemProfile()))
+        << "System profile shouldn't be saved as active profile";
     base::FilePath profile_path = (*it)->GetBaseName();
     // Some profiles might become ephemeral after they are created.
     // Don't persist the System Profile as one of the last actives, it should
diff --git a/chrome/browser/renderer_context_menu/link_to_text_menu_observer.cc b/chrome/browser/renderer_context_menu/link_to_text_menu_observer.cc
index 3c9d31b8..b42f3b9 100644
--- a/chrome/browser/renderer_context_menu/link_to_text_menu_observer.cc
+++ b/chrome/browser/renderer_context_menu/link_to_text_menu_observer.cc
@@ -95,8 +95,8 @@
     RenderViewContextMenuProxy* proxy,
     content::RenderFrameHost* render_frame_host,
     CompletionCallback callback)
-    : proxy_(proxy),
-      render_frame_host_(render_frame_host),
+    : content::DocumentUserData<LinkToTextMenuObserver>(render_frame_host),
+      proxy_(proxy),
       completion_callback_(std::move(callback)) {}
 
 LinkToTextMenuObserver::~LinkToTextMenuObserver() = default;
@@ -181,7 +181,7 @@
   if (status == LinkGenerationStatus::kSuccess) {
     DCHECK_EQ(error, LinkGenerationError::kNone);
     shared_highlighting::LogRequestedSuccessMetrics(
-        render_frame_host_->GetPageUkmSourceId());
+        render_frame_host().GetPageUkmSourceId());
   } else {
     DCHECK_NE(error, LinkGenerationError::kNone);
     CompleteWithError(error);
@@ -284,7 +284,7 @@
 void LinkToTextMenuObserver::CompleteWithError(LinkGenerationError error) {
   is_generation_complete_ = true;
   shared_highlighting::LogRequestedFailureMetrics(
-      render_frame_host_->GetPageUkmSourceId(), error);
+      render_frame_host().GetPageUkmSourceId(), error);
 
   execute_command_pending_ = false;
   NotifyLinkToTextMenuCompleted();
@@ -372,7 +372,7 @@
 mojo::Remote<blink::mojom::TextFragmentReceiver>&
 LinkToTextMenuObserver::GetRemote() {
   if (!remote_.is_bound()) {
-    render_frame_host_->GetRemoteInterfaces()->GetInterface(
+    render_frame_host().GetRemoteInterfaces()->GetInterface(
         remote_.BindNewPipeAndPassReceiver());
   }
   return remote_;
@@ -380,9 +380,9 @@
 
 void LinkToTextMenuObserver::CopyTextToClipboard(const std::string& text) {
   std::unique_ptr<ui::DataTransferEndpoint> data_transfer_endpoint =
-      !render_frame_host_->GetBrowserContext()->IsOffTheRecord()
+      !render_frame_host().GetBrowserContext()->IsOffTheRecord()
           ? std::make_unique<ui::DataTransferEndpoint>(
-                render_frame_host_->GetMainFrame()->GetLastCommittedURL())
+                render_frame_host().GetMainFrame()->GetLastCommittedURL())
           : nullptr;
 
   ui::ScopedClipboardWriter scw(ui::ClipboardBuffer::kCopyPaste,
@@ -398,3 +398,5 @@
     std::move(completion_callback_).Run();
   }
 }
+
+DOCUMENT_USER_DATA_KEY_IMPL(LinkToTextMenuObserver);
diff --git a/chrome/browser/renderer_context_menu/link_to_text_menu_observer.h b/chrome/browser/renderer_context_menu/link_to_text_menu_observer.h
index 58d2af6..d93bbc5 100644
--- a/chrome/browser/renderer_context_menu/link_to_text_menu_observer.h
+++ b/chrome/browser/renderer_context_menu/link_to_text_menu_observer.h
@@ -8,6 +8,7 @@
 #include "base/memory/raw_ptr.h"
 #include "components/renderer_context_menu/render_view_context_menu_observer.h"
 #include "components/shared_highlighting/core/common/shared_highlighting_metrics.h"
+#include "content/public/browser/document_user_data.h"
 #include "content/public/browser/render_frame_host.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
 #include "third_party/blink/public/mojom/link_to_text/link_to_text.mojom.h"
@@ -19,7 +20,9 @@
 
 // A class that implements the menu item for copying selected text and a link
 // to the selected text to the user's clipboard.
-class LinkToTextMenuObserver : public RenderViewContextMenuObserver {
+class LinkToTextMenuObserver
+    : public RenderViewContextMenuObserver,
+      public content::DocumentUserData<LinkToTextMenuObserver> {
  public:
   static std::unique_ptr<LinkToTextMenuObserver> Create(
       RenderViewContextMenuProxy* proxy,
@@ -43,6 +46,7 @@
 
  private:
   friend class MockLinkToTextMenuObserver;
+  friend class content::DocumentUserData<LinkToTextMenuObserver>;
 
   explicit LinkToTextMenuObserver(RenderViewContextMenuProxy* proxy,
                                   content::RenderFrameHost* render_frame_host,
@@ -136,6 +140,8 @@
   CompletionCallback completion_callback_;
 
   base::WeakPtrFactory<LinkToTextMenuObserver> weak_ptr_factory_{this};
+
+  DOCUMENT_USER_DATA_KEY_DECL();
 };
 
 #endif  // CHROME_BROWSER_RENDERER_CONTEXT_MENU_LINK_TO_TEXT_MENU_OBSERVER_H_
diff --git a/chrome/browser/resources/chromeos/password_change/lock_screen_reauth.html b/chrome/browser/resources/chromeos/password_change/lock_screen_reauth.html
index a9d44594..94237bdc 100644
--- a/chrome/browser/resources/chromeos/password_change/lock_screen_reauth.html
+++ b/chrome/browser/resources/chromeos/password_change/lock_screen_reauth.html
@@ -2,6 +2,7 @@
 <html dir="$i18n{textdirection}" lang="$i18n{language}">
 
 <head>
+  <meta charset="utf-8">
   <include src="../login/components/oobe_icons.html">
 
   <link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
diff --git a/chrome/browser/resources/settings/chromeos/keyboard_shortcut_banner/keyboard_shortcut_banner.js b/chrome/browser/resources/settings/chromeos/keyboard_shortcut_banner/keyboard_shortcut_banner.js
index 048cea0..78f82812 100644
--- a/chrome/browser/resources/settings/chromeos/keyboard_shortcut_banner/keyboard_shortcut_banner.js
+++ b/chrome/browser/resources/settings/chromeos/keyboard_shortcut_banner/keyboard_shortcut_banner.js
@@ -12,11 +12,11 @@
  * keyboard shortcuts. For example, "Press Ctrl + Space" should be passed in as
  * "Press <kbd><kbd>Ctrl</kbd>+<kbd>Space</kbd></kbd>".
  */
-import '//resources/cr_elements/cr_button/cr_button.m.js';
+import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
 
-import {html, mixinBehaviors, PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 import {getInstance as getAnnouncerInstance} from 'chrome://resources/cr_elements/cr_a11y_announcer/cr_a11y_announcer.js';
 import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/js/i18n_behavior.m.js';
+import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 /**
  * @constructor
@@ -52,7 +52,8 @@
   /** @private */
   onDismissClick_() {
     getAnnouncerInstance().announce(this.i18n('shortcutBannerDismissed'));
-    this.dispatchEvent(new CustomEvent('dismiss'));
+    this.dispatchEvent(
+        new CustomEvent('dismiss', {bubbles: true, composed: true}));
   }
 
   /**
diff --git a/chrome/browser/resources/support_tool/pii_selection.html b/chrome/browser/resources/support_tool/pii_selection.html
index 3c496ca6..e9a71c9 100644
--- a/chrome/browser/resources/support_tool/pii_selection.html
+++ b/chrome/browser/resources/support_tool/pii_selection.html
@@ -17,6 +17,14 @@
     padding-inline-start: 0;
   }
 
+  #privacy-disclaimer {
+    color: var(--cr-title-text-color);
+    margin-inline-start: 24px;
+    /* Add negative margin to override the padding of the radio-button on top
+      so the disclaimer text looks connected to the radio button text.*/
+    margin-top: -16px;
+  }
+
   #detected-pii-container {
     margin-inline-start: 36px;
     max-height: 256px;
@@ -55,21 +63,24 @@
 
 <h2>Step 3 of 4: Review personally identifiable information</h2>
 <div id="pii-warning-text" class="support-tool-title">
-  Diagnostic data collection is complete. Some personally identifiable
-  information was detected. Select which information you wish to include in
-  exported data.
+  Diagnostic data collection is complete. Some of your personal information is
+  included in this data.
 </div>
 <div id="radio-group">
   <cr-radio-group selected="[[selectedRadioButton_]]"
       on-selected-changed="onSelectedRadioButtonChanged_">
     <cr-radio-button name="[[piiRadioButtonsEnum_.INCLUDE_ALL]]">
-      Include all personally identifiable information
+      Include all personal information
     </cr-radio-button>
     <cr-radio-button name="[[piiRadioButtonsEnum_.INCLUDE_NONE]]">
-      Include no identifiable information
+      Automatically remove most personal information
     </cr-radio-button>
+    <div id="privacy-disclaimer">
+      Some personal information may still be included in the data. Make sure to
+      review the exported files. 
+    </div>
     <cr-radio-button name="[[piiRadioButtonsEnum_.INCLUDE_SOME]]">
-      Include only some identifiable information
+      Manually review personal information
     </cr-radio-button>
   </cr-radio-group>
 </div>
diff --git a/chrome/browser/resources/support_tool/support_tool_shared.css b/chrome/browser/resources/support_tool/support_tool_shared.css
index 543981dc..e9bf21f9 100644
--- a/chrome/browser/resources/support_tool/support_tool_shared.css
+++ b/chrome/browser/resources/support_tool/support_tool_shared.css
@@ -42,7 +42,5 @@
 }
 
 .data-collector-list {
-  border-bottom: var(--cr-separator-line);
-  border-top: var(--cr-separator-line);
   width: 520px;
 }
diff --git a/chrome/browser/resources/webui_gallery/demos/cr_checkbox_demo.html b/chrome/browser/resources/webui_gallery/demos/cr_checkbox_demo.html
index 238361d..ed0ae8c5 100644
--- a/chrome/browser/resources/webui_gallery/demos/cr_checkbox_demo.html
+++ b/chrome/browser/resources/webui_gallery/demos/cr_checkbox_demo.html
@@ -5,13 +5,19 @@
     <title>cr-checkbox demo</title>
     <link rel="stylesheet" href="demo.css">
   <body>
-    <h1>cr-checkbox</h1>
-    <div class="demos">
-      <cr-checkbox>Checkbox</cr-checkbox>
-      <cr-checkbox checked>Checkbox</cr-checkbox>
-      <cr-checkbox disabled>Disabled checkbox</cr-checkbox>
-      <cr-checkbox checked disabled>Disabled checked checkbox</cr-checkbox>
-    </div>
+    <dom-bind>
+      <template>
+        <h1>cr-checkbox</h1>
+        <div class="demos">
+          <cr-checkbox checked="{{myValue_}}">Checkbox</cr-checkbox>
+          <div>Above checkbox is checked? [[myValue_]]</div>
+          
+          <cr-checkbox checked>Checkbox</cr-checkbox>
+          <cr-checkbox disabled>Disabled checkbox</cr-checkbox>
+          <cr-checkbox checked disabled>Disabled checked checkbox</cr-checkbox>
+        </div>
+      </template>
+    </dom-bind>
 
     <script src="chrome://resources/cr_elements/cr_checkbox/cr_checkbox.m.js"
         type="module"></script>
diff --git a/chrome/browser/resources/whats_new/whats_new_app.ts b/chrome/browser/resources/whats_new/whats_new_app.ts
index 61263a8..f6fff73f 100644
--- a/chrome/browser/resources/whats_new/whats_new_app.ts
+++ b/chrome/browser/resources/whats_new/whats_new_app.ts
@@ -9,7 +9,6 @@
 import {BrowserCommandProxy} from 'chrome://resources/js/browser_command/browser_command_proxy.js';
 import {isChromeOS} from 'chrome://resources/js/cr.m.js';
 import {EventTracker} from 'chrome://resources/js/event_tracker.m.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {getTemplate} from './whats_new_app.html.js';
@@ -84,10 +83,8 @@
     }
 
     const latest = this.isAutoOpen_ && !isChromeOS ? 'true' : 'false';
-    const feedback =
-        loadTimeData.getBoolean('showFeedbackButton') ? 'true' : 'false';
     url += url.includes('?') ? '&' : '?';
-    this.url_ = url.concat(`latest=${latest}&feedback=${feedback}`);
+    this.url_ = url.concat(`latest=${latest}`);
 
     this.eventTracker_.add(
         window, 'message', event => this.handleMessage_(event as MessageEvent));
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/multipart_data_pipe_getter_unittest.cc b/chrome/browser/safe_browsing/cloud_content_scanning/multipart_data_pipe_getter_unittest.cc
index 916f621..81e4bb02 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/multipart_data_pipe_getter_unittest.cc
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/multipart_data_pipe_getter_unittest.cc
@@ -34,7 +34,9 @@
   base::ReadOnlySharedMemoryRegion CreatePage(const std::string& content) {
     base::MappedReadOnlyRegion region =
         base::ReadOnlySharedMemoryRegion::Create(content.size());
-    EXPECT_TRUE(region.IsValid());
+    if (!region.IsValid())
+      return base::ReadOnlySharedMemoryRegion();
+
     std::memcpy(region.mapping.memory(), content.data(), content.size());
     return std::move(region.region);
   }
@@ -108,6 +110,9 @@
   bool is_file_data_pipe() { return GetParam(); }
   bool is_page_data_pipe() { return !GetParam(); }
 
+  // Helper to create a data pipe with its content either in memory or in a
+  // files. If there is no space left on the device, return nullptr so the test
+  // can end early.
   std::unique_ptr<MultipartDataPipeGetter> CreateDataPipeGetter(
       const std::string& content) {
     if (is_file_data_pipe()) {
@@ -119,6 +124,9 @@
                                              std::move(*file));
     } else {
       base::ReadOnlySharedMemoryRegion page = CreatePage(content);
+      if (!page.IsValid())
+        return nullptr;
+
       return MultipartDataPipeGetter::Create("boundary", metadata_,
                                              std::move(page));
     }
diff --git a/chrome/browser/search_engines/template_url_service_unittest.cc b/chrome/browser/search_engines/template_url_service_unittest.cc
index 450a183..a0ef365 100644
--- a/chrome/browser/search_engines/template_url_service_unittest.cc
+++ b/chrome/browser/search_engines/template_url_service_unittest.cc
@@ -1182,6 +1182,49 @@
                 prefs::kSyncedDefaultSearchProviderGUID));
 }
 
+TEST_F(TemplateURLServiceTest, RepairStarterPackEngines) {
+  test_util()->VerifyLoad();
+
+  // Edit @bookmarks engine
+  TemplateURL* bookmarks = model()->GetTemplateURLForKeyword(u"@bookmarks");
+  ASSERT_TRUE(bookmarks);
+  model()->ResetTemplateURL(bookmarks, u"trash", u"xxx",
+                            "http://www.foo.com/s?q={searchTerms}");
+  EXPECT_EQ(u"trash", bookmarks->short_name());
+  EXPECT_EQ(u"xxx", bookmarks->keyword());
+
+  // Remove @history. Despite the extension added below, it will still be
+  // restored.
+  TemplateURL* history = model()->GetTemplateURLForKeyword(u"@history");
+  ASSERT_TRUE(history);
+  model()->Remove(history);
+  EXPECT_FALSE(model()->GetTemplateURLForKeyword(u"@history"));
+
+  // Register an extension with @history keyword.
+  model()->RegisterOmniboxKeyword("abcdefg", "extension_name", "@history",
+                                  "http://abcdefg", Time());
+  EXPECT_TRUE(model()->GetTemplateURLForKeyword(u"@history"));
+
+  // Now perform the actual repair that should restore @history.
+  model()->RepairStarterPackEngines();
+
+  // The keyword for bookmarks wasn't reverted.
+  EXPECT_EQ(u"trash", bookmarks->short_name());
+  EXPECT_EQ("chrome://bookmarks/?q={searchTerms}", bookmarks->url());
+
+  // @history was repaired, verify that the NORMAL built-in engine is still back
+  // even though the @history extension outranks the built-in engine.
+  history = nullptr;
+  for (TemplateURL* turl : model()->GetTemplateURLs()) {
+    if (turl->keyword() == u"@history" && turl->type() == TemplateURL::NORMAL &&
+        turl->starter_pack_id() > 0) {
+      history = turl;
+      break;
+    }
+  }
+  EXPECT_THAT(history, NotNull());
+}
+
 TEST_F(TemplateURLServiceTest, UpdateKeywordSearchTermsForURL) {
   struct TestData {
     const std::string url;
diff --git a/chrome/browser/signin/dice_web_signin_interceptor.cc b/chrome/browser/signin/dice_web_signin_interceptor.cc
index 416f814..1c87bfd 100644
--- a/chrome/browser/signin/dice_web_signin_interceptor.cc
+++ b/chrome/browser/signin/dice_web_signin_interceptor.cc
@@ -7,6 +7,7 @@
 #include <string>
 
 #include "base/check.h"
+#include "base/feature_list.h"
 #include "base/hash/hash.h"
 #include "base/i18n/case_conversion.h"
 #include "base/metrics/field_trial_params.h"
@@ -33,6 +34,7 @@
 #include "chrome/browser/signin/dice_signed_in_profile_creator.h"
 #include "chrome/browser/signin/dice_web_signin_interceptor_factory.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
+#include "chrome/browser/signin/signin_features.h"
 #include "chrome/browser/signin/signin_util.h"
 #include "chrome/browser/themes/theme_service.h"
 #include "chrome/browser/themes/theme_service_factory.h"
@@ -415,6 +417,12 @@
 bool DiceWebSigninInterceptor::ShouldShowEnterpriseDialog(
     const AccountInfo& intercepted_account_info) const {
   DCHECK(intercepted_account_info.IsValid());
+
+  if (!base::FeatureList::IsEnabled(
+          kShowEnterpriseDialogForAllManagedAccountsSignin)) {
+    return false;
+  }
+
   // Check if the intercepted account is managed.
   if (!intercepted_account_info.IsManaged())
     return false;
diff --git a/chrome/browser/signin/dice_web_signin_interceptor_unittest.cc b/chrome/browser/signin/dice_web_signin_interceptor_unittest.cc
index 84dbe915..9393650e 100644
--- a/chrome/browser/signin/dice_web_signin_interceptor_unittest.cc
+++ b/chrome/browser/signin/dice_web_signin_interceptor_unittest.cc
@@ -19,6 +19,7 @@
 #include "chrome/browser/signin/chrome_signin_client_factory.h"
 #include "chrome/browser/signin/chrome_signin_client_test_util.h"
 #include "chrome/browser/signin/identity_test_environment_profile_adaptor.h"
+#include "chrome/browser/signin/signin_features.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/common/chrome_constants.h"
 #include "chrome/common/pref_names.h"
@@ -176,7 +177,8 @@
     testing::Mock::VerifyAndClearExpectations(mock_delegate());
     histogram_tester.ExpectUniqueSample("Signin.Intercept.HeuristicOutcome",
                                         expected_outcome, 1);
-    EXPECT_TRUE(interceptor()->is_interception_in_progress());
+    EXPECT_EQ(interceptor()->is_interception_in_progress(),
+              SigninInterceptionHeuristicOutcomeIsSuccess(expected_outcome));
   }
 
  protected:
@@ -415,6 +417,55 @@
 };
 
 TEST_P(DiceWebSigninInterceptorManagedAccountTest,
+       NoForcedInterceptionShowsDialogIfFeatureEnabled) {
+  base::test::ScopedFeatureList scoped_list;
+  scoped_list.InitAndEnableFeature(
+      kShowEnterpriseDialogForAllManagedAccountsSignin);
+  // Reauth intercepted if enterprise confirmation not shown yet for forced
+  // managed separation.
+  AccountInfo account_info = identity_test_env()->MakePrimaryAccountAvailable(
+      "alice@example.com", signin::ConsentLevel::kSignin);
+  MakeValidAccountInfo(&account_info, "example.com");
+  identity_test_env()->UpdateAccountInfoForAccount(account_info);
+  interceptor()->SetAccountLevelSigninRestrictionFetchResultForTesting("");
+
+  DiceWebSigninInterceptor::Delegate::BubbleParameters expected_parameters(
+      DiceWebSigninInterceptor::SigninInterceptionType::
+          kEnterpriseAcceptManagement,
+      account_info, account_info, SkColor(), /*show_guest_option=*/false,
+      /*show_link_data_option=*/true);
+  EXPECT_CALL(*mock_delegate(),
+              ShowSigninInterceptionBubble(
+                  web_contents(), MatchBubbleParameters(expected_parameters),
+                  testing::_));
+  TestAsynchronousInterception(
+      account_info, /*is_new_account=*/true, /*is_sync_signin=*/false,
+      SigninInterceptionHeuristicOutcome::kInterceptEnterprise);
+}
+
+TEST_P(DiceWebSigninInterceptorManagedAccountTest,
+       NoForcedInterceptionShowsNoBubble) {
+  // Reauth intercepted if enterprise confirmation not shown yet for forced
+  // managed separation.
+  AccountInfo account_info = identity_test_env()->MakePrimaryAccountAvailable(
+      "alice@example.com", signin::ConsentLevel::kSignin);
+  MakeValidAccountInfo(&account_info, "example.com");
+  identity_test_env()->UpdateAccountInfoForAccount(account_info);
+  interceptor()->SetAccountLevelSigninRestrictionFetchResultForTesting("");
+
+  bool signin_interception_enabled = GetParam();
+  if (signin_interception_enabled) {
+    TestAsynchronousInterception(
+        account_info, /*is_new_account=*/true, /*is_sync_signin=*/false,
+        SigninInterceptionHeuristicOutcome::kAbortAccountInfoNotCompatible);
+  } else {
+    TestAsynchronousInterception(
+        account_info, /*is_new_account=*/true, /*is_sync_signin=*/false,
+        SigninInterceptionHeuristicOutcome::kAbortInterceptionDisabled);
+  }
+}
+
+TEST_P(DiceWebSigninInterceptorManagedAccountTest,
        EnforceManagedAccountAsPrimaryReauth) {
   profile()->GetPrefs()->SetBoolean(
       prefs::kManagedAccountsSigninRestrictionScopeMachine, true);
diff --git a/chrome/browser/signin/signin_features.cc b/chrome/browser/signin/signin_features.cc
index 81fcbe7..f85323c0 100644
--- a/chrome/browser/signin/signin_features.cc
+++ b/chrome/browser/signin/signin_features.cc
@@ -17,3 +17,9 @@
 // for the sign-in intercept bubble.
 const base::Feature kSigninInterceptBubbleV2{"SigninInterceptBubbleV2",
                                              base::FEATURE_DISABLED_BY_DEFAULT};
+
+// Enables showing the enterprise dialog after every signin into a managed
+// account.
+const base::Feature kShowEnterpriseDialogForAllManagedAccountsSignin{
+    "ShowEnterpriseDialogForAllManagedAccountsSignin",
+    base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/chrome/browser/signin/signin_features.h b/chrome/browser/signin/signin_features.h
index 66afe307..c0ecb097 100644
--- a/chrome/browser/signin/signin_features.h
+++ b/chrome/browser/signin/signin_features.h
@@ -13,4 +13,6 @@
 
 extern const base::Feature kSigninInterceptBubbleV2;
 
+extern const base::Feature kShowEnterpriseDialogForAllManagedAccountsSignin;
+
 #endif  // CHROME_BROWSER_SIGNIN_SIGNIN_FEATURES_H_
diff --git a/chrome/browser/speech/extension_api/tts_engine_extension_api.cc b/chrome/browser/speech/extension_api/tts_engine_extension_api.cc
index 30f4819..4b0dcde8 100644
--- a/chrome/browser/speech/extension_api/tts_engine_extension_api.cc
+++ b/chrome/browser/speech/extension_api/tts_engine_extension_api.cc
@@ -340,7 +340,7 @@
 
   // Pass through most options to the speech engine, but remove some
   // that are handled internally.
-  base::Value::Dict options = utterance->GetOptions()->GetDict().Clone();
+  base::Value::Dict options = utterance->GetOptions()->Clone();
   options.Remove(constants::kRequiredEventTypesKey);
   options.Remove(constants::kDesiredEventTypesKey);
   if (sends_end_event)
diff --git a/chrome/browser/speech/extension_api/tts_extension_api.cc b/chrome/browser/speech/extension_api/tts_extension_api.cc
index acf3c64..23dd8597 100644
--- a/chrome/browser/speech/extension_api/tts_extension_api.cc
+++ b/chrome/browser/speech/extension_api/tts_extension_api.cc
@@ -191,39 +191,27 @@
     return RespondNow(Error(constants::kErrorUtteranceTooLong));
   }
 
-  std::unique_ptr<base::DictionaryValue> options(new base::DictionaryValue());
-  if (args().size() >= 2) {
-    if (args()[1].is_dict()) {
-      const base::DictionaryValue& temp_options =
-          base::Value::AsDictionaryValue(args()[1]);
-      options.reset(temp_options.DeepCopy());
-    }
-  }
+  base::Value::Dict options;
+  if (args().size() >= 2 && args()[1].is_dict())
+    options = args()[1].GetDict().Clone();
 
   std::string voice_name;
-  if (options->FindKey(constants::kVoiceNameKey)) {
-    EXTENSION_FUNCTION_VALIDATE(
-        options->GetString(constants::kVoiceNameKey, &voice_name));
+  if (base::Value* voice_name_value = options.Find(constants::kVoiceNameKey)) {
+    EXTENSION_FUNCTION_VALIDATE(voice_name_value->is_string());
+    voice_name = voice_name_value->GetString();
   }
 
   std::string lang;
-  if (options->FindKey(constants::kLangKey))
-    EXTENSION_FUNCTION_VALIDATE(options->GetString(constants::kLangKey, &lang));
+  if (base::Value* lang_value = options.Find(constants::kLangKey)) {
+    EXTENSION_FUNCTION_VALIDATE(lang_value->is_string());
+    lang = lang_value->GetString();
+  }
   if (!lang.empty() && !l10n_util::IsValidLocaleSyntax(lang)) {
     return RespondNow(Error(constants::kErrorInvalidLang));
   }
 
-  // TODO(katie): Remove this after M73. This is just used to track how the
-  // gender deprecation is progressing.
-  std::string gender_str;
-  if (options->FindKey(constants::kGenderKey))
-    EXTENSION_FUNCTION_VALIDATE(
-        options->GetString(constants::kGenderKey, &gender_str));
-  UMA_HISTOGRAM_BOOLEAN("TextToSpeech.Utterance.HasGender",
-                        !gender_str.empty());
-
   double rate = blink::mojom::kSpeechSynthesisDoublePrefNotSet;
-  if (base::Value* rate_value = options->FindKey(constants::kRateKey)) {
+  if (base::Value* rate_value = options.Find(constants::kRateKey)) {
     EXTENSION_FUNCTION_VALIDATE(rate_value->GetIfDouble());
     rate = rate_value->GetIfDouble().value_or(rate);
     if (rate < 0.1 || rate > 10.0) {
@@ -232,7 +220,7 @@
   }
 
   double pitch = blink::mojom::kSpeechSynthesisDoublePrefNotSet;
-  if (base::Value* pitch_value = options->FindKey(constants::kPitchKey)) {
+  if (base::Value* pitch_value = options.Find(constants::kPitchKey)) {
     EXTENSION_FUNCTION_VALIDATE(pitch_value->GetIfDouble());
     pitch = pitch_value->GetIfDouble().value_or(pitch);
     if (pitch < 0.0 || pitch > 2.0) {
@@ -241,7 +229,7 @@
   }
 
   double volume = blink::mojom::kSpeechSynthesisDoublePrefNotSet;
-  if (base::Value* volume_value = options->FindKey(constants::kVolumeKey)) {
+  if (base::Value* volume_value = options.Find(constants::kVolumeKey)) {
     EXTENSION_FUNCTION_VALIDATE(volume_value->GetIfDouble());
     volume = volume_value->GetIfDouble().value_or(volume);
     if (volume < 0.0 || volume > 1.0) {
@@ -249,18 +237,17 @@
     }
   }
 
-  bool can_enqueue =
-      options->FindBoolKey(constants::kEnqueueKey).value_or(false);
-  if (base::Value* value = options->FindKey(constants::kEnqueueKey)) {
+  bool can_enqueue = options.FindBool(constants::kEnqueueKey).value_or(false);
+  if (base::Value* value = options.Find(constants::kEnqueueKey)) {
     EXTENSION_FUNCTION_VALIDATE(value->is_bool());
   }
 
   std::set<content::TtsEventType> required_event_types;
-  if (options->FindKey(constants::kRequiredEventTypesKey)) {
-    base::ListValue* list;
-    EXTENSION_FUNCTION_VALIDATE(
-        options->GetList(constants::kRequiredEventTypesKey, &list));
-    for (const base::Value& i : list->GetListDeprecated()) {
+  if (options.contains(constants::kRequiredEventTypesKey)) {
+    base::Value::List* list =
+        options.FindList(constants::kRequiredEventTypesKey);
+    EXTENSION_FUNCTION_VALIDATE(list);
+    for (const base::Value& i : *list) {
       const std::string* event_type = i.GetIfString();
       if (event_type) {
         required_event_types.insert(
@@ -270,11 +257,11 @@
   }
 
   std::set<content::TtsEventType> desired_event_types;
-  if (options->FindKey(constants::kDesiredEventTypesKey)) {
-    base::ListValue* list;
-    EXTENSION_FUNCTION_VALIDATE(
-        options->GetList(constants::kDesiredEventTypesKey, &list));
-    for (const base::Value& i : list->GetListDeprecated()) {
+  if (options.contains(constants::kDesiredEventTypesKey)) {
+    base::Value::List* list =
+        options.FindList(constants::kDesiredEventTypesKey);
+    EXTENSION_FUNCTION_VALIDATE(list);
+    for (const base::Value& i : *list) {
       const std::string* event_type = i.GetIfString();
       if (event_type)
         desired_event_types.insert(TtsEventTypeFromString(event_type->c_str()));
@@ -282,13 +269,14 @@
   }
 
   std::string voice_extension_id;
-  if (options->FindKey(constants::kExtensionIdKey)) {
-    EXTENSION_FUNCTION_VALIDATE(
-        options->GetString(constants::kExtensionIdKey, &voice_extension_id));
+  if (base::Value* voice_extension_id_value =
+          options.Find(constants::kExtensionIdKey)) {
+    EXTENSION_FUNCTION_VALIDATE(voice_extension_id_value);
+    voice_extension_id = voice_extension_id_value->GetString();
   }
 
   int src_id = -1;
-  base::Value* src_id_value = options->FindKey(constants::kSrcIdKey);
+  base::Value* src_id_value = options.Find(constants::kSrcIdKey);
   if (src_id_value) {
     EXTENSION_FUNCTION_VALIDATE(src_id_value->is_int());
     src_id = src_id_value->GetInt();
@@ -334,7 +322,7 @@
   utterance->SetRequiredEventTypes(required_event_types);
   utterance->SetDesiredEventTypes(desired_event_types);
   utterance->SetEngineId(voice_extension_id);
-  utterance->SetOptions(options.get());
+  utterance->SetOptions(std::move(options));
   if (extension())
     utterance->SetEventDelegate(new TtsExtensionEventHandler(extension_id()));
 
diff --git a/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc b/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc
index 3642c25..dabd7a2 100644
--- a/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc
+++ b/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc
@@ -1500,12 +1500,17 @@
   SetFavicon(0, bookmark, icon_url, CreateFavicon(SK_ColorWHITE),
              bookmarks_helper::FROM_UI);
 
-  ASSERT_TRUE(
-      UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
   ASSERT_TRUE(bookmarks_helper::ServerBookmarksEqualityChecker(
                   {{title, GURL(kBookmarkPageUrl)}},
                   /*cryptographer=*/nullptr)
                   .Wait());
+  // TODO(crbug.com/1330378): for some reason it's important to put
+  // UpdatedProgressMarkerChecker after (not before)
+  // ServerBookmarksEqualityChecker, otherwise, test became flaky. Investigate
+  // whether there is an issue with UpdatedProgressMarkerChecker (e.g.
+  // satisfying exit condition early, if change still didn't reach sync thread).
+  ASSERT_TRUE(
+      UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
 
   // Stop Sync and update local entity to enter in unsynced state.
   GetClient(kSingleProfileIndex)->StopSyncServiceWithoutClearingData();
@@ -1513,15 +1518,8 @@
   SetTitle(kSingleProfileIndex, bookmark, new_title);
 }
 
-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
-// Flaky on most desktop platforms. See https://crbug.com/1330378.
-#define MAYBE_ShouldUploadUnsyncedEntityAfterRestart DISABLED_ShouldUploadUnsyncedEntityAfterRestart
-#else
-#define MAYBE_ShouldUploadUnsyncedEntityAfterRestart ShouldUploadUnsyncedEntityAfterRestart
-#endif
-
 IN_PROC_BROWSER_TEST_F(SingleClientBookmarksSyncTest,
-                       MAYBE_ShouldUploadUnsyncedEntityAfterRestart) {
+                       ShouldUploadUnsyncedEntityAfterRestart) {
   ASSERT_TRUE(SetupClients());
 
   const std::string title = "Title";
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_af.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_af.xtb
index 8163cd0..3163128 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_af.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_af.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Lys eiebewyse wat met aanraking ingevul moet word.</translation>
 <translation id="3653689374478248324">Jy sal aanmeld by <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Meld aan</translation>
+<translation id="5014228528537508015">Meld by hierdie werf aan?</translation>
 <translation id="5441504010984421144">Lys eiebewyse wat met aanraking ingevul moet word, is teen volle hoogte oopgemaak.</translation>
 <translation id="5624120631404540903">Bestuur wagwoorde</translation>
 <translation id="804577341878669140">Gaan voort met rekening</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bs.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bs.xtb
index 2bb2a8f..eaeafa8e 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bs.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bs.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Lista akreditiva za popunjavanje dodirom.</translation>
 <translation id="3653689374478248324">Prijavljujete se na <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Prijava</translation>
+<translation id="5014228528537508015">Prijaviti se na ovu web lokaciju?</translation>
 <translation id="5441504010984421144">Lista akreditiva za popunjavanje dodirom je otvorena na cijelom ekranu.</translation>
 <translation id="5624120631404540903">Upravljajte lozinkama</translation>
 <translation id="804577341878669140">Nastavite s računom</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_el.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_el.xtb
index f1449a7..887162d2 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_el.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_el.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Η λίστα με τα διαπιστευτήρια για συμπλήρωση μέσω αφής.</translation>
 <translation id="3653689374478248324">Θα συνδεθείτε στο <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Σύνδεση</translation>
+<translation id="5014228528537508015">Σύνδεση σε αυτόν τον ιστότοπο;</translation>
 <translation id="5441504010984421144">Η λίστα με τα διαπιστευτήρια για συμπλήρωση μέσω αφής είναι ανοιχτή σε όλη την οθόνη.</translation>
 <translation id="5624120631404540903">Διαχείριση κωδικών πρόσβασης</translation>
 <translation id="804577341878669140">Συνέχεια με τον λογαριασμό</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fil.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fil.xtb
index 072af1d1..6cea0f7a 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fil.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fil.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Listahan ng mga kredensyal na pupunan kapag pinindot.</translation>
 <translation id="3653689374478248324">Magsa-sign in ka sa <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Mag-sign in</translation>
+<translation id="5014228528537508015">Mag-sign in sa site na ito?</translation>
 <translation id="5441504010984421144">Nakabukas nang buo ang taas ang listahan ng mga kredensyal na pupunan kapag pinindot.</translation>
 <translation id="5624120631404540903">Pamahalaan ang mga password</translation>
 <translation id="804577341878669140">Magpatuloy gamit ang account</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hr.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hr.xtb
index a31711e..afd889a9 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hr.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hr.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Popis vjerodajnica za unos dodirom.</translation>
 <translation id="3653689374478248324">Prijavit ćete se na <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Prijava</translation>
+<translation id="5014228528537508015">Želite li se prijaviti na ovu web-lokaciju?</translation>
 <translation id="5441504010984421144">Popis vjerodajnica za unos dodirom otvoren je preko cijelog zaslona.</translation>
 <translation id="5624120631404540903">Upravljanje zaporkama</translation>
 <translation id="804577341878669140">Nastavite uz račun</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hy.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hy.xtb
index f6fa661..c1ea750 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hy.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hy.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Մուտքի տվյալները, որոնք պետք է լրացվեն հպման ժամանակ։</translation>
 <translation id="3653689374478248324">Դուք մուտք կգործեք <ph name="SITE_NAME" /> կայք</translation>
 <translation id="3950820424414687140">Մուտք գործել</translation>
+<translation id="5014228528537508015">Մուտք գործե՞լ այս կայք</translation>
 <translation id="5441504010984421144">Մուտքի տվյալները, որոնք պետք է լրացվեն հպումով, ցուցադրված են ամբողջ էկրանով:</translation>
 <translation id="5624120631404540903">Կառավարել գաղտնաբառերը</translation>
 <translation id="804577341878669140">Շարունակել հաշվով</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ka.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ka.xtb
index 2fb7a736..260eb07 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ka.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ka.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">შეხებისას შესავსები ავტორიზაციის მონაცემების სია.</translation>
 <translation id="3653689374478248324">თქვენ შეხვალთ <ph name="SITE_NAME" />-ში</translation>
 <translation id="3950820424414687140">შესვლა</translation>
+<translation id="5014228528537508015">გსურთ, შეხვიდეთ ამ საიტში?</translation>
 <translation id="5441504010984421144">შეხებისას შესავსები ავტორიზაციის მონაცემების სია გახსნილია სრულ სიმაღლეზე.</translation>
 <translation id="5624120631404540903">პაროლების მართვა</translation>
 <translation id="804577341878669140">ანგარიშით გაგრძელება</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_km.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_km.xtb
index a2eb616..aa735f29 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_km.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_km.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">បញ្ជី​ព័ត៌មាន​ផ្ទៀងផ្ទាត់ ដែលត្រូវ​បំពេញ​ដោយការប៉ះ។</translation>
 <translation id="3653689374478248324">អ្នកនឹងចូល <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">ចូល</translation>
+<translation id="5014228528537508015">ចូល​គេហទំព័រ​នេះ​ឬ?</translation>
 <translation id="5441504010984421144">បញ្ជី​ព័ត៌មាន​ផ្ទៀងផ្ទាត់ ដែលត្រូវ​បំពេញ​ដោយ​ការប៉ះ​ត្រូវបាន​បើក​ពេញ​អេក្រង់។</translation>
 <translation id="5624120631404540903">គ្រប់គ្រងពាក្យសម្ងាត់</translation>
 <translation id="804577341878669140">បន្ត​ដោយ​ប្រើគណនី</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mk.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mk.xtb
index 04c259f..8037278 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mk.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mk.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Список со акредитиви што се пополнуваат со допир.</translation>
 <translation id="3653689374478248324">Ќе се најавите на <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Најави се</translation>
+<translation id="5014228528537508015">Сакате да се најавите на сајтов?</translation>
 <translation id="5441504010984421144">Списокот со акредитиви што се пополнуваат со допир е отворен на цел екран.</translation>
 <translation id="5624120631404540903">Управувај со лозинки</translation>
 <translation id="804577341878669140">Продолжете со сметката</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ml.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ml.xtb
index 89688de..da221c2 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ml.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ml.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">ടച്ച് ചെയ്യുമ്പോൾ പൂരിപ്പിക്കേണ്ട ക്രെഡൻ‍ഷ്യലുകളുടെ ലിസ്‌റ്റ്.</translation>
 <translation id="3653689374478248324">നിങ്ങൾ <ph name="SITE_NAME" /> -ലേക്ക് സൈൻ ഇൻ ചെയ്യും</translation>
 <translation id="3950820424414687140">സൈൻ ഇൻ ചെയ്യുക</translation>
+<translation id="5014228528537508015">ഈ സൈറ്റിലേക്ക് സൈൻ ഇൻ ചെയ്യണോ?</translation>
 <translation id="5441504010984421144">ടച്ച് ചെയ്യുമ്പോൾ പൂരിപ്പിക്കേണ്ട ക്രെഡൻഷ്യലുകളുടെ ലിസ്റ്റ് പൂർണ്ണ ഉയരത്തിൽ തുറന്നിരിക്കുന്നു.</translation>
 <translation id="5624120631404540903">പാസ്‌വേഡുകൾ നിയന്ത്രിക്കുക</translation>
 <translation id="804577341878669140">അക്കൗണ്ടിൽ തുടരുക</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mn.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mn.xtb
index de1e6c3e..131d35f 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mn.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mn.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Хүрэхэд гүйцээж бөглөх мандат үнэмлэхийн жагсаалт.</translation>
 <translation id="3653689374478248324">Та <ph name="SITE_NAME" />-д нэвтэрнэ</translation>
 <translation id="3950820424414687140">Нэвтрэх</translation>
+<translation id="5014228528537508015">Энэ сайт руу нэвтрэх үү?</translation>
 <translation id="5441504010984421144">Хүрэхэд гүйцээж бөглөх мандат үнэмлэхийн жагсаалтыг бүтэн өндрөөр нээлээ.</translation>
 <translation id="5624120631404540903">Нууц үгийг удирдах</translation>
 <translation id="804577341878669140">Дараах бүртгэлээр үргэлжлүүлэх</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mr.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mr.xtb
index 29d791e..32fce3b6 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mr.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mr.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">स्पर्श करून भरायची असलेली क्रेडेंशियलची सूची.</translation>
 <translation id="3653689374478248324">तुम्ही <ph name="SITE_NAME" /> मध्ये साइन इन कराल</translation>
 <translation id="3950820424414687140">साइन इन करा</translation>
+<translation id="5014228528537508015">या साइटमध्ये साइन इन करायचे आहे का?</translation>
 <translation id="5441504010984421144">स्पर्श करून भरायची असलेली क्रेडेंशियलची सूची संपूर्ण भागावर उघडली आहे.</translation>
 <translation id="5624120631404540903">पासवर्ड व्यवस्थापित करा</translation>
 <translation id="804577341878669140">खात्यासह पुढे सुरू ठेवा</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ms.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ms.xtb
index 9f90fe1..8bc61da 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ms.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ms.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Senarai bukti kelayakan untuk diisi apabila disentuh.</translation>
 <translation id="3653689374478248324">Anda akan log masuk ke <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Log masuk</translation>
+<translation id="5014228528537508015">Log masuk ke laman ini?</translation>
 <translation id="5441504010984421144">Senarai bukti kelayakan untuk diisi apabila disentuh, dibuka pada ketinggian penuh.</translation>
 <translation id="5624120631404540903">Urus kata laluan</translation>
 <translation id="804577341878669140">Teruskan dengan akaun</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_no.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_no.xtb
index c01fc3d..dce1756 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_no.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_no.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Listen over legitimasjon som kan fylles ut ved å trykke.</translation>
 <translation id="3653689374478248324">Du er i ferd med å logge på <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Logg på</translation>
+<translation id="5014228528537508015">Vil du logge på dette nettstedet?</translation>
 <translation id="5441504010984421144">Listen over legitimasjon som kan fylles ut ved å trykke, er åpnet i full høyde.</translation>
 <translation id="5624120631404540903">Administrer passord</translation>
 <translation id="804577341878669140">Fortsett med konto</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pt-PT.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pt-PT.xtb
index f1fd8b74..73b799f 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pt-PT.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pt-PT.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Lista de credenciais a preencher com o toque.</translation>
 <translation id="3653689374478248324">Vai iniciar sessão no site <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Iniciar sessão</translation>
+<translation id="5014228528537508015">Iniciar sessão neste site?</translation>
 <translation id="5441504010984421144">Lista de credenciais a preencher com o toque aberta em ecrã cheio.</translation>
 <translation id="5624120631404540903">Gerir palavras-passe</translation>
 <translation id="804577341878669140">Continue com a conta</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sk.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sk.xtb
index 75c1580..99692511 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sk.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sk.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Zoznam prihlasovacích údajov na vyplnenie po klepnutí.</translation>
 <translation id="3653689374478248324">Prihlásite sa na webe <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Prihlásiť sa</translation>
+<translation id="5014228528537508015">Chcete sa prihlásiť na tento web?</translation>
 <translation id="5441504010984421144">Zoznam prihlasovacích údajov na vyplnenie po klepnutí je otvorený na úplnú výšku.</translation>
 <translation id="5624120631404540903">Správa hesiel</translation>
 <translation id="804577341878669140">Pokračujte pomocou účtu</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sr-Latn.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sr-Latn.xtb
index a223860..ad455a9 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sr-Latn.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sr-Latn.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Lista akreditiva koji treba da se unesu na dodir.</translation>
 <translation id="3653689374478248324">Prijavićete se na <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Prijavi me</translation>
+<translation id="5014228528537508015">Želite li da se prijavite na ovaj sajt?</translation>
 <translation id="5441504010984421144">Lista akreditiva koji treba da se unesu na dodir se otvorila na celom ekranu,</translation>
 <translation id="5624120631404540903">Upravljaj lozinkama</translation>
 <translation id="804577341878669140">Nastavite sa nalogom</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sr.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sr.xtb
index fa3a2b72..015f5c2 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sr.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sr.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">Листа акредитива који треба да се унесу на додир.</translation>
 <translation id="3653689374478248324">Пријавићете се на <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Пријави ме</translation>
+<translation id="5014228528537508015">Желите ли да се пријавите на овај сајт?</translation>
 <translation id="5441504010984421144">Листа акредитива који треба да се унесу на додир се отворила на целом екрану,</translation>
 <translation id="5624120631404540903">Управљај лозинкама</translation>
 <translation id="804577341878669140">Наставите са налогом</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_th.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_th.xtb
index 5cb09b0..7b6850b3 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_th.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_th.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">รายการข้อมูลเข้าสู่ระบบที่จะกรอกเมื่อแตะ</translation>
 <translation id="3653689374478248324">คุณจะลงชื่อเข้าใช้ <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">ลงชื่อเข้าใช้</translation>
+<translation id="5014228528537508015">ลงชื่อเข้าใช้เว็บไซต์นี้ใช่ไหม</translation>
 <translation id="5441504010984421144">รายการข้อมูลเข้าสู่ระบบที่จะกรอกเมื่อแตะเปิดอยู่ที่ระดับความสูงเต็มหน้าจอ</translation>
 <translation id="5624120631404540903">จัดการรหัสผ่าน</translation>
 <translation id="804577341878669140">ดำเนินการต่อกับบัญชี</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-HK.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-HK.xtb
index 6e54e84..f4d8351 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-HK.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-HK.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">㩒一下先可以填嘅憑證清單。</translation>
 <translation id="3653689374478248324">您將會登入 <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">登入</translation>
+<translation id="5014228528537508015">要登入這個網站嗎?</translation>
 <translation id="5441504010984421144">㩒一下先可以填嘅憑證清單,宜家顯示喺成個畫面。</translation>
 <translation id="5624120631404540903">管理密碼</translation>
 <translation id="804577341878669140">登入帳戶繼續</translation>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-TW.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-TW.xtb
index cb192bf..5f8cda3 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-TW.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-TW.xtb
@@ -9,6 +9,7 @@
 <translation id="3399357656427473483">輕觸即可填入的憑證清單。</translation>
 <translation id="3653689374478248324">你即將登入 <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">登入</translation>
+<translation id="5014228528537508015">要登入這個網站嗎?</translation>
 <translation id="5441504010984421144">輕觸即可填入的憑證清單已開啟,顯示於整個畫面。</translation>
 <translation id="5624120631404540903">管理密碼</translation>
 <translation id="804577341878669140">繼續使用帳戶登入</translation>
diff --git a/chrome/browser/ui/android/signin/java/res/layout/signout_wipe_storage_dialog.xml b/chrome/browser/ui/android/signin/java/res/layout/signout_wipe_storage_dialog.xml
index 317d7b0..46854970 100644
--- a/chrome/browser/ui/android/signin/java/res/layout/signout_wipe_storage_dialog.xml
+++ b/chrome/browser/ui/android/signin/java/res/layout/signout_wipe_storage_dialog.xml
@@ -18,8 +18,7 @@
         android:id="@android:id/message"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:textAppearance="@style/TextAppearance.TextMedium.Primary"
-        android:text="@string/turn_off_sync_and_signout_message"/>
+        android:textAppearance="@style/TextAppearance.TextMedium.Primary"/>
 
     <CheckBox
         android:id="@+id/remove_local_data"
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogCoordinator.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogCoordinator.java
index c377c92..e04fd8e 100644
--- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogCoordinator.java
+++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogCoordinator.java
@@ -21,6 +21,7 @@
 import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
 import org.chromium.chrome.browser.signin.services.SigninMetricsUtils;
 import org.chromium.components.signin.GAIAServiceType;
+import org.chromium.components.signin.identitymanager.ConsentLevel;
 import org.chromium.components.user_prefs.UserPrefs;
 import org.chromium.ui.modaldialog.DialogDismissalCause;
 import org.chromium.ui.modaldialog.ModalDialogManager;
@@ -86,17 +87,19 @@
         final View view =
                 LayoutInflater.from(context).inflate(R.layout.signout_wipe_storage_dialog, null);
         ((TextView) view.findViewById(android.R.id.title))
-                .setText(getTitleId(managedDomain, actionType));
-        if (managedDomain != null) {
-            ((TextView) view.findViewById(android.R.id.message))
-                    .setText(context.getString(
-                            R.string.signout_managed_account_message, managedDomain));
-        }
+                .setText(getTitleRes(managedDomain, actionType));
+        ((TextView) view.findViewById(android.R.id.message))
+                .setText(getMessage(context, managedDomain));
 
         return view;
     }
 
-    private static @StringRes int getTitleId(String managedDomain, @ActionType int actionType) {
+    private static @StringRes int getTitleRes(String managedDomain, @ActionType int actionType) {
+        if (!IdentityServicesProvider.get()
+                        .getIdentityManager(Profile.getLastUsedRegularProfile())
+                        .hasPrimaryAccount(ConsentLevel.SYNC)) {
+            return R.string.signout_title;
+        }
         if (managedDomain != null) {
             return R.string.signout_managed_account_title;
         }
@@ -111,12 +114,28 @@
         }
     }
 
+    private static String getMessage(Context context, String managedDomain) {
+        if (!IdentityServicesProvider.get()
+                        .getIdentityManager(Profile.getLastUsedRegularProfile())
+                        .hasPrimaryAccount(ConsentLevel.SYNC)) {
+            return context.getString(R.string.signout_message);
+        }
+        if (managedDomain != null) {
+            return context.getString(R.string.signout_managed_account_message, managedDomain);
+        }
+        return context.getString(R.string.turn_off_sync_and_signout_message);
+    }
+
     private static int getCheckBoxVisibility(String managedDomain) {
         // TODO(crbug.com/1294761): extract logic for whether data wiping is allowed into
         // SigninManager.
         final boolean allowDeletingData = UserPrefs.get(Profile.getLastUsedRegularProfile())
                                                   .getBoolean(Pref.ALLOW_DELETING_BROWSER_HISTORY);
-        final boolean showCheckBox = (managedDomain == null) && allowDeletingData;
+        final boolean hasSyncConsent =
+                IdentityServicesProvider.get()
+                        .getIdentityManager(Profile.getLastUsedRegularProfile())
+                        .hasPrimaryAccount(ConsentLevel.SYNC);
+        final boolean showCheckBox = (managedDomain == null) && allowDeletingData && hasSyncConsent;
         return showCheckBox ? View.VISIBLE : View.GONE;
     }
 
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogRenderTest.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogRenderTest.java
index 49b1e2a..047a8ec 100644
--- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogRenderTest.java
+++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogRenderTest.java
@@ -40,6 +40,8 @@
 import org.chromium.chrome.test.util.ChromeRenderTestRule;
 import org.chromium.components.prefs.PrefService;
 import org.chromium.components.signin.GAIAServiceType;
+import org.chromium.components.signin.identitymanager.ConsentLevel;
+import org.chromium.components.signin.identitymanager.IdentityManager;
 import org.chromium.components.user_prefs.UserPrefs;
 import org.chromium.components.user_prefs.UserPrefsJni;
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
@@ -77,6 +79,9 @@
     private SigninManager mSigninManagerMock;
 
     @Mock
+    private IdentityManager mIdentityManagerMock;
+
+    @Mock
     private Profile mProfile;
 
     @Mock
@@ -96,6 +101,9 @@
         Profile.setLastUsedProfileForTesting(mProfile);
         IdentityServicesProvider.setInstanceForTests(mock(IdentityServicesProvider.class));
         when(IdentityServicesProvider.get().getSigninManager(any())).thenReturn(mSigninManagerMock);
+        when(IdentityServicesProvider.get().getIdentityManager(any()))
+                .thenReturn(mIdentityManagerMock);
+        when(mIdentityManagerMock.hasPrimaryAccount(ConsentLevel.SYNC)).thenReturn(true);
         mocker.mock(UserPrefsJni.TEST_HOOKS, mUserPrefsMock);
         mActivityTestRule.launchActivity(null);
     }
@@ -113,9 +121,40 @@
     @Test
     @LargeTest
     @Feature("RenderTest")
+    public void testSignOutDialogForNonSyncingAccount() throws Exception {
+        mockAllowDeletingBrowserHistoryPref(true);
+        when(mIdentityManagerMock.hasPrimaryAccount(ConsentLevel.SYNC)).thenReturn(false);
+
+        mRenderTestRule.render(showSignOutDialog(), "signout_dialog_for_non_syncing_account");
+    }
+
+    @Test
+    @LargeTest
+    @Feature("RenderTest")
+    public void testSignOutDialogForNonSyncingManagedAccount() throws Exception {
+        mockAllowDeletingBrowserHistoryPref(true);
+        when(mIdentityManagerMock.hasPrimaryAccount(ConsentLevel.SYNC)).thenReturn(false);
+
+        mRenderTestRule.render(showSignOutDialog(), "signout_dialog_for_non_syncing_account");
+    }
+
+    @Test
+    @LargeTest
+    @Feature("RenderTest")
+    public void testTurnOffSyncDialogForNonSyncingAccount() throws Exception {
+        mockAllowDeletingBrowserHistoryPref(true);
+        when(mIdentityManagerMock.hasPrimaryAccount(ConsentLevel.SYNC)).thenReturn(false);
+
+        mRenderTestRule.render(showSignOutDialog(), "signout_dialog_for_non_syncing_account");
+    }
+
+    @Test
+    @LargeTest
+    @Feature("RenderTest")
     public void testSignOutDialogForManagedAccount() throws Exception {
         mockAllowDeletingBrowserHistoryPref(true);
         when(mSigninManagerMock.getManagementDomain()).thenReturn(TEST_DOMAIN);
+
         mRenderTestRule.render(showSignOutDialog(), "signout_dialog_for_managed_account");
     }
 
@@ -124,6 +163,7 @@
     @Feature("RenderTest")
     public void testSignOutDialogForManagedAccountCannotDeleteHistory() throws Exception {
         mockAllowDeletingBrowserHistoryPref(false);
+
         mRenderTestRule.render(showTurnOffSyncDialog(),
                 "signout_dialog_for_managed_account_cannot_delete_history");
     }
@@ -133,6 +173,7 @@
     @Feature("RenderTest")
     public void testSignOutDialogForNonManagedAccount() throws Exception {
         mockAllowDeletingBrowserHistoryPref(true);
+
         mRenderTestRule.render(showSignOutDialog(), "signout_dialog_for_non_managed_account");
     }
 
@@ -141,6 +182,7 @@
     @Feature("RenderTest")
     public void testTurnOffSyncDialogForNonManagedAccount() throws Exception {
         mockAllowDeletingBrowserHistoryPref(true);
+
         mRenderTestRule.render(
                 showTurnOffSyncDialog(), "turn_off_sync_dialog_for_non_managed_account");
     }
@@ -150,6 +192,7 @@
     @Feature("RenderTest")
     public void testTurnOffSyncDialogForNonManagedAccountCannotDeleteHistory() throws Exception {
         mockAllowDeletingBrowserHistoryPref(false);
+
         mRenderTestRule.render(showTurnOffSyncDialog(),
                 "turn_off_sync_dialog_for_non_managed_account_cannot_delete_history");
     }
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogTest.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogTest.java
index 65d3161..2e394a9 100644
--- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogTest.java
+++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogTest.java
@@ -17,6 +17,7 @@
 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.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
@@ -47,6 +48,8 @@
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.components.prefs.PrefService;
 import org.chromium.components.signin.GAIAServiceType;
+import org.chromium.components.signin.identitymanager.ConsentLevel;
+import org.chromium.components.signin.identitymanager.IdentityManager;
 import org.chromium.components.user_prefs.UserPrefs;
 import org.chromium.components.user_prefs.UserPrefsJni;
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
@@ -74,6 +77,9 @@
     private SigninManager mSigninManagerMock;
 
     @Mock
+    private IdentityManager mIdentityManagerMock;
+
+    @Mock
     private Profile mProfile;
 
     @Mock
@@ -92,11 +98,45 @@
         IdentityServicesProvider.setInstanceForTests(mock(IdentityServicesProvider.class));
         Profile.setLastUsedProfileForTesting(mProfile);
         when(IdentityServicesProvider.get().getSigninManager(any())).thenReturn(mSigninManagerMock);
+        when(IdentityServicesProvider.get().getIdentityManager(any()))
+                .thenReturn(mIdentityManagerMock);
+        when(mIdentityManagerMock.hasPrimaryAccount(anyInt())).thenReturn(true);
         mActivityTestRule.launchActivity(null);
     }
 
     @Test
     @MediumTest
+    public void testDialogForNonSyncingAccount() {
+        mockAllowDeletingBrowserHistoryPref(true);
+        when(mIdentityManagerMock.hasPrimaryAccount(ConsentLevel.SYNC)).thenReturn(false);
+
+        showSignOutDialog();
+
+        onView(withText(R.string.signout_title)).inRoot(isDialog()).check(matches(isDisplayed()));
+        onView(withText(R.string.signout_message)).inRoot(isDialog()).check(matches(isDisplayed()));
+        onView(withId(R.id.remove_local_data))
+                .inRoot(isDialog())
+                .check(matches(not(isDisplayed())));
+    }
+
+    @Test
+    @MediumTest
+    public void testDialogForNonSyncingManagedAccount() {
+        mockAllowDeletingBrowserHistoryPref(true);
+        when(mSigninManagerMock.getManagementDomain()).thenReturn(TEST_DOMAIN);
+        when(mIdentityManagerMock.hasPrimaryAccount(ConsentLevel.SYNC)).thenReturn(false);
+
+        showSignOutDialog();
+
+        onView(withText(R.string.signout_title)).inRoot(isDialog()).check(matches(isDisplayed()));
+        onView(withText(R.string.signout_message)).inRoot(isDialog()).check(matches(isDisplayed()));
+        onView(withId(R.id.remove_local_data))
+                .inRoot(isDialog())
+                .check(matches(not(isDisplayed())));
+    }
+
+    @Test
+    @MediumTest
     public void testMessageWhenAccountIsManaged() {
         mockAllowDeletingBrowserHistoryPref(true);
         when(mSigninManagerMock.getManagementDomain()).thenReturn(TEST_DOMAIN);
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SigninPromoController.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SigninPromoController.java
index 39c716c..ca74b67 100644
--- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SigninPromoController.java
+++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SigninPromoController.java
@@ -315,7 +315,12 @@
                         "Signin_SigninNewAccountNoExistingAccount_FromNTPContentSuggestions";
                 mSyncPromoDismissedPreferenceTracker =
                         ChromePreferenceKeys.SIGNIN_PROMO_NTP_PROMO_DISMISSED;
-                mTitleStringId = R.string.sync_promo_title_ntp_content_suggestions;
+                if (ChromeFeatureList.isEnabled(
+                            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE)) {
+                    mTitleStringId = R.string.sync_promo_alternative_title_ntp_content_suggestions;
+                } else {
+                    mTitleStringId = R.string.sync_promo_title_ntp_content_suggestions;
+                }
                 if (ChromeFeatureList.isEnabled(ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE)) {
                     mDescriptionStringId = R.string.sync_promo_description_ntp_content_suggestions;
                     mDescriptionStringIdNoAccount =
@@ -340,7 +345,12 @@
                 mSigninNewAccountUserActionName =
                         "Signin_SigninNewAccountNoExistingAccount_FromRecentTabs";
                 mSyncPromoDismissedPreferenceTracker = null;
-                mTitleStringId = R.string.sync_promo_title_recent_tabs;
+                if (ChromeFeatureList.isEnabled(
+                            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE)) {
+                    mTitleStringId = R.string.sync_promo_alternative_title_recent_tabs;
+                } else {
+                    mTitleStringId = R.string.sync_promo_title_recent_tabs;
+                }
                 if (ChromeFeatureList.isEnabled(ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE)) {
                     mDescriptionStringId = R.string.sync_promo_description_recent_tabs;
                     mDescriptionStringIdNoAccount = R.string.sync_promo_description_recent_tabs;
@@ -363,7 +373,12 @@
                         "Signin_ImpressionWithNoAccount_FromSettings";
                 mSyncPromoDismissedPreferenceTracker =
                         ChromePreferenceKeys.SIGNIN_PROMO_SETTINGS_PERSONALIZED_DISMISSED;
-                mTitleStringId = R.string.sync_promo_title_settings;
+                if (ChromeFeatureList.isEnabled(
+                            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE)) {
+                    mTitleStringId = R.string.sync_promo_alternative_title_settings;
+                } else {
+                    mTitleStringId = R.string.sync_promo_title_settings;
+                }
                 if (ChromeFeatureList.isEnabled(ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE)) {
                     mDescriptionStringId = R.string.sync_promo_description_settings;
                     mDescriptionStringIdNoAccount = R.string.sync_promo_description_settings;
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SigninPromoControllerRenderTest.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SigninPromoControllerRenderTest.java
index bb4850a..623b04b 100644
--- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SigninPromoControllerRenderTest.java
+++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SigninPromoControllerRenderTest.java
@@ -22,7 +22,6 @@
 import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
 
-import org.chromium.base.ThreadUtils;
 import org.chromium.base.test.BaseActivityTestRule;
 import org.chromium.base.test.params.ParameterAnnotations;
 import org.chromium.base.test.params.ParameterSet;
@@ -54,6 +53,12 @@
 @RunWith(ParameterizedRunner.class)
 @ParameterAnnotations.UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
 @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
+@DisableFeatures({
+        ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE,
+        ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+        ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+        ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+})
 public class SigninPromoControllerRenderTest {
     @ParameterAnnotations.ClassParameter
     private static List<ParameterSet> sClassParams =
@@ -103,6 +108,942 @@
         mRenderTestRule.setNightModeEnabled(nightModeEnabled);
     }
 
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    public void testBookmarkSyncPromoViewSignedOutAndNoAccountAvailable() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache,
+                R.layout.personalized_signin_promo_view_bookmarks);
+        mRenderTestRule.render(
+                view, "bookmark_sync_promo_view_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+    })
+    public void
+    testBookmarkSyncPromoViewSignedOutAndNoAccountAvailableWithIllustration() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache,
+                R.layout.personalized_signin_promo_view_bookmarks);
+        mRenderTestRule.render(
+                view, "bookmark_sync_promo_illustration_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+    })
+    public void
+    testBookmarkSyncPromoViewSignedOutAndNoAccountAvailableWithSingleButton() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache,
+                R.layout.personalized_signin_promo_view_bookmarks);
+        mRenderTestRule.render(
+                view, "bookmark_sync_promo_single_button_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+    })
+    public void
+    testBookmarkSyncPromoViewSignedOutAndNoAccountAvailableWithTitle() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache,
+                R.layout.personalized_signin_promo_view_bookmarks);
+        mRenderTestRule.render(
+                view, "bookmark_sync_promo_title_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    public void testBookmarkSyncPromoViewSignedOutAndAccountAvailable() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache,
+                R.layout.personalized_signin_promo_view_bookmarks);
+        mRenderTestRule.render(view, "bookmark_sync_promo_view_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+    })
+    public void
+    testBookmarkSyncPromoViewSignedOutAndAccountAvailableWithIllustration() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache,
+                R.layout.personalized_signin_promo_view_bookmarks);
+        mRenderTestRule.render(
+                view, "bookmark_sync_promo_illustration_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+    })
+    public void
+    testBookmarkSyncPromoViewSignedOutAndAccountAvailableWithSingleButton() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache,
+                R.layout.personalized_signin_promo_view_bookmarks);
+        mRenderTestRule.render(
+                view, "bookmark_sync_promo_single_button_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+    })
+    public void
+    testBookmarkSyncPromoViewSignedOutAndAccountAvailableWithTitle() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache,
+                R.layout.personalized_signin_promo_view_bookmarks);
+        mRenderTestRule.render(view, "bookmark_sync_promo_title_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    public void testBookmarkSyncPromoViewSignedInAndNotSyncing() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache,
+                R.layout.personalized_signin_promo_view_bookmarks);
+        mRenderTestRule.render(view, "bookmark_sync_promo_view_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+    })
+    public void
+    testBookmarkSyncPromoViewSignedInAndNotSyncingWithIllustration() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache,
+                R.layout.personalized_signin_promo_view_bookmarks);
+        mRenderTestRule.render(view, "bookmark_sync_promo_illustration_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+    })
+    public void
+    testBookmarkSyncPromoViewSignedInAndNotSyncingWithSingleButton() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache,
+                R.layout.personalized_signin_promo_view_bookmarks);
+        mRenderTestRule.render(view, "bookmark_sync_promo_single_button_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+    })
+    public void
+    testBookmarkSyncPromoViewSignedInAndNotSyncingWithTitle() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache,
+                R.layout.personalized_signin_promo_view_bookmarks);
+        mRenderTestRule.render(view, "bookmark_sync_promo_title_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    public void testSettingsSyncPromoViewSignedOutAndNoAccountAvailable() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(
+                view, "settings_sync_promo_view_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE,
+    })
+    public void
+    testSettingsSyncPromoViewSignedOutAndNoAccountAvailableWithAlternativeTitle() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(
+                view, "settings_sync_promo_alternative_title_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+    })
+    public void
+    testSettingsSyncPromoViewSignedOutAndNoAccountAvailableWithIllustration() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(
+                view, "settings_sync_promo_illustration_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+    })
+    public void
+    testSettingsSyncPromoViewSignedOutAndNoAccountAvailableWithSingleButton() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(
+                view, "settings_sync_promo_single_button_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+    })
+    public void
+    testSettingsSyncPromoViewSignedOutAndNoAccountAvailableWithTitle() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(
+                view, "settings_sync_promo_title_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    public void testSettingsSyncPromoViewSignedOutAndAccountAvailable() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(view, "settings_sync_promo_view_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE,
+    })
+    public void
+    testSettingsSyncPromoViewSignedOutAndAccountAvailableWithAlternativeTitle() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(
+                view, "settings_sync_promo_alternative_title_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+    })
+    public void
+    testSettingsSyncPromoViewSignedOutAndAccountAvailableWithIllustration() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(
+                view, "settings_sync_promo_illustration_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+    })
+    public void
+    testSettingsSyncPromoViewSignedOutAndAccountAvailableWithSingleButton() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(
+                view, "settings_sync_promo_single_button_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+    })
+    public void
+    testSettingsSyncPromoViewSignedOutAndAccountAvailableWithTitle() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(view, "settings_sync_promo_title_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    public void testSettingsSyncPromoViewSignedInAndNotSyncing() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(view, "settings_sync_promo_view_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE,
+    })
+    public void
+    testSettingsSyncPromoViewSignedInAndNotSyncingWithAlternativeTitle() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(
+                view, "settings_sync_promo_alternative_title_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+    })
+    public void
+    testSettingsSyncPromoViewSignedInAndNotSyncingWithIllustration() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(view, "settings_sync_promo_illustration_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+    })
+    public void
+    testSettingsSyncPromoViewSignedInAndNotSyncingWithSingleButton() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(view, "settings_sync_promo_single_button_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+    })
+    public void
+    testSettingsSyncPromoViewSignedInAndNotSyncingWithTitle() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.SETTINGS, profileDataCache,
+                R.layout.personalized_signin_promo_view_settings);
+        mRenderTestRule.render(view, "settings_sync_promo_title_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    public void testRecentTabsSyncPromoViewSignedOutAndNoAccountAvailable() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(
+                view, "recent_tabs_sync_promo_view_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE,
+    })
+    public void
+    testRecentTabsSyncPromoViewSignedOutAndNoAccountAvailableWithAlternativeTitle()
+            throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(view,
+                "recent_tabs_sync_promo_alternative_title_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+    })
+    public void
+    testRecentTabsSyncPromoViewSignedOutAndNoAccountAvailableWithIllustration() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(
+                view, "recent_tabs_sync_promo_illustration_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+    })
+    public void
+    testRecentTabsSyncPromoViewSignedOutAndNoAccountAvailableWithSingleButton() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(
+                view, "recent_tabs_sync_promo_single_button_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+    })
+    public void
+    testRecentTabsSyncPromoViewSignedOutAndNoAccountAvailableWithTitle() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(
+                view, "recent_tabs_sync_promo_title_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    public void testRecentTabsSyncPromoViewSignedOutAndAccountAvailable() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(
+                view, "recent_tabs_sync_promo_view_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE,
+    })
+    public void
+    testRecentTabsSyncPromoViewSignedOutAndAccountAvailableWithAlternativeTitle() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(
+                view, "recent_tabs_sync_promo_alternative_title_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+    })
+    public void
+    testRecentTabsSyncPromoViewSignedOutAndAccountAvailableWithIllustration() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(
+                view, "recent_tabs_sync_promo_illustration_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+    })
+    public void
+    testRecentTabsSyncPromoViewSignedOutAndAccountAvailableWithSingleButton() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(
+                view, "recent_tabs_sync_promo_single_button_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+    })
+    public void
+    testRecentTabsSyncPromoViewSignedOutAndAccountAvailableWithTitle() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(
+                view, "recent_tabs_sync_promo_title_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    public void testRecentTabsSyncPromoViewSignedInAndNotSyncing() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(view, "recent_tabs_sync_promo_view_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE,
+    })
+    public void
+    testRecentTabsSyncPromoViewSignedInAndNotSyncingWithAlternativeTitle() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(
+                view, "recent_tabs_sync_promo_alternative_title_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+    })
+    public void
+    testRecentTabsSyncPromoViewSignedInAndNotSyncingWithIllustration() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(
+                view, "recent_tabs_sync_promo_illustration_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+    })
+    public void
+    testRecentTabsSyncPromoViewSignedInAndNotSyncingWithSingleButton() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(
+                view, "recent_tabs_sync_promo_single_button_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+    })
+    public void
+    testRecentTabsSyncPromoViewSignedInAndNotSyncingWithTitle() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.RECENT_TABS, profileDataCache,
+                R.layout.personalized_signin_promo_view_recent_tabs);
+        mRenderTestRule.render(view, "recent_tabs_sync_promo_title_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    public void testNTPSyncPromoViewSignedOutAndNoAccountAvailable() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(view,
+                "ntp_content_suggestions_sync_promo_view_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE,
+    })
+    public void
+    testNTPSyncPromoViewSignedOutAndNoAccountAvailableWithAlternativeTitle() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(view,
+                "ntp_content_suggestions_sync_promo_alternative_title_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+    })
+    public void
+    testNTPSyncPromoViewSignedOutAndNoAccountAvailableWithIllustration() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(view,
+                "ntp_content_suggestions_sync_promo_illustration_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+    })
+    public void
+    testNTPSyncPromoViewSignedOutAndNoAccountAvailableWithSingleButton() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(view,
+                "ntp_content_suggestions_sync_promo_single_button_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+    })
+    public void
+    testNTPSyncPromoViewSignedOutAndNoAccountAvailableWithTitle() throws Throwable {
+        ProfileDataCache profileDataCache = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
+            return ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
+                    mActivityTestRule.getActivity());
+        });
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(view,
+                "ntp_content_suggestions_sync_promo_title_signed_out_and_no_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    public void testNTPSyncPromoViewSignedOutAndAccountAvailable() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(
+                view, "ntp_content_suggestions_sync_promo_view_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE,
+    })
+    public void
+    testNTPSyncPromoViewSignedOutAndAccountAvailableWithAlternativeTitle() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(view,
+                "ntp_content_suggestions_sync_promo_alternative_title_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+    })
+    public void
+    testNTPSyncPromoViewSignedOutAndAccountAvailableWithIllustration() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(view,
+                "ntp_content_suggestions_sync_promo_illustration_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+    })
+    public void
+    testNTPSyncPromoViewSignedOutAndAccountAvailableWithSingleButton() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(view,
+                "ntp_content_suggestions_sync_promo_single_button_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+    })
+    public void
+    testNTPSyncPromoViewSignedOutAndAccountAvailableWithTitle() throws Throwable {
+        mAccountManagerTestRule.addAccount(TEST_EMAIL);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(
+                view, "ntp_content_suggestions_sync_promo_title_signed_out_and_account_available");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    public void testNTPSyncPromoViewSignedInAndNotSyncing() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(
+                view, "ntp_content_suggestions_sync_promo_view_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ALTERNATIVE_TITLE,
+    })
+    public void
+    testNTPSyncPromoViewSignedInAndNotSyncingWithAlternativeTitle() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(view,
+                "ntp_content_suggestions_sync_promo_alternative_title_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
+    })
+    public void
+    testNTPSyncPromoViewSignedInAndNotSyncingWithIllustration() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(
+                view, "ntp_content_suggestions_sync_promo_illustration_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
+    })
+    public void
+    testNTPSyncPromoViewSignedInAndNotSyncingWithSingleButton() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(
+                view, "ntp_content_suggestions_sync_promo_single_button_signed_in_and_not_syncing");
+    }
+
+    @Test
+    @MediumTest
+    @Feature("RenderTest")
+    @EnableFeatures({
+            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE,
+    })
+    public void
+    testNTPSyncPromoViewSignedInAndNotSyncingWithTitle() throws Throwable {
+        CoreAccountInfo coreAccountInfo =
+                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
+        SigninTestUtil.signin(coreAccountInfo);
+        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+        View view = setUpSyncPromoView(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache,
+                R.layout.personalized_signin_promo_view_modern_content_suggestions);
+        mRenderTestRule.render(
+                view, "ntp_content_suggestions_sync_promo_title_signed_in_and_not_syncing");
+    }
+
     // TODO(crbug.com/1314490): In production we observe the onProfileDataUpdated() event and then
     // update the view, but that's done outside of SigninPromoController, the logic is duplicated
     // for each entry point. In the long term, we should have a single observer internal to the UI
@@ -122,1170 +1063,24 @@
         return profileDataCache;
     }
 
-    private void setContentViewAndSetUpSyncPromoView(
-            View view, @AccessPoint int accessPoint, ProfileDataCache profileDataCache) {
-        ThreadUtils.assertOnUiThread();
-        Activity activity = mActivityTestRule.getActivity();
-        LinearLayout content = new LinearLayout(activity);
-        content.addView(view,
-                new LayoutParams(
-                        ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
-        activity.setContentView(content);
-        SigninPromoController signinPromoController =
-                new SigninPromoController(accessPoint, mSyncConsentActivityLauncher);
-        signinPromoController.setUpSyncPromoView(profileDataCache,
-                view.findViewById(R.id.signin_promo_view_container),
-                accessPoint == SigninAccessPoint.RECENT_TABS ? null : () -> {});
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testBookmarkSyncPromoViewSignedOutAndNoAccountAvailableWithFeaturesDisabled() throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_bookmarks, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "bookmark_sync_promo_view_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testBookmarkSyncPromoViewSignedOutAndNoAccountAvailableWithIllustrationFeatureEnabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_bookmarks, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "bookmark_sync_promo_illustration_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testBookmarkSyncPromoViewSignedOutAndNoAccountAvailableWithSingleButtonFeatureEnabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_bookmarks, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "bookmark_sync_promo_single_button_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    public void
-    testBookmarkSyncPromoViewSignedOutAndNoAccountAvailableWithTitleFeatureEnabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_bookmarks, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "bookmark_sync_promo_title_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testBookmarkSyncPromoViewSignedOutAndAccountAvailableWithFeaturesDisabled() throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
+    private View setUpSyncPromoView(
+            @AccessPoint int accessPoint, ProfileDataCache profileDataCache, int layoutResId) {
         View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
             View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_bookmarks, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache);
+                    LayoutInflater.from(mActivityTestRule.getActivity()).inflate(layoutResId, null);
+            Activity activity = mActivityTestRule.getActivity();
+            LinearLayout content = new LinearLayout(activity);
+            content.addView(promoView,
+                    new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+                            ViewGroup.LayoutParams.WRAP_CONTENT));
+            activity.setContentView(content);
+            SigninPromoController signinPromoController =
+                    new SigninPromoController(accessPoint, mSyncConsentActivityLauncher);
+            signinPromoController.setUpSyncPromoView(profileDataCache,
+                    promoView.findViewById(R.id.signin_promo_view_container),
+                    accessPoint == SigninAccessPoint.RECENT_TABS ? null : () -> {});
             return promoView;
         });
-        mRenderTestRule.render(view, "bookmark_sync_promo_view_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testBookmarkSyncPromoViewSignedOutAndAccountAvailableWithIllustrationFeatureEnabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_bookmarks, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "bookmark_sync_promo_illustration_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testBookmarkSyncPromoViewSignedOutAndAccountAvailableWithSingleButtonFeatureEnabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_bookmarks, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "bookmark_sync_promo_single_button_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    public void
-    testBookmarkSyncPromoViewSignedOutAndAccountAvailableWithTitleFeatureEnabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_bookmarks, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "bookmark_sync_promo_title_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testBookmarkSyncPromoViewSignedInAndNotSyncingWithFeaturesDisabled() throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_bookmarks, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "bookmark_sync_promo_view_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testBookmarkSyncPromoViewSignedInAndNotSyncingWithIllustrationFeatureEnabled()
-            throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_bookmarks, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "bookmark_sync_promo_illustration_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testBookmarkSyncPromoViewSignedInAndNotSyncingWithSingleButtonFeatureEnabled()
-            throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_bookmarks, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "bookmark_sync_promo_single_button_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    public void
-    testBookmarkSyncPromoViewSignedInAndNotSyncingWithTitleFeatureEnabled() throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_bookmarks, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.BOOKMARK_MANAGER, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "bookmark_sync_promo_title_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testSettingsSyncPromoViewSignedOutAndNoAccountAvailableWithFeaturesDisabled() throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_settings, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.SETTINGS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "settings_sync_promo_view_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testSettingsSyncPromoViewSignedOutAndNoAccountAvailableWithIllustrationFeatureEnabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_settings, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.SETTINGS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "settings_sync_promo_illustration_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testSettingsSyncPromoViewSignedOutAndNoAccountAvailableWithSingleButtonFeatureEnabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_settings, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.SETTINGS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "settings_sync_promo_single_button_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    public void
-    testSettingsSyncPromoViewSignedOutAndNoAccountAvailableWithTitleFeatureEnabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_settings, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.SETTINGS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "settings_sync_promo_title_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testSettingsSyncPromoViewSignedOutAndAccountAvailableWithFeaturesDisabled() throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_settings, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.SETTINGS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "settings_sync_promo_view_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testSettingsSyncPromoViewSignedOutAndAccountAvailableWithIllustrationFeatureEnabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_settings, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.SETTINGS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "settings_sync_promo_illustration_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testSettingsSyncPromoViewSignedOutAndAccountAvailableWithSingleButtonFeatureEnabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_settings, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.SETTINGS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "settings_sync_promo_single_button_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    public void
-    testSettingsSyncPromoViewSignedOutAndAccountAvailableWithTitleFeatureEnabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_settings, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.SETTINGS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "settings_sync_promo_title_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testSettingsSyncPromoViewSignedInAndNotSyncingWithFeaturesDisabled() throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_settings, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.SETTINGS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "settings_sync_promo_view_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testSettingsSyncPromoViewSignedInAndNotSyncingWithIllustrationFeatureEnabled()
-            throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_settings, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.SETTINGS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "settings_sync_promo_illustration_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testSettingsSyncPromoViewSignedInAndNotSyncingWithSingleButtonFeatureEnabled()
-            throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_settings, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.SETTINGS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "settings_sync_promo_single_button_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    public void
-    testSettingsSyncPromoViewSignedInAndNotSyncingWithTitleFeatureEnabled() throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_settings, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.SETTINGS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "settings_sync_promo_title_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testRecentTabsSyncPromoViewSignedOutAndNoAccountAvailableWithFeaturesDisabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_recent_tabs, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.RECENT_TABS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "recent_tabs_sync_promo_view_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testRecentTabsSyncPromoViewSignedOutAndNoAccountAvailableWithIllustrationFeatureEnabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_recent_tabs, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.RECENT_TABS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "recent_tabs_sync_promo_illustration_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testRecentTabsSyncPromoViewSignedOutAndNoAccountAvailableWithSingleButtonFeatureEnabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_recent_tabs, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.RECENT_TABS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "recent_tabs_sync_promo_single_button_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    public void
-    testRecentTabsSyncPromoViewSignedOutAndNoAccountAvailableWithTitleFeatureEnabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_recent_tabs, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.RECENT_TABS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "recent_tabs_sync_promo_title_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testRecentTabsSyncPromoViewSignedOutAndAccountAvailableWithFeaturesDisabled() throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_recent_tabs, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.RECENT_TABS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "recent_tabs_sync_promo_view_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testRecentTabsSyncPromoViewSignedOutAndAccountAvailableWithIllustrationFeatureEnabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_recent_tabs, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.RECENT_TABS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "recent_tabs_sync_promo_illustration_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testRecentTabsSyncPromoViewSignedOutAndAccountAvailableWithSingleButtonFeatureEnabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_recent_tabs, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.RECENT_TABS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "recent_tabs_sync_promo_single_button_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    public void
-    testRecentTabsSyncPromoViewSignedOutAndAccountAvailableWithTitleFeatureEnabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_recent_tabs, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.RECENT_TABS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "recent_tabs_sync_promo_title_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testRecentTabsSyncPromoViewSignedInAndNotSyncingWithFeaturesDisabled() throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_recent_tabs, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.RECENT_TABS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "recent_tabs_sync_promo_view_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testRecentTabsSyncPromoViewSignedInAndNotSyncingWithIllustrationFeatureEnabled()
-            throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_recent_tabs, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.RECENT_TABS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "recent_tabs_sync_promo_illustration_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testRecentTabsSyncPromoViewSignedInAndNotSyncingWithSingleButtonFeatureEnabled()
-            throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_recent_tabs, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.RECENT_TABS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "recent_tabs_sync_promo_single_button_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    public void
-    testRecentTabsSyncPromoViewSignedInAndNotSyncingWithTitleFeatureEnabled() throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(R.layout.personalized_signin_promo_view_recent_tabs, null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.RECENT_TABS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view, "recent_tabs_sync_promo_title_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testNTPContentSuggestionsSyncPromoViewSignedOutAndNoAccountAvailableWithFeaturesDisabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(
-                                    R.layout.personalized_signin_promo_view_modern_content_suggestions,
-                                    null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view,
-                "ntp_content_suggestions_sync_promo_view_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testNTPContentSuggestionsSyncPromoViewSignedOutAndNoAccountAvailableWithIllustrationFeatureEnabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(
-                                    R.layout.personalized_signin_promo_view_modern_content_suggestions,
-                                    null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view,
-                "ntp_content_suggestions_sync_promo_illustration_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testNTPContentSuggestionsSyncPromoViewSignedOutAndNoAccountAvailableWithSingleButtonFeatureEnabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(
-                                    R.layout.personalized_signin_promo_view_modern_content_suggestions,
-                                    null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view,
-                "ntp_content_suggestions_sync_promo_single_button_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    public void
-    testNTPContentSuggestionsSyncPromoViewSignedOutAndNoAccountAvailableWithTitleFeatureEnabled()
-            throws Throwable {
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            ProfileDataCache profileDataCache =
-                    ProfileDataCache.createWithDefaultImageSizeAndNoBadge(
-                            mActivityTestRule.getActivity());
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(
-                                    R.layout.personalized_signin_promo_view_modern_content_suggestions,
-                                    null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view,
-                "ntp_content_suggestions_sync_promo_title_signed_out_and_no_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testNTPContentSuggestionsSyncPromoViewSignedOutAndAccountAvailableWithFeaturesDisabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(
-                                    R.layout.personalized_signin_promo_view_modern_content_suggestions,
-                                    null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "ntp_content_suggestions_sync_promo_view_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testNTPContentSuggestionsSyncPromoViewSignedOutAndAccountAvailableWithIllustrationFeatureEnabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(
-                                    R.layout.personalized_signin_promo_view_modern_content_suggestions,
-                                    null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view,
-                "ntp_content_suggestions_sync_promo_illustration_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testNTPContentSuggestionsSyncPromoViewSignedOutAndAccountAvailableWithSingleButtonFeatureEnabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(
-                                    R.layout.personalized_signin_promo_view_modern_content_suggestions,
-                                    null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(view,
-                "ntp_content_suggestions_sync_promo_single_button_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    public void
-    testNTPContentSuggestionsSyncPromoViewSignedOutAndAccountAvailableWithTitleFeatureEnabled()
-            throws Throwable {
-        mAccountManagerTestRule.addAccount(TEST_EMAIL);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(
-                                    R.layout.personalized_signin_promo_view_modern_content_suggestions,
-                                    null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "ntp_content_suggestions_sync_promo_title_signed_out_and_account_available");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testNTPContentSuggestionsSyncPromoViewSignedInAndNotSyncingWithFeaturesDisabled()
-            throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(
-                                    R.layout.personalized_signin_promo_view_modern_content_suggestions,
-                                    null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "ntp_content_suggestions_sync_promo_view_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testNTPContentSuggestionsSyncPromoViewSignedInAndNotSyncingWithIllustrationFeatureEnabled()
-            throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(
-                                    R.layout.personalized_signin_promo_view_modern_content_suggestions,
-                                    null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "ntp_content_suggestions_sync_promo_illustration_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    public void
-    testNTPContentSuggestionsSyncPromoViewSignedInAndNotSyncingWithSingleButtonFeatureEnabled()
-            throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(
-                                    R.layout.personalized_signin_promo_view_modern_content_suggestions,
-                                    null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "ntp_content_suggestions_sync_promo_single_button_signed_in_and_not_syncing");
-    }
-
-    @Test
-    @MediumTest
-    @Feature("RenderTest")
-    @EnableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_TITLE})
-    @DisableFeatures({ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_ILLUSTRATION,
-            ChromeFeatureList.SYNC_ANDROID_PROMOS_WITH_SINGLE_BUTTON})
-    public void
-    testNTPContentSuggestionsSyncPromoViewSignedInAndNotSyncingWithTitleFeatureEnabled()
-            throws Throwable {
-        CoreAccountInfo coreAccountInfo =
-                mAccountManagerTestRule.addAccountAndWaitForSeeding(TEST_EMAIL);
-        SigninTestUtil.signin(coreAccountInfo);
-        ProfileDataCache profileDataCache = createProfileDataCacheAndWaitForAccountData();
-        View view = TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
-            View promoView =
-                    LayoutInflater.from(mActivityTestRule.getActivity())
-                            .inflate(
-                                    R.layout.personalized_signin_promo_view_modern_content_suggestions,
-                                    null);
-            setContentViewAndSetUpSyncPromoView(
-                    promoView, SigninAccessPoint.NTP_CONTENT_SUGGESTIONS, profileDataCache);
-            return promoView;
-        });
-        mRenderTestRule.render(
-                view, "ntp_content_suggestions_sync_promo_title_signed_in_and_not_syncing");
+        return view;
     }
 }
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
index 232fcdc..a2af5f5 100644
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1902,6 +1902,9 @@
       </message>
 
       <!-- Sign-in strings -->
+      <message name="IDS_SIGNOUT_TITLE" desc="The text is displayed as the title of a dialog to confirm if the user wants to sign out of Chrome. The user can cancel and stay signed in, or confirm and sign out.">
+        Sign out of Chrome?
+      </message>
       <message name="IDS_TURN_OFF_SYNC_AND_SIGNOUT_TITLE" desc="Title for sign out of Chrome dialog [CHAR_LIMIT=40]">
         Sign out and turn off sync?
       </message>
@@ -1911,6 +1914,9 @@
       <message name="IDS_SIGNOUT_MANAGED_ACCOUNT_TITLE" desc="Title for sign out of Chrome dialog for enterprise account [CHAR_LIMIT=40]">
         Clear your Chrome data from this device?
       </message>
+      <message name="IDS_SIGNOUT_MESSAGE" desc="The text is displayed as the message of a dialog to confirm whether the user wants to sign out of Chrome. The dialog is titled ‘Sign out of Chrome?’. The user can cancel and stay signed in, or confirm and sign out.">
+        Some Chrome features won\u2019t be available anymore
+      </message>
       <message name="IDS_TURN_OFF_SYNC_AND_SIGNOUT_MESSAGE" desc="Message to display in 'Sign out and turn off sync?' dialog">
         Your bookmarks, history, passwords, and other Chrome data will no longer be synced to your Google Account
       </message>
@@ -2472,9 +2478,6 @@
       <message name="IDS_PAGE_INFO_CONNECTION_PAINT_PREVIEW" desc="Message to display in the page info bubble when viewing a preview of a page.">
         You are viewing a preview of this page
       </message>
-      <message name="IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE" desc="Link in page info to learn more about the current page. Opens a website with details on the source and more information about the topic of a site.">
-        More about this page
-      </message>
 
 <message name="IDS_PAGE_INFO_IPH" desc="Message to in InProductHelp bubble to make users aware of changing permissions in PageInfo.">
         Change your site settings here
@@ -2926,6 +2929,9 @@
       <message name="IDS_SYNC_PROMO_TITLE_NTP_CONTENT_SUGGESTIONS" desc="This string is the headline of a card that appears when the user visits Chrome's new tab page; the user may be signed in to Chrome, but isn't syncing their Chrome data. The line below this string is 'Sync to get the most relevant content from Google'. [CHAR_LIMIT=70]" meaning="This headline means that the user is missing out on more interesting and relevant news articles. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting.">
         See content for you
       </message>
+      <message name="IDS_SYNC_PROMO_ALTERNATIVE_TITLE_NTP_CONTENT_SUGGESTIONS" desc="This string is the headline of a card that appears when the user visits Chrome's new tab page; the user may be signed in to Chrome, but isn't syncing their Chrome data. The line below this string is 'Sync to get the most relevant content from Google'. [CHAR_LIMIT=70]" meaning="This headline means that the user is missing out on more interesting and relevant news articles. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting.">
+        Get better suggestions
+      </message>
       <message name="IDS_SYNC_PROMO_DESCRIPTION_NTP_CONTENT_SUGGESTIONS" desc="This string is the body of a card that appears when the user visits Chrome's new tab page; the user may be signed in to Chrome, but isn't syncing their Chrome data. The headline above this string is 'See stories for you'. There's no character limit but try to keep the translation under 120 characters." meaning="This message means that the user is missing out on more interesting and relevant news articles. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting.">
         Sync to get the most relevant content from Google
       </message>
@@ -2938,6 +2944,9 @@
       <message name="IDS_SYNC_PROMO_TITLE_RECENT_TABS" desc="This string is the headline of a card that appears when the user opens Chrome's recent tabs. The user may be signed in to Chrome, but isn't syncing their Chrome data. The line below this string is 'Sync to get your tabs from your other devices'. [CHAR_LIMIT=70]" meaning="This headline means that the user can see some of their recent tabs from their computer on their phone, and their phone's recent tabs on their computer. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting.">
         Continue from another device
       </message>
+      <message name="IDS_SYNC_PROMO_ALTERNATIVE_TITLE_RECENT_TABS" desc="This string is the headline of a card that appears when the user opens Chrome's recent tabs. The user may be signed in to Chrome, but isn't syncing their Chrome data. The line below this string is 'Sync to get your tabs from your other devices'. [CHAR_LIMIT=70]" meaning="This headline means that the user can see some of their recent tabs from their computer on their phone, and their phone's recent tabs on their computer. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting.">
+        Get all your tabs
+      </message>
       <message name="IDS_SYNC_PROMO_DESCRIPTION_RECENT_TABS" desc="This string is the body of a card that appears when the user opens Chrome's recent tabs. The user may be signed in to Chrome, but isn't syncing their Chrome data. There's no character limit but try to keep the translation under 120 characters." meaning="The headline above this string is 'Continue from another device'. This message means that the user can see some of their recent tabs from their computer on their phone, and their phone's recent tabs on their computer. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting.">
         Sync to get your tabs from your other devices
       </message>
@@ -2950,6 +2959,9 @@
       <message name="IDS_SYNC_PROMO_TITLE_SETTINGS" desc="This string is the headline of a card that appears when the user opens Chrome's settings; the user may be signed in to Chrome, but isn't syncing their Chrome data. The line below this string is 'Sync to get your passwords, bookmarks and more on all your devices'. [CHAR_LIMIT=70]" meaning="This headline means that the user can use Chrome more easily by syncing their passwords, bookmarks, settings, and more.. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting.">
         Browse more easily
       </message>
+      <message name="IDS_SYNC_PROMO_ALTERNATIVE_TITLE_SETTINGS" desc="This string is the headline of a card that appears when the user opens Chrome's settings; the user may be signed in to Chrome, but isn't syncing their Chrome data. The line below this string is 'Sync to get your passwords, bookmarks and more on all your devices'. [CHAR_LIMIT=70]" meaning="This headline means that the user can use Chrome more easily by syncing their passwords, bookmarks, settings, and more.. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting.">
+        Use Chrome your way
+      </message>
       <message name="IDS_SYNC_PROMO_DESCRIPTION_SETTINGS" desc="This string is the body of a card that appears when the user opens Chrome's settings; the user may be signed in to Chrome, but isn't syncing their Chrome data. The headline above this string is 'Browse more easily'. There's no character limit but try to keep the translation under 120 characters." meaning="This message means that the user can use Chrome more easily by syncing their passwords, bookmarks, settings, and more.. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting.">
         Sync to get your passwords, bookmarks and more on all your devices
       </message>
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE.png.sha1
deleted file mode 100644
index 6a06dba..0000000
--- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-3f1ec9b84b79ea03feb6774254e90612e4d96f06
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SIGNOUT_MESSAGE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SIGNOUT_MESSAGE.png.sha1
new file mode 100644
index 0000000..a67d1cc
--- /dev/null
+++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SIGNOUT_MESSAGE.png.sha1
@@ -0,0 +1 @@
+5fbc92dd5c4b29cffcbf5ca36cd759aa776cfa43
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SIGNOUT_TITLE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SIGNOUT_TITLE.png.sha1
new file mode 100644
index 0000000..a67d1cc
--- /dev/null
+++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SIGNOUT_TITLE.png.sha1
@@ -0,0 +1 @@
+5fbc92dd5c4b29cffcbf5ca36cd759aa776cfa43
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_ALTERNATIVE_TITLE_NTP_CONTENT_SUGGESTIONS.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_ALTERNATIVE_TITLE_NTP_CONTENT_SUGGESTIONS.png.sha1
new file mode 100644
index 0000000..fa685cc
--- /dev/null
+++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_ALTERNATIVE_TITLE_NTP_CONTENT_SUGGESTIONS.png.sha1
@@ -0,0 +1 @@
+cb872bee39dad13efe5a6e40f03d2c96ee3b73ff
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_ALTERNATIVE_TITLE_RECENT_TABS.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_ALTERNATIVE_TITLE_RECENT_TABS.png.sha1
new file mode 100644
index 0000000..573b343
--- /dev/null
+++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_ALTERNATIVE_TITLE_RECENT_TABS.png.sha1
@@ -0,0 +1 @@
+1c993f643e42ae1f37c54c62e099f675d3b64e7b
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_ALTERNATIVE_TITLE_SETTINGS.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_ALTERNATIVE_TITLE_SETTINGS.png.sha1
new file mode 100644
index 0000000..ae522a7
--- /dev/null
+++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_ALTERNATIVE_TITLE_SETTINGS.png.sha1
@@ -0,0 +1 @@
+9af1f40af1460eda6ddc8be80f060d5270cfaf7b
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
index a6d0970..27f0b8ca 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Boekmerke en webgeskiedenis</translation>
 <translation id="1513814250881909472">Sinkroniseer om jou oortjies van jou ander toestelle af te kry</translation>
 <translation id="1513858653616922153">Vee wagwoord uit</translation>
+<translation id="1514552811327923157">Privacy Sandbox-porboodskap is teen volle hoogte oopgemaak</translation>
 <translation id="1518421282666914498">Emosie-GIF <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Aktief vandag</translation>
 <translation id="1538801903729528855">Kry 'n beter stemervaring op die web</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Proeflopies</translation>
 <translation id="2718352093833049315">Net met Wi-Fi</translation>
 <translation id="2718846868787000099">Die werwe wat jy besoek, kan jou voorkeure sien sodat dit vir jou inhoud in jou voorkeurtale kan wys</translation>
+<translation id="2722945394406572875">Privacy Sandbox-porboodskap is toegemaak</translation>
 <translation id="2723001399770238859">oudio</translation>
 <translation id="2732063072010454421">Kry 'n beter stemervaring</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Toestemmingversoeke</translation>
 <translation id="5355191726083956201">Verbeterde Beskerming is aan</translation>
 <translation id="5368227114232678694">Probeer Incognito om privaat op hierdie toestel te blaai</translation>
+<translation id="5371717687506906963">Privacy Sandbox-porboodskap</translation>
 <translation id="5375577065097716013">Soek prent met Google Lens <ph name="BEGIN_NEW" />Nuut<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Reaksie is verander</translation>
 <translation id="5401851137404501592">Om voort te gaan, sal <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> jou naam, e-posadres en profielfoto met hierdie werf deel.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">As Google Assistent weet wat werwe se URL'e is, kan dit jou help om take te voltooi. Jy kan Assistent in Chrome-instellings afskakel.</translation>
 <translation id="5916664084637901428">Aan</translation>
 <translation id="5919204609460789179">Dateer <ph name="PRODUCT_NAME" /> op om sinkronisering te begin</translation>
+<translation id="593625682991400408">Chrome verken tydens proeflopies maniere om strooipos, bedrog, en deling tussen werwe te beperk. Chrome <ph name="BEGIN_LINK" />skat ook jou belangstellings<ph name="END_LINK" /> wat werwe kan gebruik om vir jou advertensies te wys. Jy kan jou belangstellings in Instellings bestuur.</translation>
 <translation id="5938820472109305350">Voeg <ph name="INTEREST" /> by</translation>
 <translation id="5942872142862698679">Gebruik Google om te soek</translation>
 <translation id="5945035219773565305">Huidige aanbeveling:  <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Boekmerkstoorvloei is toegemaak</translation>
 <translation id="9108312223223904744">Foon as 'n sekuriteitsleutelvervanging</translation>
 <translation id="9108808586816295166">Veilige DNS is dalk nie die hele tyd beskikbaar nie</translation>
+<translation id="9128984223251192329">Privacy Sandbox-porboodskap is teen halwe hoogte oopgemaak</translation>
 <translation id="9133397713400217035">Verken vanlyn</translation>
 <translation id="9137013805542155359">Wys oorspronklike</translation>
 <translation id="9148126808321036104">Meld weer aan …</translation>
-<translation id="9155898266292537608">Jy kan ook soek met 'n vinnige tik op 'n woord</translation>
 <translation id="9158770349521403363">Deel net inhoud</translation>
 <translation id="9159716826369098114">Stel oortjiegroep van <ph name="TAB_COUNT" /> oortjies terug as ’n nuwe agtergrondoortjiegroep.</translation>
 <translation id="916446198114569890">Die URL'e wat jy besoek, word in jou Google-rekening gestoor</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
index 22b015ac..b0f4f87c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">ከመስመር ውጭ ያስሱ</translation>
 <translation id="9137013805542155359">የመጀመሪያውን አሳይ</translation>
 <translation id="9148126808321036104">እንደገና ይግቡ</translation>
-<translation id="9155898266292537608">እንዲሁም አንድ ቃል ላይ በፍጥነት መታ በማድረግ ፍለጋ ማድረግ ይችላሉ</translation>
 <translation id="9158770349521403363">ይዘትን ብቻ ያጋሩ</translation>
 <translation id="9159716826369098114">የ<ph name="TAB_COUNT" /> ትሮችን የትር ቡድን እንደ አዲስ የዳራ ትር ቡድን ወደነበረበት መልስ።</translation>
 <translation id="916446198114569890">የሚጎበኟቸው ዩአርኤሎች በGoogle መለያዎ ላይ ይቀመጣሉ</translation>
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 449d473..89cd8da 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">الاطّلاع بلا اتصال بالإنترنت</translation>
 <translation id="9137013805542155359">إظهار الصفحة الأصلية</translation>
 <translation id="9148126808321036104">تسجيل الدخول مرة أخرى</translation>
-<translation id="9155898266292537608">يمكنك أيضًا البحث بنقرة سريعة على كلمة</translation>
 <translation id="9158770349521403363">مشاركة المحتوى فقط</translation>
 <translation id="9159716826369098114">استعادة مجموعة تضم <ph name="TAB_COUNT" /> علامة تبويب كمجموعة علامات تبويب جديدة في الخلفية</translation>
 <translation id="916446198114569890">‏عناوين URL التي تنتقل إليها يتم حفظها في حسابك على Google.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
index 8acccfc..3d6e9dc 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">অফলাইন অৱস্থাত অন্বেষণ কৰক</translation>
 <translation id="9137013805542155359">মূল সংস্কৰণ দেখুৱাওক</translation>
 <translation id="9148126808321036104">আকৌ ছাইন ইন কৰক</translation>
-<translation id="9155898266292537608">আপুনি কোনো এটা শব্দত এবাৰ টিপিও সন্ধান কৰিব পাৰে</translation>
 <translation id="9158770349521403363">কেৱল সমল শ্বেয়াৰ কৰক</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> টা টেব থকা টেবৰ গোটক এটা নতুন নেপথ্যৰ টেবৰ গোট হিচাপে পুনৰুদ্ধাৰ কৰক।</translation>
 <translation id="916446198114569890">আপুনি চোৱা URLসমূহ আপোনাৰ Google একাউণ্টত ছেভ কৰা হৈছে</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
index 97dfec8..c085592 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
@@ -1513,7 +1513,6 @@
 <translation id="9133397713400217035">Oflayn araşdırın</translation>
 <translation id="9137013805542155359">Originalı göstərin</translation>
 <translation id="9148126808321036104">Yenidən daxil olun</translation>
-<translation id="9155898266292537608">Sözün üzərində klikləməklə axtarış edə bilərsiniz</translation>
 <translation id="9158770349521403363">Yalnız məzmun paylaşın</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> tabdan ibarət tab qrupunu yeni arxa fon tab qrupu olaraq bərpa edin.</translation>
 <translation id="916446198114569890">Ziyarət etdiyiniz keçidlər Google hesabınızda saxlanılır</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 a484dbd8..159c29f0 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Агляд па-за сеткай</translation>
 <translation id="9137013805542155359">Паказаць арыгінал</translation>
 <translation id="9148126808321036104">Увайсці зноў</translation>
-<translation id="9155898266292537608">Запусціць пошук таксама можна, коратка націснуўшы на слова</translation>
 <translation id="9158770349521403363">Абагуліць толькі змесціва</translation>
 <translation id="9159716826369098114">Аднавіць групу з некалькіх (<ph name="TAB_COUNT" />) укладак як новую фонавую групу ўкладак.</translation>
 <translation id="916446198114569890">URL-адрасы, якія вы наведвалі, захоўваюцца ў ваш Уліковы запіс Google.</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 5624e72..ed49312d 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Разглеждане в офлайн режим</translation>
 <translation id="9137013805542155359">Показване на оригинала</translation>
 <translation id="9148126808321036104">Влезте отново</translation>
-<translation id="9155898266292537608">Можете също да извършите търсене с бързо докосване на дума</translation>
 <translation id="9158770349521403363">Споделяне само на съдържанието</translation>
 <translation id="9159716826369098114">Възстановяване на група раздели от <ph name="TAB_COUNT" /> раздела като нова група на заден план.</translation>
 <translation id="916446198114569890">URL адресите, които посещавате, се запазват в профила ви в Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
index abcf304..af4ee53 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
@@ -1517,7 +1517,6 @@
 <translation id="9133397713400217035">অফলাইন কন্টেন্ট দেখুন</translation>
 <translation id="9137013805542155359">প্রকৃত রূপ দেখান</translation>
 <translation id="9148126808321036104">আবার সাইন-ইন করুন</translation>
-<translation id="9155898266292537608">এছাড়াও কোনও শব্দের উপরে ট্যাপ করেও খুঁজতে পারেন</translation>
 <translation id="9158770349521403363">শুধুমাত্র কন্টেন্ট শেয়ার করুন</translation>
 <translation id="9159716826369098114">নতুন ব্যাকগ্রাউন্ড ট্যাব গ্রুপ হিসেবে <ph name="TAB_COUNT" />টি ট্যাবের ট্যাব গ্রুপ ফিরিয়ে আনুন।</translation>
 <translation id="916446198114569890">আপনি যেসব URL ভিজিট করেন তা আপনার Google অ্যাকাউন্টে সেভ করা হয়</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
index 4e2858a..e7cf57b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Oznake i web historija</translation>
 <translation id="1513814250881909472">Sinhronizirajte da preuzmete kartice sa svojih drugih uređaja</translation>
 <translation id="1513858653616922153">Izbriši lozinku</translation>
+<translation id="1514552811327923157">Upit za Okruženje zaštićene privatnosti je otvoren do maksimalne visine</translation>
 <translation id="1518421282666914498">GIF emocija <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Aktivan danas</translation>
 <translation id="1538801903729528855">Ostvarite bolje iskustvo u korištenju glasa na webu</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Probni periodi</translation>
 <translation id="2718352093833049315">Samo na WiFi mreži</translation>
 <translation id="2718846868787000099">U svrhu prikazivanja sadržaja na željenim jezicima, web lokacije koje posjetite će moći vidjeti vaše postavke</translation>
+<translation id="2722945394406572875">Upit za Okruženje zaštićene privatnosti je zatvoren</translation>
 <translation id="2723001399770238859">zvuk</translation>
 <translation id="2732063072010454421">Bolji doživljaj glasovnog pretraživanja</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Zahtjevi za odobrenje</translation>
 <translation id="5355191726083956201">Poboljšana zaštita je uključena</translation>
 <translation id="5368227114232678694">Da privatno pregledate na ovom uređaju, isprobajte anonimni način rada</translation>
+<translation id="5371717687506906963">Upit za Okruženje zaštićene privatnosti</translation>
 <translation id="5375577065097716013">Pretraži sliku uz Objektiv <ph name="BEGIN_NEW" />Novo<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Reakcija je promijenjena</translation>
 <translation id="5401851137404501592">Da nastavite, <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> će dijeliti vaše ime i prezime, adresu e-pošte, adresu i sliku profila s ovom web lokacijom.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">Dopustite Google Asistentu pristup URL-ovima web lokacija da vam pomogne s izvršavanjem zadataka. Možete isključiti Asistenta u postavkama Chromea.</translation>
 <translation id="5916664084637901428">Uključeno</translation>
 <translation id="5919204609460789179">Ažurirajte proizvod <ph name="PRODUCT_NAME" /> da započnete sinhronizaciju</translation>
+<translation id="593625682991400408">Tokom probnih perioda, Chrome istražuje načine da ograniči neželjenu poštu, prevaru i dijeljenje između web lokacija. Chrome također <ph name="BEGIN_LINK" />procjenjuje vaša interesovanja<ph name="END_LINK" />, na temelju kojih vam web lokacije mogu prikazivati oglase. Interesovanjima možete upravljati u postavkama.</translation>
 <translation id="5938820472109305350">Dodavanje: <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">Korištenje Googlea za pretraživanje</translation>
 <translation id="5945035219773565305">Trenutna preporuka: <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Tok za pohranu oznaka je zatvoren</translation>
 <translation id="9108312223223904744">Podrška za telefon kao Sigurnosni ključ</translation>
 <translation id="9108808586816295166">Moguće je da sigurnosni DNS neće uvijek biti dostupan</translation>
+<translation id="9128984223251192329">Upit za Okruženje zaštićene privatnosti je otvoren do pola visine</translation>
 <translation id="9133397713400217035">Istražite van mreže</translation>
 <translation id="9137013805542155359">Prikaži original</translation>
 <translation id="9148126808321036104">Prijavi se ponovo</translation>
-<translation id="9155898266292537608">Također možete pretraživati brzim dodirom riječi</translation>
 <translation id="9158770349521403363">Dijeli samo sadržaj</translation>
 <translation id="9159716826369098114">Vratite grupu kartica (broj kartica: <ph name="TAB_COUNT" />) kao novu pozadinsku grupu kartica.</translation>
 <translation id="916446198114569890">URL-ovi koje posjećujete pohranjuju se na vaš Google račun</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 12122619..fbdd0ec1 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Explora sense connexió</translation>
 <translation id="9137013805542155359">Mostra l'original</translation>
 <translation id="9148126808321036104">Torna a iniciar la sessió</translation>
-<translation id="9155898266292537608">També pots fer un toc ràpid en una paraula per fer cerques</translation>
 <translation id="9158770349521403363">Comparteix només el contingut</translation>
 <translation id="9159716826369098114">Restaura el grup de <ph name="TAB_COUNT" /> pestanyes com un nou grup de pestanyes en segon pla.</translation>
 <translation id="916446198114569890">Els URL que visites es desen al teu Compte de Google</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 87352b0..05ca889 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Prozkoumat offline</translation>
 <translation id="9137013805542155359">Zobrazit originál</translation>
 <translation id="9148126808321036104">Znovu přihlásit</translation>
-<translation id="9155898266292537608">Hledat můžete také rychlým klepnutím na slovo</translation>
 <translation id="9158770349521403363">Sdílet pouze obsah</translation>
 <translation id="9159716826369098114">Obnovit skupinu <ph name="TAB_COUNT" /> karet jako novou skupinu karet na pozadí.</translation>
 <translation id="916446198114569890">Navštívené adresy URL se ukládají do vašeho účtu Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cy.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cy.xtb
index 17c7c7e..614d64d1 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cy.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cy.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Archwilio All-lein</translation>
 <translation id="9137013805542155359">Dangos y gwreiddiol</translation>
 <translation id="9148126808321036104">Mewngofnodwch eto</translation>
-<translation id="9155898266292537608">Gallwch hefyd chwilio gyda thap cyflym ar air</translation>
 <translation id="9158770349521403363">Rhannu cynnwys yn unig</translation>
 <translation id="9159716826369098114">Adfer grŵp tabiau o <ph name="TAB_COUNT" /> o dabiau fel grŵp tabiau cefndirol newydd.</translation>
 <translation id="916446198114569890">Mae'r cyfeiriadau URL rydych yn ymweld â nhw wedi'u cadw i'ch cyfrif Google</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 20877e9..5f8e861 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Udforsk offline</translation>
 <translation id="9137013805542155359">Vis oprindelig</translation>
 <translation id="9148126808321036104">Log ind igen</translation>
-<translation id="9155898266292537608">Du kan også søge med et hurtigt tryk på et ord</translation>
 <translation id="9158770349521403363">Del kun indhold</translation>
 <translation id="9159716826369098114">Gendan fanegruppen med <ph name="TAB_COUNT" /> faner som en ny fanegruppe i baggrunden.</translation>
 <translation id="916446198114569890">De webadresser, du besøger, gemmes på din Google-konto</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
index 094fa1b..6776623 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Offline entdecken</translation>
 <translation id="9137013805542155359">Original anzeigen</translation>
 <translation id="9148126808321036104">Erneut anmelden</translation>
-<translation id="9155898266292537608">Du kannst auch kurz auf ein Wort tippen, um eine Suche zu starten</translation>
 <translation id="9158770349521403363">Nur Inhalt teilen</translation>
 <translation id="9159716826369098114">Tabgruppe mit <ph name="TAB_COUNT" /> Tabs als neue Tabgruppe im Hintergrund wiederherstellen.</translation>
 <translation id="916446198114569890">Die von dir besuchten URLs werden in deinem Google-Konto gespeichert</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
index 4bd5f2b..586d066 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Σελιδοδείκτες και ιστορικό ιστού</translation>
 <translation id="1513814250881909472">Χρησιμοποιήστε τον συγχρονισμό για να λάβετε τις καρτέλες από τις άλλες συσκευές σας</translation>
 <translation id="1513858653616922153">Διαγραφή κωδικού πρόσβασης</translation>
+<translation id="1514552811327923157">Το μήνυμα προτροπής του Πλαισίου ιδιωτικότητας άνοιξε σε πλήρες ύψος</translation>
 <translation id="1518421282666914498">GIF συναισθημάτων <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Ενεργή σήμερα</translation>
 <translation id="1538801903729528855">Αποκτήστε μια καλύτερη εμπειρία φωνής στον ιστό</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Δοκιμές</translation>
 <translation id="2718352093833049315">Μόνο σε Wi-Fi</translation>
 <translation id="2718846868787000099">Για να είναι δυνατή η εμφάνιση του περιεχομένου στις προτιμώμενες γλώσσες σας, οι ιστότοποι που επισκέπτεστε μπορούν να δουν τις προτιμήσεις σας.</translation>
+<translation id="2722945394406572875">Το μήνυμα προτροπής του Πλαισίου ιδιωτικότητας έκλεισε</translation>
 <translation id="2723001399770238859">ήχος</translation>
 <translation id="2732063072010454421">Απολαύστε μια καλύτερη φωνητική εμπειρία</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Αιτήματα για άδειες</translation>
 <translation id="5355191726083956201">Η Βελτιωμένη προστασία είναι ενεργή</translation>
 <translation id="5368227114232678694">Για ιδιωτική περιήγηση σε αυτήν τη συσκευή, δοκιμάστε την Ανώνυμη περιήγηση.</translation>
+<translation id="5371717687506906963">Μήνυμα προτροπής Πλαισίου ιδιωτικότητας</translation>
 <translation id="5375577065097716013">Αναζήτ. εικόνας με Google Lens <ph name="BEGIN_NEW" />Νέο<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Η αντίδραση άλλαξε</translation>
 <translation id="5401851137404501592">Για να συνεχίσετε, το <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> θα κοινοποιήσει το όνομα, τη διεύθυνση ηλεκτρονικού ταχυδρομείου και τη φωτογραφία προφίλ σας σε αυτόν τον ιστότοπο.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">Εάν ο Βοηθός Google γνωρίζει τα URL των ιστοτόπων, τότε θα μπορεί να σας βοηθήσει να ολοκληρώσετε εργασίες. Μπορείτε να απενεργοποιήσετε τον Βοηθό στις ρυθμίσεις του Chrome.</translation>
 <translation id="5916664084637901428">Ενεργό</translation>
 <translation id="5919204609460789179">Ενημερώστε το <ph name="PRODUCT_NAME" /> για να ξεκινήσει ο συγχρονισμός</translation>
+<translation id="593625682991400408">Κατά τη διάρκεια των δοκιμών, το Chrome ερευνά τρόπους για τον περιορισμό του ανεπιθύμητου περιεχομένου, της απάτης και της κοινοποίησης μεταξύ ιστοτόπων. Επίσης, το Chrome <ph name="BEGIN_LINK" />κάνει μια εκτίμηση των ενδιαφερόντων σας<ph name="END_LINK" /> που μπορούν να χρησιμοποιούν οι ιστότοποι για την εμφάνιση διαφημίσεων. Μπορείτε να διαχειριστείτε τα ενδιαφέροντά σας στις ρυθμίσεις.</translation>
 <translation id="5938820472109305350">Προσθήκη ενδιαφέροντος <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">Χρήση του Google για αναζήτηση</translation>
 <translation id="5945035219773565305">Τρέχουσα πρόταση:  <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Η ροή αποθήκευσης σελιδοδείκτη έκλεισε</translation>
 <translation id="9108312223223904744">Υποστήριξη χρήσης τηλεφώνου ως κλειδιού ασφαλείας</translation>
 <translation id="9108808586816295166">Το ασφαλές DNS μπορεί να μην είναι διαθέσιμο πάντα.</translation>
+<translation id="9128984223251192329">Το μήνυμα προτροπής του Πλαισίου ιδιωτικότητας άνοιξε στο μισό ύψος</translation>
 <translation id="9133397713400217035">Εξερεύνηση εκτός σύνδεσης</translation>
 <translation id="9137013805542155359">Εμφάνιση πρωτοτύπου</translation>
 <translation id="9148126808321036104">Συνδεθείτε ξανά</translation>
-<translation id="9155898266292537608">Επίσης, μπορείτε να κάνετε αναζήτηση με ένα γρήγορο πάτημα σε μια λέξη</translation>
 <translation id="9158770349521403363">Κοινοποίηση μόνο περιεχομένου</translation>
 <translation id="9159716826369098114">Επαναφέρετε την ομάδα καρτελών με τις <ph name="TAB_COUNT" /> καρτέλες ως νέα ομάδα καρτελών στο παρασκήνιο.</translation>
 <translation id="916446198114569890">Τα URL που επισκέπτεστε αποθηκεύονται στον Λογαριασμό σας Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
index 4168473..53fc143 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
@@ -1520,7 +1520,6 @@
 <translation id="9133397713400217035">Explore offline</translation>
 <translation id="9137013805542155359">Show original</translation>
 <translation id="9148126808321036104">Sign in again</translation>
-<translation id="9155898266292537608">You can also search with a quick tap on a word</translation>
 <translation id="9158770349521403363">Share content only</translation>
 <translation id="9159716826369098114">Restore tab group of <ph name="TAB_COUNT" /> tabs as a new background tab group.</translation>
 <translation id="916446198114569890">The URLs that you visit are saved to your Google Account</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 427cdb5..5dfc228 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Explorar sin conexión</translation>
 <translation id="9137013805542155359">Mostrar original</translation>
 <translation id="9148126808321036104">Accede nuevamente</translation>
-<translation id="9155898266292537608">También puedes presionar brevemente la palabra para realizar una búsqueda</translation>
 <translation id="9158770349521403363">Compartir solo el contenido</translation>
 <translation id="9159716826369098114">Restablece un grupo de pestañas de <ph name="TAB_COUNT" /> pestañas como nuevo grupo de pestañas en segundo plano.</translation>
 <translation id="916446198114569890">Las URL que visitas se guardan en tu Cuenta de Google</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 a06ae471..f35ed80 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Explorar sin conexión</translation>
 <translation id="9137013805542155359">Mostrar original</translation>
 <translation id="9148126808321036104">Volver a iniciar sesión</translation>
-<translation id="9155898266292537608">También puedes tocar rápidamente una palabra para hacer búsquedas</translation>
 <translation id="9158770349521403363">Compartir solo contenido</translation>
 <translation id="9159716826369098114">Restaurar grupo de <ph name="TAB_COUNT" /> pestañas como nuevo grupo de pestañas en segundo plano.</translation>
 <translation id="916446198114569890">Las URLs que visitas se guardan en tu cuenta de Google</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 ee59727..0dfc26f 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Uurige võrguühenduseta</translation>
 <translation id="9137013805542155359">Kuva originaal</translation>
 <translation id="9148126808321036104">Logige uuesti sisse</translation>
-<translation id="9155898266292537608">Otsimiseks võite ka kiirelt sõna puudutada</translation>
 <translation id="9158770349521403363">Jagatakse vaid sisu</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> vahelehega vahelehegrupi taastamine uue taustal oleva vahelehegrupina.</translation>
 <translation id="916446198114569890">Teie külastatavad URL-id salvestatakse teie Google'i kontole</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
index 78a86f7..6dcd235 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Arakatu konexiorik gabeko edukia</translation>
 <translation id="9137013805542155359">Ikusi jatorrizkoa</translation>
 <translation id="9148126808321036104">Hasi saioa berriro</translation>
-<translation id="9155898266292537608">Hatzarekin ukitu bizkor bat emanda ere egin ditzakezu bilaketak</translation>
 <translation id="9158770349521403363">Partekatu edukia soilik</translation>
 <translation id="9159716826369098114">Leheneratu <ph name="TAB_COUNT" /> fitxako taldea atzeko planoko fitxa talde berri gisa.</translation>
 <translation id="916446198114569890">Bisitatzen dituzun URLak Google-ko kontuan gordetzen dira</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
index 0d2c2203..eaf7be9 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">کاوش درحالت آفلاین</translation>
 <translation id="9137013805542155359">نمایش مورد اصلی</translation>
 <translation id="9148126808321036104">ورود مجدد به سیستم</translation>
-<translation id="9155898266292537608">می‌توانید با ضربه‌ای سریع روی کلمه نیز جستجو کنید</translation>
 <translation id="9158770349521403363">فقط هم‌رسانی محتوا</translation>
 <translation id="9159716826369098114">بازیابی گروه برگه <ph name="TAB_COUNT" /> برگه‌ای به‌عنوان گروه برگه جدید پس‌زمینه.</translation>
 <translation id="916446198114569890">‏نشانی‌های وبی که بازدید می‌کنید در حساب Google شما ذخیره می‌شود</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 4cede90..3c84d9a8 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Tutki offline-tilassa</translation>
 <translation id="9137013805542155359">Näytä alkuperäinen</translation>
 <translation id="9148126808321036104">Kirjaudu sisään uudelleen</translation>
-<translation id="9155898266292537608">Voit hakea myös napauttamalla sanaa nopeasti.</translation>
 <translation id="9158770349521403363">Jaa vain sisältö</translation>
 <translation id="9159716826369098114">Palauta <ph name="TAB_COUNT" /> välilehden välilehtiryhmä uutena taustavälilehtiryhmänä.</translation>
 <translation id="916446198114569890">Avaamasi URL-osoitteet tallennetaan Google-tilillesi</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 04fdcd3..c1cdbe7 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
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Bookmark at history ng web</translation>
 <translation id="1513814250881909472">Mag-sync para makuha ang iyong mga tab mula sa iba pang device mo</translation>
 <translation id="1513858653616922153">I-delete ang password</translation>
+<translation id="1514552811327923157">Binuksan ang prompt ng Privacy Sandbox prompt nang buo ang taas</translation>
 <translation id="1518421282666914498">GIF ng emosyon <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Aktibo ngayong araw</translation>
 <translation id="1538801903729528855">Makakuha ng mas magandang karanasan sa boses sa web</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Mga Trial</translation>
 <translation id="2718352093833049315">Sa Wi-Fi lang</translation>
 <translation id="2718846868787000099">Para ipakita ang content sa iyong mga gustong wika, makikita ng mga site na binibisita mo ang iyong mga kagustuhan</translation>
+<translation id="2722945394406572875">Isinara ang prompt ng Privacy Sandbox</translation>
 <translation id="2723001399770238859">audio</translation>
 <translation id="2732063072010454421">Mas magandang karanasan sa paghahanap gamit ang boses</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Mga kahilingan sa pahintulot</translation>
 <translation id="5355191726083956201">Naka-on ang Enhanced Protection</translation>
 <translation id="5368227114232678694">Para mag-browse nang pribado sa device na ito, subukan ang Incognito</translation>
+<translation id="5371717687506906963">Prompt ng Privacy Sandbox</translation>
 <translation id="5375577065097716013">Hanapin sa Google Lens <ph name="BEGIN_NEW" />Bago<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Binago ang reaksyon</translation>
 <translation id="5401851137404501592">Para magpatuloy, ibabahagi ng <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> ang iyong pangalan, email address, at larawan sa profile sa site na ito.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">Kapag alam ang mga URL ng mga site, matutulungan ka ng Google Assistant na tumapos ng mga gawain. Puwede mong i-off ang Assistant sa mga setting ng Chrome.</translation>
 <translation id="5916664084637901428">Naka-on</translation>
 <translation id="5919204609460789179">I-update ang <ph name="PRODUCT_NAME" /> upang simulan ang pag-sync</translation>
+<translation id="593625682991400408">Sa panahon ng mga trial, ine-explore ng Chrome ang mga paraan para limitahan ang spam, panloloko, at pagbabahagi sa pagitan ng mga site. Tinatantya rin ng Chrome ang <ph name="BEGIN_LINK" />iyong mga interes<ph name="END_LINK" /> na puwedeng gamitin ng mga site para magpakita sa iyo ng mga ad. Puwede mong pamahalaan ang iyong mga interes sa mga setting.</translation>
 <translation id="5938820472109305350">Idagdag ang <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">Ginagamit ang Google para sa paghahanap</translation>
 <translation id="5945035219773565305">Kasalukuyang rekomendasyon:  <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Nakasara ang proseso ng pag-save ng bookmark</translation>
 <translation id="9108312223223904744">Telepono bilang Security Key Support</translation>
 <translation id="9108808586816295166">Posibleng hindi available sa lahat ng oras ang secure na DNS</translation>
+<translation id="9128984223251192329">Binuksan ang prompt ng Privacy Sandbox nang kalahati ang taas</translation>
 <translation id="9133397713400217035">I-explore Offline</translation>
 <translation id="9137013805542155359">Ipakita ang orihinal</translation>
 <translation id="9148126808321036104">Muling mag-sign in</translation>
-<translation id="9155898266292537608">Makakapaghanap ka rin gamit ang mabilisang pag-tap sa isang salita</translation>
 <translation id="9158770349521403363">Ibahagi lang ang content</translation>
 <translation id="9159716826369098114">I-restore ang grupo ng tab na <ph name="TAB_COUNT" /> (na) tab bilang bagong background na grupo ng tab.</translation>
 <translation id="916446198114569890">Naka-save sa iyong Google account ang mga URL na binibisita mo</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 bf801a4..f09205f6 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Explorer hors ligne</translation>
 <translation id="9137013805542155359">Afficher l'original</translation>
 <translation id="9148126808321036104">Connectez-vous de nouveau</translation>
-<translation id="9155898266292537608">Vous pouvez également effectuer une recherche d'un simple toucher sur un mot</translation>
 <translation id="9158770349521403363">Partager le contenu uniquement</translation>
 <translation id="9159716826369098114">Restaurez le groupe d'onglets de <ph name="TAB_COUNT" /> onglets en tant que nouveau groupe d'onglets en arrière-plan.</translation>
 <translation id="916446198114569890">Les adresses URL que vous visitez sont enregistrées dans votre compte Google</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 3aa8b180..7f52df3 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Consulter hors connexion</translation>
 <translation id="9137013805542155359">Afficher l'original</translation>
 <translation id="9148126808321036104">Nouvelle connexion</translation>
-<translation id="9155898266292537608">Vous pouvez également effectuer une recherche en appuyant brièvement sur un mot</translation>
 <translation id="9158770349521403363">Partager uniquement le contenu</translation>
 <translation id="9159716826369098114">Restaurer le groupe d'onglets de <ph name="TAB_COUNT" /> onglets en tant que nouveau groupe d'onglets en arrière-plan.</translation>
 <translation id="916446198114569890">Les URL que vous consultez sont enregistrées dans votre compte Google</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 c367eac..4a98c25 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Explorar sen conexión</translation>
 <translation id="9137013805542155359">Mostrar orixinal</translation>
 <translation id="9148126808321036104">Iniciar sesión de novo</translation>
-<translation id="9155898266292537608">Tamén podes realizar buscas con só tocar rapidamente unha palabra</translation>
 <translation id="9158770349521403363">Compartir só contido</translation>
 <translation id="9159716826369098114">Restablecer grupo de <ph name="TAB_COUNT" /> pestanas como un novo grupo de pestanas en segundo plano.</translation>
 <translation id="916446198114569890">Os URL que visitas gárdanse na túa conta de Google</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 dbc6486c..24d57a6 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">ઑફલાઇનમાં શોધખોળ કરો</translation>
 <translation id="9137013805542155359">મૂળ બતાવો</translation>
 <translation id="9148126808321036104">ફરીથી સાઇન ઇન કરો </translation>
-<translation id="9155898266292537608">તમે કોઈ એક શબ્દ પર ટૅપ કરીને પણ શોધી શકો છો</translation>
 <translation id="9158770349521403363">માત્ર કન્ટેન્ટ શેર કરો</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> ટૅબવાળા ટૅબના ગ્રૂપને નવા બૅકગ્રાઉન્ડ ટૅબના ગ્રૂપ તરીકે રિસ્ટોર કરો.</translation>
 <translation id="916446198114569890">તમે મુલાકાત લો છો તે URLsને તમારા Google એકાઉન્ટમાં સાચવવામાં આવે છે</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
index c6e9a2e..2e425c4e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">ऑफ़लाइन सामग्री देखें</translation>
 <translation id="9137013805542155359">मूल दिखाएं</translation>
 <translation id="9148126808321036104">फिर से साइन इन करें</translation>
-<translation id="9155898266292537608">आप किसी शब्द पर बस एक टैप करके भी खोज सकते हैं</translation>
 <translation id="9158770349521403363">सिर्फ़ कॉन्टेंट शेयर करें</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> टैब के टैब ग्रुप को, नए बैकग्राउंड वाले टैब ग्रुप की तरह पहले जैसा करें.</translation>
 <translation id="916446198114569890">आप जिन यूआरएल पर जाते हैं वे आपके Google खाते में सेव हो जाते हैं</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
index e93b58c..9d3e87ac 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Oznake i Google povijest</translation>
 <translation id="1513814250881909472">Uključite sinkronizaciju da bi se kartice prikazale na drugim uređajima</translation>
 <translation id="1513858653616922153">Izbriši zaporku</translation>
+<translation id="1514552811327923157">Upit za Privacy Sandbox otvoren je u punoj visini</translation>
 <translation id="1518421282666914498">GIF emocija <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Aktivan danas</translation>
 <translation id="1538801903729528855">Ostvarite bolji glasovni doživljaj na webu</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Probe</translation>
 <translation id="2718352093833049315">Samo na Wi-Fiju</translation>
 <translation id="2718846868787000099">Da bi prikazivale sadržaj na jezicima koje preferirate, web-lokacije koje posjećujete mogu vidjeti vaše preferencije</translation>
+<translation id="2722945394406572875">Zatvoren je upit za Privacy Sandbox</translation>
 <translation id="2723001399770238859">zvuk</translation>
 <translation id="2732063072010454421">Bolji doživljaj glasovnog pretraživanja</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Zahtjevi za dopuštenja</translation>
 <translation id="5355191726083956201">Uključena je Poboljšana zaštita</translation>
 <translation id="5368227114232678694">Da biste pregledavali u privatnosti na ovom uređaju, isprobajte anonimni način.</translation>
+<translation id="5371717687506906963">Upit za Privacy Sandbox</translation>
 <translation id="5375577065097716013">Pretraži sliku pomoću Google objektiva <ph name="BEGIN_NEW" />Novo<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Reakcija je promijenjena</translation>
 <translation id="5401851137404501592">Da biste nastavili, <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> podijelit će vaše ime, e-adresu i profilnu sliku s ovom web-lokacijom.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">Dopustite Google asistentu pristup URL-ovima web-lokacija kako bi vam pomogao s izvršavanjem zadataka. Asistenta možete isključiti u Chromeovim postavkama.</translation>
 <translation id="5916664084637901428">Uključi</translation>
 <translation id="5919204609460789179">Ažurirajte <ph name="PRODUCT_NAME" /> za pokretanje sinkronizacije</translation>
+<translation id="593625682991400408">Tijekom proba Chrome istražuje načine za ograničavanje neželjenog sadržaja, prijevara i dijeljenja između web-lokacija. Chrome također <ph name="BEGIN_LINK" />procjenjuje vaše interese<ph name="END_LINK" /> koje web-lokacije mogu upotrijebiti da bi vam prikazivale oglase. Svojim interesima možete upravljati u postavkama.</translation>
 <translation id="5938820472109305350">Dodaj <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">Za pretraživanje se upotrebljava Google</translation>
 <translation id="5945035219773565305">Trenutačna preporuka: <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Tijek spremanja oznake je zatvoren</translation>
 <translation id="9108312223223904744">Podrška za telefon kao sigurnosni ključ</translation>
 <translation id="9108808586816295166">Sigurni DNS možda neće biti dostupan cijelo vrijeme</translation>
+<translation id="9128984223251192329">Upit za Privacy Sandbox otvoren je na pola visine</translation>
 <translation id="9133397713400217035">Istraživanje izvan mreže</translation>
 <translation id="9137013805542155359">Prikaži original</translation>
 <translation id="9148126808321036104">Prijavite se ponovno</translation>
-<translation id="9155898266292537608">Možete i kratko dodirnuti riječ da biste je pretražili</translation>
 <translation id="9158770349521403363">Podijeli samo sadržaj</translation>
 <translation id="9159716826369098114">Vratite grupu od <ph name="TAB_COUNT" /> kartica kao novu pozadinsku grupu kartica.</translation>
 <translation id="916446198114569890">URL-ovi koje posjećujete spremaju se na vaš Google račun</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 95aafcd..dd77e0a 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Offline felfedezés</translation>
 <translation id="9137013805542155359">Eredeti megjelenítése</translation>
 <translation id="9148126808321036104">Jelentkezzen be újra</translation>
-<translation id="9155898266292537608">Úgy is végrehajthat keresést, hogy gyorsan rákoppint valamelyik szóra</translation>
 <translation id="9158770349521403363">Csak tartalom megosztása</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> lapból álló lapcsoport visszaállítása új háttérbeli lapcsoportként.</translation>
 <translation id="916446198114569890">A felkeresett URL-eket a Google-fiókba menti a rendszer.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
index 20d7659..45c8fcc 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Էջանիշներ և վեբ պատմություն</translation>
 <translation id="1513814250881909472">Կատարեք համաժամացում, որպեսզի ձեր մյուս սարքերի ներդիրները հասանելի դառնան։</translation>
 <translation id="1513858653616922153">Ջնջել գաղտնաբառը</translation>
+<translation id="1514552811327923157">Privacy Sandbox հարցումը բացված է ամբողջությամբ</translation>
 <translation id="1518421282666914498">Զմայլիկով GIF <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Այսօր ակտիվ է եղել</translation>
 <translation id="1538801903729528855">Օգտագործեք ձայնային ներածումը համացանցում</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Փորձնական տարբերակներ</translation>
 <translation id="2718352093833049315">Միայն Wi-Fi-ով</translation>
 <translation id="2718846868787000099">Ձեր նախընտրած լեզուներով բովանդակություն ցուցադրելու համար կայքերը, որոնք այցելում եք, կարող են տեսնել ձեր կարգավորումները</translation>
+<translation id="2722945394406572875">Privacy Sandbox հարցումը փակ է</translation>
 <translation id="2723001399770238859">audio</translation>
 <translation id="2732063072010454421">Թույլատրեք օգտագործել Օգնականը ձայնային որոնման համար</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Թույլտվությունների հարցումներ</translation>
 <translation id="5355191726083956201">Բարելավված պաշտպանությունը միացված է</translation>
 <translation id="5368227114232678694">Օգտագործեք ինկոգնիտո ռեժիմը, որպեսզի ձեր այցելությունների պատմությունը չպահվի</translation>
+<translation id="5371717687506906963">Privacy Sandbox հարցում</translation>
 <translation id="5375577065097716013">Որոնել Google Տեսապակու միջոցով <ph name="BEGIN_NEW" />Նոր<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Արձագանքը փոփոխվել է</translation>
 <translation id="5401851137404501592">Շարունակելու համար <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> ընկերությունը կփոխանցի ձեր անունը, էլ․ հասցեն և պրոֆիլի նկարը այս կայքին։</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">Երբ Google Օգնականը ճանաչում է կայքերի URL-ները, այն կարող է օգնել ձեզ առաջադրանքներ կատարել։ Օգնականը կարող եք անջատել Chrome-ի կարգավորումներում։</translation>
 <translation id="5916664084637901428">Միացնել</translation>
 <translation id="5919204609460789179">Թարմացրեք <ph name="PRODUCT_NAME" />-ը՝ համաժամացումը սկսելու համար</translation>
+<translation id="593625682991400408">Փորձարկումների ընթացքում Chrome-ն ուսումասիրում է եղանակները, որոնք թույլ են տալիս սահմանափակել սպամը, խարդախությունները և կայքերի միջև տեղեկությունների փոխանակումը։ Chrome-ը նաև <ph name="BEGIN_LINK" />որոշում է ձեր հետաքրքրությունները<ph name="END_LINK" />, որոնք կայքերը կարող են օգտագործել՝ ձեզ գովազդ ցուցադրելու համար։ Ձեր հետաքրքրությունները կարող եք կառավարել կարգավորումներում։</translation>
 <translation id="5938820472109305350">Ավելացնել «<ph name="INTEREST" />» հետաքրքրությունը</translation>
 <translation id="5942872142862698679">Օգտագործվում է Google որոնման համակարգը</translation>
 <translation id="5945035219773565305">Ընթացիկ առաջարկը՝ <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Էջանիշի պահման էջը փակված է</translation>
 <translation id="9108312223223904744">Հեռախոսի օգտագործում որպես անվտանգության բանալի</translation>
 <translation id="9108808586816295166">Ապահով DNS-ը կարող է ամբողջ ընթացքում հասանելի չլինել</translation>
+<translation id="9128984223251192329">Privacy Sandbox հարցումը բացված է կիսով չափ</translation>
 <translation id="9133397713400217035">Դիտել անցանց ռեժիմում</translation>
 <translation id="9137013805542155359">Ցույց տալ բնօրինակը</translation>
 <translation id="9148126808321036104">Նորից մուտք գործել</translation>
-<translation id="9155898266292537608">Կարող եք նաև որոնել՝ սեղմելով բառի վրա</translation>
 <translation id="9158770349521403363">Կիսվել միայն բովանդակությամբ</translation>
 <translation id="9159716826369098114">Վերականգնել <ph name="TAB_COUNT" /> ներդիրից բաղկացած խումբը որպես ներդիրների նոր ֆոնային խումբ։</translation>
 <translation id="916446198114569890">Ձեր այցելած կայքերի URL-ները պահվում են ձեր Google հաշվում</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 ec0f594..bfc43520 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Jelajahi Offline</translation>
 <translation id="9137013805542155359">Perlihatkan halaman asli</translation>
 <translation id="9148126808321036104">Login sekali lagi</translation>
-<translation id="9155898266292537608">Anda juga dapat menelusuri dengan mengetuk kata secara cepat</translation>
 <translation id="9158770349521403363">Hanya bagikan konten</translation>
 <translation id="9159716826369098114">Pulihkan grup tab sebanyak <ph name="TAB_COUNT" /> tab sebagai grup tab latar belakang baru.</translation>
 <translation id="916446198114569890">URL yang Anda buka disimpan ke akun Google Anda</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 768c88c..15d5c76 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Skoða ónettengt</translation>
 <translation id="9137013805542155359">Sýna frumtexta</translation>
 <translation id="9148126808321036104">Skrá inn aftur</translation>
-<translation id="9155898266292537608">Þú getur einnig leitað með því að ýta á orð</translation>
 <translation id="9158770349521403363">Aðeins deila efni</translation>
 <translation id="9159716826369098114">Endurheimta flipahóp með <ph name="TAB_COUNT" /> flipum sem nýjan flipahóp í bakgrunni.</translation>
 <translation id="916446198114569890">Vefslóðirnar sem þú opnar eru vistaðar á Google reikningnum þínum</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
index d7d6f49..fdd7b50 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Esplora offline</translation>
 <translation id="9137013805542155359">Mostra originale</translation>
 <translation id="9148126808321036104">Esegui di nuovo l'accesso</translation>
-<translation id="9155898266292537608">Per eseguire una ricerca, basta un rapido tocco su una parola</translation>
 <translation id="9158770349521403363">Condividi solo contenuti</translation>
 <translation id="9159716826369098114">Ripristina il gruppo di <ph name="TAB_COUNT" /> schede come nuovo gruppo di schede in background.</translation>
 <translation id="916446198114569890">Gli URL che visiti vengono salvati nel tuo Account Google</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 46fda82..8dadba1 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">הצעות לתוכן במצב אופליין</translation>
 <translation id="9137013805542155359">הצגת מקור</translation>
 <translation id="9148126808321036104">כניסה חוזרת</translation>
-<translation id="9155898266292537608">אפשר גם להתחיל חיפוש על-ידי הקשה קצרה על מילה</translation>
 <translation id="9158770349521403363">שיתוף התוכן בלבד</translation>
 <translation id="9159716826369098114">שחזור של קבוצת כרטיסיות שמכילה <ph name="TAB_COUNT" /> כרטיסיות כקבוצת כרטיסיות חדשה ברקע.</translation>
 <translation id="916446198114569890">‏כתובות ה-URL שעברת אליהן נשמרות בחשבון Google שלך.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
index f81161d..3fcae52 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">オフライン コンテンツ</translation>
 <translation id="9137013805542155359">原文のページを表示</translation>
 <translation id="9148126808321036104">もう一度ログインする</translation>
-<translation id="9155898266292537608">単語をタップするだけでも検索できます</translation>
 <translation id="9158770349521403363">コンテンツのみ共有</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> 個のタブのタブグループを新しいバックグラウンドのタブグループとして復元します。</translation>
 <translation id="916446198114569890">アクセスした URL は Google アカウントに保存されます</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 9abec8b0..320aab03 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
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">სანიშნეები და ვებ-ისტორია</translation>
 <translation id="1513814250881909472">შეასრულეთ სინქრონიზაცია, თქვენი სხვა მოწყობილობებიდან ჩანართები რომ მიიღოთ</translation>
 <translation id="1513858653616922153">პაროლის წაშლა</translation>
+<translation id="1514552811327923157">Privacy Sandbox-ის მოთხოვნა გახსნილია სრულ სიმაღლეზე</translation>
 <translation id="1518421282666914498">ემოციის GIF <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">აქტიური იყო დღეს</translation>
 <translation id="1538801903729528855">შეასრულეთ მეტი ხმის მეშვეობით ვებში</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">ცდები</translation>
 <translation id="2718352093833049315">მხოლოდ Wi-Fi-ით</translation>
 <translation id="2718846868787000099">კონტენტის თქვენთვის სასურველ ენებზე რომ გამოჩნდეს, თქვენ მიერ მონახულებული საიტებისთვის ხელმისაწვდომი იქნება თქვენი უპირატესი პარამეტრები</translation>
+<translation id="2722945394406572875">Privacy Sandbox-ის მოთხოვნა დახურულია</translation>
 <translation id="2723001399770238859">აუდიო</translation>
 <translation id="2732063072010454421">ისარგებლეთ უკეთესი ხმოვანი ფუნქციებით</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">ნებართვების მოთხოვნები</translation>
 <translation id="5355191726083956201">გაძლიერებული დაცვა ჩართულია</translation>
 <translation id="5368227114232678694">ამ მოწყობილობაზე ვების კონფიდენციალურად დასათვალიერებლად ცადეთ ინკოგნიტო რეჟიმი</translation>
+<translation id="5371717687506906963">Privacy Sandbox-ის მოთხოვნა</translation>
 <translation id="5375577065097716013">მოიძიეთ სურათი Google Lens-ით <ph name="BEGIN_NEW" />სიახლე<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">რეაქცია შეიცვალა</translation>
 <translation id="5401851137404501592">გასაგრძელებლად <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> ამ საიტს გაუზიარებს თქვენს სახელს, ელფოსტის მისამართსა და პროფილის სურათს.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">საიტების URL-ების ცოდნა საშუალებას აძლევს Google ასისტენტს, დაგეხმაროთ ამოცანების შესრულებაში. ასისტენტის გამორთვა შეგიძლიათ Chrome-ის პარამეტრებიდან.</translation>
 <translation id="5916664084637901428">ჩართვა</translation>
 <translation id="5919204609460789179">სინქრონიზაციის დასაწყებად, განაახლეთ <ph name="PRODUCT_NAME" /></translation>
+<translation id="593625682991400408">საცდელი პერიოდის განმავლობაში, Chrome შეეცდება, გაარკვიოს, თუ როგორ შეიძლება სპამის, თაღლითობისა და საიტებს შორის კონტენტის გაზიარების შეზღუდვა. Chrome, ასევე, <ph name="BEGIN_LINK" />ვარაუდით დაადგენს თქვენს ინტერესებს<ph name="END_LINK" />, რომელთა გამოყენებაც საიტებს შეუძლიათ თქვენთვის რეკლამის საჩვენებლად. თქვენი ინტერესების მართვა შეგიძლიათ პარამეტრებიდან.</translation>
 <translation id="5938820472109305350">დაემატოს <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">ძიებისთვის Google გამოიყენება</translation>
 <translation id="5945035219773565305">ამჟამინდელი რეკომენდაცია:  <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">სანიშნეების შენახვის ნაკადი დაურულია</translation>
 <translation id="9108312223223904744">ტელეფონის, როგორც უსაფრთხოების გასაღების, მხარდაჭერა</translation>
 <translation id="9108808586816295166">დაცული DNS შეიძლება ზოგჯერ მიუწვდომელი იყოს</translation>
+<translation id="9128984223251192329">Privacy Sandbox-ის მოთხოვნა გახსნილია ნახევარ სიმაღლეზე</translation>
 <translation id="9133397713400217035">ხაზგარეშე რეჟიმში გაცნობა</translation>
 <translation id="9137013805542155359">ორიგინალის ჩვენება</translation>
 <translation id="9148126808321036104">ხელახლა შედით</translation>
-<translation id="9155898266292537608">ძიება სიტყვაზე სწრაფად შეხებითაც შეგიძლიათ</translation>
 <translation id="9158770349521403363">მხოლოდ კონტენტის გაზიარება</translation>
 <translation id="9159716826369098114">ჩანართების ჯგუფის (<ph name="TAB_COUNT" />), როგორც ფონური რეჟიმის ჩანართების ახალი ჯგუფის აღდგენა.</translation>
 <translation id="916446198114569890">თქვენ მიერ მონახულებული URL-ები ინახება თქვენს Google ანგარიშში</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 e381025..56e10b9a 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Офлайн режимде</translation>
 <translation id="9137013805542155359">Түпнұсқаны көрсету</translation>
 <translation id="9148126808321036104">Қайта кіру</translation>
-<translation id="9155898266292537608">Сонымен қатар сөзді түрту арқылы іздеуге болады</translation>
 <translation id="9158770349521403363">Тек мазмұн бөлісу</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> қойынды тобын жаңа фондық қойындылар тобы ретінде қалпына келтіру.</translation>
 <translation id="916446198114569890">Кірген URL мекенжайларыңыз Google аккаунтыңызға сақталады.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
index 20abc93e..9a20e1e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">ចំណាំ និងប្រវត្តិគេហទំព័រ</translation>
 <translation id="1513814250881909472">ធ្វើសមកាលកម្ម ដើម្បីទទួលបានផ្ទាំងរបស់អ្នកពីឧបករណ៍ផ្សេងៗទៀតរបស់អ្នក</translation>
 <translation id="1513858653616922153">លុបពាក្យសម្ងាត់</translation>
+<translation id="1514552811327923157">សារ Privacy Sandbox ត្រូវបាន​បើក​ពេញ​អេក្រង់</translation>
 <translation id="1518421282666914498">GIF អារម្មណ៍ <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">ដំណើរការ​ថ្ងៃនេះ</translation>
 <translation id="1538801903729528855">ទទួលបាន​បទពិសោធន៍ប្រើប្រាស់​សំឡេង​កាន់តែប្រសើរ​នៅលើបណ្ដាញ</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">ការសាកល្បង</translation>
 <translation id="2718352093833049315">នៅលើ Wi-Fi តែប៉ុណ្ណោះ</translation>
 <translation id="2718846868787000099">ដើម្បីបង្ហាញខ្លឹមសារជាភាសាដែលអ្នកចង់បកប្រែ គេហទំព័រដែលអ្នកចូលមើលអាចមើលចំណូលចិត្តរបស់អ្នក</translation>
+<translation id="2722945394406572875">សារ Privacy Sandbox ត្រូវបានបិទ</translation>
 <translation id="2723001399770238859">សម្លេង</translation>
 <translation id="2732063072010454421">ទទួលបានបទពិសោធន៍សំឡេងកាន់តែប្រសើរ</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">សំណើសុំ​ការអនុញ្ញាត</translation>
 <translation id="5355191726083956201">ការការពារបន្ថែម​ត្រូវបានបើក</translation>
 <translation id="5368227114232678694">ដើម្បីរុករកជាលក្ខណៈឯកជននៅលើឧបករណ៍នេះ សូមសាកល្បងប្រើមុខងារឯកជន</translation>
+<translation id="5371717687506906963">សារ Privacy Sandbox</translation>
 <translation id="5375577065097716013">ស្វែងរករូបភាពដោយប្រើ Google Lens <ph name="BEGIN_NEW" />ថ្មី<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">បានប្ដូរ​ប្រតិកម្ម</translation>
 <translation id="5401851137404501592">ដើម្បីបន្ត <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> នឹងចែករំលែកឈ្មោះ អាសយដ្ឋានអ៊ីមែល និងរូបភាពកម្រងព័ត៌មានរបស់អ្នកជាមួយគេហទំព័រនេះ។</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">ការស្គាល់ URL របស់គេហទំព័រអាចឱ្យ Google Assistant ជួយអ្នកក្នុងការបំពេញកិច្ចការ។ អ្នក​អាចបិទ Assistant នៅក្នុងការកំណត់ Chrome។</translation>
 <translation id="5916664084637901428">បើក</translation>
 <translation id="5919204609460789179">អាប់ដេត <ph name="PRODUCT_NAME" /> ដើម្បីចាប់ផ្តើមធ្វើសមកាលកម្ម</translation>
+<translation id="593625682991400408">ក្នុង​អំឡុងពេល​នៃការសាកល្បង Chrome កំពុង​រុករក​វិធី​ដាក់កំហិត​លើ​សារឥតបានការ ការគៃបន្លំ និង​ការចែករំលែក​រវាង​គេហទំព័រ​នានា។ Chrome ក៏​<ph name="BEGIN_LINK" />ប៉ាន់ស្មាន​ចំណាប់អារម្មណ៍​របស់អ្នក<ph name="END_LINK" />ដែល​គេហទំព័រ​អាច​ប្រើប្រាស់​ ដើម្បី​បង្ហាញ​ការផ្សាយពាណិជ្ជកម្ម​ដល់​អ្នក​ផងដែរ។ អ្នក​អាច​គ្រប់គ្រង​ចំណាប់អារម្មណ៍​របស់អ្នក​នៅក្នុង​ការកំណត់។</translation>
 <translation id="5938820472109305350">បញ្ចូល <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">ប្រើ Google ដើម្បីធ្វើការស្វែងរក</translation>
 <translation id="5945035219773565305">ការណែនាំបច្ចុប្បន្ន៖  <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">លំហូរនៃការរក្សាទុកចំណាំបានបិទ</translation>
 <translation id="9108312223223904744">ជំនួយក្នុងការដំឡើងទូរសព្ទ​ធ្វើជាសោសុវត្ថិភាព</translation>
 <translation id="9108808586816295166">DNS សុវត្ថិភាពប្រហែលជាមិនអាចប្រើបានគ្រប់ពេលនោះទេ</translation>
+<translation id="9128984223251192329">សារ Privacy Sandbox ត្រូវបាន​បើក​ពាក់កណ្ដាល​អេក្រង់</translation>
 <translation id="9133397713400217035">រុករក​ដោយគ្មានអ៊ីនធឺណិត</translation>
 <translation id="9137013805542155359">បង្ហាញប្រភពដើម</translation>
 <translation id="9148126808321036104">ចូលម្តងទៀត</translation>
-<translation id="9155898266292537608">​អ្នក​ក៏​អាច​ស្វែងរក​ដោយ​គ្រាន់​តែ​ចុចបន្តិច​នៅលើ​ពាក្យ​ណាមួយ​បានផងដែរ</translation>
 <translation id="9158770349521403363">ចែករំលែក​ខ្លឹមសារ​តែប៉ុណ្ណោះ</translation>
 <translation id="9159716826369098114">ស្ដារ​ក្រុម​ផ្ទាំង​នៃ​ផ្ទាំង <ph name="TAB_COUNT" /> ជា​ក្រុម​ផ្ទាំង​ផ្ទៃខាងក្រោយ​ថ្មី។</translation>
 <translation id="916446198114569890">URL ដែលអ្នក​ចូលមើល​ត្រូវបានរក្សាទុក​ក្នុងគណនី Google របស់អ្នក</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
index ba50c36..eccccf02 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
@@ -1514,7 +1514,6 @@
 <translation id="9133397713400217035">ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿ ಎಕ್ಸ್‌ಪ್ಲೋರ್ ಮಾಡಿ</translation>
 <translation id="9137013805542155359">ಮೂಲವನ್ನು ತೋರಿಸಿ</translation>
 <translation id="9148126808321036104">ಪುನಃ ಸೈನ್ ಇನ್  ಆಗಿ</translation>
-<translation id="9155898266292537608">ನೀವು ಪದವನ್ನು ಕ್ಷಿಪ್ರವಾಗಿ ಟ್ಯಾಪ್ ಮಾಡುವ ಮೂಲಕವೂ ಹುಡುಕಬಹುದು</translation>
 <translation id="9158770349521403363">ವಿಷಯವನ್ನು ಮಾತ್ರ ಹಂಚಿಕೊಳ್ಳಿ</translation>
 <translation id="9159716826369098114">ಹೊಸ ಹಿನ್ನೆಲೆ ಟ್ಯಾಬ್ ಗುಂಪಿನ ರೀತಿ <ph name="TAB_COUNT" /> ಟ್ಯಾಬ್‌ಗಳೊಂದಿಗೆ ಟ್ಯಾಬ್ ಗುಂಪನ್ನು ಮರುಸ್ಥಾಪಿಸಿ.</translation>
 <translation id="916446198114569890">ನೀವು ಭೇಟಿ ನೀಡುವ URL ಗಳನ್ನು ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ</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 32de68f..9ef43d3 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">오프라인 탐색</translation>
 <translation id="9137013805542155359">원본 보기</translation>
 <translation id="9148126808321036104">다시 로그인</translation>
-<translation id="9155898266292537608">단어를 살짝 탭하여 검색할 수도 있습니다</translation>
 <translation id="9158770349521403363">콘텐츠만 공유</translation>
 <translation id="9159716826369098114">탭 <ph name="TAB_COUNT" />개의 탭 그룹을 새 백그라운드 탭 그룹으로 복원합니다.</translation>
 <translation id="916446198114569890">방문한 URL이 Google 계정에 저장됩니다.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
index 6a4d30e2..d1e474c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Оффлайн режиминде изилдөө</translation>
 <translation id="9137013805542155359">Түпверсиясын көрсөтүү</translation>
 <translation id="9148126808321036104">Кайра кириңиз</translation>
-<translation id="9155898266292537608">Ошондой эле сөзду таптап коюп, издесеңиз болот</translation>
 <translation id="9158770349521403363">Мазмунду гана бөлүшүү</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> өтмөктүн өтмөктөр тобун фондогу жаңы өтмөктөр тобу катары калыбына келтирүү.</translation>
 <translation id="916446198114569890">Сиз кирген URL даректери Google аккаунтуңузга сакталат</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 da11dc9..05042866 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">ສຳຫຼວດອອບລາຍ</translation>
 <translation id="9137013805542155359">ສະແດງຕົ້ນສະບັບ</translation>
 <translation id="9148126808321036104">ລົງຊື່ເຂົ້າ​ໃຊ້ອີກ</translation>
-<translation id="9155898266292537608">ທ່ານສາມາດຊອກຫາດ້ວຍການແຕະດ່ວນໃສ່ຄຳສັບໃດໜຶ່ງໄດ້ເຊັ່ນກັນ</translation>
 <translation id="9158770349521403363">ແບ່ງປັນເນື້ອຫາເທົ່ານັ້ນ</translation>
 <translation id="9159716826369098114">ກູ້ຄືນກຸ່ມແຖບຂອງ <ph name="TAB_COUNT" /> ແຖບເປັນກຸ່ມແຖບໃນພື້ນຫຼັງໃໝ່.</translation>
 <translation id="916446198114569890">URL ທີ່ທ່ານເຂົ້ານັ້ນຖືກບັນທຶກໄປໃສ່ບັນຊີ Google ທ່ານແລ້ວ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
index e21c0b9..48a9315 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Naršyti neprisijungus</translation>
 <translation id="9137013805542155359">Rodyti originalą</translation>
 <translation id="9148126808321036104">Prisijungti dar kartą</translation>
-<translation id="9155898266292537608">Taip pat galite ieškoti greitai paliesdami žodį</translation>
 <translation id="9158770349521403363">Bendrinti tik turinį</translation>
 <translation id="9159716826369098114">Atkurkite skirtukų grupę, kurioje yra tiek skirtukų: <ph name="TAB_COUNT" />, kaip naują foninę skirtukų grupę.</translation>
 <translation id="916446198114569890">URL, kuriais lankotės, išsaugomi jūsų „Google“ paskyroje</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 9a0ffe57..9055076 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Izpētīt bezsaisti</translation>
 <translation id="9137013805542155359">Rādīt oriģinālo</translation>
 <translation id="9148126808321036104">Pierakstieties vēlreiz</translation>
-<translation id="9155898266292537608">Varat arī meklēt, ātri pieskaroties vārdam</translation>
 <translation id="9158770349521403363">Kopīgot tikai saturu</translation>
 <translation id="9159716826369098114">Atjaunot ciļņu grupu kā jaunu fona ciļņu grupu. Ciļņu skaits šajā grupā ir <ph name="TAB_COUNT" />.</translation>
 <translation id="916446198114569890">Jūsu apmeklētie URL vietrāži tiek saglabāti Google kontā</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 f6b4032..e113320 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
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Обележувачи и веб-историја</translation>
 <translation id="1513814250881909472">Синхронизирајте за да ги преземете картичките од другите уреди</translation>
 <translation id="1513858653616922153">Избриши ја лозинката</translation>
+<translation id="1514552811327923157">Потсетникот за Privacy Sandbox е отворен на цел екран</translation>
 <translation id="1518421282666914498">GIF-емоција <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Активен денес</translation>
 <translation id="1538801903729528855">Добијте подобро гласовно доживување на интернет</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Пробни периоди</translation>
 <translation id="2718352093833049315">Само преку Wi-Fi</translation>
 <translation id="2718846868787000099">За да се прикажат содржини за вашите претпочитани јазици, сајтовите што ги посетувате можат да ги видат вашите претпочитања</translation>
+<translation id="2722945394406572875">Потсетникот за Privacy Sandbox е затворен</translation>
 <translation id="2723001399770238859">аудио</translation>
 <translation id="2732063072010454421">Добијте подобро доживување со глас</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Барања за дозвола</translation>
 <translation id="5355191726083956201">Вклучена е „Подобрената заштита“</translation>
 <translation id="5368227114232678694">За приватно пребарување на уредов, испробајте го „Инкогнито“</translation>
+<translation id="5371717687506906963">Потсетник за Privacy Sandbox</translation>
 <translation id="5375577065097716013">Пребарај слика со Google Lens <ph name="BEGIN_NEW" />Ново<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Реакцијата се промени</translation>
 <translation id="5401851137404501592">За да продолжите, <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> ќе ги сподели вашето име, адресата на е-пошта и профилната слика со сајтов.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">„Помошникот на Google“ треба да ги знае URL-адресите на сајтовите за да ви помага да извршувате задачи. Може да го исклучите „Помошникот“ во поставките за Chrome.</translation>
 <translation id="5916664084637901428">Вклучено</translation>
 <translation id="5919204609460789179">Ажурирајте го <ph name="PRODUCT_NAME" /> за да започнете со синхронизирање</translation>
+<translation id="593625682991400408">За време на пробните периоди, Chrome истражува начини за ограничување на спамот, измамите и разменувањето податоци помеѓу сајтовите. Chrome исто така <ph name="BEGIN_LINK" />ги проценува вашите интереси<ph name="END_LINK" /> што сајтовите може да ги користат за да ви прикажуваат реклами. Може да управувате со интересите во поставките.</translation>
 <translation id="5938820472109305350">Додајте <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">Се користи Google за пребарување</translation>
 <translation id="5945035219773565305">Моментална препорака:  <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Текот за зачувување обележувач е затворен</translation>
 <translation id="9108312223223904744">Телефонот како поддршка во вид на безбедносен клуч</translation>
 <translation id="9108808586816295166">Безбедниот DNS можеби не е достапен во секое време</translation>
+<translation id="9128984223251192329">Потсетникот за Privacy Sandbox е отворен на половина екран</translation>
 <translation id="9133397713400217035">Истражете офлајн</translation>
 <translation id="9137013805542155359">Покажи оригинална страница</translation>
 <translation id="9148126808321036104">Најави се повторно</translation>
-<translation id="9155898266292537608">Може да пребарувате и со брзо допирање збор</translation>
 <translation id="9158770349521403363">Сподели само содржини</translation>
 <translation id="9159716826369098114">Врати ја групата картички од <ph name="TAB_COUNT" /> картички како нова заднинска група картички.</translation>
 <translation id="916446198114569890">URL-адресите што ги посетувате се зачувуваат во вашата сметка на Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
index 2640fa90c..0badbe0 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">ബുക്ക്‌മാർക്കുകളും വെബ് ചരിത്രവും</translation>
 <translation id="1513814250881909472">നിങ്ങളുടെ മറ്റ് ഉപകരണങ്ങളിൽ നിന്നുള്ള ടാബുകൾ ലഭിക്കാൻ സമന്വയിപ്പിക്കുക</translation>
 <translation id="1513858653616922153">പാസ്‌വേഡ് ഇല്ലാതാക്കുക</translation>
+<translation id="1514552811327923157">സ്വകാര്യതാ സാൻഡ്ബോക്‌സ് മുഴുവൻ ഉയരത്തിൽ തുറന്നു</translation>
 <translation id="1518421282666914498">ഇമോഷൻ GIF <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">ഇന്ന് സജീവമായിരുന്നു</translation>
 <translation id="1538801903729528855">വെബിൽ മികച്ച ശബ്‌ദാനുഭവം നേടൂ</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">ട്രയലുകൾ</translation>
 <translation id="2718352093833049315">Wi-Fi യിൽ മാത്രം</translation>
 <translation id="2718846868787000099">നിങ്ങൾ തിരഞ്ഞെടുത്ത ഭാഷകളിൽ ഉള്ളടക്കം കാണിക്കുന്നതിന്, സന്ദർശിക്കുന്ന സൈറ്റുകൾക്ക് നിങ്ങളുടെ മുൻഗണനകൾ കാണാൻ കഴിയും</translation>
+<translation id="2722945394406572875">സ്വകാര്യതാ സാൻഡ്‌ബോക്‌സ് നിർദ്ദേശം അടച്ചു</translation>
 <translation id="2723001399770238859">ഓഡിയോ</translation>
 <translation id="2732063072010454421">മെച്ചപ്പെട്ട ശബ്‌ദ അനുഭവം നേടുക</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">അനുമതി അഭ്യർത്ഥനകൾ</translation>
 <translation id="5355191726083956201">മെച്ചപ്പെടുത്തിയ പരിരക്ഷ ഓണാക്കിയിരിക്കുന്നു</translation>
 <translation id="5368227114232678694">ഈ ഉപകരണത്തിൽ സ്വകാര്യമായി ബ്രൗസ് ചെയ്യാൻ, അദൃശ്യ മോഡ് പരീക്ഷിക്കൂ</translation>
+<translation id="5371717687506906963">സ്വകാര്യതാ സാൻഡ്‌ബോക്‌സ് നിർദ്ദേശം</translation>
 <translation id="5375577065097716013">Google Lens-ലൂടെ ചിത്രം തിരയൂ <ph name="BEGIN_NEW" />പുതിയവ<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">പ്രതികരണം മാറ്റി</translation>
 <translation id="5401851137404501592">തുടരാൻ, <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> നിങ്ങളുടെ പേരും ഇമെയിൽ വിലാസവും പ്രൊഫൈൽ ചിത്രവും ഈ സൈറ്റുമായി പങ്കിടും.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">സൈറ്റുകളുടെ URL-കൾ അറിയുന്നതിലൂടെ Google Assistant-ന് നിങ്ങളുടെ ടാസ്ക്കുകൾ പൂർത്തിയാക്കാൻ സഹായിക്കാനാകും. നിങ്ങൾക്ക് Chrome ക്രമീകരണത്തിൽ Assistant ഓഫാക്കാം.</translation>
 <translation id="5916664084637901428">ഓൺ ചെയ്യുക</translation>
 <translation id="5919204609460789179">സമന്വയിപ്പിക്കാൻ തുടങ്ങുന്നതിന്, <ph name="PRODUCT_NAME" /> അപ്‌ഡേറ്റ് ചെയ്യുക</translation>
+<translation id="593625682991400408">ട്രയലുകൾ നടക്കുമ്പോൾ, സ്പാം, വഞ്ചന, സൈറ്റുകൾക്കിടയിലുള്ള പങ്കിടൽ എന്നിവ പരിമിതപ്പെടുത്താനുള്ള വഴികൾ കണ്ടെത്താൻ Chrome ശ്രമിക്കുന്നു. Chrome <ph name="BEGIN_LINK" />നിങ്ങളുടെ താൽപ്പര്യങ്ങൾ കണക്കാക്കുകയും<ph name="END_LINK" /> ചെയ്യുന്നു, നിങ്ങളെ പരസ്യങ്ങൾ കാണിക്കാൻ സൈറ്റുകൾക്ക് ഇത് ഉപയോഗിക്കാം. ക്രമീകരണത്തിൽ നിങ്ങളുടെ താൽപ്പര്യങ്ങൾ മാനേജ് ചെയ്യാം.</translation>
 <translation id="5938820472109305350"><ph name="INTEREST" /> ചേർക്കുക</translation>
 <translation id="5942872142862698679">തിരയാൻ Google ഉപയോഗിക്കുന്നു</translation>
 <translation id="5945035219773565305">നിലവിലെ നിർദ്ദേശം: <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">ബുക്ക്‌മാർക്ക് സംരക്ഷിക്കൽ ഫ്ലോ അടച്ചു</translation>
 <translation id="9108312223223904744">സുരക്ഷാ കീയായി ഫോൺ</translation>
 <translation id="9108808586816295166">എപ്പോഴും സുരക്ഷിത DNS ലഭ്യമായേക്കില്ല</translation>
+<translation id="9128984223251192329">സ്വകാര്യതാ സാൻഡ്ബോക്‌സ് പകുതി ഉയരത്തിൽ തുറന്നു</translation>
 <translation id="9133397713400217035">ഓഫ്‍ലൈൻ ഉള്ളടക്കങ്ങൾ അടുത്തറിയൂ</translation>
 <translation id="9137013805542155359">യഥാര്‍ത്ഥമായത് കാണിക്കുക</translation>
 <translation id="9148126808321036104">വീണ്ടും പ്രവേശിക്കുക</translation>
-<translation id="9155898266292537608">ഒരു വാക്കിൽ പെട്ടെന്ന് ടാപ്പ് ചെയ്‌തും നിങ്ങൾക്ക് തിരയാൻ കഴിയും</translation>
 <translation id="9158770349521403363">ഉള്ളടക്കം മാത്രം പങ്കിടുക</translation>
 <translation id="9159716826369098114">പുതിയ പശ്ചാത്തല ടാബ് ഗ്രൂപ്പായി <ph name="TAB_COUNT" /> ടാബുകളുള്ള ടാബ് ഗ്രൂപ്പ് പുനഃസ്ഥാപിക്കുക.</translation>
 <translation id="916446198114569890">നിങ്ങൾ സന്ദർശിക്കുന്ന URL-കൾ നിങ്ങളുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിക്കുന്നു</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
index c0adfff..d97836d5 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Хавчуурга болон веб түүх</translation>
 <translation id="1513814250881909472">Бусад төхөөрөмжөөсөө табуудаа авахын тулд синк хийнэ үү</translation>
 <translation id="1513858653616922153">Нууц үг устгах</translation>
+<translation id="1514552811327923157">Privacy Sandbox сануулгыг бүтэн хэмжээгээр нээсэн</translation>
 <translation id="1518421282666914498">Сэтгэл хөдлөлийн GIF <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Өнөөдөр идэвхтэй</translation>
 <translation id="1538801903729528855">Веб дээр илүү сайн дуут туршлагыг авах</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Туршилтын хугацаа</translation>
 <translation id="2718352093833049315">Зөвхөн Wi-Fi-аар</translation>
 <translation id="2718846868787000099">Таны сонгосон хэлнүүдийн контентыг харуулахын тулд таны зочилдог сайтууд таны сонголтыг харах боломжтой</translation>
+<translation id="2722945394406572875">Privacy Sandbox сануулгыг хаасан</translation>
 <translation id="2723001399770238859">Дуу</translation>
 <translation id="2732063072010454421">Дуу хоолойн илүү сайн туршлага аваарай</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -790,6 +792,7 @@
 <translation id="5342314432463739672">Зөвшөөрлийн хүсэлт</translation>
 <translation id="5355191726083956201">Сайжруулсан хамгаалалт асаалттай байна</translation>
 <translation id="5368227114232678694">Энэ төхөөрөмж дээр нууцлалтайгаар үзэхийн тулд Нууцлалтай горимыг туршина уу</translation>
+<translation id="5371717687506906963">Privacy Sandbox сануулга</translation>
 <translation id="5375577065097716013">Google Lens-р зураг хайх <ph name="BEGIN_NEW" />Шинэ<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Хариу үйлдлийг өөрчилсөн</translation>
 <translation id="5401851137404501592">Үргэлжүүлэхийн тулд <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> таны нэр, имэйл хаяг болон профайл зургийг энэ сайттай хуваалцана.</translation>
@@ -893,6 +896,7 @@
 <translation id="5906513782029855931">Сайтуудын URL-г мэдэж байх нь Google Туслахад таны ажлыг гүйцэтгэхэд туслах боломжийг олгоно. Та Туслахыг Chrome-н тохиргоонд унтраах боломжтой.</translation>
 <translation id="5916664084637901428">Асаах</translation>
 <translation id="5919204609460789179">Синкийг эхлүүлэхийн тулд <ph name="PRODUCT_NAME" />-г шинэчилнэ үү</translation>
+<translation id="593625682991400408">Туршилтын хугацааны үеэр Chrome спам, залилан болон сайтууд хооронд хуваалцахыг хязгаарлах аргуудыг судалж байна. Chrome нь мөн <ph name="BEGIN_LINK" />таны сонирхлыг тооцоолж<ph name="END_LINK" /> сайтууд танд зар харуулахад ашиглах боломжтой. Та сонирхлуудаа тохиргоо хэсэгт удирдах боломжтой.</translation>
 <translation id="5938820472109305350"><ph name="INTEREST" />-г нэмэх</translation>
 <translation id="5942872142862698679">Google-г хайж байна</translation>
 <translation id="5945035219773565305">Одоогийн зөвлөмж:  <ph name="RECOMMENDATION" /></translation>
@@ -1511,10 +1515,10 @@
 <translation id="9106148373857059373">Хавчуурганы хадгалах урсгалыг хаасан</translation>
 <translation id="9108312223223904744">Аюулгүй байдлын түлхүүрийн тусламж болох гар утас</translation>
 <translation id="9108808586816295166">Аюулгүй DNS нь үргэлж боломжтой биш байж болзошгүй</translation>
+<translation id="9128984223251192329">Privacy Sandbox сануулгыг тал хэмжээгээр нээсэн</translation>
 <translation id="9133397713400217035">Офлайн горимд судлах</translation>
 <translation id="9137013805542155359">Эх хувийг харуулах</translation>
 <translation id="9148126808321036104">Дансандаа дахин нэвтрэх</translation>
-<translation id="9155898266292537608">Мөн та үгийг хурдан товшоод хайх боломжтой</translation>
 <translation id="9158770349521403363">Зөвхөн контент хуваалцана уу</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> табтай табын бүлгийг шинэ дэвсгэр табын бүлгээр сэргээнэ үү.</translation>
 <translation id="916446198114569890">Таны зочилсон URL-уудыг таны Google Бүртгэлд хадгалсан</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
index 3580325..fa13786 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">बुकमार्क आणि वेब इतिहास</translation>
 <translation id="1513814250881909472">तुमच्या इतर डिव्हाइसवरून तुमचे टॅब मिळवण्यासाठी सिंक करा</translation>
 <translation id="1513858653616922153">पासवर्ड हटवा</translation>
+<translation id="1514552811327923157">प्रायव्हसी सॅंडबाॅक्स सूचना ही पूर्ण उंचीवर उघडली आहे</translation>
 <translation id="1518421282666914498">भावना GIF <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">आज ॲक्टिव्ह होते</translation>
 <translation id="1538801903729528855">वेबवर आवाजाचा चांगला अनुभव मिळवा</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">चाचण्या</translation>
 <translation id="2718352093833049315">केवळ वाय-फाय वर</translation>
 <translation id="2718846868787000099">तुमच्या प्राधान्यकृत भाषांमध्ये आशय दाखवण्यासाठी, तुम्ही भेट देता त्या साइट तुमची प्राधान्ये पाहू शकतात</translation>
+<translation id="2722945394406572875">प्रायव्हसी सॅंडबाॅक्स सूचना बंद आहे</translation>
 <translation id="2723001399770238859">ऑडिओ</translation>
 <translation id="2732063072010454421">चांगला व्हॉइस अनुभव मिळवा</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">परवानगीच्या विनंत्या</translation>
 <translation id="5355191726083956201">सुधारित संरक्षण सुरू आहे</translation>
 <translation id="5368227114232678694">या डिव्हाइसवर खाजगीरीत्या ब्राउझ करण्यासाठी, गुप्त मोड वापरून पहा</translation>
+<translation id="5371717687506906963">प्रायव्हसी सॅंडबाॅक्स सूचना</translation>
 <translation id="5375577065097716013">Google Lens सह इमेज शोधा <ph name="BEGIN_NEW" />नवीन<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">प्रतिक्रिया बदलली</translation>
 <translation id="5401851137404501592">पुढे सुरू ठेवण्यासाठी, <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> तुमचे नाव, ईमेल अ‍ॅड्रेस आणि प्रोफाइल फोटो या साइटसह शेअर करेल.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">साइटच्या URLs बद्दल जाणून घेतल्याने, टास्क पूर्ण करण्यात Google Assistant ला तुम्हाला मदत करता येते. तुम्ही Chrome सेटिंग्जमध्ये Assistant बंद करू शकता.</translation>
 <translation id="5916664084637901428">सुरू</translation>
 <translation id="5919204609460789179">सिंक सुरू करण्यासाठी <ph name="PRODUCT_NAME" /> अपडेट करा</translation>
+<translation id="593625682991400408">चाचण्यांदरम्यान, Chrome हे स्पॅम, घोटाळा आणि साइटदरम्यान शेअरिंग मर्यादित करण्याचे मार्ग शोधत आहे. Chrome हे <ph name="BEGIN_LINK" />तुमच्या स्वारस्यांचा अंदाज लावणे<ph name="END_LINK" /> हेदेखील करते, ज्याचा वापर साइट या तुम्हाला जाहिरात दाखवण्यासाठी करू शकतात. तुम्ही सेटिंग्जमध्ये तुमची स्वारस्ये व्यवस्थापित करू शकता.</translation>
 <translation id="5938820472109305350"><ph name="INTEREST" /> जोडा</translation>
 <translation id="5942872142862698679">शोध करण्‍यासाठी Google वापरत आहे</translation>
 <translation id="5945035219773565305">सध्याची शिफारस:  <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">बुकमार्क सेव्ह करा फ्लो बंद आहे</translation>
 <translation id="9108312223223904744">सिक्युरिटी की सपोर्ट म्हणून फोन वापरा</translation>
 <translation id="9108808586816295166">सुरक्षित DNS कदाचित प्रत्येक वेळी उपलब्ध नसेल</translation>
+<translation id="9128984223251192329">प्रायव्हसी सॅंडबाॅक्स सूचना ही अर्ध्या उंचीवर उघडली आहे</translation>
 <translation id="9133397713400217035">ऑफलाइन असताना एक्सप्लोर करा</translation>
 <translation id="9137013805542155359">मूळ दर्शवा</translation>
 <translation id="9148126808321036104">पुन्हा साइन इन करा </translation>
-<translation id="9155898266292537608">तुम्ही शब्दावर जलद टॅप करूनदेखील शोधू शकता</translation>
 <translation id="9158770349521403363">फक्त आशय शेअर करा</translation>
 <translation id="9159716826369098114">नवीन बॅकग्राउंड टॅब गट म्हणून <ph name="TAB_COUNT" /> टॅबचा टॅब गट रिस्टोअर करा.</translation>
 <translation id="916446198114569890">तुम्ही भेट देता त्या URL तुमच्या Google खात्यामध्ये सेव्ह केल्या जातात</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 f01c177..c2e2d96c 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
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Penanda halaman dan sejarah web</translation>
 <translation id="1513814250881909472">Segerakkan untuk mendapatkan tab anda daripada peranti anda yang lain</translation>
 <translation id="1513858653616922153">Padam kata laluan</translation>
+<translation id="1514552811327923157">Gesaan Kotak Pasir Privasi dibuka pada ketinggian penuh</translation>
 <translation id="1518421282666914498">GIF emosi <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Aktif hari ini</translation>
 <translation id="1538801903729528855">Dapatkan pengalaman suara yang lebih baik pada web</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Percubaan</translation>
 <translation id="2718352093833049315">Hanya pada Wi-Fi</translation>
 <translation id="2718846868787000099">Untuk memaparkan kandungan dalam bahasa pilihan anda, tapak yang anda lawati dapat melihat pilihan anda</translation>
+<translation id="2722945394406572875">Kotak Pasir Privasi segera ditutup</translation>
 <translation id="2723001399770238859">audio</translation>
 <translation id="2732063072010454421">Dapatkan pengalaman suara yang lebih baik</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Permintaan kebenaran</translation>
 <translation id="5355191726083956201">Perlindungan Dipertingkat dihidupkan</translation>
 <translation id="5368227114232678694">Untuk menyemak imbas secara peribadi pada peranti ini, cubalah Inkognito</translation>
+<translation id="5371717687506906963">Gesaan Kotak Pasir Privasi</translation>
 <translation id="5375577065097716013">Cari imej dengan Lens <ph name="BEGIN_NEW" />Baharu<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Reaksi diubah</translation>
 <translation id="5401851137404501592">Untuk meneruskan, <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> akan berkongsi nama, alamat e-mel dan gambar profil anda dengan laman ini.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">Mengetahui URL bagi laman membolehkan Google Assistant membantu anda menyelesaikan tugas. Anda boleh mematikan Assistant dalam tetapan Chrome.</translation>
 <translation id="5916664084637901428">Hidupkan</translation>
 <translation id="5919204609460789179">Kemas kini <ph name="PRODUCT_NAME" /> untuk memulakan penyegerakan</translation>
+<translation id="593625682991400408">Semasa percubaan, Chrome sedang meneroka cara untuk mengehadkan spam, penipuan dan perkongsian antara laman. Chrome juga <ph name="BEGIN_LINK" />menganggarkan minat anda<ph name="END_LINK" /> laman tersebut boleh digunakan untuk memaparkan iklan kepada anda. Anda boleh mengurus minat anda dalam tetapan.</translation>
 <translation id="5938820472109305350">Tambah <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">Menggunakan Google untuk carian</translation>
 <translation id="5945035219773565305">Syor semasa:  <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Aliran penyimpanan penanda halaman ditutup</translation>
 <translation id="9108312223223904744">Telefon sebagai Sokongan Kunci Keselamatan</translation>
 <translation id="9108808586816295166">DNS selamat mungkin tidak tersedia sepanjang masa</translation>
+<translation id="9128984223251192329">Gesaan Kotak Pasir Privasi dibuka pada ketinggian separuh</translation>
 <translation id="9133397713400217035">Teroka Luar Talian</translation>
 <translation id="9137013805542155359">Paparkan asal</translation>
 <translation id="9148126808321036104">Log masuk semula</translation>
-<translation id="9155898266292537608">Anda juga boleh mencari dengan mengetik pantas pada perkataan</translation>
 <translation id="9158770349521403363">Kongsi kandungan sahaja</translation>
 <translation id="9159716826369098114">Pulihkan kumpulan tab <ph name="TAB_COUNT" /> tab sebagai kumpulan tab latar baharu.</translation>
 <translation id="916446198114569890">URL yang anda lawati disimpan pada akaun Google anda</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 850f0e2..9ce58e27 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
@@ -1519,7 +1519,6 @@
 <translation id="9133397713400217035">အော့ဖ်လိုင်းတွင် စူးစမ်းလေ့လာရန်</translation>
 <translation id="9137013805542155359">မူရင်းအား ပြ</translation>
 <translation id="9148126808321036104">ထပ်ပြီး လက်မှတ်ထိုး ဝင်ရန်</translation>
-<translation id="9155898266292537608">စာလုံးပေါ်ကို အမြန်တို့၍လည်း ရှာနိုင်သည်</translation>
 <translation id="9158770349521403363">အကြောင်းအရာသီးသန့် မျှဝေပါ</translation>
 <translation id="9159716826369098114">နောက်ခံတဘ်အုပ်စုအသစ်အဖြစ် တဘ် <ph name="TAB_COUNT" /> ခု ပါသည့် တဘ်အုပ်စုကို ပြန်ယူနိုင်ပါသည်။</translation>
 <translation id="916446198114569890">သင်ဝင်ကြည့်သည့် URL များကို သင့် Google Account တွင်သိမ်းထားသည်</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 e137d27..84d12fc 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
@@ -1519,7 +1519,6 @@
 <translation id="9133397713400217035">अफलाइनमा अन्वेषण गर्नुहोस्</translation>
 <translation id="9137013805542155359">मूल देखाउनुहोस्</translation>
 <translation id="9148126808321036104">पुन: साइन इन गर्नुहोस्</translation>
-<translation id="9155898266292537608">कुनै शब्दमा द्रुत ट्याप गरेर पनि तपाईं खोज्न सक्नुहुन्छ</translation>
 <translation id="9158770349521403363">सामग्री मात्र सेयर गरियोस्</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> वटा ट्याब भएको ट्याब समूह रिस्टोर गरी नयाँ ब्याकग्राउन्ड ट्याब समूह बनाउनुहोस्।</translation>
 <translation id="916446198114569890">तपाईंले खोल्ने URL हरू तपाईंको Google खातामा सेभ गरिन्छन्</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
index 4b01bade..92b3990 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Offline ontdekken</translation>
 <translation id="9137013805542155359">Origineel bekijken</translation>
 <translation id="9148126808321036104">Opnieuw inloggen</translation>
-<translation id="9155898266292537608">Je kunt ook zoeken door kort op een woord te tikken</translation>
 <translation id="9158770349521403363">Alleen content delen</translation>
 <translation id="9159716826369098114">Tabbladgroep van <ph name="TAB_COUNT" /> tabbladen herstellen als een nieuwe tabbladgroep op de achtergrond.</translation>
 <translation id="916446198114569890">De URL's die je bezoekt, worden opgeslagen in je Google-account.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
index 76b9480..ff12cc0 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Bokmerker og nettlogg</translation>
 <translation id="1513814250881909472">Synkroniser for å få fanene dine på andre enheter du bruker</translation>
 <translation id="1513858653616922153">Slett passordet</translation>
+<translation id="1514552811327923157">Privacy Sandbox-forespørselen er åpnet i full høyde</translation>
 <translation id="1518421282666914498">GIF med uttrykksikoner – <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Aktiv i dag</translation>
 <translation id="1538801903729528855">Bruk stemmen til å oppleve nettet på en ny måte</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Prøveprosjekter</translation>
 <translation id="2718352093833049315">Bare når Wi-Fi er på</translation>
 <translation id="2718846868787000099">For å kunne vise innhold på språkene du foretrekker, kan nettstedene du besøker, se preferansene dine</translation>
+<translation id="2722945394406572875">Privacy Sandbox-forespørselen er lukket</translation>
 <translation id="2723001399770238859">lyd</translation>
 <translation id="2732063072010454421">Få en bedre taleopplevelse</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Tillatelsesforespørsler</translation>
 <translation id="5355191726083956201">Økt beskyttelse er på</translation>
 <translation id="5368227114232678694">For å surfe privat på denne enheten, prøv Inkognito</translation>
+<translation id="5371717687506906963">Privacy Sandbox-forespørsel</translation>
 <translation id="5375577065097716013">Søk etter bildet med Google Lens <ph name="BEGIN_NEW" />Nyhet<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Reaksjonen er endret</translation>
 <translation id="5401851137404501592">For at du skal kunne fortsette, må <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> dele navnet ditt, e-postadressen din og profilbildet ditt med dette nettstedet.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">Ved å vite nettadressene til nettsteder kan Google-assistenten hjelpe deg med å utføre oppgaver. Du kan slå av assistenten i Chrome-innstillingene.</translation>
 <translation id="5916664084637901428">På</translation>
 <translation id="5919204609460789179">Oppdater <ph name="PRODUCT_NAME" /> for å starte synkroniseringen</translation>
+<translation id="593625682991400408">Mens prøveprosjekter pågår, utforsker Chrome måter å begrense nettsøppel, svindel og deling mellom nettsteder på. Chrome <ph name="BEGIN_LINK" />anslår også interessene dine<ph name="END_LINK" /> som nettsteder kan bruke for å vise deg annonser. Du kan administrere interessene dine i innstillingene.</translation>
 <translation id="5938820472109305350">Legg til <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">Bruker Google til å søke</translation>
 <translation id="5945035219773565305">Gjeldende anbefaling:  <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Flyt for lagring av bokmerke er lukket</translation>
 <translation id="9108312223223904744">Telefon som støtte for sikkerhetsnøkkel</translation>
 <translation id="9108808586816295166">Sikker DNS er kanskje ikke tilgjengelig hele tiden</translation>
+<translation id="9128984223251192329">Privacy Sandbox-forespørselen er åpnet i halv høyde</translation>
 <translation id="9133397713400217035">Utforsk uten nett</translation>
 <translation id="9137013805542155359">Vis original</translation>
 <translation id="9148126808321036104">Logg på igjen</translation>
-<translation id="9155898266292537608">Du kan også søke med et kjapt trykk på et ord</translation>
 <translation id="9158770349521403363">Del kun innhold</translation>
 <translation id="9159716826369098114">Gjenopprett fanegruppen med <ph name="TAB_COUNT" /> faner som en ny bakgrunnsfanegruppe.</translation>
 <translation id="916446198114569890">Nettadressene du besøker, lagres i Google-kontoen din</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 d8f20e73..0a47bf0 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">ଅଫ୍‌ଲାଇନ୍‌ରେ ଏକ୍ସପ୍ଲୋର୍ କରନ୍ତୁ</translation>
 <translation id="9137013805542155359">ମୂଳ ଲେଖା ଦେଖାନ୍ତୁ</translation>
 <translation id="9148126808321036104">ପୁଣି ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation>
-<translation id="9155898266292537608">ଆପଣ ଏକ ଶଦ୍ଦ ଉପରେ କେବଳ ଏକ ଟାପ୍‌ କରି ଶୀଘ୍ର ଖୋଜିପାରିବେ</translation>
 <translation id="9158770349521403363">କେବଳ ବିଷୟବସ୍ତୁ ସେୟାର୍ କରନ୍ତୁ</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" />ଟି ଟାବର ଟାବ ଗ୍ରୁପକୁ ଏକ ନୂଆ ପୃଷ୍ଠପଟ ଟାବ ଗ୍ରୁପ ଭାବେ ରିଷ୍ଟୋର କରନ୍ତୁ।</translation>
 <translation id="916446198114569890">ଆପଣ ଭିଜିଟ କରିଥିବା URLଗୁଡ଼ିକ ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ସେଭ ହୋଇଥାଏ</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 f5b7d85..0215ffee 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">ਆਫ਼ਲਾਈਨ ਪੜਚੋਲ ਕਰੋ</translation>
 <translation id="9137013805542155359">ਅਸਲ ਦਿਖਾਓ</translation>
 <translation id="9148126808321036104">ਦੁਬਾਰਾ ਸਾਈਨ-ਇਨ ਕਰੋ</translation>
-<translation id="9155898266292537608">ਤੁਸੀਂ ਕਿਸੇ ਸ਼ਬਦ 'ਤੇ ਤੁਰੰਤ ਟੈਪ ਨਾਲ ਵੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹੋ</translation>
 <translation id="9158770349521403363">ਸਿਰਫ਼ ਸਮੱਗਰੀ ਨੂੰ ਸਾਂਝਾ ਕਰੋ</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> ਟੈਬਾਂ ਦੇ ਟੈਬ ਗਰੁੱਪ ਨੂੰ ਨਵੇਂ ਬੈਕਗ੍ਰਾਊਂਡ ਟੈਬ ਗਰੁੱਪ ਵਜੋਂ ਮੁੜ-ਬਹਾਲ ਕਰੋ।</translation>
 <translation id="916446198114569890">ਉਹ URL ਤੁਹਾਡੇ Google ਖਾਤੇ 'ਤੇ ਰੱਖਿਅਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਜਿਨ੍ਹਾਂ 'ਤੇ ਤੁਸੀਂ ਗਏ ਹੋ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
index 0f2116d..03de2fa 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Przeglądaj offline</translation>
 <translation id="9137013805542155359">Pokaż tekst oryginalny</translation>
 <translation id="9148126808321036104">Zaloguj się ponownie</translation>
-<translation id="9155898266292537608">Możesz też wyszukiwać szybkim kliknięciem słowa</translation>
 <translation id="9158770349521403363">Udostępnij tylko treść</translation>
 <translation id="9159716826369098114">Przywróć grupę <ph name="TAB_COUNT" /> kart jako nową grupę kart w tle.</translation>
 <translation id="916446198114569890">Odwiedzane adresy URL są zapisywane na Twoim koncie Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
index 8e0090c0..8885163 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
@@ -1516,7 +1516,6 @@
 <translation id="9133397713400217035">Navegar off-line</translation>
 <translation id="9137013805542155359">Mostrar original</translation>
 <translation id="9148126808321036104">Faça login novamente</translation>
-<translation id="9155898266292537608">Você também pode pesquisar com um toque rápido em uma palavra</translation>
 <translation id="9158770349521403363">Compartilhar apenas o conteúdo</translation>
 <translation id="9159716826369098114">Restaurar grupo de <ph name="TAB_COUNT" /> guias como um novo grupo de guias em segundo plano.</translation>
 <translation id="916446198114569890">Os URLs que você acessa ficam armazenados na sua Conta do Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
index 4aaedaef..9efdb71 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Marcadores e histórico da Web</translation>
 <translation id="1513814250881909472">Sincronize para obter os separadores dos seus outros dispositivos</translation>
 <translation id="1513858653616922153">Eliminar palavra-passe</translation>
+<translation id="1514552811327923157">Pedido do Privacy Sandbox aberto à altura total</translation>
 <translation id="1518421282666914498">GIF expressivo <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Ativo hoje</translation>
 <translation id="1538801903729528855">Obtenha uma melhor experiência de voz na Web</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Avaliações</translation>
 <translation id="2718352093833049315">Apenas em Wi-Fi</translation>
 <translation id="2718846868787000099">Para apresentar conteúdo nos seus idiomas preferidos, os sites que visitar podem ver as suas preferências.</translation>
+<translation id="2722945394406572875">Pedido do Privacy Sandbox fechado</translation>
 <translation id="2723001399770238859">áudio</translation>
 <translation id="2732063072010454421">Obtenha uma experiência de voz melhorada</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Pedidos de autorização</translation>
 <translation id="5355191726083956201">A Proteção melhorada está ativada.</translation>
 <translation id="5368227114232678694">Para navegar em privado neste dispositivo, experimente a Navegação anónima</translation>
+<translation id="5371717687506906963">Pedido do Privacy Sandbox</translation>
 <translation id="5375577065097716013">Pesquisar imagem com Lens <ph name="BEGIN_NEW" />Novo<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Reação alterada</translation>
 <translation id="5401851137404501592">Para continuar, o fornecedor <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> vai partilhar o seu nome, endereço de email e imagem do perfil com este site.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">Conhecer os URLs dos sites permite que o Assistente Google ajude a concluir tarefas. Pode desativar o Assistente nas definições do Chrome.</translation>
 <translation id="5916664084637901428">Ativado</translation>
 <translation id="5919204609460789179">Atualizar <ph name="PRODUCT_NAME" /> para iniciar a sincronização</translation>
+<translation id="593625682991400408">Durante as avaliações, o Chrome explora formas de limitar o spam, as fraudes e a partilha entre sites. O Chrome também <ph name="BEGIN_LINK" />faz uma estimativa dos seus interesses<ph name="END_LINK" /> que os sites podem usar para lhe mostrar anúncios. Pode gerir os seus interesses nas definições.</translation>
 <translation id="5938820472109305350">Adicionar <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">A utilizar o Google para pesquisa</translation>
 <translation id="5945035219773565305">Recomendação atual:  <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Fluxo de armazenamento de marcadores fechado</translation>
 <translation id="9108312223223904744">Telemóvel como suporte de chave de segurança</translation>
 <translation id="9108808586816295166">O DNS seguro pode não estar sempre disponível.</translation>
+<translation id="9128984223251192329">Pedido do Privacy Sandbox aberto a meia altura</translation>
 <translation id="9133397713400217035">Explorar offline</translation>
 <translation id="9137013805542155359">Mostrar original</translation>
 <translation id="9148126808321036104">Iniciar sessão novamente</translation>
-<translation id="9155898266292537608">Também pode pesquisar ao tocar rapidamente numa palavra.</translation>
 <translation id="9158770349521403363">Apenas partilhar conteúdo</translation>
 <translation id="9159716826369098114">Restaure o grupo de <ph name="TAB_COUNT" /> separadores como um novo grupo de separadores em segundo plano.</translation>
 <translation id="916446198114569890">Os URLs que visita são guardados na sua Conta Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
index 3900427..5f3c4116 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Explorează offline</translation>
 <translation id="9137013805542155359">Afișează originalul</translation>
 <translation id="9148126808321036104">Conectează-te din nou</translation>
-<translation id="9155898266292537608">De asemenea, poți căuta atingând scurt un cuvânt</translation>
 <translation id="9158770349521403363">Trimite numai conținutul</translation>
 <translation id="9159716826369098114">Restabilește grupul de <ph name="TAB_COUNT" /> file ca pe un nou grup de file din fundal.</translation>
 <translation id="916446198114569890">Adresele URL pe care le accesezi sunt salvate în Contul Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
index fe1265d..7929fc8 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Офлайн-контент</translation>
 <translation id="9137013805542155359">Показать оригинал</translation>
 <translation id="9148126808321036104">Повторите вход</translation>
-<translation id="9155898266292537608">Также можно выполнить поиск, нажав на слово.</translation>
 <translation id="9158770349521403363">Поделиться без ссылки</translation>
 <translation id="9159716826369098114">Восстановить группу вкладок (<ph name="TAB_COUNT" />) и открыть ее в фоновом режиме.</translation>
 <translation id="916446198114569890">URL посещаемых сайтов сохраняются в аккаунте Google.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
index c8117d2e..35e925d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">නොබැඳිව ගවේෂණ කරන්න</translation>
 <translation id="9137013805542155359">මූලිකය පෙන්වන්න</translation>
 <translation id="9148126808321036104">නැවත පිවිසෙන්න</translation>
-<translation id="9155898266292537608">වචනයක් මත ඉක්මන් තට්ටු කිරීමකින් ඔබට සොයා ගත හැකිය</translation>
 <translation id="9158770349521403363">අන්තර්ගතය පමණක් බෙදා ගන්න</translation>
 <translation id="9159716826369098114">නව පසුබිම් ටැබ සමූහයක් ලෙස ටැබ <ph name="TAB_COUNT" />ක ටැබ සමූහය ප්‍රතිසාධනය කරන්න.</translation>
 <translation id="916446198114569890">ඔබ පිවිසෙන URL ඔබගේ Google ගිණුමට සුරැකේ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
index 16d5729..95b1e1a2 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Záložky a webová história</translation>
 <translation id="1513814250881909472">Zapnite synchronizáciu a získajte tak karty zo svojich ostatných zariadení</translation>
 <translation id="1513858653616922153">Odstrániť heslo</translation>
+<translation id="1514552811327923157">Výzva technológie Privacy Sandbox je otvorená na úplnú výšku</translation>
 <translation id="1518421282666914498">Gif pre emotikon <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Aktívne dnes</translation>
 <translation id="1538801903729528855">Zlepšite si vyhľadávanie hlasom na internete</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Skúšobné obdobia</translation>
 <translation id="2718352093833049315">Len s Wi‑Fi</translation>
 <translation id="2718846868787000099">Weby, ktoré navštevujete, môžu vidieť vaše predvoľby a zobrazovať tak obsah vo vašich preferovaných jazykoch.</translation>
+<translation id="2722945394406572875">Výzva technológie Privacy Sandbox bola zatvorená</translation>
 <translation id="2723001399770238859">zvuk</translation>
 <translation id="2732063072010454421">Získajte lepšie hlasové vyhľadávanie</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Žiadosti o povolenie</translation>
 <translation id="5355191726083956201">Je zapnutá rozšírená ochrana</translation>
 <translation id="5368227114232678694">Ak chcete v tomto zariadení prehliadať v súkromí, vyskúšajte režim inkognito</translation>
+<translation id="5371717687506906963">Výzva technológie Privacy Sandbox</translation>
 <translation id="5375577065097716013">Hľadať obrázok pomocou funkcie Google Lens <ph name="BEGIN_NEW" />Novinka<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Reakcia bola zmenená</translation>
 <translation id="5401851137404501592">Ak chcete pokračovať, <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> bude s týmto webom zdieľať vaše meno, e‑mailovú adresu a profilovú fotku.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">Keď bude Asistent Google poznať webové adresy, bude vám môcť pomáhať s plnením úloh. Asistenta môžete vypnúť v nastaveniach Chromu.</translation>
 <translation id="5916664084637901428">Zapnuté</translation>
 <translation id="5919204609460789179">Ak chcete spustiť synchronizáciu, aktualizujte aplikáciu <ph name="PRODUCT_NAME" /></translation>
+<translation id="593625682991400408">Počas skúšobných období hľadá Chrome spôsoby, ako obmedziť spam, podvody a zdieľanie obsahu medzi webmi. Chrome okrem toho <ph name="BEGIN_LINK" />odhaduje vaše záujmy<ph name="END_LINK" />, na základe ktorých vám weby môžu zobrazovať reklamy. Záujmy môžete spravovať v nastaveniach.</translation>
 <translation id="5938820472109305350">Pridať <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">Na vyhľadávanie sa používa Google</translation>
 <translation id="5945035219773565305">Aktuálne odporúčanie: <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Postup uloženia záložky bol zatvorený</translation>
 <translation id="9108312223223904744">Podpora používania telefónu ako bezpečnostného kľúča</translation>
 <translation id="9108808586816295166">Zabezpečený systém DNS nemusí byť vždy k dispozícii</translation>
+<translation id="9128984223251192329">Výzva technológie Privacy Sandbox je otvorená na polovičnú výšku</translation>
 <translation id="9133397713400217035">Preskúmať offline</translation>
 <translation id="9137013805542155359">Zobraziť originál</translation>
 <translation id="9148126808321036104">Znova sa prihlásiť</translation>
-<translation id="9155898266292537608">Vyhľadávať môžete aj rýchlym klepnutím na slovo</translation>
 <translation id="9158770349521403363">Zdieľať iba obsah</translation>
 <translation id="9159716826369098114">Obnovte skupinu kariet s <ph name="TAB_COUNT" /> kartami ako novú skupinu kariet na pozadí.</translation>
 <translation id="916446198114569890">Webové adresy, ktoré navštívite, sa uložia do vášho účtu Google</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 020f7c3..0fd3cf2 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Raziščite vsebino brez povezave</translation>
 <translation id="9137013805542155359">Pokaži izvirno besedilo</translation>
 <translation id="9148126808321036104">Prijavite se znova</translation>
-<translation id="9155898266292537608">Prav tako lahko iščete, tako da se hitro dotaknete besede</translation>
 <translation id="9158770349521403363">Deli samo vsebino</translation>
 <translation id="9159716826369098114">Obnovitev skupine zavihkov (št. zavihkov: <ph name="TAB_COUNT" />) kot nove skupine zavihkov v ozadju.</translation>
 <translation id="916446198114569890">URL-ji, ki jih obiščete, se shranijo v račun Google.</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 df51881..baf1998 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Eksploro jashtë linje</translation>
 <translation id="9137013805542155359">Shfaq origjinalin</translation>
 <translation id="9148126808321036104">Identifikohu sërish</translation>
-<translation id="9155898266292537608">Mund të kërkosh po ashtu me një trokitje të shpejtë te një fjalë</translation>
 <translation id="9158770349521403363">Ndaj vetëm përmbajtjen</translation>
 <translation id="9159716826369098114">Restauro grupin e skedave me <ph name="TAB_COUNT" /> skeda si një grup të ri të skedave në sfond.</translation>
 <translation id="916446198114569890">URL-të që viziton ruhen në llogarinë tënde të Google</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
index 50b118a..a73bb7a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Obeleživači i veb-istorija</translation>
 <translation id="1513814250881909472">Sinhronizujte podatke da bi vam bile dostupne kartice sa drugih uređaja</translation>
 <translation id="1513858653616922153">Izbriši lozinku</translation>
+<translation id="1514552811327923157">Upit za zaštićeno okruženje privatnosti otvoren je na celom ekranu</translation>
 <translation id="1518421282666914498">GIF za emocije <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Aktivan je danas</translation>
 <translation id="1538801903729528855">Ostvarite bolji doživljaj pri glasovnoj pretrazi na vebu</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Probe</translation>
 <translation id="2718352093833049315">Samo na WiFi-ju</translation>
 <translation id="2718846868787000099">Da bi vam prikazivali sadržaj na željenim jezicima, sajtovi koje posećujete mogu da vide podešavanja</translation>
+<translation id="2722945394406572875">Upit za zaštićeno okruženje privatnosti je zatvoren</translation>
 <translation id="2723001399770238859">audio</translation>
 <translation id="2732063072010454421">Dobijte bolji glasovni doživljaj</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Zahtevi za dozvolu</translation>
 <translation id="5355191726083956201">Poboljšana zaštita je uključena</translation>
 <translation id="5368227114232678694">Da biste privatno pregledali na ovom uređaju, isprobajte režim bez arhiviranja</translation>
+<translation id="5371717687506906963">Upit za zaštićeno okruženje privatnosti</translation>
 <translation id="5375577065097716013">Tražite sliku uz Google objektiv <ph name="BEGIN_NEW" />Novo<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Reakcija je promenjena</translation>
 <translation id="5401851137404501592">Da biste nastavili, <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> će deliti vaše ime, imejl adresu i sliku profila sa ovim sajtom.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">Kada Google pomoćnik zna URL-ove sajtova, može da vam pomogne da dovršite zadatke. Pomoćnik možete da isključite u podešavanjima Chrome-a.</translation>
 <translation id="5916664084637901428">Uključeno</translation>
 <translation id="5919204609460789179">Ažurirajte <ph name="PRODUCT_NAME" /> da biste započeli sinhronizaciju</translation>
+<translation id="593625682991400408">Tokom probnih perioda Chrome istražuje načine da ograniči nepoželjan sadržaj, prevaru i deljenje između sajtova. Chrome <ph name="BEGIN_LINK" />procenjuje i vaša interesovanja<ph name="END_LINK" /> koja sajtovi mogu da koriste da bi vam prikazivali oglase. Interesovanjima možete da upravljate u podešavanjima.</translation>
 <translation id="5938820472109305350">Dodajte: <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">Koristite Google za pretragu</translation>
 <translation id="5945035219773565305">Aktuelna preporuka: <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Tok čuvanja obeleživača je zatvoren</translation>
 <translation id="9108312223223904744">Podrška za telefon kao bezbednosni ključ</translation>
 <translation id="9108808586816295166">Bezbedni DNS možda neće uvek biti dostupan</translation>
+<translation id="9128984223251192329">Upit za zaštićeno okruženje privatnosti otvoren je do polovine ekrana</translation>
 <translation id="9133397713400217035">Istražujte oflajn</translation>
 <translation id="9137013805542155359">Prikaži original</translation>
 <translation id="9148126808321036104">Prijavi me ponovo</translation>
-<translation id="9155898266292537608">Možete i kratko da dodirnete reč da biste je pretražili</translation>
 <translation id="9158770349521403363">Delite samo sadržaj</translation>
 <translation id="9159716826369098114">Vratite grupu kartica (<ph name="TAB_COUNT" />) kao novu grupu kartica u pozadini.</translation>
 <translation id="916446198114569890">URL-ovi koje posećujete se čuvaju na Google nalogu</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
index 66b97a8..1cde2e74 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">Обележивачи и веб-историја</translation>
 <translation id="1513814250881909472">Синхронизујте податке да би вам биле доступне картице са других уређаја</translation>
 <translation id="1513858653616922153">Избриши лозинку</translation>
+<translation id="1514552811327923157">Упит за заштићено окружење приватности отворен је на целом екрану</translation>
 <translation id="1518421282666914498">GIF за емоције <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">Активан је данас</translation>
 <translation id="1538801903729528855">Остварите бољи доживљај при гласовној претрази на вебу</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">Пробе</translation>
 <translation id="2718352093833049315">Само на WiFi-ју</translation>
 <translation id="2718846868787000099">Да би вам приказивали садржај на жељеним језицима, сајтови које посећујете могу да виде подешавања</translation>
+<translation id="2722945394406572875">Упит за заштићено окружење приватности је затворен</translation>
 <translation id="2723001399770238859">аудио</translation>
 <translation id="2732063072010454421">Добијте бољи гласовни доживљај</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">Захтеви за дозволу</translation>
 <translation id="5355191726083956201">Побољшана заштита је укључена</translation>
 <translation id="5368227114232678694">Да бисте приватно прегледали на овом уређају, испробајте режим без архивирања</translation>
+<translation id="5371717687506906963">Упит за заштићено окружење приватности</translation>
 <translation id="5375577065097716013">Тражите слику уз Google објектив <ph name="BEGIN_NEW" />Ново<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">Реакција је промењена</translation>
 <translation id="5401851137404501592">Да бисте наставили, <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> ће делити ваше име, имејл адресу и слику профила са овим сајтом.</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">Када Google помоћник зна URL-ове сајтова, може да вам помогне да довршите задатке. Помоћник можете да искључите у подешавањима Chrome-а.</translation>
 <translation id="5916664084637901428">Укључено</translation>
 <translation id="5919204609460789179">Ажурирајте <ph name="PRODUCT_NAME" /> да бисте започели синхронизацију</translation>
+<translation id="593625682991400408">Током пробних периода Chrome истражује начине да ограничи непожељан садржај, превару и дељење између сајтова. Chrome <ph name="BEGIN_LINK" />процењује и ваша интересовања<ph name="END_LINK" /> која сајтови могу да користе да би вам приказивали огласе. Интересовањима можете да управљате у подешавањима.</translation>
 <translation id="5938820472109305350">Додајте: <ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">Користите Google за претрагу</translation>
 <translation id="5945035219773565305">Актуелна препорука: <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">Ток чувања обележивача је затворен</translation>
 <translation id="9108312223223904744">Подршка за телефон као безбедносни кључ</translation>
 <translation id="9108808586816295166">Безбедни DNS можда неће увек бити доступан</translation>
+<translation id="9128984223251192329">Упит за заштићено окружење приватности отворен је до половине екрана</translation>
 <translation id="9133397713400217035">Истражујте офлајн</translation>
 <translation id="9137013805542155359">Прикажи оригинал</translation>
 <translation id="9148126808321036104">Пријави ме поново</translation>
-<translation id="9155898266292537608">Можете и кратко да додирнете реч да бисте је претражили</translation>
 <translation id="9158770349521403363">Делите само садржај</translation>
 <translation id="9159716826369098114">Вратите групу картица (<ph name="TAB_COUNT" />) као нову групу картица у позадини.</translation>
 <translation id="916446198114569890">URL-ови које посећујете се чувају на Google налогу</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 ef9378b..b39802f 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
@@ -1516,7 +1516,6 @@
 <translation id="9133397713400217035">Utforska offline</translation>
 <translation id="9137013805542155359">Visa original</translation>
 <translation id="9148126808321036104">Logga in igen</translation>
-<translation id="9155898266292537608">Du kan även söka med ett snabbt tryck eller ett ord</translation>
 <translation id="9158770349521403363">Dela endast innehåll</translation>
 <translation id="9159716826369098114">Återställ flikgruppen med <ph name="TAB_COUNT" /> flikar som en ny flikgrupp i bakgrunden.</translation>
 <translation id="916446198114569890">Webbadresserna du besöker sparas i Google-kontot</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 2c13f1b..6577a5e9 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Pitia Ukiwa Nje ya Mtandao</translation>
 <translation id="9137013805542155359">Onyesha asili</translation>
 <translation id="9148126808321036104">Ingia tena</translation>
-<translation id="9155898266292537608">Unaweza pia kutafuta kwa kugusa haraka kwenye neno</translation>
 <translation id="9158770349521403363">Shiriki maudhui pekee</translation>
 <translation id="9159716826369098114">Rejesha kikundi cha vichupo <ph name="TAB_COUNT" /> kiwe kikundi kipya cha vichupo vinavyofanya kazi chinichini.</translation>
 <translation id="916446198114569890">URL unazotembelea huhifadhiwa kwenye akaunti yako ya Google</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 e00efe3..20401e4 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">ஆஃப்லைனில் கண்டறியுங்கள்</translation>
 <translation id="9137013805542155359">அசலைக் காண்பி</translation>
 <translation id="9148126808321036104">மீண்டும் உள்நுழைக</translation>
-<translation id="9155898266292537608">ஒரு சொல்லைத் தட்டி உடனடியாகவும் தேடலாம்</translation>
 <translation id="9158770349521403363">உள்ளடக்கத்தை மட்டும் பகிரும்</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> பக்கங்களின் பக்கக் குழுவை புதிய பின்னணிப் பக்கக் குழுவாக மீட்டெடுக்கும்.</translation>
 <translation id="916446198114569890">நீங்கள் பார்வையிடும் URLகள் உங்கள் Google கணக்கில் சேமிக்கப்படும்</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
index f32b3f7..6ad092a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
@@ -1520,7 +1520,6 @@
 <translation id="9133397713400217035">ఆఫ్‌లైన్‌లో అన్వేషించండి</translation>
 <translation id="9137013805542155359">అసలును చూపించు</translation>
 <translation id="9148126808321036104">మళ్ళీ సైన్ ఇన్ చేయండి</translation>
-<translation id="9155898266292537608">ఒక పదంపై నొక్కడం ద్వారా కూడా మీరు త్వరగా వెతకవచ్చు</translation>
 <translation id="9158770349521403363">కంటెంట్‌ను మాత్రమే షేర్ చేయండి</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> ట్యాబ్‌ల ట్యాబ్ గ్రూప్‌ను కొత్త బ్యాక్‌గ్రౌండ్ ట్యాబ్ గ్రూప్‌గా రీస్టోర్ చేయండి.</translation>
 <translation id="916446198114569890">మీరు సందర్శించే URLలు మీ Google ఖాతాకు సేవ్ చేయబడతాయి</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
index 89ad9f9..b38bad7a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">บุ๊กมาร์กและประวัติเว็บ</translation>
 <translation id="1513814250881909472">ซิงค์เพื่อรับแท็บจากอุปกรณ์อื่นๆ</translation>
 <translation id="1513858653616922153">ลบรหัสผ่าน</translation>
+<translation id="1514552811327923157">ข้อความแจ้งเกี่ยวกับ Privacy Sandbox เปิดอยู่แบบเต็มหน้า</translation>
 <translation id="1518421282666914498">GIF แสดงอารมณ์ <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">ใช้งานวันนี้</translation>
 <translation id="1538801903729528855">รับประสบการณ์ใช้งานด้วยเสียงที่ดียิ่งขึ้นบนเว็บ</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">การทดลองใช้</translation>
 <translation id="2718352093833049315">Wi-Fi เท่านั้น</translation>
 <translation id="2718846868787000099">เว็บไซต์ที่คุณเข้าชมสามารถดูค่ากำหนดเพื่อแสดงเนื้อหาในภาษาที่คุณต้องการ</translation>
+<translation id="2722945394406572875">ปิดข้อความแจ้งเกี่ยวกับ Privacy Sandbox แล้ว</translation>
 <translation id="2723001399770238859">เสียง</translation>
 <translation id="2732063072010454421">รับประสบการณ์ใช้งานด้วยเสียงที่ดียิ่งขึ้น</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">คำขอสิทธิ์</translation>
 <translation id="5355191726083956201">การปกป้องที่ปรับปรุงแล้วเปิดอยู่</translation>
 <translation id="5368227114232678694">ลองใช้โหมดไม่ระบุตัวตนเพื่อท่องเว็บอย่างเป็นส่วนตัวในอุปกรณ์นี้</translation>
+<translation id="5371717687506906963">ข้อความแจ้งเกี่ยวกับ Privacy Sandbox</translation>
 <translation id="5375577065097716013">ค้นหาภาพด้วย Google Lens <ph name="BEGIN_NEW" />ใหม่<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">เปลี่ยนความรู้สึกแล้ว</translation>
 <translation id="5401851137404501592">หากต้องการดำเนินการต่อ <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> จะแชร์ชื่อ อีเมล และรูปโปรไฟล์ของคุณกับเว็บไซต์นี้</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">หากทราบ URL ของเว็บไซต์ Google Assistant จะช่วยทำงานที่ต้องการให้เสร็จสิ้นได้ คุณปิด Assistant ได้ในการตั้งค่า Chrome</translation>
 <translation id="5916664084637901428">เปิด</translation>
 <translation id="5919204609460789179">อัปเดต <ph name="PRODUCT_NAME" /> เพื่อเริ่มซิงค์</translation>
+<translation id="593625682991400408">ระหว่างช่วงทดลองใช้ Chrome จะสำรวจวิธีจำกัดสแปม การประพฤติมิชอบ และการแชร์ระหว่างเว็บไซต์ Chrome ยังจะ<ph name="BEGIN_LINK" />คาดคะเนความสนใจของคุณ<ph name="END_LINK" />ซึ่งเว็บไซต์สามารถนำไปใช้เพื่อแสดงโฆษณาให้คุณได้อีกด้วย คุณจัดการความสนใจได้ในการตั้งค่า</translation>
 <translation id="5938820472109305350">เพิ่ม<ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">กำลังใช้ Google ในการค้นหา</translation>
 <translation id="5945035219773565305">คำแนะนำปัจจุบัน: <ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">ขั้นตอนการบันทึกบุ๊กมาร์กปิดอยู่</translation>
 <translation id="9108312223223904744">โทรศัพท์เป็นการรองรับคีย์ความปลอดภัย</translation>
 <translation id="9108808586816295166">DNS ที่ปลอดภัยอาจไม่พร้อมใช้งานในบางครั้ง</translation>
+<translation id="9128984223251192329">ข้อความแจ้งเกี่ยวกับ Privacy Sandbox เปิดอยู่แบบครึ่งหน้า</translation>
 <translation id="9133397713400217035">สำรวจแบบออฟไลน์</translation>
 <translation id="9137013805542155359">แสดงหน้าเว็บเดิม</translation>
 <translation id="9148126808321036104">ลงชื่อเข้าใช้อีกครั้ง</translation>
-<translation id="9155898266292537608">หรือคุณจะค้นหาด้วยการแตะอย่างรวดเร็วที่คำๆ หนึ่งก็ได้เช่นกัน</translation>
 <translation id="9158770349521403363">แชร์เนื้อหาเท่านั้น</translation>
 <translation id="9159716826369098114">คืนค่ากลุ่มแท็บ <ph name="TAB_COUNT" /> แท็บเป็นกลุ่มแท็บใหม่ในเบื้องหลัง</translation>
 <translation id="916446198114569890">ระบบจะบันทึก URL ที่เข้าชมไว้ในบัญชี Google ของคุณ</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 02875989e..f782fb0 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Çevrimdışıyken Keşfet</translation>
 <translation id="9137013805542155359">Orijinali göster</translation>
 <translation id="9148126808321036104">Tekrar oturum açın</translation>
-<translation id="9155898266292537608">Bir kelimeye hızlıca dokunarak da arama yapabilirsiniz</translation>
 <translation id="9158770349521403363">Yalnızca içerik paylaşılıyor</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> sekmeden oluşan sekme grubunu, yeni bir arka plan sekme grubu olarak geri yükleyin.</translation>
 <translation id="916446198114569890">Ziyaret ettiğiniz URL'ler Google hesabınıza kaydedilir</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
index a6176e5e..05e0a09 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Перегляд у режимі офлайн</translation>
 <translation id="9137013805542155359">Показати оригінал</translation>
 <translation id="9148126808321036104">Увійти знову</translation>
-<translation id="9155898266292537608">Можете також шукати, швидко торкнувшись слова</translation>
 <translation id="9158770349521403363">Поділитися лише контентом</translation>
 <translation id="9159716826369098114">Відновити групу вкладок (<ph name="TAB_COUNT" />) як нову фонову групу вкладок.</translation>
 <translation id="916446198114569890">URL-адреси, на які ви переходите, зберігаються в обліковому записі Google</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 84c0a9f..3793d61 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">آف لائن دریافت کریں</translation>
 <translation id="9137013805542155359">اصل دکھائیں</translation>
 <translation id="9148126808321036104">دوبارہ سائن ان کریں</translation>
-<translation id="9155898266292537608">آپ کسی لفظ پر فوری تھپتھپاہٹ سے بھی تلاش کر سکتے ہیں</translation>
 <translation id="9158770349521403363">صرف مواد کا استعمال کریں</translation>
 <translation id="9159716826369098114"><ph name="TAB_COUNT" /> ٹیبز کے ٹیب گروپ کو پس منظر کے ایک نئے ٹیب گروپ کے بطور بحال کریں۔</translation>
 <translation id="916446198114569890">‏آپ کے ملاحظہ کردہ URLs آپ کے Google اکاؤنٹ میں محفوظ ہوتے ہیں</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
index 20bd9aa1..ad2684a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Oflayn kontent</translation>
 <translation id="9137013805542155359">Asl tilda ko‘rsatish</translation>
 <translation id="9148126808321036104">Qaytadan kiring</translation>
-<translation id="9155898266292537608">Shuningdek so‘z ustiga bosib qidirish mumkin</translation>
 <translation id="9158770349521403363">Faqat kontentni ulashish</translation>
 <translation id="9159716826369098114">Varaqlar guruhini (<ph name="TAB_COUNT" />) yangi fondagi varaqlar guruhi sifatida tiklash.</translation>
 <translation id="916446198114569890">Tashrif qilingan URL manzillar Google hisobingizda saqlanadi</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 a02e0ab9..d95031e5 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
@@ -1520,7 +1520,6 @@
 <translation id="9133397713400217035">Khám phá khi không kết nối Internet</translation>
 <translation id="9137013805542155359">Hiển thị văn bản gốc</translation>
 <translation id="9148126808321036104">Đăng nhập lại</translation>
-<translation id="9155898266292537608">Bạn cũng có thể tìm kiếm bằng cách nhấn nhanh vào một từ</translation>
 <translation id="9158770349521403363">Chỉ chia sẻ nội dung</translation>
 <translation id="9159716826369098114">Khôi phục nhóm <ph name="TAB_COUNT" /> thẻ dưới dạng một nhóm thẻ nền mới.</translation>
 <translation id="916446198114569890">Các URL bạn truy cập sẽ được lưu vào tài khoản Google của bạn</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 68573cc..838cd05 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">离线浏览</translation>
 <translation id="9137013805542155359">显示原始网页</translation>
 <translation id="9148126808321036104">重新登录</translation>
-<translation id="9155898266292537608">您也可以通过快速点按某个字词进行搜索</translation>
 <translation id="9158770349521403363">仅分享内容</translation>
 <translation id="9159716826369098114">将包含 <ph name="TAB_COUNT" /> 个标签页的标签页分组恢复为新的背景标签页分组。</translation>
 <translation id="916446198114569890">系统会将您访问的网址保存到您的 Google 帐号中</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 ba09f9c..affa16e 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
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">書籤和網頁記錄</translation>
 <translation id="1513814250881909472">進行同步處理,取得您在其他裝置上的分頁</translation>
 <translation id="1513858653616922153">刪除密碼</translation>
+<translation id="1514552811327923157">Privacy Sandbox 提示已開啟,顯示於整個畫面</translation>
 <translation id="1518421282666914498">表情符號 GIF <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">今天已使用</translation>
 <translation id="1538801903729528855">獲得更佳的網上語音體驗</translation>
@@ -321,6 +322,7 @@
 <translation id="2711073837061989559">試用功能</translation>
 <translation id="2718352093833049315">僅限 Wi-Fi 連線時</translation>
 <translation id="2718846868787000099">為了要以您偏好的語言顯示內容,您瀏覽的網站將能看到偏好設定</translation>
+<translation id="2722945394406572875">Privacy Sandbox 提示已關閉</translation>
 <translation id="2723001399770238859">音效檔案</translation>
 <translation id="2732063072010454421">獲得更佳的語音體驗</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -791,6 +793,7 @@
 <translation id="5342314432463739672">權限要求</translation>
 <translation id="5355191726083956201">已開啟「強化保護功能」</translation>
 <translation id="5368227114232678694">如要在此裝置上私密瀏覽,請使用「無痕模式」</translation>
+<translation id="5371717687506906963">Privacy Sandbox 提示</translation>
 <translation id="5375577065097716013">使用「Google 智能鏡頭」搜尋圖片 <ph name="BEGIN_NEW" />新功能<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">已經變更咗反應</translation>
 <translation id="5401851137404501592">如要繼續,<ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> 將會與此網站分享您的姓名、電郵地址和個人檔案相片。</translation>
@@ -894,6 +897,7 @@
 <translation id="5906513782029855931">如果「Google 助理」知道網站的網址,便能夠助您完成工作。您可在 Chrome 設定中關閉「Google 助理」。</translation>
 <translation id="5916664084637901428">開啟</translation>
 <translation id="5919204609460789179">更新 <ph name="PRODUCT_NAME" /> 即可開始同步處理</translation>
+<translation id="593625682991400408">在試用期間,Chrome 會探索如何防範垃圾內容和詐欺行為,以及限制網站之間分享資訊的方法。Chrome 還會<ph name="BEGIN_LINK" />推測你的興趣喜好<ph name="END_LINK" />,讓網站能夠顯示廣告。你可以前往設定管理自己的興趣喜好。</translation>
 <translation id="5938820472109305350">新增<ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">使用 Google 搜尋內容</translation>
 <translation id="5945035219773565305">目前的建議:<ph name="RECOMMENDATION" /></translation>
@@ -1512,10 +1516,10 @@
 <translation id="9106148373857059373">閂咗書籤儲存流程</translation>
 <translation id="9108312223223904744">支援「讓手機作為安全密鑰」</translation>
 <translation id="9108808586816295166">可能無法隨時使用安全 DNS</translation>
+<translation id="9128984223251192329">Privacy Sandbox 提示已開啟,顯示在畫面下半部</translation>
 <translation id="9133397713400217035">離線探索</translation>
 <translation id="9137013805542155359">顯示原文</translation>
 <translation id="9148126808321036104">重新登入</translation>
-<translation id="9155898266292537608">您亦可以透過快速輕按某個字詞進行搜尋</translation>
 <translation id="9158770349521403363">只分享內容</translation>
 <translation id="9159716826369098114">還原有 <ph name="TAB_COUNT" /> 個分頁嘅分頁群組做新嘅背景分頁群組。</translation>
 <translation id="916446198114569890">系統會將您瀏覽的網址儲存至 Google 帳戶</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
index 7650bbe6..ea91c94 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -110,6 +110,7 @@
 <translation id="1513352483775369820">書籤與網頁記錄</translation>
 <translation id="1513814250881909472">進行同步處理,取得你在其他裝置上的分頁</translation>
 <translation id="1513858653616922153">刪除密碼</translation>
+<translation id="1514552811327923157">Privacy Sandbox 提示已開啟,顯示於整個畫面</translation>
 <translation id="1518421282666914498">表情符號 GIF <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="1521774566618522728">上次使用時間:今天</translation>
 <translation id="1538801903729528855">在網頁上享有更好的語音體驗</translation>
@@ -320,6 +321,7 @@
 <translation id="2711073837061989559">試用</translation>
 <translation id="2718352093833049315">僅限連上 Wi-Fi 網路時</translation>
 <translation id="2718846868787000099">如要以偏好的語言顯示內容,你所造訪的網站將可查看你的偏好設定</translation>
+<translation id="2722945394406572875">Privacy Sandbox 提示已關閉</translation>
 <translation id="2723001399770238859">音訊</translation>
 <translation id="2732063072010454421">享受更優質的語音搜尋體驗</translation>
 <translation id="2739256783402597439">2G</translation>
@@ -790,6 +792,7 @@
 <translation id="5342314432463739672">權限要求</translation>
 <translation id="5355191726083956201">已啟用強化防護功能</translation>
 <translation id="5368227114232678694">如果想在這部裝置上進行私密瀏覽,請使用無痕模式</translation>
+<translation id="5371717687506906963">Privacy Sandbox 提示</translation>
 <translation id="5375577065097716013">使用 Google 智慧鏡頭搜尋圖片 <ph name="BEGIN_NEW" />新功能<ph name="END_NEW" /></translation>
 <translation id="5376898820269806588">已變更回應</translation>
 <translation id="5401851137404501592">如要繼續,<ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> 會將你的姓名、電子郵件地址和個人資料相片提供給這個網站。</translation>
@@ -893,6 +896,7 @@
 <translation id="5906513782029855931">允許 Google 助理取得網站的網址,以便協助你完成工作。你可以在 Chrome 設定中停用 Google 助理。</translation>
 <translation id="5916664084637901428">開啟</translation>
 <translation id="5919204609460789179">更新 <ph name="PRODUCT_NAME" /> 即可開始同步處理</translation>
+<translation id="593625682991400408">在試用期間,Chrome 會探索如何防範垃圾內容和詐欺行為,以及限制網站之間分享資訊的方法。Chrome 還會<ph name="BEGIN_LINK" />推測你的興趣喜好<ph name="END_LINK" />,讓網站能夠顯示廣告。你可以前往設定管理自己的興趣喜好。</translation>
 <translation id="5938820472109305350">新增<ph name="INTEREST" /></translation>
 <translation id="5942872142862698679">現已使用 Google 搜尋</translation>
 <translation id="5945035219773565305">目前建議:<ph name="RECOMMENDATION" /></translation>
@@ -1509,10 +1513,10 @@
 <translation id="9106148373857059373">書籤儲存流程已關閉</translation>
 <translation id="9108312223223904744">支援使用手機做為安全金鑰</translation>
 <translation id="9108808586816295166">可能無法隨時使用安全 DNS</translation>
+<translation id="9128984223251192329">Privacy Sandbox 提示已開啟,顯示在畫面下半部</translation>
 <translation id="9133397713400217035">離線探索</translation>
 <translation id="9137013805542155359">顯示原文</translation>
 <translation id="9148126808321036104">重新登入</translation>
-<translation id="9155898266292537608">快速輕觸字詞也可以展開搜尋</translation>
 <translation id="9158770349521403363">僅分享內容</translation>
 <translation id="9159716826369098114">將 <ph name="TAB_COUNT" /> 個分頁群組還原為新的背景分頁群組。</translation>
 <translation id="916446198114569890">系統會將你造訪的網址儲存到 Google 帳戶</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 e34597c..b99d724 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
@@ -1515,7 +1515,6 @@
 <translation id="9133397713400217035">Hlola okungaxhunyiwe ku-inthanethi</translation>
 <translation id="9137013805542155359">Bonisa okwangempela</translation>
 <translation id="9148126808321036104">Phinda ungene ngemvume</translation>
-<translation id="9155898266292537608">Futhi ungasesha ngokuthepha okusheshayo egameni</translation>
 <translation id="9158770349521403363">Yabelana ngokuqukethwe kuphela</translation>
 <translation id="9159716826369098114">Buyisela ithebhu yeqembu lamathebhu angu-<ph name="TAB_COUNT" /> njengeqembu lethebhu yangemuva entsha.</translation>
 <translation id="916446198114569890">Ama-URL owavakashelayo alondolozwe ku-Google Account yakho</translation>
diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/startup/bad_flags_prompt.cc
index d03430a..a470033 100644
--- a/chrome/browser/ui/startup/bad_flags_prompt.cc
+++ b/chrome/browser/ui/startup/bad_flags_prompt.cc
@@ -144,6 +144,10 @@
     // origins.
     switches::kIsolatedAppOrigins,
 
+    // This flag tells Chrome to automatically install given isolated PWA during
+    // start up. The functionality is under active development.
+    switches::kInstallIsolatedAppsAtStartup,
+
     // Allows the specified origin to make Web Authentication API requests on
     // behalf of other origins, if a corresponding Google-internal
     // platform-level enterprise policy is also applied.
diff --git a/chrome/browser/ui/startup/startup_browser_creator.h b/chrome/browser/ui/startup/startup_browser_creator.h
index 902f9867..790d0ee 100644
--- a/chrome/browser/ui/startup/startup_browser_creator.h
+++ b/chrome/browser/ui/startup/startup_browser_creator.h
@@ -206,6 +206,14 @@
                            OpenAppShortcutWindowPref);
   FRIEND_TEST_ALL_PREFIXES(StartupBrowserCreatorChromeAppShortcutTest,
                            OpenPolicyForcedAppShortcut);
+  FRIEND_TEST_ALL_PREFIXES(StartupBrowserCreatorChromeAppShortcutTestWithLaunch,
+                           OpenAppShortcutNoPref);
+  FRIEND_TEST_ALL_PREFIXES(StartupBrowserCreatorChromeAppShortcutTestWithLaunch,
+                           OpenAppShortcutTabPref);
+  FRIEND_TEST_ALL_PREFIXES(StartupBrowserCreatorChromeAppShortcutTestWithLaunch,
+                           OpenAppShortcutWindowPref);
+  FRIEND_TEST_ALL_PREFIXES(StartupBrowserCreatorChromeAppShortcutTestWithLaunch,
+                           OpenPolicyForcedAppShortcut);
   FRIEND_TEST_ALL_PREFIXES(StartupBrowserCreatorTest, OpenAppUrlShortcut);
   FRIEND_TEST_ALL_PREFIXES(StartupBrowserCreatorTest,
                            OpenAppUrlIncognitoShortcut);
diff --git a/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc b/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc
index 328ef97..6d708c2d 100644
--- a/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc
@@ -657,16 +657,14 @@
     }
   }
 
-  void ExpectBlockLaunch(
-      const std::string& force_installed_app_id = std::string()) {
+  void ExpectBlockLaunch(const std::string& app_id, bool force_install_dialog) {
     ASSERT_EQ(2u, chrome::GetBrowserCount(browser()->profile()));
 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
     BUILDFLAG(IS_FUCHSIA)
     auto waiter = views::NamedWidgetShownWaiter(
         views::test::AnyWidgetTestPasskey{},
-        force_installed_app_id.empty()
-            ? "DeprecatedAppsDialogView"
-            : "ForceInstalledDeprecatedAppsDialogView");
+        force_install_dialog ? "ForceInstalledDeprecatedAppsDialogView"
+                             : "DeprecatedAppsDialogView");
 #endif
     // Should have opened the requested homepage about:blank in 1st window.
     TabStripModel* tab_strip = browser()->tab_strip_model();
@@ -686,10 +684,12 @@
     BUILDFLAG(IS_FUCHSIA)
 
     GURL expected_url =
-        force_installed_app_id.empty()
-            ? GURL(chrome::kChromeUIAppsWithDeprecationDialogURL)
-            : GURL(chrome::kChromeUIAppsWithForceInstalledDeprecationDialogURL +
-                   force_installed_app_id);
+        force_install_dialog
+            ? GURL(chrome::kChromeUIAppsWithForceInstalledDeprecationDialogURL +
+                   app_id)
+            : GURL(chrome::kChromeUIAppsWithDeprecationDialogURL + app_id);
+    EXPECT_EQ(expected_url,
+              other_tab_strip->GetWebContentsAt(0)->GetVisibleURL());
     EXPECT_EQ(expected_url,
               other_tab_strip->GetWebContentsAt(0)->GetVisibleURL());
 
@@ -762,7 +762,7 @@
                                         expected_title);
     EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
   } else {
-    ExpectBlockLaunch();
+    ExpectBlockLaunch(extension_app->id(), /*force_install_dialog=*/false);
   }
 }
 
@@ -798,7 +798,7 @@
               std::string::npos)
         << new_browser->app_name();
   } else {
-    ExpectBlockLaunch();
+    ExpectBlockLaunch(extension_app->id(), /*force_install_dialog=*/false);
   }
 }
 
@@ -844,7 +844,7 @@
                                         expected_title);
     EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
   } else {
-    ExpectBlockLaunch();
+    ExpectBlockLaunch(extension_app->id(), /*force_install_dialog=*/false);
   }
 }
 
@@ -898,7 +898,7 @@
                                         expected_title);
     EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
   } else {
-    ExpectBlockLaunch(extension_app->id());
+    ExpectBlockLaunch(extension_app->id(), /*force_install_dialog=*/true);
   }
 }
 
diff --git a/chrome/browser/ui/tab_dialogs.h b/chrome/browser/ui/tab_dialogs.h
index 3b7f8ec..2b3732e 100644
--- a/chrome/browser/ui/tab_dialogs.h
+++ b/chrome/browser/ui/tab_dialogs.h
@@ -52,13 +52,16 @@
 
   // Shows the deprecated app dialog.
   virtual void ShowDeprecatedAppsDialog(
+      const extensions::ExtensionId& optional_launched_extension_id,
       const std::set<extensions::ExtensionId>& deprecated_app_ids,
-      content::WebContents* web_contents) = 0;
+      content::WebContents* web_contents,
+      base::OnceClosure launch_anyways) = 0;
 
   // Shows the force installed and deprecated app dialog.
   virtual void ShowForceInstalledDeprecatedAppsDialog(
       const extensions::ExtensionId& app_id,
-      content::WebContents* web_contents) = 0;
+      content::WebContents* web_contents,
+      base::OnceClosure launch_anyways) = 0;
 
   // Shows or hides the ManagePasswords bubble.
   // Pass true for |user_action| if this is a user initiated action.
diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc
index a8bb273b..585f2e6 100644
--- a/chrome/browser/ui/ui_features.cc
+++ b/chrome/browser/ui/ui_features.cc
@@ -41,10 +41,6 @@
 #endif
 };
 
-// Whether to show a feedback button in the What's New UI.
-const base::FeatureParam<bool> kChromeWhatsNewUIFeedbackButton{
-    &kChromeWhatsNewUI, "ChromeWhatsNewUIFeedbackButton", false};
-
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
 // Enables "new" badge for "Chrome What's New" in Main Chrome Menu | Help.
 const base::Feature kChromeWhatsNewInMainMenuNewBadge{
diff --git a/chrome/browser/ui/ui_features.h b/chrome/browser/ui/ui_features.h
index 17f2b50d..aa38930 100644
--- a/chrome/browser/ui/ui_features.h
+++ b/chrome/browser/ui/ui_features.h
@@ -33,7 +33,6 @@
 #endif
 
 extern const base::Feature kChromeWhatsNewUI;
-extern const base::FeatureParam<bool> kChromeWhatsNewUIFeedbackButton;
 
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
 extern const base::Feature kChromeWhatsNewInMainMenuNewBadge;
diff --git a/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view_browsertest.cc b/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view_browsertest.cc
index dcb961bc..61f7614 100644
--- a/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view_browsertest.cc
+++ b/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view_browsertest.cc
@@ -14,6 +14,9 @@
 #include "chrome/browser/ui/browser_window.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/test/test_browser_dialog.h"
+#include "chrome/browser/ui/views/extensions/extensions_toolbar_container.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
+#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "chrome/browser/ui/web_applications/test/web_app_browsertest_util.h"
 #include "chrome/browser/web_applications/test/web_app_install_test_utils.h"
 #include "chrome/browser/web_applications/user_display_mode.h"
@@ -22,12 +25,16 @@
 #include "content/public/test/browser_test.h"
 #include "content/public/test/browser_test_utils.h"
 #include "content/public/test/test_utils.h"
+#include "extensions/browser/disable_reason.h"
 #include "extensions/browser/extension_dialog_auto_confirm.h"
 #include "extensions/browser/extension_system.h"
+#include "extensions/browser/test_extension_registry_observer.h"
 #include "extensions/common/extension.h"
 #include "extensions/common/extension_builder.h"
 #include "extensions/common/extension_urls.h"
 #include "extensions/common/value_builder.h"
+#include "ui/views/layout/animating_layout_manager_test_util.h"
+#include "ui/views/test/widget_test.h"
 
 namespace {
 
@@ -55,6 +62,13 @@
                              std::make_unique<base::Value>(kUninstallUrl));
 }
 
+void CloseUninstallDialog(views::Widget* const bubble_widget) {
+  views::test::WidgetDestroyedWaiter destroyed_waiter(bubble_widget);
+  bubble_widget->CloseWithReason(
+      views::Widget::ClosedReason::kCloseButtonClicked);
+  destroyed_waiter.Wait();
+}
+
 class TestExtensionUninstallDialogDelegate
     : public extensions::ExtensionUninstallDialog::Delegate {
  public:
@@ -341,6 +355,114 @@
   EXPECT_TRUE(!delegate.canceled());
 }
 
+// Tests the dialog is anchored in the correct place based on whether the
+// extensions container is visible.
+// Regression test for crbug.com/133249.
+IN_PROC_BROWSER_TEST_F(ExtensionUninstallDialogViewBrowserTest,
+                       DialogAnchoredInCorrectPlace) {
+  extensions::ExtensionService* extension_service =
+      extensions::ExtensionSystem::Get(browser()->profile())
+          ->extension_service();
+
+  scoped_refptr<const extensions::Extension> extensionA(BuildTestExtension());
+  scoped_refptr<const extensions::Extension> extensionB(BuildTestExtension());
+  extension_service->AddExtension(extensionA.get());
+  extension_service->AddExtension(extensionB.get());
+
+  // Extensions container should be visible since there are enabled
+  // extensions.
+  ExtensionsToolbarContainer* const container =
+      BrowserView::GetBrowserViewForBrowser(browser())
+          ->toolbar()
+          ->extensions_container();
+  ASSERT_TRUE(container->GetVisible());
+  ASSERT_TRUE(container->GetViewForId(extensionA->id()));
+
+  {
+    base::RunLoop run_loop;
+    TestExtensionUninstallDialogDelegate delegate(run_loop.QuitClosure());
+    std::unique_ptr<extensions::ExtensionUninstallDialog> dialog(
+        extensions::ExtensionUninstallDialog::Create(
+            browser()->profile(), browser()->window()->GetNativeWindow(),
+            &delegate));
+
+    dialog->ConfirmUninstall(extensionA.get(),
+                             extensions::UNINSTALL_REASON_FOR_TESTING,
+                             extensions::UNINSTALL_SOURCE_FOR_TESTING);
+    // Wait for the icon to load and dialog to display.
+    base::RunLoop().RunUntilIdle();
+
+    // Dialog should be anchored to the container if the container is visible
+    // and the extension has an action view.
+    views::Widget* const bubble_widget =
+        container->GetAnchoredWidgetForExtensionForTesting(extensionA->id());
+    EXPECT_TRUE(bubble_widget);
+
+    CloseUninstallDialog(bubble_widget);
+    EXPECT_FALSE(
+        container->GetAnchoredWidgetForExtensionForTesting(extensionA->id()));
+  }
+
+  // Disable the extension so it doesn't have an action view, but the container
+  // is still visible.
+  extension_service->DisableExtension(
+      extensionA->id(), extensions::disable_reason::DISABLE_USER_ACTION);
+  ASSERT_TRUE(container->GetVisible());
+  ASSERT_FALSE(container->GetViewForId(extensionA->id()));
+
+  {
+    base::RunLoop run_loop;
+    TestExtensionUninstallDialogDelegate delegate(run_loop.QuitClosure());
+    std::unique_ptr<extensions::ExtensionUninstallDialog> dialog(
+        extensions::ExtensionUninstallDialog::Create(
+            browser()->profile(), browser()->window()->GetNativeWindow(),
+            &delegate));
+
+    dialog->ConfirmUninstall(extensionA.get(),
+                             extensions::UNINSTALL_REASON_FOR_TESTING,
+                             extensions::UNINSTALL_SOURCE_FOR_TESTING);
+    base::RunLoop().RunUntilIdle();
+
+    // Dialog should be anchored to the container if the container is visible
+    // and the extension does not have an action view.
+    views::Widget* const bubble_widget =
+        container->GetAnchoredWidgetForExtensionForTesting(extensionA->id());
+    EXPECT_TRUE(bubble_widget);
+
+    CloseUninstallDialog(bubble_widget);
+    EXPECT_FALSE(
+        container->GetAnchoredWidgetForExtensionForTesting(extensionA->id()));
+  }
+
+  // Disable the second extension to have all extensions disable and the
+  // container hidden.
+  extension_service->DisableExtension(
+      extensionB->id(), extensions::disable_reason::DISABLE_USER_ACTION);
+  views::test::WaitForAnimatingLayoutManager(container);
+  ASSERT_FALSE(container->GetVisible());
+  ASSERT_FALSE(container->GetViewForId(extensionB->id()));
+
+  {
+    base::RunLoop run_loop;
+    TestExtensionUninstallDialogDelegate delegate(run_loop.QuitClosure());
+    std::unique_ptr<extensions::ExtensionUninstallDialog> dialog(
+        extensions::ExtensionUninstallDialog::Create(
+            browser()->profile(), browser()->window()->GetNativeWindow(),
+            &delegate));
+
+    dialog->ConfirmUninstall(extensionA.get(),
+                             extensions::UNINSTALL_REASON_FOR_TESTING,
+                             extensions::UNINSTALL_SOURCE_FOR_TESTING);
+    base::RunLoop().RunUntilIdle();
+
+    // Dialog should be modal if the container is not visible, which means it is
+    // not anchored to the container.
+    views::Widget* const bubble_widget =
+        container->GetAnchoredWidgetForExtensionForTesting(extensionA->id());
+    EXPECT_FALSE(bubble_widget);
+  }
+}
+
 class ExtensionUninstallDialogViewInteractiveBrowserTest
     : public DialogBrowserTest {
  public:
diff --git a/chrome/browser/ui/views/extensions/extensions_dialogs_utils.cc b/chrome/browser/ui/views/extensions/extensions_dialogs_utils.cc
index 1bb95b50..16dafff 100644
--- a/chrome/browser/ui/views/extensions/extensions_dialogs_utils.cc
+++ b/chrome/browser/ui/views/extensions/extensions_dialogs_utils.cc
@@ -96,10 +96,11 @@
                 const extensions::ExtensionId& extension_id,
                 std::unique_ptr<ui::DialogModel> dialog_model) {
   ExtensionsToolbarContainer* container = GetExtensionsToolbarContainer(parent);
-  if (container)
+  if (container && container->GetVisible()) {
     ShowDialog(container, extension_id, std::move(dialog_model));
-  else
+  } else {
     constrained_window::ShowBrowserModal(std::move(dialog_model), parent);
+  }
 }
 
 void ShowDialog(ExtensionsToolbarContainer* container,
diff --git a/chrome/browser/ui/views/page_info/page_info_about_this_site_content_view.cc b/chrome/browser/ui/views/page_info/page_info_about_this_site_content_view.cc
index 5d9685e..67590f0 100644
--- a/chrome/browser/ui/views/page_info/page_info_about_this_site_content_view.cc
+++ b/chrome/browser/ui/views/page_info/page_info_about_this_site_content_view.cc
@@ -41,10 +41,6 @@
   info_container->AddChildView(CreateDescriptionLabel(info_));
   info_container->AddChildView(CreateSourceLabel(info_));
 
-  if (base::FeatureList::IsEnabled(page_info::kPageInfoAboutThisSiteMoreInfo) &&
-      info_.has_more_about()) {
-    more_about_button_ = AddChildView(CreateMoreAboutButton(info_));
-  }
   presenter_->InitializeUiState(this, base::DoNothing());
 }
 
@@ -84,20 +80,6 @@
   return source_label;
 }
 
-std::unique_ptr<PageInfoHoverButton>
-PageInfoAboutThisSiteContentView::CreateMoreAboutButton(
-    const page_info::proto::SiteInfo& info) {
-  return std::make_unique<PageInfoHoverButton>(
-      base::BindRepeating(
-          &PageInfoAboutThisSiteContentView::MoreAboutButtonClicked,
-          base::Unretained(this)),
-      PageInfoViewFactory::GetAboutThisSiteIcon(),
-      IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE, std::u16string(),
-      PageInfoViewFactory::VIEW_ID_PAGE_INFO_MORE_ABOUT_THIS_PAGE_BUTTON,
-      l10n_util::GetStringUTF16(IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE_TOOLTIP),
-      std::u16string(), PageInfoViewFactory::GetLaunchIcon());
-}
-
 void PageInfoAboutThisSiteContentView::SourceLinkClicked(
     const ui::Event& event) {
   presenter_->RecordPageInfoAction(
diff --git a/chrome/browser/ui/views/page_info/page_info_about_this_site_content_view.h b/chrome/browser/ui/views/page_info/page_info_about_this_site_content_view.h
index e81cb09..1aa6fbd 100644
--- a/chrome/browser/ui/views/page_info/page_info_about_this_site_content_view.h
+++ b/chrome/browser/ui/views/page_info/page_info_about_this_site_content_view.h
@@ -12,7 +12,6 @@
 
 class ChromePageInfoUiDelegate;
 class PageInfo;
-class PageInfoHoverButton;
 
 // The view that is used as a content view of the "About this site" subpage in
 // page info. It contains short description about the website with the source
@@ -29,12 +28,9 @@
       const page_info::proto::SiteInfo& info);
   [[nodiscard]] std::unique_ptr<views::View> CreateSourceLabel(
       const page_info::proto::SiteInfo& info);
-  [[nodiscard]] std::unique_ptr<PageInfoHoverButton> CreateMoreAboutButton(
-      const page_info::proto::SiteInfo& info);
   void SourceLinkClicked(const ui::Event& event);
   void MoreAboutButtonClicked(const ui::Event& event);
 
-  raw_ptr<PageInfoHoverButton> more_about_button_;
   raw_ptr<PageInfo> presenter_;
   raw_ptr<ChromePageInfoUiDelegate> ui_delegate_;
   page_info::proto::SiteInfo info_;
diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc
index c267855..671179a 100644
--- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc
+++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc
@@ -145,20 +145,10 @@
 
 std::unique_ptr<views::View> PageInfoViewFactory::CreateAboutThisSitePageView(
     const page_info::proto::SiteInfo& info) {
-  std::u16string title =
-      l10n_util::GetStringUTF16(IDS_PAGE_INFO_ABOUT_THIS_SITE_HEADER);
-  std::u16string subtitle;
-  if (base::FeatureList::IsEnabled(page_info::kPageInfoAboutThisSiteMoreInfo)) {
-    if (info.description().has_name())
-      title = base::UTF8ToUTF16(info.description().name());
-    std::u16string subtitle;
-    if (info.description().has_subtitle())
-      subtitle = base::UTF8ToUTF16(info.description().subtitle());
-  } else {
-    subtitle = presenter_->GetSimpleSiteName();
-  }
   return std::make_unique<PageInfoSubpageView>(
-      CreateSubpageHeader(title, subtitle),
+      CreateSubpageHeader(
+          l10n_util::GetStringUTF16(IDS_PAGE_INFO_ABOUT_THIS_SITE_HEADER),
+          presenter_->GetSimpleSiteName()),
       std::make_unique<PageInfoAboutThisSiteContentView>(presenter_,
                                                          ui_delegate_, info));
 }
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc b/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc
index e2484c7..fccd474 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc
+++ b/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc
@@ -281,11 +281,14 @@
   void ShowManagePasswordsBubble(bool user_action) override {}
   void HideManagePasswordsBubble() override {}
   void ShowDeprecatedAppsDialog(
+      const extensions::ExtensionId& optional_launched_extension_id,
       const std::set<extensions::ExtensionId>& deprecated_app_ids,
-      content::WebContents* web_contents) override {}
+      content::WebContents* web_contents,
+      base::OnceClosure launch_anyways) override {}
   void ShowForceInstalledDeprecatedAppsDialog(
       const extensions::ExtensionId& app_id,
-      content::WebContents* web_contents) override {}
+      content::WebContents* web_contents,
+      base::OnceClosure launch_anyways) override {}
 
  private:
   raw_ptr<content::WebContents> contents_;
diff --git a/chrome/browser/ui/views/tab_dialogs_views.cc b/chrome/browser/ui/views/tab_dialogs_views.cc
index 26a47d3..6f520cc 100644
--- a/chrome/browser/ui/views/tab_dialogs_views.cc
+++ b/chrome/browser/ui/views/tab_dialogs_views.cc
@@ -80,19 +80,23 @@
 }
 
 void TabDialogsViews::ShowDeprecatedAppsDialog(
+    const extensions::ExtensionId& optional_launched_extension_id,
     const std::set<extensions::ExtensionId>& deprecated_app_ids,
-    content::WebContents* web_contents) {
+    content::WebContents* web_contents,
+    base::OnceClosure launch_anyways) {
 #if defined(TOOLKIT_VIEWS) && !BUILDFLAG(IS_CHROMEOS)
-  DeprecatedAppsDialogView::CreateAndShowDialog(deprecated_app_ids,
-                                                web_contents);
+  DeprecatedAppsDialogView::CreateAndShowDialog(
+      optional_launched_extension_id, deprecated_app_ids, web_contents,
+      std::move(launch_anyways));
 #endif
 }
 
 void TabDialogsViews::ShowForceInstalledDeprecatedAppsDialog(
     const extensions::ExtensionId& app_id,
-    content::WebContents* web_contents) {
+    content::WebContents* web_contents,
+    base::OnceClosure launch_anyways) {
 #if defined(TOOLKIT_VIEWS) && !BUILDFLAG(IS_CHROMEOS)
-  ForceInstalledDeprecatedAppsDialogView::CreateAndShowDialog(app_id,
-                                                              web_contents);
+  ForceInstalledDeprecatedAppsDialogView::CreateAndShowDialog(
+      app_id, web_contents, std::move(launch_anyways));
 #endif
 }
diff --git a/chrome/browser/ui/views/tab_dialogs_views.h b/chrome/browser/ui/views/tab_dialogs_views.h
index 3dc1d0d..de2c205 100644
--- a/chrome/browser/ui/views/tab_dialogs_views.h
+++ b/chrome/browser/ui/views/tab_dialogs_views.h
@@ -30,11 +30,14 @@
   void ShowManagePasswordsBubble(bool user_action) override;
   void HideManagePasswordsBubble() override;
   void ShowDeprecatedAppsDialog(
+      const extensions::ExtensionId& optional_launched_extension_id,
       const std::set<extensions::ExtensionId>& deprecated_app_ids,
-      content::WebContents* web_contents) override;
+      content::WebContents* web_contents,
+      base::OnceClosure launch_anyways) override;
   void ShowForceInstalledDeprecatedAppsDialog(
       const extensions::ExtensionId& app_id,
-      content::WebContents* web_contents) override;
+      content::WebContents* web_contents,
+      base::OnceClosure launch_anyways) override;
 
  private:
   raw_ptr<content::WebContents> web_contents_;  // Weak. Owns this.
diff --git a/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view.cc b/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view.cc
index cafc58b..d0866a9 100644
--- a/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view.cc
+++ b/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view.cc
@@ -111,10 +111,13 @@
 
 // static
 DeprecatedAppsDialogView* DeprecatedAppsDialogView::CreateAndShowDialog(
+    const extensions::ExtensionId& optional_launched_extension_id,
     const std::set<extensions::ExtensionId>& deprecated_app_ids,
-    content::WebContents* web_contents) {
-  DeprecatedAppsDialogView* view =
-      new DeprecatedAppsDialogView(deprecated_app_ids, web_contents);
+    content::WebContents* web_contents,
+    base::OnceClosure launch_anyways) {
+  DeprecatedAppsDialogView* view = new DeprecatedAppsDialogView(
+      optional_launched_extension_id, deprecated_app_ids, web_contents,
+      std::move(launch_anyways));
   view->InitDialog();
   constrained_window::ShowWebModalDialogViews(view, web_contents);
   return view;
@@ -125,15 +128,42 @@
 }
 
 std::u16string DeprecatedAppsDialogView::GetWindowTitle() const {
-  return l10n_util::GetPluralStringFUTF16(
-      IDS_DEPRECATED_APPS_RENDERER_TITLE,
+  if (launched_extension_name_) {
+    return l10n_util::GetStringFUTF16(
+        IDS_DEPRECATED_APPS_RENDERER_TITLE_WITH_APP_NAME,
+        launched_extension_name_.value());
+  }
+  if (single_app_name_) {
+    return l10n_util::GetStringFUTF16(
+        IDS_DEPRECATED_APPS_RENDERER_TITLE_WITH_APP_NAME,
+        single_app_name_.value());
+  }
+  return l10n_util::GetStringFUTF16Int(
+      IDS_DEPRECATED_APPS_RENDERER_TITLE_PLURAL,
       deprecated_apps_table_model_->RowCount());
 }
 
 DeprecatedAppsDialogView::DeprecatedAppsDialogView(
+    const extensions::ExtensionId& optional_launched_extension_id,
     const std::set<extensions::ExtensionId>& deprecated_app_ids,
-    content::WebContents* web_contents)
-    : deprecated_app_ids_(deprecated_app_ids), web_contents_(web_contents) {
+    content::WebContents* web_contents,
+    base::OnceClosure launch_anyways)
+    : deprecated_app_ids_(deprecated_app_ids),
+      launch_anyways_(std::move(launch_anyways)),
+      web_contents_(web_contents) {
+  if (!optional_launched_extension_id.empty()) {
+    const extensions::Extension* extension =
+        extensions::ExtensionRegistry::Get(web_contents_->GetBrowserContext())
+            ->GetInstalledExtension(optional_launched_extension_id);
+    launched_extension_name_ = base::UTF8ToUTF16(extension->name());
+  }
+  if (deprecated_app_ids_.size() == 1) {
+    const extensions::Extension* extension =
+        extensions::ExtensionRegistry::Get(web_contents_->GetBrowserContext())
+            ->GetInstalledExtension(*deprecated_app_ids_.begin());
+    DCHECK(extension);
+    single_app_name_ = base::UTF8ToUTF16(extension->name());
+  }
   deprecated_apps_table_model_ = std::make_unique<DeprecatedAppsTableModel>(
       deprecated_app_ids, web_contents,
       base::BindRepeating(&DeprecatedAppsDialogView::OnIconsLoadedForTable,
@@ -153,24 +183,29 @@
           views::DISTANCE_UNRELATED_CONTROL_VERTICAL)));
   set_fixed_width(views::LayoutProvider::Get()->GetDistanceMetric(
       views::DISTANCE_MODAL_DIALOG_PREFERRED_WIDTH));
-
   // Set up buttons.
   SetButtonLabel(ui::DIALOG_BUTTON_OK,
                  l10n_util::GetPluralStringFUTF16(
                      IDS_DEPRECATED_APPS_OK_LABEL,
                      deprecated_apps_table_model_->RowCount()));
-  SetButtonLabel(ui::DIALOG_BUTTON_CANCEL,
-                 l10n_util::GetStringUTF16(IDS_DEPRECATED_APPS_CANCEL_LABEL));
-  SetDefaultButton(ui::DIALOG_BUTTON_NONE);
-  SetCancelCallback(base::BindOnce(&DeprecatedAppsDialogView::CloseDialog,
+  SetAcceptCallback(base::BindOnce(&DeprecatedAppsDialogView::OnAccept,
                                    base::Unretained(this)));
-  SetAcceptCallback(base::BindOnce(
-      &DeprecatedAppsDialogView::UninstallExtensions, base::Unretained(this)));
 
-  info_label_ = AddChildView(
-      std::make_unique<views::Label>(l10n_util::GetPluralStringFUTF16(
-          IDS_DEPRECATED_APPS_MONITOR_RENDERER,
-          deprecated_apps_table_model_->RowCount())));
+  if (launched_extension_name_) {
+    SetButtonLabel(
+        ui::DIALOG_BUTTON_CANCEL,
+        l10n_util::GetStringUTF16(IDS_DEPRECATED_APPS_LAUNCH_ANYWAY_LABEL));
+  } else {
+    SetButtonLabel(ui::DIALOG_BUTTON_CANCEL,
+                   l10n_util::GetStringUTF16(IDS_DEPRECATED_APPS_CANCEL_LABEL));
+  }
+  SetCancelCallback(base::BindOnce(&DeprecatedAppsDialogView::OnCancel,
+                                   base::Unretained(this)));
+
+  SetDefaultButton(ui::DIALOG_BUTTON_OK);
+
+  info_label_ = AddChildView(std::make_unique<views::Label>(
+      l10n_util::GetStringUTF16(IDS_DEPRECATED_APPS_MONITOR_RENDERER)));
   info_label_->SetMultiLine(true);
   info_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
 
@@ -186,8 +221,8 @@
             ui::PAGE_TRANSITION_LINK, /*is_renderer_initiated=*/false));
       },
       web_contents_));
-  learn_more->SetAccessibleName(l10n_util::GetStringUTF16(
-      IDS_FORCE_INSTALLED_DEPRECATED_APPS_LEARN_MORE_AX_LABEL));
+  learn_more->SetAccessibleName(
+      l10n_util::GetStringUTF16(IDS_DEPRECATED_APPS_LEARN_MORE_AX_LABEL));
   learn_more->SetHorizontalAlignment(gfx::ALIGN_LEFT);
 
   // Set up the table view.
@@ -218,7 +253,7 @@
   deprecated_apps_table_view_->SchedulePaint();
 }
 
-void DeprecatedAppsDialogView::UninstallExtensions() {
+void DeprecatedAppsDialogView::OnAccept() {
   for (extensions::ExtensionId id : deprecated_app_ids_) {
     extensions::ExtensionSystem::Get(web_contents_->GetBrowserContext())
         ->extension_service()
@@ -228,5 +263,10 @@
   CloseDialog();
 }
 
+void DeprecatedAppsDialogView::OnCancel() {
+  std::move(launch_anyways_).Run();
+  CloseDialog();
+}
+
 BEGIN_METADATA(DeprecatedAppsDialogView, views::DialogDelegateView)
 END_METADATA
diff --git a/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view.h b/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view.h
index 9cc73c9..4fce17c 100644
--- a/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view.h
+++ b/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view.h
@@ -7,11 +7,13 @@
 
 #include <memory>
 #include <set>
+#include <string>
 #include <vector>
 
 #include "base/callback_forward.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/weak_ptr.h"
+#include "chrome/browser/ui/tab_dialogs.h"
 #include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_system.h"
 #include "extensions/common/extension_id.h"
@@ -40,10 +42,20 @@
   DeprecatedAppsDialogView& operator=(const DeprecatedAppsDialogView&) = delete;
   ~DeprecatedAppsDialogView() override;
 
-  // Create the dialog metadata and show it.
+  // Create the dialog metadata and show it. Some behavior specializations:
+  // * If the `optional_launched_extension_id` is passed, then the dialog will
+  //   show the name of that chrome app in the title.
+  // * If `optional_launched_extension_id` is empty and `deprecated_app_ids`
+  //   only has one entry, then the dialog will display the name of the one
+  //   deprecated chrome app.
+  // * If `optional_launched_extension_id` is empty and `deprecated_app_ids` has
+  //   more than one entry, then the title will just contain the number of
+  //   deprecated chrome apps.
   static DeprecatedAppsDialogView* CreateAndShowDialog(
+      const extensions::ExtensionId& optional_launched_extension_id,
       const std::set<extensions::ExtensionId>& deprecated_app_ids,
-      content::WebContents* web_contents);
+      content::WebContents* web_contents,
+      base::OnceClosure launch_anyways);
 
   base::WeakPtr<DeprecatedAppsDialogView> AsWeakPtr();
 
@@ -55,8 +67,10 @@
  private:
   class DeprecatedAppsTableModel;
   DeprecatedAppsDialogView(
+      const extensions::ExtensionId& optional_launched_extension_id,
       const std::set<extensions::ExtensionId>& deprecated_app_ids,
-      content::WebContents* web_contents);
+      content::WebContents* web_contents,
+      base::OnceClosure launch_anyways);
 
   // Initialize the dialog when the object is instantiated.
   void InitDialog();
@@ -69,7 +83,8 @@
 
   // Callback that runs when accept button is clicked to
   // uninstall all extensions.
-  void UninstallExtensions();
+  void OnAccept();
+  void OnCancel();
 
   // Controls the table view within the dialog box.
   raw_ptr<views::TableView> deprecated_apps_table_view_;
@@ -79,7 +94,10 @@
 
   raw_ptr<views::Label> info_label_;
 
+  absl::optional<std::u16string> launched_extension_name_;
   std::set<extensions::ExtensionId> deprecated_app_ids_;
+  absl::optional<std::u16string> single_app_name_;
+  base::OnceClosure launch_anyways_;
 
   raw_ptr<content::WebContents> web_contents_;
 
diff --git a/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view_browsertest.cc b/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view_browsertest.cc
index 6ea0dff..6cefe87c 100644
--- a/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view_browsertest.cc
+++ b/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view_browsertest.cc
@@ -6,9 +6,11 @@
 
 #include <set>
 
+#include "base/callback_helpers.h"
 #include "base/feature_list.h"
 #include "base/run_loop.h"
 #include "base/test/bind.h"
+#include "base/test/mock_callback.h"
 #include "chrome/browser/extensions/extension_browsertest.h"
 #include "chrome/browser/platform_util.h"
 #include "chrome/browser/ui/browser.h"
@@ -150,7 +152,8 @@
 
   InstallExtensionForTesting(mock_app_manifest1, mock_url1);
   test_dialog_view_ = DeprecatedAppsDialogView::CreateAndShowDialog(
-                          deprecated_app_ids_for_testing_, web_contents)
+                          std::string(), deprecated_app_ids_for_testing_,
+                          web_contents, base::DoNothing())
                           ->AsWeakPtr();
 
   EXPECT_TRUE(IsDialogShown());
@@ -165,7 +168,8 @@
   InstallExtensionForTesting(mock_app_manifest1, mock_url1);
   InstallExtensionForTesting(mock_app_manifest2, mock_url2);
   test_dialog_view_ = DeprecatedAppsDialogView::CreateAndShowDialog(
-                          deprecated_app_ids_for_testing_, web_contents)
+                          std::string(), deprecated_app_ids_for_testing_,
+                          web_contents, base::DoNothing())
                           ->AsWeakPtr();
 
   EXPECT_TRUE(IsDialogShown());
@@ -177,11 +181,14 @@
                        AcceptDialogAndVerify) {
   auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents();
 
+  base::MockCallback<base::OnceClosure> mock_callback;
   extensions::ExtensionId test_id(
       InstallExtensionForTesting(mock_app_manifest1, mock_url1));
   test_dialog_view_ = DeprecatedAppsDialogView::CreateAndShowDialog(
-                          deprecated_app_ids_for_testing_, web_contents)
+                          std::string(), deprecated_app_ids_for_testing_,
+                          web_contents, mock_callback.Get())
                           ->AsWeakPtr();
+  EXPECT_CALL(mock_callback, Run()).Times(0);
 
   // Verify dialog is shown.
   ASSERT_TRUE(IsDialogShown());
@@ -203,9 +210,11 @@
                        CloseDialogAndVerify) {
   auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents();
 
+  base::MockCallback<base::OnceClosure> mock_callback;
   InstallExtensionForTesting(mock_app_manifest1, mock_url1);
   test_dialog_view_ = DeprecatedAppsDialogView::CreateAndShowDialog(
-                          deprecated_app_ids_for_testing_, web_contents)
+                          std::string(), deprecated_app_ids_for_testing_,
+                          web_contents, mock_callback.Get())
                           ->AsWeakPtr();
 
   // Verify dialog is shown.
@@ -213,6 +222,8 @@
   EXPECT_EQ(static_cast<int>(deprecated_app_ids_for_testing_.size()),
             GetRowCountForDialog());
 
+  EXPECT_CALL(mock_callback, Run()).Times(1);
+
   // Verify dialog is closed on cancellation
   ASSERT_TRUE(test_dialog_view_->Cancel());
   WaitForDialogToBeDestroyed();
diff --git a/chrome/browser/ui/views/web_apps/force_installed_deprecated_apps_dialog_view.cc b/chrome/browser/ui/views/web_apps/force_installed_deprecated_apps_dialog_view.cc
index 49868a3..d0b0236 100644
--- a/chrome/browser/ui/views/web_apps/force_installed_deprecated_apps_dialog_view.cc
+++ b/chrome/browser/ui/views/web_apps/force_installed_deprecated_apps_dialog_view.cc
@@ -13,6 +13,7 @@
 #include "extensions/browser/extension_registry.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/metadata/metadata_impl_macros.h"
+#include "ui/base/ui_base_types.h"
 #include "ui/base/window_open_disposition.h"
 #include "ui/views/controls/link.h"
 #include "ui/views/controls/styled_label.h"
@@ -23,9 +24,10 @@
 // static
 void ForceInstalledDeprecatedAppsDialogView::CreateAndShowDialog(
     extensions::ExtensionId app_id,
-    content::WebContents* web_contents) {
+    content::WebContents* web_contents,
+    base::OnceClosure launch_anyways) {
   auto delegate = std::make_unique<views::DialogDelegate>();
-  delegate->SetButtons(ui::DIALOG_BUTTON_OK);
+  //   delegate->SetButtons(ui::DIALOG_BUTTON_OK);
   delegate->SetModalType(ui::MODAL_TYPE_CHILD);
   delegate->SetShowCloseButton(false);
   delegate->SetOwnedByWidget(true);
@@ -34,18 +36,16 @@
       extensions::ExtensionRegistry::Get(browser_context)
           ->GetInstalledExtension(app_id);
   std::u16string app_name = base::UTF8ToUTF16(extension->name());
-  bool is_preinstalled_app = extensions::IsPreinstalledAppId(app_id);
-  delegate->SetTitle(
-      is_preinstalled_app
-          ? l10n_util::GetStringFUTF16(
-                IDS_FORCE_INSTALLED_PREINSTALLED_DEPRECATED_APPS_TITLE,
-                app_name)
-          : l10n_util::GetPluralStringFUTF16(IDS_DEPRECATED_APPS_RENDERER_TITLE,
-                                             1));
+  delegate->SetTitle(l10n_util::GetStringFUTF16(
+      IDS_DEPRECATED_APPS_RENDERER_TITLE_WITH_APP_NAME, app_name));
+  delegate->SetButtonLabel(
+      ui::DIALOG_BUTTON_OK,
+      l10n_util::GetStringUTF16(IDS_DEPRECATED_APPS_LAUNCH_ANYWAY_LABEL));
+  delegate->SetAcceptCallback(std::move(launch_anyways));
+
   delegate->SetContentsView(
       base::WrapUnique<ForceInstalledDeprecatedAppsDialogView>(
-          new ForceInstalledDeprecatedAppsDialogView(
-              app_name, is_preinstalled_app, web_contents)));
+          new ForceInstalledDeprecatedAppsDialogView(app_name, web_contents)));
   delegate->set_fixed_width(views::LayoutProvider::Get()->GetDistanceMetric(
       views::DISTANCE_MODAL_DIALOG_PREFERRED_WIDTH));
   delegate->set_margins(
@@ -56,7 +56,6 @@
 
 ForceInstalledDeprecatedAppsDialogView::ForceInstalledDeprecatedAppsDialogView(
     std::u16string app_name,
-    bool is_preinstalled_app,
     content::WebContents* web_contents)
     : app_name_(app_name), web_contents_(web_contents) {
   SetLayoutManager(std::make_unique<views::BoxLayout>(
@@ -64,11 +63,7 @@
       ChromeLayoutProvider::Get()->GetDistanceMetric(
           views::DISTANCE_RELATED_CONTROL_VERTICAL)));
   auto* info_label = AddChildView(std::make_unique<views::Label>(
-      is_preinstalled_app
-          ? l10n_util::GetStringUTF16(
-                IDS_FORCE_INSTALLED_PREINSTALLED_DEPRECATED_APPS_CONTENT)
-          : l10n_util::GetStringFUTF16(
-                IDS_FORCE_INSTALLED_DEPRECATED_APPS_CONTENT, app_name_)));
+      l10n_util::GetStringUTF16(IDS_FORCE_INSTALLED_DEPRECATED_APPS_CONTENT)));
   info_label->SetMultiLine(true);
   info_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
 
@@ -84,8 +79,8 @@
             ui::PAGE_TRANSITION_LINK, /*is_renderer_initiated=*/false));
       },
       web_contents_));
-  learn_more->SetAccessibleName(l10n_util::GetStringUTF16(
-      IDS_FORCE_INSTALLED_DEPRECATED_APPS_LEARN_MORE_AX_LABEL));
+  learn_more->SetAccessibleName(
+      l10n_util::GetStringUTF16(IDS_DEPRECATED_APPS_LEARN_MORE_AX_LABEL));
   learn_more->SetHorizontalAlignment(gfx::ALIGN_LEFT);
 }
 
diff --git a/chrome/browser/ui/views/web_apps/force_installed_deprecated_apps_dialog_view.h b/chrome/browser/ui/views/web_apps/force_installed_deprecated_apps_dialog_view.h
index 2c32b644..21feadf8 100644
--- a/chrome/browser/ui/views/web_apps/force_installed_deprecated_apps_dialog_view.h
+++ b/chrome/browser/ui/views/web_apps/force_installed_deprecated_apps_dialog_view.h
@@ -21,11 +21,11 @@
 
   // Create the dialog metadata and show it.
   static void CreateAndShowDialog(extensions::ExtensionId app_id,
-                                  content::WebContents* web_contents);
+                                  content::WebContents* web_contents,
+                                  base::OnceClosure launch_anyways);
 
  private:
   ForceInstalledDeprecatedAppsDialogView(std::u16string app_name,
-                                         bool is_preinstalled_app,
                                          content::WebContents* web_contents);
 
   std::u16string app_name_;
diff --git a/chrome/browser/ui/web_applications/sub_apps_service_impl.cc b/chrome/browser/ui/web_applications/sub_apps_service_impl.cc
index 2e1ee7c7..d65c6fb1 100644
--- a/chrome/browser/ui/web_applications/sub_apps_service_impl.cc
+++ b/chrome/browser/ui/web_applications/sub_apps_service_impl.cc
@@ -10,7 +10,9 @@
 #include "base/bind.h"
 #include "base/check.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/web_applications/commands/sub_app_install_command.h"
 #include "chrome/browser/web_applications/web_app.h"
+#include "chrome/browser/web_applications/web_app_command_manager.h"
 #include "chrome/browser/web_applications/web_app_helpers.h"
 #include "chrome/browser/web_applications/web_app_install_finalizer.h"
 #include "chrome/browser/web_applications/web_app_install_manager.h"
@@ -31,37 +33,51 @@
 
 namespace {
 
+std::vector<blink::mojom::SubAppsServiceAddResultPtr> ResultsToMojo(
+    std::vector<
+        std::pair<UnhashedAppId, blink::mojom::SubAppsServiceAddResultCode>>
+        sub_apps_idl) {
+  std::vector<blink::mojom::SubAppsServiceAddResultPtr> subapps;
+  for (const auto& [app_id, install_result_code] : sub_apps_idl) {
+    blink::mojom::SubAppsServiceAddResultPtr mojom_pair =
+        blink::mojom::SubAppsServiceAddResult::New();
+    mojom_pair->unhashed_app_id = app_id;
+    mojom_pair->result_code = install_result_code;
+    subapps.push_back(std::move(mojom_pair));
+  }
+  return subapps;
+}
+
+std::vector<std::pair<UnhashedAppId, GURL>> InstallParamsFromMojo(
+    std::vector<blink::mojom::SubAppsServiceAddInfoPtr> sub_apps_mojo) {
+  std::vector<std::pair<UnhashedAppId, GURL>> subapps;
+  for (const auto& pair : sub_apps_mojo) {
+    subapps.emplace_back(UnhashedAppId(pair->unhashed_app_id),
+                         pair->install_url);
+  }
+  return subapps;
+}
+
 WebAppProvider* GetWebAppProvider(content::RenderFrameHost* render_frame_host) {
   auto* const initiator_web_contents =
       content::WebContents::FromRenderFrameHost(render_frame_host);
   return web_app::WebAppProvider::GetForWebContents(initiator_web_contents);
 }
 
-absl::optional<AppId> GetAppId(content::RenderFrameHost* render_frame_host) {
+absl::optional<AppId> GetAppIdForLastCommittedURL(
+    content::RenderFrameHost* render_frame_host) {
   GURL parent_url = render_frame_host->GetLastCommittedURL();
-  WebAppRegistrar& web_app_registrar =
-      GetWebAppProvider(render_frame_host)->registrar();
+  WebAppProvider* provider = GetWebAppProvider(render_frame_host);
+  DCHECK(provider);
+  WebAppRegistrar& web_app_registrar = provider->registrar();
   return web_app_registrar.FindAppWithUrlInScope(parent_url);
 }
 
-// Resolve the install_path in the context of the calling app to get the full
-// URL. This looks a bit convoluted to guarantee that the resulting URL
-// *always* has the same *origin* as the calling app (normally the renderer
-// should only send the path, but a compromised renderer might send a full URL
-// instead and we guard against that here).
-GURL ResolvePathWithOrigin(const std::string& path, const GURL& origin) {
-  return origin.Resolve(origin.Resolve(path).PathForRequest());
-}
-
-void OnAdd(SubAppsServiceImpl::AddCallback result_callback,
-           const AppId& app_id,
-           webapps::InstallResultCode code) {
-  if (code == webapps::InstallResultCode::kSuccessAlreadyInstalled ||
-      code == webapps::InstallResultCode::kSuccessNewInstall) {
-    std::move(result_callback).Run(SubAppsServiceResult::kSuccess);
-  } else {
-    std::move(result_callback).Run(SubAppsServiceResult::kFailure);
-  }
+void OnAdd(
+    SubAppsServiceImpl::AddCallback result_callback,
+    std::vector<std::pair<UnhashedAppId,
+                          blink::mojom::SubAppsServiceAddResultCode>> results) {
+  std::move(result_callback).Run(ResultsToMojo(std::move(results)));
 }
 
 void OnRemove(SubAppsServiceImpl::RemoveCallback result_callback,
@@ -101,39 +117,91 @@
   new SubAppsServiceImpl(render_frame_host, std::move(receiver));
 }
 
-void SubAppsServiceImpl::Add(const std::string& install_path,
-                             AddCallback result_callback) {
+void SubAppsServiceImpl::Add(
+    std::vector<blink::mojom::SubAppsServiceAddInfoPtr> sub_apps,
+    AddCallback result_callback) {
+  WebAppProvider* provider = GetWebAppProvider(render_frame_host());
+  DCHECK(provider);
+  if (!provider->on_registry_ready().is_signaled()) {
+    provider->on_registry_ready().Post(
+        FROM_HERE,
+        base::BindOnce(&SubAppsServiceImpl::Add, weak_ptr_factory_.GetWeakPtr(),
+                       std::move(sub_apps), std::move(result_callback)));
+    return;
+  }
+
+  absl::optional<AppId> parent_app_id =
+      GetAppIdForLastCommittedURL(render_frame_host());
   // Verify that the calling app is installed itself. This check is done here
   // and not in `CreateIfAllowed` because of a potential race between doing the
   // check there and then running the current function, and the parent app being
   // installed/uninstalled.
-  absl::optional<AppId> parent_app_id = GetAppId(render_frame_host());
-  if (!parent_app_id.has_value()) {
-    return std::move(result_callback).Run(SubAppsServiceResult::kFailure);
+  if (!parent_app_id) {
+    std::move(result_callback).Run(/*mojom_results=*/{});
+    return;
   }
 
-  // Resolve the install_path in the origin context of the calling app.
-  GURL install_url = ResolvePathWithOrigin(install_path, origin().GetURL());
+  const GURL& parent_app_url = render_frame_host()->GetLastCommittedURL();
 
-  GetWebAppProvider(render_frame_host())
-      ->install_manager()
-      .InstallSubApp(*parent_app_id, install_url,
-                     base::BindOnce(&OnAdd, std::move(result_callback)));
+  // Check that each sub app's install url has the same origin as the parent
+  // app and that the unhashed app id is a valid URL.
+  for (const blink::mojom::SubAppsServiceAddInfoPtr& sub_app : sub_apps) {
+    GURL sub_app_install_url(sub_app->install_url);
+    if (!url::IsSameOriginWith(sub_app_install_url, parent_app_url)) {
+      std::move(result_callback).Run(/*mojom_results=*/{});
+      ReportBadMessageAndDeleteThis(
+          "Unexpected request: Add calls only supported for sub apps on the "
+          "same origin as the calling app.");
+      return;
+    }
+
+    if (!GURL(sub_app->unhashed_app_id).is_valid()) {
+      std::move(result_callback).Run(/*mojom_results=*/{});
+      ReportBadMessageAndDeleteThis("App ids must be valid URLs.");
+      return;
+    }
+  }
+
+  std::vector<AppId> app_ids_vector = {*parent_app_id};
+  base::ranges::for_each(
+      sub_apps,
+      [&app_ids_vector](const blink::mojom::SubAppsServiceAddInfoPtr& sub_app) {
+        app_ids_vector.push_back(
+            GenerateAppIdFromUnhashed(sub_app->unhashed_app_id));
+      });
+  base::flat_set<AppId> app_ids =
+      base::flat_set<AppId>(std::move(app_ids_vector));
+
+  auto install_command = std::make_unique<SubAppInstallCommand>(
+      &provider->install_manager(), &provider->registrar(), *parent_app_id,
+      InstallParamsFromMojo(std::move(sub_apps)), std::move(app_ids),
+      base::BindOnce(&OnAdd, std::move(result_callback)));
+
+  provider->command_manager().ScheduleCommand(std::move(install_command));
 }
 
 void SubAppsServiceImpl::List(ListCallback result_callback) {
   // Verify that the calling app is installed itself (cf. `Add`).
-  absl::optional<AppId> parent_app_id = GetAppId(render_frame_host());
+  absl::optional<AppId> parent_app_id =
+      GetAppIdForLastCommittedURL(render_frame_host());
   if (!parent_app_id.has_value()) {
     return std::move(result_callback)
         .Run(SubAppsServiceListResult::New(SubAppsServiceResult::kFailure,
-                                           std::vector<std::string>()));
+                                           std::vector<UnhashedAppId>()));
+  }
+  WebAppProvider* provider = GetWebAppProvider(render_frame_host());
+  DCHECK(provider);
+  if (!provider->on_registry_ready().is_signaled()) {
+    provider->on_registry_ready().Post(
+        FROM_HERE, base::BindOnce(&SubAppsServiceImpl::List,
+                                  weak_ptr_factory_.GetWeakPtr(),
+                                  std::move(result_callback)));
+    return;
   }
 
-  WebAppRegistrar& registrar =
-      GetWebAppProvider(render_frame_host())->registrar();
+  WebAppRegistrar& registrar = provider->registrar();
 
-  std::vector<std::string> sub_app_ids;
+  std::vector<UnhashedAppId> sub_app_ids;
   for (const AppId& web_app_id : registrar.GetAllSubAppIds(*parent_app_id)) {
     const WebApp* web_app = registrar.GetAppById(web_app_id);
     sub_app_ids.push_back(
@@ -145,10 +213,21 @@
                                          std::move(sub_app_ids)));
 }
 
-void SubAppsServiceImpl::Remove(const std::string& unhashed_app_id,
+void SubAppsServiceImpl::Remove(const UnhashedAppId& unhashed_app_id,
                                 RemoveCallback result_callback) {
+  WebAppProvider* provider = GetWebAppProvider(render_frame_host());
+  DCHECK(provider);
+  if (!provider->on_registry_ready().is_signaled()) {
+    provider->on_registry_ready().Post(
+        FROM_HERE, base::BindOnce(&SubAppsServiceImpl::Remove,
+                                  weak_ptr_factory_.GetWeakPtr(),
+                                  unhashed_app_id, std::move(result_callback)));
+    return;
+  }
+
   // Verify that the calling app is installed itself (cf. `Add`).
-  absl::optional<AppId> calling_app_id = GetAppId(render_frame_host());
+  absl::optional<AppId> calling_app_id =
+      GetAppIdForLastCommittedURL(render_frame_host());
   if (!calling_app_id.has_value()) {
     return std::move(result_callback).Run(SubAppsServiceResult::kFailure);
   }
@@ -160,7 +239,6 @@
   }
 
   AppId sub_app_id = GenerateAppIdFromUnhashed(unhashed_app_id);
-  WebAppProvider* provider = GetWebAppProvider(render_frame_host());
   const WebApp* app = provider->registrar().GetAppById(sub_app_id);
 
   // Verify that the app we're trying to remove exists, that its parent_app is
diff --git a/chrome/browser/ui/web_applications/sub_apps_service_impl.h b/chrome/browser/ui/web_applications/sub_apps_service_impl.h
index 9789bbef..21543b17 100644
--- a/chrome/browser/ui/web_applications/sub_apps_service_impl.h
+++ b/chrome/browser/ui/web_applications/sub_apps_service_impl.h
@@ -5,6 +5,7 @@
 #ifndef CHROME_BROWSER_UI_WEB_APPLICATIONS_SUB_APPS_SERVICE_IMPL_H_
 #define CHROME_BROWSER_UI_WEB_APPLICATIONS_SUB_APPS_SERVICE_IMPL_H_
 
+#include "chrome/browser/web_applications/web_app_id.h"
 #include "content/public/browser/document_service.h"
 #include "third_party/blink/public/mojom/subapps/sub_apps_service.mojom.h"
 
@@ -28,16 +29,18 @@
       mojo::PendingReceiver<blink::mojom::SubAppsService> receiver);
 
   // blink::mojom::SubAppsService
-  void Add(const std::string& install_path,
+  void Add(std::vector<blink::mojom::SubAppsServiceAddInfoPtr> sub_apps,
            AddCallback result_callback) override;
+
   void List(ListCallback result_callback) override;
-  void Remove(const std::string& unhashed_app_id,
+  void Remove(const UnhashedAppId& unhashed_app_id,
               RemoveCallback result_callback) override;
 
  private:
   SubAppsServiceImpl(
       content::RenderFrameHost* render_frame_host,
       mojo::PendingReceiver<blink::mojom::SubAppsService> receiver);
+  base::WeakPtrFactory<SubAppsServiceImpl> weak_ptr_factory_{this};
 };
 
 }  // namespace web_app
diff --git a/chrome/browser/ui/web_applications/sub_apps_service_impl_browsertest.cc b/chrome/browser/ui/web_applications/sub_apps_service_impl_browsertest.cc
index ee3a605..4d9c0368 100644
--- a/chrome/browser/ui/web_applications/sub_apps_service_impl_browsertest.cc
+++ b/chrome/browser/ui/web_applications/sub_apps_service_impl_browsertest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include <string>
+#include <utility>
 #include <vector>
 
 #include "chrome/browser/ui/web_applications/sub_apps_service_impl.h"
@@ -13,17 +14,21 @@
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/web_applications/web_app_controller_browsertest.h"
+#include "chrome/browser/web_applications/commands/sub_app_install_command.h"
 #include "chrome/browser/web_applications/web_app.h"
+#include "chrome/browser/web_applications/web_app_command_manager.h"
 #include "chrome/browser/web_applications/web_app_helpers.h"
 #include "chrome/browser/web_applications/web_app_provider.h"
 #include "chrome/browser/web_applications/web_app_registrar.h"
 #include "chrome/browser/web_applications/web_app_ui_manager.h"
 #include "chrome/test/base/ui_test_utils.h"
+#include "components/webapps/browser/install_result_code.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/test/browser_test.h"
 #include "content/public/test/browser_test_utils.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "third_party/blink/public/common/features.h"
+#include "url/gurl.h"
 
 using blink::mojom::SubAppsServiceListResultPtr;
 using blink::mojom::SubAppsServiceResult;
@@ -90,10 +95,21 @@
 
   // Calls the Add() method on the mojo interface which is async, and waits for
   // it to finish.
-  SubAppsServiceResult CallAdd(const std::string& install_path) {
-    base::test::TestFuture<SubAppsServiceResult> future;
-    remote_->Add(install_path, future.GetCallback());
-    return future.Get();
+  auto CallAdd(std::vector<std::pair<std::string, GURL>> subapps) {
+    std::vector<blink::mojom::SubAppsServiceAddInfoPtr> mojom_subapps;
+    for (const auto& [unhashed_app_id, install_url] : subapps) {
+      blink::mojom::SubAppsServiceAddInfoPtr mojom_pair =
+          blink::mojom::SubAppsServiceAddInfo::New();
+      mojom_pair->unhashed_app_id = unhashed_app_id;
+      mojom_pair->install_url = install_url;
+      mojom_subapps.push_back(std::move(mojom_pair));
+    }
+
+    base::test::TestFuture<
+        std::vector<blink::mojom::SubAppsServiceAddResultPtr>>
+        future;
+    remote_->Add(std::move(mojom_subapps), future.GetCallback());
+    return future.Take();
   }
 
   // Calls the List() method on the mojo interface which is async, and waits for
@@ -112,6 +128,29 @@
     return future.Get();
   }
 
+  std::vector<std::pair<std::string, blink::mojom::SubAppsServiceAddResultCode>>
+  ResultsFromMojo(std::vector<blink::mojom::SubAppsServiceAddResultPtr> pairs) {
+    std::vector<
+        std::pair<std::string, blink::mojom::SubAppsServiceAddResultCode>>
+        subapps;
+    for (const auto& pair : pairs) {
+      subapps.emplace_back(pair->unhashed_app_id, pair->result_code);
+    }
+    return subapps;
+  }
+
+  std::vector<blink::mojom::SubAppsServiceAddResultPtr> Result(
+      blink::mojom::SubAppsServiceAddResultCode result_code,
+      AppId sub_app_id) {
+    blink::mojom::SubAppsServiceAddResultPtr mojom_pair =
+        blink::mojom::SubAppsServiceAddResult::New();
+    mojom_pair->unhashed_app_id = sub_app_id;
+    mojom_pair->result_code = result_code;
+    std::vector<blink::mojom::SubAppsServiceAddResultPtr> result;
+    result.emplace_back(std::move(mojom_pair));
+    return result;
+  }
+
  protected:
   base::test::ScopedFeatureList features_{blink::features::kDesktopPWAsSubApps};
   AppId parent_app_id_;
@@ -120,47 +159,26 @@
 
 // Simple end-to-end test for add().
 IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, EndToEndAdd) {
-  InstallParentApp();
   NavigateToParentApp();
+  InstallParentApp();
   EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
 
-  // Relative path (/path/to/app).
-  EXPECT_TRUE(
-      ExecJs(render_frame_host(),
-             content::JsReplace("navigator.subApps.add($1)", kSubAppPath)));
-  // ExecJs waits until the Promise returned by add() resolves.
-  EXPECT_EQ(1ul, GetAllSubAppIds(parent_app_id_).size());
+  GURL kSubAppUrl1 = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id_1 =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl1);
+  GURL kSubAppUrl2 = GetURL(kSubAppPath2);
+  UnhashedAppId unhashed_sub_app_id_2 =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl2);
 
-  // Full URL (https://sub.domain.org/path/to/app).
-  EXPECT_TRUE(ExecJs(
-      render_frame_host(),
-      content::JsReplace("navigator.subApps.add($1)", GetURL(kSubAppPath2))));
+  std::string command = "navigator.subApps.add({\"" + unhashed_sub_app_id_1 +
+                        "\":{\"install_url\":\"" + kSubAppUrl1.spec() +
+                        "\"},\"" + unhashed_sub_app_id_2 +
+                        "\":{\"install_url\":\"" + kSubAppUrl2.spec() + "\"}})";
+
+  EXPECT_TRUE(ExecJs(render_frame_host(), command));
   EXPECT_EQ(2ul, GetAllSubAppIds(parent_app_id_).size());
 }
 
-// End-to-end. Test that adding a sub-app from a different origin or from a
-// different domain fails.
-IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest,
-                       EndToEndAddFailDifferentOrigin) {
-  InstallParentApp();
-  NavigateToParentApp();
-  EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
-
-  GURL different_origin = https_server()->GetURL(kSubDomain, kSubAppPath);
-  // EXPECT_FALSE because this returns an error.
-  EXPECT_FALSE(ExecJs(
-      render_frame_host(),
-      content::JsReplace("navigator.subApps.add($1)", different_origin)));
-  EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
-
-  GURL different_domain =
-      https_server()->GetURL(kDifferentDomain, kSubAppPath2);
-  EXPECT_FALSE(ExecJs(
-      render_frame_host(),
-      content::JsReplace("navigator.subApps.add($1)", different_domain)));
-  EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
-}
-
 // Add a single sub-app and verify all sorts of things.
 IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddSingle) {
   // Dependency graph:
@@ -171,11 +189,18 @@
   BindRemote();
   InstallParentApp();
   EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath));
+
+  GURL kSubAppUrl = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl);
+  AppId sub_app_id = GenerateAppIdFromUnhashed(unhashed_sub_app_id);
+
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id),
+      CallAdd({{unhashed_sub_app_id, kSubAppUrl}}));
 
   // Verify a bunch of things for the newly installed sub-app.
-  AppId sub_app_id =
-      GenerateAppId(/*manifest_id=*/absl::nullopt, GetURL(kSubAppPath));
   EXPECT_TRUE(provider().registrar().IsInstalled(sub_app_id));
   EXPECT_TRUE(provider().registrar().IsLocallyInstalled(sub_app_id));
   EXPECT_EQ(DisplayMode::kStandalone,
@@ -187,7 +212,7 @@
             GetAllSubAppIds(parent_app_id_));
   EXPECT_TRUE(sub_app->IsSubAppInstalledApp());
   EXPECT_TRUE(sub_app->CanUserUninstallWebApp());
-  EXPECT_EQ(sub_app->start_url(), GetURL(kSubAppPath));
+  EXPECT_EQ(sub_app->start_url(), kSubAppUrl);
   if (provider().ui_manager().CanAddAppToQuickLaunchBar()) {
     EXPECT_FALSE(provider().ui_manager().IsAppInQuickLaunchBar(sub_app_id));
   }
@@ -196,28 +221,224 @@
 // Add one sub-app, verify count is one. Add it again, still same count. Add a
 // second sub-app, verify count is two.
 IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddTwo) {
-  InstallParentApp();
   NavigateToParentApp();
+  InstallParentApp();
+
   BindRemote();
 
   EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
 
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath));
+  GURL kSubAppUrl1 = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id_1 =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl1);
+
+  // Add first sub app.
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id_1),
+      CallAdd({{unhashed_sub_app_id_1, kSubAppUrl1}}));
   EXPECT_EQ(1ul, GetAllSubAppIds(parent_app_id_).size());
 
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath));
+  // Try to add first sub app again.
+  EXPECT_EQ(
+      Result(
+          blink::mojom::SubAppsServiceAddResultCode::kSuccessAlreadyInstalled,
+          unhashed_sub_app_id_1),
+      CallAdd({{unhashed_sub_app_id_1, kSubAppUrl1}}));
   EXPECT_EQ(1ul, GetAllSubAppIds(parent_app_id_).size());
 
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath2));
+  GURL kSubAppUrl2 = GetURL(kSubAppPath2);
+  UnhashedAppId unhashed_sub_app_id_2 =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl2);
+
+  // Add second sub app.
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id_2),
+      CallAdd({{unhashed_sub_app_id_2, kSubAppUrl2}}));
   EXPECT_EQ(2ul, GetAllSubAppIds(parent_app_id_).size());
 }
 
+// Verify that a list of sub-apps in Add are all installed correctly.
+IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddList) {
+  NavigateToParentApp();
+  InstallParentApp();
+  BindRemote();
+
+  GURL kSubAppUrl1 = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id_1 =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl1);
+  GURL kSubAppUrl2 = GetURL(kSubAppPath2);
+  UnhashedAppId unhashed_sub_app_id_2 =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl2);
+  GURL kSubAppUrl3 = GetURL(kSubAppPath3);
+  UnhashedAppId unhashed_sub_app_id_3 =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl3);
+
+  std::vector<std::pair<std::string, GURL>> subapps = {
+      {unhashed_sub_app_id_1, kSubAppUrl1},
+      {unhashed_sub_app_id_2, kSubAppUrl2},
+      {unhashed_sub_app_id_3, kSubAppUrl3}};
+
+  std::vector<std::pair<std::string, blink::mojom::SubAppsServiceAddResultCode>>
+      actual_results = ResultsFromMojo(CallAdd(std::move(subapps)));
+
+  EXPECT_THAT(
+      actual_results,
+      testing::UnorderedElementsAre(
+          std::pair{
+              unhashed_sub_app_id_1,
+              blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall},
+          std::pair{
+              unhashed_sub_app_id_2,
+              blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall},
+          std::pair{
+              unhashed_sub_app_id_3,
+              blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall}));
+
+  EXPECT_EQ(3ul, GetAllSubAppIds(parent_app_id_).size());
+}
+
+// Verify that Add works if PWA is launched as standalone window.
+IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddStandaloneWindow) {
+  NavigateToParentApp();
+  InstallParentApp();
+  content::WebContents* web_contents = OpenApplication(parent_app_id_);
+  BindRemote(web_contents);
+
+  GURL kSubAppUrl = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl);
+
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id),
+      CallAdd({{unhashed_sub_app_id, kSubAppUrl}}));
+}
+
+// Verify that a list of both correct and incorrect subapps returns the correct
+// result.
+IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest,
+                       AddListWithInvalidSubApps) {
+  NavigateToParentApp();
+  InstallParentApp();
+  BindRemote();
+
+  GURL kSubAppUrl1 = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id_1 =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl1);
+  GURL kSubAppUrl2 = GetURL(kSubAppPathInvalid);
+  UnhashedAppId unhashed_sub_app_id_2 =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl2);
+  GURL kSubAppUrl3 = GetURL(kSubAppPath3);
+  UnhashedAppId unhashed_sub_app_id_3 =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl3);
+
+  std::vector<std::pair<std::string, GURL>> subapps = {
+      {unhashed_sub_app_id_1, kSubAppUrl1},
+      {unhashed_sub_app_id_2, kSubAppUrl2},
+      {unhashed_sub_app_id_3, kSubAppUrl3}};
+
+  std::vector<std::pair<std::string, blink::mojom::SubAppsServiceAddResultCode>>
+      actual_results = ResultsFromMojo(CallAdd(std::move(subapps)));
+
+  EXPECT_THAT(
+      actual_results,
+      testing::UnorderedElementsAre(
+          std::pair{
+              unhashed_sub_app_id_1,
+              blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall},
+          std::pair{unhashed_sub_app_id_2,
+                    blink::mojom::SubAppsServiceAddResultCode::kFailure},
+          std::pair{
+              unhashed_sub_app_id_3,
+              blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall}));
+  EXPECT_EQ(2ul, GetAllSubAppIds(parent_app_id_).size());
+}
+
+// End-to-end. Test that adding a sub-app from a different origin or from a
+// different domain fails.
+IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest,
+                       EndToEndAddFailDifferentOrigin) {
+  NavigateToParentApp();
+  InstallParentApp();
+  EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
+
+  GURL different_origin = https_server()->GetURL(kSubDomain, kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, different_origin);
+  std::string command = "navigator.subApps.add({\"" + unhashed_sub_app_id +
+                        "\":{\"install_url\":\"" + different_origin.spec() +
+                        "\"}})";
+
+  // EXPECT_FALSE because this returns an error.
+  EXPECT_FALSE(ExecJs(render_frame_host(), command));
+
+  EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
+
+  GURL different_domain =
+      https_server()->GetURL(kDifferentDomain, kSubAppPath2);
+  unhashed_sub_app_id =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, different_domain);
+  command = "navigator.subApps.add({\"" + unhashed_sub_app_id + "\":\"" +
+            different_domain.spec() + "\"})";
+
+  EXPECT_FALSE(ExecJs(render_frame_host(), command));
+  EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
+}
+
 // Add call should fail if the parent app isn't installed.
 IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest,
                        AddFailParentAppNotInstalled) {
   NavigateToParentApp();
   BindRemote();
-  EXPECT_EQ(SubAppsServiceResult::kFailure, CallAdd(kSubAppPath));
+
+  GURL kSubAppUrl = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl);
+
+  std::vector<blink::mojom::SubAppsServiceAddResultPtr> results;
+
+  EXPECT_EQ(std::move(results), CallAdd({{unhashed_sub_app_id, kSubAppUrl}}));
+}
+
+// Add call should fail if the parent app is uninstalled between the add call
+// and the start of the command.
+IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest,
+                       AddFailParentAppWasUninstalled) {
+  base::RunLoop loop;
+  NavigateToParentApp();
+  GURL kSubAppUrl = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl);
+
+  AppInstallResults results;
+  base::flat_set<AppId> app_ids = {
+      GenerateAppIdFromUnhashed(unhashed_sub_app_id)};
+  std::vector<std::pair<UnhashedAppId, GURL>> subapps = {
+      {unhashed_sub_app_id, kSubAppUrl}};
+  auto install_command = std::make_unique<SubAppInstallCommand>(
+      &provider().install_manager(), &provider().registrar(), parent_app_id_,
+      std::move(subapps), app_ids,
+      base::BindLambdaForTesting([&](AppInstallResults arg_results) {
+        results = arg_results;
+        loop.Quit();
+      }));
+  provider().command_manager().ScheduleCommand(std::move(install_command));
+  loop.Run();
+
+  std::vector<blink::mojom::SubAppsServiceAddResultPtr> mojom_results;
+  blink::mojom::SubAppsServiceAddResultPtr mojom_pair =
+      blink::mojom::SubAppsServiceAddResult::New();
+  mojom_pair->unhashed_app_id = results[0].first;
+  mojom_pair->result_code = results[0].second;
+  mojom_results.push_back(std::move(mojom_pair));
+
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kParentAppUninstalled,
+             unhashed_sub_app_id),
+      mojom_results);
+  EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
 }
 
 // Add call should fail if the call wasn't made from the context of parent app.
@@ -225,43 +446,86 @@
                        AddFailNotInParentAppContext) {
   InstallParentApp();
   BindRemote();
-  EXPECT_EQ(SubAppsServiceResult::kFailure, CallAdd(kSubAppPath));
+
+  GURL kSubAppUrl = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl);
+
+  std::vector<blink::mojom::SubAppsServiceAddResultPtr> results;
+
+  EXPECT_EQ(std::move(results), CallAdd({{unhashed_sub_app_id, kSubAppUrl}}));
 }
 
-// Make sure the Add API can't force manifest update. Add sub-app, verify
-// display mode, then add the same one again with different display mode in the
-// manifest, and verify that it didn't change.
-IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddDoesntForceReinstall) {
-  InstallParentApp();
+// Verify that Add fails for an empty list.
+IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddEmptyList) {
   NavigateToParentApp();
+  InstallParentApp();
   BindRemote();
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath));
 
-  AppId sub_app_id =
-      GenerateAppId(/*manifest_id=*/absl::nullopt, GetURL(kSubAppPath));
-  EXPECT_EQ(DisplayMode::kStandalone,
-            provider().registrar().GetAppEffectiveDisplayMode(sub_app_id));
+  std::vector<blink::mojom::SubAppsServiceAddResultPtr> results;
 
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPathMinimalUi));
-  EXPECT_EQ(DisplayMode::kStandalone,
-            provider().registrar().GetAppEffectiveDisplayMode(sub_app_id));
+  EXPECT_EQ(std::move(results), CallAdd({}));
+  EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
 }
 
-// Verify that Add works if PWA is launched as standalone window.
-IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddStandaloneWindow) {
+// Verify that a sub-app with mismatched install-path and id is not installed
+// and correct error is returned in Add.
+IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddIncorrectId) {
+  NavigateToParentApp();
   InstallParentApp();
-  content::WebContents* web_contents = OpenApplication(parent_app_id_);
-  BindRemote(web_contents);
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath));
+  BindRemote();
+
+  GURL kSubAppUrl = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id = "https://www.invalid.com/";
+
+  EXPECT_EQ(
+      Result(
+          blink::mojom::SubAppsServiceAddResultCode::kExpectedAppIdCheckFailed,
+          unhashed_sub_app_id),
+      CallAdd({{unhashed_sub_app_id, kSubAppUrl}}));
+  EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
+}
+
+// Verify that a sub-app with an unhashed app id that is not a valid URL fails.
+IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddDifferentOrigin) {
+  NavigateToParentApp();
+  InstallParentApp();
+  BindRemote();
+
+  GURL different_origin = https_server()->GetURL(kSubDomain, kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, different_origin);
+
+  CallAdd({{unhashed_sub_app_id, different_origin}});
+  EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
+}
+
+// Verify that a sub-app with an unhashed app id that is not a valid URL fails.
+IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddInvalidId) {
+  NavigateToParentApp();
+  InstallParentApp();
+  BindRemote();
+
+  GURL kSubAppUrl = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id = "invalid";
+
+  CallAdd({{unhashed_sub_app_id, kSubAppUrl}});
+  EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
 }
 
 // Verify that Add fails for an invalid (non-existing) sub-app.
-IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddInvalid) {
-  InstallParentApp();
+IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddNonExistent) {
   NavigateToParentApp();
+  InstallParentApp();
   BindRemote();
 
-  EXPECT_EQ(SubAppsServiceResult::kFailure, CallAdd(kSubAppPathInvalid));
+  GURL kSubAppUrl = GetURL(kSubAppPathInvalid);
+  UnhashedAppId unhashed_sub_app_id =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl);
+
+  EXPECT_EQ(Result(blink::mojom::SubAppsServiceAddResultCode::kFailure,
+                   unhashed_sub_app_id),
+            CallAdd({{unhashed_sub_app_id, kSubAppUrl}}));
   EXPECT_EQ(0ul, GetAllSubAppIds(parent_app_id_).size());
 }
 
@@ -269,32 +533,79 @@
 // uninstalled as well.
 IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest,
                        UninstallingParentAppUninstallsSubApps) {
-  InstallParentApp();
   NavigateToParentApp();
+  InstallParentApp();
   BindRemote();
 
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath));
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath2));
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath3));
-
   // Verify that subapps are installed.
-  AppId sub_app_id_1 =
-      GenerateAppId(/*manifest_id=*/absl::nullopt, GetURL(kSubAppPath));
-  AppId sub_app_id_2 =
-      GenerateAppId(/*manifest_id=*/absl::nullopt, GetURL(kSubAppPath2));
-  AppId sub_app_id_3 =
-      GenerateAppId(/*manifest_id=*/absl::nullopt, GetURL(kSubAppPath3));
+  UnhashedAppId unhashed_sub_app_id_1 =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, GetURL(kSubAppPath));
+  UnhashedAppId unhashed_sub_app_id_2 = GenerateAppIdUnhashed(
+      /*manifest_id=*/absl::nullopt, GetURL(kSubAppPath2));
+  UnhashedAppId unhashed_sub_app_id_3 = GenerateAppIdUnhashed(
+      /*manifest_id=*/absl::nullopt, GetURL(kSubAppPath3));
 
-  EXPECT_TRUE(provider().registrar().IsInstalled(sub_app_id_1));
-  EXPECT_TRUE(provider().registrar().IsInstalled(sub_app_id_2));
-  EXPECT_TRUE(provider().registrar().IsInstalled(sub_app_id_3));
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id_1),
+      CallAdd({{unhashed_sub_app_id_1, GetURL(kSubAppPath)}}));
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id_2),
+      CallAdd({{unhashed_sub_app_id_2, GetURL(kSubAppPath2)}}));
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id_3),
+      CallAdd({{unhashed_sub_app_id_3, GetURL(kSubAppPath3)}}));
+
+  EXPECT_TRUE(provider().registrar().IsInstalled(
+      GenerateAppIdFromUnhashed(unhashed_sub_app_id_1)));
+  EXPECT_TRUE(provider().registrar().IsInstalled(
+      GenerateAppIdFromUnhashed(unhashed_sub_app_id_2)));
+  EXPECT_TRUE(provider().registrar().IsInstalled(
+      GenerateAppIdFromUnhashed(unhashed_sub_app_id_3)));
 
   UninstallParentApp();
   // Verify that both parent app and sub apps are no longer installed.
   EXPECT_FALSE(provider().registrar().IsInstalled(parent_app_id_));
-  EXPECT_FALSE(provider().registrar().IsInstalled(sub_app_id_1));
-  EXPECT_FALSE(provider().registrar().IsInstalled(sub_app_id_2));
-  EXPECT_FALSE(provider().registrar().IsInstalled(sub_app_id_3));
+  EXPECT_FALSE(provider().registrar().IsInstalled(
+      GenerateAppIdFromUnhashed(unhashed_sub_app_id_1)));
+  EXPECT_FALSE(provider().registrar().IsInstalled(
+      GenerateAppIdFromUnhashed(unhashed_sub_app_id_2)));
+  EXPECT_FALSE(provider().registrar().IsInstalled(
+      GenerateAppIdFromUnhashed(unhashed_sub_app_id_3)));
+}
+
+// Make sure the Add API can't force manifest update. Add sub-app, verify
+// display mode, then add the same one again with different display mode in the
+// manifest, and verify that it didn't change.
+IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, AddDoesntForceReinstall) {
+  NavigateToParentApp();
+  InstallParentApp();
+  BindRemote();
+
+  GURL kSubAppUrl = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl);
+
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id),
+      CallAdd({{unhashed_sub_app_id, kSubAppUrl}}));
+  EXPECT_EQ(DisplayMode::kStandalone,
+            provider().registrar().GetAppEffectiveDisplayMode(
+                GenerateAppIdFromUnhashed(unhashed_sub_app_id)));
+
+  GURL kSubAppWithMinialUiUrl = GetURL(kSubAppPathMinimalUi);
+
+  EXPECT_EQ(
+      Result(
+          blink::mojom::SubAppsServiceAddResultCode::kSuccessAlreadyInstalled,
+          unhashed_sub_app_id),
+      CallAdd({{unhashed_sub_app_id, kSubAppWithMinialUiUrl}}));
+  EXPECT_EQ(DisplayMode::kStandalone,
+            provider().registrar().GetAppEffectiveDisplayMode(
+                GenerateAppIdFromUnhashed(unhashed_sub_app_id)));
 }
 
 // Verify that uninstalling an app that has a sub-app with more than one
@@ -305,24 +616,35 @@
     StandaloneAppStaysInstalledAfterUpgradedParentUninstall) {
   // Install app as standalone app.
   AppId standalone_app_id = InstallPWA(GetURL(kSubAppPath2));
+  UnhashedAppId unhashed_standalone_app_id = GenerateAppIdUnhashed(
+      /*manifest_id=*/absl::nullopt, GetURL(kSubAppPath2));
 
-  InstallParentApp();
   NavigateToParentApp();
+  InstallParentApp();
   BindRemote();
 
   // Add normal subapp to verify standalone app install/uninstall does
   // not affect normal sub app uninstalls.
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath));
-  AppId sub_app_id =
-      GenerateAppId(/*manifest_id=*/absl::nullopt, GetURL(kSubAppPath));
-  EXPECT_TRUE(provider().registrar().IsInstalled(sub_app_id));
+  UnhashedAppId unhashed_sub_app_id =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, GetURL(kSubAppPath));
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id),
+      CallAdd({{unhashed_sub_app_id, GetURL(kSubAppPath)}}));
+
+  EXPECT_TRUE(provider().registrar().IsInstalled(
+      GenerateAppIdFromUnhashed(unhashed_sub_app_id)));
 
   // Add standalone app as sub-app.
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath2));
-
-  // Verify that it is now installed and registered as a subapp.
   const WebApp* standalone_app =
       provider().registrar().GetAppById(standalone_app_id);
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_standalone_app_id),
+      CallAdd({{unhashed_standalone_app_id, GetURL(kSubAppPath2)}}));
+
+  // Verify that it is now installed and registered as a subapp.
+
   EXPECT_EQ(parent_app_id_, standalone_app->parent_app_id());
   EXPECT_FALSE(standalone_app->HasOnlySource(WebAppManagement::kSync));
   EXPECT_TRUE(standalone_app->IsSubAppInstalledApp());
@@ -330,7 +652,8 @@
   UninstallParentApp();
 
   // Verify that normal sub-app is uninstalled.
-  EXPECT_FALSE(provider().registrar().IsInstalled(sub_app_id));
+  EXPECT_FALSE(provider().registrar().IsInstalled(
+      GenerateAppIdFromUnhashed(unhashed_sub_app_id)));
 
   // Verify that previous standalone is still installed.
   EXPECT_TRUE(provider().registrar().IsInstalled(standalone_app_id));
@@ -346,8 +669,8 @@
 
 // List call returns the correct value for three sub-apps.
 IN_PROC_BROWSER_TEST_F(SubAppsServiceImplBrowserTest, ListSuccess) {
-  InstallParentApp();
   NavigateToParentApp();
+  InstallParentApp();
   BindRemote();
 
   // Empty list before adding any sub-apps.
@@ -355,9 +678,25 @@
   EXPECT_EQ(SubAppsServiceResult::kSuccess, result->code);
   EXPECT_EQ(std::vector<std::string>{}, result->sub_app_ids);
 
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath));
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath2));
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath3));
+  UnhashedAppId unhashed_sub_app_id_1 =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, GetURL(kSubAppPath));
+  UnhashedAppId unhashed_sub_app_id_2 = GenerateAppIdUnhashed(
+      /*manifest_id=*/absl::nullopt, GetURL(kSubAppPath2));
+  UnhashedAppId unhashed_sub_app_id_3 = GenerateAppIdUnhashed(
+      /*manifest_id=*/absl::nullopt, GetURL(kSubAppPath3));
+
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id_1),
+      CallAdd({{unhashed_sub_app_id_1, GetURL(kSubAppPath)}}));
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id_2),
+      CallAdd({{unhashed_sub_app_id_2, GetURL(kSubAppPath2)}}));
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id_3),
+      CallAdd({{unhashed_sub_app_id_3, GetURL(kSubAppPath3)}}));
 
   // We need to use a set for comparison because the ordering changes between
   // invocations (due to embedded test server using a random port each time).
@@ -380,13 +719,17 @@
   // Regular install.
   InstallPWA(GetURL(kSubAppPath));
 
-  InstallParentApp();
   NavigateToParentApp();
+  InstallParentApp();
   BindRemote();
 
+  UnhashedAppId unhashed_sub_app_id_2 = GenerateAppIdUnhashed(
+      /*manifest_id=*/absl::nullopt, GetURL(kSubAppPath2));
   // Sub-app install.
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath2));
-
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id_2),
+      CallAdd({{unhashed_sub_app_id_2, GetURL(kSubAppPath2)}}));
   // Should only see the sub-app one here, not the standalone.
   SubAppsServiceListResultPtr result = CallList();
   EXPECT_EQ(SubAppsServiceResult::kSuccess, result->code);
@@ -411,10 +754,13 @@
   NavigateToParentApp();
   BindRemote();
 
-  std::string unhashed_app_id = GetURL(kSubAppPath).spec();
+  UnhashedAppId unhashed_app_id = GetURL(kSubAppPath).spec();
   AppId app_id = GenerateAppIdFromUnhashed(unhashed_app_id);
 
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath));
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_app_id),
+      CallAdd({{unhashed_app_id, GetURL(kSubAppPath)}}));
   EXPECT_EQ(1ul, GetAllSubAppIds(parent_app_id_).size());
   EXPECT_TRUE(provider().registrar().IsInstalled(app_id));
 
@@ -432,7 +778,7 @@
   NavigateToParentApp();
   BindRemote();
 
-  std::string unhashed_app_id = GetURL(kSubAppPath).spec();
+  UnhashedAppId unhashed_app_id = GetURL(kSubAppPath).spec();
   EXPECT_EQ(SubAppsServiceResult::kFailure, CallRemove(unhashed_app_id));
 }
 
@@ -444,15 +790,21 @@
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetURL(kSubAppPath)));
   BindRemote();
 
-  EXPECT_EQ(SubAppsServiceResult::kSuccess, CallAdd(kSubAppPath2));
+  GURL kSubAppUrl = GetURL(kSubAppPath);
+  UnhashedAppId unhashed_sub_app_id =
+      GenerateAppIdUnhashed(/*manifest_id=*/absl::nullopt, kSubAppUrl);
+
+  EXPECT_EQ(
+      Result(blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall,
+             unhashed_sub_app_id),
+      CallAdd({{unhashed_sub_app_id, kSubAppUrl}}));
 
   AppId second_parent_app = InstallPWA(GetURL(kSubAppPath3));
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetURL(kSubAppPath3)));
   remote_.reset();
   BindRemote();
 
-  std::string unhashed_app_id = GetURL(kSubAppPath2).spec();
-  EXPECT_EQ(SubAppsServiceResult::kFailure, CallRemove(unhashed_app_id));
+  EXPECT_EQ(SubAppsServiceResult::kFailure, CallRemove(unhashed_sub_app_id));
 }
 
 // Remove call returns failure if the calling app isn't installed.
@@ -461,7 +813,7 @@
   NavigateToParentApp();
   BindRemote();
 
-  std::string unhashed_app_id = GetURL(kSubAppPath).spec();
+  UnhashedAppId unhashed_app_id = GetURL(kSubAppPath).spec();
   EXPECT_EQ(SubAppsServiceResult::kFailure, CallRemove(unhashed_app_id));
 }
 
@@ -473,7 +825,7 @@
   BindRemote();
 
   // Invalid because it isn't a proper URL.
-  std::string unhashed_app_id = "invalid";
+  UnhashedAppId unhashed_app_id = "invalid";
   EXPECT_EQ(SubAppsServiceResult::kFailure, CallRemove(unhashed_app_id));
 
   // Shouldn't crash.
diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
index 965a676..cb95515 100644
--- a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
+++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
@@ -96,6 +96,7 @@
 #include "extensions/common/constants.h"
 #include "extensions/common/extension.h"
 #include "extensions/common/extension_icon_set.h"
+#include "extensions/common/extension_id.h"
 #include "extensions/common/extension_set.h"
 #include "extensions/common/manifest_handlers/icons_handler.h"
 #include "net/base/url_util.h"
@@ -171,6 +172,8 @@
   return largest >= pixels;
 }
 
+// Query string for showing the deprecation dialog with deletion options.
+const char kDeprecationDialogQueryString[] = "showDeletionDialog";
 // Query string for showing the force installed apps deprecation dialog.
 // Should match with kChromeUIAppsWithForceInstalledDeprecationDialogURL.
 const char kForceInstallDialogQueryString[] = "showForceInstallDialog";
@@ -742,19 +745,33 @@
     install_manager_observation_.Observe(&web_app_provider_->install_manager());
 
     WebContents* web_contents = web_ui()->GetWebContents();
-    if (web_contents->GetLastCommittedURL() ==
-            GURL(chrome::kChromeUIAppsWithDeprecationDialogURL) &&
-        !deprecated_app_ids_.empty()) {
-      TabDialogs::FromWebContents(web_contents)
-          ->ShowDeprecatedAppsDialog(deprecated_app_ids_, web_contents);
-    }
     std::string app_id;
     if (net::GetValueForKeyInQuery(web_contents->GetLastCommittedURL(),
+                                   kDeprecationDialogQueryString, &app_id)) {
+      if (extensions::IsExtensionUnsupportedDeprecatedApp(profile, app_id) &&
+          !deprecated_app_ids_.empty()) {
+        TabDialogs::FromWebContents(web_contents)
+            ->ShowDeprecatedAppsDialog(
+                app_id, deprecated_app_ids_, web_contents,
+                base::BindOnce(
+                    &AppLauncherHandler::LaunchApp,
+                    weak_ptr_factory_.GetWeakPtr(), app_id,
+                    extension_misc::AppLaunchBucket::APP_LAUNCH_CMD_LINE_APP,
+                    "", WindowOpenDisposition::CURRENT_TAB, true));
+      }
+    }
+    if (net::GetValueForKeyInQuery(web_contents->GetLastCommittedURL(),
                                    kForceInstallDialogQueryString, &app_id)) {
       if (extensions::IsExtensionUnsupportedDeprecatedApp(profile, app_id) &&
           extensions::IsExtensionForceInstalled(profile, app_id, nullptr)) {
         TabDialogs::FromWebContents(web_contents)
-            ->ShowForceInstalledDeprecatedAppsDialog(app_id, web_contents);
+            ->ShowForceInstalledDeprecatedAppsDialog(
+                app_id, web_contents,
+                base::BindOnce(
+                    &AppLauncherHandler::LaunchApp,
+                    weak_ptr_factory_.GetWeakPtr(), app_id,
+                    extension_misc::AppLaunchBucket::APP_LAUNCH_CMD_LINE_APP,
+                    "", WindowOpenDisposition::CURRENT_TAB, true));
       }
     }
   }
@@ -764,27 +781,50 @@
 void AppLauncherHandler::HandleLaunchApp(const base::ListValue* args) {
   const std::string& extension_id = args->GetListDeprecated()[0].GetString();
   double source = args->GetListDeprecated()[1].GetDouble();
-  GURL override_url;
 
   extension_misc::AppLaunchBucket launch_bucket =
       static_cast<extension_misc::AppLaunchBucket>(static_cast<int>(source));
   CHECK(launch_bucket >= 0 &&
         launch_bucket < extension_misc::APP_LAUNCH_BUCKET_BOUNDARY);
 
+  WindowOpenDisposition disposition =
+      args->GetListDeprecated().size() > 3
+          ? webui::GetDispositionFromClick(args, 3)
+          : WindowOpenDisposition::CURRENT_TAB;
+  std::string source_value;
+  if (args->GetListDeprecated().size() > 2) {
+    source_value = args->GetListDeprecated()[2].GetString();
+  }
+  LaunchApp(extension_id, launch_bucket, source_value, disposition, false);
+}
+
+void AppLauncherHandler::LaunchApp(
+    std::string extension_id,
+    extension_misc::AppLaunchBucket launch_bucket,
+    const std::string& source_value,
+    WindowOpenDisposition disposition,
+    bool force_launch_deprecated_apps) {
   Profile* profile = extension_service_->profile();
 
-  if (extensions::IsExtensionUnsupportedDeprecatedApp(profile, extension_id) &&
+  if (!force_launch_deprecated_apps &&
+      extensions::IsExtensionUnsupportedDeprecatedApp(profile, extension_id) &&
       base::FeatureList::IsEnabled(features::kChromeAppsDeprecation)) {
     if (!extensions::IsExtensionForceInstalled(profile, extension_id,
                                                nullptr)) {
       TabDialogs::FromWebContents(web_ui()->GetWebContents())
-          ->ShowDeprecatedAppsDialog(deprecated_app_ids_,
-                                     web_ui()->GetWebContents());
+          ->ShowDeprecatedAppsDialog(
+              extension_id, deprecated_app_ids_, web_ui()->GetWebContents(),
+              base::BindOnce(&AppLauncherHandler::LaunchApp,
+                             weak_ptr_factory_.GetWeakPtr(), extension_id,
+                             launch_bucket, source_value, disposition, true));
       return;
     } else {
       TabDialogs::FromWebContents(web_ui()->GetWebContents())
-          ->ShowForceInstalledDeprecatedAppsDialog(extension_id,
-                                                   web_ui()->GetWebContents());
+          ->ShowForceInstalledDeprecatedAppsDialog(
+              extension_id, web_ui()->GetWebContents(),
+              base::BindOnce(&AppLauncherHandler::LaunchApp,
+                             weak_ptr_factory_.GetWeakPtr(), extension_id,
+                             launch_bucket, source_value, disposition, true));
       return;
     }
   }
@@ -816,24 +856,15 @@
         extensions::GetLaunchContainer(ExtensionPrefs::Get(profile), extension);
   }
 
-  WindowOpenDisposition disposition =
-      args->GetListDeprecated().size() > 3
-          ? webui::GetDispositionFromClick(args, 3)
-          : WindowOpenDisposition::CURRENT_TAB;
+  GURL override_url;
   if (extension_id != extensions::kWebStoreAppId) {
     CHECK_NE(launch_bucket, extension_misc::APP_LAUNCH_BUCKET_INVALID);
     extensions::RecordAppLaunchType(launch_bucket, type);
   } else {
     extensions::RecordWebStoreLaunch();
-
-    if (args->GetListDeprecated().size() > 2) {
-      const std::string& source_value =
-          args->GetListDeprecated()[2].GetString();
-      if (!source_value.empty()) {
-        override_url = net::AppendQueryParameter(
-            full_launch_url, extension_urls::kWebstoreSourceField,
-            source_value);
-      }
+    if (!source_value.empty()) {
+      override_url = net::AppendQueryParameter(
+          full_launch_url, extension_urls::kWebstoreSourceField, source_value);
     }
   }
 
@@ -1230,8 +1261,8 @@
 void AppLauncherHandler::HandleLaunchDeprecatedAppDialog(
     const base::ListValue* args) {
   TabDialogs::FromWebContents(web_ui()->GetWebContents())
-      ->ShowDeprecatedAppsDialog(deprecated_app_ids_,
-                                 web_ui()->GetWebContents());
+      ->ShowDeprecatedAppsDialog(extensions::ExtensionId(), deprecated_app_ids_,
+                                 web_ui()->GetWebContents(), base::DoNothing());
 }
 
 void AppLauncherHandler::OnFaviconForAppInstallFromLink(
diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.h b/chrome/browser/ui/webui/ntp/app_launcher_handler.h
index cbb3bd66..df3a496 100644
--- a/chrome/browser/ui/webui/ntp/app_launcher_handler.h
+++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.h
@@ -137,6 +137,12 @@
   // CURRENT_TAB.
   void HandleLaunchApp(const base::ListValue* args);
 
+  void LaunchApp(std::string extension_id,
+                 extension_misc::AppLaunchBucket launch_bucket,
+                 const std::string& source_value,
+                 WindowOpenDisposition disposition,
+                 bool force_launch_deprecated_apps);
+
   // Handles the "setLaunchType" message with args containing [extension_id,
   // launch_type].
   void HandleSetLaunchType(const base::ListValue* args);
diff --git a/chrome/browser/ui/webui/sync_internals/sync_internals_browsertest.js b/chrome/browser/ui/webui/sync_internals/sync_internals_browsertest.js
index 15e083af..77d0465d 100644
--- a/chrome/browser/ui/webui/sync_internals/sync_internals_browsertest.js
+++ b/chrome/browser/ui/webui/sync_internals/sync_internals_browsertest.js
@@ -295,8 +295,12 @@
 TEST_F('SyncInternalsWebUITest', 'SearchTabDoesntChangeOnItemSelect',
        function() {
   // Select the search tab.
-  document.querySelector('#sync-search-tab').selected = true;
-  assertTrue(document.querySelector('#sync-search-tab').selected);
+  const searchTab = document.querySelector('#sync-search-tab');
+  const tabs = Array.from(document.querySelectorAll('div[slot=\'tab\']'));
+  const index = tabs.indexOf(searchTab);
+  document.querySelector('cr-tab-box').setAttribute(
+      'selected-index', index.toString());
+  assertTrue(searchTab.hasAttribute('selected'));
 
   // Build the data model and attach to result list.
   setupSyncResultsListForTest([
@@ -317,7 +321,7 @@
   // Select the first list item and verify the search tab remains selected.
   document.querySelector('#sync-results-list').getListItemByIndex(0).selected =
       true;
-  assertTrue(document.querySelector('#sync-search-tab').selected);
+  assertTrue(searchTab.hasAttribute('selected'));
 });
 
 TEST_F('SyncInternalsWebUITest', 'NodeBrowserTest', function() {
@@ -362,7 +366,12 @@
       'Never');
 
   // Selecting the tab will refresh it.
-  document.querySelector('#sync-browser-tab').selected = true;
+  const syncBrowserTab = document.querySelector('#sync-browser-tab');
+  const tabs = Array.from(document.querySelectorAll('div[slot=\'tab\']'));
+  const index = tabs.indexOf(syncBrowserTab);
+  document.querySelector('cr-tab-box').setAttribute(
+      'selected-index', index.toString());
+  assertTrue(syncBrowserTab.hasAttribute('selected'));
   assertNotEquals(
       document.querySelector('#node-browser-refresh-time').textContent,
       'Never');
@@ -370,8 +379,9 @@
   // Re-selecting the tab shouldn't re-refresh.
   document.querySelector('#node-browser-refresh-time').textContent =
       'TestCanary';
-  document.querySelector('#sync-browser-tab').selected = false;
-  document.querySelector('#sync-browser-tab').selected = true;
+  document.querySelector('cr-tab-box').setAttribute('selected-index', '0');
+  document.querySelector('cr-tab-box').setAttribute(
+      'selected-index', index.toString());
   assertEquals(
       document.querySelector('#node-browser-refresh-time').textContent,
       'TestCanary');
diff --git a/chrome/browser/ui/webui/whats_new/whats_new_ui.cc b/chrome/browser/ui/webui/whats_new/whats_new_ui.cc
index 0f3627e..3d2b4d0 100644
--- a/chrome/browser/ui/webui/whats_new/whats_new_ui.cc
+++ b/chrome/browser/ui/webui/whats_new/whats_new_ui.cc
@@ -44,8 +44,6 @@
       {"title", IDS_WHATS_NEW_TITLE},
   };
   source->AddLocalizedStrings(kStrings);
-  source->AddBoolean("showFeedbackButton",
-                     features::kChromeWhatsNewUIFeedbackButton.Get());
 
   // Allow embedding of iframe from chrome.com
   source->OverrideContentSecurityPolicy(
@@ -93,8 +91,8 @@
 void WhatsNewUI::CreateBrowserCommandHandler(
     mojo::PendingReceiver<browser_command::mojom::CommandHandler>
         pending_handler) {
-  std::vector<browser_command::mojom::Command> supported_commands = {
-      browser_command::mojom::Command::kOpenFeedbackForm};
+  // No supported commands for M104 only. New command to be added for M106.
+  std::vector<browser_command::mojom::Command> supported_commands = {};
   command_handler_ = std::make_unique<BrowserCommandHandler>(
       std::move(pending_handler), profile_, supported_commands);
   command_handler_->ConfigureFeedbackCommand(
diff --git a/chrome/browser/url_param_filter/url_param_classifications_loader_browsertest.cc b/chrome/browser/url_param_filter/url_param_classifications_loader_browsertest.cc
index 278b7830..aaadaaa 100644
--- a/chrome/browser/url_param_filter/url_param_classifications_loader_browsertest.cc
+++ b/chrome/browser/url_param_filter/url_param_classifications_loader_browsertest.cc
@@ -3,10 +3,10 @@
 // found in the LICENSE file.
 
 #include "base/test/scoped_feature_list.h"
-#include "chrome/browser/component_updater/url_param_classification_component_installer.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/test_launcher_utils.h"
+#include "components/component_updater/installer_policies/url_param_classification_component_installer.h"
 #include "components/url_param_filter/core/features.h"
 #include "components/url_param_filter/core/url_param_classifications_loader.h"
 #include "components/url_param_filter/core/url_param_filter_test_helper.h"
diff --git a/chrome/browser/web_applications/BUILD.gn b/chrome/browser/web_applications/BUILD.gn
index d10519f..b3bff21d 100644
--- a/chrome/browser/web_applications/BUILD.gn
+++ b/chrome/browser/web_applications/BUILD.gn
@@ -27,6 +27,8 @@
     "commands/install_web_app_with_params_command.h",
     "commands/run_on_os_login_command.cc",
     "commands/run_on_os_login_command.h",
+    "commands/sub_app_install_command.cc",
+    "commands/sub_app_install_command.h",
     "commands/web_app_command.cc",
     "commands/web_app_command.h",
     "commands/web_app_install_command.cc",
diff --git a/chrome/browser/web_applications/commands/install_from_sync_command.cc b/chrome/browser/web_applications/commands/install_from_sync_command.cc
index e458315..73a455d2 100644
--- a/chrome/browser/web_applications/commands/install_from_sync_command.cc
+++ b/chrome/browser/web_applications/commands/install_from_sync_command.cc
@@ -96,7 +96,7 @@
   fallback_install_info_ = std::make_unique<WebAppInstallInfo>();
   fallback_install_info_->manifest_id = params_.manifest_id;
   fallback_install_info_->start_url = params_.start_url;
-  fallback_install_info_->title = base::ASCIIToUTF16(params_.title);
+  fallback_install_info_->title = base::UTF8ToUTF16(params_.title);
   fallback_install_info_->user_display_mode = params_.user_display_mode;
   fallback_install_info_->scope = params_.scope;
   fallback_install_info_->theme_color = params_.theme_color;
diff --git a/chrome/browser/web_applications/commands/sub_app_install_command.cc b/chrome/browser/web_applications/commands/sub_app_install_command.cc
new file mode 100644
index 0000000..3fba05c
--- /dev/null
+++ b/chrome/browser/web_applications/commands/sub_app_install_command.cc
@@ -0,0 +1,189 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/web_applications/commands/sub_app_install_command.h"
+#include "chrome/browser/web_applications/web_app_helpers.h"
+
+static blink::mojom::SubAppsServiceAddResultCode InstallResultCodeToMojo(
+    webapps::InstallResultCode install_result_code) {
+  blink::mojom::SubAppsServiceAddResultCode mojom_install_result_code;
+  switch (install_result_code) {
+    case webapps::InstallResultCode::kSuccessNewInstall:
+      mojom_install_result_code =
+          blink::mojom::SubAppsServiceAddResultCode::kSuccessNewInstall;
+      break;
+    case webapps::InstallResultCode::kSuccessAlreadyInstalled:
+      mojom_install_result_code =
+          blink::mojom::SubAppsServiceAddResultCode::kSuccessAlreadyInstalled;
+      break;
+    case webapps::InstallResultCode::kUserInstallDeclined:
+      mojom_install_result_code =
+          blink::mojom::SubAppsServiceAddResultCode::kUserInstallDeclined;
+      break;
+    case webapps::InstallResultCode::kExpectedAppIdCheckFailed:
+      mojom_install_result_code =
+          blink::mojom::SubAppsServiceAddResultCode::kExpectedAppIdCheckFailed;
+      break;
+    default:
+      mojom_install_result_code =
+          blink::mojom::SubAppsServiceAddResultCode::kFailure;
+      break;
+  }
+  return mojom_install_result_code;
+}
+
+void SubAppInstallCommand::OnSyncSourceRemoved() {}
+
+void SubAppInstallCommand::OnShutdown() {}
+
+base::Value SubAppInstallCommand::ToDebugValue() const {
+  return base::Value("SubAppInstallCommand");
+}
+
+SubAppInstallCommand::SubAppInstallCommand(
+    web_app::WebAppInstallManager* install_manager,
+    web_app::WebAppRegistrar* registrar,
+    web_app::AppId& parent_app_id,
+    std::vector<std::pair<web_app::UnhashedAppId, GURL>> sub_apps,
+    base::flat_set<web_app::AppId> app_ids_for_lock,
+    base::OnceCallback<void(AppInstallResults)> callback)
+    : WebAppCommand{web_app::WebAppCommandLock::CreateForAppLock(
+          app_ids_for_lock)},
+      install_manager_{install_manager},
+      registrar_{registrar},
+      requested_installs_{std::move(sub_apps)},
+      parent_app_id_{parent_app_id},
+      install_callback_{std::move(callback)} {}
+
+SubAppInstallCommand::~SubAppInstallCommand() = default;
+
+void SubAppInstallCommand::Start() {
+  DCHECK(state_ == State::kNotStarted);
+
+  // Check if parent app is installed.
+  if (!registrar_->IsInstalled(parent_app_id_)) {
+    // Add failure reason to each app
+    base::ranges::transform(
+        requested_installs_, std::inserter(results_, results_.begin()),
+        [](auto const& pair) {
+          return std::pair{
+              pair.first,
+              blink::mojom::SubAppsServiceAddResultCode::kParentAppUninstalled};
+        });
+    SignalCompletionAndSelfDestruct(
+        web_app::CommandResult::kFailure,
+        base::BindOnce(std::move(install_callback_), results_));
+    return;
+  }
+
+  if (requested_installs_.empty()) {
+    SignalCompletionAndSelfDestruct(
+        web_app::CommandResult::kSuccess,
+        base::BindOnce(std::move(install_callback_), results_));
+    return;
+  }
+
+  // Populate pending_installs_ from requested_installs_
+  base::ranges::transform(
+      requested_installs_,
+      std::inserter(pending_installs_, pending_installs_.begin()),
+      [](auto const& pair) { return pair.first; });
+
+  num_pending_dialog_callbacks_ = pending_installs_.size();
+
+  state_ = State::kPendingDialogCallbacks;
+  StartNextInstall();
+}
+
+void SubAppInstallCommand::StartNextInstall() {
+  DCHECK(!requested_installs_.empty());
+  std::pair<web_app::UnhashedAppId, GURL> install_info =
+      std::move(requested_installs_.back());
+  const web_app::UnhashedAppId& unhashed_app_id = install_info.first;
+  GURL install_url = install_info.second;
+  requested_installs_.pop_back();
+
+  // TODO(https://crbug.com/1327963): Update to use WebAppCommand version of
+  // WebAppInstallManager::InstallSubApp once implemented.
+  install_manager_->InstallSubApp(
+      parent_app_id_, install_url,
+      web_app::GenerateAppIdFromUnhashed(unhashed_app_id),
+      base::BindOnce(&SubAppInstallCommand::OnDialogRequested,
+                     weak_ptr_factory_.GetWeakPtr(), unhashed_app_id),
+      base::BindOnce(&SubAppInstallCommand::OnInstalled,
+                     weak_ptr_factory_.GetWeakPtr(), unhashed_app_id));
+}
+
+void SubAppInstallCommand::OnDialogRequested(
+    const web_app::UnhashedAppId& unhashed_app_id,
+    content::WebContents* initiator_web_contents,
+    std::unique_ptr<WebAppInstallInfo> web_app_info,
+    web_app::WebAppInstallationAcceptanceCallback acceptance_callback) {
+  acceptance_callbacks_.emplace_back(unhashed_app_id, std::move(web_app_info),
+                                     std::move(acceptance_callback));
+
+  num_pending_dialog_callbacks_--;
+  DCHECK_GE(num_pending_dialog_callbacks_, 0u);
+  MaybeShowDialog();
+}
+
+void SubAppInstallCommand::MaybeShowDialog() {
+  if (num_pending_dialog_callbacks_ > 0) {
+    DCHECK(!requested_installs_.empty());
+    StartNextInstall();
+    return;
+  }
+
+  if (acceptance_callbacks_.empty()) {
+    SignalCompletionAndSelfDestruct(
+        web_app::CommandResult::kFailure,
+        base::BindOnce(std::move(install_callback_), results_));
+    return;
+  }
+
+  state_ = State::kPendingInstallComplete;
+  // TODO(https://crbug.com/1313109): Replace the placeholder blanket user
+  // acceptance below with a permissions dialog shown to the user.
+  for (auto& [unhashed_app_id, web_app_info, acceptance_callback] :
+       acceptance_callbacks_) {
+    std::move(acceptance_callback).Run(true, std::move(web_app_info));
+  }
+  acceptance_callbacks_.clear();
+}
+
+void SubAppInstallCommand::OnInstalled(
+    const web_app::UnhashedAppId& unhashed_app_id,
+    const web_app::AppId& app_id,
+    webapps::InstallResultCode result) {
+  AddResultAndRemoveFromPendingInstalls(unhashed_app_id, result);
+
+  // In case an installation returns with a failure before running the dialog
+  // callback.
+  if (state_ == State::kPendingDialogCallbacks) {
+    num_pending_dialog_callbacks_--;
+    MaybeShowDialog();
+    return;
+  }
+
+  DCHECK_GE(pending_installs_.size(), 0u);
+  MaybeFinishCommand();
+}
+
+void SubAppInstallCommand::MaybeFinishCommand() {
+  if (pending_installs_.size() > 0) {
+    return;
+  }
+
+  SignalCompletionAndSelfDestruct(
+      web_app::CommandResult::kSuccess,
+      base::BindOnce(std::move(install_callback_), results_));
+}
+
+void SubAppInstallCommand::AddResultAndRemoveFromPendingInstalls(
+    const web_app::UnhashedAppId& unhashed_app_id,
+    webapps::InstallResultCode result) {
+  std::pair result_pair(unhashed_app_id, InstallResultCodeToMojo(result));
+  results_.emplace_back(result_pair);
+  pending_installs_.erase(unhashed_app_id);
+}
diff --git a/chrome/browser/web_applications/commands/sub_app_install_command.h b/chrome/browser/web_applications/commands/sub_app_install_command.h
new file mode 100644
index 0000000..b37e355
--- /dev/null
+++ b/chrome/browser/web_applications/commands/sub_app_install_command.h
@@ -0,0 +1,84 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_WEB_APPLICATIONS_COMMANDS_SUB_APP_INSTALL_COMMAND_H_
+#define CHROME_BROWSER_WEB_APPLICATIONS_COMMANDS_SUB_APP_INSTALL_COMMAND_H_
+
+#include "base/callback_forward.h"
+#include "chrome/browser/web_applications/commands/web_app_command.h"
+#include "chrome/browser/web_applications/web_app_id.h"
+#include "chrome/browser/web_applications/web_app_install_info.h"
+#include "chrome/browser/web_applications/web_app_install_manager.h"
+#include "components/webapps/browser/install_result_code.h"
+#include "content/public/browser/web_contents.h"
+#include "third_party/blink/public/mojom/subapps/sub_apps_service.mojom-shared.h"
+
+using AppInstallResults = std::vector<
+    std::pair<web_app::AppId, blink::mojom::SubAppsServiceAddResultCode>>;
+
+class SubAppInstallCommand : public web_app::WebAppCommand {
+ public:
+  SubAppInstallCommand(
+      web_app::WebAppInstallManager* install_manager,
+      web_app::WebAppRegistrar* registrar,
+      web_app::AppId& parent_app_id,
+      std::vector<std::pair<web_app::UnhashedAppId, GURL>> sub_apps,
+      base::flat_set<web_app::AppId> app_ids_for_lock,
+      base::OnceCallback<void(AppInstallResults)> callback);
+  ~SubAppInstallCommand() override;
+  SubAppInstallCommand(const SubAppInstallCommand&) = delete;
+  SubAppInstallCommand& operator=(const SubAppInstallCommand&) = delete;
+  base::Value ToDebugValue() const override;
+
+ protected:
+  void Start() override;
+  void OnSyncSourceRemoved() override;
+  void OnShutdown() override;
+
+ private:
+  enum class State {
+    kNotStarted = 0,
+    kPendingDialogCallbacks = 1,
+    kPendingInstallComplete = 2
+  } state_ = State::kNotStarted;
+
+  void StartNextInstall();
+
+  void OnDialogRequested(
+      const web_app::UnhashedAppId& app_id,
+      content::WebContents* initiator_web_contents,
+      std::unique_ptr<WebAppInstallInfo> web_app_info,
+      web_app::WebAppInstallationAcceptanceCallback acceptance_callback);
+
+  void MaybeShowDialog();
+
+  void OnInstalled(const web_app::UnhashedAppId& unhashed_app_id,
+                   const web_app::AppId& app_id,
+                   webapps::InstallResultCode result);
+
+  void MaybeFinishCommand();
+
+  void AddResultAndRemoveFromPendingInstalls(const web_app::AppId& app_id,
+                                             webapps::InstallResultCode result);
+
+  web_app::WebAppInstallManager* install_manager_;
+  web_app::WebAppRegistrar* registrar_;
+  std::vector<std::pair<web_app::UnhashedAppId, GURL>> requested_installs_;
+  std::set<web_app::UnhashedAppId> pending_installs_;
+  size_t num_pending_dialog_callbacks_ = 0;
+  AppInstallResults results_;
+  const web_app::AppId parent_app_id_;
+  base::OnceCallback<void(AppInstallResults)> install_callback_;
+
+  std::vector<
+      std::tuple<web_app::UnhashedAppId,
+                 std::unique_ptr<WebAppInstallInfo>,
+                 base::OnceCallback<void(bool user_accepted,
+                                         std::unique_ptr<WebAppInstallInfo>)>>>
+      acceptance_callbacks_;
+  std::vector<std::pair<std::u16string, SkBitmap>> dialog_data_;
+  base::WeakPtrFactory<SubAppInstallCommand> weak_ptr_factory_{this};
+};
+
+#endif  // CHROME_BROWSER_WEB_APPLICATIONS_COMMANDS_SUB_APP_INSTALL_COMMAND_H_
diff --git a/chrome/browser/web_applications/web_app_id.h b/chrome/browser/web_applications/web_app_id.h
index 4b7f2be..836ec48 100644
--- a/chrome/browser/web_applications/web_app_id.h
+++ b/chrome/browser/web_applications/web_app_id.h
@@ -12,6 +12,11 @@
 // App ID matches Extension ID.
 using AppId = std::string;
 
+// Unhashed version of App ID. This can be hashed using
+// GenerateAppIdFromUnhashed(unhashed_app_id), see
+// https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/web_applications/web_app_helpers.h;l=53.
+using UnhashedAppId = std::string;
+
 }  // namespace web_app
 
 #endif  // CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_ID_H_
diff --git a/chrome/browser/web_applications/web_app_install_manager.cc b/chrome/browser/web_applications/web_app_install_manager.cc
index 51fca054..72f25e50 100644
--- a/chrome/browser/web_applications/web_app_install_manager.cc
+++ b/chrome/browser/web_applications/web_app_install_manager.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/web_applications/web_app_install_manager.h"
 
 #include <iterator>
+#include <memory>
 #include <utility>
 
 #include "base/bind.h"
@@ -132,16 +133,14 @@
   tasks_.insert(std::move(task));
 }
 
-void WebAppInstallManager::InstallSubApp(const AppId& parent_app_id,
-                                         const GURL& install_url,
-                                         OnceInstallCallback callback) {
+void WebAppInstallManager::InstallSubApp(
+    const AppId& parent_app_id,
+    const GURL& install_url,
+    const AppId& expected_app_id,
+    WebAppInstallDialogCallback dialog_callback,
+    OnceInstallCallback install_callback) {
   if (!started_)
     return;
-
-  // Enqueue full background installation flow. Since app_id isn't available
-  // yet, duplicate installation check will be performed down the line once
-  // app_id is made available.
-
   auto task = std::make_unique<WebAppInstallTask>(
       profile_, finalizer_, data_retriever_factory_.Run(), registrar_,
       webapps::WebappInstallSource::SUB_APP);
@@ -158,14 +157,13 @@
 
   task->SetInstallParams(params);
 
-  base::OnceClosure start_task = base::BindOnce(
-      &WebAppInstallTask::LoadAndInstallSubAppFromURL, task->GetWeakPtr(),
-      install_url, EnsureWebContentsCreated(),
-      base::Unretained(url_loader_.get()),
-      base::BindOnce(&WebAppInstallManager::OnQueuedTaskCompleted, GetWeakPtr(),
-                     task.get(), std::move(callback)));
-
-  EnqueueTask(std::move(task), std::move(start_task));
+  WebAppInstallTask* task_ptr = task.get();
+  tasks_.insert(std::move(task));
+  task_ptr->LoadAndInstallSubAppFromURL(
+      install_url, expected_app_id, EnsureWebContentsCreated(),
+      url_loader_.get(), std::move(dialog_callback),
+      base::BindOnce(&WebAppInstallManager::OnInstallTaskCompleted,
+                     GetWeakPtr(), task_ptr, std::move(install_callback)));
 }
 
 base::WeakPtr<WebAppInstallManager> WebAppInstallManager::GetWeakPtr() {
diff --git a/chrome/browser/web_applications/web_app_install_manager.h b/chrome/browser/web_applications/web_app_install_manager.h
index e4ce3d9..c19eaba4 100644
--- a/chrome/browser/web_applications/web_app_install_manager.h
+++ b/chrome/browser/web_applications/web_app_install_manager.h
@@ -68,7 +68,9 @@
 
   void InstallSubApp(const AppId& parent_app_id,
                      const GURL& install_url,
-                     OnceInstallCallback callback);
+                     const AppId& expected_app_id,
+                     WebAppInstallDialogCallback dialog_callback,
+                     OnceInstallCallback install_callback);
 
   // Returns whether the an installation is already running with the
   // same web contents.
diff --git a/chrome/browser/web_applications/web_app_install_manager_unittest.cc b/chrome/browser/web_applications/web_app_install_manager_unittest.cc
index d66ea2c1a..59f0787 100644
--- a/chrome/browser/web_applications/web_app_install_manager_unittest.cc
+++ b/chrome/browser/web_applications/web_app_install_manager_unittest.cc
@@ -227,14 +227,23 @@
   InstallResult InstallSubApp(const AppId& parent_app_id,
                               const GURL& install_url) {
     UseDefaultDataRetriever(install_url);
-    url_loader().AddPrepareForLoadResults(
-        {WebAppUrlLoader::Result::kUrlLoaded});
     url_loader().SetNextLoadUrlResult(install_url,
                                       WebAppUrlLoader::Result::kUrlLoaded);
     InstallResult result;
     base::RunLoop run_loop;
     install_manager().InstallSubApp(
         parent_app_id, install_url,
+        GenerateAppId(/*manifest_id=*/{}, install_url),
+        /*dialog_callback=*/
+        base::BindLambdaForTesting(
+            [](content::WebContents* initiator_web_contents,
+               std::unique_ptr<WebAppInstallInfo> web_app_info,
+               web_app::WebAppInstallationAcceptanceCallback
+                   acceptance_callback) {
+              std::move(acceptance_callback)
+                  .Run(/*user_accepted=*/true, std::move(web_app_info));
+            }),
+        /*install_callback=*/
         base::BindLambdaForTesting([&](const AppId& installed_app_id,
                                        webapps::InstallResultCode code) {
           result.app_id = installed_app_id;
diff --git a/chrome/browser/web_applications/web_app_install_task.cc b/chrome/browser/web_applications/web_app_install_task.cc
index 7275239..ef7045d3 100644
--- a/chrome/browser/web_applications/web_app_install_task.cc
+++ b/chrome/browser/web_applications/web_app_install_task.cc
@@ -254,18 +254,24 @@
 
 void WebAppInstallTask::LoadAndInstallSubAppFromURL(
     const GURL& install_url,
+    const AppId& expected_app_id,
     content::WebContents* contents,
     WebAppUrlLoader* url_loader,
+    WebAppInstallDialogCallback dialog_callback,
     OnceInstallCallback install_callback) {
   DCHECK(AreWebAppsUserInstallable(profile_));
   CheckInstallPreconditions();
 
   Observe(contents);
+
   if (ShouldStopInstall())
     return;
 
-  background_installation_ = true;
-  log_entry_.set_background_installation(true);
+  ExpectAppId(expected_app_id);
+
+  // TODO(https://crbug.com/1326843): Change to background installation in case
+  // of relevant policy.
+  dialog_callback_ = std::move(dialog_callback);
   install_callback_ = std::move(install_callback);
 
   url_loader->LoadUrl(
@@ -465,19 +471,19 @@
   }
 
   if (result == WebAppUrlLoader::Result::kRedirectedUrlLoaded) {
-    CallInstallCallback(AppId(),
+    CallInstallCallback(expected_app_id_.value_or(AppId()),
                         webapps::InstallResultCode::kInstallURLRedirected);
     return;
   }
 
   if (result == WebAppUrlLoader::Result::kFailedPageTookTooLong) {
-    CallInstallCallback(AppId(),
+    CallInstallCallback(expected_app_id_.value_or(AppId()),
                         webapps::InstallResultCode::kInstallURLLoadTimeOut);
     return;
   }
 
   if (result != WebAppUrlLoader::Result::kUrlLoaded) {
-    CallInstallCallback(AppId(),
+    CallInstallCallback(expected_app_id_.value_or(AppId()),
                         webapps::InstallResultCode::kInstallURLLoadFailed);
     return;
   }
@@ -500,19 +506,19 @@
   }
 
   if (result == WebAppUrlLoader::Result::kRedirectedUrlLoaded) {
-    CallInstallCallback(AppId(),
+    CallInstallCallback(expected_app_id_.value_or(AppId()),
                         webapps::InstallResultCode::kInstallURLRedirected);
     return;
   }
 
   if (result == WebAppUrlLoader::Result::kFailedPageTookTooLong) {
-    CallInstallCallback(AppId(),
+    CallInstallCallback(expected_app_id_.value_or(AppId()),
                         webapps::InstallResultCode::kInstallURLLoadTimeOut);
     return;
   }
 
   if (result != WebAppUrlLoader::Result::kUrlLoaded) {
-    CallInstallCallback(AppId(),
+    CallInstallCallback(expected_app_id_.value_or(AppId()),
                         webapps::InstallResultCode::kInstallURLLoadFailed);
     return;
   }
@@ -638,8 +644,9 @@
     log_entry_.LogExpectedAppIdError("OnDidPerformInstallableCheck",
                                      web_app_info->start_url.spec(), app_id,
                                      expected_app_id_.value());
-    CallInstallCallback(std::move(app_id),
+    CallInstallCallback(*expected_app_id_,
                         webapps::InstallResultCode::kExpectedAppIdCheckFailed);
+
     return;
   }
 
@@ -939,7 +946,8 @@
     DCHECK(background_installation_);
   }
 
-  if (!background_installation_) {
+  if (!background_installation_ &&
+      install_surface_ != webapps::WebappInstallSource::SUB_APP) {
     bool error = os_hooks_errors[OsHookType::kShortcuts];
     const bool can_reparent_tab =
         install_finalizer_->CanReparentTab(app_id, !error);
diff --git a/chrome/browser/web_applications/web_app_install_task.h b/chrome/browser/web_applications/web_app_install_task.h
index af93a4d..81b1b83 100644
--- a/chrome/browser/web_applications/web_app_install_task.h
+++ b/chrome/browser/web_applications/web_app_install_task.h
@@ -106,8 +106,10 @@
   // Load |install_url| and install SubApp. Posts |LoadUrl| task to |url_loader|
   // immediately. Doesn't memorize |url_loader| pointer.
   void LoadAndInstallSubAppFromURL(const GURL& install_url,
+                                   const AppId& expected_app_id,
                                    content::WebContents* contents,
                                    WebAppUrlLoader* url_loader,
+                                   WebAppInstallDialogCallback dialog_callback,
                                    OnceInstallCallback install_callback);
 
   // Starts a web app installation process using prefilled
diff --git a/chrome/browser/web_applications/web_app_install_task_unittest.cc b/chrome/browser/web_applications/web_app_install_task_unittest.cc
index 0fab3e1..226554d 100644
--- a/chrome/browser/web_applications/web_app_install_task_unittest.cc
+++ b/chrome/browser/web_applications/web_app_install_task_unittest.cc
@@ -1281,7 +1281,7 @@
     InstallResult result = InstallWebAppFromManifestWithFallbackAndGetResults();
     EXPECT_EQ(webapps::InstallResultCode::kExpectedAppIdCheckFailed,
               result.code);
-    EXPECT_EQ(app_id2, result.app_id);
+    EXPECT_EQ(app_id1, result.app_id);
     EXPECT_FALSE(registrar().GetAppById(app_id2));
   }
 }
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt
index f7def3cc..1123ab7 100644
--- a/chrome/build/linux.pgo.txt
+++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@
-chrome-linux-main-1654581586-e8210852cb5e969bb0b5175d48ba6840166b8937.profdata
+chrome-linux-main-1654603015-199fdfb58f98954b170b12d533b2673f3f633812.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt
index 679054d8..436deaf 100644
--- a/chrome/build/mac-arm.pgo.txt
+++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@
-chrome-mac-arm-main-1654538240-ba6a77d553b8e480434013b2b12cc5fae36cde95.profdata
+chrome-mac-arm-main-1654603015-6f408f81ff4e3a2bd7f0b1ff6cb06d566263f531.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index eb8a1ea..26db89b 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-main-1654581586-5182d8eb7e1a3dad1753e22d457cf63a3d9fe7f6.profdata
+chrome-mac-main-1654603015-d9dad202fdaa1e4462fed9ca9139098fbb6bc795.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 3cc5fda..b2c1040 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-main-1654581586-83214eea8baba38ed1f5edcb361ce3e1a5cb5b61.profdata
+chrome-win32-main-1654603015-9126bc929470ecf8c6caa947e84bbb43d4ba145a.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index 1fa3c3a..0611b3f 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-main-1654592135-f1b3023cd582b1a85f9043f26713840c0ce63779.profdata
+chrome-win64-main-1654603015-311860ed5734faa04dcf0c94724c3f0555f21f4e.profdata
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
index e8eb321..1a1a2c6 100644
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -325,6 +325,8 @@
 // Causes Chrome to initiate an installation flow for the given app.
 const char kInstallChromeApp[] = "install-chrome-app";
 
+const char kInstallIsolatedAppsAtStartup[] = "install-isolated-apps-at-startup";
+
 // Marks a renderer as an Instant process.
 const char kInstantProcess[] = "instant-process";
 
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
index 94df1c84..ea5b834 100644
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -111,6 +111,7 @@
 extern const char kIncognito[];
 extern const char kInstallAutogeneratedTheme[];
 extern const char kInstallChromeApp[];
+extern const char kInstallIsolatedAppsAtStartup[];
 extern const char kInstantProcess[];
 extern const char kKeepAliveForTest[];
 extern const char kKioskMode[];
diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
index 6731b459..dad88d3 100644
--- a/chrome/common/webui_url_constants.cc
+++ b/chrome/common/webui_url_constants.cc
@@ -33,7 +33,7 @@
 const char kChromeUIAppLauncherPageHost[] = "apps";
 const char kChromeUIAppsURL[] = "chrome://apps/";
 const char kChromeUIAppsWithDeprecationDialogURL[] =
-    "chrome://apps?showDeletionDialog";
+    "chrome://apps?showDeletionDialog=";
 const char kChromeUIAppsWithForceInstalledDeprecationDialogURL[] =
     "chrome://apps?showForceInstallDialog=";
 const char kChromeUIAutofillInternalsHost[] = "autofill-internals";
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index a7148d5d..4dad2c9 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -1245,6 +1245,7 @@
       "//components/certificate_transparency:proto",
       "//components/commerce/core:commerce_heuristics_data",
       "//components/commerce/core:feature_list",
+      "//components/component_updater/installer_policies:installer_policies_no_content_deps",
       "//components/constrained_window",
       "//components/content_settings/browser",
       "//components/content_settings/common:mojom",
@@ -5034,7 +5035,6 @@
     "../browser/component_updater/pki_metadata_component_installer_unittest.cc",
     "../browser/component_updater/subresource_filter_component_installer_unittest.cc",
     "../browser/component_updater/trust_token_key_commitments_component_installer_unittest.cc",
-    "../browser/component_updater/url_param_classification_component_installer_unittest.cc",
     "../browser/content_index/content_index_provider_unittest.cc",
     "../browser/content_settings/content_settings_default_provider_unittest.cc",
     "../browser/content_settings/content_settings_mock_observer.cc",
@@ -7863,9 +7863,6 @@
         "//chrome/browser/chromeos/extensions/telemetry/api:unit_tests",
         "//chrome/common/chromeos/extensions",
         "//chromeos/dbus/image_burner",
-        "//content/public/browser",
-        "//net",
-        "//net:test_support",
       ]
     } else {
       sources += [
diff --git a/chrome/test/data/webui/whats_new/whats_new_app_test.ts b/chrome/test/data/webui/whats_new/whats_new_app_test.ts
index 317efc8..0fcdca5 100644
--- a/chrome/test/data/webui/whats_new/whats_new_app_test.ts
+++ b/chrome/test/data/webui/whats_new/whats_new_app_test.ts
@@ -7,7 +7,6 @@
 import {CommandHandlerRemote} from 'chrome://resources/js/browser_command/browser_command.mojom-webui.js';
 import {BrowserCommandProxy} from 'chrome://resources/js/browser_command/browser_command_proxy.js';
 import {isChromeOS} from 'chrome://resources/js/cr.m.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 import {assertEquals, assertTrue} from 'chrome://webui-test/chai_assert.js';
 import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
 import {eventToPromise, flushTasks} from 'chrome://webui-test/test_util.js';
@@ -44,7 +43,6 @@
   });
 
   test('with query parameters', async () => {
-    loadTimeData.overrideValues({'showFeedbackButton': true});
     const proxy = new TestWhatsNewProxy(whatsNewURL);
     WhatsNewProxyImpl.setInstance(proxy);
     window.history.replaceState({}, '', '?auto=true');
@@ -58,13 +56,11 @@
     assertTrue(!!iframe);
     // iframe has latest=true URL query parameter except on CrOS
     assertEquals(
-        whatsNewURL + (isChromeOS ? '?latest=false' : '?latest=true') +
-            '&feedback=true',
+        whatsNewURL + (isChromeOS ? '?latest=false' : '?latest=true'),
         iframe.src);
   });
 
   test('with version as query parameter', async () => {
-    loadTimeData.overrideValues({'showFeedbackButton': true});
     const proxy = new TestWhatsNewProxy(whatsNewURL + '?version=m98');
     WhatsNewProxyImpl.setInstance(proxy);
     window.history.replaceState({}, '', '?auto=true');
@@ -79,12 +75,11 @@
     // iframe has latest=true URL query parameter except on CrOS
     assertEquals(
         whatsNewURL + '?version=m98' +
-            (isChromeOS ? '&latest=false' : '&latest=true') + '&feedback=true',
+            (isChromeOS ? '&latest=false' : '&latest=true'),
         iframe.src);
   });
 
   test('no query parameters', async () => {
-    loadTimeData.overrideValues({'showFeedbackButton': false});
     const proxy = new TestWhatsNewProxy(whatsNewURL);
     WhatsNewProxyImpl.setInstance(proxy);
     window.history.replaceState({}, '', '/');
@@ -96,7 +91,7 @@
     const iframe =
         whatsNewApp.shadowRoot!.querySelector<HTMLIFrameElement>('#content');
     assertTrue(!!iframe);
-    assertEquals(whatsNewURL + '?latest=false&feedback=false', iframe.src);
+    assertEquals(whatsNewURL + '?latest=false', iframe.src);
   });
 
   test('with command', async () => {
diff --git a/chrome/updater/BUILD.gn b/chrome/updater/BUILD.gn
index be69c3b5..f200996 100644
--- a/chrome/updater/BUILD.gn
+++ b/chrome/updater/BUILD.gn
@@ -823,10 +823,16 @@
     ]
 
     if (is_mac) {
-      data_deps = [ "//chrome/updater/mac:updater_bundle_test" ]
+      data_deps = [
+        "//chrome/updater/mac:updater_bundle_test",
+        "//third_party/updater:old_updater",
+      ]
     }
     if (is_win) {
-      data_deps = [ ":test_service_files" ]
+      data_deps = [
+        ":test_service_files",
+        "//third_party/updater:old_updater",
+      ]
     }
   }
 
@@ -849,10 +855,16 @@
 
     data_deps = [ ":updater_integration_tests_helper" ]
     if (is_mac) {
-      data_deps += [ "//chrome/updater/mac:updater_bundle_test" ]
+      data_deps += [
+        "//chrome/updater/mac:updater_bundle_test",
+        "//third_party/updater:old_updater",
+      ]
     }
     if (is_win) {
-      data_deps += [ ":test_service_files" ]
+      data_deps += [
+        ":test_service_files",
+        "//third_party/updater:old_updater",
+      ]
     }
   }
 
diff --git a/chrome/updater/test/integration_tests_mac.mm b/chrome/updater/test/integration_tests_mac.mm
index f8e5212..d1d1d780 100644
--- a/chrome/updater/test/integration_tests_mac.mm
+++ b/chrome/updater/test/integration_tests_mac.mm
@@ -331,10 +331,9 @@
 }
 
 void SetupRealUpdaterLowerVersion(UpdaterScope scope) {
-  base::FilePath source_path;
-  ASSERT_TRUE(base::PathService::Get(base::DIR_SOURCE_ROOT, &source_path));
-  base::FilePath old_updater_path =
-      source_path.Append("third_party").Append("updater");
+  base::FilePath exe_path;
+  ASSERT_TRUE(base::PathService::Get(base::DIR_EXE, &exe_path));
+  base::FilePath old_updater_path = exe_path.Append("old_updater");
 #if BUILDFLAG(CHROMIUM_BRANDING)
 #if defined(ARCH_CPU_ARM64)
   old_updater_path =
diff --git a/chrome/updater/test/integration_tests_win.cc b/chrome/updater/test/integration_tests_win.cc
index 1363d6c..8241d55 100644
--- a/chrome/updater/test/integration_tests_win.cc
+++ b/chrome/updater/test/integration_tests_win.cc
@@ -1005,11 +1005,10 @@
 }
 
 void SetupRealUpdaterLowerVersion(UpdaterScope scope) {
-  base::FilePath source_path;
-  ASSERT_TRUE(base::PathService::Get(base::DIR_SOURCE_ROOT, &source_path));
+  base::FilePath exe_path;
+  ASSERT_TRUE(base::PathService::Get(base::DIR_EXE, &exe_path));
   base::FilePath old_updater_path =
-      source_path.Append(FILE_PATH_LITERAL("third_party"))
-          .Append(FILE_PATH_LITERAL("updater"));
+      exe_path.Append(FILE_PATH_LITERAL("old_updater"));
 #if BUILDFLAG(CHROMIUM_BRANDING)
 #if defined(ARCH_CPU_X86_64)
   old_updater_path =
diff --git a/chromecast/browser/extensions/api/tts/tts_extension_api.cc b/chromecast/browser/extensions/api/tts/tts_extension_api.cc
index be7da11..7e16671 100644
--- a/chromecast/browser/extensions/api/tts/tts_extension_api.cc
+++ b/chromecast/browser/extensions/api/tts/tts_extension_api.cc
@@ -163,30 +163,29 @@
     return RespondNow(Error(constants::kErrorUtteranceTooLong));
   }
 
-  std::unique_ptr<base::DictionaryValue> options(new base::DictionaryValue());
-  if (args().size() >= 2 && args()[1].is_dict()) {
-    const base::DictionaryValue& temp_options =
-        base::Value::AsDictionaryValue(args()[1]);
-    options.reset(temp_options.DeepCopy());
-  }
+  base::Value::Dict options;
+  if (args().size() >= 2 && args()[1].is_dict())
+    options = args()[1].GetDict().Clone();
 
   std::string voice_name;
-  if (options->HasKey(constants::kVoiceNameKey)) {
-    EXTENSION_FUNCTION_VALIDATE(
-        options->GetString(constants::kVoiceNameKey, &voice_name));
+  if (base::Value* voice_name_value = options.Find(constants::kVoiceNameKey)) {
+    EXTENSION_FUNCTION_VALIDATE(voice_name_value->is_string());
+    voice_name = voice_name_value->GetString();
   }
 
   std::string lang;
-  if (options->HasKey(constants::kLangKey))
-    EXTENSION_FUNCTION_VALIDATE(options->GetString(constants::kLangKey, &lang));
+  if (base::Value* lang_value = options.Find(constants::kLangKey)) {
+    EXTENSION_FUNCTION_VALIDATE(lang_value->is_string());
+    lang = lang_value->GetString();
+  }
   if (!lang.empty() && !l10n_util::IsValidLocaleSyntax(lang)) {
     return RespondNow(Error(constants::kErrorInvalidLang));
   }
 
   double rate = blink::mojom::kSpeechSynthesisDoublePrefNotSet;
-  if (options->HasKey(constants::kRateKey)) {
+  if (options.contains(constants::kRateKey)) {
     absl::optional<double> rate_option =
-        options->FindDoubleKey(constants::kRateKey);
+        options.FindDouble(constants::kRateKey);
     EXTENSION_FUNCTION_VALIDATE(rate_option);
     if (rate_option)
       rate = *rate_option;
@@ -196,9 +195,9 @@
   }
 
   double pitch = blink::mojom::kSpeechSynthesisDoublePrefNotSet;
-  if (options->HasKey(constants::kPitchKey)) {
+  if (options.contains(constants::kPitchKey)) {
     absl::optional<double> pitch_option =
-        options->FindDoubleKey(constants::kPitchKey);
+        options.FindDouble(constants::kPitchKey);
     EXTENSION_FUNCTION_VALIDATE(pitch_option);
     if (pitch_option)
       pitch = *pitch_option;
@@ -208,9 +207,9 @@
   }
 
   double volume = blink::mojom::kSpeechSynthesisDoublePrefNotSet;
-  if (options->HasKey(constants::kVolumeKey)) {
+  if (options.contains(constants::kVolumeKey)) {
     absl::optional<double> volume_option =
-        options->FindDoubleKey(constants::kVolumeKey);
+        options.FindDouble(constants::kVolumeKey);
     EXTENSION_FUNCTION_VALIDATE(volume_option);
     if (volume_option)
       volume = *volume_option;
@@ -219,18 +218,17 @@
     }
   }
 
-  bool can_enqueue =
-      options->FindBoolKey(constants::kEnqueueKey).value_or(false);
-  if (base::Value* value = options->FindKey(constants::kEnqueueKey)) {
+  bool can_enqueue = options.FindBool(constants::kEnqueueKey).value_or(false);
+  if (base::Value* value = options.Find(constants::kEnqueueKey)) {
     EXTENSION_FUNCTION_VALIDATE(value->is_bool());
   }
 
   std::set<content::TtsEventType> required_event_types;
-  if (options->HasKey(constants::kRequiredEventTypesKey)) {
-    const base::Value* list =
-        options->FindListKey(constants::kRequiredEventTypesKey);
+  if (options.contains(constants::kRequiredEventTypesKey)) {
+    const base::Value::List* list =
+        options.FindList(constants::kRequiredEventTypesKey);
     EXTENSION_FUNCTION_VALIDATE(list);
-    for (const base::Value& i : list->GetListDeprecated()) {
+    for (const base::Value& i : *list) {
       const std::string* event_type = i.GetIfString();
       if (event_type) {
         required_event_types.insert(
@@ -240,11 +238,11 @@
   }
 
   std::set<content::TtsEventType> desired_event_types;
-  if (options->HasKey(constants::kDesiredEventTypesKey)) {
-    const base::Value* list =
-        options->FindListKey(constants::kDesiredEventTypesKey);
+  if (options.contains(constants::kDesiredEventTypesKey)) {
+    const base::Value::List* list =
+        options.FindList(constants::kDesiredEventTypesKey);
     EXTENSION_FUNCTION_VALIDATE(list);
-    for (const base::Value& i : list->GetListDeprecated()) {
+    for (const base::Value& i : *list) {
       const std::string* event_type = i.GetIfString();
       if (event_type)
         desired_event_types.insert(TtsEventTypeFromString(event_type->c_str()));
@@ -252,15 +250,17 @@
   }
 
   std::string voice_extension_id;
-  if (options->HasKey(constants::kExtensionIdKey)) {
-    EXTENSION_FUNCTION_VALIDATE(
-        options->GetString(constants::kExtensionIdKey, &voice_extension_id));
+  if (base::Value* voice_extension_id_value =
+          options.Find(constants::kExtensionIdKey)) {
+    EXTENSION_FUNCTION_VALIDATE(voice_extension_id_value->is_string());
+    voice_extension_id = voice_extension_id_value->GetString();
   }
 
   int src_id = -1;
-  if (options->HasKey(constants::kSrcIdKey)) {
-    EXTENSION_FUNCTION_VALIDATE(
-        options->GetInteger(constants::kSrcIdKey, &src_id));
+  if (options.contains(constants::kSrcIdKey)) {
+    absl::optional<int> srd_id_option = options.FindInt(constants::kSrcIdKey);
+    EXTENSION_FUNCTION_VALIDATE(srd_id_option);
+    src_id = *srd_id_option;
   }
 
   // If we got this far, the arguments were all in the valid format, so
@@ -281,7 +281,7 @@
   utterance->SetRequiredEventTypes(required_event_types);
   utterance->SetDesiredEventTypes(desired_event_types);
   utterance->SetEngineId(voice_extension_id);
-  utterance->SetOptions(options.get());
+  utterance->SetOptions(std::move(options));
   utterance->SetEventDelegate(new TtsExtensionEventHandler(extension_id()));
 
   content::TtsController* controller = content::TtsController::GetInstance();
diff --git a/chromecast/cast_core/test/cast_core_screenshot_test.py b/chromecast/cast_core/test/cast_core_screenshot_test.py
index b14cb96..667dd5a 100644
--- a/chromecast/cast_core/test/cast_core_screenshot_test.py
+++ b/chromecast/cast_core/test/cast_core_screenshot_test.py
@@ -30,7 +30,6 @@
     cls._cast_receiver_to_create.SetCastSender(cls.tab)
     cls.StartCastReceiver()
     cls.SetStaticServerDirs([os.path.join(os.path.dirname(__file__), 'data')])
-    cls.receiver_tab = cls.cast_receiver.tabs[0]
 
   @classmethod
   def StartCastReceiver(cls):
@@ -55,6 +54,10 @@
       browser_options: Browser options object for the browser we want to test.
     """
     cls._browser_options = browser_options
+    if browser_options.local_cast:
+      cls._local_cast = True
+    else:
+      cls._local_cast = False
     cls._browser_to_create = browser_finder.FindBrowser(browser_options)
     if not cls._browser_to_create:
       raise browser_finder_exceptions.BrowserFinderException(
@@ -102,7 +105,34 @@
     finally:
       cls._cast_receiver_to_create.CleanUpEnvironment()
 
-  def TestScreenshot(self):
+  def TestFling(self):
+    """Fling a Youtube video to the Cast receiver and confirm that rendering
+    is correctly performed via screenshot."""
+    self.cast_receiver._browser_backend.FlingVideo(
+        'https://youtu.be/zBeWNaNWtIM')
+    self.receiver_tab = self.cast_receiver.tabs[0]
+    screenshot = self.receiver_tab.Screenshot(10)
+    logging.warning(screenshot)
+    pixel_value = image_util.GetPixelColor(screenshot, 100, 100)
+
+    if self._local_cast:
+      # For Cast Core on Linux, no rendering is available yet so the screen
+      # should display the Youtube icon.
+      videoRGB = rgba_color.RgbaColor(40, 40, 40)
+    else:
+      videoRGB = rgba_color.RgbaColor(37, 150, 190)
+
+    # Allow for off-by-one errors due to color conversion.
+    tolerance = 1
+
+    if not videoRGB.IsEqual(pixel_value, tolerance):
+      error_message = ('Color mismatch : expected (%d, %d, %d), ' +
+                       'got (%d, %d, %d)') % (
+                           videoRGB.r, videoRGB.g, videoRGB.b,
+                           pixel_value.r, pixel_value.g, pixel_value.b)
+      self.fail(error_message)
+
+  def TestMirroring(self):
     """Draw a square of random color on the sending tab, take a screenshot on
     the Cast receiver and confirm that the colors match."""
 
@@ -115,19 +145,23 @@
                            red=canvasRGB.r,
                            green=canvasRGB.g,
                            blue=canvasRGB.b)
+    self.cast_receiver._browser_backend.MirrorTab()
+    self.receiver_tab = self.cast_receiver.tabs[0]
 
-    screenshot = self.receiver_tab.Screenshot(10)
-    pixel_value = image_util.GetPixelColor(screenshot, 0, 0)
+    ### TODO(crbug/1320089): Investigate issues grabbing a screenshot
+    ### with tab mirroring.
+    # screenshot = self.receiver_tab.Screenshot(10)
+    # pixel_value = image_util.GetPixelColor(screenshot, 0, 0)
 
-    # Allow for off-by-one errors due to color conversion.
-    tolerance = 1
+    # # Allow for off-by-one errors due to color conversion.
+    # tolerance = 1
 
-    if not canvasRGB.IsEqual(pixel_value, tolerance):
-      error_message = ('Color mismatch : expected (%d, %d, %d), ' +
-                       'got (%d, %d, %d)') % (
-                           canvasRGB.r, canvasRGB.g, canvasRGB.b,
-                           pixel_value.r, pixel_value.g, pixel_value.b)
-      self.fail(error_message)
+    # if not canvasRGB.IsEqual(pixel_value, tolerance):
+    #   error_message = ('Color mismatch : expected (%d, %d, %d), ' +
+    #                    'got (%d, %d, %d)') % (
+    #                        canvasRGB.r, canvasRGB.g, canvasRGB.b,
+    #                        pixel_value.r, pixel_value.g, pixel_value.b)
+    #   self.fail(error_message)
 
 
 def load_tests(loader, tests, pattern):
diff --git a/chromecast/media/cma/backend/cplay/cplay.cc b/chromecast/media/cma/backend/cplay/cplay.cc
index 037042d..4a2e5f6 100644
--- a/chromecast/media/cma/backend/cplay/cplay.cc
+++ b/chromecast/media/cma/backend/cplay/cplay.cc
@@ -121,6 +121,7 @@
   AudioContentType focus_type() override { return AudioContentType::kMedia; }
   int desired_read_size() override { return kReadSize; }
   int playout_channel() override { return -1; }
+  bool require_clock_rate_simulation() const override { return false; }
 
   void InitializeAudioPlayback(
       int read_size,
diff --git a/chromeos/chromeos_strings.grd b/chromeos/chromeos_strings.grd
index c4ac513..eb41270 100644
--- a/chromeos/chromeos_strings.grd
+++ b/chromeos/chromeos_strings.grd
@@ -3342,7 +3342,7 @@
       <message name="IDS_FEEDBACK_TOOL_NO_MATCHED_RESULTS" translateable="false" desc="Label for help content when there are no matched results.">
         No matched results, see popular help content
       </message>
-      <message name="IDS_FEEDBACK_TOOL_PAGE_TITLE" translateable="false" desc="Label showing the title of the feedback tool before a report has been sent">
+      <message name="IDS_FEEDBACK_TOOL_PAGE_TITLE" desc="Label showing the title of the feedback tool before a report has been sent">
         Send feedback
       </message>
       <message name="IDS_FEEDBACK_TOOL_POPULAR_HELP_CONTENT" translateable="false" desc="Label for help content when there is no query entered yet.">
@@ -3357,7 +3357,7 @@
       <message name="IDS_FEEDBACK_TOOL_FEEDBACK_HELP_LINK_LABEL" desc="The text used for the link that navigates to the feedback help webpage.">
         Tips on writing feedback
       </message>
-      <message name="IDS_FEEDBACK_TOOL_DESCRIPTION_HINT" translateable="false" desc="Label for the hint in description textarea">
+      <message name="IDS_FEEDBACK_TOOL_DESCRIPTION_HINT" desc="Label for the hint in description textarea">
         Share your feedback or describe your issue. If possible, include steps to reproduce your issue.
       </message>
       <!-- End of Feedback Tool -->
diff --git a/chromeos/chromeos_strings_grd/IDS_FEEDBACK_TOOL_DESCRIPTION_HINT.png.sha1 b/chromeos/chromeos_strings_grd/IDS_FEEDBACK_TOOL_DESCRIPTION_HINT.png.sha1
new file mode 100644
index 0000000..3e31bda
--- /dev/null
+++ b/chromeos/chromeos_strings_grd/IDS_FEEDBACK_TOOL_DESCRIPTION_HINT.png.sha1
@@ -0,0 +1 @@
+ddbe227475850ee74139c660e42a0343db67f4dd
\ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_FEEDBACK_TOOL_PAGE_TITLE.png.sha1 b/chromeos/chromeos_strings_grd/IDS_FEEDBACK_TOOL_PAGE_TITLE.png.sha1
new file mode 100644
index 0000000..3e31bda
--- /dev/null
+++ b/chromeos/chromeos_strings_grd/IDS_FEEDBACK_TOOL_PAGE_TITLE.png.sha1
@@ -0,0 +1 @@
+ddbe227475850ee74139c660e42a0343db67f4dd
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_af.xtb b/chromeos/strings/chromeos_strings_af.xtb
index 6a19bea..bec810ab 100644
--- a/chromeos/strings/chromeos_strings_af.xtb
+++ b/chromeos/strings/chromeos_strings_af.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Stel as muurpapier</translation>
 <translation id="1578784163189013834">Kies sluimerskermagtergrond</translation>
 <translation id="1615335640928990664">Datagebruik sedert <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Laat loop laaitoets</translation>
 <translation id="1631385268983122904">Moet die toestel nog nie weer inmekaarsit nie</translation>
 <translation id="1639239467298939599">Laai tans</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Klik Volgende om met die opdatering voort te gaan.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Sekuriteit</translation>
+<translation id="3441653493275994384">Skerm</translation>
 <translation id="3456078764689556234">Het bladsy <ph name="PRINTED_PAGES" /> van <ph name="TOTAL_PAGES" /> gedruk.</translation>
 <translation id="345898999683440380">Skandeer tans bladsy <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% voltooi.</translation>
 <translation id="3459509316159669723">Druk tans</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Verander muurpapier</translation>
 <translation id="360565022852130722">Wi-Fi-netwerk is met swak protokol WEP 802.1x beveilig</translation>
 <translation id="3606583719724308068">Hoë traagheid na HTTPS-webwerwe</translation>
+<translation id="3616113530831147358">Oudio</translation>
 <translation id="3621202678540785336">Invoer</translation>
 <translation id="3632579075709132555">Privaatheidskermwisselaar</translation>
 <translation id="3643810137582748570">Slaan kalibrering oor</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Voer RMA-bedienerontsluit uit</translation>
 <translation id="4145784616224233563">HTTP-brandmuur</translation>
 <translation id="4147897805161313378">Google Foto's</translation>
+<translation id="4150201353443180367">Vertoon</translation>
 <translation id="4155551848414053977">Maak seker dat die skandeerder aangeskakel is en via jou netwerk of 'n direkte verbinding beskikbaar is</translation>
 <translation id="4159784952369912983">Pers</translation>
 <translation id="4170180284036919717">Neem 'n foto</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Temperatuur</translation>
 <translation id="7977800524392185497">Gaan na Instellings om by 'n <ph name="NETWORK_NAME" />-netwerk aan te sluit</translation>
 <translation id="7978412674231730200">Private sleutel</translation>
+<translation id="7982789257301363584">Netwerk</translation>
 <translation id="7994702968232966508">EAP-metode</translation>
 <translation id="802154636333426148">Kon nie aflaai nie</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Tans gekoppel</translation>
 <translation id="8845001906332463065">Kry hulp</translation>
 <translation id="8855781559874488009">Kan nie deur brandmuur aan HTTP-webwerwe koppel nie</translation>
+<translation id="885701979325669005">Berging</translation>
 <translation id="8863170912498892583">Aktiveer donkertema</translation>
 <translation id="8863888432376731307">Kry die <ph name="INTENT" /> vir "<ph name="QUERY" />" en meer</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_am.xtb b/chromeos/strings/chromeos_strings_am.xtb
index e601b8c..746f531 100644
--- a/chromeos/strings/chromeos_strings_am.xtb
+++ b/chromeos/strings/chromeos_strings_am.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">እንደ ልጣፍ አዘጋጅ</translation>
 <translation id="1578784163189013834">የማያ ገጽ ማቆያ ዳራን ይምረጡ</translation>
 <translation id="1615335640928990664">የውሂብ አጠቃቀም ከ<ph name="FRIENDLY_DATE" /> ጀምሮ</translation>
+<translation id="1620510694547887537">ካሜራ</translation>
 <translation id="1621067168122174824">የባትሪ መሙላት ሙከራን አሂድ</translation>
 <translation id="1631385268983122904">መሣሪያውን አሁንም መልሰው አይሰካኩት</translation>
 <translation id="1639239467298939599">በመጫን ላይ</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">በዝማኔው ለመቀጠል ቀጣይ የሚለውን ጠቅ ያድርጉ።</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">የደህንነት ጥበቃ</translation>
+<translation id="3441653493275994384">ማያ ገጽ</translation>
 <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> የታተመ ገጽ ከ <ph name="TOTAL_PAGES" /> ዉስጥ።</translation>
 <translation id="345898999683440380">ገጽ <ph name="PAGE_NUM" />ን በመቃኘት ላይ። <ph name="PERCENTAGE_VALUE" />% ተጠናቅቋል።</translation>
 <translation id="3459509316159669723">ማተም</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">ልጣፍ ይለውጡ</translation>
 <translation id="360565022852130722">የWiFi አውታረ መረብ ደህንነት በደካማ ፕሮቶኮል WEP 802.1x የተጠበቀ ነው</translation>
 <translation id="3606583719724308068">ለኤችቲቲፒኤስ ድር ጣቢያዎች ከፍተኛ የስርዓተ ምላሽ ጊዜ</translation>
+<translation id="3616113530831147358">ድምጽ</translation>
 <translation id="3621202678540785336">ግብዓት</translation>
 <translation id="3632579075709132555">የግላዊነት ማያ ገጽ መቀየሪያ</translation>
 <translation id="3643810137582748570">ማስተካከልን ዝለል</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">የአርኤምኤ አገልጋይ ክፈትን ያከናውኑ</translation>
 <translation id="4145784616224233563">የHTTP ኬላ</translation>
 <translation id="4147897805161313378">Google ፎቶዎች</translation>
+<translation id="4150201353443180367">ማሳያ</translation>
 <translation id="4155551848414053977">ቃኚው መብራቱን እና በእርስዎ አውታረ መረብ ወይም በቀጥታ ግንኙነት በኩል የሚገኝ መሆኑን ያረጋግጡ</translation>
 <translation id="4159784952369912983">ሐምራዊ</translation>
 <translation id="4170180284036919717">ፎቶ አንሳ</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">የሙቀት መጠን</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> አውታረ መረብን ለመቀላቀል ወደ ቅንብሮች ይሂዱ</translation>
 <translation id="7978412674231730200">የግል ቁልፍ</translation>
+<translation id="7982789257301363584">አውታረ መረብ</translation>
 <translation id="7994702968232966508">የEAP ስልት</translation>
 <translation id="802154636333426148">ማውረድ አልተሳካም</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">አሁን ላይ ተገናኝቷል</translation>
 <translation id="8845001906332463065">እገዛ ያግኙ</translation>
 <translation id="8855781559874488009">በኬላ በኩል ወደ ኤችቲቲፒ ድር ጣቢያዎች መገናኘት አይቻልም</translation>
+<translation id="885701979325669005">ማከማቻ</translation>
 <translation id="8863170912498892583">ጥቁር ገጽታ አንቃ</translation>
 <translation id="8863888432376731307"><ph name="INTENT" />ን ለ«<ph name="QUERY" />» እና ተጨማሪ ያግኙ</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_ar.xtb b/chromeos/strings/chromeos_strings_ar.xtb
index 9994daa..a4a48d5 100644
--- a/chromeos/strings/chromeos_strings_ar.xtb
+++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">تحديد كخلفية</translation>
 <translation id="1578784163189013834">اختيار خلفية شاشة التوقف</translation>
 <translation id="1615335640928990664">عرض معدل استخدام البيانات منذ تاريخ <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">الكاميرا</translation>
 <translation id="1621067168122174824">تشغيل اختبار فحص البطارية</translation>
 <translation id="1631385268983122904">لا يمكنك تجميع الجهاز بعد.</translation>
 <translation id="1639239467298939599">جارٍ التحميل.</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">لمواصلة عملية التحديث، انقر على "التالي".</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">أمن المعلومات</translation>
+<translation id="3441653493275994384">الشاشة</translation>
 <translation id="3456078764689556234">عدد الصفحات التي تمت طباعتها: <ph name="PRINTED_PAGES" /> من أصل <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">جارٍ المسح ضوئيًا للصفحة رقم <ph name="PAGE_NUM" />. اكتمل المسح الضوئي بنسبة <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">الطباعة</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">تغيير الخلفية</translation>
 <translation id="360565022852130722">‏شبكة Wi-Fi مؤمَّنة باستخدام بروتوكول WEP 802.1x ضعيف.</translation>
 <translation id="3606583719724308068">‏وقت الاستجابة طويل في المواقع الإلكترونية التي تستخدم بروتوكول HTTPS</translation>
+<translation id="3616113530831147358">المقاطع الصوتية</translation>
 <translation id="3621202678540785336">الإدخال</translation>
 <translation id="3632579075709132555">إيقاف/تفعيل شاشة الخصوصية</translation>
 <translation id="3643810137582748570">تخطّي المعايرة</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">‏إجراء عملية فتح قفل لخادم RMA</translation>
 <translation id="4145784616224233563">‏الجدار الناري لبروتوكل HTTP</translation>
 <translation id="4147897805161313378">‏صور Google‏‏</translation>
+<translation id="4150201353443180367">عرض</translation>
 <translation id="4155551848414053977">يُرجى التأكُّد من تشغيل الماسح الضوئي وتوفّره من خلال شبكتك أو الاتصال المباشر.</translation>
 <translation id="4159784952369912983">أرجواني</translation>
 <translation id="4170180284036919717">التقاط صورة</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">درجة الحرارة</translation>
 <translation id="7977800524392185497">للانضمام إلى شبكة <ph name="NETWORK_NAME" />، انتقِل إلى "الإعدادات".</translation>
 <translation id="7978412674231730200">مفتاح خاص</translation>
+<translation id="7982789257301363584">الشبكة</translation>
 <translation id="7994702968232966508">‏طريقة EAP</translation>
 <translation id="802154636333426148">تعذّر التنزيل</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">الأجهزة المتصلة حاليًا</translation>
 <translation id="8845001906332463065">الحصول على مساعدة</translation>
 <translation id="8855781559874488009">‏تعذَّر اجتياز الجدار الناري للاتصال بالمواقع الإلكترونية التي تستخدم بروتوكول HTTP.</translation>
+<translation id="885701979325669005">التخزين</translation>
 <translation id="8863170912498892583">تفعيل المظهر الداكن</translation>
 <translation id="8863888432376731307">الحصول على <ph name="INTENT" /> للطلب المتعلّق بـ "<ph name="QUERY" />" وغير ذلك</translation>
 <translation id="8868741746785112895">‏المعرّف الفريد العمومي (GUID)</translation>
diff --git a/chromeos/strings/chromeos_strings_as.xtb b/chromeos/strings/chromeos_strings_as.xtb
index 8633c4cc..65d2bd44 100644
--- a/chromeos/strings/chromeos_strings_as.xtb
+++ b/chromeos/strings/chromeos_strings_as.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">ৱালপেপাৰ হিচাপে ছেট কৰক</translation>
 <translation id="1578784163189013834">স্ক্ৰীন ছেভাৰৰ পটভূমি বাছনি কৰক</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" />ৰ পৰা হোৱা ডেটাৰ ব্যৱহাৰ</translation>
+<translation id="1620510694547887537">কেমেৰা</translation>
 <translation id="1621067168122174824">চাৰ্জ পৰীক্ষা চলাওক</translation>
 <translation id="1631385268983122904">এতিয়ালৈকে ডিভাইচটোৰ পিছফালটো একেলগে নাৰাখিব</translation>
 <translation id="1639239467298939599">ল'ড কৰি থকা হৈছে</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422"><ph name="FIRST_MANAGER" /> আৰু <ph name="SECOND_MANAGER" />এ পৰিচালনা কৰা</translation>
 <translation id="1726100011689679555">নাম সম্পর্কীয় ছার্ভাৰ</translation>
 <translation id="1731082422893354635">ব্লুটুথ টাচ্চপেড</translation>
+<translation id="1745577949879301685">প্ৰতিচ্ছবি ল’ড কৰিব পৰা নগ’ল। আপোনাৰ নেটৱৰ্ক সংযোগ পৰীক্ষা কৰক অথবা প্ৰতিচ্ছবিসমূহ পুনৰ ল’ড কৰিবলৈ চেষ্টা কৰক।</translation>
 <translation id="1751249301761991853">ব্যক্তিগত</translation>
 <translation id="1753496554272155572">ৱালপেপাৰৰ পূৰ্বদৰ্শনৰ পৰা বাহিৰ হওক</translation>
 <translation id="175763766237925754">ভাল (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">আপডে’টটো কাৰ্যকৰী কৰিবলৈ, পৰৱৰ্তীত টিপক।</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">সুৰক্ষা</translation>
+<translation id="3441653493275994384">স্ক্ৰীণ</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> খনৰ ভিতৰত <ph name="PRINTED_PAGES" /> নম্বৰৰ পৃষ্ঠাখন প্ৰিণ্ট কৰা হৈছে।</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" /> নম্বৰ পৃষ্ঠাখন স্কেন কৰি থকা হৈছে। <ph name="PERCENTAGE_VALUE" />% সম্পূৰ্ণ হ’ল।</translation>
 <translation id="3459509316159669723">প্ৰিণ্টিং</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">ৱালপেপাৰ সলনি কৰক</translation>
 <translation id="360565022852130722">ৱাই-ফাই নেটৱৰ্কটো দুৰ্বল প্ৰট’কল WEP 802.1xৰ দ্বাৰা সুৰক্ষিত</translation>
 <translation id="3606583719724308068">HTTPS ৱেবছাইটলৈ অধিক বিলম্বতা</translation>
+<translation id="3616113530831147358">অডিঅ’</translation>
 <translation id="3621202678540785336">ইনপুট</translation>
 <translation id="3632579075709132555">গোপনীয়তাৰ স্ক্ৰীন ট’গল কৰা</translation>
 <translation id="3643810137582748570">কেলিব্ৰে’শ্বন বাদ দিয়ক</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA ছাৰ্ভাৰ আনলক সম্পাদন কৰক</translation>
 <translation id="4145784616224233563">HTTPৰ ফায়াৰৱাল</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">ডিছপ্লে’</translation>
 <translation id="4155551848414053977">নিশ্চিত কৰক যে স্কেনাৰটো অন কৰা আছে আৰু আপোনাৰ নেটৱৰ্ক অথবা এটা পোনপটীয়া সংযোগৰ জৰিয়তে উপলব্ধ হৈ আছে</translation>
 <translation id="4159784952369912983">বেঙুনীয়া</translation>
 <translation id="4170180284036919717">এখন ফট’ তোলক</translation>
@@ -425,6 +430,7 @@
 <translation id="4915052247106771211">এইটোৱে ডিভাইচটো ফেক্টৰীৰ ছেটিঙলৈ ৰিছেট কৰিব (পাৱাৰৱাশ্ব)।</translation>
 <translation id="4917385247580444890">শক্তিশালী</translation>
 <translation id="4917889632206600977">বন্ধ হৈছে - কাগজ শেষ হৈছে</translation>
+<translation id="491791267030419270">মতামত লিখাৰ বিষয়ে পৰামৰ্শ</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> ছেকেণ্ডত <ph name="RATE" /> চাৰ্জ হৈছে।</translation>
 <translation id="4930320165497208503">কোনো সংযোগ ছেট আপ কৰিবলৈ অথবা আপডে’ট কৰিবলৈ, <ph name="BEGIN_LINK" />ছেটিঙ<ph name="END_LINK" />লৈ যাওক।</translation>
 <translation id="4932733599132424254">তাৰিখ</translation>
@@ -745,6 +751,7 @@
 <translation id="7960831585769876809">তাপমান</translation>
 <translation id="7977800524392185497">এটা <ph name="NETWORK_NAME" /> নেটৱৰ্কত যোগদান কৰিবলৈ, ছেটিঙলৈ যাওক</translation>
 <translation id="7978412674231730200">ব্যক্তিগত কী</translation>
+<translation id="7982789257301363584">নেটৱৰ্ক</translation>
 <translation id="7994702968232966508">ই.এ.পি. পদ্ধতি</translation>
 <translation id="802154636333426148">ডাউনল’ড কৰিব পৰা নগ’ল</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +846,7 @@
 <translation id="8834539327799336565">বৰ্তমান সংযোজিত হৈ আছে</translation>
 <translation id="8845001906332463065">সহায় পাওক</translation>
 <translation id="8855781559874488009">ফায়াৰৱালৰ জৰিয়তে HTTP ৱেবছাইটসমূহৰ সৈতে সংযোগ কৰিব নোৱাৰি</translation>
+<translation id="885701979325669005">ষ্ট’ৰেজ</translation>
 <translation id="8863170912498892583">গাঢ় ৰঙৰ থীম সক্ষম কৰক</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />"ৰ বাবে <ph name="INTENT" /> আৰু বহুতো পাওক</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_az.xtb b/chromeos/strings/chromeos_strings_az.xtb
index 6cfa3249..f3d919c 100644
--- a/chromeos/strings/chromeos_strings_az.xtb
+++ b/chromeos/strings/chromeos_strings_az.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Divar kağızı kimi ayarlayın</translation>
 <translation id="1578784163189013834">Ekran qoruyucusu üçün arxa fon seçin</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> tarixindən bəri data istifadəsi</translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Şarj testini icra edin</translation>
 <translation id="1631385268983122904">Hələ batareyanı daxil etməyin</translation>
 <translation id="1639239467298939599">Yüklənir</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422"><ph name="FIRST_MANAGER" /> və <ph name="SECOND_MANAGER" /> tərəfindən idarə edilir</translation>
 <translation id="1726100011689679555">Ad serverləri</translation>
 <translation id="1731082422893354635">Bluetooth taçped</translation>
+<translation id="1745577949879301685">Şəkilləri yükləmək mümkün olmadı. Şəbəkə bağlantınızı yoxlayın və ya şəkilləri yenidən yükləməyə cəhd edin.</translation>
 <translation id="1751249301761991853">Şəxsi</translation>
 <translation id="1753496554272155572">Divar kağızı önizləməsindən çıxın</translation>
 <translation id="175763766237925754">Yaxşı (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">Güncəlləməyə keçmək üçün "Növbəti" seçiminə toxunun.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Təhlükəsizlik</translation>
+<translation id="3441653493275994384">Ekran</translation>
 <translation id="3456078764689556234"><ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /> səhifə çap edilib.</translation>
 <translation id="345898999683440380">Səhifə <ph name="PAGE_NUM" /> skanlanır. <ph name="PERCENTAGE_VALUE" />% tamamlanıb.</translation>
 <translation id="3459509316159669723">Çap edilir</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">Divar kağızını dəyişin</translation>
 <translation id="360565022852130722">WiFi şəbəkəsi zəif protokol WEP 802.1x ilə qorunur</translation>
 <translation id="3606583719724308068">HTTPS veb saytlarında yüksək gecikmə</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Daxiletmə</translation>
 <translation id="3632579075709132555">Məxfilik ekranı keçiricisi</translation>
 <translation id="3643810137582748570">Tənzimləməni keçin</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA Server Kiliddən Çıxarmasını icra edin</translation>
 <translation id="4145784616224233563">HTTP Qoruyucu divarı</translation>
 <translation id="4147897805161313378">Google Foto</translation>
+<translation id="4150201353443180367">Ekran</translation>
 <translation id="4155551848414053977">Skanerin aktiv olduğuna, şəbəkə və ya birbaşa qoşulma üzərindən əlçatan olduğuna əmin olun</translation>
 <translation id="4159784952369912983">Bənövşəyi</translation>
 <translation id="4170180284036919717">Foto çəkin</translation>
@@ -744,6 +749,7 @@
 <translation id="7960831585769876809">Temperatur</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> şəbəkəsinə qoşulmaq üçün Ayarlara keçin</translation>
 <translation id="7978412674231730200">Şəxsi açar</translation>
+<translation id="7982789257301363584">Şəbəkə</translation>
 <translation id="7994702968232966508">EAP üsulu</translation>
 <translation id="802154636333426148">Endirmə alınmadı</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -838,6 +844,7 @@
 <translation id="8834539327799336565">Hazırda qoşulub</translation>
 <translation id="8845001906332463065">Yardım alın</translation>
 <translation id="8855781559874488009">Alov divarı aktiv olduqda HTTP vebsaytlarına qoşulmaq olmur</translation>
+<translation id="885701979325669005">Yaddaş</translation>
 <translation id="8863170912498892583">Qaranlıq temanı aktiv edin</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" və daha çoxu üçün <ph name="INTENT" /> əldə edin</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_be.xtb b/chromeos/strings/chromeos_strings_be.xtb
index a051daac..39df0a7 100644
--- a/chromeos/strings/chromeos_strings_be.xtb
+++ b/chromeos/strings/chromeos_strings_be.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">Панэль запуску</translation>
 <translation id="1512982610995527443">Прылада завершыць працу праз 5 секунд</translation>
 <translation id="1522984060396982789">Рамонт выкананы. Можна завяршыць працу прылады або выканаць іншыя дзеянні.</translation>
+<translation id="1526389707933164996">Анімацыя застаўкі</translation>
 <translation id="152892567002884378">Павялічыць гучнасць</translation>
 <translation id="1555130319947370107">Сіні</translation>
 <translation id="155865706765934889">Сэнсарная панэль</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">Усталяваць як шпалеры</translation>
 <translation id="1578784163189013834">Выбраць фон застаўкі</translation>
 <translation id="1615335640928990664">Выкарыстанне трафіка з <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Камера</translation>
 <translation id="1621067168122174824">Выканаць праверку зарадкі</translation>
 <translation id="1631385268983122904">Пакуль што не збірайце прыладу</translation>
 <translation id="1639239467298939599">Ідзе загрузка</translation>
@@ -257,6 +259,7 @@
 <translation id="3413935475507503304">Каб працягнуць абнаўленне, націсніце "Далей".</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="3435738964857648380">Бяспека</translation>
+<translation id="3441653493275994384">Экран</translation>
 <translation id="3456078764689556234">Надрукавана старонка <ph name="PRINTED_PAGES" /> з <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Сканіруецца старонка <ph name="PAGE_NUM" />. Выканана <ph name="PERCENTAGE_VALUE" /> %.</translation>
 <translation id="3459509316159669723">Друк</translation>
@@ -279,6 +282,7 @@
 <translation id="3604713164406837697">Змяніць шпалеры</translation>
 <translation id="360565022852130722">Сетка Wi-Fi абаронена слабым пратаколам WEP 802.1x</translation>
 <translation id="3606583719724308068">Высокая затрымка на вэб-сайтах HTTPS</translation>
+<translation id="3616113530831147358">Аўдыя</translation>
 <translation id="3621202678540785336">Увод</translation>
 <translation id="3632579075709132555">Пераключэнне экрана прыватнасці</translation>
 <translation id="3643810137582748570">Прапусціць каліброўку</translation>
@@ -300,6 +304,7 @@
 <translation id="3858860766373142691">Назва</translation>
 <translation id="3865414814144988605">Раздзяляльнасць</translation>
 <translation id="387301095347517405">Колькасць поўных пройдзеных цыклаў зарадкі акумулятара</translation>
+<translation id="3885327323343477505">Змяніць застаўку</translation>
 <translation id="3923184630988645767">Выкарыстанне трафіка</translation>
 <translation id="3924044641767672375">Для спрашчэння працэсу рамонту рэкамендуем падключыцца да Wi-Fi. Ваша сетка будзе захавана.</translation>
 <translation id="3932043219784172185">Няма падключаных прылад</translation>
@@ -327,6 +332,7 @@
 <translation id="4140251671072434548">Выканайце серверную разблакіроўку RMA</translation>
 <translation id="4145784616224233563">Брандмаўар HTTP</translation>
 <translation id="4147897805161313378">Google Фота</translation>
+<translation id="4150201353443180367">Дысплэй</translation>
 <translation id="4155551848414053977">Упэўніцеся, што сканер уключаны і даступны праз вашу сетку або прамое падключэнне.</translation>
 <translation id="4159784952369912983">Фіялетавы</translation>
 <translation id="4170180284036919717">Зрабіць фота</translation>
@@ -418,6 +424,7 @@
 <translation id="4890353053343094602">Неадкладна задайце новы</translation>
 <translation id="4891842000192098784">Нагрузка</translation>
 <translation id="4897058166682006107">Узровень зараду акумулятара ў левым навушніку: <ph name="BATTERY_PERCENTAGE" />%.</translation>
+<translation id="4905998861748258752">Уключыце гэту функцыю, каб выбраць параметры застаўкі</translation>
 <translation id="4908030561598728899">Усталёўваецца ўбудаванае праграмнае забеспячэнне...</translation>
 <translation id="4915052247106771211">Налады прылады будуць скінуты да заводскіх значэнняў (з дапамогай Powerwash).</translation>
 <translation id="4917385247580444890">Моцны</translation>
@@ -742,6 +749,7 @@
 <translation id="7960831585769876809">Тэмпература</translation>
 <translation id="7977800524392185497">Каб падключыцца да сеткі <ph name="NETWORK_NAME" />, перайдзіце ў Налады</translation>
 <translation id="7978412674231730200">Закрыты ключ</translation>
+<translation id="7982789257301363584">Сетка</translation>
 <translation id="7994702968232966508">Метад EAP</translation>
 <translation id="802154636333426148">Збой спампоўкі</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -836,6 +844,7 @@
 <translation id="8834539327799336565">Падключаныя цяпер прылады</translation>
 <translation id="8845001906332463065">Атрымаць даведку</translation>
 <translation id="8855781559874488009">Не ўдалося падключыцца праз брандмаўар да вэб-сайтаў HTTP</translation>
+<translation id="885701979325669005">Сховішча</translation>
 <translation id="8863170912498892583">Уключыць цёмную тэму</translation>
 <translation id="8863888432376731307">Атрымайце <ph name="INTENT" /> і дадатковую інфармацыю ў адказ на запыт "<ph name="QUERY" />"</translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -861,6 +870,7 @@
 <translation id="8997710128084572139">Узровень зараду акумулятара прылады: <ph name="BATTERY_PERCENTAGE" />%.</translation>
 <translation id="9003704114456258138">Частата</translation>
 <translation id="9025198690966128418">Выкарыстоўваць як асабістую прыладу</translation>
+<translation id="9028832514430399253">Актывуйце пераключальнік для выбару варыянтаў застаўкі</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">DNS-пераўтварэнне мае вялікую затрымку</translation>
 <translation id="9063121522582193837">Не ўдалося адкалібраваць некаторыя кампаненты</translation>
diff --git a/chromeos/strings/chromeos_strings_bg.xtb b/chromeos/strings/chromeos_strings_bg.xtb
index 4e3bfe9..c879c7d 100644
--- a/chromeos/strings/chromeos_strings_bg.xtb
+++ b/chromeos/strings/chromeos_strings_bg.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Задаване като тапет</translation>
 <translation id="1578784163189013834">Избиране на фон за скрийнсейвъра</translation>
 <translation id="1615335640928990664">Пренос на данни от <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Камера</translation>
 <translation id="1621067168122174824">Стартиране на тест на зареждането</translation>
 <translation id="1631385268983122904">Още не сглобявайте устройството</translation>
 <translation id="1639239467298939599">Зарежда се</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">За да продължите с актуализацията, кликнете върху „Напред“.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Сигурност</translation>
+<translation id="3441653493275994384">Екран</translation>
 <translation id="3456078764689556234">Отпечатана е страница <ph name="PRINTED_PAGES" /> от <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Сканира се страница <ph name="PAGE_NUM" />. Завършена: <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Отпечатване</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">Промяна на тапета</translation>
 <translation id="360565022852130722">Wi-Fi мрежата е защитена със слабия протокол WEP 802.1x</translation>
 <translation id="3606583719724308068">Голямо закъснение на уебсайтове, работещи с HTTPS</translation>
+<translation id="3616113530831147358">Аудио</translation>
 <translation id="3621202678540785336">Вход</translation>
 <translation id="3632579075709132555">Превключване на екрана за поверителност</translation>
 <translation id="3643810137582748570">Пропускане на калибрирането</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">Отключване на сървъра за RMA</translation>
 <translation id="4145784616224233563">Защитна стена за HTTP</translation>
 <translation id="4147897805161313378">Google Снимки</translation>
+<translation id="4150201353443180367">Екран</translation>
 <translation id="4155551848414053977">Уверете се, че скенерът е включен и достъпен чрез мрежата ви или директна връзка</translation>
 <translation id="4159784952369912983">лилаво</translation>
 <translation id="4170180284036919717">Правене на снимка</translation>
@@ -746,6 +750,7 @@
 <translation id="7960831585769876809">Температура</translation>
 <translation id="7977800524392185497">За да се присъедините към <ph name="NETWORK_NAME" /> мрежа, отворете „Настройки“</translation>
 <translation id="7978412674231730200">Личен ключ</translation>
+<translation id="7982789257301363584">Мрежа</translation>
 <translation id="7994702968232966508">Метод с EAP</translation>
 <translation id="802154636333426148">Изтеглянето не бе успешно</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -840,6 +845,7 @@
 <translation id="8834539327799336565">Свързани сега</translation>
 <translation id="8845001906332463065">Получете помощ</translation>
 <translation id="8855781559874488009">През защитната стена не може да се установи връзка с уебсайтове, работещи с HTTP</translation>
+<translation id="885701979325669005">Хранилище</translation>
 <translation id="8863170912498892583">Активиране на тъмната тема</translation>
 <translation id="8863888432376731307">Получете <ph name="INTENT" /> на „<ph name="QUERY" />“ и др.</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_bn.xtb b/chromeos/strings/chromeos_strings_bn.xtb
index 26d35fd96..3648efa 100644
--- a/chromeos/strings/chromeos_strings_bn.xtb
+++ b/chromeos/strings/chromeos_strings_bn.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">ওয়ালপেপার হিসেবে সেট করুন</translation>
 <translation id="1578784163189013834">স্ক্রিন সেভারের ব্যাকগ্রাউন্ড বেছে নিন</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> পর্যন্ত ডেটার ব্যবহার</translation>
+<translation id="1620510694547887537">ক্যামেরা</translation>
 <translation id="1621067168122174824">চার্জ টেস্ট করুন</translation>
 <translation id="1631385268983122904">এখনই ডিভাইসের সাথে ব্যাটারি ব্যবহার করবেন না</translation>
 <translation id="1639239467298939599">লোড হচ্ছে</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422"><ph name="FIRST_MANAGER" /> এবং <ph name="SECOND_MANAGER" /> ম্যানেজ করে</translation>
 <translation id="1726100011689679555">নেম সার্ভারগুলি</translation>
 <translation id="1731082422893354635">ব্লুটুথ টাচপ্যাড</translation>
+<translation id="1745577949879301685">ছবি লোড করা যায়নি। আপনার নেটওয়ার্ক কানেকশন চেক করুন বা আবার ছবি লোড করার চেষ্টা করুন।</translation>
 <translation id="1751249301761991853">ব্যক্তিগত</translation>
 <translation id="1753496554272155572">ওয়ালপেপার প্রিভিউ থেকে বেরিয়ে আসুন</translation>
 <translation id="175763766237925754">ভাল (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">আপডেটগুলি ব্যবহার করে চালিয়ে যাওয়ার জন্য, 'পরবর্তী' বিকল্পে ক্লিক করুন।</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">নিরাপত্তা</translation>
+<translation id="3441653493275994384">বাছাই করুন</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" />টি পৃষ্ঠার মধ্যে <ph name="PRINTED_PAGES" /> নম্বর পৃষ্ঠা প্রিন্ট করা হয়েছে।</translation>
 <translation id="345898999683440380">স্ক্যান করা পৃষ্ঠা <ph name="PAGE_NUM" />। <ph name="PERCENTAGE_VALUE" />% হয়ে গেছে।</translation>
 <translation id="3459509316159669723">প্রিন্ট হচ্ছে</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">ওয়ালপেপার পরিবর্তন করুন</translation>
 <translation id="360565022852130722">দুর্বল WEP 802.1x প্রোটোকল ব্যবহার করে ওয়াই-ফাই নেটওয়ার্ক সুরক্ষিত করা হয়েছে</translation>
 <translation id="3606583719724308068">HTTPS ওয়েবসাইটে হাই লেটেন্সি</translation>
+<translation id="3616113530831147358">অডিও</translation>
 <translation id="3621202678540785336">ইনপুট</translation>
 <translation id="3632579075709132555">প্রাইভেসি স্ক্রিন টগল করার বোতাম</translation>
 <translation id="3643810137582748570">ক্যালিব্রেশন এড়িয়ে যান</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA সার্ভার আনলক পারফর্ম করুন</translation>
 <translation id="4145784616224233563">HTTP ফায়ারওয়াল</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">প্রদর্শন</translation>
 <translation id="4155551848414053977">আপনার স্ক্যানার চালু এবং নেটওয়ার্ক বা সরাসরি কানেকশনের মাধ্যমে উপলভ্য রয়েছে তা দেখে নিন</translation>
 <translation id="4159784952369912983">বেগুনি</translation>
 <translation id="4170180284036919717">ফটো তুলুন</translation>
@@ -425,6 +430,7 @@
 <translation id="4915052247106771211">এটি ডিভাইসটিকে ফ্যাক্টরি সেটিংসে (পাওয়ারওয়াশ) রিসেট করবে।</translation>
 <translation id="4917385247580444890">জোরালো</translation>
 <translation id="4917889632206600977">বন্ধ হয়ে গেছে - কাগজ শেষ হয়ে গেছে</translation>
+<translation id="491791267030419270">প্রতিক্রিয়া লেখা সংক্রান্ত পরামর্শ</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> সেকেন্ডে <ph name="RATE" /> চার্জ হয়েছে।</translation>
 <translation id="4930320165497208503">কানেকশন আপডেট করতে বা সেট আপ করতে<ph name="BEGIN_LINK" />সেটিংস<ph name="END_LINK" /> বিকল্পে যান।</translation>
 <translation id="4932733599132424254">তারিখ</translation>
@@ -744,6 +750,7 @@
 <translation id="7960831585769876809">তাপমাত্রা</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> নেটওয়ার্কে যোগ দিতে, সেটিংস বিকল্পে যান</translation>
 <translation id="7978412674231730200">ব্যক্তিগত কী</translation>
+<translation id="7982789257301363584">নেটওয়ার্ক</translation>
 <translation id="7994702968232966508">EAP পদ্ধতি</translation>
 <translation id="802154636333426148">ডাউনলোড করা যায়নি</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -838,6 +845,7 @@
 <translation id="8834539327799336565">এখন কানেক্ট করা রয়েছে</translation>
 <translation id="8845001906332463065">সাহায্য পান</translation>
 <translation id="8855781559874488009">ফায়ারওয়ালের সাহায্যে HTTP ওয়েবসাইটের সাথে কানেক্ট করা যাচ্ছে না</translation>
+<translation id="885701979325669005">স্টোরেজ</translation>
 <translation id="8863170912498892583">ডার্ক থিম চালু করুন</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" এবং অনেক কিছুর জন্য <ph name="INTENT" /> পান</translation>
 <translation id="8868741746785112895">গ্লোবালি ইউনিক আইডেন্টিফায়ার (GUID)</translation>
diff --git a/chromeos/strings/chromeos_strings_bs.xtb b/chromeos/strings/chromeos_strings_bs.xtb
index 39547af..c594e4f 100644
--- a/chromeos/strings/chromeos_strings_bs.xtb
+++ b/chromeos/strings/chromeos_strings_bs.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Postavi kao pozadinsku sliku</translation>
 <translation id="1578784163189013834">Odaberite pozadinu čuvara ekrana</translation>
 <translation id="1615335640928990664">Prijenos podataka od datuma <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Pokreni test punjenja</translation>
 <translation id="1631385268983122904">Nemojte još sklapati uređaj</translation>
 <translation id="1639239467298939599">Učitavanje</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">Uređajem upravljaju <ph name="FIRST_MANAGER" /> i <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">Poslužitelji naziva</translation>
 <translation id="1731082422893354635">Bluetooth dodirna podloga</translation>
+<translation id="1745577949879301685">Slike se nisu mogle učitati. Provjerite mrežnu vezu ili ponovo pokušajte učitati slike.</translation>
 <translation id="1751249301761991853">Lično</translation>
 <translation id="1753496554272155572">Izlaz iz pregleda pozadinske slike</translation>
 <translation id="175763766237925754">Dobro (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">Da nastavite s ažuriranjem, kliknite na Naprijed.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Sigurnost</translation>
+<translation id="3441653493275994384">Ekran</translation>
 <translation id="3456078764689556234">Odštampanih stanica: <ph name="PRINTED_PAGES" /> od <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Skenira se stranica broj <ph name="PAGE_NUM" />. Završeno je <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Štampanje</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">Promijenite pozadinsku sliku</translation>
 <translation id="360565022852130722">WiFi mreža je zaštićena slabim protokolom WEP 802.1x</translation>
 <translation id="3606583719724308068">Visoka latentnost za HTTPS web lokacije</translation>
+<translation id="3616113530831147358">Zvuk</translation>
 <translation id="3621202678540785336">Ulaz</translation>
 <translation id="3632579075709132555">Uključivanje/isključivanje Ekrana privatnosti</translation>
 <translation id="3643810137582748570">Preskoči kalibraciju</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">Izvršite otključavanje RMA servera</translation>
 <translation id="4145784616224233563">HTTP zaštitni zid</translation>
 <translation id="4147897805161313378">Google fotografije</translation>
+<translation id="4150201353443180367">Ekran</translation>
 <translation id="4155551848414053977">Provjerite je li skener uključen i dostupan putem mreže ili direktne veze</translation>
 <translation id="4159784952369912983">Ljubičasta</translation>
 <translation id="4170180284036919717">Snimi fotografiju</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Da se pridružite <ph name="NETWORK_NAME" /> mreži, idite u Postavke</translation>
 <translation id="7978412674231730200">Privatni ključ</translation>
+<translation id="7982789257301363584">Mreža</translation>
 <translation id="7994702968232966508">EAP metoda</translation>
 <translation id="802154636333426148">Preuzimanje nije uspjelo</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">Trenutno povezano</translation>
 <translation id="8845001906332463065">Potražite pomoć</translation>
 <translation id="8855781559874488009">Nije se moguće povezati putem zaštitnog zida s HTTP web lokacijama</translation>
+<translation id="885701979325669005">Pohrana</translation>
 <translation id="8863170912498892583">Omogući tamnu temu</translation>
 <translation id="8863888432376731307"><ph name="INTENT" /> za upit "<ph name="QUERY" />" i drugo</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_ca.xtb b/chromeos/strings/chromeos_strings_ca.xtb
index c73d02d..ec7823bf 100644
--- a/chromeos/strings/chromeos_strings_ca.xtb
+++ b/chromeos/strings/chromeos_strings_ca.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Defineix com a fons de pantalla</translation>
 <translation id="1578784163189013834">Tria el fons de l'estalvi de pantalla</translation>
 <translation id="1615335640928990664">Ús de dades des de <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Càmera</translation>
 <translation id="1621067168122174824">Executa la prova de càrrega</translation>
 <translation id="1631385268983122904">No tornis a muntar el dispositiu, encara</translation>
 <translation id="1639239467298939599">S'està carregant</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">Per continuar amb l'actualització, fes clic a Següent.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Seguretat</translation>
+<translation id="3441653493275994384">Pantalla</translation>
 <translation id="3456078764689556234">S'ha imprès la pàgina <ph name="PRINTED_PAGES" /> de <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">S'està escanejant la pàgina <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% completat.</translation>
 <translation id="3459509316159669723">Imprimeix</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">Canvia el fons de pantalla</translation>
 <translation id="360565022852130722">La xarxa Wi-Fi està protegida amb el protocol dèbil WEP 802.1x</translation>
 <translation id="3606583719724308068">Latència alta als llocs web HTTPS</translation>
+<translation id="3616113530831147358">Àudio</translation>
 <translation id="3621202678540785336">Entrada</translation>
 <translation id="3632579075709132555">Commutador de la pantalla de privadesa</translation>
 <translation id="3643810137582748570">Omet la calibració</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">Fes un desbloqueig del servidor RMA</translation>
 <translation id="4145784616224233563">Tallafoc HTTP</translation>
 <translation id="4147897805161313378">Google Fotos</translation>
+<translation id="4150201353443180367">Pantalla</translation>
 <translation id="4155551848414053977">Comprova que l'escàner estigui encès i disponible a través de la teva xarxa o d'una connexió directa</translation>
 <translation id="4159784952369912983">Porpra</translation>
 <translation id="4170180284036919717">Fes una foto</translation>
@@ -746,6 +750,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Per unir-te a una xarxa <ph name="NETWORK_NAME" />, ves a Configuració</translation>
 <translation id="7978412674231730200">Clau privada</translation>
+<translation id="7982789257301363584">Xarxa</translation>
 <translation id="7994702968232966508">Mètode EAP</translation>
 <translation id="802154636333426148">Error de baixada</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -840,6 +845,7 @@
 <translation id="8834539327799336565">Connectats actualment</translation>
 <translation id="8845001906332463065">Obteniu ajuda</translation>
 <translation id="8855781559874488009">No es pot establir la connexió amb llocs web HTTP a través del tallafoc</translation>
+<translation id="885701979325669005">Emmagatzematge</translation>
 <translation id="8863170912498892583">Activa el tema fosc</translation>
 <translation id="8863888432376731307">Obtén la <ph name="INTENT" /> per a "<ph name="QUERY" />" i més</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_cs.xtb b/chromeos/strings/chromeos_strings_cs.xtb
index 43026745..efbab28 100644
--- a/chromeos/strings/chromeos_strings_cs.xtb
+++ b/chromeos/strings/chromeos_strings_cs.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">Spouštěč</translation>
 <translation id="1512982610995527443">Zařízení se za 5 sekund vypne</translation>
 <translation id="1522984060396982789">Oprava byla úspěšná. Zařízení můžete vypnout nebo provést nějaké další akce.</translation>
+<translation id="1526389707933164996">Animace spořiče obrazovky</translation>
 <translation id="152892567002884378">Zvýšit hlasitost</translation>
 <translation id="1555130319947370107">Modrá</translation>
 <translation id="155865706765934889">Touchpad</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">Nastavit jako tapetu</translation>
 <translation id="1578784163189013834">Vybrat pozadí spořiče obrazovky</translation>
 <translation id="1615335640928990664">Využití dat od <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Spustit test nabití</translation>
 <translation id="1631385268983122904">Zařízení zatím nechte rozebrané</translation>
 <translation id="1639239467298939599">Načítání</translation>
@@ -257,6 +259,7 @@
 <translation id="3413935475507503304">Pokud chcete pokračovat v aktualizaci, klikněte na Další.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="3435738964857648380">Zabezpečení</translation>
+<translation id="3441653493275994384">Obrazovka</translation>
 <translation id="3456078764689556234">Vytisknuta stránka <ph name="PRINTED_PAGES" /> z <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Skenování stránky <ph name="PAGE_NUM" />. Hotovo <ph name="PERCENTAGE_VALUE" /> %.</translation>
 <translation id="3459509316159669723">Tisk</translation>
@@ -279,6 +282,7 @@
 <translation id="3604713164406837697">Změnit tapetu</translation>
 <translation id="360565022852130722">Síť Wi-Fi je zabezpečena slabým protokolem WEP 802.1x</translation>
 <translation id="3606583719724308068">Vysoká latence připojení k webům HTTPS</translation>
+<translation id="3616113530831147358">Zvuk</translation>
 <translation id="3621202678540785336">Vstup</translation>
 <translation id="3632579075709132555">Přepínač obrazovky s ochranou soukromí</translation>
 <translation id="3643810137582748570">Přeskočit kalibraci</translation>
@@ -300,6 +304,7 @@
 <translation id="3858860766373142691">Název</translation>
 <translation id="3865414814144988605">Rozlišení</translation>
 <translation id="387301095347517405">Údaj, kolikrát baterie prošla celým cyklem nabíjení</translation>
+<translation id="3885327323343477505">Změnit spořič obrazovky</translation>
 <translation id="3923184630988645767">Využití dat</translation>
 <translation id="3924044641767672375">K usnadnění procesu opravy doporučujeme připojení k Wi-Fi. Síť bude uložena.</translation>
 <translation id="3932043219784172185">Není připojeno žádné zařízení</translation>
@@ -327,6 +332,7 @@
 <translation id="4140251671072434548">Odemkněte server pomocí čísla RMA</translation>
 <translation id="4145784616224233563">Firewall HTTP</translation>
 <translation id="4147897805161313378">Fotky Google</translation>
+<translation id="4150201353443180367">Displej</translation>
 <translation id="4155551848414053977">Zkontrolujte, zda je skener zapnutý a dostupný v síti nebo přes přímé připojení.</translation>
 <translation id="4159784952369912983">Nachová</translation>
 <translation id="4170180284036919717">Pořídit fotku</translation>
@@ -418,6 +424,7 @@
 <translation id="4890353053343094602">Ihned si zvolte nové</translation>
 <translation id="4891842000192098784">Zátěž</translation>
 <translation id="4897058166682006107">Stav baterie levého sluchátka je <ph name="BATTERY_PERCENTAGE" /> %.</translation>
+<translation id="4905998861748258752">Pokud chcete vybrat možnosti spořiče obrazovky, zapněte tuto funkci</translation>
 <translation id="4908030561598728899">Instalace firmwaru…</translation>
 <translation id="4915052247106771211">Zařízení se resetuje do továrního nastavení (Powerwash).</translation>
 <translation id="4917385247580444890">Silný</translation>
@@ -742,6 +749,7 @@
 <translation id="7960831585769876809">Teplota</translation>
 <translation id="7977800524392185497">Pokud se chcete připojit k síti <ph name="NETWORK_NAME" />, přejděte do sekce Nastavení</translation>
 <translation id="7978412674231730200">Soukromý klíč</translation>
+<translation id="7982789257301363584">Síť</translation>
 <translation id="7994702968232966508">Metoda EAP</translation>
 <translation id="802154636333426148">Stažení se nezdařilo</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -836,6 +844,7 @@
 <translation id="8834539327799336565">Momentálně připojeno</translation>
 <translation id="8845001906332463065">Nápověda</translation>
 <translation id="8855781559874488009">Přes firewall se nelze připojit k webům HTTP</translation>
+<translation id="885701979325669005">Úložiště</translation>
 <translation id="8863170912498892583">Aktivovat tmavý motiv</translation>
 <translation id="8863888432376731307">Získejte <ph name="INTENT" /> na dotaz „<ph name="QUERY" />“ a mnohem víc</translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -861,6 +870,7 @@
 <translation id="8997710128084572139">Stav baterie zařízení je <ph name="BATTERY_PERCENTAGE" /> %.</translation>
 <translation id="9003704114456258138">Frekvence</translation>
 <translation id="9025198690966128418">Použít jako osobní zařízení</translation>
+<translation id="9028832514430399253">Zapnutím přepínače vyberete možnosti spořiče obrazovky</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">Překlad záznamů DNS má vysokou latenci</translation>
 <translation id="9063121522582193837">Některé komponenty se nepodařilo zkalibrovat</translation>
diff --git a/chromeos/strings/chromeos_strings_cy.xtb b/chromeos/strings/chromeos_strings_cy.xtb
index 956e933..7599155 100644
--- a/chromeos/strings/chromeos_strings_cy.xtb
+++ b/chromeos/strings/chromeos_strings_cy.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Gosod fel papur wal</translation>
 <translation id="1578784163189013834">Dewis cefndir yr arbedydd sgrîn</translation>
 <translation id="1615335640928990664">Defnydd data ers <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Camera</translation>
 <translation id="1621067168122174824">Rhedeg prawf Gwefru</translation>
 <translation id="1631385268983122904">Peidiwch â rhoi'r ddyfais yn ôl at ei gilydd eto</translation>
 <translation id="1639239467298939599">Wrthi'n llwytho</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">I barhau gyda'r diweddariad, cliciwch Nesaf.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Diogelwch</translation>
+<translation id="3441653493275994384">Sgrîn</translation>
 <translation id="3456078764689556234">Argraffwyd tudalen <ph name="PRINTED_PAGES" /> allan o <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Wrthi'n sganio tudalen <ph name="PAGE_NUM" />. Wedi cwblhau <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Wrthi'n argraffu</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Newid y papur wal</translation>
 <translation id="360565022852130722">Diogelir y rhwydwaith Wi-Fi gyda'r protocol gwan WEP 802.1x</translation>
 <translation id="3606583719724308068">Cuddni uchel i wefannau HTTPS</translation>
+<translation id="3616113530831147358">Sain</translation>
 <translation id="3621202678540785336">Mewnbwn</translation>
 <translation id="3632579075709132555">Togl sgrîn preifatrwydd</translation>
 <translation id="3643810137582748570">Hepgor calibradu</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Perfformio Datgloi Gweinydd RMA</translation>
 <translation id="4145784616224233563">Wal dân HTTP</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">Sgrîn</translation>
 <translation id="4155551848414053977">Gwnewch yn siŵr bod y sganiwr wedi'i droi ymlaen a'i fod ar gael drwy'ch rhwydwaith neu gysylltiad uniongyrchol</translation>
 <translation id="4159784952369912983">Porffor</translation>
 <translation id="4170180284036919717">Tynnu llun</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Tymheredd</translation>
 <translation id="7977800524392185497">I ymuno â rhwydwaith <ph name="NETWORK_NAME" />, ewch i'r Gosodiadau</translation>
 <translation id="7978412674231730200">Allwedd breifat</translation>
+<translation id="7982789257301363584">Rhwydwaith</translation>
 <translation id="7994702968232966508">Dull EAP</translation>
 <translation id="802154636333426148">Wedi methu â lawrlwytho</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Wedi'i gysylltu ar hyn o bryd</translation>
 <translation id="8845001906332463065">Cael help</translation>
 <translation id="8855781559874488009">Methu â chysylltu â gwefannau HTTP drwy fur cadarn</translation>
+<translation id="885701979325669005">Storfa</translation>
 <translation id="8863170912498892583">Galluogi'r thema dywyll</translation>
 <translation id="8863888432376731307">Cael y <ph name="INTENT" /> ar gyfer "<ph name="QUERY" />" a rhagor</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_da.xtb b/chromeos/strings/chromeos_strings_da.xtb
index 4e401fe..48648d8 100644
--- a/chromeos/strings/chromeos_strings_da.xtb
+++ b/chromeos/strings/chromeos_strings_da.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Angiv som baggrund</translation>
 <translation id="1578784163189013834">Vælg baggrund til Pauseskærm</translation>
 <translation id="1615335640928990664">Dataforbrug siden <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Kør opladningstest</translation>
 <translation id="1631385268983122904">Du skal ikke samle enheden endnu.</translation>
 <translation id="1639239467298939599">Indlæser...</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Klik på Næste for at fortsætte med opdateringen.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="3435738964857648380">Sikkerhed</translation>
+<translation id="3441653493275994384">Skærm</translation>
 <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> ud af <ph name="TOTAL_PAGES" /> er blevet udskrevet.</translation>
 <translation id="345898999683440380">Scanner side <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % er blevet scannet.</translation>
 <translation id="3459509316159669723">Udskrivning</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Skift baggrund</translation>
 <translation id="360565022852130722">Wi-Fi-netværket er beskyttet med den svage protokol WEP 802.1x</translation>
 <translation id="3606583719724308068">Stor forsinkelse til HTTPS-websites</translation>
+<translation id="3616113530831147358">Lyd</translation>
 <translation id="3621202678540785336">Input</translation>
 <translation id="3632579075709132555">Slå Privatlivsskærm til/fra</translation>
 <translation id="3643810137582748570">Spring kalibreringen over</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Lås server til godkendelse af varereturnering op</translation>
 <translation id="4145784616224233563">HTTP-firewall</translation>
 <translation id="4147897805161313378">Google Fotos</translation>
+<translation id="4150201353443180367">Skærm</translation>
 <translation id="4155551848414053977">Tjek, at scanneren er tændt og tilgængelig via dit netværk eller en direkte forbindelse</translation>
 <translation id="4159784952369912983">Lilla</translation>
 <translation id="4170180284036919717">Tag et billede</translation>
@@ -744,6 +748,7 @@
 <translation id="7960831585769876809">Temperatur</translation>
 <translation id="7977800524392185497">Gå til Indstillinger for at oprette forbindelse til et <ph name="NETWORK_NAME" />-netværk</translation>
 <translation id="7978412674231730200">Privat nøgle</translation>
+<translation id="7982789257301363584">Netværk</translation>
 <translation id="7994702968232966508">EAP-metode</translation>
 <translation id="802154636333426148">Download mislykkedes</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -838,6 +843,7 @@
 <translation id="8834539327799336565">Forbundet lige nu</translation>
 <translation id="8845001906332463065">Få hjælp</translation>
 <translation id="8855781559874488009">Der kan ikke oprettes forbindelse via firewallen til HTTPS-websites</translation>
+<translation id="885701979325669005">Lagerplads</translation>
 <translation id="8863170912498892583">Aktivér Mørkt tema</translation>
 <translation id="8863888432376731307">Få <ph name="INTENT" /> på "<ph name="QUERY" />" m.m.</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_de.xtb b/chromeos/strings/chromeos_strings_de.xtb
index 607a2d3..2c8ca2a 100644
--- a/chromeos/strings/chromeos_strings_de.xtb
+++ b/chromeos/strings/chromeos_strings_de.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Als Hintergrund festlegen</translation>
 <translation id="1578784163189013834">Hintergrund für den Bildschirmschoner auswählen</translation>
 <translation id="1615335640928990664">Datennutzung seit <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Ladetest ausführen</translation>
 <translation id="1631385268983122904">Bitte setze den Akku bzw. die Batterie(n) noch nicht wieder ein</translation>
 <translation id="1639239467298939599">Wird geladen...</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">Verwaltet von <ph name="FIRST_MANAGER" /> und <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">Nameserver</translation>
 <translation id="1731082422893354635">Bluetooth-Touchpad</translation>
+<translation id="1745577949879301685">Bilder konnten nicht geladen werden. Prüfe die Netzwerkverbindung oder versuch noch einmal, die Bilder zu laden.</translation>
 <translation id="1751249301761991853">Personalisierung</translation>
 <translation id="1753496554272155572">Hintergrundvorschau beenden</translation>
 <translation id="175763766237925754">Gut (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">Klicke zum Fortsetzen der Aktualisierung auf „Weiter“.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="3435738964857648380">Sicherheit</translation>
+<translation id="3441653493275994384">Bildschirm</translation>
 <translation id="3456078764689556234">Seite <ph name="PRINTED_PAGES" /> von <ph name="TOTAL_PAGES" /> wird gedruckt.</translation>
 <translation id="345898999683440380">Seite <ph name="PAGE_NUM" /> wird gescannt. <ph name="PERCENTAGE_VALUE" /> % sind abgeschlossen.</translation>
 <translation id="3459509316159669723">Drucken</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">Hintergrund ändern</translation>
 <translation id="360565022852130722">Das WLAN ist mit dem schwachen Protokoll WEP 802.1x gesichert</translation>
 <translation id="3606583719724308068">Hohe Latenz zu HTTPS-Websites</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Eingang</translation>
 <translation id="3632579075709132555">Privatsphärefunktion</translation>
 <translation id="3643810137582748570">Kalibrierung überspringen</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA-Server entsperren</translation>
 <translation id="4145784616224233563">HTTP-Firewall</translation>
 <translation id="4147897805161313378">Google Fotos</translation>
+<translation id="4150201353443180367">Display</translation>
 <translation id="4155551848414053977">Achte darauf, dass der Scanner eingeschaltet und entweder über das Netzwerk oder direkt verbunden ist</translation>
 <translation id="4159784952369912983">Violett</translation>
 <translation id="4170180284036919717">Foto aufnehmen</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">Temperatur</translation>
 <translation id="7977800524392185497">Gehe zu den Einstellungen, um eine Verbindung zu einem Netzwerk (<ph name="NETWORK_NAME" />) herzustellen</translation>
 <translation id="7978412674231730200">Privater Schlüssel</translation>
+<translation id="7982789257301363584">Netzwerk</translation>
 <translation id="7994702968232966508">EAP-Methode</translation>
 <translation id="802154636333426148">Downloadfehler</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">Derzeit verbunden</translation>
 <translation id="8845001906332463065">Hilfe aufrufen</translation>
 <translation id="8855781559874488009">Eine Verbindung zu HTTP-Websites durch eine Firewall ist nicht möglich</translation>
+<translation id="885701979325669005">Speicher</translation>
 <translation id="8863170912498892583">Dunkles Design aktivieren</translation>
 <translation id="8863888432376731307"><ph name="INTENT" /> für „<ph name="QUERY" />“ bekommen und mehr</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_el.xtb b/chromeos/strings/chromeos_strings_el.xtb
index 6d60a74..0b055d9 100644
--- a/chromeos/strings/chromeos_strings_el.xtb
+++ b/chromeos/strings/chromeos_strings_el.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Ορισμός ως ταπετσαρία</translation>
 <translation id="1578784163189013834">Επιλέξτε το παρασκήνιο της προφύλαξης οθόνης</translation>
 <translation id="1615335640928990664">Χρήση δεδομένων από τις <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Κάμερα</translation>
 <translation id="1621067168122174824">Εκτέλεση δοκιμής φόρτισης</translation>
 <translation id="1631385268983122904">Μην συναρμολογήσετε τη συσκευή ακόμα</translation>
 <translation id="1639239467298939599">Γίνεται φόρτωση</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">Διαχειρίζεται από <ph name="FIRST_MANAGER" /> και <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">Διακομιστές ονομάτων</translation>
 <translation id="1731082422893354635">Επιφάνεια αφής Bluetooth</translation>
+<translation id="1745577949879301685">Δεν ήταν δυνατή η φόρτωση των εικόνων. Ελέγξτε τη σύνδεση δικτύου ή δοκιμάστε να φορτώσετε ξανά τις εικόνες.</translation>
 <translation id="1751249301761991853">Προσωπικές</translation>
 <translation id="1753496554272155572">Έξοδος από προεπισκόπηση ταπετσαρίας</translation>
 <translation id="175763766237925754">Καλό (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">Για να συνεχίσετε με την ενημέρωση, κάντε κλικ στο Επόμενο.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Ασφάλεια</translation>
+<translation id="3441653493275994384">Έλεγχος</translation>
 <translation id="3456078764689556234">Εκτυπώθηκε η σελίδα <ph name="PRINTED_PAGES" /> από <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Σάρωση σελίδας <ph name="PAGE_NUM" />. Ολοκληρώθηκε το <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Εκτύπωση</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">Αλλαγή ταπετσαρίας</translation>
 <translation id="360565022852130722">Η ασφάλεια του δικτύου Wi-Fi βασίζεται σε αδύναμο πρωτόκολλο WEP 802.1x.</translation>
 <translation id="3606583719724308068">Υψηλός λανθάνων χρόνος σε ιστοτόπους HTTPS</translation>
+<translation id="3616113530831147358">Ήχος</translation>
 <translation id="3621202678540785336">Είσοδος</translation>
 <translation id="3632579075709132555">Εναλλαγή οθόνης απορρήτου</translation>
 <translation id="3643810137582748570">Παράβλεψη βαθμονόμησης</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">Εκτέλεση ξεκλειδώματος διακομιστή εξουσιοδότησης επιστροφής εμπορικών προϊόντων (RMA)</translation>
 <translation id="4145784616224233563">Τείχος προστασίας HTTP</translation>
 <translation id="4147897805161313378">Φωτογραφίες Google</translation>
+<translation id="4150201353443180367">Οθόνη</translation>
 <translation id="4155551848414053977">Βεβαιωθείτε ότι ο σαρωτής είναι ενεργοποιημένος και διαθέσιμος μέσω του δικτύου σας ή μέσω άμεσης σύνδεσης.</translation>
 <translation id="4159784952369912983">Μοβ</translation>
 <translation id="4170180284036919717">Λήψη φωτογραφίας</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">Θερμοκρασία</translation>
 <translation id="7977800524392185497">Για να συμμετάσχετε σε ένα δίκτυο <ph name="NETWORK_NAME" />, μεταβείτε στις Ρυθμίσεις.</translation>
 <translation id="7978412674231730200">Ιδιωτικό κλειδί</translation>
+<translation id="7982789257301363584">Δίκτυο</translation>
 <translation id="7994702968232966508">Μέθοδος EAP</translation>
 <translation id="802154636333426148">Η λήψη απέτυχε</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">Συνδεδεμένες αυτήν τη στιγμή</translation>
 <translation id="8845001906332463065">Λήψη βοήθειας</translation>
 <translation id="8855781559874488009">Δεν είναι δυνατή η σύνδεση μέσω τείχους προστασίας σε ιστοτόπους HTTP.</translation>
+<translation id="885701979325669005">Αποθήκευση</translation>
 <translation id="8863170912498892583">Ενεργοποίηση σκούρου θέματος</translation>
 <translation id="8863888432376731307">Αποκτήστε το <ph name="INTENT" /> για "<ph name="QUERY" />" και περισσότερα</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb
index 3b79d01f..9cfd109 100644
--- a/chromeos/strings/chromeos_strings_en-GB.xtb
+++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Set as wallpaper</translation>
 <translation id="1578784163189013834">Choose screensaver background</translation>
 <translation id="1615335640928990664">Data usage since <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Camera</translation>
 <translation id="1621067168122174824">Run charge test</translation>
 <translation id="1631385268983122904">Don't put the device back together yet</translation>
 <translation id="1639239467298939599">Loading</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">To proceed with the update, click Next.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Security</translation>
+<translation id="3441653493275994384">Screen</translation>
 <translation id="3456078764689556234">Printed page <ph name="PRINTED_PAGES" /> out of <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Scanning page <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% completed.</translation>
 <translation id="3459509316159669723">Printing</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">Change wallpaper</translation>
 <translation id="360565022852130722">Wi-Fi network is secured with weak protocol WEP 802.1x</translation>
 <translation id="3606583719724308068">High latency to HTTPS websites</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Input</translation>
 <translation id="3632579075709132555">Privacy screen toggle</translation>
 <translation id="3643810137582748570">Skip calibration</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">Perform RMA server unlock</translation>
 <translation id="4145784616224233563">HTTP firewall</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">Display</translation>
 <translation id="4155551848414053977">Make sure that the scanner is turned on and available via your network or a direct connection</translation>
 <translation id="4159784952369912983">Purple</translation>
 <translation id="4170180284036919717">Take a photo</translation>
@@ -426,6 +430,7 @@
 <translation id="4915052247106771211">This will reset the device to factory settings (Powerwash).</translation>
 <translation id="4917385247580444890">Strong</translation>
 <translation id="4917889632206600977">Stopped – out of paper</translation>
+<translation id="491791267030419270">Tips on writing feedback</translation>
 <translation id="4921665434385737356">Charged <ph name="RATE" /> in <ph name="NUM_SECONDS" /> seconds.</translation>
 <translation id="4930320165497208503">To set up or update a connection, go to <ph name="BEGIN_LINK" />Settings<ph name="END_LINK" />.</translation>
 <translation id="4932733599132424254">Date</translation>
@@ -746,6 +751,7 @@
 <translation id="7960831585769876809">Temperature</translation>
 <translation id="7977800524392185497">To join a <ph name="NETWORK_NAME" /> network, go to Settings</translation>
 <translation id="7978412674231730200">Private key</translation>
+<translation id="7982789257301363584">Network</translation>
 <translation id="7994702968232966508">EAP method</translation>
 <translation id="802154636333426148">Download failed</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -840,6 +846,7 @@
 <translation id="8834539327799336565">Currently connected</translation>
 <translation id="8845001906332463065">Get help</translation>
 <translation id="8855781559874488009">Can't connect through firewall to HTTP websites</translation>
+<translation id="885701979325669005">Storage</translation>
 <translation id="8863170912498892583">Enable Dark theme</translation>
 <translation id="8863888432376731307">Get the <ph name="INTENT" /> for '<ph name="QUERY" />' and more</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_es-419.xtb b/chromeos/strings/chromeos_strings_es-419.xtb
index 06a18cc..18d523b 100644
--- a/chromeos/strings/chromeos_strings_es-419.xtb
+++ b/chromeos/strings/chromeos_strings_es-419.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">Selector</translation>
 <translation id="1512982610995527443">El dispositivo se apagará en 5 segundos</translation>
 <translation id="1522984060396982789">Se realizó correctamente la reparación. Puedes apagar el dispositivo o realizar acciones adicionales.</translation>
+<translation id="1526389707933164996">Animación del protector de pantalla</translation>
 <translation id="152892567002884378">Subir el volumen</translation>
 <translation id="1555130319947370107">Azul</translation>
 <translation id="155865706765934889">Panel táctil</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">Establecer como fondo de pantalla</translation>
 <translation id="1578784163189013834">Elegir el fondo del protector de pantalla</translation>
 <translation id="1615335640928990664">Uso de datos desde el <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Cámara</translation>
 <translation id="1621067168122174824">Ejecutar prueba de carga</translation>
 <translation id="1631385268983122904">No vuelvas a armar el dispositivo</translation>
 <translation id="1639239467298939599">Cargando</translation>
@@ -257,6 +259,7 @@
 <translation id="3413935475507503304">Para continuar con la actualización, haz clic en Siguiente.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Seguridad</translation>
+<translation id="3441653493275994384">Pantalla</translation>
 <translation id="3456078764689556234">Se imprimió la página <ph name="PRINTED_PAGES" /> de un total de <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Se está escaneando la página <ph name="PAGE_NUM" />. Se completó el <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Impresión</translation>
@@ -279,6 +282,7 @@
 <translation id="3604713164406837697">Cambiar el fondo de pantalla</translation>
 <translation id="360565022852130722">la red Wi-Fi está protegida con el protocolo WEP 802.1x (poco seguro)</translation>
 <translation id="3606583719724308068">Alta latencia de los sitios web HTTPS</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Entrada</translation>
 <translation id="3632579075709132555">Activar o desactivar la Pantalla de privacidad</translation>
 <translation id="3643810137582748570">Omitir la calibración</translation>
@@ -300,6 +304,7 @@
 <translation id="3858860766373142691">Nombre</translation>
 <translation id="3865414814144988605">Resolución</translation>
 <translation id="387301095347517405">El número de veces que la batería ha completado un ciclo de carga</translation>
+<translation id="3885327323343477505">Cambiar el protector de pantalla</translation>
 <translation id="3923184630988645767">Uso de datos</translation>
 <translation id="3924044641767672375">Para facilitar el proceso de reparación, se recomienda que te conectes a una red Wi-Fi. Se guardará tu red.</translation>
 <translation id="3932043219784172185">No hay ningún dispositivo conectado</translation>
@@ -327,6 +332,7 @@
 <translation id="4140251671072434548">Realiza el desbloqueo de servidor de ADP</translation>
 <translation id="4145784616224233563">Firewall de HTTP</translation>
 <translation id="4147897805161313378">Google Fotos</translation>
+<translation id="4150201353443180367">Pantalla</translation>
 <translation id="4155551848414053977">Asegúrate de que el escáner esté encendido y disponible a través de tu red o una conexión directa.</translation>
 <translation id="4159784952369912983">Púrpura</translation>
 <translation id="4170180284036919717">Tomar una foto</translation>
@@ -418,6 +424,7 @@
 <translation id="4890353053343094602">Elige una nueva de inmediato</translation>
 <translation id="4891842000192098784">Esfuerzo</translation>
 <translation id="4897058166682006107">Nivel de batería del auricular izquierdo <ph name="BATTERY_PERCENTAGE" />%.</translation>
+<translation id="4905998861748258752">Activa la función para seleccionar opciones de protector de pantalla</translation>
 <translation id="4908030561598728899">Instalando firmware…</translation>
 <translation id="4915052247106771211">Esta opción restablecerá el dispositivo a la configuración de fábrica (Powerwash).</translation>
 <translation id="4917385247580444890">Fuerte</translation>
@@ -742,6 +749,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Para conectarte a una red <ph name="NETWORK_NAME" />, ve a Configuración</translation>
 <translation id="7978412674231730200">Clave privada</translation>
+<translation id="7982789257301363584">Red</translation>
 <translation id="7994702968232966508">Método EAP</translation>
 <translation id="802154636333426148">Error en la descarga</translation>
 <translation id="8031884997696620457">HSPA+</translation>
@@ -836,6 +844,7 @@
 <translation id="8834539327799336565">Conectados actualmente</translation>
 <translation id="8845001906332463065">Obtener ayuda</translation>
 <translation id="8855781559874488009">No se puede establecer conexión con los sitios web HTTP a través del firewall</translation>
+<translation id="885701979325669005">Almacenamiento</translation>
 <translation id="8863170912498892583">Habilitar el tema oscuro</translation>
 <translation id="8863888432376731307">Obtén información sobre "<ph name="QUERY" />", como su <ph name="INTENT" /></translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -861,6 +870,7 @@
 <translation id="8997710128084572139">Nivel de batería del dispositivo <ph name="BATTERY_PERCENTAGE" />%.</translation>
 <translation id="9003704114456258138">Frecuencia</translation>
 <translation id="9025198690966128418">Usar como dispositivo personal</translation>
+<translation id="9028832514430399253">Activa el botón para seleccionar las opciones del protector de pantalla</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">La resolución de DNS tiene alta latencia</translation>
 <translation id="9063121522582193837">No se pudieron calibrar los componentes</translation>
diff --git a/chromeos/strings/chromeos_strings_es.xtb b/chromeos/strings/chromeos_strings_es.xtb
index 99d562a..3598ea9 100644
--- a/chromeos/strings/chromeos_strings_es.xtb
+++ b/chromeos/strings/chromeos_strings_es.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">Menú de aplicaciones</translation>
 <translation id="1512982610995527443">El dispositivo se apagará en 5 segundos</translation>
 <translation id="1522984060396982789">La reparación se ha completado correctamente. Puedes apagar el dispositivo o llevar a cabo algunas acciones adicionales.</translation>
+<translation id="1526389707933164996">Animación del salvapantallas</translation>
 <translation id="152892567002884378">Subir el volumen</translation>
 <translation id="1555130319947370107">Azul</translation>
 <translation id="155865706765934889">Panel táctil</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">Configurar como fondo de pantalla</translation>
 <translation id="1578784163189013834">Elegir fondo del salvapantallas</translation>
 <translation id="1615335640928990664">Uso de datos desde el <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Cámara</translation>
 <translation id="1621067168122174824">Realizar prueba de carga</translation>
 <translation id="1631385268983122904">No montes el dispositivo todavía</translation>
 <translation id="1639239467298939599">Cargando</translation>
@@ -257,6 +259,7 @@
 <translation id="3413935475507503304">Para continuar con la actualización, haz clic en Siguiente.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Seguridad</translation>
+<translation id="3441653493275994384">Pantalla</translation>
 <translation id="3456078764689556234">Se ha impreso la página <ph name="PRINTED_PAGES" /> de <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Escaneando página <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % completado.</translation>
 <translation id="3459509316159669723">Imprimir</translation>
@@ -279,6 +282,7 @@
 <translation id="3604713164406837697">Cambiar fondo de pantalla</translation>
 <translation id="360565022852130722">La red Wi-Fi está protegida con un protocolo poco seguro WEP 802.1x</translation>
 <translation id="3606583719724308068">Latencia alta a sitios web HTTPS</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Entrada</translation>
 <translation id="3632579075709132555">Activar o desactivar Pantalla de privacidad</translation>
 <translation id="3643810137582748570">Omitir calibración</translation>
@@ -300,6 +304,7 @@
 <translation id="3858860766373142691">Nombre</translation>
 <translation id="3865414814144988605">Resolución</translation>
 <translation id="387301095347517405">El número de veces que la batería ha tenido un ciclo de carga completo</translation>
+<translation id="3885327323343477505">Cambiar salvapantallas</translation>
 <translation id="3923184630988645767">Uso de datos</translation>
 <translation id="3924044641767672375">Se recomienda conectarse a la red Wi‑Fi para facilitar el proceso de reparación. Tu red se guardará.</translation>
 <translation id="3932043219784172185">Ningún dispositivo conectado</translation>
@@ -327,6 +332,7 @@
 <translation id="4140251671072434548">Realizar RMA Server Unlock</translation>
 <translation id="4145784616224233563">Cortafuegos de HTTP</translation>
 <translation id="4147897805161313378">Google Fotos</translation>
+<translation id="4150201353443180367">Pantalla</translation>
 <translation id="4155551848414053977">Comprueba que el escáner esté activado y que esté disponible a través de tu red o de una conexión directa</translation>
 <translation id="4159784952369912983">Morado</translation>
 <translation id="4170180284036919717">Hacer foto</translation>
@@ -418,6 +424,7 @@
 <translation id="4890353053343094602">Selecciona otra inmediatamente</translation>
 <translation id="4891842000192098784">Esfuerzo</translation>
 <translation id="4897058166682006107">Nivel de batería del auricular izquierdo del dispositivo: <ph name="BATTERY_PERCENTAGE" /> %.</translation>
+<translation id="4905998861748258752">Activa la función para seleccionar las opciones del salvapantallas</translation>
 <translation id="4908030561598728899">Instalando firmware...</translation>
 <translation id="4915052247106771211">Si seleccionas esta opción, se restablecerán los ajustes de fábrica del dispositivo (Powerwash).</translation>
 <translation id="4917385247580444890">Buena</translation>
@@ -741,6 +748,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Para unirte a una red <ph name="NETWORK_NAME" />, ve a Configuración</translation>
 <translation id="7978412674231730200">Clave privada</translation>
+<translation id="7982789257301363584">Red</translation>
 <translation id="7994702968232966508">Método EAP</translation>
 <translation id="802154636333426148">No se ha podido descargar el archivo</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -835,6 +843,7 @@
 <translation id="8834539327799336565">Conectado ahora</translation>
 <translation id="8845001906332463065">Obtener ayuda</translation>
 <translation id="8855781559874488009">No se puede conectar con sitios web HTTP usando un cortafuegos</translation>
+<translation id="885701979325669005">Almacenamiento</translation>
 <translation id="8863170912498892583">Habilitar tema oscuro</translation>
 <translation id="8863888432376731307">Consulta información sobre "<ph name="QUERY" />", como su <ph name="INTENT" /></translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -860,6 +869,7 @@
 <translation id="8997710128084572139">Nivel de batería del dispositivo: <ph name="BATTERY_PERCENTAGE" /> %.</translation>
 <translation id="9003704114456258138">Frecuencia</translation>
 <translation id="9025198690966128418">Usar como dispositivo personal</translation>
+<translation id="9028832514430399253">Activa el interruptor para seleccionar las opciones del salvapantallas</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">La resolución de DNS tiene una latencia alta</translation>
 <translation id="9063121522582193837">No se han podido calibrar algunos componentes</translation>
diff --git a/chromeos/strings/chromeos_strings_et.xtb b/chromeos/strings/chromeos_strings_et.xtb
index c978c7f..deea76a 100644
--- a/chromeos/strings/chromeos_strings_et.xtb
+++ b/chromeos/strings/chromeos_strings_et.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Taustapildiks määramine</translation>
 <translation id="1578784163189013834">Ekraanisäästja tausta valimine</translation>
 <translation id="1615335640928990664">Andmekasutus alates: <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kaamera</translation>
 <translation id="1621067168122174824">Käita laadimistest</translation>
 <translation id="1631385268983122904">Ärge pange seadet veel tagasi kokku</translation>
 <translation id="1639239467298939599">Laadimine</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Värskendamisega jätkamiseks klõpsake nupul Järgmine.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Turvalisus</translation>
+<translation id="3441653493275994384">Ekraan</translation>
 <translation id="3456078764689556234">Prinditi <ph name="PRINTED_PAGES" />. leht <ph name="TOTAL_PAGES" />-st.</translation>
 <translation id="345898999683440380">Lehe <ph name="PAGE_NUM" /> skannimine. <ph name="PERCENTAGE_VALUE" />% on lõpetatud.</translation>
 <translation id="3459509316159669723">Printimine</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Taustapildi muutmine</translation>
 <translation id="360565022852130722">WiFi-võrk on kaitstud nõrga protokolliga (WEP 802.1x)</translation>
 <translation id="3606583719724308068">Pikk latentsusaeg HTTPS-veebisaitide puhul</translation>
+<translation id="3616113530831147358">Heli</translation>
 <translation id="3621202678540785336">Sisend</translation>
 <translation id="3632579075709132555">Privaatsuskuva lüliti</translation>
 <translation id="3643810137582748570">Jäta kalibreerimine vahele</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Avage RMA server</translation>
 <translation id="4145784616224233563">HTTP tulemüür</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">Kuva</translation>
 <translation id="4155551848414053977">Veenduge, et skanner oleks sisse lülitatud ja teie võrgus või otseühenduse kaudu saadaval</translation>
 <translation id="4159784952369912983">Lilla</translation>
 <translation id="4170180284036919717">Pildista</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Temperatuur</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" />-võrguga ühendamiseks avage leht Seaded</translation>
 <translation id="7978412674231730200">Privaatvõti</translation>
+<translation id="7982789257301363584">Võrk</translation>
 <translation id="7994702968232966508">EAP meetod</translation>
 <translation id="802154636333426148">Allalaadimine ebaõnnestus</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Praegu ühendatud</translation>
 <translation id="8845001906332463065">Otsige abi</translation>
 <translation id="8855781559874488009">Ei saa HTTP-veebisaitidega läbi tulemüüri ühendust luua</translation>
+<translation id="885701979325669005">Salvestamine</translation>
 <translation id="8863170912498892583">Tumeda teema lubamine</translation>
 <translation id="8863888432376731307">Hankige päringu „<ph name="QUERY" />“ <ph name="INTENT" /> ja muud</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_eu.xtb b/chromeos/strings/chromeos_strings_eu.xtb
index 6521f781..9df1c2b 100644
--- a/chromeos/strings/chromeos_strings_eu.xtb
+++ b/chromeos/strings/chromeos_strings_eu.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Ezarri horma-paper gisa</translation>
 <translation id="1578784163189013834">Aukeratu pantaila-babeslearen atzeko planoa</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> ezkeroko datu-erabilera</translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Abiarazi kargatzeko prozesuaren proba</translation>
 <translation id="1631385268983122904">Ez sartu bateria oraindik</translation>
 <translation id="1639239467298939599">Kargatzen</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Eguneratzeko, sakatu Hurrengoa.</translation>
 <translation id="3434107140712555581">% <ph name="BATTERY_PERCENTAGE" /></translation>
 <translation id="3435738964857648380">Segurtasuna</translation>
+<translation id="3441653493275994384">Pantaila</translation>
 <translation id="3456078764689556234"><ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /> orria inprimatu da.</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" />garren orria eskaneatzen. % <ph name="PERCENTAGE_VALUE" /> osatuta.</translation>
 <translation id="3459509316159669723">Inprimaketa</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Aldatu horma-papera</translation>
 <translation id="360565022852130722">WEP 802.1x protokolo ahulak babesten du wifi-sarea</translation>
 <translation id="3606583719724308068">Latentzia handia HTTPS darabilten webguneak kargatzeko</translation>
+<translation id="3616113530831147358">Audioa</translation>
 <translation id="3621202678540785336">Idazketa</translation>
 <translation id="3632579075709132555">Pribatutasun-pantaila aldatzeko etengailua</translation>
 <translation id="3643810137582748570">Saltatu kalibrazioa</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Desblokeatu RMA zerbitzaria</translation>
 <translation id="4145784616224233563">HTTP protokolorako suebakia</translation>
 <translation id="4147897805161313378">Google Argazkiak</translation>
+<translation id="4150201353443180367">Pantaila</translation>
 <translation id="4155551848414053977">Ziurtatu eskanerra piztuta dagoela eta sarearen edo konexio zuzenaren bidez erabilgarri dagoela</translation>
 <translation id="4159784952369912983">Morea</translation>
 <translation id="4170180284036919717">Atera argazki bat</translation>
@@ -425,6 +429,7 @@
 <translation id="4915052247106771211">Powerwash bidez gailuaren jatorrizko ezarpenak berrezarriko dira.</translation>
 <translation id="4917385247580444890">Sendoa</translation>
 <translation id="4917889632206600977">Geldituta: ez dago paperik</translation>
+<translation id="491791267030419270">Iritzia idazteko aholkuak</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> segundo behar izan dira <ph name="RATE" /> kargatzeko.</translation>
 <translation id="4930320165497208503">Konexio bat konfiguratu edo eguneratzeko, joan <ph name="BEGIN_LINK" />ezarpenetara<ph name="END_LINK" />.</translation>
 <translation id="4932733599132424254">Data</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">Tenperatura</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> sare batean sartzeko, joan ezarpenetara</translation>
 <translation id="7978412674231730200">Gako pribatua</translation>
+<translation id="7982789257301363584">Sarea</translation>
 <translation id="7994702968232966508">EAP metodoa</translation>
 <translation id="802154636333426148">Ezin izan da deskargatu</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">Konektatuta daudenak</translation>
 <translation id="8845001906332463065">Lortu laguntza</translation>
 <translation id="8855781559874488009">Ezin da konektatu HTTP darabilten webguneetara suebakiaren bidez</translation>
+<translation id="885701979325669005">Biltegia</translation>
 <translation id="8863170912498892583">Gaitu gai iluna</translation>
 <translation id="8863888432376731307">Eskuratu "<ph name="QUERY" />" adierazpenaren <ph name="INTENT" /> eta beste</translation>
 <translation id="8868741746785112895">GUIDa</translation>
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb
index ddf37cd..322080be 100644
--- a/chromeos/strings/chromeos_strings_fa.xtb
+++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">تنظیم به‌عنوان کاغذدیواری</translation>
 <translation id="1578784163189013834">انتخاب پس‌زمینه محافظ صفحه</translation>
 <translation id="1615335640928990664">مصرف داده از <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">دوربین</translation>
 <translation id="1621067168122174824">اجرای آزمایش شارژ</translation>
 <translation id="1631385268983122904">هنوز دستگاه را سرهم نکنید</translation>
 <translation id="1639239467298939599">بارگیری</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">تحت مدیریت <ph name="FIRST_MANAGER" /> و <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">سرورهای نام</translation>
 <translation id="1731082422893354635">تاچ‌پد بلوتوث</translation>
+<translation id="1745577949879301685">تصویرها بار نشد. اتصال شبکه را بررسی کنید یا دوباره برای بار کردن تصویرها تلاش کنید.</translation>
 <translation id="1751249301761991853">شخصی</translation>
 <translation id="1753496554272155572">خروج از پیش‌نمای کاغذدیواری</translation>
 <translation id="175763766237925754">خوب (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">برای به‌روزرسانی، روی «بعدی» کلیک کنید.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />٪</translation>
 <translation id="3435738964857648380">امنیت</translation>
+<translation id="3441653493275994384">صفحه</translation>
 <translation id="3456078764689556234">صفحه <ph name="PRINTED_PAGES" /> از مجموع <ph name="TOTAL_PAGES" /> صفحه چاپ شده است.</translation>
 <translation id="345898999683440380">درحال اسکن کردن صفحه <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />٪ انجام شده است.</translation>
 <translation id="3459509316159669723">درحال چاپ</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">تغییر کاغذدیواری</translation>
 <translation id="360565022852130722">‏شبکه Wi-Fi با پروتکل ضعیف WEP 802.1x ایمن شده است</translation>
 <translation id="3606583719724308068">‏تأخیر بالا در وب‌سایت‌های HTTPS</translation>
+<translation id="3616113530831147358">صوتی</translation>
 <translation id="3621202678540785336">ورودی</translation>
 <translation id="3632579075709132555">پنهان/ نمایان کردن صفحه حریم‌خصوصی</translation>
 <translation id="3643810137582748570">رد کردن واسنجی</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">‏اجرای باز کردن قفل سرور RMA (مجوز پس دادن کالا)</translation>
 <translation id="4145784616224233563">‏دیوار آتش HTTPS</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">صفحه‌نمایش</translation>
 <translation id="4155551848414053977">مطمئن شوید اسکنر روشن باشد و ازطریق شبکه یا اتصال مستقیم دردسترس باشد</translation>
 <translation id="4159784952369912983">بنفش</translation>
 <translation id="4170180284036919717">گرفتن عکس</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">دما</translation>
 <translation id="7977800524392185497">برای پیوستن به <ph name="NETWORK_NAME" />، به «تنظیمات» بروید</translation>
 <translation id="7978412674231730200">کلید خصوصی</translation>
+<translation id="7982789257301363584">شبکه</translation>
 <translation id="7994702968232966508">‏روش EAP</translation>
 <translation id="802154636333426148">بارگیری نشد</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">درحال‌حاضر متصل</translation>
 <translation id="8845001906332463065">دریافت راهنمایی</translation>
 <translation id="8855781559874488009">‏نمی‌توان ازطریق دیوار آتش به وب‌سایت‌های HTTP متصل شد</translation>
+<translation id="885701979325669005">فضای ذخیره‌سازی</translation>
 <translation id="8863170912498892583">فعال کردن زمینه تیره</translation>
 <translation id="8863888432376731307">دریافت <ph name="INTENT" /> برای «<ph name="QUERY" />» و موارد دیگر</translation>
 <translation id="8868741746785112895">شناسه منحصربه‌فرد جهانی</translation>
diff --git a/chromeos/strings/chromeos_strings_fi.xtb b/chromeos/strings/chromeos_strings_fi.xtb
index 7ecf853..9b1d220 100644
--- a/chromeos/strings/chromeos_strings_fi.xtb
+++ b/chromeos/strings/chromeos_strings_fi.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Aseta taustakuvaksi</translation>
 <translation id="1578784163189013834">Valitse näytönsäästäjän tausta</translation>
 <translation id="1615335640928990664">Datan käyttö <ph name="FRIENDLY_DATE" /> jälkeen</translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Suorita lataustesti</translation>
 <translation id="1631385268983122904">Älä kokoa laitetta vielä</translation>
 <translation id="1639239467298939599">Ladataan</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">Ylläpitäjät: <ph name="FIRST_MANAGER" /> ja <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">Nimipalvelimet</translation>
 <translation id="1731082422893354635">Bluetooth-kosketuslevy</translation>
+<translation id="1745577949879301685">Kuvien lataaminen epäonnistui. Tarkista verkkoyhteytesi tai kokeile kuvien lataamista uudelleen.</translation>
 <translation id="1751249301761991853">Henkilökohtainen</translation>
 <translation id="1753496554272155572">Poistu taustakuvan esikatselusta</translation>
 <translation id="175763766237925754">Hyvä (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">Jatka päivitystä valitsemalla Seuraava</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="3435738964857648380">Suojaus</translation>
+<translation id="3441653493275994384">Näyttö</translation>
 <translation id="3456078764689556234">Tulostettu <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /> sivua.</translation>
 <translation id="345898999683440380">Skannataan sivu <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % valmis.</translation>
 <translation id="3459509316159669723">Tulostaminen</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">Vaihda taustakuva</translation>
 <translation id="360565022852130722">Wi-Fi-verkko on suojattu heikolla WEP 802.1x -protokollalla</translation>
 <translation id="3606583719724308068">Pitkä viive HTTPS-sivustoille</translation>
+<translation id="3616113530831147358">Ääni</translation>
 <translation id="3621202678540785336">Äänitulo:</translation>
 <translation id="3632579075709132555">Yksityinen näkyvyys päälle/pois</translation>
 <translation id="3643810137582748570">Ohita kalibrointi</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">Avaa palvelin tuotepalautusvaltuutusta varten</translation>
 <translation id="4145784616224233563">HTTP-palomuuri</translation>
 <translation id="4147897805161313378">Google Kuvat</translation>
+<translation id="4150201353443180367">Näyttö</translation>
 <translation id="4155551848414053977">Varmista, että skanneri on päällä ja käytettävissä verkkosi tai suoran yhteyden kautta</translation>
 <translation id="4159784952369912983">Violetti</translation>
 <translation id="4170180284036919717">Ota kuva</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">Lämpötila</translation>
 <translation id="7977800524392185497">Liity <ph name="NETWORK_NAME" />-verkkoon avaamalla Asetukset</translation>
 <translation id="7978412674231730200">Yksityinen avain</translation>
+<translation id="7982789257301363584">Verkko</translation>
 <translation id="7994702968232966508">EAP-tapa</translation>
 <translation id="802154636333426148">Lataus epäonnistui.</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">Yhdistetty tällä hetkellä</translation>
 <translation id="8845001906332463065">Hae ohjeita</translation>
 <translation id="8855781559874488009">HTTP-sivustoihin ei voi yhdistää palomuurin läpi</translation>
+<translation id="885701979325669005">Tallennus</translation>
 <translation id="8863170912498892583">Ota tumma teema käyttöön</translation>
 <translation id="8863888432376731307">Hae <ph name="INTENT" />: "<ph name="QUERY" />" ja muita</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_fil.xtb b/chromeos/strings/chromeos_strings_fil.xtb
index 4acad52..73a2ea0 100644
--- a/chromeos/strings/chromeos_strings_fil.xtb
+++ b/chromeos/strings/chromeos_strings_fil.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Itakda bilang wallpaper</translation>
 <translation id="1578784163189013834">Pumili ng background ng screen saver</translation>
 <translation id="1615335640928990664">Paggamit ng data simula noong <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Camera</translation>
 <translation id="1621067168122174824">Patakbuhin ang pagsusuri sa Pag-charge</translation>
 <translation id="1631385268983122904">Huwag munang i-assemble ulit ang device</translation>
 <translation id="1639239467298939599">Naglo-load</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">Pinapamahalaan ng <ph name="FIRST_MANAGER" /> at <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">Mga name server</translation>
 <translation id="1731082422893354635">Bluetooth na touchpad</translation>
+<translation id="1745577949879301685">Hindi ma-load ang mga larawan. Suriin ang iyong koneksyon sa network o subukang i-load ulit ang mga larawan.</translation>
 <translation id="1751249301761991853">Personal</translation>
 <translation id="1753496554272155572">Lumabas sa preview ng wallpaper</translation>
 <translation id="175763766237925754">Mabilis (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">Para magpatuloy sa update, i-click ang Susunod.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Seguridad</translation>
+<translation id="3441653493275994384">Screen</translation>
 <translation id="3456078764689556234">Na-print ang page <ph name="PRINTED_PAGES" /> sa <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Sina-scan ang pahina <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% na ang natapos.</translation>
 <translation id="3459509316159669723">Pagpi-print</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">Palitan ang wallpaper</translation>
 <translation id="360565022852130722">Naka-secure ang WiFi network gamit ang mahinang protocol na WEP 802.1x</translation>
 <translation id="3606583719724308068">Mataas ang latency sa mga HTTPS na website</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Input</translation>
 <translation id="3632579075709132555">Toggle ng Privacy screen</translation>
 <translation id="3643810137582748570">Laktawan ang pag-calibrate</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">I-unlock ang RMA Server</translation>
 <translation id="4145784616224233563">Firewall ng HTTP</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">Display</translation>
 <translation id="4155551848414053977">Tiyaking naka-on ang scanner at available ito sa pamamagitan ng iyong network o ng isang direktang koneksyon</translation>
 <translation id="4159784952369912983">Lila</translation>
 <translation id="4170180284036919717">Kumuha ng larawan</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Para sumali sa isang <ph name="NETWORK_NAME" /> network, pumunta sa Mga Setting</translation>
 <translation id="7978412674231730200">Private na key</translation>
+<translation id="7982789257301363584">Network</translation>
 <translation id="7994702968232966508">Pamamaraang EAP</translation>
 <translation id="802154636333426148">Hindi na-download</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">Kasalukuyang nakakonekta</translation>
 <translation id="8845001906332463065">Humingi ng tulong</translation>
 <translation id="8855781559874488009">Hindi makakonekta sa pamamagitan ng firewall sa mga HTTP na website</translation>
+<translation id="885701979325669005">Storage</translation>
 <translation id="8863170912498892583">I-enable ng madilim na tema</translation>
 <translation id="8863888432376731307">Kunin ang <ph name="INTENT" /> para sa "<ph name="QUERY" />" at higit pa</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_fr-CA.xtb b/chromeos/strings/chromeos_strings_fr-CA.xtb
index f181089e..40294de 100644
--- a/chromeos/strings/chromeos_strings_fr-CA.xtb
+++ b/chromeos/strings/chromeos_strings_fr-CA.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Définir comme fond d'écran</translation>
 <translation id="1578784163189013834">Choisir l'arrière-plan de l'écran de veille</translation>
 <translation id="1615335640928990664">Utilisation de données depuis le <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Caméra</translation>
 <translation id="1621067168122174824">Exécuter le test de recharge</translation>
 <translation id="1631385268983122904">Ne remettez pas la pile tout de suite</translation>
 <translation id="1639239467298939599">Chargement en cours</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">Géré par <ph name="FIRST_MANAGER" /> et par <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">Serveurs de noms</translation>
 <translation id="1731082422893354635">Pavé tactile Bluethooth</translation>
+<translation id="1745577949879301685">Impossible de charger les images. Vérifiez votre connexion réseau ou essayez de charger les images à nouveau.</translation>
 <translation id="1751249301761991853">Personnel</translation>
 <translation id="1753496554272155572">Quitter l'aperçu des fonds d'écran</translation>
 <translation id="175763766237925754">Bon (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">Pour lancer la mise à jour, cliquez sur Suivant.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="3435738964857648380">Sécurité</translation>
+<translation id="3441653493275994384">Écran</translation>
 <translation id="3456078764689556234">Page imprimée <ph name="PRINTED_PAGES" /> sur <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Numérisation de la page <ph name="PAGE_NUM" /> en cours… Progression : <ph name="PERCENTAGE_VALUE" /> %.</translation>
 <translation id="3459509316159669723">Impression</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">Changer de fond d'écran</translation>
 <translation id="360565022852130722">Le réseau Wi-Fi est sécurisé par un protocole faible : WEP 802.1x</translation>
 <translation id="3606583719724308068">Latence élevée pour les sites Web utilisant le protocole HTTPS</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Entrée</translation>
 <translation id="3632579075709132555">Commutateur de l'écran de confidentialité</translation>
 <translation id="3643810137582748570">Ignorer le calibrage</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">Effectuer le déverrouillage du serveur ARM</translation>
 <translation id="4145784616224233563">Pare-feu HTTP</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">Affichage</translation>
 <translation id="4155551848414053977">Assurez-vous que le numériseur est allumé et accessible par le biais de votre réseau ou d'une connexion directe</translation>
 <translation id="4159784952369912983">Mauve</translation>
 <translation id="4170180284036919717">Prendre une photo</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">Température</translation>
 <translation id="7977800524392185497">Pour vous connecter à un réseau <ph name="NETWORK_NAME" />, accédez à Paramètres</translation>
 <translation id="7978412674231730200">Clé privée</translation>
+<translation id="7982789257301363584">Réseau</translation>
 <translation id="7994702968232966508">Méthode EAP</translation>
 <translation id="802154636333426148">Échec du téléchargement</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">Actuellement connecté</translation>
 <translation id="8845001906332463065">Obtenir de l'aide</translation>
 <translation id="8855781559874488009">Impossible de se connecter à travers le pare-feu à des sites Web utilisant le protocole HTTP</translation>
+<translation id="885701979325669005">Stockage</translation>
 <translation id="8863170912498892583">Activer le thème sombre</translation>
 <translation id="8863888432376731307">Obtenir la <ph name="INTENT" /> du terme « <ph name="QUERY" /> » et plus</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_fr.xtb b/chromeos/strings/chromeos_strings_fr.xtb
index 2566a24..13cc2b7 100644
--- a/chromeos/strings/chromeos_strings_fr.xtb
+++ b/chromeos/strings/chromeos_strings_fr.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Définir comme fond d'écran</translation>
 <translation id="1578784163189013834">Sélectionner l'arrière-plan pour l'économiseur d'écran</translation>
 <translation id="1615335640928990664">Consommation des données depuis le <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Caméra</translation>
 <translation id="1621067168122174824">Lancer le test de recharge</translation>
 <translation id="1631385268983122904">Ne réassemblez pas encore l'appareil</translation>
 <translation id="1639239467298939599">Chargement en cours</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Pour lancer la mise à jour, cliquez sur "Suivant".</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="3435738964857648380">Sécurité</translation>
+<translation id="3441653493275994384">Écran</translation>
 <translation id="3456078764689556234">Page imprimée : <ph name="PRINTED_PAGES" /> sur <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Numérisation de la page <ph name="PAGE_NUM" />… Numérisation terminée à <ph name="PERCENTAGE_VALUE" /> %.</translation>
 <translation id="3459509316159669723">Impression</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Changer de fond d'écran</translation>
 <translation id="360565022852130722">Le réseau Wi-Fi est protégé par le protocole peu sécurisé WEP 802.1x</translation>
 <translation id="3606583719724308068">Latence élevée avec les sites HTTPS</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Entrée</translation>
 <translation id="3632579075709132555">Activer/Désactiver l'écran de confidentialité</translation>
 <translation id="3643810137582748570">Passer le calibrage</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Effectuer un déverrouillage de serveur RMA</translation>
 <translation id="4145784616224233563">Pare-feu HTTP</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">Écran</translation>
 <translation id="4155551848414053977">Assurez-vous que le scanner est allumé et disponible pour la connexion réseau ou filaire.</translation>
 <translation id="4159784952369912983">Violet</translation>
 <translation id="4170180284036919717">Prendre une photo</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Température</translation>
 <translation id="7977800524392185497">Pour rejoindre un réseau <ph name="NETWORK_NAME" />, accédez à Paramètres</translation>
 <translation id="7978412674231730200">Clé privée</translation>
+<translation id="7982789257301363584">Réseau</translation>
 <translation id="7994702968232966508">Méthode EAP</translation>
 <translation id="802154636333426148">Échec du téléchargement</translation>
 <translation id="8031884997696620457">HSPA+</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Actuellement connectés</translation>
 <translation id="8845001906332463065">Obtenir de l'aide</translation>
 <translation id="8855781559874488009">Impossible de se connecter aux sites HTTP via le pare-feu</translation>
+<translation id="885701979325669005">Données stockées</translation>
 <translation id="8863170912498892583">Activer le thème sombre</translation>
 <translation id="8863888432376731307">Obtenir la <ph name="INTENT" /> pour "<ph name="QUERY" />" et plus</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_gl.xtb b/chromeos/strings/chromeos_strings_gl.xtb
index dadc833..56ef4588 100644
--- a/chromeos/strings/chromeos_strings_gl.xtb
+++ b/chromeos/strings/chromeos_strings_gl.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">Menú de aplicacións</translation>
 <translation id="1512982610995527443">O dispositivo apagarase dentro de 5 segundos</translation>
 <translation id="1522984060396982789">Reparouse correctamente. Podes apagar o dispositivo ou tomar medidas adicionais.</translation>
+<translation id="1526389707933164996">Animación do protector de pantalla</translation>
 <translation id="152892567002884378">Sube o volume</translation>
 <translation id="1555130319947370107">Azul</translation>
 <translation id="155865706765934889">Panel táctil</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">Definir como fondo de pantalla</translation>
 <translation id="1578784163189013834">Escoller o fondo do salvapantallas</translation>
 <translation id="1615335640928990664">Uso de datos desde o <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Cámara</translation>
 <translation id="1621067168122174824">Realizar proba de carga</translation>
 <translation id="1631385268983122904">Non montes aínda o dispositivo</translation>
 <translation id="1639239467298939599">Cargando</translation>
@@ -257,6 +259,7 @@
 <translation id="3413935475507503304">Para continuar coa actualización, fai clic en Seguinte.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="3435738964857648380">Seguranza</translation>
+<translation id="3441653493275994384">Pantalla</translation>
 <translation id="3456078764689556234">Páxina <ph name="PRINTED_PAGES" /> de <ph name="TOTAL_PAGES" /> impresa.</translation>
 <translation id="345898999683440380">Escaneando páxina <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % completado.</translation>
 <translation id="3459509316159669723">Impresión</translation>
@@ -279,6 +282,7 @@
 <translation id="3604713164406837697">Cambiar fondo de pantalla</translation>
 <translation id="360565022852130722">A rede wifi está protexida co protocolo WEP 802.1x, que non é moi seguro</translation>
 <translation id="3606583719724308068">Latencia alta en sitios web HTTPS</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Entrada</translation>
 <translation id="3632579075709132555">Activar/Desactivar pantalla de privacidade</translation>
 <translation id="3643810137582748570">Omitir calibración</translation>
@@ -300,6 +304,7 @@
 <translation id="3858860766373142691">Nome</translation>
 <translation id="3865414814144988605">Resolución</translation>
 <translation id="387301095347517405">Número de veces que a batería se someteu a un ciclo de carga completo</translation>
+<translation id="3885327323343477505">Cambiar protector de pantalla</translation>
 <translation id="3923184630988645767">Uso de datos</translation>
 <translation id="3924044641767672375">Recomendámosche que te conectes á wifi para que o proceso de reparación sexa máis sinxelo. Gardarase a túa rede.</translation>
 <translation id="3932043219784172185">Ningún dispositivo conectado</translation>
@@ -327,6 +332,7 @@
 <translation id="4140251671072434548">Levar a cabo o desbloqueo do servidor de autorización de devolución de mercadoría</translation>
 <translation id="4145784616224233563">Firewall HTTP</translation>
 <translation id="4147897805161313378">Google Fotos</translation>
+<translation id="4150201353443180367">Pantalla</translation>
 <translation id="4155551848414053977">Asegúrate de que o escáner estea acendido e dispoñible a través da túa rede ou mediante unha conexión directa</translation>
 <translation id="4159784952369912983">Púrpura</translation>
 <translation id="4170180284036919717">Tirar unha foto</translation>
@@ -418,6 +424,7 @@
 <translation id="4890353053343094602">Escolle un novo inmediatamente</translation>
 <translation id="4891842000192098784">Estrés</translation>
 <translation id="4897058166682006107">Nivel de batería do auricular esquerdo do dispositivo: <ph name="BATTERY_PERCENTAGE" /> %.</translation>
+<translation id="4905998861748258752">Activa a función para seleccionar as opcións de protector de pantalla</translation>
 <translation id="4908030561598728899">Instalando firmware…</translation>
 <translation id="4915052247106771211">Ao marcar esta opción, restablecerase a configuración de fábrica do dispositivo (Powerwash).</translation>
 <translation id="4917385247580444890">Forte</translation>
@@ -742,6 +749,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Para unirte a unha rede <ph name="NETWORK_NAME" />, vai a Configuración</translation>
 <translation id="7978412674231730200">Clave privada</translation>
+<translation id="7982789257301363584">Rede</translation>
 <translation id="7994702968232966508">Método EAP</translation>
 <translation id="802154636333426148">Produciuse un erro na descarga</translation>
 <translation id="8031884997696620457">HSPA+</translation>
@@ -836,6 +844,7 @@
 <translation id="8834539327799336565">Dispositivos conectados actualmente</translation>
 <translation id="8845001906332463065">Obter axuda</translation>
 <translation id="8855781559874488009">Non se puido establecer conexión con sitios web HTTP a través do firewall</translation>
+<translation id="885701979325669005">Almacenamento</translation>
 <translation id="8863170912498892583">Activar tema escuro</translation>
 <translation id="8863888432376731307">Obtén a <ph name="INTENT" /> de "<ph name="QUERY" />" e moito máis</translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -861,6 +870,7 @@
 <translation id="8997710128084572139">Nivel de batería do dispositivo: <ph name="BATTERY_PERCENTAGE" /> %.</translation>
 <translation id="9003704114456258138">Frecuencia</translation>
 <translation id="9025198690966128418">Utilizar como dispositivo persoal</translation>
+<translation id="9028832514430399253">Activa o interruptor para seleccionar as opcións do protector de pantalla</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">A resolución de DNS ten latencia alta</translation>
 <translation id="9063121522582193837">Non se puideron calibrar algúns compoñentes</translation>
diff --git a/chromeos/strings/chromeos_strings_gu.xtb b/chromeos/strings/chromeos_strings_gu.xtb
index 05fc687..df24d156 100644
--- a/chromeos/strings/chromeos_strings_gu.xtb
+++ b/chromeos/strings/chromeos_strings_gu.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">લૉન્ચર</translation>
 <translation id="1512982610995527443">5 સેકન્ડમાં ડિવાઇસ શટ ડાઉન થઈ જશે</translation>
 <translation id="1522984060396982789">તમારી રિપેરની પ્રક્રિયા પૂર્ણ થઈ. તમે ડિવાઇસ શટ ડાઉન કરી શકો છો અથવા થોડા વધારાના પગલાં લઈ શકો છો.</translation>
+<translation id="1526389707933164996">સ્ક્રીન સેવર ઍનિમેશન</translation>
 <translation id="152892567002884378">વૉલ્યૂમ વધારો</translation>
 <translation id="1555130319947370107">વાદળી</translation>
 <translation id="155865706765934889">Touchpad</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">વૉલપેપર તરીકે સેટ કરો</translation>
 <translation id="1578784163189013834">સ્ક્રીન સેવરનું બૅકગ્રાઉન્ડ પસંદ કરો</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" />થી ડેટા વપરાશ</translation>
+<translation id="1620510694547887537">કૅમેરા</translation>
 <translation id="1621067168122174824">ચાર્જિંગનું પરીક્ષણ ચાલુ કરો</translation>
 <translation id="1631385268983122904">ડિવાઇસને હમણાં પાછું જોડશો નહીં</translation>
 <translation id="1639239467298939599">લોડ કરી રહ્યું છે</translation>
@@ -93,6 +95,7 @@
 <translation id="1717874160321062422"><ph name="FIRST_MANAGER" /> અને <ph name="SECOND_MANAGER" /> દ્વારા મેનેજ કરવામાં આવે છે</translation>
 <translation id="1726100011689679555">નામ સર્વર</translation>
 <translation id="1731082422893354635">બ્લૂટૂથ ટચપૅડ</translation>
+<translation id="1745577949879301685">છબીઓ લોડ કરી શકાઈ નથી. તમારું નેટવર્ક કનેક્શન ચેક કરો અથવા છબીઓ ફરી લોડ કરવાનો પ્રયાસ કરો.</translation>
 <translation id="1751249301761991853">વ્યક્તિગત</translation>
 <translation id="1753496554272155572">વૉલપેપર પ્રીવ્યૂમાંથી બહાર નીકળો</translation>
 <translation id="175763766237925754">સારું (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -257,6 +260,7 @@
 <translation id="3413935475507503304">અપડેટમાં આગળ વધવા માટે આગળ પર ક્લિક કરો.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">સુરક્ષા</translation>
+<translation id="3441653493275994384">સ્કિન</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" />માંથી <ph name="PRINTED_PAGES" /> પેજ પ્રિન્ટ કર્યા.</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" /> નંબરનું પેજ સ્કૅન કરી રહ્યાં છીએ. <ph name="PERCENTAGE_VALUE" />% પૂર્ણ થયું.</translation>
 <translation id="3459509316159669723">છાપવું</translation>
@@ -279,6 +283,7 @@
 <translation id="3604713164406837697">વૉલપેપર બદલો</translation>
 <translation id="360565022852130722">વાઇ-ફાઇ નેટવર્કની સુરક્ષા પ્રમાણમાં નબળા WEP 802.1x પ્રોટોકૉલ વડે કરવામાં આવી છે</translation>
 <translation id="3606583719724308068">HTTPS વેબસાઇટ માટે વિલંબતાનો સમય ઘણો વધુ છે</translation>
+<translation id="3616113530831147358">ઑડિઓ</translation>
 <translation id="3621202678540785336">ઇનપુટ</translation>
 <translation id="3632579075709132555">પ્રાઇવસી સ્ક્રીન ટૉગલ કરો</translation>
 <translation id="3643810137582748570">કેલિબ્રેશન છોડો</translation>
@@ -300,6 +305,7 @@
 <translation id="3858860766373142691">નામ</translation>
 <translation id="3865414814144988605">રિઝોલ્યુશન</translation>
 <translation id="387301095347517405">તમારી બૅટરી પૂર્ણ ચાર્જિંગ સાયકલમાંથી પસાર થયાની સંખ્યા</translation>
+<translation id="3885327323343477505">સ્ક્રીન સેવર બદલો</translation>
 <translation id="3923184630988645767">ડેટા વપરાશ</translation>
 <translation id="3924044641767672375">ઠીક કરવાની પ્રક્રિયા વધુ સરળ બનાવવા માટે, વાઇ-ફાઇ સાથે કનેક્ટ કરવાનો સુઝાવ આપવામાં આવે છે. તમારું નેટવર્ક સાચવવામાં આવશે.</translation>
 <translation id="3932043219784172185">કોઈ ડિવાઇસ કનેક્ટ કરેલું નથી</translation>
@@ -327,6 +333,7 @@
 <translation id="4140251671072434548">RMA સર્વર અનલૉક કરો</translation>
 <translation id="4145784616224233563">HTTP ફાયરવૉલ</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">ડિસ્પ્લે</translation>
 <translation id="4155551848414053977">ખાતરી કરો કે સ્કૅનર ચાલુ કરેલું છે અને તમારા નેટવર્ક અથવા સીધા જોડાણ મારફતે ઉપલબ્ધ છે</translation>
 <translation id="4159784952369912983">જાંબલી</translation>
 <translation id="4170180284036919717">ફોટો લો</translation>
@@ -418,6 +425,7 @@
 <translation id="4890353053343094602">તરત જ નવો પાસવર્ડ પસંદ કરો</translation>
 <translation id="4891842000192098784">તાણ</translation>
 <translation id="4897058166682006107">ડિવાઇસના ડાબા ઇયરબડમાં <ph name="BATTERY_PERCENTAGE" />% બૅટરી છે.</translation>
+<translation id="4905998861748258752">સ્ક્રીન સેવરના વિકલ્પો પસંદ કરવા માટે ઍમ્બિઅન્ટ મોડની સુવિધા ચાલુ કરો</translation>
 <translation id="4908030561598728899">ફર્મવેયર ઇન્સ્ટૉલ કરી રહ્યાં છીએ...</translation>
 <translation id="4915052247106771211">આને કારણે ડિવાઇસને ફેક્ટરી સેટિંગ (પાવરવોશ) પર રીસેટ કરવામાં આવશે.</translation>
 <translation id="4917385247580444890">સશક્ત</translation>
@@ -741,6 +749,7 @@
 <translation id="7960831585769876809">તાપમાન</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> નેટવર્ક સાથે જોડાવા માટે, સેટિંગમાં જાઓ</translation>
 <translation id="7978412674231730200">ખાનગી કી</translation>
+<translation id="7982789257301363584">નેટવર્ક</translation>
 <translation id="7994702968232966508">EAP પદ્ધતિ</translation>
 <translation id="802154636333426148">ડાઉનલોડ નિષ્ફળ થયું</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -835,6 +844,7 @@
 <translation id="8834539327799336565">હાલમાં કનેક્ટેડ</translation>
 <translation id="8845001906332463065">સહાય મેળવો</translation>
 <translation id="8855781559874488009">ફાયરવૉલ મારફતે HTTP વેબસાઇટ સાથે કનેક્ટ કરી શકતા નથી</translation>
+<translation id="885701979325669005">સ્ટોરેજ</translation>
 <translation id="8863170912498892583">ઘેરી થીમ ચાલુ કરો</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" માટે <ph name="INTENT" /> અને વધુ મેળવો</translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -860,6 +870,7 @@
 <translation id="8997710128084572139">ડિવાઇસમાં <ph name="BATTERY_PERCENTAGE" />% બૅટરી છે.</translation>
 <translation id="9003704114456258138">આવર્તન</translation>
 <translation id="9025198690966128418">વ્યક્તિગત ડિવાઇસ તરીકે ઉપયોગ કરો</translation>
+<translation id="9028832514430399253">સ્ક્રીન સેવરના વિકલ્પો પસંદ કરવા માટે ટૉગલને ચાલુ કરો</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">DNSના રિઝોલ્યુશનની વિલંબતાનો સમય ઘણો વધુ છે</translation>
 <translation id="9063121522582193837">કેટલાક ઘટકો કેલિબ્રેટ કરી શક્યાં નથી</translation>
diff --git a/chromeos/strings/chromeos_strings_hi.xtb b/chromeos/strings/chromeos_strings_hi.xtb
index 7fb4bbe9..9b2850cf 100644
--- a/chromeos/strings/chromeos_strings_hi.xtb
+++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">वॉलपेपर के तौर पर सेट करें</translation>
 <translation id="1578784163189013834">स्क्रीन सेवर का बैकग्राउंड चुनें</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> से लेकर अब तक इस्तेमाल किया गया डेटा</translation>
+<translation id="1620510694547887537">कैमरा</translation>
 <translation id="1621067168122174824">चार्ज टेस्ट चलाएं</translation>
 <translation id="1631385268983122904">डिवाइस में अभी बैटरी न लगाएं</translation>
 <translation id="1639239467298939599">लोड हो रहा है</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">इसे <ph name="FIRST_MANAGER" /> और<ph name="SECOND_MANAGER" /> मैनेज करते हैं</translation>
 <translation id="1726100011689679555">नाम सर्वर</translation>
 <translation id="1731082422893354635">ब्लूटूथ टचपैड</translation>
+<translation id="1745577949879301685">इमेज लोड नहीं की जा सकीं. अपने इंटरनेट कनेक्शन की जांच करें या इमेज फिर से लोड करके देखें.</translation>
 <translation id="1751249301761991853">मनमुताबिक सेटिंग</translation>
 <translation id="1753496554272155572">वॉलपेपर की झलक से बाहर निकलें</translation>
 <translation id="175763766237925754">सिग्नल अच्छा है (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">अपडेट करने के लिए 'आगे बढ़ें' पर क्लिक करें.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">सुरक्षा</translation>
+<translation id="3441653493275994384">स्क्रीन</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> में से <ph name="PRINTED_PAGES" /> पेज प्रिंट किए गए.</translation>
 <translation id="345898999683440380">पेज <ph name="PAGE_NUM" /> को स्कैन किया जा रहा है. <ph name="PERCENTAGE_VALUE" />% पूरा हो गया.</translation>
 <translation id="3459509316159669723">प्रिंट करना</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">वॉलपेपर बदलें</translation>
 <translation id="360565022852130722">यह वाई-फ़ाई नेटवर्क एक कमज़ोर प्रोटोकॉल WEP 802.1x से सुरक्षित है</translation>
 <translation id="3606583719724308068">एचटीटीपीएस वेबसाइटों के लिए, इंतज़ार का समय ज़्यादा है</translation>
+<translation id="3616113530831147358">ऑडियो</translation>
 <translation id="3621202678540785336">इनपुट</translation>
 <translation id="3632579075709132555">निजता स्क्रीन टॉगल करने वाला बटन</translation>
 <translation id="3643810137582748570">अभी कैलिब्रेट न करें</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">आरएमए सर्वर को अनलॉक करें</translation>
 <translation id="4145784616224233563">एचटीटीपी फ़ायरवॉल</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">डिसप्ले</translation>
 <translation id="4155551848414053977">पक्का करें कि स्कैनर चालू हो और आपके नेटवर्क या डायरेक्ट कनेक्शन के ज़रिए उपलब्ध हो</translation>
 <translation id="4159784952369912983">बैंगनी</translation>
 <translation id="4170180284036919717">फ़ोटो लें</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">तापमान</translation>
 <translation id="7977800524392185497">किसी <ph name="NETWORK_NAME" /> नेटवर्क से जुड़ने के लिए, सेटिंग पर जाएं</translation>
 <translation id="7978412674231730200">निजी कुंजी</translation>
+<translation id="7982789257301363584">नेटवर्क</translation>
 <translation id="7994702968232966508">EAP विधि</translation>
 <translation id="802154636333426148">डाउनलोड विफल रहा</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">फ़िलहाल, कनेक्ट किए गए डिवाइस</translation>
 <translation id="8845001906332463065">सहायता पाएं</translation>
 <translation id="8855781559874488009">फ़ायरवॉल के ज़रिए, एचटीटीपी वेबसाइटों से नहीं जोड़ा जा सकता</translation>
+<translation id="885701979325669005">मेमोरी</translation>
 <translation id="8863170912498892583">गहरे रंग वाली थीम चालू करें</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" और बाकी चीज़ों के लिए <ph name="INTENT" /> पाएं</translation>
 <translation id="8868741746785112895">GUID (ग्लोबली यूनीक आइडेंटिफ़ायर)</translation>
diff --git a/chromeos/strings/chromeos_strings_hr.xtb b/chromeos/strings/chromeos_strings_hr.xtb
index 1df1b7b..f88b7f82 100644
--- a/chromeos/strings/chromeos_strings_hr.xtb
+++ b/chromeos/strings/chromeos_strings_hr.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Postavi kao pozadinu</translation>
 <translation id="1578784163189013834">Odabir pozadine čuvara zaslona</translation>
 <translation id="1615335640928990664">Potrošnja podatkovnog prometa od <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Fotoaparat</translation>
 <translation id="1621067168122174824">Pokreni test napunjenosti</translation>
 <translation id="1631385268983122904">Još nemojte sastavljati uređaj</translation>
 <translation id="1639239467298939599">Učitavanje</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">Upravljaju <ph name="FIRST_MANAGER" /> i <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">Poslužitelji naziva</translation>
 <translation id="1731082422893354635">Bluetooth dodirna podloga</translation>
+<translation id="1745577949879301685">Učitavanje slika nije uspjelo. Provjerite mrežnu vezu ili pokušajte ponovo učitati slike.</translation>
 <translation id="1751249301761991853">Osobno</translation>
 <translation id="1753496554272155572">Zatvaranje pregleda pozadina</translation>
 <translation id="175763766237925754">Dobar (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">Da biste nastavili s ažuriranjem, kliknite Dalje.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Sigurnost</translation>
+<translation id="3441653493275994384">Zaslon</translation>
 <translation id="3456078764689556234">Ispisane stranice: <ph name="PRINTED_PAGES" /> od <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Skeniranje stranice <ph name="PAGE_NUM" />. Dovršeno je <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Ispis</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">Promjena pozadinske slike</translation>
 <translation id="360565022852130722">Wi-Fi mreža zaštićena je slabim protokolom WEP 802.1x</translation>
 <translation id="3606583719724308068">Visoka latencija do HTTPS web-lokacija</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Ulaz</translation>
 <translation id="3632579075709132555">Prekidač zaslona privatnosti</translation>
 <translation id="3643810137582748570">Preskoči kalibraciju</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">Otključavanje RMA poslužitelja</translation>
 <translation id="4145784616224233563">Vatrozid za HTTP</translation>
 <translation id="4147897805161313378">Google fotografije</translation>
+<translation id="4150201353443180367">Zaslon</translation>
 <translation id="4155551848414053977">Provjerite je li skener uključen i dostupan putem vaše mreže ili izravne veze</translation>
 <translation id="4159784952369912983">Ljubičasto</translation>
 <translation id="4170180284036919717">Fotografiraj</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Da biste se pridružili <ph name="NETWORK_NAME" /> mreži, otvorite postavke</translation>
 <translation id="7978412674231730200">Osobni ključ</translation>
+<translation id="7982789257301363584">Mreža</translation>
 <translation id="7994702968232966508">EAP metoda</translation>
 <translation id="802154636333426148">Preuzimanje nije uspjelo</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">Trenutačno povezano</translation>
 <translation id="8845001906332463065">Zatražite pomoć</translation>
 <translation id="8855781559874488009">Povezivanje s HTTP web-lokacijama putem vatrozida nije uspjelo</translation>
+<translation id="885701979325669005">Prostor za pohranu</translation>
 <translation id="8863170912498892583">Omogućivanje tamne teme</translation>
 <translation id="8863888432376731307">Pogledajte <ph name="INTENT" /> za "<ph name="QUERY" />" i još mnogo toga</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_hu.xtb b/chromeos/strings/chromeos_strings_hu.xtb
index 7fc3e2f1..c932529 100644
--- a/chromeos/strings/chromeos_strings_hu.xtb
+++ b/chromeos/strings/chromeos_strings_hu.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Beállítás háttérként</translation>
 <translation id="1578784163189013834">A képernyővédő hátterének kiválasztása</translation>
 <translation id="1615335640928990664">Adathasználat <ph name="FRIENDLY_DATE" /> óta</translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Töltési teszt futtatása</translation>
 <translation id="1631385268983122904">Még ne szerelje össze az eszközt</translation>
 <translation id="1639239467298939599">Betöltés</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">A frissítéssel való folytatáshoz kattintson a Tovább lehetőségre.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Biztonság</translation>
+<translation id="3441653493275994384">Képernyő</translation>
 <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> oldal kinyomtatva (összesen ennyiből: <ph name="TOTAL_PAGES" />).</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" />. oldal beolvasása… <ph name="PERCENTAGE_VALUE" />% kész.</translation>
 <translation id="3459509316159669723">Nyomtatás</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Háttérkép megváltoztatása</translation>
 <translation id="360565022852130722">A Wi-Fi-hálózat gyenge protokollal (WEP 802.1x) van biztosítva</translation>
 <translation id="3606583719724308068">Hosszú a várakozási idő a HTTPS-protokollt használó webhelyekhez való csatlakozáskor</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Bemenet</translation>
 <translation id="3632579075709132555">Az Adatvédelmi képernyő kapcsolója</translation>
 <translation id="3643810137582748570">Kalibrálás kihagyása</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Visszáru-engedélyezés szerverfeloldásának végrehajtása</translation>
 <translation id="4145784616224233563">HTTP-tűzfal</translation>
 <translation id="4147897805161313378">Google Fotók</translation>
+<translation id="4150201353443180367">Megjelenítés</translation>
 <translation id="4155551848414053977">Győződjön meg arról, hogy a szkenner be van kapcsolva, és hogy hozzáférhető a hálózaton vagy közvetlen kapcsolaton keresztül</translation>
 <translation id="4159784952369912983">Lila</translation>
 <translation id="4170180284036919717">Fotó készítése</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Hőmérséklet</translation>
 <translation id="7977800524392185497">A(z) <ph name="NETWORK_NAME" />-hálózathoz való csatlakozáshoz nyissa meg a Beállításokat</translation>
 <translation id="7978412674231730200">Privát kulcs</translation>
+<translation id="7982789257301363584">Hálózat</translation>
 <translation id="7994702968232966508">EAP módszer</translation>
 <translation id="802154636333426148">Nem sikerült a letöltés</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Csatlakoztatva</translation>
 <translation id="8845001906332463065">Súgó</translation>
 <translation id="8855781559874488009">Nem lehet a tűzfalon keresztül HTTP-protokollt használó webhelyekhez csatlakozni</translation>
+<translation id="885701979325669005">Tárolás</translation>
 <translation id="8863170912498892583">Sötét téma bekapcsolása</translation>
 <translation id="8863888432376731307"><ph name="INTENT" /> kérése „<ph name="QUERY" />” és egyebek esetében</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_hy.xtb b/chromeos/strings/chromeos_strings_hy.xtb
index e9f6425..047067e 100644
--- a/chromeos/strings/chromeos_strings_hy.xtb
+++ b/chromeos/strings/chromeos_strings_hy.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Օգտագործել որպես պաստառ</translation>
 <translation id="1578784163189013834">Ընտրել էկրանապահի ֆոն</translation>
 <translation id="1615335640928990664">Տվյալների օգտագործում <ph name="FRIENDLY_DATE" />-ից ի վեր</translation>
+<translation id="1620510694547887537">Տեսախցիկ</translation>
 <translation id="1621067168122174824">Փորձարկել լիցքավորումը</translation>
 <translation id="1631385268983122904">Առայժմ մի դրեք մարտկոցը սարքի մեջ</translation>
 <translation id="1639239467298939599">Բեռնում</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Թարմացումը շարունակելու համար սեղմեք «Առաջ»։</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Անվտանգություն</translation>
+<translation id="3441653493275994384">Էկրան</translation>
 <translation id="3456078764689556234">Տպված էջ՝ <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" />։</translation>
 <translation id="345898999683440380">Սկանավորվում է էջ <ph name="PAGE_NUM" />-ը։ Կատարված է <ph name="PERCENTAGE_VALUE" />%-ը։</translation>
 <translation id="3459509316159669723">Տպում</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Փոխել պաստառը</translation>
 <translation id="360565022852130722">Wi-Fi ցանցը պաշտպանված է WEP 802.1x թույլ հաղորդակարգով</translation>
 <translation id="3606583719724308068">Բարձր հապաղում HTTPS կայքերի համար</translation>
+<translation id="3616113530831147358">Աուդիո</translation>
 <translation id="3621202678540785336">Ներածում</translation>
 <translation id="3632579075709132555">Գաղտնիության էկրանի փոխանջատիչ</translation>
 <translation id="3643810137582748570">Բաց թողնել չափաբերումը</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Ապակողպեք RMA սերվերը</translation>
 <translation id="4145784616224233563">HTTP հրապատ</translation>
 <translation id="4147897805161313378">Google Լուսանկարներ</translation>
+<translation id="4150201353443180367">Էկրան</translation>
 <translation id="4155551848414053977">Համոզվեք, որ սկաներն աշխատում է և հասանելի է ցանցի կամ ուղիղ կապի միջոցով</translation>
 <translation id="4159784952369912983">Մանուշակագույն</translation>
 <translation id="4170180284036919717">Լուսանկարել</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Ջերմաստիճան</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> ցանցի միանալու համար անցեք Կարգավորումներ</translation>
 <translation id="7978412674231730200">Մասնավոր բանալի</translation>
+<translation id="7982789257301363584">Ցանց</translation>
 <translation id="7994702968232966508">EAP եղանակ</translation>
 <translation id="802154636333426148">Ներբեռնումը ձախողվեց</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Միացված է</translation>
 <translation id="8845001906332463065">Օգնություն</translation>
 <translation id="8855781559874488009">Չհաջողվեց միանալ HTTP կայքերին հրապատի միջոցով</translation>
+<translation id="885701979325669005">Պահոց</translation>
 <translation id="8863170912498892583">Միացնել մուգ թեման</translation>
 <translation id="8863888432376731307">Ստացեք «<ph name="QUERY" />» բառի <ph name="INTENT" />ը և ավելին</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_id.xtb b/chromeos/strings/chromeos_strings_id.xtb
index 1dde157..4296a9d 100644
--- a/chromeos/strings/chromeos_strings_id.xtb
+++ b/chromeos/strings/chromeos_strings_id.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Setel sebagai wallpaper</translation>
 <translation id="1578784163189013834">Pilih latar belakang screen saver</translation>
 <translation id="1615335640928990664">Penggunaan data sejak <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Jalankan pengujian Pengisian Daya</translation>
 <translation id="1631385268983122904">Jangan memasang kembali perangkat</translation>
 <translation id="1639239467298939599">Memuat</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Untuk melanjutkan update, klik Berikutnya.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Keamanan</translation>
+<translation id="3441653493275994384">Layar</translation>
 <translation id="3456078764689556234">Mencetak halaman <ph name="PRINTED_PAGES" /> dari <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Memindai halaman <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% selesai.</translation>
 <translation id="3459509316159669723">Pencetakan</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Ubah wallpaper</translation>
 <translation id="360565022852130722">Jaringan Wi-Fi diamankan dengan protokol WEP 802.1x yang lemah</translation>
 <translation id="3606583719724308068">Latensi tinggi untuk situs HTTPS</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Masukan</translation>
 <translation id="3632579075709132555">Beralih layar privasi</translation>
 <translation id="3643810137582748570">Lewati kalibrasi</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Lakukan RMA Server Unlock</translation>
 <translation id="4145784616224233563">Firewall HTTP</translation>
 <translation id="4147897805161313378">Google Foto</translation>
+<translation id="4150201353443180367">Tampilan</translation>
 <translation id="4155551848414053977">Pastikan pemindai dinyalakan dan tersedia melalui jaringan Anda atau koneksi langsung</translation>
 <translation id="4159784952369912983">Ungu</translation>
 <translation id="4170180284036919717">Ambil foto</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Suhu</translation>
 <translation id="7977800524392185497">Untuk bergabung ke jaringan <ph name="NETWORK_NAME" />, buka Setelan</translation>
 <translation id="7978412674231730200">Kunci pribadi</translation>
+<translation id="7982789257301363584">Jaringan</translation>
 <translation id="7994702968232966508">Metode EAP</translation>
 <translation id="802154636333426148">Download gagal</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Saat ini terhubung</translation>
 <translation id="8845001906332463065">Dapatkan bantuan</translation>
 <translation id="8855781559874488009">Tidak dapat terhubung melewati firewall ke situs HTTP</translation>
+<translation id="885701979325669005">Penyimpanan</translation>
 <translation id="8863170912498892583">Aktifkan tema gelap</translation>
 <translation id="8863888432376731307">Dapatkan <ph name="INTENT" /> untuk "<ph name="QUERY" />" dan lainnya</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_is.xtb b/chromeos/strings/chromeos_strings_is.xtb
index ff63a54..ba45002 100644
--- a/chromeos/strings/chromeos_strings_is.xtb
+++ b/chromeos/strings/chromeos_strings_is.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Nota sem veggfóður</translation>
 <translation id="1578784163189013834">Velja bakgrunn skjávara</translation>
 <translation id="1615335640928990664">Gagnanotkun síðan <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Myndavél</translation>
 <translation id="1621067168122174824">Keyra hleðslupróf</translation>
 <translation id="1631385268983122904">Ekki setja tækið saman strax</translation>
 <translation id="1639239467298939599">Hleður</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Til að halda áfram að uppfæra skaltu smella á „Áfram“.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Öryggi</translation>
+<translation id="3441653493275994384">Skjár</translation>
 <translation id="3456078764689556234">Prentaði síðu <ph name="PRINTED_PAGES" /> af <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Skannar síðu <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% lokið.</translation>
 <translation id="3459509316159669723">Prentun</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Skipta um veggfóður</translation>
 <translation id="360565022852130722">Wi-Fi netið er varið með veikum samskiptareglum, WEP 802.1x</translation>
 <translation id="3606583719724308068">Langur biðtími eftir HTTPS-vefsvæðum</translation>
+<translation id="3616113530831147358">Hljóð</translation>
 <translation id="3621202678540785336">Inntak</translation>
 <translation id="3632579075709132555">Rofalykill persónuverndarskjás</translation>
 <translation id="3643810137582748570">Sleppa kvörðun</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Taka netþjón heimildar fyrir vöruskilum úr lás</translation>
 <translation id="4145784616224233563">HTTP-eldveggur</translation>
 <translation id="4147897805161313378">Google myndir</translation>
+<translation id="4150201353443180367">Skjár</translation>
 <translation id="4155551848414053977">Gakktu úr skugga um að kveikt sé á skannanum og hann tiltækur í gegnum nettengingu eða beintengingu</translation>
 <translation id="4159784952369912983">Purpurarauður</translation>
 <translation id="4170180284036919717">Taka mynd</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Hitastig</translation>
 <translation id="7977800524392185497">Opnaðu stillingarnar til að tengjast <ph name="NETWORK_NAME" /> netkerfi</translation>
 <translation id="7978412674231730200">Einkalykill</translation>
+<translation id="7982789257301363584">Net</translation>
 <translation id="7994702968232966508">EAP-aðferð</translation>
 <translation id="802154636333426148">Niðurhal mistókst</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Tengt núna</translation>
 <translation id="8845001906332463065">Fá hjálp</translation>
 <translation id="8855781559874488009">Ekki er hægt að tengjast HTTP-vefsvæðum í gegnum eldvegg</translation>
+<translation id="885701979325669005">Geymslurými</translation>
 <translation id="8863170912498892583">Virkja dökkt þema</translation>
 <translation id="8863888432376731307">Fáðu <ph name="INTENT" /> fyrir „<ph name="QUERY" />“ og fleira</translation>
 <translation id="8868741746785112895">GUID-kenni</translation>
diff --git a/chromeos/strings/chromeos_strings_it.xtb b/chromeos/strings/chromeos_strings_it.xtb
index 6a84791..45d13e9 100644
--- a/chromeos/strings/chromeos_strings_it.xtb
+++ b/chromeos/strings/chromeos_strings_it.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Imposta come sfondo</translation>
 <translation id="1578784163189013834">Scegli lo sfondo del salvaschermo</translation>
 <translation id="1615335640928990664">Utilizzo dei dati da <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Fotocamera</translation>
 <translation id="1621067168122174824">Esegui test ricarica</translation>
 <translation id="1631385268983122904">Non reinserire ancora la batteria nel dispositivo</translation>
 <translation id="1639239467298939599">Caricamento</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Per continuare con l'aggiornamento, fai clic su Avanti.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Sicurezza</translation>
+<translation id="3441653493275994384">Schermo</translation>
 <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> pagina stampata su <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Scansione della pagina <ph name="PAGE_NUM" /> in corso. Completamento: <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Stampa</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Cambiare sfondo</translation>
 <translation id="360565022852130722">la rete Wi-Fi è protetta con un protocollo WEP 802.1x inefficace</translation>
 <translation id="3606583719724308068">Alta latenza a siti web HTTPS</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Ingresso</translation>
 <translation id="3632579075709132555">Attivazione/disattivazione della Schermata privata</translation>
 <translation id="3643810137582748570">Salta calibrazione</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Esegui sblocco del server RMA</translation>
 <translation id="4145784616224233563">Firewall HTTP</translation>
 <translation id="4147897805161313378">Google Foto</translation>
+<translation id="4150201353443180367">Display</translation>
 <translation id="4155551848414053977">Assicurati che lo scanner sia acceso e disponibile tramite la tua rete o una connessione diretta</translation>
 <translation id="4159784952369912983">Viola</translation>
 <translation id="4170180284036919717">Scatta una foto</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Per collegarti alla rete <ph name="NETWORK_NAME" />, vai alle Impostazioni</translation>
 <translation id="7978412674231730200">Chiave privata</translation>
+<translation id="7982789257301363584">Rete</translation>
 <translation id="7994702968232966508">Metodo EAP</translation>
 <translation id="802154636333426148">Download non riuscito</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Attualmente connesso</translation>
 <translation id="8845001906332463065">Richiedi assistenza</translation>
 <translation id="8855781559874488009">Impossibile collegarti tramite il firewall ai siti web HTTP</translation>
+<translation id="885701979325669005">Dati memorizzati dai siti</translation>
 <translation id="8863170912498892583">Abilita il tema scuro</translation>
 <translation id="8863888432376731307">Ricevi <ph name="INTENT" /> per "<ph name="QUERY" />" e non solo</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb
index d5d9bbb..6cca77a 100644
--- a/chromeos/strings/chromeos_strings_iw.xtb
+++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">הגדרה כטפט</translation>
 <translation id="1578784163189013834">בחירת רקע לשומר המסך</translation>
 <translation id="1615335640928990664">שימוש בחבילת הגלישה מאז <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">מצלמה</translation>
 <translation id="1621067168122174824">הפעלה של בדיקת טעינה</translation>
 <translation id="1631385268983122904">אין להרכיב חזרה את חלקי המכשיר</translation>
 <translation id="1639239467298939599">בטעינה</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">צריך ללחוץ על 'הבא' כדי להמשיך בעדכון.</translation>
 <translation id="3434107140712555581">‎<ph name="BATTERY_PERCENTAGE" />%‎</translation>
 <translation id="3435738964857648380">אבטחה</translation>
+<translation id="3441653493275994384">מסך</translation>
 <translation id="3456078764689556234">הודפס עמוד <ph name="PRINTED_PAGES" /> מתוך <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">מתבצעת סריקה של עמוד <ph name="PAGE_NUM" />. החלק שהושלם: <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">הדפסה</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">החלפת הטפט</translation>
 <translation id="360565022852130722">‏רשת ה-Wi-Fi מאובטחת בפרוטוקול WEP 802.1x חלש.</translation>
 <translation id="3606583719724308068">‏זמן אחזור ארוך לאתרי HTTPS</translation>
+<translation id="3616113530831147358">אודיו</translation>
 <translation id="3621202678540785336">קלט</translation>
 <translation id="3632579075709132555">לחצן להחלפת מצב של מסך הפרטיות</translation>
 <translation id="3643810137582748570">דילוג על הכיול</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">‏ביטול הנעילה של שרת ה-RMA</translation>
 <translation id="4145784616224233563">‏חומת אש מסוג HTTP</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">תצוגה</translation>
 <translation id="4155551848414053977">יש לוודא שהסורק מופעל וזמין דרך הרשת או דרך חיבור ישיר</translation>
 <translation id="4159784952369912983">סגול</translation>
 <translation id="4170180284036919717">צילום תמונה</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">טמפרטורה</translation>
 <translation id="7977800524392185497">כדי להצטרף לרשת <ph name="NETWORK_NAME" />, צריך לעבור להגדרות</translation>
 <translation id="7978412674231730200">מפתח פרטי</translation>
+<translation id="7982789257301363584">רשת</translation>
 <translation id="7994702968232966508">‏שיטת EAP</translation>
 <translation id="802154636333426148">ההורדה נכשלה</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">מחובר עכשיו</translation>
 <translation id="8845001906332463065">קבלת עזרה</translation>
 <translation id="8855781559874488009">‏לא ניתן להתחבר עם חומת אש לאתרי HTTP</translation>
+<translation id="885701979325669005">אחסון</translation>
 <translation id="8863170912498892583">הפעלת העיצוב הכהה</translation>
 <translation id="8863888432376731307">לקבלת ה<ph name="INTENT" /> עבור "<ph name="QUERY" />" ועוד</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb
index 4081dc5d..1a39e55 100644
--- a/chromeos/strings/chromeos_strings_ja.xtb
+++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">壁紙に設定</translation>
 <translation id="1578784163189013834">スクリーン セーバーの背景を選択する</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> 以降のデータ使用量</translation>
+<translation id="1620510694547887537">カメラ</translation>
 <translation id="1621067168122174824">充電テストを実行</translation>
 <translation id="1631385268983122904">まだデバイスを組み立てないでください</translation>
 <translation id="1639239467298939599">読み込み中</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422"><ph name="FIRST_MANAGER" /> と <ph name="SECOND_MANAGER" /> によって管理されています</translation>
 <translation id="1726100011689679555">ネームサーバー</translation>
 <translation id="1731082422893354635">Bluetooth タッチパッド</translation>
+<translation id="1745577949879301685">画像を読み込めませんでした。ネットワーク接続を確認するか、画像をもう一度読み込んでみてください。</translation>
 <translation id="1751249301761991853">パーソナライズ</translation>
 <translation id="1753496554272155572">壁紙のプレビューを終了</translation>
 <translation id="175763766237925754">良好(<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">更新を進めるには、[次へ] をクリックしてください。</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">セキュリティ</translation>
+<translation id="3441653493275994384">画面</translation>
 <translation id="3456078764689556234"><ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /> ページを印刷しました。</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" /> ページ目をスキャンしています。<ph name="PERCENTAGE_VALUE" />% 完了。</translation>
 <translation id="3459509316159669723">印刷</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">壁紙の変更</translation>
 <translation id="360565022852130722">安全性の低いプロトコル WEP 802.1x が Wi-Fi で使用されています</translation>
 <translation id="3606583719724308068">HTTPS ウェブサイトのレイテンシが高くなっています</translation>
+<translation id="3616113530831147358">音声</translation>
 <translation id="3621202678540785336">入力</translation>
 <translation id="3632579075709132555">プライバシー画面の切り替え</translation>
 <translation id="3643810137582748570">キャリブレーションをスキップ</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA サーバーのロック解除を実行</translation>
 <translation id="4145784616224233563">HTTP ファイアウォール</translation>
 <translation id="4147897805161313378">Google フォト</translation>
+<translation id="4150201353443180367">表示</translation>
 <translation id="4155551848414053977">スキャナの電源がオンになっていて、ネットワーク経由または直接接続して使用できることを確認してください</translation>
 <translation id="4159784952369912983">パープル</translation>
 <translation id="4170180284036919717">写真を撮る</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">温度</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> ネットワークに接続するには、[設定] に移動します</translation>
 <translation id="7978412674231730200">秘密鍵</translation>
+<translation id="7982789257301363584">ネットワーク</translation>
 <translation id="7994702968232966508">EAP 方式</translation>
 <translation id="802154636333426148">ダウンロード エラー</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">現在接続中のデバイス</translation>
 <translation id="8845001906332463065">ヘルプ</translation>
 <translation id="8855781559874488009">ファイアウォールを介して HTTP ウェブサイトに接続できません</translation>
+<translation id="885701979325669005">ストレージ</translation>
 <translation id="8863170912498892583">ダークモードを有効にする</translation>
 <translation id="8863888432376731307">「<ph name="QUERY" />」の <ph name="INTENT" /> の取得など</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_ka.xtb b/chromeos/strings/chromeos_strings_ka.xtb
index cdb666f..cd4968d 100644
--- a/chromeos/strings/chromeos_strings_ka.xtb
+++ b/chromeos/strings/chromeos_strings_ka.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">ფონად დაყენება</translation>
 <translation id="1578784163189013834">ეკრანმზოგის ფონის არჩევა</translation>
 <translation id="1615335640928990664">მონაცემთა მოხმარება <ph name="FRIENDLY_DATE" />-დან</translation>
+<translation id="1620510694547887537">კამერა</translation>
 <translation id="1621067168122174824">დატენის ტესტის გაშვება</translation>
 <translation id="1631385268983122904">ჯერ ნუ ააწყობთ მოწყობილობას</translation>
 <translation id="1639239467298939599">იტვირთება</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">მართავს <ph name="FIRST_MANAGER" /> და <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">სახელთა სერვერები</translation>
 <translation id="1731082422893354635">Bluetooth სენსორული პანელი</translation>
+<translation id="1745577949879301685">სურათები ვერ ჩაიტვირთა. შეამოწმეთ კავშირი ქსელთან, ან ხელახლა ცადეთ სურათების ჩატვირთვა.</translation>
 <translation id="1751249301761991853">პირადი</translation>
 <translation id="1753496554272155572">ფონის გადახედვის რეჟიმიდან გასვლა</translation>
 <translation id="175763766237925754">კარგი (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">განახლების გასაგრძელებლად დაწკაპუნებით აირჩიეთ „შემდეგი“.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">უსაფრთხოება</translation>
+<translation id="3441653493275994384">ეკრანი</translation>
 <translation id="3456078764689556234">ამობეჭდილი გვერდი <ph name="PRINTED_PAGES" /> / <ph name="TOTAL_PAGES" />-დან.</translation>
 <translation id="345898999683440380">სკანირდება გვერდი <ph name="PAGE_NUM" />. დასრულებულია <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">ბეჭდვა</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">ფონის შეცვლა</translation>
 <translation id="360565022852130722">Wi-Fi ქსელი უზრუნველყოფილია სუსტი პროტოკოლით WEP 802.1x</translation>
 <translation id="3606583719724308068">HTTPS ვებსაიტების რეაგირების დიდი დრო</translation>
+<translation id="3616113530831147358">აუდიო</translation>
 <translation id="3621202678540785336">შეყვანა</translation>
 <translation id="3632579075709132555">კონფიდენციალური ეკრანის გადართვა</translation>
 <translation id="3643810137582748570">კალიბრაციის გამოტოვება</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA სერვერის განბლოკვა</translation>
 <translation id="4145784616224233563">HTTP ქსელის დაცვა</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">ჩვენება</translation>
 <translation id="4155551848414053977">დარწმუნდით, რომ სკანერი ჩართულია და ხელმისაწვდომია თქვენი ქსელისა თუ პირდაპირი კავშირის მეშვეობით</translation>
 <translation id="4159784952369912983">მეწამული</translation>
 <translation id="4170180284036919717">ფოტოს გადაღება</translation>
@@ -425,6 +430,7 @@
 <translation id="4915052247106771211">ეს მოქმედება დააბრუნებს მოწყობილობას ქარხნული პარამეტრებზე (შესრულდება Powerwash).</translation>
 <translation id="4917385247580444890">ძლიერი</translation>
 <translation id="4917889632206600977">გაჩერდა — ქაღალდი გათავდა</translation>
+<translation id="491791267030419270">მინიშნებები გამოხმაურების დაწერის შესახებ</translation>
 <translation id="4921665434385737356"><ph name="RATE" /> დაიტენა <ph name="NUM_SECONDS" /> წამში.</translation>
 <translation id="4930320165497208503">კავშირის დასაყენებლად ან გასაახლებლად გადადით <ph name="BEGIN_LINK" />პარამეტრებზე<ph name="END_LINK" />.</translation>
 <translation id="4932733599132424254">თარიღი</translation>
@@ -745,6 +751,7 @@
 <translation id="7960831585769876809">ტემპერატურა</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> ქსელთან მისაერთებლად გადადით პარამეტრებზე</translation>
 <translation id="7978412674231730200">პირადი გასაღები</translation>
+<translation id="7982789257301363584">ქსელი</translation>
 <translation id="7994702968232966508">EAP მეთოდი</translation>
 <translation id="802154636333426148">ჩამოტვირთვა ვერ მოხერხდა</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +846,7 @@
 <translation id="8834539327799336565">ამჟამად დაკავშირებული</translation>
 <translation id="8845001906332463065">დახმარების მიღება</translation>
 <translation id="8855781559874488009">ქსელის დაცვიდან HTTP ვებსაიტებთან დაკავშირება ვერ ხერხდება</translation>
+<translation id="885701979325669005">შენახვა</translation>
 <translation id="8863170912498892583">მუქი თემის ჩართვა</translation>
 <translation id="8863888432376731307">მიიღეთ <ph name="INTENT" /> მოთხოვნისთვის „<ph name="QUERY" />“ და სხვა</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_kk.xtb b/chromeos/strings/chromeos_strings_kk.xtb
index aec0c12..4ae59065 100644
--- a/chromeos/strings/chromeos_strings_kk.xtb
+++ b/chromeos/strings/chromeos_strings_kk.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Тұсқағаз етіп орнату</translation>
 <translation id="1578784163189013834">Скринсейвер фонын таңдау</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> бергі дерек трафигі</translation>
+<translation id="1620510694547887537">Камера</translation>
 <translation id="1621067168122174824">Заряд тексерісін іске қосу</translation>
 <translation id="1631385268983122904">Құрылғыны әзірге жинамаңыз.</translation>
 <translation id="1639239467298939599">Жүктелуде</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Жаңартуды жалғастыру үшін "Келесі" түймесін басыңыз.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Қауіпсіздік</translation>
+<translation id="3441653493275994384">Экран</translation>
 <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> бет (жалпы саны: <ph name="TOTAL_PAGES" />) басып шығарылды.</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" />-бет сканерленуде. <ph name="PERCENTAGE_VALUE" />% орындалды.</translation>
 <translation id="3459509316159669723">Басып шығару</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Тұсқағазды өзгерту</translation>
 <translation id="360565022852130722">WiFi желісі WEP 802.1x әлсіз протоколымен қорғалған.</translation>
 <translation id="3606583719724308068">HTTPS веб-сайттарына кідіріс жоғары.</translation>
+<translation id="3616113530831147358">Аудио</translation>
 <translation id="3621202678540785336">Енгізу</translation>
 <translation id="3632579075709132555">Құпиялылық экранын қосу/өшіру</translation>
 <translation id="3643810137582748570">Калибрлеуді өткізіп жіберу</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">RMA серверінің құлпын ашыңыз</translation>
 <translation id="4145784616224233563">HTTP брандмауэрі</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">Дисплей</translation>
 <translation id="4155551848414053977">Сканеріңіз қосылып тұруы керек және желі немесе тікелей қосылым арқылы қолжетімді болуы тиіс.</translation>
 <translation id="4159784952369912983">Күлгін</translation>
 <translation id="4170180284036919717">Суретке түсіру</translation>
@@ -744,6 +748,7 @@
 <translation id="7960831585769876809">Температура</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> желісіне қосылу үшін "Параметрлер" бетіне өтіңіз.</translation>
 <translation id="7978412674231730200">Жеке кілт</translation>
+<translation id="7982789257301363584">Желі</translation>
 <translation id="7994702968232966508">EAP әдісі</translation>
 <translation id="802154636333426148">Жүктеу сәтсіз аяқталды</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -838,6 +843,7 @@
 <translation id="8834539327799336565">Қазір жалғанғандар</translation>
 <translation id="8845001906332463065">Анықтама алу</translation>
 <translation id="8855781559874488009">Брандмауэр арқылы HTTP веб-сайттарына қосылу мүмкін емес.</translation>
+<translation id="885701979325669005">Сақтау</translation>
 <translation id="8863170912498892583">Қараңғы режимді қосу</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" сөзіне қандай <ph name="INTENT" /> берілетінін тағы басқа мүмкіндіктерді көріңіз</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_km.xtb b/chromeos/strings/chromeos_strings_km.xtb
index 538b87b..598d776 100644
--- a/chromeos/strings/chromeos_strings_km.xtb
+++ b/chromeos/strings/chromeos_strings_km.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">កំណត់​ជា​ផ្ទាំង​រូបភាព</translation>
 <translation id="1578784163189013834">ជ្រើសរើសផ្ទៃខាងក្រោយរបស់ធាតុរក្សាអេក្រង់</translation>
 <translation id="1615335640928990664">ការប្រើទិន្នន័យចាប់តាំងពីថ្ងៃ<ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">កាមេរ៉ា</translation>
 <translation id="1621067168122174824">ដំណើរការតេស្តសាកថ្ម</translation>
 <translation id="1631385268983122904">កុំ​ទាន់ដាក់​ថ្ម​ចូល​វិញ</translation>
 <translation id="1639239467298939599">កំពុងដំណើរការ</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">ដើម្បីបន្តការដំឡើងកំណែ សូមចុច "បន្ទាប់"។</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">សុវត្ថិភាព</translation>
+<translation id="3441653493275994384">អេក្រង់</translation>
 <translation id="3456078764689556234">បានបោះពុម្ព​ទំព័រទី <ph name="PRINTED_PAGES" /> ក្នុងចំណោម <ph name="TOTAL_PAGES" />។</translation>
 <translation id="345898999683440380">កំពុង​ស្កេនទំព័រទី <ph name="PAGE_NUM" />។ បានបញ្ចប់ <ph name="PERCENTAGE_VALUE" />%។</translation>
 <translation id="3459509316159669723">កំពុងបោះពុម្ព</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">ប្ដូរផ្ទាំងរូបភាព</translation>
 <translation id="360565022852130722">បណ្ដាញ WiFi មានសុវត្ថិភាពជាមួយ WEP 802.1x ប្រូតូកូលខ្សោយ</translation>
 <translation id="3606583719724308068">ការពន្យារខ្ពស់ចំពោះគេហទំព័រ HTTPS</translation>
+<translation id="3616113530831147358">សម្លេង</translation>
 <translation id="3621202678540785336">ធាតុបញ្ចូល</translation>
 <translation id="3632579075709132555">ប៊ូតុងបិទ/បើក​របាំងឯកជនភាព</translation>
 <translation id="3643810137582748570">រំលងការកែតម្រូវ</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">ធ្វើការដោះសោម៉ាស៊ីនមេ RMA</translation>
 <translation id="4145784616224233563">ជញ្ជាំងភ្លើង HTTP</translation>
 <translation id="4147897805161313378">Google រូបថត</translation>
+<translation id="4150201353443180367">ការបង្ហាញ</translation>
 <translation id="4155551848414053977">សូមប្រាកដថា ម៉ាស៊ីនស្កេន​ត្រូវបានបើក និងអាចប្រើ​តាមរយៈ​ការតភ្ជាប់​ដោយផ្ទាល់ ឬបណ្ដាញរបស់អ្នក</translation>
 <translation id="4159784952369912983">ស្វាយ</translation>
 <translation id="4170180284036919717">ថតរូប</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">សីតុណ្ហភាព</translation>
 <translation id="7977800524392185497">ដើម្បីចូលរួមបណ្ដាញ <ph name="NETWORK_NAME" /> សូមចូលទៅកាន់ការកំណត់</translation>
 <translation id="7978412674231730200">សោឯកជន</translation>
+<translation id="7982789257301363584">បណ្តាញ</translation>
 <translation id="7994702968232966508">វិធីសាស្ត្រ EAP</translation>
 <translation id="802154636333426148">បានបរាជ័យក្នុងការទាញយក</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">កំពុងភ្ជាប់​បច្ចុប្បន្ននេះ</translation>
 <translation id="8845001906332463065">ទទួលជំនួយ</translation>
 <translation id="8855781559874488009">មិនអាចភ្ជាប់ទៅគេហទំព័រ HTTP តាមរយៈជញ្ជាំងភ្លើងបានទេ</translation>
+<translation id="885701979325669005">ឧបករណ៍ផ្ទុកទិន្នន័យ</translation>
 <translation id="8863170912498892583">បើក​រចនាប័ទ្ម​ងងឹត</translation>
 <translation id="8863888432376731307">ទទួលបាន<ph name="INTENT" />នៃពាក្យ "<ph name="QUERY" />" និងច្រើនទៀត</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_kn.xtb b/chromeos/strings/chromeos_strings_kn.xtb
index e1c90d4..4da6a665 100644
--- a/chromeos/strings/chromeos_strings_kn.xtb
+++ b/chromeos/strings/chromeos_strings_kn.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">ವಾಲ್‌ಪೇಪರ್ ಆಗಿ ಹೊಂದಿಸಿ</translation>
 <translation id="1578784163189013834">ಸ್ಕ್ರೀನ್ ಸೇವರ್ ಹಿನ್ನೆಲೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿ</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> ರಿಂದ ಡೇಟಾ ಬಳಕೆ</translation>
+<translation id="1620510694547887537">ಕ್ಯಾಮರಾ</translation>
 <translation id="1621067168122174824">ಚಾರ್ಜ್‌ ಪರೀಕ್ಷೆಯನ್ನು ರನ್‌ ಮಾಡಿ</translation>
 <translation id="1631385268983122904">ಸದ್ಯಕ್ಕೆ, ಸಾಧನವನ್ನು ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿ</translation>
 <translation id="1639239467298939599">ಲೋಡ್ ಆಗುತ್ತಿದೆ</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422"><ph name="FIRST_MANAGER" /> ಮತ್ತು <ph name="SECOND_MANAGER" /> ಅವರು ನಿರ್ವಹಿಸಿದ್ದಾರೆ</translation>
 <translation id="1726100011689679555">ಹೆಸರಿನ ಸರ್ವರ್‌ಗಳು</translation>
 <translation id="1731082422893354635">ಬ್ಲೂಟೂತ್ ಟಚ್‌ಪ್ಯಾಡ್</translation>
+<translation id="1745577949879301685">ಚಿತ್ರಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ನಿಮ್ಮ ನೆಟ್‌ವರ್ಕ್ ಕನೆಕ್ಷನ್ ಪರಿಶೀಲಿಸಿ ಅಥವಾ ಚಿತ್ರಗಳನ್ನು ಪುನಃ ಲೋಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="1751249301761991853">ವೈಯಕ್ತಿಕ</translation>
 <translation id="1753496554272155572">ವಾಲ್‌ಪೇಪರ್ ಪೂರ್ವವೀಕ್ಷಣೆಯಿಂದ ನಿರ್ಗಮಿಸಿ</translation>
 <translation id="175763766237925754">ಉತ್ತಮ (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">ಅಪ್‌ಡೇಟ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮುಂದುವರಿಸಲು, ಮುಂದಿನದು ಕ್ಲಿಕ್ ಮಾಡಿ.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">ಭದ್ರತೆ</translation>
+<translation id="3441653493275994384">ಸ್ಕ್ರೀನ್‌</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> ರಲ್ಲಿ <ph name="PRINTED_PAGES" /> ಪುಟವನ್ನು ಮುದ್ರಿಸಲಾಗಿದೆ.</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" /> ನೇ ಪುಟವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗುತ್ತಿದೆ. <ph name="PERCENTAGE_VALUE" />% ಪೂರ್ಣಗೊಂಡಿದೆ.</translation>
 <translation id="3459509316159669723">ಮುದ್ರಿಸಲಾಗುತ್ತಿದೆ</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">ವಾಲ್‌ಪೇಪರ್ ಬದಲಿಸಿ</translation>
 <translation id="360565022852130722">ದುರ್ಬಲ ಪ್ರೋಟೋಕಾಲ್ WEP 802.1x‌ ಮೂಲಕ ವೈಫೈ ನೆಟ್‌ವರ್ಕ್ ರಕ್ಷಿಸಲಾಗಿದೆ</translation>
 <translation id="3606583719724308068">HTTPS ವೆಬ್‌ಸೈಟ್‌ಗಳ ವಿಳಂಬದ ಸಮಯವು ದೀರ್ಘವಾಗಿದೆ</translation>
+<translation id="3616113530831147358">ಆಡಿಯೋ</translation>
 <translation id="3621202678540785336">ಇನ್‌ಪುಟ್</translation>
 <translation id="3632579075709132555">ಗೌಪ್ಯತೆ ಸ್ಕ್ರೀನ್ ಟಾಗಲ್</translation>
 <translation id="3643810137582748570">ಕ್ಯಾಲಿಬ್ರೇಶನ್ ಅನ್ನು ಸ್ಕಿಪ್ ಮಾಡಿ</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA ಸರ್ವರ್ ಅನ್‌ಲಾಕ್ ಮಾಡಿ</translation>
 <translation id="4145784616224233563">HTTP ಫೈರ್‌ವಾಲ್</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">ಡಿಸ್‌ಪ್ಲೇ</translation>
 <translation id="4155551848414053977">ಸ್ಕ್ಯಾನರ್ ಆನ್ ಆಗಿದೆಯೆ ಮತ್ತು ನಿಮ್ಮ ನೆಟ್‌ವರ್ಕ್ ಅಥವಾ ನೇರ ಕನೆಕ್ಷನ್ ಮೂಲಕ ಲಭ್ಯವಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ</translation>
 <translation id="4159784952369912983">ನೇರಳೆ</translation>
 <translation id="4170180284036919717">ಫೋಟೋ ತೆಗೆದುಕೊಳ್ಳಿ</translation>
@@ -744,6 +749,7 @@
 <translation id="7960831585769876809">ತಾಪಮಾನ</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> ನೆಟ್ಟವರ್ಕ್‌ಗೆ ಸೇರಲು, ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಹೋಗಿ</translation>
 <translation id="7978412674231730200">ಖಾಸಗಿ ಕೀಲಿ</translation>
+<translation id="7982789257301363584">ನೆಟ್‌ವರ್ಕ್</translation>
 <translation id="7994702968232966508">EAP ವಿಧಾನ</translation>
 <translation id="802154636333426148">ಡೌನ್‌ಲೋಡ್‌ ವಿಫಲಗೊಂಡಿದೆ</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -838,6 +844,7 @@
 <translation id="8834539327799336565">ಪ್ರಸ್ತುತ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="8845001906332463065">ಸಹಾಯ ಪಡೆಯಿರಿ</translation>
 <translation id="8855781559874488009">HTTP ವೆಬ್‌ಸೈಟ್‌ಗಳಿಗೆ ಫೈರ್‌ವಾಲ್ ಮೂಲಕ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ</translation>
+<translation id="885701979325669005">ಸಂಗ್ರಹಣೆ</translation>
 <translation id="8863170912498892583">ಡಾರ್ಕ್‌ ಥೀಮ್ ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" ಗಾಗಿ ಮತ್ತು ಇನ್ನಷ್ಟಕ್ಕಾಗಿ <ph name="INTENT" /> ಅನ್ನು ಪಡೆಯಿರಿ</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_ko.xtb b/chromeos/strings/chromeos_strings_ko.xtb
index 5b98be97..2857143 100644
--- a/chromeos/strings/chromeos_strings_ko.xtb
+++ b/chromeos/strings/chromeos_strings_ko.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">배경화면으로 설정</translation>
 <translation id="1578784163189013834">화면 보호기 배경 선택</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> 이후 데이터 사용량</translation>
+<translation id="1620510694547887537">카메라</translation>
 <translation id="1621067168122174824">충전 테스트 실행</translation>
 <translation id="1631385268983122904">아직 기기에 배터리를 다시 넣지 마세요.</translation>
 <translation id="1639239467298939599">로드 중</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">업데이트를 계속하려면 다음을 클릭하세요.</translation>
 <translation id="3434107140712555581">배터리 <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">보안</translation>
+<translation id="3441653493275994384">화면</translation>
 <translation id="3456078764689556234">인쇄된 페이지 <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /></translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" />페이지를 스캔 중입니다. <ph name="PERCENTAGE_VALUE" />% 완료되었습니다.</translation>
 <translation id="3459509316159669723">인쇄</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">배경화면 변경</translation>
 <translation id="360565022852130722">Wi-Fi 네트워크가 약한 프로토콜 WEP 802.1x로 보호되었습니다.</translation>
 <translation id="3606583719724308068">HTTPS 웹사이트 연결의 지연 시간이 깁니다.</translation>
+<translation id="3616113530831147358">오디오</translation>
 <translation id="3621202678540785336">입력</translation>
 <translation id="3632579075709132555">개인 정보 보호 화면 전환</translation>
 <translation id="3643810137582748570">보정 건너뛰기</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">RMA 서버 잠금 해제 수행</translation>
 <translation id="4145784616224233563">HTTP 방화벽</translation>
 <translation id="4147897805161313378">Google 포토</translation>
+<translation id="4150201353443180367">디스플레이</translation>
 <translation id="4155551848414053977">스캐너가 켜져 있으며 네트워크 또는 직접 연결을 통해 사용 가능한지 확인하세요.</translation>
 <translation id="4159784952369912983">보라색</translation>
 <translation id="4170180284036919717">사진 찍기</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">온도</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> 네트워크에 참여하려면 설정으로 이동하세요.</translation>
 <translation id="7978412674231730200">비공개 키</translation>
+<translation id="7982789257301363584">네트워크</translation>
 <translation id="7994702968232966508">EAP 방식</translation>
 <translation id="802154636333426148">다운로드 실패</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">현재 연결된 기기</translation>
 <translation id="8845001906332463065">도움말 보기</translation>
 <translation id="8855781559874488009">방화벽으로 인해 HTTP 웹사이트에 연결할 수 없습니다.</translation>
+<translation id="885701979325669005">저장소</translation>
 <translation id="8863170912498892583">어두운 테마 사용</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />"의 <ph name="INTENT" /> 확인 등</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_ky.xtb b/chromeos/strings/chromeos_strings_ky.xtb
index 632a12c3..c4da5a2 100644
--- a/chromeos/strings/chromeos_strings_ky.xtb
+++ b/chromeos/strings/chromeos_strings_ky.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Тушкагаз катары коюу</translation>
 <translation id="1578784163189013834">Көшөгөнүн фонун тандоо</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> бери колдонулган трафик</translation>
+<translation id="1620510694547887537">Камера</translation>
 <translation id="1621067168122174824">Кубатталышын сыноо</translation>
 <translation id="1631385268983122904">Азырынча түзмөккө батареяны салбай туруңуз</translation>
 <translation id="1639239467298939599">Жүктөлүүдө</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Жаңыртуу үчүн "Кийинки" баскычын басыңыз.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Коопсуздук</translation>
+<translation id="3441653493275994384">Экран</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> ичинен <ph name="PRINTED_PAGES" /> барак басылып чыгарылды.</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" />-бет скандалууда. <ph name="PERCENTAGE_VALUE" />% бүттү.</translation>
 <translation id="3459509316159669723">Басып чыгаруу</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Тушкагазды өзгөртүп алыңыз</translation>
 <translation id="360565022852130722">WiFi тармагынын WEP 802.1x протоколунун коопсуздугу начар</translation>
 <translation id="3606583719724308068">HTTPS вебсайттары үчүн күтүү убакыты жогору</translation>
+<translation id="3616113530831147358">Аудио</translation>
 <translation id="3621202678540785336">Киргизүү</translation>
 <translation id="3632579075709132555">Купуялык экранын өчүрүү/күйгүзүү</translation>
 <translation id="3643810137582748570">Калибрлөөнү өткөрүп жиберүү</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">RMA серверинин кулпусун ачуу</translation>
 <translation id="4145784616224233563">HTTP тармактык коргоосу</translation>
 <translation id="4147897805161313378">Google Фото</translation>
+<translation id="4150201353443180367">Көрсөтүү</translation>
 <translation id="4155551848414053977">Сканер күйгүзүлгөнүн жана тармак аркылуу жеткиликтүү же түздөн-түз туташууга даяр экенин текшериңиз</translation>
 <translation id="4159784952369912983">Кызгылт көгүш</translation>
 <translation id="4170180284036919717">Сүрөткө тартуу</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Температура</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> тармагына кошулуу үчүн Жөндөөлөргө өтүңүз</translation>
 <translation id="7978412674231730200">Жеке ачкыч</translation>
+<translation id="7982789257301363584">Тармак</translation>
 <translation id="7994702968232966508">EAP ыкмасы</translation>
 <translation id="802154636333426148">Жүктөлүп алынбай калды</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Учурда туташып турган түзмөктөр</translation>
 <translation id="8845001906332463065">Жардам алуу</translation>
 <translation id="8855781559874488009">HTTP вебсайттарына тармактык коргоо аркылуу туташпай жатат</translation>
+<translation id="885701979325669005">Сактагыч</translation>
 <translation id="8863170912498892583">Түнкү режимди иштетүү</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" үчүн <ph name="INTENT" /> жана башка нерселерди аласыз</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_lo.xtb b/chromeos/strings/chromeos_strings_lo.xtb
index 1b035d0..e53eeb99 100644
--- a/chromeos/strings/chromeos_strings_lo.xtb
+++ b/chromeos/strings/chromeos_strings_lo.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">ຕັ້ງເປັນພາບພື້ນຫຼັງ</translation>
 <translation id="1578784163189013834">ເລືອກພື້ນຫຼັງສະກຣີນເຊັບເວີ</translation>
 <translation id="1615335640928990664">ການນຳໃຊ້ອິນເຕີເນັດນັບຕັ້ງແຕ່ <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">ກ້ອງ​ຖ່າຍ​ຮູບ</translation>
 <translation id="1621067168122174824">ເອີ້ນໃຊ້ການທົດສອບການສາກ</translation>
 <translation id="1631385268983122904">ຢ່າປະກອບອຸປະກອນເຂົ້າກັນເທື່ອ</translation>
 <translation id="1639239467298939599">ກໍາລັງໂຫຼດ</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">ເພື່ອດຳເນີນການຕໍ່ກັບອັບເດດ, ໃຫ້ຄລິກຕໍ່ໄປ</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">ຄວາມ​ປອດ​ໄພ</translation>
+<translation id="3441653493275994384">ຫນ້າ​ຈໍ</translation>
 <translation id="3456078764689556234">ພິມໜ້າ <ph name="PRINTED_PAGES" /> ຈາກທັງໝົດ <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">ກຳລັງສະແກນໜ້າ <ph name="PAGE_NUM" />. ສຳເລັດແລ້ວ <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">ກໍາລັງພິມ</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">ປ່ຽນພາບພື້ນຫຼັງ</translation>
 <translation id="360565022852130722">ເຄືອຂ່າຍ WiFi ມີການຮັກສາຄວາມປອດໄພດ້ວຍໂປຣໂຕຄໍ WEP 802.1x ທີ່ບໍ່ຮັດກຸມ</translation>
 <translation id="3606583719724308068">ເວລາຕອບສະໜອງຫາເວັບໄຊ HTTPS ສູງ</translation>
+<translation id="3616113530831147358">ສຽງ</translation>
 <translation id="3621202678540785336">ການປ້ອນເຂົ້າ</translation>
 <translation id="3632579075709132555">ສະຫຼັບໜ້າຈໍຄວາມເປັນສ່ວນຕົວ</translation>
 <translation id="3643810137582748570">ຂ້າມການປັບທຽບ</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">ດຳເນີນການປົດລັອກເຊີບເວີ RMA</translation>
 <translation id="4145784616224233563">HTTP Firewall</translation>
 <translation id="4147897805161313378">Google ຮູບພາບ</translation>
+<translation id="4150201353443180367">ການສະແດງຜົນ</translation>
 <translation id="4155551848414053977">ກວດໃຫ້ແນ່ໃຈວ່າເຄື່ອງສະແກນເປີດຢູ່ ແລະ ມີໃຫ້ຜ່ານເຄືອຂ່າຍຂອງທ່ານ ຫຼື ການເຊື່ອມຕໍ່ໂດຍກົງ</translation>
 <translation id="4159784952369912983">ສີມ່ວງ</translation>
 <translation id="4170180284036919717">ຖ່າຍຮູບ</translation>
@@ -748,6 +752,7 @@
 <translation id="7960831585769876809">ອຸນຫະພູມ</translation>
 <translation id="7977800524392185497">ເພື່ອເຂົ້າຮ່ວມເຄືອຂ່າຍ <ph name="NETWORK_NAME" />, ໃຫ້ເຂົ້າໄປຫາການຕັ້ງຄ່າ</translation>
 <translation id="7978412674231730200">ປຸ່ມສ່ວນຕົວ</translation>
+<translation id="7982789257301363584">ເຄືອ​ຂ່າຍ</translation>
 <translation id="7994702968232966508">ວິທີການ EAP</translation>
 <translation id="802154636333426148">ການດາວໂຫຼດບໍ່ສຳເລັດ</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -842,6 +847,7 @@
 <translation id="8834539327799336565">ຕອນນີ້ເຊື່ອມຕໍ່ແລ້ວ</translation>
 <translation id="8845001906332463065">ຂໍການຊ່ວຍເຫຼືອ</translation>
 <translation id="8855781559874488009">ບໍ່ສາມາດເຊື່ອມຕໍ່ຜ່ານ firewall ຫາເວັບໄຊ HTTP ໄດ້</translation>
+<translation id="885701979325669005">ການເກັບຂໍ້ມູນ</translation>
 <translation id="8863170912498892583">ເປີດການນຳໃຊ້ຮູບແບບສີສັນມືດ</translation>
 <translation id="8863888432376731307">ຮັບ <ph name="INTENT" /> ສຳລັບ "<ph name="QUERY" />" ແລະ ອື່ນໆ</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_lt.xtb b/chromeos/strings/chromeos_strings_lt.xtb
index fa44758..7edde7b 100644
--- a/chromeos/strings/chromeos_strings_lt.xtb
+++ b/chromeos/strings/chromeos_strings_lt.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Nustatyti kaip foną</translation>
 <translation id="1578784163189013834">Pasirinkti ekrano užsklandos foną</translation>
 <translation id="1615335640928990664">Duomenų naudojimas nuo <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Vykdyti įkrovimo bandymą</translation>
 <translation id="1631385268983122904">Dar nesurinkite įrenginio</translation>
 <translation id="1639239467298939599">Įkeliama</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Jei norite tęsti atnaujinimo procesą, spustelėkite „Kitas“.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" /> proc.</translation>
 <translation id="3435738964857648380">Sauga</translation>
+<translation id="3441653493275994384">Ekranas</translation>
 <translation id="3456078764689556234">Atspausdinta <ph name="PRINTED_PAGES" /> iš <ph name="TOTAL_PAGES" /> psl.</translation>
 <translation id="345898999683440380">Nuskaitomas <ph name="PAGE_NUM" /> psl. Atlikta: <ph name="PERCENTAGE_VALUE" /> %.</translation>
 <translation id="3459509316159669723">Spausdinimas</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Pakeisti ekrano foną</translation>
 <translation id="360565022852130722">„Wi-Fi“ tinklas apsaugotas naudojant nepatikimą protokolą WEP 802.1x</translation>
 <translation id="3606583719724308068">Didelė HTTPS svetainių delsa</translation>
+<translation id="3616113530831147358">Garsas</translation>
 <translation id="3621202678540785336">Įvestis</translation>
 <translation id="3632579075709132555">Privatumo ekrano perjungimas</translation>
 <translation id="3643810137582748570">Praleisti kalibravimą</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">RMA serverio atrakinimas</translation>
 <translation id="4145784616224233563">HTTP užkarda</translation>
 <translation id="4147897805161313378">„Google“ nuotraukos</translation>
+<translation id="4150201353443180367">Pateiktis</translation>
 <translation id="4155551848414053977">Įsitikinkite, kad skaitytuvas įjungtas ir pasiekiamas tinkle arba tiesioginiu ryšiu</translation>
 <translation id="4159784952369912983">Violetinė</translation>
 <translation id="4170180284036919717">Fotografuoti</translation>
@@ -425,6 +429,7 @@
 <translation id="4915052247106771211">Bus atkurti gamykliniai įrenginio nustatymai („Powerwash“).</translation>
 <translation id="4917385247580444890">Stiprus</translation>
 <translation id="4917889632206600977">Sustabdyta – baigėsi popierius</translation>
+<translation id="491791267030419270">Patarimai, kaip rašyti atsiliepimus</translation>
 <translation id="4921665434385737356">Įkrauta: <ph name="RATE" /> per <ph name="NUM_SECONDS" /> sek.</translation>
 <translation id="4930320165497208503">Norėdami nustatyti ar atnaujinti ryšį, eikite į <ph name="BEGIN_LINK" />Nustatymus<ph name="END_LINK" />.</translation>
 <translation id="4932733599132424254">Data</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">Temperatūra</translation>
 <translation id="7977800524392185497">Norėdami prisijungti prie „<ph name="NETWORK_NAME" />“ tinklo, eikite į Nustatymus</translation>
 <translation id="7978412674231730200">Asmeninis raktas</translation>
+<translation id="7982789257301363584">Tinklas</translation>
 <translation id="7994702968232966508">EAP metodas</translation>
 <translation id="802154636333426148">Įvyko atsisiuntimo klaida</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">Šiuo metu susieti</translation>
 <translation id="8845001906332463065">Gauti pagalbos</translation>
 <translation id="8855781559874488009">Nepavyko prisijungti per užkardą prie HTTP svetainių</translation>
+<translation id="885701979325669005">Saugykla</translation>
 <translation id="8863170912498892583">Įgalinti tamsiąją temą</translation>
 <translation id="8863888432376731307">Jums bus pateiktas „<ph name="QUERY" />“ <ph name="INTENT" /> ir dar daugiau</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_lv.xtb b/chromeos/strings/chromeos_strings_lv.xtb
index 6bec504..f3c627e6 100644
--- a/chromeos/strings/chromeos_strings_lv.xtb
+++ b/chromeos/strings/chromeos_strings_lv.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">Lietojumprogrammu palaidējs</translation>
 <translation id="1512982610995527443">Ierīce tiks izslēgta pēc piecām sekundēm</translation>
 <translation id="1522984060396982789">Remonts bija sekmīgs. Varat izslēgt ierīci vai veikt papildu darbības.</translation>
+<translation id="1526389707933164996">Ekrānsaudzētāja animācija</translation>
 <translation id="152892567002884378">Palielināt skaļumu</translation>
 <translation id="1555130319947370107">Zila</translation>
 <translation id="155865706765934889">Skārienpaliktnis</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">Iestatīt kā fona tapeti</translation>
 <translation id="1578784163189013834">Izvēlēties ekrānsaudzētāja fonu</translation>
 <translation id="1615335640928990664">Datu lietojums kopš šī datuma: <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Veikt uzlādes pārbaudi</translation>
 <translation id="1631385268983122904">Vēl neievietojiet akumulatoru ierīcē</translation>
 <translation id="1639239467298939599">Notiek ielāde</translation>
@@ -257,6 +259,7 @@
 <translation id="3413935475507503304">Lai veiktu atjaunināšanu, noklikšķiniet uz “Tālāk”.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Drošība</translation>
+<translation id="3441653493275994384">Ekrāns</translation>
 <translation id="3456078764689556234">Izdrukāto lapu skaits: <ph name="PRINTED_PAGES" /> no<ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Notiek <ph name="PAGE_NUM" />. lapas skenēšana. Pabeigti: <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Drukāšana</translation>
@@ -279,6 +282,7 @@
 <translation id="3604713164406837697">Fona tapetes mainīšana</translation>
 <translation id="360565022852130722">Wi-Fi tīklu sargā nedrošs protokols WEP 802.1x</translation>
 <translation id="3606583719724308068">Augsts latentums HTTPS vietnēs</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Ievade</translation>
 <translation id="3632579075709132555">Konfidencialitātes ekrāna slēdzis</translation>
 <translation id="3643810137582748570">Izlaist kalibrēšanu</translation>
@@ -300,6 +304,7 @@
 <translation id="3858860766373142691">Nosaukums</translation>
 <translation id="3865414814144988605">Izšķirtspēja</translation>
 <translation id="387301095347517405">Cik pilnu uzlādes ciklu ir bijis jūsu akumulatoram</translation>
+<translation id="3885327323343477505">Mainīt ekrānsaudzētāju</translation>
 <translation id="3923184630988645767">Datu lietojums</translation>
 <translation id="3924044641767672375">Ieteicams izveidot savienojumu ar Wi-Fi tīklu, lai atvieglotu labošanu. Jūsu tīkls tiks saglabāts.</translation>
 <translation id="3932043219784172185">Nav pievienota neviena ierīce</translation>
@@ -327,6 +332,7 @@
 <translation id="4140251671072434548">RMA servera atbloķēšana</translation>
 <translation id="4145784616224233563">HTTP ugunsmūris</translation>
 <translation id="4147897805161313378">Google fotoattēli</translation>
+<translation id="4150201353443180367">Displejs</translation>
 <translation id="4155551848414053977">Skenerim ir jābūt ieslēgtam un ar to ir jāizveido savienojums tīklā vai tiešs savienojums.</translation>
 <translation id="4159784952369912983">Violets</translation>
 <translation id="4170180284036919717">Uzņemt fotoattēlu</translation>
@@ -418,6 +424,7 @@
 <translation id="4890353053343094602">Nekavējoties izvēlieties jaunu</translation>
 <translation id="4891842000192098784">Izturība</translation>
 <translation id="4897058166682006107">Kreisās austiņas akumulatora uzlādes līmenis: <ph name="BATTERY_PERCENTAGE" />%.</translation>
+<translation id="4905998861748258752">Ieslēdziet funkciju, lai atlasītu ekrānsaudzētāja opcijas.</translation>
 <translation id="4908030561598728899">Notiek aparātprogrammatūras instalēšana…</translation>
 <translation id="4915052247106771211">Ierīcē tiks atjaunoti rūpnīcas iestatījumi (tiks izmantota funkcija Powerwash).</translation>
 <translation id="4917385247580444890">Spēcīgs</translation>
@@ -742,6 +749,7 @@
 <translation id="7960831585769876809">Temperatūra</translation>
 <translation id="7977800524392185497">Lai izveidotu savienojumu ar <ph name="NETWORK_NAME" /> tīklu, pārejiet uz iestatījumiem.</translation>
 <translation id="7978412674231730200">Privātā atslēga</translation>
+<translation id="7982789257301363584">Tīkls</translation>
 <translation id="7994702968232966508">EAP metode</translation>
 <translation id="802154636333426148">Lejupielāde neizdevās</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -836,6 +844,7 @@
 <translation id="8834539327799336565">Ierīces, ar kurām pašlaik izveidots savienojums</translation>
 <translation id="8845001906332463065">Saņemt palīdzību</translation>
 <translation id="8855781559874488009">Nevar izveidot savienojumu ar HTTP vietnēm, ja ir iespējots ugunsmūris</translation>
+<translation id="885701979325669005">Krātuve</translation>
 <translation id="8863170912498892583">Iespējot tumšo motīvu</translation>
 <translation id="8863888432376731307">Pieejama informācija par vaicājumu “<ph name="QUERY" />”: <ph name="INTENT" /> un daudz kas cits</translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -861,6 +870,7 @@
 <translation id="8997710128084572139">Ierīces akumulatora uzlādes līmenis: <ph name="BATTERY_PERCENTAGE" />%.</translation>
 <translation id="9003704114456258138">Frekvence</translation>
 <translation id="9025198690966128418">Izmantot kā personīgo ierīci</translation>
+<translation id="9028832514430399253">Ieslēdziet slēdzi, lai atlasītu ekrānsaudzētāja opcijas.</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">DNS atrisei ir augsts latentums</translation>
 <translation id="9063121522582193837">Nevarēja kalibrēt dažus komponentus</translation>
diff --git a/chromeos/strings/chromeos_strings_mk.xtb b/chromeos/strings/chromeos_strings_mk.xtb
index 4e791f1..c0a4d644 100644
--- a/chromeos/strings/chromeos_strings_mk.xtb
+++ b/chromeos/strings/chromeos_strings_mk.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Постави како тапет</translation>
 <translation id="1578784163189013834">Изберете заднина за заштитникот на екранот</translation>
 <translation id="1615335640928990664">Потрошен интернет од <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Камера</translation>
 <translation id="1621067168122174824">Изврши тест за наполнетост</translation>
 <translation id="1631385268983122904">Уште не составувајте го уредот</translation>
 <translation id="1639239467298939599">Се вчитува</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">За да продолжите со ажурирањето, кликнете „Следно“.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Безбедност</translation>
+<translation id="3441653493275994384">Екран</translation>
 <translation id="3456078764689556234">Отпечатена страница <ph name="PRINTED_PAGES" /> од <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Се скенира страницата <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % завршено.</translation>
 <translation id="3459509316159669723">Се печати</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">Менување тапет</translation>
 <translation id="360565022852130722">Wi-Fi мрежата е обезбедена со слаб протокол WEP 802.1x</translation>
 <translation id="3606583719724308068">Висока латенција кон веб-сајтовите со HTTPS</translation>
+<translation id="3616113530831147358">Аудио</translation>
 <translation id="3621202678540785336">Внесување</translation>
 <translation id="3632579075709132555">Вклучи/исклучи заштита на приватноста</translation>
 <translation id="3643810137582748570">Прескокни калибрација</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">Извршете отклучување на серверот за RMA</translation>
 <translation id="4145784616224233563">Заштитен ѕид со HTTP</translation>
 <translation id="4147897805161313378">Фотографии на Google</translation>
+<translation id="4150201353443180367">Екран</translation>
 <translation id="4155551848414053977">Уверете се дека скенерот е вклучен и достапен преку мрежата или преку директна врска</translation>
 <translation id="4159784952369912983">Пурпурна</translation>
 <translation id="4170180284036919717">Фотографирај</translation>
@@ -746,6 +750,7 @@
 <translation id="7960831585769876809">Температура</translation>
 <translation id="7977800524392185497">За да се придружите на мрежата <ph name="NETWORK_NAME" />, одете во „Поставки“</translation>
 <translation id="7978412674231730200">Приватен клуч</translation>
+<translation id="7982789257301363584">Мрежа</translation>
 <translation id="7994702968232966508">EAP-метод</translation>
 <translation id="802154636333426148">Неуспешно преземање</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -840,6 +845,7 @@
 <translation id="8834539327799336565">Моментално поврзани</translation>
 <translation id="8845001906332463065">Побарајте помош</translation>
 <translation id="8855781559874488009">Не може да се поврзе преку заштитен ѕид со веб-сајтови со HTTP</translation>
+<translation id="885701979325669005">Склад</translation>
 <translation id="8863170912498892583">Овозможи темна тема</translation>
 <translation id="8863888432376731307">Добијте <ph name="INTENT" /> за „<ph name="QUERY" />“ и друго</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb
index 95a8eef..240b75be 100644
--- a/chromeos/strings/chromeos_strings_ml.xtb
+++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">വാൾപേപ്പറായി സജ്ജീകരിക്കുക</translation>
 <translation id="1578784163189013834">സ്ക്രീൻ സേവർ പശ്ചാത്തലം തിരഞ്ഞെടുക്കുക</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> മുതലുള്ള ഡാറ്റാ ഉപയോഗം</translation>
+<translation id="1620510694547887537">ക്യാമറ</translation>
 <translation id="1621067168122174824">ചാർജ് ടെസ്റ്റ് റൺ ചെയ്യുക</translation>
 <translation id="1631385268983122904">ഇപ്പോൾ, ഉപകരണം വേർപെടുത്തിയ നിലയിൽ തുടരുക</translation>
 <translation id="1639239467298939599">ലോഡുചെയ്യുന്നു</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422"><ph name="FIRST_MANAGER" />, <ph name="SECOND_MANAGER" /> എന്നിവ മാനേജ് ചെയ്യുന്നത്</translation>
 <translation id="1726100011689679555">നെയിം സെർവറുകൾ</translation>
 <translation id="1731082422893354635">Bluetooth ടച്ച്പാഡ്</translation>
+<translation id="1745577949879301685">ചിത്രങ്ങൾ ലോഡ് ചെയ്യാനാകുന്നില്ല. നിങ്ങളുടെ നെറ്റ്‌വർക്ക് കണക്ഷൻ പരിശോധിക്കുകയോ ചിത്രങ്ങൾ വീണ്ടും ലോഡ് ചെയ്യാൻ ശ്രമിക്കുകയോ ചെയ്യുക.</translation>
 <translation id="1751249301761991853">വ്യക്തിപരമാക്കൽ</translation>
 <translation id="1753496554272155572">വാൾപേപ്പർ പ്രിവ്യൂവിൽ നിന്ന് പുറത്ത് കടക്കുക</translation>
 <translation id="175763766237925754">നല്ലത് (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">അപ്‌ഡേറ്റുമായി മുന്നോട്ട് പോകാൻ, 'അടുത്തത്' ക്ലിക്ക് ചെയ്യുക.</translation>
 <translation id="3434107140712555581">ബാറ്ററി: <ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">സുരക്ഷ</translation>
+<translation id="3441653493275994384">സ്ക്രീന്‍‌</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" />-ൽ <ph name="PRINTED_PAGES" /> പേജ് പ്രിന്റ് ചെയ്‌തു.</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" />-ാമത്തെ പേജ് സ്‌കാൻ ചെയ്യുന്നു. <ph name="PERCENTAGE_VALUE" />% പൂർത്തിയായി.</translation>
 <translation id="3459509316159669723">പ്രിന്റിംഗ്</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">വാൾപേപ്പർ മാറ്റുക</translation>
 <translation id="360565022852130722">ദുർബലമായ WEP 802.1x പ്രോട്ടോക്കോൾ ഉപയോഗിച്ചാണ് വെെഫെെ നെറ്റ്‌വർക്ക് സുരക്ഷിതമാക്കിയിരിക്കുന്നത്</translation>
 <translation id="3606583719724308068">HTTPS വെബ്‌സൈറ്റുകളിലേക്ക് കണക്റ്റ് ചെയ്യാൻ ഉയർന്ന പ്രതികരണ സമയം</translation>
+<translation id="3616113530831147358">ഓഡിയോ</translation>
 <translation id="3621202678540785336">ഇൻപുട്ട്</translation>
 <translation id="3632579075709132555">സ്വകാര്യതാ സ്‌ക്രീൻ ടോഗിൾ</translation>
 <translation id="3643810137582748570">കാലിബ്രേറ്റ് ചെയ്യുന്നത് ഒഴിവാക്കുക</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA സെർവർ അൺലോക്ക് നിറവേറ്റുക</translation>
 <translation id="4145784616224233563">HTTP ഫയര്‍വാള്‍</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">ഡിസ്‌പ്ലേ</translation>
 <translation id="4155551848414053977">സ്‌കാനർ ഓണാക്കിയിട്ടുണ്ടെന്നും നിങ്ങളുടെ നെറ്റ്‌വർക്കോ നേരിട്ടുള്ള കണക്ഷനോ വഴി അത് ലഭ്യമാണെന്നും ഉറപ്പാക്കുക</translation>
 <translation id="4159784952369912983">പര്‍പ്പിള്‍</translation>
 <translation id="4170180284036919717">ഫോട്ടോ എടുക്കുക</translation>
@@ -425,6 +430,7 @@
 <translation id="4915052247106771211">ഇത് ഉപകരണത്തെ ഫാക്‌ടറി ക്രമീകരണത്തിലേക്ക് റീസെറ്റ് ചെയ്യും (Powerwash).</translation>
 <translation id="4917385247580444890">ശക്തം</translation>
 <translation id="4917889632206600977">പ്രിന്റ് ജോലി നിർത്തി - പേപ്പറില്ല</translation>
+<translation id="491791267030419270">ഫീഡ്ബാക്ക് എഴുതുന്നതിനുള്ള നുറുങ്ങുകൾ</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> സെക്കന്റിൽ <ph name="RATE" /> ചാർജ് ചെയ്‌തു.</translation>
 <translation id="4930320165497208503">കണക്ഷൻ സജ്ജീകരിക്കാനോ അപ്ഡേറ്റ് ചെയ്യാനോ <ph name="BEGIN_LINK" />ക്രമീകരണത്തിലേക്ക്<ph name="END_LINK" /> പോകുക.</translation>
 <translation id="4932733599132424254">തീയതി</translation>
@@ -744,6 +750,7 @@
 <translation id="7960831585769876809">താപനില</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> നെറ്റ്‌വർക്കിൽ ചേരാൻ, ക്രമീകരണത്തിലേക്ക് പോകുക</translation>
 <translation id="7978412674231730200">സ്വകാര്യ കീ</translation>
+<translation id="7982789257301363584">നെറ്റ്‌വർക്ക്</translation>
 <translation id="7994702968232966508">EAP രീതി</translation>
 <translation id="802154636333426148">ഡൗൺലോഡ് പരാജയപ്പെട്ടു</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -838,6 +845,7 @@
 <translation id="8834539327799336565">നിലവിൽ കണക്റ്റ് ചെയ്‌തവ</translation>
 <translation id="8845001906332463065">സഹായം നേടുക</translation>
 <translation id="8855781559874488009">HTTP വെബ്സൈറ്റുകളിലേക്ക് ഫയര്‍വാള്‍ മുഖേന കണക്റ്റ് ചെയ്യാനാകുന്നില്ല</translation>
+<translation id="885701979325669005">സംഭരണം</translation>
 <translation id="8863170912498892583">ഡാർക്ക് തീം പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" എന്നതിനും മറ്റുമുള്ള <ph name="INTENT" /> നേടുക</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_mn.xtb b/chromeos/strings/chromeos_strings_mn.xtb
index 9442ed2..dc4227a 100644
--- a/chromeos/strings/chromeos_strings_mn.xtb
+++ b/chromeos/strings/chromeos_strings_mn.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Дэлгэцийн зураг болгох</translation>
 <translation id="1578784163189013834">Дэлгэц амраагчийн арын дэвсгэрийг сонгох</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" />-с хойших дата ашиглалт</translation>
+<translation id="1620510694547887537">Камер</translation>
 <translation id="1621067168122174824">Цэнэглэх туршилтыг ажиллуулах</translation>
 <translation id="1631385268983122904">Одоохондоо төхөөрөмжийг бүү угсраарай</translation>
 <translation id="1639239467298939599">Ачаалж байна</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422"><ph name="FIRST_MANAGER" /> болон <ph name="SECOND_MANAGER" />-р удирддаг</translation>
 <translation id="1726100011689679555">Нэрийн сервер</translation>
 <translation id="1731082422893354635">Bluetooth мэдрэгч самбар</translation>
+<translation id="1745577949879301685">Зургийг ачаалж чадсангүй. Сүлжээний холболтоо шалгах эсвэл зургуудыг дахин ачаалж үзнэ үү</translation>
 <translation id="1751249301761991853">Хувийн</translation>
 <translation id="1753496554272155572">Дэлгэцийн зургийг урьдчилан үзэхээс гарах</translation>
 <translation id="175763766237925754">Сайн (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">Шинэчлэлтийг үргэлжлүүлэхийн тулд Дараах дээр товшино уу.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Нууцлал</translation>
+<translation id="3441653493275994384">Дэлгэц</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" />-с <ph name="PRINTED_PAGES" /> хуудсыг хэвлэсэн.</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" />-р хуудсыг скан хийж байна. <ph name="PERCENTAGE_VALUE" />% дууссан.</translation>
 <translation id="3459509316159669723">Хэвлэж байна</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">Дэлгэцийн зураг солих</translation>
 <translation id="360565022852130722">WiFi сүлжээ WEP 802.1x-н сул протоколоор хамгаалагдсан байна</translation>
 <translation id="3606583719724308068">HTTPS вебсайтууд руу өндөр хоцролттой</translation>
+<translation id="3616113530831147358">Аудио</translation>
 <translation id="3621202678540785336">Оролт</translation>
 <translation id="3632579075709132555">Нууцлалын дэлгэцийг асаах/унтраах</translation>
 <translation id="3643810137582748570">Тохируулгыг алгасах</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA серверийн түгжээг тайлах гүйцэтгэл</translation>
 <translation id="4145784616224233563">HTTP галт хана</translation>
 <translation id="4147897805161313378">Google Зураг</translation>
+<translation id="4150201353443180367">Дэлгэц</translation>
 <translation id="4155551848414053977">Сканнер асаалттай бөгөөд таны сүлжээ эсвэл шууд холболтоор боломжтой эсэхийг шалгана уу</translation>
 <translation id="4159784952369912983">Нил ягаан</translation>
 <translation id="4170180284036919717">Зураг авах</translation>
@@ -425,6 +430,7 @@
 <translation id="4915052247106771211">Энэ нь төхөөрөмжийг үйлдвэрийн тохиргоонд шинэчлэх болно (Powerwash).</translation>
 <translation id="4917385247580444890">Хүчтэй</translation>
 <translation id="4917889632206600977">Зогссон - Цаас дууссан</translation>
+<translation id="491791267030419270">Санал хүсэлт бичих талаарх зөвлөгөө</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> секундэд <ph name="RATE" /> цэнэглэсэн.</translation>
 <translation id="4930320165497208503">Холболт тохируулах эсвэл шинэчлэхийн тулд <ph name="BEGIN_LINK" />Тохиргоо<ph name="END_LINK" /> руу очно уу.</translation>
 <translation id="4932733599132424254">Огноо</translation>
@@ -745,6 +751,7 @@
 <translation id="7960831585769876809">Температур</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> сүлжээнд нэгдэхийн тулд Тохиргоо руу очно уу</translation>
 <translation id="7978412674231730200">Хувийн түлхүүр</translation>
+<translation id="7982789257301363584">Сүлжээ</translation>
 <translation id="7994702968232966508">EAP арга</translation>
 <translation id="802154636333426148">Татаж чадсангүй</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +846,7 @@
 <translation id="8834539327799336565">Одоогоор холбогдсон</translation>
 <translation id="8845001906332463065">Тусламж авах</translation>
 <translation id="8855781559874488009">HTTP вебсайтуудад галт хана дундуур холбогдох боломжгүй</translation>
+<translation id="885701979325669005">Хадгалалт</translation>
 <translation id="8863170912498892583">Бараан загварыг идэвхжүүлэх</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" болон бусад зүйлд <ph name="INTENT" />-г авах</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_mr.xtb b/chromeos/strings/chromeos_strings_mr.xtb
index ca8db38..e45fd44 100644
--- a/chromeos/strings/chromeos_strings_mr.xtb
+++ b/chromeos/strings/chromeos_strings_mr.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">वॉलपेपर म्हणून सेट करा</translation>
 <translation id="1578784163189013834">स्क्रीन सेव्हर बॅकग्राउंड निवडा</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> पासूनचा डेटा वापर</translation>
+<translation id="1620510694547887537">कॅमेरा</translation>
 <translation id="1621067168122174824">चार्ज चाचणी रन करा</translation>
 <translation id="1631385268983122904">अद्याप डिव्हाइस परत एकत्र करू नका</translation>
 <translation id="1639239467298939599">लोड करीत आहे</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">अपडेटसह पुढे सुरू ठेवण्यासाठी, पुढील वर क्लिक करा.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">सुरक्षितता</translation>
+<translation id="3441653493275994384">तपासा</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> पैकी <ph name="PRINTED_PAGES" /> पेज प्रिंट केली.</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" /> पेज स्कॅन करत आहे. <ph name="PERCENTAGE_VALUE" />% पूर्ण झाले.</translation>
 <translation id="3459509316159669723">प्रिंट</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">वॉलपेपर बदला</translation>
 <translation id="360565022852130722">वायफाय नेटवर्क कमकुवत प्रोटोकॉल WEP 802.1x सह सुरक्षित केले गेले आहे</translation>
 <translation id="3606583719724308068">HTTPS वेबसाइटवर लेटन्सी जास्त आहे</translation>
+<translation id="3616113530831147358">ऑडिओ</translation>
 <translation id="3621202678540785336">इनपुट</translation>
 <translation id="3632579075709132555">गोपनीयता स्क्रीन टॉगल करा</translation>
 <translation id="3643810137582748570">कॅलिब्रेशन वगळा</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">RMA सर्व्हर अनलॉक परफॉर्म करा</translation>
 <translation id="4145784616224233563">HTTP फायरवॉल</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">डिस्प्ले करा</translation>
 <translation id="4155551848414053977">तुमच्या नेटवर्क किंवा थेट कनेक्शनद्वारे स्कॅनर सुरू आणि उपलब्ध असल्याची खात्री करा</translation>
 <translation id="4159784952369912983">जांभळा</translation>
 <translation id="4170180284036919717">फोटो काढा</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">तापमान</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> नेटवर्कमध्ये सामील होण्यासाठी, सेटिंग्ज वर जा</translation>
 <translation id="7978412674231730200">प्रायव्हेट की</translation>
+<translation id="7982789257301363584">नेटवर्क</translation>
 <translation id="7994702968232966508">EAP पद्धत</translation>
 <translation id="802154636333426148">डाउनलोड अयशस्वी झाले</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">सध्या कनेक्ट केलेली</translation>
 <translation id="8845001906332463065">मदत मिळवा</translation>
 <translation id="8855781559874488009">फायरवॉलद्वारे HTTP वेबसाइटशी कनेक्ट करू शकत नाही</translation>
+<translation id="885701979325669005">स्टोरेज</translation>
 <translation id="8863170912498892583">गडद थीम सुरू करा</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" आणि आणखी बऱ्याच गोष्टींसाठी <ph name="INTENT" /> मिळवा</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb
index 8877fdcb..dbdbcec3 100644
--- a/chromeos/strings/chromeos_strings_ms.xtb
+++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Tetapkan sebagai kertas dinding</translation>
 <translation id="1578784163189013834">Pilih latar penyelamat skrin</translation>
 <translation id="1615335640928990664">Penggunaan data sejak <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Jalankan Ujian cas</translation>
 <translation id="1631385268983122904">Jangan masukkan semula bateri lagi</translation>
 <translation id="1639239467298939599">Memuatkan</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">Untuk meneruskan kemaskinian, klik Seterusnya.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Keselamatan</translation>
+<translation id="3441653493275994384">Skrin</translation>
 <translation id="3456078764689556234">Mencetak halaman <ph name="PRINTED_PAGES" /> daripada <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Mengimbas halaman <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% selesai.</translation>
 <translation id="3459509316159669723">Mencetak</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">Tukar kertas dinding</translation>
 <translation id="360565022852130722">Rangkaian Wi-Fi selamat dengan protokol lemah WEP 802.1x</translation>
 <translation id="3606583719724308068">Kependaman tinggi ke laman web HTTPS</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Input</translation>
 <translation id="3632579075709132555">Togol skrin privasi</translation>
 <translation id="3643810137582748570">Langkau penentukuran</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">Lakukan Buka Kunci Pelayan RMA</translation>
 <translation id="4145784616224233563">Tembok Api HTTP</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">Paparan</translation>
 <translation id="4155551848414053977">Pastikan pengimbas dihidupkan dan tersedia melalui rangkaian anda atau sambungan langsung</translation>
 <translation id="4159784952369912983">Ungu</translation>
 <translation id="4170180284036919717">Ambil foto</translation>
@@ -426,6 +430,7 @@
 <translation id="4915052247106771211">Tindakan ini akan menetapkan semula peranti kepada tetapan kilang (Powerwash).</translation>
 <translation id="4917385247580444890">Kuat</translation>
 <translation id="4917889632206600977">Dihentikan - Kehabisan kertas</translation>
+<translation id="491791267030419270">Petua menulis maklum balas</translation>
 <translation id="4921665434385737356">Dicas <ph name="RATE" /> dalam masa <ph name="NUM_SECONDS" /> saat.</translation>
 <translation id="4930320165497208503">Untuk menyediakan atau mengemas kini sambungan, pergi ke <ph name="BEGIN_LINK" />Tetapan<ph name="END_LINK" />.</translation>
 <translation id="4932733599132424254">Tarikh</translation>
@@ -746,6 +751,7 @@
 <translation id="7960831585769876809">Suhu</translation>
 <translation id="7977800524392185497">Untuk menyertai rangkaian <ph name="NETWORK_NAME" />, pergi ke Tetapan</translation>
 <translation id="7978412674231730200">Kunci persendirian</translation>
+<translation id="7982789257301363584">Rangkaian</translation>
 <translation id="7994702968232966508">Kaedah EAP</translation>
 <translation id="802154636333426148">Muat turun gagal</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -840,6 +846,7 @@
 <translation id="8834539327799336565">Tersambung pada masa ini</translation>
 <translation id="8845001906332463065">Dapatkan bantuan</translation>
 <translation id="8855781559874488009">Tidak dapat menyambung melalui tembok api ke laman web HTTP</translation>
+<translation id="885701979325669005">Storan</translation>
 <translation id="8863170912498892583">Dayakan tema gelap</translation>
 <translation id="8863888432376731307">Dapatkan <ph name="INTENT" /> untuk "<ph name="QUERY" />" dan pelbagai lagi</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_my.xtb b/chromeos/strings/chromeos_strings_my.xtb
index 50d4c0e..604346b 100644
--- a/chromeos/strings/chromeos_strings_my.xtb
+++ b/chromeos/strings/chromeos_strings_my.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">နောက်ခံအဖြစ် သတ်မှတ်ရန်</translation>
 <translation id="1578784163189013834">ဖန်သားပြင်နားချိန် နောက်ခံရွေးရန်</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> မှစ၍ ဒေတာသုံးစွဲမှု</translation>
+<translation id="1620510694547887537">ကင်မရာ</translation>
 <translation id="1621067168122174824">အားဝင်ရောက်မှု စစ်ဆေးရန်</translation>
 <translation id="1631385268983122904">ဘက်ထရီ ပြန်မတပ်ပါနှင့်ဦး</translation>
 <translation id="1639239467298939599">တင်ပေးနေ</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422"><ph name="FIRST_MANAGER" /> နှင့် <ph name="SECOND_MANAGER" /> က စီမံခန့်ခွဲသည်</translation>
 <translation id="1726100011689679555">အမည်ဆာဗာများ</translation>
 <translation id="1731082422893354635">Bluetooth တာ့ချ်ပက်</translation>
+<translation id="1745577949879301685">ပုံများဖွင့်၍ မရပါ။ ကွန်ရက်ချိတ်ဆက်မှုကို စစ်ဆေးပါ (သို့) ပုံများကို ထပ်ဖွင့်ကြည့်ပါ။</translation>
 <translation id="1751249301761991853">ကိုယ်ပိုင်</translation>
 <translation id="1753496554272155572">နောက်ခံအစမ်းကြည့်ရှုခြင်းမှ ထွက်ရန်</translation>
 <translation id="175763766237925754">ကောင်း (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">ရှေ့ဆက်၍ အပ်ဒိတ်လုပ်ရန် ‘ရှေ့သို့’ ကို နှိပ်ပါ။</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">လုံခြုံရေး</translation>
+<translation id="3441653493275994384">မျက်နှာပြင်</translation>
 <translation id="3456078764689556234">စာမျက်နှာ <ph name="TOTAL_PAGES" /> မျက်နှာအနက် <ph name="PRINTED_PAGES" /> မျက်နှာကို ပုံနှိပ်ထုတ်ထားသည်။</translation>
 <translation id="345898999683440380">စာမျက်နှာ <ph name="PAGE_NUM" /> ကို စကင်ဖတ်နေသည်။ <ph name="PERCENTAGE_VALUE" />% ပြီးသွားပါပြီ။</translation>
 <translation id="3459509316159669723">ပုံနှိပ်နေသည်</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">နောက်ခံပုံ ပြောင်းရန်</translation>
 <translation id="360565022852130722">WiFi ကွန်ရက်ကို အားနည်းသောပရိုတိုကော WEP 802.1x ဖြင့် လုံခြုံအောင်ထားသည်</translation>
 <translation id="3606583719724308068">HTTPS ဝဘ်ဆိုက်များသို့ တုံ့ပြန်ချိန်မြင့်သည်</translation>
+<translation id="3616113530831147358">အသံ</translation>
 <translation id="3621202678540785336">ထည့်သွင်းမှု</translation>
 <translation id="3632579075709132555">အချက်အလက်ကာကွယ်ရေး ဖန်သားပြင်ပြောင်းရန်</translation>
 <translation id="3643810137582748570">ချိန်ညှိမှုကို ကျော်ရန်</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA ဆာဗာ လော့ခ်ဖွင့်ပါ</translation>
 <translation id="4145784616224233563">HTTP Firewall</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">မျက်နှာပြင်ပြသမှု</translation>
 <translation id="4155551848414053977">စကင်ဖတ်စက်ဖွင့်ထားပြီး သင့်ကွန်ရက် (သို့) တိုက်ရိုက်ချိတ်ဆက်မှုမှတစ်ဆင့် သုံးနိုင်ကြောင်း သေချာပါစေ</translation>
 <translation id="4159784952369912983">ခရမ်း</translation>
 <translation id="4170180284036919717">ဓာတ်ပုံရိုက်ရန်</translation>
@@ -425,6 +430,7 @@
 <translation id="4915052247106771211">၎င်းက စက်ကို စက်ရုံထုတ် ဆက်တင်များ သို့ ပြင်ဆင်သတ်မှတ်ပါမည် (Powerwash)။</translation>
 <translation id="4917385247580444890">အားကောင်းသည်</translation>
 <translation id="4917889632206600977">ရပ်သွားသည် - စာရွက်ကုန်နေသည်</translation>
+<translation id="491791267030419270">တုံ့ပြန်ချက်ရေးနည်း အကြံပြုချက်</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> စက္ကန့်အတွင်း <ph name="RATE" /> အားသွင်းထားသည်။</translation>
 <translation id="4930320165497208503">ချိတ်ဆက်မှု စနစ်ထည့်သွင်းရန် (သို့) အပ်ဒိတ်လုပ်ရန် <ph name="BEGIN_LINK" />ဆက်တင်များ<ph name="END_LINK" /> သို့ သွားပါ။</translation>
 <translation id="4932733599132424254">ရက်စွဲ</translation>
@@ -744,6 +750,7 @@
 <translation id="7960831585769876809">အပူချိန်</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> ကွန်ရက်သို့ ချိတ်ဆက်ရန် ဆက်တင်များသို့ သွားပါ</translation>
 <translation id="7978412674231730200">ကိုယ်ပိုင် သော့</translation>
+<translation id="7982789257301363584">ကွန်ရက်</translation>
 <translation id="7994702968232966508">EAP နည်းလမ်း</translation>
 <translation id="802154636333426148">ဒေါင်းလုဒ်လုပ်မှု မအောင်မြင်ပါ</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -838,6 +845,7 @@
 <translation id="8834539327799336565">လက်ရှိ ချိတ်ဆက်ထားသည်</translation>
 <translation id="8845001906332463065">အကူအညီရယူပါ</translation>
 <translation id="8855781559874488009">HTTP ဝဘ်ဆိုက်များသို့ firewall ဖြတ်ပြီး ချိတ်ဆက်၍မရပါ</translation>
+<translation id="885701979325669005">သိုလှောင်ခန်း</translation>
 <translation id="8863170912498892583">မှောင်သည့် အပြင်အဆင် ဖွင့်ရန်</translation>
 <translation id="8863888432376731307">“<ph name="QUERY" />” စသည်တို့အတွက် <ph name="INTENT" /> ရယူပါ</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_ne.xtb b/chromeos/strings/chromeos_strings_ne.xtb
index 06a7f3b..fbbbcf1 100644
--- a/chromeos/strings/chromeos_strings_ne.xtb
+++ b/chromeos/strings/chromeos_strings_ne.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">वालपेपरका रूपमा सेट गर्नुहोस्</translation>
 <translation id="1578784163189013834">स्क्रिन सेभरको ब्याकग्राउन्ड चयन गर्नुहोस्</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> देखि प्रयोग गरिएको डेटा</translation>
+<translation id="1620510694547887537">क्यामेरा</translation>
 <translation id="1621067168122174824">ब्याट्रीको चार्जसम्बन्धी परीक्षण गर्नुहोस्</translation>
 <translation id="1631385268983122904">डिभाइसमा अहिले नै ब्याट्री नहाल्नुहोस्</translation>
 <translation id="1639239467298939599">लोड गर्दै</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422"><ph name="FIRST_MANAGER" /> र <ph name="SECOND_MANAGER" /> ले व्यवस्थापन गरेका</translation>
 <translation id="1726100011689679555">नामका सर्भरहरू</translation>
 <translation id="1731082422893354635">ब्लुटुथ भएको टचप्याड</translation>
+<translation id="1745577949879301685">फोटोहरू लोड गर्न सकिएन। आफ्नो नेटवर्क कनेक्सन जाँच्नुहोस् वा ती फोटोहरू फेरि लोड गरी हेर्नुहोस्।</translation>
 <translation id="1751249301761991853">व्यक्तिगत</translation>
 <translation id="1753496554272155572">वालपेपरको प्रिभ्यूबाट बाहिरिनुहोस्</translation>
 <translation id="175763766237925754">राम्रो (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">तपाईं यो अपडेट प्राप्त गर्न चाहनुहुन्छ भने अर्को नामक बटन क्लिक गर्नुहोस्।</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">सुरक्षा</translation>
+<translation id="3441653493275994384">स्क्रिन</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> मध्ये <ph name="PRINTED_PAGES" /> पृष्ठहरू प्रिन्ट गरिए</translation>
 <translation id="345898999683440380">पेज <ph name="PAGE_NUM" /> स्क्यान गरिँदै छ। <ph name="PERCENTAGE_VALUE" />% पूरा भयो।</translation>
 <translation id="3459509316159669723">प्रिन्टिङ</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">वालपेपर परिवर्तन गर्नुहोस्</translation>
 <translation id="360565022852130722">WiFi नेटवर्क WEP 802.1x नामक कमजोर प्रोटोकोल प्रयोग गरी सुरक्षित गरिएको छ</translation>
 <translation id="3606583719724308068">HTTPS वेबसाइटहरू लोड हुन धेरै समय लागिरहेको छ</translation>
+<translation id="3616113530831147358">अडियो</translation>
 <translation id="3621202678540785336">आगत</translation>
 <translation id="3632579075709132555">प्राइभेसी स्क्रिन टगल</translation>
 <translation id="3643810137582748570">क्यालिब्रेट नगरिकन अगाडि बढ्नुहोस्</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA सर्भर अनलक गर्नुहोस्</translation>
 <translation id="4145784616224233563">HTTP फायरवाल</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">प्रदर्शन</translation>
 <translation id="4155551848414053977">स्क्यानर अन छ र उक्त स्क्यानर तपाईंको नेटवर्क वा कुनै डाइरेक्ट कनेक्सनमार्फत प्रयोग गर्न मिल्छ भन्ने कुरा सुनिश्चित गर्नुहोस्</translation>
 <translation id="4159784952369912983">बैजनी</translation>
 <translation id="4170180284036919717">फोटो खिच्नुहोस्</translation>
@@ -744,6 +749,7 @@
 <translation id="7960831585769876809">तापक्रम</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> नेटवर्कमा कनेक्ट गर्न सेटिङमा जानुहोस्</translation>
 <translation id="7978412674231730200">निजी कुञ्जी</translation>
+<translation id="7982789257301363584">सञ्जाल</translation>
 <translation id="7994702968232966508">EAP विधि</translation>
 <translation id="802154636333426148">डाउनलोड गर्न सकिएन</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -838,6 +844,7 @@
 <translation id="8834539327799336565">हाल कनेक्ट गरिएका डिभाइस</translation>
 <translation id="8845001906332463065">मद्दत प्राप्त गर्नुहोस्</translation>
 <translation id="8855781559874488009">फायरवाल पार गरेर HTTP वेबसाइटहरूमा कनेक्ट गर्न सकिएन</translation>
+<translation id="885701979325669005">भण्डारण</translation>
 <translation id="8863170912498892583">अँध्यारो थिम अन गर्नुहोस्</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" को <ph name="INTENT" /> र अन्य कुरा हेर्नुहोस्</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_nl.xtb b/chromeos/strings/chromeos_strings_nl.xtb
index 5f0fb35..9338313 100644
--- a/chromeos/strings/chromeos_strings_nl.xtb
+++ b/chromeos/strings/chromeos_strings_nl.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">Launcher</translation>
 <translation id="1512982610995527443">Apparaat wordt over 5 seconden uitgezet</translation>
 <translation id="1522984060396982789">De reparatie is geslaagd. Je kunt het apparaat uitzetten of bepaalde aanvullende acties uitvoeren.</translation>
+<translation id="1526389707933164996">Screensaveranimatie</translation>
 <translation id="152892567002884378">Volume omhoog</translation>
 <translation id="1555130319947370107">Blauw</translation>
 <translation id="155865706765934889">Touchpad</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">Instellen als achtergrond</translation>
 <translation id="1578784163189013834">Achtergrond voor screensaver selecteren</translation>
 <translation id="1615335640928990664">Datagebruik sinds <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Camera</translation>
 <translation id="1621067168122174824">Batterijlading testen</translation>
 <translation id="1631385268983122904">Zet het apparaat nog niet weer in elkaar</translation>
 <translation id="1639239467298939599">Laden</translation>
@@ -93,6 +95,7 @@
 <translation id="1717874160321062422">Beheerd door <ph name="FIRST_MANAGER" /> en <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">Naamservers</translation>
 <translation id="1731082422893354635">Bluetooth-touchpad</translation>
+<translation id="1745577949879301685">Kan afbeeldingen niet laden. Check de netwerkverbinding of probeer de afbeeldingen opnieuw te laden.</translation>
 <translation id="1751249301761991853">Persoonlijk</translation>
 <translation id="1753496554272155572">Achtergrondvoorbeeld sluiten</translation>
 <translation id="175763766237925754">Goed (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -257,6 +260,7 @@
 <translation id="3413935475507503304">Klik op Volgende om door te gaan met de update.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Beveiliging</translation>
+<translation id="3441653493275994384">Beeldscherm</translation>
 <translation id="3456078764689556234">Pagina <ph name="PRINTED_PAGES" /> van <ph name="TOTAL_PAGES" /> afgedrukt.</translation>
 <translation id="345898999683440380">Pagina <ph name="PAGE_NUM" /> scannen. <ph name="PERCENTAGE_VALUE" />% voltooid.</translation>
 <translation id="3459509316159669723">Afdrukken</translation>
@@ -279,6 +283,7 @@
 <translation id="3604713164406837697">Achtergrond wijzigen</translation>
 <translation id="360565022852130722">Wifi-netwerk is beveiligd met het zwakke protocol WEP 802.1x</translation>
 <translation id="3606583719724308068">Lange vertraging voor HTTPS-websites</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Ingang</translation>
 <translation id="3632579075709132555">Privacyscherm schakelen</translation>
 <translation id="3643810137582748570">Kalibratie overslaan</translation>
@@ -300,6 +305,7 @@
 <translation id="3858860766373142691">Naam</translation>
 <translation id="3865414814144988605">Resolutie</translation>
 <translation id="387301095347517405">Het aantal keren dat de batterij een volledige oplaadcyclus heeft doorlopen</translation>
+<translation id="3885327323343477505">Screensaver wijzigen</translation>
 <translation id="3923184630988645767">Datagebruik</translation>
 <translation id="3924044641767672375">Verbinding met wifi wordt aanbevolen om het reparatieproces makkelijker te maken. Je netwerk wordt opgeslagen.</translation>
 <translation id="3932043219784172185">Geen apparaat aangesloten</translation>
@@ -327,6 +333,7 @@
 <translation id="4140251671072434548">RMA Server Unlock uitvoeren</translation>
 <translation id="4145784616224233563">HTTP-firewall</translation>
 <translation id="4147897805161313378">Google Foto's</translation>
+<translation id="4150201353443180367">Weergave</translation>
 <translation id="4155551848414053977">Zorg dat de scanner aanstaat en beschikbaar is via je netwerk of een directe verbinding.</translation>
 <translation id="4159784952369912983">Paars</translation>
 <translation id="4170180284036919717">Foto maken</translation>
@@ -418,6 +425,7 @@
 <translation id="4890353053343094602">Kies onmiddellijk een nieuw wachtwoord</translation>
 <translation id="4891842000192098784">Stress</translation>
 <translation id="4897058166682006107">Apparaat heeft nog <ph name="BATTERY_PERCENTAGE" />% batterijlading in het linkeroordopje.</translation>
+<translation id="4905998861748258752">Zet de functie aan om screensaveropties te selecteren</translation>
 <translation id="4908030561598728899">Firmware installeren...</translation>
 <translation id="4915052247106771211">Hierdoor wordt het apparaat teruggezet naar de fabrieksinstellingen (Powerwash).</translation>
 <translation id="4917385247580444890">Sterk</translation>
@@ -742,6 +750,7 @@
 <translation id="7960831585769876809">Temperatuur</translation>
 <translation id="7977800524392185497">Ga naar Instellingen als je verbinding wilt maken met een <ph name="NETWORK_NAME" />-netwerk</translation>
 <translation id="7978412674231730200">Privésleutel</translation>
+<translation id="7982789257301363584">Netwerk</translation>
 <translation id="7994702968232966508">EAP-methode</translation>
 <translation id="802154636333426148">Downloaden mislukt</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -836,6 +845,7 @@
 <translation id="8834539327799336565">Momenteel verbonden</translation>
 <translation id="8845001906332463065">Hulp nodig?</translation>
 <translation id="8855781559874488009">Kan geen verbinding maken met HTTP-websites via een firewall</translation>
+<translation id="885701979325669005">Opslag</translation>
 <translation id="8863170912498892583">Donker thema aanzetten</translation>
 <translation id="8863888432376731307"><ph name="INTENT" /> ophalen voor <ph name="QUERY" /> en meer</translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -861,6 +871,7 @@
 <translation id="8997710128084572139">Apparaat heeft nog <ph name="BATTERY_PERCENTAGE" />% batterijlading.</translation>
 <translation id="9003704114456258138">Frequentie</translation>
 <translation id="9025198690966128418">Gebruiken als persoonlijk apparaat</translation>
+<translation id="9028832514430399253">Gebruik de schakelaar om de screensaveropties te selecteren</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">DNS-omzetting heeft een lange vertraging</translation>
 <translation id="9063121522582193837">Kan bepaalde componenten niet kalibreren</translation>
diff --git a/chromeos/strings/chromeos_strings_no.xtb b/chromeos/strings/chromeos_strings_no.xtb
index 6a9ecff..db343ca 100644
--- a/chromeos/strings/chromeos_strings_no.xtb
+++ b/chromeos/strings/chromeos_strings_no.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Angi som bakgrunn</translation>
 <translation id="1578784163189013834">Velg skjermsparerbakgrunn</translation>
 <translation id="1615335640928990664">Databruk siden <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Kjør ladetest</translation>
 <translation id="1631385268983122904">Ikke sett enheten sammen igjen ennå</translation>
 <translation id="1639239467298939599">Laster inn</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">Administreres av <ph name="FIRST_MANAGER" /> og <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">Navnetjenere</translation>
 <translation id="1731082422893354635">Bluetooth-styreflate</translation>
+<translation id="1745577949879301685">Kunne ikke laste inn bilder. Kontroller nettverkstilkoblingen din, eller prøv å laste inn bildene på nytt.</translation>
 <translation id="1751249301761991853">Personlig</translation>
 <translation id="1753496554272155572">Avslutt forhåndsvisning av bakgrunn</translation>
 <translation id="175763766237925754">God (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">For å gå videre med oppdateringen, klikk på Neste.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="3435738964857648380">Sikkerhet</translation>
+<translation id="3441653493275994384">Skjerm</translation>
 <translation id="3456078764689556234">Skrev ut side <ph name="PRINTED_PAGES" /> av <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Skanner side <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % fullført.</translation>
 <translation id="3459509316159669723">Utskrift</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">Endre bakgrunn</translation>
 <translation id="360565022852130722">Wi-Fi-nettverket er sikret med den svake protokollen WEP 802.1x</translation>
 <translation id="3606583719724308068">Høy tidsforsinkelse til HTTPS-nettsteder</translation>
+<translation id="3616113530831147358">Lyd</translation>
 <translation id="3621202678540785336">Inndata</translation>
 <translation id="3632579075709132555">Personvernskjerm av/på</translation>
 <translation id="3643810137582748570">Hopp over kalibreringen</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">Utfør RMA-tjeneropplåsing</translation>
 <translation id="4145784616224233563">HTTP-brannmur</translation>
 <translation id="4147897805161313378">Google Foto</translation>
+<translation id="4150201353443180367">Skjerm</translation>
 <translation id="4155551848414053977">Sørg for at skanneren er påslått og tilgjengelig via nettverket eller en direktetilkobling</translation>
 <translation id="4159784952369912983">Fiolett</translation>
 <translation id="4170180284036919717">Ta et bilde</translation>
@@ -425,6 +430,7 @@
 <translation id="4915052247106771211">Dette medfører at enheten blir tilbakestilt til fabrikkstandard (Powerwash).</translation>
 <translation id="4917385247580444890">Sterkt</translation>
 <translation id="4917889632206600977">Stoppet – tom for papir</translation>
+<translation id="491791267030419270">Tips om å skrive tilbakemeldinger</translation>
 <translation id="4921665434385737356">Ladet <ph name="RATE" /> på <ph name="NUM_SECONDS" /> sekunder.</translation>
 <translation id="4930320165497208503">For å konfigurere eller oppdatere en tilkobling, gå til <ph name="BEGIN_LINK" />Innstillinger<ph name="END_LINK" />.</translation>
 <translation id="4932733599132424254">Dato</translation>
@@ -745,6 +751,7 @@
 <translation id="7960831585769876809">Temperatur</translation>
 <translation id="7977800524392185497">For å koble til et <ph name="NETWORK_NAME" />-nettverk, gå til Innstillinger</translation>
 <translation id="7978412674231730200">Privatnøkkel</translation>
+<translation id="7982789257301363584">Nettverk</translation>
 <translation id="7994702968232966508">EAP-metode</translation>
 <translation id="802154636333426148">Nedlastingen mislyktes</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +846,7 @@
 <translation id="8834539327799336565">Tilkoblet nå</translation>
 <translation id="8845001906332463065">Få hjelp</translation>
 <translation id="8855781559874488009">Kan ikke koble til HTTP-nettsteder gjennom brannmuren</translation>
+<translation id="885701979325669005">Lagring</translation>
 <translation id="8863170912498892583">Slå på mørkt tema</translation>
 <translation id="8863888432376731307">Få <ph name="INTENT" /> for «<ph name="QUERY" />» med mer</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_or.xtb b/chromeos/strings/chromeos_strings_or.xtb
index 184c67e..22bc5391 100644
--- a/chromeos/strings/chromeos_strings_or.xtb
+++ b/chromeos/strings/chromeos_strings_or.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">ୱାଲ୍‌‌ପେପର୍‌ ଭାବରେ ସେଟ୍‍ କରନ୍ତୁ</translation>
 <translation id="1578784163189013834">ସ୍କ୍ରିନ୍ ସେଭରର ବ୍ୟାକଗ୍ରାଉଣ୍ଡ ବାଛନ୍ତୁ</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" />ଠାରୁ ଡାଟା ବ୍ୟବହାର</translation>
+<translation id="1620510694547887537">କ୍ୟାମେରା</translation>
 <translation id="1621067168122174824">ବ୍ୟାଟେରୀ ଚାର୍ଜ ଟେଷ୍ଟ ଚଲାନ୍ତୁ</translation>
 <translation id="1631385268983122904">ଏପର୍ଯ୍ୟନ୍ତ ଡିଭାଇସକୁ ପୁଣି ଏକାଠି ରଖନ୍ତୁ ନାହିଁ</translation>
 <translation id="1639239467298939599">ଲୋଡ୍ ହେଉଛି</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">ଅପଡେଟ କରିବାକୁ ଆଗକୁ ବଢ଼ିବା ପାଇଁ, "ପରବର୍ତ୍ତୀ"କୁ କ୍ଲିକ କରନ୍ତୁ।</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">ସୁରକ୍ଷା</translation>
+<translation id="3441653493275994384">ସ୍କ୍ରିନ୍</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" />ଟି ପୃଷ୍ଠା ମଧ୍ୟରୁ <ph name="PRINTED_PAGES" /> ନମ୍ବର ପୃଷ୍ଠା ପ୍ରିଣ୍ଟ କରାଯାଇଛି।</translation>
 <translation id="345898999683440380">ପୃଷ୍ଠା <ph name="PAGE_NUM" />କୁ ସ୍କାନ୍ କରାଯାଉଛି। <ph name="PERCENTAGE_VALUE" />% ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି।</translation>
 <translation id="3459509316159669723">ପ୍ରିଣ୍ଟିଂ</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">ୱାଲପେପର୍ ପରିବର୍ତ୍ତନ କରନ୍ତୁ</translation>
 <translation id="360565022852130722">ଦୁର୍ବଳ ପ୍ରୋଟୋକଲ୍ WEP 802.1x ବ୍ୟବହାର କରି ୱାଇଫାଇ ନେଟୱାର୍କକୁ ସୁରକ୍ଷିତ କରାଯାଇଛି</translation>
 <translation id="3606583719724308068">HTTPS ୱେବସାଇଟଗୁଡ଼ିକ ପାଇଁ ଲାଟେନ୍ସି ଅଧିକ ଅଛି</translation>
+<translation id="3616113530831147358">ଅଡିଓ</translation>
 <translation id="3621202678540785336">ଇନ୍‌ପୁଟ୍</translation>
 <translation id="3632579075709132555">ଗୋପନୀୟତା ସ୍କ୍ରିନ ଟୋଗଲ</translation>
 <translation id="3643810137582748570">କାଲିବ୍ରେସନକୁ ବାଦ ଦିଅନ୍ତୁ</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">RMA ସର୍ଭର ଅନଲକ ପରଫର୍ମ କରନ୍ତୁ</translation>
 <translation id="4145784616224233563">HTTP ଫାୟାରୱାଲ୍</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">ଡିସ୍‌ପ୍ଲେ</translation>
 <translation id="4155551848414053977">ସ୍କାନରକୁ ଚାଲୁ କରାଯାଇଛି ଏବଂ ଏହା ଆପଣଙ୍କ ନେଟୱାର୍କ କିମ୍ବା ଏକ ସିଧାସଳଖ ସଂଯୋଗ ମାଧ୍ୟମରେ ଉପଲବ୍ଧ ଅଛି ବୋଲି ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation>
 <translation id="4159784952369912983">ବାଇଗଣୀ</translation>
 <translation id="4170180284036919717">ଗୋଟିଏ ଫଟୋ ଉଠାନ୍ତୁ</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">ତାପମାତ୍ରା</translation>
 <translation id="7977800524392185497">ଏକ <ph name="NETWORK_NAME" /> ନେଟୱାର୍କରେ ଯୋଗ ଦେବା ପାଇଁ, ସେଟିଂସକୁ ଯାଆନ୍ତୁ</translation>
 <translation id="7978412674231730200">ବ୍ୟକ୍ତିଗତ କୀ</translation>
+<translation id="7982789257301363584">ନେଟୱାର୍କ</translation>
 <translation id="7994702968232966508">EAP ପଦ୍ଧତି</translation>
 <translation id="802154636333426148">ଡାଉନ୍‌ଲୋଡ୍ ବିଫଳ ହୋଇଛି</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">ବର୍ତ୍ତମାନ ସଂଯୁକ୍ତ ଅଛି</translation>
 <translation id="8845001906332463065">ସାହାଯ୍ୟ ପାଆନ୍ତୁ</translation>
 <translation id="8855781559874488009">ଫାୟାରୱାଲ ମାଧ୍ୟମରେ HTTP ୱେବସାଇଟଗୁଡ଼ିକ ସହ ସଂଯୋଗ କରାଯାଇପାରିବ ନାହିଁ</translation>
+<translation id="885701979325669005">ଷ୍ଟୋରେଜ୍</translation>
 <translation id="8863170912498892583">ଗାଢ଼ା ଥିମ୍ ସକ୍ଷମ କରନ୍ତୁ</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" ଏବଂ ଆହୁରି ଅନେକ କିଛି ପାଇଁ <ph name="INTENT" /> ପାଆନ୍ତୁ</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_pa.xtb b/chromeos/strings/chromeos_strings_pa.xtb
index 83f384e..5f401c6 100644
--- a/chromeos/strings/chromeos_strings_pa.xtb
+++ b/chromeos/strings/chromeos_strings_pa.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">ਵਾਲਪੇਪਰ ਵਜੋਂ ਸੈੱਟ ਕਰੋ</translation>
 <translation id="1578784163189013834">ਸਕ੍ਰੀਨ ਸੇਵਰ ਬੈਕਗ੍ਰਾਊਂਡ ਚੁਣੋ</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> ਤੋਂ ਡਾਟਾ ਵਰਤੋਂ</translation>
+<translation id="1620510694547887537">ਕੈਮਰਾ</translation>
 <translation id="1621067168122174824">ਚਾਰਜ ਟੈਸਟ ਚਲਾਓ</translation>
 <translation id="1631385268983122904">ਹਾਲੇ ਡੀਵਾਈਸ ਦੁਬਾਰਾ ਇਕੱਠੇ ਨਾ ਕਰੋ</translation>
 <translation id="1639239467298939599">ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422"><ph name="FIRST_MANAGER" /> ਅਤੇ <ph name="SECOND_MANAGER" /> ਵੱਲੋਂ ਪ੍ਰਬੰਧਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ</translation>
 <translation id="1726100011689679555">ਨਾਮ ਸਰਵਰ</translation>
 <translation id="1731082422893354635">ਬਲੂਟੁੱਥ ਟੱਚਪੈਡ</translation>
+<translation id="1745577949879301685">ਚਿੱਤਰ ਲੋਡ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕੇ। ਆਪਣੇ ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰੋ ਜਾਂ ਚਿੱਤਰਾਂ ਨੂੰ ਦੁਬਾਰਾ ਲੋਡ ਕਰ ਕੇ ਦੇਖੋ।</translation>
 <translation id="1751249301761991853">ਨਿੱਜੀ</translation>
 <translation id="1753496554272155572">ਵਾਲਪੇਪਰ ਦੀ ਪੂਰਵ-ਝਲਕ ਤੋਂ ਬਾਹਰ ਜਾਓ</translation>
 <translation id="175763766237925754">ਵਧੀਆ (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">ਅੱਪਡੇਟ ਨਾਲ ਜਾਰੀ ਰੱਖਣ ਲਈ, 'ਅੱਗੇ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">ਸੁਰੱਖਿਆ</translation>
+<translation id="3441653493275994384">ਸਕ੍ਰੀਨ</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> ਵਿੱਚੋਂ ਪੰਨਾ <ph name="PRINTED_PAGES" /> ਨੂੰ ਪ੍ਰਿੰਟ ਕੀਤਾ ਗਿਆ।</translation>
 <translation id="345898999683440380">ਪੰਨਾ <ph name="PAGE_NUM" /> ਸਕੈਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ। <ph name="PERCENTAGE_VALUE" />% ਮੁਕੰਮਲ।</translation>
 <translation id="3459509316159669723">ਪ੍ਰਿੰਟ ਕਰਨਾ</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">ਵਾਲਪੇਪਰ ਬਦਲੋ</translation>
 <translation id="360565022852130722">ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਕਮਜ਼ੋਰ ਪ੍ਰੋਟੋਕੋਲ WEP 802.1x ਨਾਲ ਸੁਰੱਖਿਅਤ ਹੈ</translation>
 <translation id="3606583719724308068">HTTPS ਵੈੱਬਸਾਈਟਾਂ ਲਈ ਉੱਚ ਵਿਲੰਬਤਾ</translation>
+<translation id="3616113530831147358">ਆਡੀਓ</translation>
 <translation id="3621202678540785336">ਇਨਪੁਟ</translation>
 <translation id="3632579075709132555">ਪਰਦੇਦਾਰੀ ਸਕ੍ਰੀਨ ਨੂੰ ਟੌਗਲ ਕਰਨ ਵਾਲੀ ਕੁੰਜੀ</translation>
 <translation id="3643810137582748570">ਕੈਲੀਬਰੇਸ਼ਨ ਨੂੰ ਛੱਡੋ</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA ਸਰਵਰ ਅਣਲਾਕ ਕਰੋ</translation>
 <translation id="4145784616224233563">HTTP ਫ਼ਾਇਰਵਾਲ</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">ਡਿਸਪਲੇ</translation>
 <translation id="4155551848414053977">ਪੱਕਾ ਕਰੋ ਕਿ ਸਕੈਨਰ ਚਾਲੂ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਨੈੱਟਵਰਕ ਜਾਂ ਕਿਸੇ ਸਿੱਧੇ ਕਨੈਕਸ਼ਨ ਰਾਹੀਂ ਉਪਲਬਧ ਹੈ</translation>
 <translation id="4159784952369912983">ਜਾਮਨੀ</translation>
 <translation id="4170180284036919717">ਇੱਕ ਫ਼ੋਟੋ ਖਿੱਚੋ</translation>
@@ -744,6 +749,7 @@
 <translation id="7960831585769876809">ਤਾਪਮਾਨ</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ, ਸੈਟਿੰਗਾਂ 'ਤੇ ਜਾਓ</translation>
 <translation id="7978412674231730200">ਨਿੱਜੀ ਕੁੰਜੀ</translation>
+<translation id="7982789257301363584">ਨੈੱਟਵਰਕ</translation>
 <translation id="7994702968232966508">EAP ਵਿਧੀ</translation>
 <translation id="802154636333426148">ਡਾਊਨਲੋਡ ਅਸਫਲ ਰਿਹਾ</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -838,6 +844,7 @@
 <translation id="8834539327799336565">ਇਸ ਵੇਲੇ ਕਨੈਕਟ ਹੈ</translation>
 <translation id="8845001906332463065">ਮਦਦ ਪ੍ਰਾਪਤ ਕਰੋ</translation>
 <translation id="8855781559874488009">ਫ਼ਾਇਰਵਾਲ ਰਾਹੀਂ HTTP ਵੈੱਬਸਾਈਟਾਂ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation>
+<translation id="885701979325669005">ਸਟੋਰੇਜ</translation>
 <translation id="8863170912498892583">ਗੂੜ੍ਹਾ ਥੀਮ ਚਾਲੂ ਕਰੋ</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" ਅਤੇ ਹੋਰ ਲਈ <ph name="INTENT" /> ਪ੍ਰਾਪਤ ਕਰੋ</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_pl.xtb b/chromeos/strings/chromeos_strings_pl.xtb
index d55e8a60..66ba5a0 100644
--- a/chromeos/strings/chromeos_strings_pl.xtb
+++ b/chromeos/strings/chromeos_strings_pl.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Ustaw jako tapetę</translation>
 <translation id="1578784163189013834">Wybierz tło wygaszacza ekranu</translation>
 <translation id="1615335640928990664">Użycie danych od <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Przeprowadź test ładowania</translation>
 <translation id="1631385268983122904">Jeszcze nie składaj urządzenia z powrotem</translation>
 <translation id="1639239467298939599">Wczytuję</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">Aby rozpocząć aktualizację, kliknij Dalej.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Bezpieczeństwo</translation>
+<translation id="3441653493275994384">Ekran</translation>
 <translation id="3456078764689556234">Wydrukowano stronę <ph name="PRINTED_PAGES" /> z <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Skanuję stronę <ph name="PAGE_NUM" />. Ukończono <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Drukowanie</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">Zmień tapetę</translation>
 <translation id="360565022852130722">Sieć Wi-Fi jest zabezpieczona słabym protokołem WEP 802.1x</translation>
 <translation id="3606583719724308068">Duże opóźnienie połączeń z witrynami HTTPS</translation>
+<translation id="3616113530831147358">Dźwięk</translation>
 <translation id="3621202678540785336">Urządzenie wejściowe</translation>
 <translation id="3632579075709132555">Przełącznik filtra prywatności</translation>
 <translation id="3643810137582748570">Pomiń kalibrację</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">Przeprowadź odblokowanie serwera RMA</translation>
 <translation id="4145784616224233563">Zapora sieciowa HTTP</translation>
 <translation id="4147897805161313378">Zdjęcia Google</translation>
+<translation id="4150201353443180367">Wyświetlacz</translation>
 <translation id="4155551848414053977">Upewnij się, że skaner jest włączony i dostępny przez sieć lub połączenie bezpośrednie</translation>
 <translation id="4159784952369912983">Purpurowy</translation>
 <translation id="4170180284036919717">Zrób zdjęcie</translation>
@@ -746,6 +750,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Aby połączyć się z siecią <ph name="NETWORK_NAME" />, otwórz Ustawienia</translation>
 <translation id="7978412674231730200">Klucz prywatny</translation>
+<translation id="7982789257301363584">Sieć</translation>
 <translation id="7994702968232966508">Metoda EAP</translation>
 <translation id="802154636333426148">Nie udało się pobrać</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -840,6 +845,7 @@
 <translation id="8834539327799336565">Obecnie połączone</translation>
 <translation id="8845001906332463065">Uzyskaj pomoc</translation>
 <translation id="8855781559874488009">Nie udało się połączyć z witrynami HTTP przez zaporę sieciową</translation>
+<translation id="885701979325669005">Pamięć</translation>
 <translation id="8863170912498892583">Włącz ciemny motyw</translation>
 <translation id="8863888432376731307">Pobierz <ph name="INTENT" />, aby znajdować odpowiedzi na pytania takie jak „<ph name="QUERY" />” i inne</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-BR.xtb b/chromeos/strings/chromeos_strings_pt-BR.xtb
index 76c44ad4..5ae36fe 100644
--- a/chromeos/strings/chromeos_strings_pt-BR.xtb
+++ b/chromeos/strings/chromeos_strings_pt-BR.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Definir como plano de fundo</translation>
 <translation id="1578784163189013834">Escolher o plano de fundo do protetor de tela</translation>
 <translation id="1615335640928990664">Uso de dados desde <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Câmera</translation>
 <translation id="1621067168122174824">Executar teste de carregamento</translation>
 <translation id="1631385268983122904">Não monte o dispositivo novamente por enquanto</translation>
 <translation id="1639239467298939599">Carregando</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">Gerenciado por <ph name="FIRST_MANAGER" /> e <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">Servidores de nomes</translation>
 <translation id="1731082422893354635">Touchpad Bluetooth</translation>
+<translation id="1745577949879301685">Não foi possível carregar as imagens. Verifique sua conexão de rede ou tente carregar novamente.</translation>
 <translation id="1751249301761991853">Pessoal</translation>
 <translation id="1753496554272155572">Sair da visualização do plano de fundo</translation>
 <translation id="175763766237925754">Bom (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">Para continuar com a atualização, clique em "Próxima".</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Segurança</translation>
+<translation id="3441653493275994384">Tela</translation>
 <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> página impressa de <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Digitalizando página <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% concluído.</translation>
 <translation id="3459509316159669723">Imprimir</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">Mudar plano de fundo</translation>
 <translation id="360565022852130722">A rede Wi-Fi é protegida pelo protocolo fraco WEP 802.1x</translation>
 <translation id="3606583719724308068">Alta latência em sites HTTPS</translation>
+<translation id="3616113530831147358">Áudio</translation>
 <translation id="3621202678540785336">Entrada</translation>
 <translation id="3632579075709132555">Alternar Tela de privacidade</translation>
 <translation id="3643810137582748570">Pular calibragem</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">Use o desbloqueio por servidor RMA</translation>
 <translation id="4145784616224233563">Firewall HTTP</translation>
 <translation id="4147897805161313378">Google Fotos</translation>
+<translation id="4150201353443180367">Exibição</translation>
 <translation id="4155551848414053977">Confira se o scanner está ligado e disponível pela rede ou por uma conexão direta</translation>
 <translation id="4159784952369912983">Roxo</translation>
 <translation id="4170180284036919717">Tirar uma foto</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Para se conectar a uma rede <ph name="NETWORK_NAME" />, acesse as Configurações</translation>
 <translation id="7978412674231730200">Chave privada</translation>
+<translation id="7982789257301363584">Rede</translation>
 <translation id="7994702968232966508">Método EAP</translation>
 <translation id="802154636333426148">Falha no download</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">Conectados no momento</translation>
 <translation id="8845001906332463065">Ajuda</translation>
 <translation id="8855781559874488009">O firewall impediu a conexão a sites HTTP</translation>
+<translation id="885701979325669005">Armazenamento</translation>
 <translation id="8863170912498892583">Ativar o tema escuro</translation>
 <translation id="8863888432376731307">Veja a <ph name="INTENT" /> de "<ph name="QUERY" />" e muito mais</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-PT.xtb b/chromeos/strings/chromeos_strings_pt-PT.xtb
index afadc9ea..3aa3563 100644
--- a/chromeos/strings/chromeos_strings_pt-PT.xtb
+++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Definir como imagem de fundo</translation>
 <translation id="1578784163189013834">Escolher fundo da proteção de ecrã</translation>
 <translation id="1615335640928990664">Utilização de dados desde <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Câmara</translation>
 <translation id="1621067168122174824">Executar teste de carregamento</translation>
 <translation id="1631385268983122904">Não monte já o dispositivo</translation>
 <translation id="1639239467298939599">A carregar</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">Para prosseguir com a atualização, clique em Seguinte.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Segurança</translation>
+<translation id="3441653493275994384">Ecrã</translation>
 <translation id="3456078764689556234">Página <ph name="PRINTED_PAGES" /> impressa de <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">A digitalizar a página <ph name="PAGE_NUM" />… <ph name="PERCENTAGE_VALUE" />% concluído.</translation>
 <translation id="3459509316159669723">Impressão</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">Alterar imagem de fundo</translation>
 <translation id="360565022852130722">A rede WiFi está protegida com um protocolo pouco seguro WEP 802.1x.</translation>
 <translation id="3606583719724308068">Latência elevada para Websites HTTPS</translation>
+<translation id="3616113530831147358">Áudio</translation>
 <translation id="3621202678540785336">Entrada</translation>
 <translation id="3632579075709132555">Botão do ecrã de privacidade</translation>
 <translation id="3643810137582748570">Ignorar calibração</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">Execute o desbloqueio do servidor RMA</translation>
 <translation id="4145784616224233563">Firewall HTTP</translation>
 <translation id="4147897805161313378">Google Fotos</translation>
+<translation id="4150201353443180367">Visualização</translation>
 <translation id="4155551848414053977">Certifique-se de que o lscannerestá ativado e disponível através da sua rede ou de uma ligação direta.</translation>
 <translation id="4159784952369912983">Roxo</translation>
 <translation id="4170180284036919717">Tirar uma foto</translation>
@@ -426,6 +430,7 @@
 <translation id="4915052247106771211">Esta ação repõe as definições de fábrica do dispositivo (Powerwash).</translation>
 <translation id="4917385247580444890">Forte</translation>
 <translation id="4917889632206600977">Parada – Sem papel</translation>
+<translation id="491791267030419270">Sugestões para escrever feedback</translation>
 <translation id="4921665434385737356">Carregou <ph name="RATE" /> em <ph name="NUM_SECONDS" /> segundos.</translation>
 <translation id="4930320165497208503">Para configurar ou atualizar uma ligação, aceda a <ph name="BEGIN_LINK" />Definições<ph name="END_LINK" />.</translation>
 <translation id="4932733599132424254">Data</translation>
@@ -746,6 +751,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Para estabelecer ligação a uma rede <ph name="NETWORK_NAME" />, aceda às Definições</translation>
 <translation id="7978412674231730200">Chave privada</translation>
+<translation id="7982789257301363584">Rede</translation>
 <translation id="7994702968232966508">Método EAP</translation>
 <translation id="802154636333426148">Falha ao transferir</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -840,6 +846,7 @@
 <translation id="8834539327799336565">Atualmente ligados</translation>
 <translation id="8845001906332463065">Obter ajuda</translation>
 <translation id="8855781559874488009">Não é possível estabelecer ligação através da firewall a Websites HTTP</translation>
+<translation id="885701979325669005">Armazenamento</translation>
 <translation id="8863170912498892583">Ativar tema escuro</translation>
 <translation id="8863888432376731307">Obtenha a intenção <ph name="INTENT" /> para a consulta "<ph name="QUERY" />" e muito mais</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_ro.xtb b/chromeos/strings/chromeos_strings_ro.xtb
index 3f6e9a0..9e38b86 100644
--- a/chromeos/strings/chromeos_strings_ro.xtb
+++ b/chromeos/strings/chromeos_strings_ro.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Setează ca imagine de fundal</translation>
 <translation id="1578784163189013834">Alege fundalul screensaverului</translation>
 <translation id="1615335640928990664">Utilizarea datelor începând de <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Cameră</translation>
 <translation id="1621067168122174824">Rulează testul Încărcare</translation>
 <translation id="1631385268983122904">Încă nu reasambla dispozitivul</translation>
 <translation id="1639239467298939599">Se încarcă</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">Ca să continui cu actualizarea, dă clic pe Înainte.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Securitate</translation>
+<translation id="3441653493275994384">Ecran</translation>
 <translation id="3456078764689556234">S-a printat pagina <ph name="PRINTED_PAGES" /> din <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Se scanează pagina <ph name="PAGE_NUM" />. Progres: <ph name="PERCENTAGE_VALUE" /> %.</translation>
 <translation id="3459509316159669723">Printare</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">Schimbă imaginea de fundal</translation>
 <translation id="360565022852130722">Rețeaua Wi-Fi este securizată cu protocolul slab WEP 802.1x</translation>
 <translation id="3606583719724308068">Latență mare pe site-urile HTTPS</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Intrări</translation>
 <translation id="3632579075709132555">Activarea / dezactivarea ecranului de confidențialitate</translation>
 <translation id="3643810137582748570">Omite calibrarea</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">Deblocați serverul RMA</translation>
 <translation id="4145784616224233563">Firewall HTTP</translation>
 <translation id="4147897805161313378">Google Foto</translation>
+<translation id="4150201353443180367">Ecran</translation>
 <translation id="4155551848414053977">Scanerul trebuie să fie pornit și disponibil prin rețea sau prin conexiune directă</translation>
 <translation id="4159784952369912983">Mov</translation>
 <translation id="4170180284036919717">Fotografiază</translation>
@@ -746,6 +750,7 @@
 <translation id="7960831585769876809">Temperatură</translation>
 <translation id="7977800524392185497">Pentru a te conecta la o rețea <ph name="NETWORK_NAME" />, accesează Setările</translation>
 <translation id="7978412674231730200">Cheie privată</translation>
+<translation id="7982789257301363584">Rețea</translation>
 <translation id="7994702968232966508">Metodă EAP</translation>
 <translation id="802154636333426148">Descărcarea nu a reușit</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -840,6 +845,7 @@
 <translation id="8834539327799336565">Conectat</translation>
 <translation id="8845001906332463065">Obține ajutor</translation>
 <translation id="8855781559874488009">Nu se poate conecta la site-uri HTTP prin firewall</translation>
+<translation id="885701979325669005">Stocare</translation>
 <translation id="8863170912498892583">Activează tema întunecată</translation>
 <translation id="8863888432376731307">Vezi <ph name="INTENT" /> pentru <ph name="QUERY" /> și altele</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_ru.xtb b/chromeos/strings/chromeos_strings_ru.xtb
index db776c9..c7c3682 100644
--- a/chromeos/strings/chromeos_strings_ru.xtb
+++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Установить как обои</translation>
 <translation id="1578784163189013834">Выбрать фон заставки</translation>
 <translation id="1615335640928990664">Передача данных с <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Камера</translation>
 <translation id="1621067168122174824">Запустить проверку зарядки</translation>
 <translation id="1631385268983122904">Пока не собирайте устройство</translation>
 <translation id="1639239467298939599">Загрузка</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Чтобы выполнить обновление, нажмите "Далее".</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Безопасность</translation>
+<translation id="3441653493275994384">Экран</translation>
 <translation id="3456078764689556234">Напечатано страниц: <ph name="PRINTED_PAGES" /> из <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Сканирование страницы <ph name="PAGE_NUM" />. Выполнено <ph name="PERCENTAGE_VALUE" /> %.</translation>
 <translation id="3459509316159669723">Печать</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Изменить обои</translation>
 <translation id="360565022852130722">Безопасность сети Wi-Fi обеспечивается недостаточно надежным протоколом WEP 802.1x.</translation>
 <translation id="3606583719724308068">Длительная задержка у HTTPS-сайтов.</translation>
+<translation id="3616113530831147358">Аудио</translation>
 <translation id="3621202678540785336">Вход</translation>
 <translation id="3632579075709132555">Включение экрана конфиденциальности</translation>
 <translation id="3643810137582748570">Пропустить калибровку</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Разблокируйте сервер RMA</translation>
 <translation id="4145784616224233563">Брандмауэр HTTP</translation>
 <translation id="4147897805161313378">Google Фото</translation>
+<translation id="4150201353443180367">Экран</translation>
 <translation id="4155551848414053977">Убедитесь, что сканер работает и доступен для подключения напрямую или по сети.</translation>
 <translation id="4159784952369912983">Фиолетовый</translation>
 <translation id="4170180284036919717">Сделать снимок</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Температура</translation>
 <translation id="7977800524392185497">Чтобы подключиться к сети <ph name="NETWORK_NAME" />, перейдите в настройки.</translation>
 <translation id="7978412674231730200">Закрытый ключ</translation>
+<translation id="7982789257301363584">Сеть</translation>
 <translation id="7994702968232966508">Метод EAP</translation>
 <translation id="802154636333426148">Ошибка скачивания</translation>
 <translation id="8031884997696620457">HSPA+</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Текущие подключения</translation>
 <translation id="8845001906332463065">Справка</translation>
 <translation id="8855781559874488009">Не удается подключиться к HTTP-сайтам через брандмауэр.</translation>
+<translation id="885701979325669005">Хранилище</translation>
 <translation id="8863170912498892583">Использовать тёмную тему</translation>
 <translation id="8863888432376731307">Как <ph name="INTENT" /> "<ph name="QUERY" />" и не только</translation>
 <translation id="8868741746785112895">Глобальный уникальный идентификатор</translation>
diff --git a/chromeos/strings/chromeos_strings_si.xtb b/chromeos/strings/chromeos_strings_si.xtb
index ce4e99b..547a693 100644
--- a/chromeos/strings/chromeos_strings_si.xtb
+++ b/chromeos/strings/chromeos_strings_si.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">බිතුපත ලෙස සකසන්න</translation>
 <translation id="1578784163189013834">තිර සුරැකුම් පසුබිම තෝරන්න</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> සිට දත්ත භාවිතය</translation>
+<translation id="1620510694547887537">කැමරාව</translation>
 <translation id="1621067168122174824">ආරෝපණ පරීක්ෂණය ධාවනය කරන්න</translation>
 <translation id="1631385268983122904">උපාංගය දැන්ම එකට එකතු නොකරන්න</translation>
 <translation id="1639239467298939599">පැටවෙමින්</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">යාවත්කාලීනය සමග ඉදිරියට යාමට, ඊළඟ ක්ලික් කරන්න.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">ආරක්ෂක</translation>
+<translation id="3441653493275994384">තිරය</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> න් මුද්‍රණය කළ පිටුව <ph name="PRINTED_PAGES" /></translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" /> පිටුව ස්කෑන් කරමින්. <ph name="PERCENTAGE_VALUE" />% සම්පූර්ණයි.</translation>
 <translation id="3459509316159669723">මුද්‍රණය කරමින්</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">බිතුපත මාරු කරන්න</translation>
 <translation id="360565022852130722">WiFi ජාලය දුර්වල ප්‍රොටොකෝලයකින් ආරක්ෂිතයි WEP 802.1x</translation>
 <translation id="3606583719724308068">HTTPS වෙබ් අඩවිවලට ඉහළ පමාව</translation>
+<translation id="3616113530831147358">ශබ්ද</translation>
 <translation id="3621202678540785336">ආදානය</translation>
 <translation id="3632579075709132555">පෞද්ගලිකත්ව තිරය ටොගල කිරීම</translation>
 <translation id="3643810137582748570">ක්‍රමාංකනය මඟ හරින්න</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">RMA සේවාදායක අගුලු හැරීම සිදු කරන්න</translation>
 <translation id="4145784616224233563">HTTP ෆයර්වෝලය</translation>
 <translation id="4147897805161313378">Google ඡායාරූප</translation>
+<translation id="4150201353443180367">සංදර්ශකය</translation>
 <translation id="4155551848414053977">ස්කෑනරය ක්‍රියාත්මක කර ඇති බව සහ ඔබගේ ජාලය හරහා හෝ සෘජු සබැඳුමක් හරහා ලබා ගත හැකි බව සහතික කර ගන්න</translation>
 <translation id="4159784952369912983">දම්</translation>
 <translation id="4170180284036919717">ඡායාරූපයක් ගන්න</translation>
@@ -746,6 +750,7 @@
 <translation id="7960831585769876809">උෂ්ණත්වය</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> ජාලයකට එක් වීමට, සැකසීම් වෙත යන්න</translation>
 <translation id="7978412674231730200">පුද්ගලික යතුර</translation>
+<translation id="7982789257301363584">ජාලය</translation>
 <translation id="7994702968232966508">EAP ආකාරය</translation>
 <translation id="802154636333426148">බාගැනීම අසමත් විය</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -840,6 +845,7 @@
 <translation id="8834539327799336565">දැනට සම්බන්ධ වී ඇත</translation>
 <translation id="8845001906332463065">උදවු ලබා ගන්න</translation>
 <translation id="8855781559874488009">HTTP වෙබ් අඩවිවලට ෆයර්වෝලය හරහා සම්බන්ධ විය නොහැකිය</translation>
+<translation id="885701979325669005">ගබඩාව</translation>
 <translation id="8863170912498892583">අඳුරු තේමාව සබල කරන්න</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" සඳහා <ph name="INTENT" /> ලබා ගන්න සහ තවත් දේ</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_sk.xtb b/chromeos/strings/chromeos_strings_sk.xtb
index f00139c4..4931e33 100644
--- a/chromeos/strings/chromeos_strings_sk.xtb
+++ b/chromeos/strings/chromeos_strings_sk.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Nastaviť ako tapetu</translation>
 <translation id="1578784163189013834">Vybrať pozadie šetriča obrazovky</translation>
 <translation id="1615335640928990664">Spotreba dát od <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Spustiť test nabitia</translation>
 <translation id="1631385268983122904">Zariadenie zatiaľ znova neskladajte</translation>
 <translation id="1639239467298939599">Prebieha načítavanie</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Ak chcete pokračovať v aktualizácii, kliknite na Ďalej.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="3435738964857648380">Bezpečnosť</translation>
+<translation id="3441653493275994384">Obrazovka</translation>
 <translation id="3456078764689556234">Bola vytlačená <ph name="PRINTED_PAGES" />. strana z <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Skenuje sa <ph name="PAGE_NUM" />. strana. Dokončené: <ph name="PERCENTAGE_VALUE" /> %.</translation>
 <translation id="3459509316159669723">Tlač</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Zmeniť tapetu</translation>
 <translation id="360565022852130722">Sieť Wi‑Fi je zabezpečená slabým protokolom WEP 802.1x</translation>
 <translation id="3606583719724308068">Vysoká latencia na weboch HTTPS</translation>
+<translation id="3616113530831147358">Zvuk</translation>
 <translation id="3621202678540785336">Vstup</translation>
 <translation id="3632579075709132555">Prepínanie zámky na ochranu súkromia</translation>
 <translation id="3643810137582748570">Preskočiť kalibráciu</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Odblokujte server povolení na vrátenie tovaru</translation>
 <translation id="4145784616224233563">Firewall HTTP</translation>
 <translation id="4147897805161313378">Fotky Google</translation>
+<translation id="4150201353443180367">Displej</translation>
 <translation id="4155551848414053977">Skontrolujte, či je skener zapnutý a dostupný prostredníctvom vašej siete alebo priameho pripojenia</translation>
 <translation id="4159784952369912983">Purpurová</translation>
 <translation id="4170180284036919717">Nasnímať fotku</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Teplota</translation>
 <translation id="7977800524392185497">Ak sa chcete pripojiť k sieti <ph name="NETWORK_NAME" />, prejdite do Nastavení</translation>
 <translation id="7978412674231730200">Súkromný kľúč</translation>
+<translation id="7982789257301363584">Sieť</translation>
 <translation id="7994702968232966508">Metóda EAP</translation>
 <translation id="802154636333426148">Stiahnutie zlyhalo</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Aktuálne pripojené</translation>
 <translation id="8845001906332463065">Získať pomoc</translation>
 <translation id="8855781559874488009">Prostredníctvom brány firewall sa nedá pripojiť k webom HTTP</translation>
+<translation id="885701979325669005">Úložisko</translation>
 <translation id="8863170912498892583">Zapnúť tmavý motív</translation>
 <translation id="8863888432376731307">Získajte <ph name="INTENT" /> pre dopyt <ph name="QUERY" /> a ešte viac</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb
index a25e8f3..048892f 100644
--- a/chromeos/strings/chromeos_strings_sl.xtb
+++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Nastavi kot ozadje</translation>
 <translation id="1578784163189013834">Izbira ozadja ohranjevalnika zaslona</translation>
 <translation id="1615335640928990664">Prenesena količina podatkov od tega dne: <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Zaženi preizkus napolnjenosti</translation>
 <translation id="1631385268983122904">Naprave še ne sestavite.</translation>
 <translation id="1639239467298939599">Nalaganje</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Če želite nadaljevati posodobitev, kliknite Naprej.</translation>
 <translation id="3434107140712555581">Akumulator: <ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="3435738964857648380">Varnost</translation>
+<translation id="3441653493275994384">Zaslon</translation>
 <translation id="3456078764689556234">Natisnjena <ph name="PRINTED_PAGES" />. stran od <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Optično branje <ph name="PAGE_NUM" />. strani. Dokončano: <ph name="PERCENTAGE_VALUE" /> %.</translation>
 <translation id="3459509316159669723">Tiskanje</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Sprememba ozadja</translation>
 <translation id="360565022852130722">Omrežje Wi-Fi je zavarovano s šibkim protokolom WEP 802.1x</translation>
 <translation id="3606583719724308068">Visoka zakasnitev do spletnih mest HTTPS.</translation>
+<translation id="3616113530831147358">Zvok</translation>
 <translation id="3621202678540785336">Vhod</translation>
 <translation id="3632579075709132555">Preklop zaslona za zasebnost</translation>
 <translation id="3643810137582748570">Preskoči umerjanje</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Odklepanje strežnika RMA</translation>
 <translation id="4145784616224233563">Požarni zid HTTP</translation>
 <translation id="4147897805161313378">Google Foto</translation>
+<translation id="4150201353443180367">Prikaz</translation>
 <translation id="4155551848414053977">Optični bralnik mora biti vklopljen in na voljo prek omrežja ali neposredne povezave.</translation>
 <translation id="4159784952369912983">Vijolična</translation>
 <translation id="4170180284036919717">Fotografiraj</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Če se želite pridružiti omrežju <ph name="NETWORK_NAME" />, odprite nastavitve.</translation>
 <translation id="7978412674231730200">Zasebni ključ</translation>
+<translation id="7982789257301363584">Omrežje</translation>
 <translation id="7994702968232966508">Način EAP</translation>
 <translation id="802154636333426148">Prenos ni uspel</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Trenutno povezano</translation>
 <translation id="8845001906332463065">Poiščite pomoč</translation>
 <translation id="8855781559874488009">Ni mogoče vzpostaviti povezave s spletnimi mesti HTTP prek požarnega zidu.</translation>
+<translation id="885701979325669005">Shramba</translation>
 <translation id="8863170912498892583">Omogočanje temne teme</translation>
 <translation id="8863888432376731307"><ph name="INTENT" /> za poizvedbo »<ph name="QUERY" />« in drugo</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_sq.xtb b/chromeos/strings/chromeos_strings_sq.xtb
index 59d0365..38475fd 100644
--- a/chromeos/strings/chromeos_strings_sq.xtb
+++ b/chromeos/strings/chromeos_strings_sq.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">Nisësi</translation>
 <translation id="1512982610995527443">Pajisja do të fiket pas 5 sekondash</translation>
 <translation id="1522984060396982789">Riparimi u krye me sukses. Mund ta fikësh pajisjen ose mund të kryesh disa veprime të tjera.</translation>
+<translation id="1526389707933164996">Animacioni i mbrojtësit të ekranit</translation>
 <translation id="152892567002884378">Rrit volumin</translation>
 <translation id="1555130319947370107">E kaltër</translation>
 <translation id="155865706765934889">Blloku me prekje</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">Vendose si imazh sfondi</translation>
 <translation id="1578784163189013834">Zgjidh imazhin e sfondit të mbrojtësit të ekranit</translation>
 <translation id="1615335640928990664">Përdorimi i të dhënave që prej ditës: <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Ekzekuto testin e karikimit</translation>
 <translation id="1631385268983122904">Mos e vendos ende baterinë në pajisje.</translation>
 <translation id="1639239467298939599">Po ngarkohet...</translation>
@@ -257,6 +259,7 @@
 <translation id="3413935475507503304">Kliko "Para" për të vazhduar me përditësimin.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Siguria</translation>
+<translation id="3441653493275994384">Ekrani</translation>
 <translation id="3456078764689556234">U printua faqja <ph name="PRINTED_PAGES" /> nga <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Po skanon faqen <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% e përfunduar.</translation>
 <translation id="3459509316159669723">Po printon</translation>
@@ -279,6 +282,7 @@
 <translation id="3604713164406837697">Ndrysho imazhin e sfondit</translation>
 <translation id="360565022852130722">Rrjeti Wi-Fi është i siguruar me protokollin e dobët WEP 802.1x</translation>
 <translation id="3606583719724308068">Vonesë e lartë në sajtet e uebit HTTPS</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Hyrje</translation>
 <translation id="3632579075709132555">Aktivizimi/çaktivizimi i ekranit të privatësisë</translation>
 <translation id="3643810137582748570">Kapërce kalibrimin</translation>
@@ -300,6 +304,7 @@
 <translation id="3858860766373142691">Emri</translation>
 <translation id="3865414814144988605">Rezolucioni</translation>
 <translation id="387301095347517405">Numri i herëve që bateria ka kryer një cikël të plotë karikimi</translation>
+<translation id="3885327323343477505">Ndrysho mbrojtësin e ekranit</translation>
 <translation id="3923184630988645767">Përdorimi i të dhënave</translation>
 <translation id="3924044641767672375">Rekomandohet lidhja me Wi-Fi për ta bërë më të lehtë procesin e riparimit. Rrjeti yt do të ruhet.</translation>
 <translation id="3932043219784172185">Nuk është lidhur asnjë pajisje</translation>
@@ -327,6 +332,7 @@
 <translation id="4140251671072434548">Kryej RMA Server Unlock</translation>
 <translation id="4145784616224233563">Mur mbrojtës HTTP</translation>
 <translation id="4147897805161313378">Fotografitë e Google</translation>
+<translation id="4150201353443180367">Ekrani</translation>
 <translation id="4155551848414053977">Sigurohu që skaneri të jetë i ndezur dhe i disponueshëm përmes rrjetit tënd ose një lidhjeje të drejtpërdrejtë</translation>
 <translation id="4159784952369912983">Vjollcë</translation>
 <translation id="4170180284036919717">Bëj një fotografi</translation>
@@ -418,6 +424,7 @@
 <translation id="4890353053343094602">Zgjidh një të re menjëherë</translation>
 <translation id="4891842000192098784">Tensioni</translation>
 <translation id="4897058166682006107">Pajisja ka <ph name="BATTERY_PERCENTAGE" />% bateri në kufjen e majtë.</translation>
+<translation id="4905998861748258752">Aktivizo veçorinë për të zgjedhur opsionet e mbrojtësit të ekranit</translation>
 <translation id="4908030561598728899">Firmueri po instalohet...</translation>
 <translation id="4915052247106771211">Kjo do ta rivendosë pajisjen te cilësimet e fabrikës (Powerwash).</translation>
 <translation id="4917385247580444890">I fortë</translation>
@@ -741,6 +748,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Për t'iu bashkuar një rrjeti <ph name="NETWORK_NAME" />, shko te "Cilësimet"</translation>
 <translation id="7978412674231730200">Çelës privat</translation>
+<translation id="7982789257301363584">Rrjeti</translation>
 <translation id="7994702968232966508">Metoda EAP</translation>
 <translation id="802154636333426148">Shkarkimi dështoi</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -835,6 +843,7 @@
 <translation id="8834539327799336565">Të lidhur aktualisht</translation>
 <translation id="8845001906332463065">Kërko ndihmë</translation>
 <translation id="8855781559874488009">Nuk mund të lidhesh me sajtet e uebit HTTP nëpërmjet murit mbrojtës</translation>
+<translation id="885701979325669005">Hapësira ruajtëse</translation>
 <translation id="8863170912498892583">Aktivizo temën e errët</translation>
 <translation id="8863888432376731307">Merr <ph name="INTENT" /> për "<ph name="QUERY" />" dhe më shumë</translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -860,6 +869,7 @@
 <translation id="8997710128084572139">Pajisja ka <ph name="BATTERY_PERCENTAGE" />% bateri.</translation>
 <translation id="9003704114456258138">Frekuenca</translation>
 <translation id="9025198690966128418">Përdore si pajisje personale</translation>
+<translation id="9028832514430399253">Aktivizo çelësin e aktivizimit/çaktivizimit për të zgjedhur opsionet e mbrojtësit të ekranit</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">Rezolucioni i DNS-së ka vonesë të lartë</translation>
 <translation id="9063121522582193837">Disa komponentë nuk mund të kalibroheshin</translation>
diff --git a/chromeos/strings/chromeos_strings_sr-Latn.xtb b/chromeos/strings/chromeos_strings_sr-Latn.xtb
index 66b960de..ac78d69 100644
--- a/chromeos/strings/chromeos_strings_sr-Latn.xtb
+++ b/chromeos/strings/chromeos_strings_sr-Latn.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Postavi kao pozadinu</translation>
 <translation id="1578784163189013834">Odaberite pozadinu čuvara ekrana</translation>
 <translation id="1615335640928990664">Potrošnja podataka od <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Pokreni test punjenja</translation>
 <translation id="1631385268983122904">Još ne sastavljajte uređaj</translation>
 <translation id="1639239467298939599">Učitavanje</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Da biste nastavili sa ažuriranjem, kliknite na Dalje.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Bezbednost</translation>
+<translation id="3441653493275994384">Ekran</translation>
 <translation id="3456078764689556234">Odštampanih stranica: <ph name="PRINTED_PAGES" /> od <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Skenira se <ph name="PAGE_NUM" />. stranica. Dovršeno je <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Štampanje</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Promenite pozadinu</translation>
 <translation id="360565022852130722">WiFi mreža je obezbeđena slabim protokolom WEP 802.1x</translation>
 <translation id="3606583719724308068">Veliko kašnjenje do HTTPS veb-sajtova</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Ulaz</translation>
 <translation id="3632579075709132555">Uključite/isključite ekran za privatnost</translation>
 <translation id="3643810137582748570">Preskoči kalibraciju</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Obavite otključavanje RMA servera</translation>
 <translation id="4145784616224233563">HTTP zaštitni zid</translation>
 <translation id="4147897805161313378">Google slike</translation>
+<translation id="4150201353443180367">Ekran</translation>
 <translation id="4155551848414053977">Proverite da li je skener uključen i dostupan preko mreže ili direktne veze</translation>
 <translation id="4159784952369912983">Ljubičasta</translation>
 <translation id="4170180284036919717">Slikajte</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Temperatura</translation>
 <translation id="7977800524392185497">Da biste se pridružili <ph name="NETWORK_NAME" /> mreži, idite u Podešavanja</translation>
 <translation id="7978412674231730200">Privatni ključ</translation>
+<translation id="7982789257301363584">Mreža</translation>
 <translation id="7994702968232966508">EAP metod</translation>
 <translation id="802154636333426148">Preuzimanje nije uspelo</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Trenutno povezani</translation>
 <translation id="8845001906332463065">Zatražite pomoć</translation>
 <translation id="8855781559874488009">Ne možete da se povežete sa HTTP veb-sajtovima kroz zaštitni zid</translation>
+<translation id="885701979325669005">Memorijski prostor</translation>
 <translation id="8863170912498892583">Omogućite tamnu temu</translation>
 <translation id="8863888432376731307">Pronađite <ph name="INTENT" /> za „<ph name="QUERY" />“ i drugo</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_sr.xtb b/chromeos/strings/chromeos_strings_sr.xtb
index 417107d..47a0556 100644
--- a/chromeos/strings/chromeos_strings_sr.xtb
+++ b/chromeos/strings/chromeos_strings_sr.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Постави као позадину</translation>
 <translation id="1578784163189013834">Одаберите позадину чувара екрана</translation>
 <translation id="1615335640928990664">Потрошња података од <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Камера</translation>
 <translation id="1621067168122174824">Покрени тест пуњења</translation>
 <translation id="1631385268983122904">Још не састављајте уређај</translation>
 <translation id="1639239467298939599">Учитавање</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Да бисте наставили са ажурирањем, кликните на Даље.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Безбедност</translation>
+<translation id="3441653493275994384">Екран</translation>
 <translation id="3456078764689556234">Одштампаних страница: <ph name="PRINTED_PAGES" /> од <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Скенира се <ph name="PAGE_NUM" />. страница. Довршено је <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Штампање</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Промените позадину</translation>
 <translation id="360565022852130722">WiFi мрежа је обезбеђена слабим протоколом WEP 802.1x</translation>
 <translation id="3606583719724308068">Велико кашњење до HTTPS веб-сајтова</translation>
+<translation id="3616113530831147358">Аудио</translation>
 <translation id="3621202678540785336">Улаз</translation>
 <translation id="3632579075709132555">Укључите/искључите екран за приватност</translation>
 <translation id="3643810137582748570">Прескочи калибрацију</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Обавите откључавање RMA сервера</translation>
 <translation id="4145784616224233563">HTTP заштитни зид</translation>
 <translation id="4147897805161313378">Google слике</translation>
+<translation id="4150201353443180367">Екран</translation>
 <translation id="4155551848414053977">Проверите да ли је скенер укључен и доступан преко мреже или директне везе</translation>
 <translation id="4159784952369912983">Љубичаста</translation>
 <translation id="4170180284036919717">Сликајте</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Температура</translation>
 <translation id="7977800524392185497">Да бисте се придружили <ph name="NETWORK_NAME" /> мрежи, идите у Подешавања</translation>
 <translation id="7978412674231730200">Приватни кључ</translation>
+<translation id="7982789257301363584">Мрежа</translation>
 <translation id="7994702968232966508">EAP метод</translation>
 <translation id="802154636333426148">Преузимање није успело</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Тренутно повезани</translation>
 <translation id="8845001906332463065">Затражите помоћ</translation>
 <translation id="8855781559874488009">Не можете да се повежете са HTTP веб-сајтовима кроз заштитни зид</translation>
+<translation id="885701979325669005">Меморијски простор</translation>
 <translation id="8863170912498892583">Омогућите тамну тему</translation>
 <translation id="8863888432376731307">Пронађите <ph name="INTENT" /> за „<ph name="QUERY" />“ и друго</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_sv.xtb b/chromeos/strings/chromeos_strings_sv.xtb
index aa75d64..c75c5b90 100644
--- a/chromeos/strings/chromeos_strings_sv.xtb
+++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Använd som bakgrund</translation>
 <translation id="1578784163189013834">Välj bakgrund för skärmsläckare</translation>
 <translation id="1615335640928990664">Dataanvändning sedan <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Kör laddningstest</translation>
 <translation id="1631385268983122904">Sätt inte tillbaka batteriet i enheten än</translation>
 <translation id="1639239467298939599">Läser in</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Klicka på Nästa om du vill fortsätta med uppdateringen.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" /> %</translation>
 <translation id="3435738964857648380">Säkerhet</translation>
+<translation id="3441653493275994384">Skärm</translation>
 <translation id="3456078764689556234">Sida <ph name="PRINTED_PAGES" /> av <ph name="TOTAL_PAGES" /> har skrivits ut.</translation>
 <translation id="345898999683440380">Skannar sida <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" /> % har slutförts.</translation>
 <translation id="3459509316159669723">Skriva ut</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Ändra bakgrund</translation>
 <translation id="360565022852130722">wifi-nätverket använder det svaga säkerhetsprotokollet WEP 802.1x</translation>
 <translation id="3606583719724308068">Hög fördröjning till HTTPS-webbplatser</translation>
+<translation id="3616113530831147358">Ljud</translation>
 <translation id="3621202678540785336">Ingång</translation>
 <translation id="3632579075709132555">Tangenten som aktiverar och inaktiverar sekretesskärmen</translation>
 <translation id="3643810137582748570">Hoppa över kalibrering</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Utför RMA Server Unlock</translation>
 <translation id="4145784616224233563">HTTP-brandvägg</translation>
 <translation id="4147897805161313378">Google Foto</translation>
+<translation id="4150201353443180367">Skärm</translation>
 <translation id="4155551848414053977">Kontrollera att skannern är på och tillgänglig via nätverket eller med direktanslutning</translation>
 <translation id="4159784952369912983">Lila</translation>
 <translation id="4170180284036919717">Ta ett foto</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">Temperatur</translation>
 <translation id="7977800524392185497">Öppna inställningarna om du vill ansluta till ett <ph name="NETWORK_NAME" />-nätverk</translation>
 <translation id="7978412674231730200">Privat nyckel</translation>
+<translation id="7982789257301363584">Nätverk</translation>
 <translation id="7994702968232966508">EAP-metod</translation>
 <translation id="802154636333426148">Nedladdningen misslyckades</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">Anslutna just nu</translation>
 <translation id="8845001906332463065">Få hjälp</translation>
 <translation id="8855781559874488009">Det gick inte att ansluta till HTTP-webbplatser genom brandvägg</translation>
+<translation id="885701979325669005">Lagring</translation>
 <translation id="8863170912498892583">Aktivera mörkt tema</translation>
 <translation id="8863888432376731307">Be om en <ph name="INTENT" /> av <ph name="QUERY" /> och annat</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_sw.xtb b/chromeos/strings/chromeos_strings_sw.xtb
index 9122467..49a00e0 100644
--- a/chromeos/strings/chromeos_strings_sw.xtb
+++ b/chromeos/strings/chromeos_strings_sw.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">Kizindua</translation>
 <translation id="1512982610995527443">Kifaa kitazima ndani ya sekunde 5</translation>
 <translation id="1522984060396982789">Umefanikiwa kurekebisha. Unaweza kuzima kifaa au kuchukua hatua kadhaa za ziada.</translation>
+<translation id="1526389707933164996">Uhuishaji wa taswira ya skrini</translation>
 <translation id="152892567002884378">Ongeza sauti</translation>
 <translation id="1555130319947370107">Samawati</translation>
 <translation id="155865706765934889">Touchpad</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">Weka kama mandhari</translation>
 <translation id="1578784163189013834">Chagua mandharinyuma ya taswira ya skrini</translation>
 <translation id="1615335640928990664">Matumizi ya data tangu <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Tekeleza jaribio la Kuchaji</translation>
 <translation id="1631385268983122904">Usirudishie betri ya kifaa kwanza</translation>
 <translation id="1639239467298939599">Inapakia</translation>
@@ -257,6 +259,7 @@
 <translation id="3413935475507503304">Ili uendelee na sasisho, bofya Inayofuata.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Usalama</translation>
+<translation id="3441653493275994384">Skrini</translation>
 <translation id="3456078764689556234">Imechapisha ukurasa wa <ph name="PRINTED_PAGES" /> kati ya <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Inachanganua ukurasa wa <ph name="PAGE_NUM" />. Asilimia <ph name="PERCENTAGE_VALUE" /> imekamilika.</translation>
 <translation id="3459509316159669723">Kuchapisha</translation>
@@ -279,6 +282,7 @@
 <translation id="3604713164406837697">Badilisha mandhari</translation>
 <translation id="360565022852130722">Mtandao wa WiFi umelindwa kwa kutumia itifaki hafifu ya WEP 802.1x</translation>
 <translation id="3606583719724308068">Muda mwingi wa kusubiri maombi ya tovuti za HTTPS</translation>
+<translation id="3616113530831147358">Sauti</translation>
 <translation id="3621202678540785336">Ingizo</translation>
 <translation id="3632579075709132555">Kugeuza skrini ya faragha</translation>
 <translation id="3643810137582748570">Ruka marekebisho</translation>
@@ -300,6 +304,7 @@
 <translation id="3858860766373142691">Jina</translation>
 <translation id="3865414814144988605">Ubora</translation>
 <translation id="387301095347517405">Mara ambazo betri yako imekamilisha mzunguko kamili wa chaji</translation>
+<translation id="3885327323343477505">Badilisha taswira ya skrini</translation>
 <translation id="3923184630988645767">Matumizi ya data</translation>
 <translation id="3924044641767672375">Tunapendekeza uunganishe kwenye Wi-Fi ili urahisishe mchakato wa kurekebisha. Mtandao wako utahifadhiwa.</translation>
 <translation id="3932043219784172185">Hakuna kifaa kilichounganishwa</translation>
@@ -327,6 +332,7 @@
 <translation id="4140251671072434548">Tekeleza Mchakato wa Kufungua Seva ya RMA</translation>
 <translation id="4145784616224233563">Kinga mtandao ya HTTP</translation>
 <translation id="4147897805161313378">Picha kwenye Google</translation>
+<translation id="4150201353443180367">Onyesho</translation>
 <translation id="4155551848414053977">Hakikisha kichanganuzi kimewashwa na kinapatikana kupitia mtandao wako au muunganisho wa moja kwa moja</translation>
 <translation id="4159784952369912983">Zambarau</translation>
 <translation id="4170180284036919717">Piga picha</translation>
@@ -418,6 +424,7 @@
 <translation id="4890353053343094602">Chagua nenosiri jipya mara moja</translation>
 <translation id="4891842000192098784">Shinikizo</translation>
 <translation id="4897058166682006107">Kiwango cha chaji cha spika ya masikioni ya kushoto ni asilimia <ph name="BATTERY_PERCENTAGE" />.</translation>
+<translation id="4905998861748258752">Washa kipengele ili uchague chaguo za taswira ya skrini</translation>
 <translation id="4908030561598728899">Inasakinisha programu dhibiti...</translation>
 <translation id="4915052247106771211">Hatua hii itarejesha kifaa katika mipangilio kiliyotokanayo kiwandani (Powerwash).</translation>
 <translation id="4917385247580444890">Thabiti</translation>
@@ -741,6 +748,7 @@
 <translation id="7960831585769876809">Halijoto</translation>
 <translation id="7977800524392185497">Ili ujiunge kwenye mtandao wa <ph name="NETWORK_NAME" />, nenda kwenye Mipangilio</translation>
 <translation id="7978412674231730200">Ufunguo binafsi</translation>
+<translation id="7982789257301363584">Mtandao</translation>
 <translation id="7994702968232966508">Mbinu ya EAP</translation>
 <translation id="802154636333426148">Haikuweza kupakua</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -835,6 +843,7 @@
 <translation id="8834539327799336565">Vilivyounganishwa kwa sasa</translation>
 <translation id="8845001906332463065">Pata usaidizi</translation>
 <translation id="8855781559874488009">Imeshindwa kuunganisha kwenye tovuti za HTTP kupitia kinga mtandao</translation>
+<translation id="885701979325669005">Hifadhi</translation>
 <translation id="8863170912498892583">Washa mandhari meusi</translation>
 <translation id="8863888432376731307">Pata <ph name="INTENT" /> wa "<ph name="QUERY" />" na mengine mengi</translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -860,6 +869,7 @@
 <translation id="8997710128084572139">Kiwango cha chaji ya betri kwenye kifaa ni asilimia <ph name="BATTERY_PERCENTAGE" />.</translation>
 <translation id="9003704114456258138">Masafa</translation>
 <translation id="9025198690966128418">Tumia kama kifaa binafsi</translation>
+<translation id="9028832514430399253">Washa kitufe cha geuza ili uchague chaguo za taswira ya skrini</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">Usuluhishaji wa DNS una muda mrefu wa kusubiri</translation>
 <translation id="9063121522582193837">Imeshindwa kurekebisha baadhi ya vipengele</translation>
diff --git a/chromeos/strings/chromeos_strings_ta.xtb b/chromeos/strings/chromeos_strings_ta.xtb
index 3d473af..978ee82 100644
--- a/chromeos/strings/chromeos_strings_ta.xtb
+++ b/chromeos/strings/chromeos_strings_ta.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">வால்பேப்பராக அமை</translation>
 <translation id="1578784163189013834">ஸ்கிரீன் சேவர் பின்புலத்தைத் தேர்வுசெய்தல்</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> வரையிலான டேட்டா உபயோகம்</translation>
+<translation id="1620510694547887537">கேமரா</translation>
 <translation id="1621067168122174824">சார்ஜ் சோதனையை இயக்கு</translation>
 <translation id="1631385268983122904">இப்போது சாதனத்தில் பேட்டரியைப் பொருத்த வேண்டாம்</translation>
 <translation id="1639239467298939599">ஏற்றுகிறது</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">நிர்வகிப்பது: <ph name="FIRST_MANAGER" />, <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">பெயர் சேவையகங்கள்</translation>
 <translation id="1731082422893354635">புளூடூத் டச்பேட்</translation>
+<translation id="1745577949879301685">படங்களை ஏற்ற முடியவில்லை. இணைய இணைப்பைச் சரிபார்க்கவும் அல்லது மீண்டும் படங்களை ஏற்ற முயலவும்.</translation>
 <translation id="1751249301761991853">தனிப்பட்டவை</translation>
 <translation id="1753496554272155572">வால்பேப்பர் மாதிரிக்காட்சியில் இருந்து வெளியேறும்</translation>
 <translation id="175763766237925754">நன்றாக உள்ளது (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">புதுப்பிப்பைத் தொடர, அடுத்து என்பதைக் கிளிக் செய்யவும்.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">பாதுகாப்பு</translation>
+<translation id="3441653493275994384">பார்</translation>
 <translation id="3456078764689556234">அச்சிடப்பட்ட பக்கங்கள்: <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">ஸ்கேன் செய்யப்படும் பக்கம்: <ph name="PAGE_NUM" />. <ph name="PERCENTAGE_VALUE" />% முடிந்தது.</translation>
 <translation id="3459509316159669723">அச்சிடல்</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">வால்பேப்பரை மாற்று</translation>
 <translation id="360565022852130722">WEP 802.1x என்னும் வலுவற்ற நெறிமுறை மூலம் வைஃபை நெட்வொர்க் பாதுகாக்கப்படுகிறது</translation>
 <translation id="3606583719724308068">HTTPS இணையதளங்களில் அதிகளவு தாமதம் ஏற்படுகிறது</translation>
+<translation id="3616113530831147358">ஆடியோ</translation>
 <translation id="3621202678540785336">உள்ளீடு</translation>
 <translation id="3632579075709132555">தனிப்பட்ட திரையை இயக்கும்/முடக்கும்</translation>
 <translation id="3643810137582748570">சரிசெய்தலைத் தவிர்</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">RMA சேவையக அன்லாக்கைச் செயல்படுத்துங்கள்</translation>
 <translation id="4145784616224233563">HTTP ஃபயர்வால்</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">திரை</translation>
 <translation id="4155551848414053977">ஸ்கேனர் இயக்கப்பட்டிருப்பதையும் அது உங்கள் நெட்வொர்க் மூலமாகவோ நேரடியாகவோ இணைக்கப்பட்டிருப்பதையும் உறுதிசெய்துகொள்ளவும்</translation>
 <translation id="4159784952369912983">பர்பிள்</translation>
 <translation id="4170180284036919717">படமெடு</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">வெப்பநிலை</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> நெட்வொர்க்கில் இணைக்க, அமைப்புகளுக்குச் செல்லவும்</translation>
 <translation id="7978412674231730200">தனிப்பட்ட விசை</translation>
+<translation id="7982789257301363584">நெட்வொர்க்</translation>
 <translation id="7994702968232966508">EAP முறை</translation>
 <translation id="802154636333426148">பதிவிறக்க முடியவில்லை</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">தற்போது இணைக்கப்பட்டுள்ளவை</translation>
 <translation id="8845001906332463065">உதவி பெறுக</translation>
 <translation id="8855781559874488009">HTTP இணையதளங்களுடன் இணைப்பதை ஃபயர்வால் தடுக்கிறது</translation>
+<translation id="885701979325669005">சேமிப்பிடம்</translation>
 <translation id="8863170912498892583">டார்க் தீமினை இயக்குதல்</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />", மேலும் பலவற்றுக்கான <ph name="INTENT" /> பெறுங்கள்</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_te.xtb b/chromeos/strings/chromeos_strings_te.xtb
index 5a779abd..8bd0c3e 100644
--- a/chromeos/strings/chromeos_strings_te.xtb
+++ b/chromeos/strings/chromeos_strings_te.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">వాల్‌పేపర్‌గా సెట్ చేయి</translation>
 <translation id="1578784163189013834">స్క్రీన్ సేవర్ బ్యాక్‌గ్రౌండ్ ఎంచుకోండి</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> నుండి డేటా వినియోగం</translation>
+<translation id="1620510694547887537">కెమెరా</translation>
 <translation id="1621067168122174824">ఛార్జ్ పరీక్షను రన్ చేయండి</translation>
 <translation id="1631385268983122904">ఇప్పుడే పరికరాన్ని అసెంబుల్ చేయవద్దు</translation>
 <translation id="1639239467298939599">లోడ్ అవుతోంది</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">అప్‌డేట్ చేయడాన్ని కొనసాగించడానికి, 'తర్వాత'ను క్లిక్ చేయండి.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">భద్రత</translation>
+<translation id="3441653493275994384">స్క్రీన్</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> పేజీలలో <ph name="PRINTED_PAGES" />వ పేజీ ప్రింట్ చేయబడింది.</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" />వ పేజీని స్కాన్ చేస్తోంది. <ph name="PERCENTAGE_VALUE" />% పూర్తయింది.</translation>
 <translation id="3459509316159669723">ప్రింటింగ్</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">వాల్‌పేపర్‌ను మార్చండి</translation>
 <translation id="360565022852130722">బలహీనమైన ప్రోటోకాల్ WEP 802.1xతో Wi-Fi నెట్‌వర్క్ సురక్షితం చేయబడింది</translation>
 <translation id="3606583719724308068">HTTPS వెబ్‌సైట్‌లలో ప్రతిస్పందన సమయం ఎక్కువగా ఉంది</translation>
+<translation id="3616113530831147358">ఆడియో</translation>
 <translation id="3621202678540785336">ఇన్‌పుట్</translation>
 <translation id="3632579075709132555">గోప్యతా స్క్రీన్ టోగుల్</translation>
 <translation id="3643810137582748570">క్యాలిబ్రేషన్‌ను స్కిప్ చేయండి</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">RMA సర్వర్‌ను అన్‌లాక్ చేయండి</translation>
 <translation id="4145784616224233563">HTTP ఫైర్‌వాల్</translation>
 <translation id="4147897805161313378">Google ఫోటోలు</translation>
+<translation id="4150201353443180367">డిస్‌ప్లే</translation>
 <translation id="4155551848414053977">స్కానర్ ఆన్ చేయబడి ఉందని, అలాగే నెట్‌వర్క్ లేదా ప్రత్యక్ష కనెక్షన్ ద్వారా అందుబాటులో ఉందని నిర్ధారించుకోండి</translation>
 <translation id="4159784952369912983">వంగపండు రంగు</translation>
 <translation id="4170180284036919717">ఫోటో తీయండి</translation>
@@ -425,6 +429,7 @@
 <translation id="4915052247106771211">ఇది పరికరాన్ని ఫ్యాక్టరీ సెట్టింగ్‌లకు (పవర్‌వాష్) రీసెట్ చేస్తుంది.</translation>
 <translation id="4917385247580444890">బలమైన</translation>
 <translation id="4917889632206600977">ఆగిపోయింది - పేపర్లు లేవు</translation>
+<translation id="491791267030419270">ఫీడ్‌బ్యాక్‌ను రాయడానికి చిట్కాలు</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> సెకన్లలో <ph name="RATE" /> ఛార్జ్ అయ్యింది.</translation>
 <translation id="4930320165497208503">కనెక్షన్‌ను సెటప్ చేయడానికి లేదా అప్‌డేట్ చేయడానికి, <ph name="BEGIN_LINK" />సెట్టింగ్‌ల<ph name="END_LINK" />కు వెళ్లండి.</translation>
 <translation id="4932733599132424254">తేదీ</translation>
@@ -744,6 +749,7 @@
 <translation id="7960831585769876809">ఉష్ణోగ్రత</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> నెట్‌వర్క్‌లో చేరడానికి, సెట్టింగ్‌లకు వెళ్లండి</translation>
 <translation id="7978412674231730200">వ్యక్తిగత కీ</translation>
+<translation id="7982789257301363584">నెట్‌వర్క్</translation>
 <translation id="7994702968232966508">EAP పద్ధతి</translation>
 <translation id="802154636333426148">డౌన్‌లోడ్ విఫలమైంది</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -838,6 +844,7 @@
 <translation id="8834539327799336565">ప్రస్తుతం కనెక్ట్ చేయబడింది</translation>
 <translation id="8845001906332463065">సహాయం పొందండి</translation>
 <translation id="8855781559874488009">HTTP వెబ్‌సైట్‌లకు ఫైర్‌వాల్ ద్వారా కనెక్ట్ చేయడం సాధ్యపడదు</translation>
+<translation id="885701979325669005">నిల్వ</translation>
 <translation id="8863170912498892583">ముదురు రంగు రూపాన్ని ఎనేబుల్ చేయండి</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />", అలాగే మరిన్నింటి కోసం <ph name="INTENT" />ను పొందండి</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_th.xtb b/chromeos/strings/chromeos_strings_th.xtb
index 011d761..d8711d4 100644
--- a/chromeos/strings/chromeos_strings_th.xtb
+++ b/chromeos/strings/chromeos_strings_th.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">ตั้งเป็นวอลเปเปอร์</translation>
 <translation id="1578784163189013834">เลือกพื้นหลังของโปรแกรมรักษาหน้าจอ</translation>
 <translation id="1615335640928990664">ปริมาณการใช้อินเทอร์เน็ตตั้งแต่ <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">กล้องถ่ายรูป</translation>
 <translation id="1621067168122174824">ทดสอบการชาร์จแบตเตอรี่</translation>
 <translation id="1631385268983122904">อย่าเพิ่งประกอบอุปกรณ์กลับเข้าด้วยกัน</translation>
 <translation id="1639239467298939599">กำลังโหลด</translation>
@@ -94,6 +95,7 @@
 <translation id="1717874160321062422">จัดการโดย <ph name="FIRST_MANAGER" /> และ <ph name="SECOND_MANAGER" /></translation>
 <translation id="1726100011689679555">เซิร์ฟเวอร์ชื่อ</translation>
 <translation id="1731082422893354635">ทัชแพดบลูทูธ</translation>
+<translation id="1745577949879301685">โหลดรูปภาพไม่ได้ โปรดตรวจสอบการเชื่อมต่อเครือข่ายหรือลองโหลดรูปภาพอีกครั้ง</translation>
 <translation id="1751249301761991853">ส่วนบุคคล</translation>
 <translation id="1753496554272155572">ออกจากตัวอย่างวอลเปเปอร์</translation>
 <translation id="175763766237925754">ดี (<ph name="SIGNAL_STRENGTH" />)</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">คลิก "ถัดไป" เพื่อดำเนินการอัปเดตต่อ</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">ความปลอดภัย</translation>
+<translation id="3441653493275994384">หน้าจอ</translation>
 <translation id="3456078764689556234">พิมพ์แล้ว <ph name="PRINTED_PAGES" /> จาก <ph name="TOTAL_PAGES" /> หน้า</translation>
 <translation id="345898999683440380">กำลังสแกนหน้า <ph name="PAGE_NUM" /> เสร็จแล้ว <ph name="PERCENTAGE_VALUE" />%</translation>
 <translation id="3459509316159669723">การพิมพ์</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">เปลี่ยนวอลเปเปอร์</translation>
 <translation id="360565022852130722">เครือข่าย WiFi มีการรักษาความปลอดภัยด้วยโปรโตคอล WEP 802.1x ที่ไม่รัดกุม</translation>
 <translation id="3606583719724308068">เวลาในการตอบสนองไปยังเว็บไซต์ HTTPS สูง</translation>
+<translation id="3616113530831147358">เสียง</translation>
 <translation id="3621202678540785336">อินพุต</translation>
 <translation id="3632579075709132555">เปิด/ปิดหน้าจอความเป็นส่วนตัว</translation>
 <translation id="3643810137582748570">ข้ามการปรับเทียบ</translation>
@@ -329,6 +333,7 @@
 <translation id="4140251671072434548">ดำเนินการปลดล็อกเซิร์ฟเวอร์ RMA</translation>
 <translation id="4145784616224233563">ไฟร์วอลล์ HTTP</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">การแสดงผล</translation>
 <translation id="4155551848414053977">ตรวจสอบว่าเครื่องสแกนเปิดอยู่และใช้งานได้ผ่านทางเครือข่ายของคุณหรือการเชื่อมต่อโดยตรง</translation>
 <translation id="4159784952369912983">ม่วง</translation>
 <translation id="4170180284036919717">ถ่ายรูป</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">อุณหภูมิ</translation>
 <translation id="7977800524392185497">ไปที่การตั้งค่าเพื่อเข้าร่วมเครือข่าย <ph name="NETWORK_NAME" /></translation>
 <translation id="7978412674231730200">กุญแจส่วนตัว</translation>
+<translation id="7982789257301363584">เครือข่าย</translation>
 <translation id="7994702968232966508">วิธีการ EAP</translation>
 <translation id="802154636333426148">การดาวน์โหลดล้มเหลว</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">เชื่อมต่ออยู่</translation>
 <translation id="8845001906332463065">ขอความช่วยเหลือ</translation>
 <translation id="8855781559874488009">ไม่สามารถเชื่อมต่อผ่านไฟร์วอลล์ไปยังเว็บไซต์ HTTP</translation>
+<translation id="885701979325669005">พื้นที่เก็บข้อมูล</translation>
 <translation id="8863170912498892583">เปิดใช้ธีมมืด</translation>
 <translation id="8863888432376731307">รับ <ph name="INTENT" /> สำหรับ "<ph name="QUERY" />" และอื่นๆ</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_tr.xtb b/chromeos/strings/chromeos_strings_tr.xtb
index 20b468a..309e0f3 100644
--- a/chromeos/strings/chromeos_strings_tr.xtb
+++ b/chromeos/strings/chromeos_strings_tr.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">Başlatıcı</translation>
 <translation id="1512982610995527443">Cihaz 5 saniye sonra kapanacak</translation>
 <translation id="1522984060396982789">Onarımınız başarıyla tamamlandı. Cihazı kapatabilir veya başka işlemler yapabilirsiniz.</translation>
+<translation id="1526389707933164996">Ekran koruyucu animasyon</translation>
 <translation id="152892567002884378">Sesi açar</translation>
 <translation id="1555130319947370107">Mavi</translation>
 <translation id="155865706765934889">Dokunmatik Tuş Takımı</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">Duvar kağıdı yap</translation>
 <translation id="1578784163189013834">Ekran koruyucu arka planı seç</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> sonrası veri kullanımı</translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Şarj testini çalıştır</translation>
 <translation id="1631385268983122904">Cihaz parçalarını henüz geri takmayın</translation>
 <translation id="1639239467298939599">Yükleniyor</translation>
@@ -257,6 +259,7 @@
 <translation id="3413935475507503304">Güncelleme işlemine devam etmek için İleri'yi tıklayın.</translation>
 <translation id="3434107140712555581">%<ph name="BATTERY_PERCENTAGE" /></translation>
 <translation id="3435738964857648380">Güvenlik</translation>
+<translation id="3441653493275994384">Ekran</translation>
 <translation id="3456078764689556234">Yazdırılan sayfa: <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" />. sayfa taranıyor %<ph name="PERCENTAGE_VALUE" /> tamamlandı</translation>
 <translation id="3459509316159669723">Yazdırma</translation>
@@ -279,6 +282,7 @@
 <translation id="3604713164406837697">Duvar kağıdını değiştir</translation>
 <translation id="360565022852130722">Kablosuz ağ, zayıf bir protokol olan WEP 802.1x ile güvenlik altına alınmış</translation>
 <translation id="3606583719724308068">HTTPS web sitelerinde yüksek gecikme süresi</translation>
+<translation id="3616113530831147358">Ses</translation>
 <translation id="3621202678540785336">Giriş</translation>
 <translation id="3632579075709132555">Gizlilik ekranını aç/kapat</translation>
 <translation id="3643810137582748570">Kalibrasyonu atla</translation>
@@ -300,6 +304,7 @@
 <translation id="3858860766373142691">Ad</translation>
 <translation id="3865414814144988605">Çözünürlük</translation>
 <translation id="387301095347517405">Pilinizin tam şarj döngüsünden geçme sayısı</translation>
+<translation id="3885327323343477505">Ekran koruyucuyu değiştir</translation>
 <translation id="3923184630988645767">Veri kullanımı</translation>
 <translation id="3924044641767672375">Onarım sürecini kolaylaştırmak için kablosuz ağa bağlanmanız önerilir. Ağınız kaydedilir.</translation>
 <translation id="3932043219784172185">Bağlı cihaz yok</translation>
@@ -327,6 +332,7 @@
 <translation id="4140251671072434548">RMA Sunucu Kilidini Açma İşlemi Yapın</translation>
 <translation id="4145784616224233563">HTTP Güvenlik Duvarı</translation>
 <translation id="4147897805161313378">Google Fotoğraflar</translation>
+<translation id="4150201353443180367">Ekran</translation>
 <translation id="4155551848414053977">Tarayıcının açık ve ağınız üzerinden veya doğrudan bağlantı ile kullanılabilir olduğundan emin olun</translation>
 <translation id="4159784952369912983">Mor</translation>
 <translation id="4170180284036919717">Fotoğraf çek</translation>
@@ -418,6 +424,7 @@
 <translation id="4890353053343094602">Hemen yeni bir tane seçin</translation>
 <translation id="4891842000192098784">Stres</translation>
 <translation id="4897058166682006107">Cihazın sol kulaklık pili %<ph name="BATTERY_PERCENTAGE" /> düzeyinde.</translation>
+<translation id="4905998861748258752">Ekran koruyucu seçeneklerini belirlemek için özelliği açın</translation>
 <translation id="4908030561598728899">Donanım yazılımı yükleniyor...</translation>
 <translation id="4915052247106771211">Bu işlemden sonra cihaz fabrika ayarlarına sıfırlanır (Powerwash).</translation>
 <translation id="4917385247580444890">Güçlü</translation>
@@ -742,6 +749,7 @@
 <translation id="7960831585769876809">Sıcaklık</translation>
 <translation id="7977800524392185497">Bir <ph name="NETWORK_NAME" /> ağına katılmak için Ayarlar'a gidin</translation>
 <translation id="7978412674231730200">Özel anahtar</translation>
+<translation id="7982789257301363584">Ağ</translation>
 <translation id="7994702968232966508">EAP yöntemi</translation>
 <translation id="802154636333426148">İndirilemedi</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -836,6 +844,7 @@
 <translation id="8834539327799336565">Şu anda bağlı</translation>
 <translation id="8845001906332463065">Yardım alın</translation>
 <translation id="8855781559874488009">HTTP web sitelerine güvenlik duvarı aracılığıyla bağlanılamıyor</translation>
+<translation id="885701979325669005">Depolama</translation>
 <translation id="8863170912498892583">Koyu temayı etkinleştir</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" için <ph name="INTENT" /> ve daha fazlasını alın</translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -861,6 +870,7 @@
 <translation id="8997710128084572139">Cihazın pili %<ph name="BATTERY_PERCENTAGE" /> düzeyinde.</translation>
 <translation id="9003704114456258138">Frekans</translation>
 <translation id="9025198690966128418">Kişisel cihaz olarak kullan</translation>
+<translation id="9028832514430399253">Ekran koruyucu seçeneklerini belirlemek için geçiş yapma düğmesini açın</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">DNS çözümleme, yüksek gecikme süresine sahip</translation>
 <translation id="9063121522582193837">Bazı bileşenler kalibre edilemedi</translation>
diff --git a/chromeos/strings/chromeos_strings_uk.xtb b/chromeos/strings/chromeos_strings_uk.xtb
index 6c08033..b976332 100644
--- a/chromeos/strings/chromeos_strings_uk.xtb
+++ b/chromeos/strings/chromeos_strings_uk.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">Панель запуску</translation>
 <translation id="1512982610995527443">Пристрій завершить роботу через 5 секунд</translation>
 <translation id="1522984060396982789">Ремонт виконано. Ви можете завершити роботу пристрою або виконати інші дії.</translation>
+<translation id="1526389707933164996">Анімація для заставки</translation>
 <translation id="152892567002884378">Збільшити гучність</translation>
 <translation id="1555130319947370107">Синій</translation>
 <translation id="155865706765934889">Сенсорна панель</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">Зробити фоновим малюнком</translation>
 <translation id="1578784163189013834">Вибрати фон для заставки</translation>
 <translation id="1615335640928990664">Використання трафіку з <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Камера</translation>
 <translation id="1621067168122174824">Почати перевірку заряджання</translation>
 <translation id="1631385268983122904">Поки не збирайте пристрій</translation>
 <translation id="1639239467298939599">Завантаження</translation>
@@ -257,6 +259,7 @@
 <translation id="3413935475507503304">Щоб оновити, натисніть "Далі".</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Безпека</translation>
+<translation id="3441653493275994384">Екран</translation>
 <translation id="3456078764689556234">Надруковано сторінку <ph name="PRINTED_PAGES" /> з <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Сканування сторінки <ph name="PAGE_NUM" />. Виконано <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Друк</translation>
@@ -279,6 +282,7 @@
 <translation id="3604713164406837697">Змінити фоновий малюнок</translation>
 <translation id="360565022852130722">Мережа Wi-Fi захищена ненадійним протоколом WEP 802.1x</translation>
 <translation id="3606583719724308068">Велика затримка для веб-сайтів HTTPS</translation>
+<translation id="3616113530831147358">Аудіо</translation>
 <translation id="3621202678540785336">Вхід</translation>
 <translation id="3632579075709132555">Перемикач Екрана конфіденційності</translation>
 <translation id="3643810137582748570">Пропустити калібрування</translation>
@@ -300,6 +304,7 @@
 <translation id="3858860766373142691">Назва</translation>
 <translation id="3865414814144988605">Роздільна здатність</translation>
 <translation id="387301095347517405">Кількість повних циклів заряджання акумулятора</translation>
+<translation id="3885327323343477505">Змінити заставку</translation>
 <translation id="3923184630988645767">Використання трафіку</translation>
 <translation id="3924044641767672375">Щоб спростити ремонт, рекомендовано підключитися до Wi-Fi. Мережу буде збережено.</translation>
 <translation id="3932043219784172185">Немає підключених пристроїв</translation>
@@ -327,6 +332,7 @@
 <translation id="4140251671072434548">Виконайте серверне розблокування RMA</translation>
 <translation id="4145784616224233563">Брандмауер HTTP</translation>
 <translation id="4147897805161313378">Google Фото</translation>
+<translation id="4150201353443180367">Екран</translation>
 <translation id="4155551848414053977">Переконайтеся, що сканер увімкнений і доступний у мережі або через пряме з'єднання</translation>
 <translation id="4159784952369912983">Пурпуровий</translation>
 <translation id="4170180284036919717">Як зробити фотографію</translation>
@@ -418,6 +424,7 @@
 <translation id="4890353053343094602">Негайно виберіть новий</translation>
 <translation id="4891842000192098784">Стрес</translation>
 <translation id="4897058166682006107">Рівень заряду акумулятора лівого навушника – <ph name="BATTERY_PERCENTAGE" />%.</translation>
+<translation id="4905998861748258752">Увімкніть функцію, щоб вибрати параметри заставки</translation>
 <translation id="4908030561598728899">Встановлюється мікропрограма…</translation>
 <translation id="4915052247106771211">Буде відновлено заводські налаштування пристрою (Powerwash).</translation>
 <translation id="4917385247580444890">Потужний</translation>
@@ -742,6 +749,7 @@
 <translation id="7960831585769876809">Температура</translation>
 <translation id="7977800524392185497">Щоб приєднатися до мережі <ph name="NETWORK_NAME" />, перейдіть у налаштування</translation>
 <translation id="7978412674231730200">Секретний ключ</translation>
+<translation id="7982789257301363584">Мережа</translation>
 <translation id="7994702968232966508">Метод EAP</translation>
 <translation id="802154636333426148">Не вдалося завантажити</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -836,6 +844,7 @@
 <translation id="8834539327799336565">Підключено</translation>
 <translation id="8845001906332463065">Отримати довідку</translation>
 <translation id="8855781559874488009">Не вдається підключитися до веб-сайтів HTTP через брандмауер</translation>
+<translation id="885701979325669005">Обсяг пам’яті</translation>
 <translation id="8863170912498892583">Увімкнути темну тему</translation>
 <translation id="8863888432376731307">Шукати <ph name="INTENT" /> для запиту "<ph name="QUERY" />" тощо</translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -861,6 +870,7 @@
 <translation id="8997710128084572139">Рівень заряду акумулятора пристрою – <ph name="BATTERY_PERCENTAGE" />%.</translation>
 <translation id="9003704114456258138">Частота</translation>
 <translation id="9025198690966128418">Використовувати як особистий пристрій</translation>
+<translation id="9028832514430399253">Увімкніть перемикач, щоб вибрати варіанти заставки</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">Велика затримка перетворення DNS</translation>
 <translation id="9063121522582193837">Не вдалося відкалібрувати деякі компоненти</translation>
diff --git a/chromeos/strings/chromeos_strings_ur.xtb b/chromeos/strings/chromeos_strings_ur.xtb
index b6685a50..50997942 100644
--- a/chromeos/strings/chromeos_strings_ur.xtb
+++ b/chromeos/strings/chromeos_strings_ur.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">لانچر</translation>
 <translation id="1512982610995527443">آلہ 5 سیکنڈ میں شٹ ڈاؤن ہو جائے گا</translation>
 <translation id="1522984060396982789">آپ کی مرمت کا عمل کامیاب ہو گیا۔ آپ آلے کو شٹ ڈاؤن کر سکتے ہیں یا کچھ اضافی کاروائیاں کر سکتے ہیں۔</translation>
+<translation id="1526389707933164996">اسکرین سیور اینیمیشن</translation>
 <translation id="152892567002884378">والیوم بڑھائیں</translation>
 <translation id="1555130319947370107">نیلا</translation>
 <translation id="155865706765934889">ٹچ پیڈ</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">بطور وال پیپر سیٹ کریں</translation>
 <translation id="1578784163189013834">اسکرین سیور کا پس منظر منتخب کریں</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> سے ڈیٹا کا استعمال</translation>
+<translation id="1620510694547887537">کیمرا</translation>
 <translation id="1621067168122174824">چارج ٹیسٹ چلائیں</translation>
 <translation id="1631385268983122904">ابھی تک بیٹری نہ لگائیں</translation>
 <translation id="1639239467298939599">لوڈ ہو رہی ہے</translation>
@@ -258,6 +260,7 @@
 <translation id="3413935475507503304">اپ ڈیٹ کے ساتھ آگے بڑھنے کے لیے اگلے پر کلک کریں۔</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">سیکیورٹی</translation>
+<translation id="3441653493275994384">اسکرین</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> میں سے <ph name="PRINTED_PAGES" /> پرنٹ کئے ہوئے صفحات۔</translation>
 <translation id="345898999683440380">صفحہ <ph name="PAGE_NUM" /> اسکین ہو رہا ہے۔ <ph name="PERCENTAGE_VALUE" />% مکمل ہو گیا۔</translation>
 <translation id="3459509316159669723">پرنٹ کیا جا رہا ہے</translation>
@@ -280,6 +283,7 @@
 <translation id="3604713164406837697">وال پیپر تبدیل کریں</translation>
 <translation id="360565022852130722">‏WiFi نیٹ ورک کمزور پروٹوکول WEP 802.1x کے ساتھ محفوظ ہے</translation>
 <translation id="3606583719724308068">‏HTTPS ویب سائٹس پر زیادہ تاخیر</translation>
+<translation id="3616113530831147358">آڈیو</translation>
 <translation id="3621202678540785336">ان پٹ</translation>
 <translation id="3632579075709132555">رازداری کی اسکرین کو ٹوگل کرنے کی کلید</translation>
 <translation id="3643810137582748570">کیلیبریشن کو نظر انداز کریں</translation>
@@ -301,6 +305,7 @@
 <translation id="3858860766373142691">نام</translation>
 <translation id="3865414814144988605">ریزولیوشن</translation>
 <translation id="387301095347517405">آپ کی بیٹری کے مکمل طور پر چارج ہونے کی تعداد</translation>
+<translation id="3885327323343477505">اسکرین سیور تبدیل کریں</translation>
 <translation id="3923184630988645767">ڈیٹا کا استعمال</translation>
 <translation id="3924044641767672375">‏مرمت کے عمل کو آسان بنانے کے لیے Wi-Fi سے منسلک ہونے کی تجویز کی جاتی ہے۔ آپ کے نیٹ ورک کو محفوظ کیا جائے گا۔</translation>
 <translation id="3932043219784172185">کوئی آلہ منسلک نہیں ہے</translation>
@@ -328,6 +333,7 @@
 <translation id="4140251671072434548">‏RMA سرور انلاک انجام دیں</translation>
 <translation id="4145784616224233563">‏HTTP فائروال</translation>
 <translation id="4147897805161313378">‏Google تصاویر</translation>
+<translation id="4150201353443180367">ڈسپلے</translation>
 <translation id="4155551848414053977">یقینی بنائیں کہ اسکینر آن ہے اور آپ کے نیٹ ورک یا براہ راست کنکشن کے ذریعے دستیاب ہے</translation>
 <translation id="4159784952369912983">جامنی</translation>
 <translation id="4170180284036919717">ایک تصویر لیں</translation>
@@ -419,6 +425,7 @@
 <translation id="4890353053343094602">فوری طور پر نیا پاس ورڈ منتخب کریں</translation>
 <translation id="4891842000192098784">اسٹریس</translation>
 <translation id="4897058166682006107">آلے کے بائیں بڈ میں <ph name="BATTERY_PERCENTAGE" />فیصد بیٹری ہے۔</translation>
+<translation id="4905998861748258752">اسکرین سیور کے اختیارات کو منتخب کرنے کے لیے خصوصیت کو آن کریں</translation>
 <translation id="4908030561598728899">فرم ویئر کو انسٹال کیا جا رہا ہے...</translation>
 <translation id="4915052247106771211">‏اس سے آلہ فیکٹری کی ترتیبات (Powerwash) پر ری سیٹ ہو جائے گا۔</translation>
 <translation id="4917385247580444890">مضبوط</translation>
@@ -742,6 +749,7 @@
 <translation id="7960831585769876809">درجہ حرارت</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> نیٹ ورک میں شامل ہونے کیلئے، ترتیبات پر جائیں</translation>
 <translation id="7978412674231730200">نجی کلید</translation>
+<translation id="7982789257301363584">نیٹ ورک</translation>
 <translation id="7994702968232966508">‏EAP طریقہ</translation>
 <translation id="802154636333426148">ڈاؤن لوڈ ناکام ہوگیا</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -836,6 +844,7 @@
 <translation id="8834539327799336565">فی الحال منسلک ہے</translation>
 <translation id="8845001906332463065">مدد حاصل کریں</translation>
 <translation id="8855781559874488009">‏فائر وال کے ذریعے HTTP ویب سائٹس سے رابطہ منسلک نہیں کیا جا سکتا</translation>
+<translation id="885701979325669005">اسٹوریج</translation>
 <translation id="8863170912498892583">گہری تھیم فعال کریں</translation>
 <translation id="8863888432376731307">"<ph name="QUERY" />" اور مزید کے لیے <ph name="INTENT" /> حاصل کریں</translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -861,6 +870,7 @@
 <translation id="8997710128084572139">آلے میں <ph name="BATTERY_PERCENTAGE" />فیصد بیٹری ہے۔</translation>
 <translation id="9003704114456258138">فریکوئنسی</translation>
 <translation id="9025198690966128418">ذاتی آلے کے طور پر استعمال کریں</translation>
+<translation id="9028832514430399253">اسکرین سیور کے اختیارات کو منتخب کرنے کے لیے ٹوگل آن کریں</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">‏DNS ریزولیوشن کی تاخیر بہت زیادہ ہے</translation>
 <translation id="9063121522582193837">کچھ اجزاء کو کیلیبریٹ نہیں کیا جا سکا</translation>
diff --git a/chromeos/strings/chromeos_strings_uz.xtb b/chromeos/strings/chromeos_strings_uz.xtb
index a76ddd7..84af89fd 100644
--- a/chromeos/strings/chromeos_strings_uz.xtb
+++ b/chromeos/strings/chromeos_strings_uz.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Fon rasmi sifatida belgilash</translation>
 <translation id="1578784163189013834">Ekran lavhasi uchun fon rasmini tanlash</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> sanasidan keyingi trafik sarfi</translation>
+<translation id="1620510694547887537">Kamera</translation>
 <translation id="1621067168122174824">Quvvatlanishini tekshirish</translation>
 <translation id="1631385268983122904">Qurilmani qayta yigʻmay turing</translation>
 <translation id="1639239467298939599">Yuklanmoqda</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">Yangilashda davom etish uchun Keyingisi tugmasini bosing</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Xavfsizlik</translation>
+<translation id="3441653493275994384">Ekran</translation>
 <translation id="3456078764689556234">Sahifa chop etildi: <ph name="PRINTED_PAGES" /> / <ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380"><ph name="PAGE_NUM" /> ta sahifa skanerlandi. <ph name="PERCENTAGE_VALUE" />% tugallandi.</translation>
 <translation id="3459509316159669723">Chop etish</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">Fon rasmini almashtirish</translation>
 <translation id="360565022852130722">WiFi tarmoq zaif WEP 802.1x protokoli bilan himoyalangan</translation>
 <translation id="3606583719724308068">HTTPS saytlarga ulanishda yuqori kechikish</translation>
+<translation id="3616113530831147358">Audio</translation>
 <translation id="3621202678540785336">Kirish</translation>
 <translation id="3632579075709132555">Maxfiylik ekrani tugmasi</translation>
 <translation id="3643810137582748570">Keyin kalibrlash</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">RMA serveri qulfini ochish</translation>
 <translation id="4145784616224233563">HTTP Fayrvol</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">Ekran</translation>
 <translation id="4155551848414053977">Skaner yoqilganini va tarmoq orqali ishlashi yoki bevosita ulanganini tekshiring</translation>
 <translation id="4159784952369912983">Siyohrang</translation>
 <translation id="4170180284036919717">Suratga olish</translation>
@@ -426,6 +430,7 @@
 <translation id="4915052247106771211">Qurilma asl sozlamalariga qaytariladi (Powerwash).</translation>
 <translation id="4917385247580444890">Kuchli</translation>
 <translation id="4917889632206600977">Toʻxtatildi – Qogʻoz tugadi</translation>
+<translation id="491791267030419270">Fikr-mulohaza yozish maslahatlari</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> soniyada <ph name="RATE" /> quvvat oldi.</translation>
 <translation id="4930320165497208503">Aloqani sozlash yoki yangilash uchun <ph name="BEGIN_LINK" />Sozlamalar<ph name="END_LINK" /> sahifasini oching.</translation>
 <translation id="4932733599132424254">Sana</translation>
@@ -746,6 +751,7 @@
 <translation id="7960831585769876809">Harorat</translation>
 <translation id="7977800524392185497"><ph name="NETWORK_NAME" /> nomli tarmoqqa ulanish uchun Sozlamalarni oching</translation>
 <translation id="7978412674231730200">Xususiy kalit</translation>
+<translation id="7982789257301363584">Tarmoq</translation>
 <translation id="7994702968232966508">EAP usuli</translation>
 <translation id="802154636333426148">Yuklab olib bo‘lmadi</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -840,6 +846,7 @@
 <translation id="8834539327799336565">Hozirda ulangan</translation>
 <translation id="8845001906332463065">Yordam</translation>
 <translation id="8855781559874488009">HTTP saytlarga himoya devori orqali ulanish imkonsiz</translation>
+<translation id="885701979325669005">Ombor</translation>
 <translation id="8863170912498892583">Tungi mavzuni yoqish</translation>
 <translation id="8863888432376731307">“<ph name="QUERY" />” va boshqalar uchun <ph name="INTENT" /> olish</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_vi.xtb b/chromeos/strings/chromeos_strings_vi.xtb
index 5513391..85f2034a 100644
--- a/chromeos/strings/chromeos_strings_vi.xtb
+++ b/chromeos/strings/chromeos_strings_vi.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">Đặt làm hình nền</translation>
 <translation id="1578784163189013834">Chọn nền cho trình bảo vệ màn hình</translation>
 <translation id="1615335640928990664">Mức sử dụng dữ liệu kể từ <ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Máy ảnh</translation>
 <translation id="1621067168122174824">Chạy quá trình Kiểm tra sạc</translation>
 <translation id="1631385268983122904">Hãy khoan lắp lại thiết bị</translation>
 <translation id="1639239467298939599">Đang tải</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">Để tiếp tục cập nhật, hãy nhấp vào Tiếp theo.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Bảo mật</translation>
+<translation id="3441653493275994384">Màn hình</translation>
 <translation id="3456078764689556234">Đã in trang <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Đang quét trang <ph name="PAGE_NUM" />. Ðã quét được <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">In</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">Thay đổi hình nền</translation>
 <translation id="360565022852130722">Mạng Wi-Fi được bảo mật bằng giao thức yếu WEP 802.1x</translation>
 <translation id="3606583719724308068">Đường kết nối đến các trang web HTTPS có độ trễ cao</translation>
+<translation id="3616113530831147358">Âm thanh</translation>
 <translation id="3621202678540785336">Thiết bị vào</translation>
 <translation id="3632579075709132555">Bật/tắt Màn hình bảo vệ quyền riêng tư</translation>
 <translation id="3643810137582748570">Bỏ qua việc hiệu chỉnh</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">Thực hiện mở khoá máy chủ RMA</translation>
 <translation id="4145784616224233563">Tường lửa HTTP</translation>
 <translation id="4147897805161313378">Google Photos</translation>
+<translation id="4150201353443180367">Hiển thị</translation>
 <translation id="4155551848414053977">Hãy đảm bảo máy quét đã bật và ở trạng thái sẵn sàng thông qua mạng của bạn hoặc một đường kết nối trực tiếp</translation>
 <translation id="4159784952369912983">Tím</translation>
 <translation id="4170180284036919717">Chụp ảnh</translation>
@@ -425,6 +429,7 @@
 <translation id="4915052247106771211">Thao tác này sẽ đặt lại thiết bị về trạng thái cài đặt ban đầu (Powerwash).</translation>
 <translation id="4917385247580444890">Mạnh</translation>
 <translation id="4917889632206600977">Đã dừng – Hết giấy</translation>
+<translation id="491791267030419270">Mẹo viết phản hồi</translation>
 <translation id="4921665434385737356">Đã sạc <ph name="RATE" /> trong <ph name="NUM_SECONDS" /> giây.</translation>
 <translation id="4930320165497208503">Để thiết lập hoặc cập nhật kết nối, hãy chuyển đến phần <ph name="BEGIN_LINK" />Cài đặt<ph name="END_LINK" />.</translation>
 <translation id="4932733599132424254">Ngày Tháng</translation>
@@ -745,6 +750,7 @@
 <translation id="7960831585769876809">Nhiệt độ</translation>
 <translation id="7977800524392185497">Để kết nối với mạng <ph name="NETWORK_NAME" />, hãy đi tới phần Cài đặt</translation>
 <translation id="7978412674231730200">Khoá cá nhân</translation>
+<translation id="7982789257301363584">Mạng</translation>
 <translation id="7994702968232966508">Phương pháp EAP</translation>
 <translation id="802154636333426148">Tải xuống không thành công</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +845,7 @@
 <translation id="8834539327799336565">Hiện đang kết nối</translation>
 <translation id="8845001906332463065">Nhận trợ giúp</translation>
 <translation id="8855781559874488009">Không thể kết nối với các trang web HTTP qua tường lửa</translation>
+<translation id="885701979325669005">Bộ nhớ</translation>
 <translation id="8863170912498892583">Bật giao diện tối</translation>
 <translation id="8863888432376731307">Nhận <ph name="INTENT" /> cho "<ph name="QUERY" />" và nhiều thông tin khác</translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-CN.xtb b/chromeos/strings/chromeos_strings_zh-CN.xtb
index 6ada96a..7b23152 100644
--- a/chromeos/strings/chromeos_strings_zh-CN.xtb
+++ b/chromeos/strings/chromeos_strings_zh-CN.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">启动器</translation>
 <translation id="1512982610995527443">设备将在 5 秒后关机</translation>
 <translation id="1522984060396982789">已成功修复。您可将设备关机或执行一些其他操作。</translation>
+<translation id="1526389707933164996">屏保动画</translation>
 <translation id="152892567002884378">调高音量</translation>
 <translation id="1555130319947370107">蓝色</translation>
 <translation id="155865706765934889">触控板</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">设为壁纸</translation>
 <translation id="1578784163189013834">选择屏保背景</translation>
 <translation id="1615335640928990664">自 <ph name="FRIENDLY_DATE" />开始的流量使用情况</translation>
+<translation id="1620510694547887537">摄像头</translation>
 <translation id="1621067168122174824">运行充电测试</translation>
 <translation id="1631385268983122904">暂勿将设备组装回原样</translation>
 <translation id="1639239467298939599">正在加载</translation>
@@ -257,6 +259,7 @@
 <translation id="3413935475507503304">若要继续更新,请点击“下一步”。</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">安全</translation>
+<translation id="3441653493275994384">屏幕</translation>
 <translation id="3456078764689556234">已打印 <ph name="PRINTED_PAGES" /> 页(共 <ph name="TOTAL_PAGES" /> 页)。</translation>
 <translation id="345898999683440380">正在扫描第 <ph name="PAGE_NUM" /> 页。已完成 <ph name="PERCENTAGE_VALUE" />%。</translation>
 <translation id="3459509316159669723">打印</translation>
@@ -279,6 +282,7 @@
 <translation id="3604713164406837697">更换壁纸</translation>
 <translation id="360565022852130722">Wi-Fi 网络采用了防护能力较弱的 WEP 802.1x 协议</translation>
 <translation id="3606583719724308068">HTTPS 网站的延迟时间较长</translation>
+<translation id="3616113530831147358">音频</translation>
 <translation id="3621202678540785336">输入</translation>
 <translation id="3632579075709132555">隐私保护屏幕开关</translation>
 <translation id="3643810137582748570">跳过校准</translation>
@@ -300,6 +304,7 @@
 <translation id="3858860766373142691">名称</translation>
 <translation id="3865414814144988605">分辨率</translation>
 <translation id="387301095347517405">您的电池已经历的完整充电循环次数</translation>
+<translation id="3885327323343477505">更换屏保</translation>
 <translation id="3923184630988645767">流量使用</translation>
 <translation id="3924044641767672375">为简化维修过程,建议您连接到 Wi-Fi。系统会保存您的网络信息。</translation>
 <translation id="3932043219784172185">未连接任何设备</translation>
@@ -327,6 +332,7 @@
 <translation id="4140251671072434548">执行 RMA 服务器解锁</translation>
 <translation id="4145784616224233563">HTTP 防火墙</translation>
 <translation id="4147897805161313378">Google 相册</translation>
+<translation id="4150201353443180367">显示</translation>
 <translation id="4155551848414053977">请确保扫描仪已开机,且已直接或通过网络连接到设备</translation>
 <translation id="4159784952369912983">紫色</translation>
 <translation id="4170180284036919717">拍照</translation>
@@ -418,6 +424,7 @@
 <translation id="4890353053343094602">请立即设置一个新密码</translation>
 <translation id="4891842000192098784">压力</translation>
 <translation id="4897058166682006107">设备左侧耳机的剩余电池电量为 <ph name="BATTERY_PERCENTAGE" />%。</translation>
+<translation id="4905998861748258752">开启此功能即可选择屏保选项</translation>
 <translation id="4908030561598728899">正在安装固件…</translation>
 <translation id="4915052247106771211">选择此选项会将设备恢复出厂设置 (Powerwash)。</translation>
 <translation id="4917385247580444890">强</translation>
@@ -742,6 +749,7 @@
 <translation id="7960831585769876809">温度</translation>
 <translation id="7977800524392185497">若要加入“<ph name="NETWORK_NAME" />”网络,请转到“设置”</translation>
 <translation id="7978412674231730200">私有密钥</translation>
+<translation id="7982789257301363584">网络</translation>
 <translation id="7994702968232966508">EAP 方法</translation>
 <translation id="802154636333426148">下载失败</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -836,6 +844,7 @@
 <translation id="8834539327799336565">目前已连接</translation>
 <translation id="8845001906332463065">获取帮助</translation>
 <translation id="8855781559874488009">无法通过防火墙连接到 HTTP 网站</translation>
+<translation id="885701979325669005">存储数据</translation>
 <translation id="8863170912498892583">启用深色主题</translation>
 <translation id="8863888432376731307">获取“<ph name="QUERY" />”的<ph name="INTENT" />,等等</translation>
 <translation id="8868741746785112895">GUID</translation>
@@ -861,6 +870,7 @@
 <translation id="8997710128084572139">设备电池电量为 <ph name="BATTERY_PERCENTAGE" />%。</translation>
 <translation id="9003704114456258138">频率</translation>
 <translation id="9025198690966128418">用作个人设备</translation>
+<translation id="9028832514430399253">将切换开关上的滑块滑至开启位置即可选择屏保选项</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9062831201344759865">DNS 解析延迟时间较长</translation>
 <translation id="9063121522582193837">无法校准某些组件</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb
index fb46b3a..38fad9f 100644
--- a/chromeos/strings/chromeos_strings_zh-HK.xtb
+++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">設為桌布</translation>
 <translation id="1578784163189013834">選取螢幕保護程式背景</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" />至今的數據用量</translation>
+<translation id="1620510694547887537">相機</translation>
 <translation id="1621067168122174824">執行充電測試</translation>
 <translation id="1631385268983122904">請暫時不要將電池放回裝置</translation>
 <translation id="1639239467298939599">載入中</translation>
@@ -259,6 +260,7 @@
 <translation id="3413935475507503304">如要繼續進行更新,請按一下 [下一步]。</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">安全性</translation>
+<translation id="3441653493275994384">螢幕</translation>
 <translation id="3456078764689556234">印咗 <ph name="PRINTED_PAGES" /> 頁,總共有 <ph name="TOTAL_PAGES" /> 頁。</translation>
 <translation id="345898999683440380">掃瞄緊第 <ph name="PAGE_NUM" /> 頁。完成咗 <ph name="PERCENTAGE_VALUE" />%。</translation>
 <translation id="3459509316159669723">列印</translation>
@@ -281,6 +283,7 @@
 <translation id="3604713164406837697">變更桌布</translation>
 <translation id="360565022852130722">已使用防護力較弱的通訊協定 WEP 802.1x 保護 Wi-Fi 網絡</translation>
 <translation id="3606583719724308068">連線至 HTTPS 網站延遲時間過長</translation>
+<translation id="3616113530831147358">音效檔案</translation>
 <translation id="3621202678540785336">輸入</translation>
 <translation id="3632579075709132555">私隱保護畫面切換</translation>
 <translation id="3643810137582748570">略過校正</translation>
@@ -330,6 +333,7 @@
 <translation id="4140251671072434548">執行 RMA Server Unlock</translation>
 <translation id="4145784616224233563">HTTP 防火牆</translation>
 <translation id="4147897805161313378">Google 相片</translation>
+<translation id="4150201353443180367">顯示屏</translation>
 <translation id="4155551848414053977">請確認掃瞄器已開啟,並可供透過網絡或直接連線使用</translation>
 <translation id="4159784952369912983">紫色</translation>
 <translation id="4170180284036919717">拍攝相片</translation>
@@ -746,6 +750,7 @@
 <translation id="7960831585769876809">溫度</translation>
 <translation id="7977800524392185497">如要加入 <ph name="NETWORK_NAME" /> 網絡,請前往「設定」頁面</translation>
 <translation id="7978412674231730200">私密金鑰</translation>
+<translation id="7982789257301363584">網絡</translation>
 <translation id="7994702968232966508">EAP 方法</translation>
 <translation id="802154636333426148">下載失敗</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -840,6 +845,7 @@
 <translation id="8834539327799336565">目前已連接的裝置</translation>
 <translation id="8845001906332463065">取得說明</translation>
 <translation id="8855781559874488009">無法透過防火牆連線至 HTTP 網站</translation>
+<translation id="885701979325669005">儲存設備</translation>
 <translation id="8863170912498892583">啟用深色主題背景</translation>
 <translation id="8863888432376731307">取得「<ph name="QUERY" />」和其他查詢內容的<ph name="INTENT" /></translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-TW.xtb b/chromeos/strings/chromeos_strings_zh-TW.xtb
index 090b3ef..b10cfe9 100644
--- a/chromeos/strings/chromeos_strings_zh-TW.xtb
+++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -77,6 +77,7 @@
 <translation id="1572585716423026576">設為桌布</translation>
 <translation id="1578784163189013834">選擇螢幕保護程式背景</translation>
 <translation id="1615335640928990664"><ph name="FRIENDLY_DATE" />至今的數據用量</translation>
+<translation id="1620510694547887537">攝影機</translation>
 <translation id="1621067168122174824">執行充電測試</translation>
 <translation id="1631385268983122904">請先不要將裝置組裝回原樣</translation>
 <translation id="1639239467298939599">載入中</translation>
@@ -258,6 +259,7 @@
 <translation id="3413935475507503304">如要繼續執行更新作業,請按「下一步」</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">安全性</translation>
+<translation id="3441653493275994384">螢幕</translation>
 <translation id="3456078764689556234">已列印 <ph name="PRINTED_PAGES" /> 頁 (共 <ph name="TOTAL_PAGES" /> 頁)。</translation>
 <translation id="345898999683440380">正在掃描第 <ph name="PAGE_NUM" /> 頁,目前已完成 <ph name="PERCENTAGE_VALUE" />%。</translation>
 <translation id="3459509316159669723">列印</translation>
@@ -280,6 +282,7 @@
 <translation id="3604713164406837697">變更桌布</translation>
 <translation id="360565022852130722">已使用防護力較弱的通訊協定 WEP 802.1x 保護 Wi-Fi 網路</translation>
 <translation id="3606583719724308068">連線至 HTTPS 網站時延遲時間過長</translation>
+<translation id="3616113530831147358">音訊</translation>
 <translation id="3621202678540785336">輸入</translation>
 <translation id="3632579075709132555">隱私保護功能切換</translation>
 <translation id="3643810137582748570">略過校正</translation>
@@ -329,6 +332,7 @@
 <translation id="4140251671072434548">執行 RMA Server Unlock</translation>
 <translation id="4145784616224233563">HTTP 防火牆</translation>
 <translation id="4147897805161313378">Google 相簿</translation>
+<translation id="4150201353443180367">顯示設定</translation>
 <translation id="4155551848414053977">請確認掃描器已開啟,而且可供透過網路或直接連線使用</translation>
 <translation id="4159784952369912983">紫色</translation>
 <translation id="4170180284036919717">拍攝相片</translation>
@@ -745,6 +749,7 @@
 <translation id="7960831585769876809">溫度</translation>
 <translation id="7977800524392185497">如要加入 <ph name="NETWORK_NAME" /> 網路,請前往「設定」頁面</translation>
 <translation id="7978412674231730200">秘密金鑰</translation>
+<translation id="7982789257301363584">網路</translation>
 <translation id="7994702968232966508">EAP 方法</translation>
 <translation id="802154636333426148">下載失敗</translation>
 <translation id="8031884997696620457">HSPAPlus</translation>
@@ -839,6 +844,7 @@
 <translation id="8834539327799336565">目前已連線的裝置</translation>
 <translation id="8845001906332463065">尋求協助</translation>
 <translation id="8855781559874488009">無法透過防火牆連線到 HTTP 網站</translation>
+<translation id="885701979325669005">儲存空間</translation>
 <translation id="8863170912498892583">啟用深色主題</translation>
 <translation id="8863888432376731307">取得「<ph name="QUERY" />」和其他查詢內容的<ph name="INTENT" /></translation>
 <translation id="8868741746785112895">GUID</translation>
diff --git a/chromeos/strings/chromeos_strings_zu.xtb b/chromeos/strings/chromeos_strings_zu.xtb
index 1157021..368f9fa 100644
--- a/chromeos/strings/chromeos_strings_zu.xtb
+++ b/chromeos/strings/chromeos_strings_zu.xtb
@@ -68,6 +68,7 @@
 <translation id="1510238584712386396">Isiqalisi</translation>
 <translation id="1512982610995527443">Idivayisi izovalwa emizuzwaneni emi-5</translation>
 <translation id="1522984060396982789">Ukulungisa kwakho kube yimpumelelo. Ungavala idivayisi noma wenze ezinye izenzo ezengeziwe.</translation>
+<translation id="1526389707933164996">Isigcini sesikrini sikapopayi</translation>
 <translation id="152892567002884378">Ivolumu phezulu</translation>
 <translation id="1555130319947370107">Okuluhlaza okwesibhakabhaka</translation>
 <translation id="155865706765934889">Iphedi yokuthinta</translation>
@@ -76,6 +77,7 @@
 <translation id="1572585716423026576">Setha njengephephadonga</translation>
 <translation id="1578784163189013834">Khetha indawo engemuva yesilondolozi sesikrini</translation>
 <translation id="1615335640928990664">Ukusetshenziswa kwedatha kusuka ngo-<ph name="FRIENDLY_DATE" /></translation>
+<translation id="1620510694547887537">Ikhamela</translation>
 <translation id="1621067168122174824">Qalisa ukuhlola kokushaja</translation>
 <translation id="1631385268983122904">Ungasheshi ukubuyisela idivayisi ndawonye</translation>
 <translation id="1639239467298939599">Iyalayisha</translation>
@@ -257,6 +259,7 @@
 <translation id="3413935475507503304">Ukuze uqhubeke nesibuyekezo, chofoza u-Okulandelayo.</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3435738964857648380">Ukuvikela</translation>
+<translation id="3441653493275994384">Isikrini</translation>
 <translation id="3456078764689556234">Iphrinte ikhasi elingu-<ph name="PRINTED_PAGES" /> kwangu-<ph name="TOTAL_PAGES" />.</translation>
 <translation id="345898999683440380">Iskena ikhasi <ph name="PAGE_NUM" />. Kuqedwe <ph name="PERCENTAGE_VALUE" />%.</translation>
 <translation id="3459509316159669723">Iyaphrinta</translation>
@@ -279,6 +282,7 @@
 <translation id="3604713164406837697">Shintsha iphephadonga</translation>
 <translation id="360565022852130722">Inethiwekhi ye-WiFi ivikelwe ngephrothokholi ebuthakathaka ye-WEP 802.1x</translation>
 <translation id="3606583719724308068">Ukubambezeleka okukhulu kumawebhusayithi we-HTTPS</translation>
+<translation id="3616113530831147358">Umsindo</translation>
 <translation id="3621202678540785336">Okokufaka</translation>
 <translation id="3632579075709132555">Guqula isikrini sobumfihlo</translation>
 <translation id="3643810137582748570">Yeqa ukulinganisa</translation>
@@ -300,6 +304,7 @@
 <translation id="3858860766373142691">Igama</translation>
 <translation id="3865414814144988605">Isixazululo</translation>
 <translation id="387301095347517405">Inani lezikhathi ibhethri yakho ebe nomjikelezo wokushaja ogcwele ngayo</translation>
+<translation id="3885327323343477505">Shintsha isigcini sesikrini</translation>
 <translation id="3923184630988645767">Ukusetshenziswa kwedatha</translation>
 <translation id="3924044641767672375">Ukuxhuma ku-Wi-Fi kuyanconywa ukuze kwenziwe inqubo yokulungisa kalula. Inethiwekhi yakho izolondolozwa.</translation>
 <translation id="3932043219784172185">Ayikho idivayisi exhunyiwe</translation>
@@ -327,6 +332,7 @@
 <translation id="4140251671072434548">Yenza Ukuvula Kweseva ye-RMA</translation>
 <translation id="4145784616224233563">Uhlelo lokuvikela le-HTTP</translation>
 <translation id="4147897805161313378">Izithombe ze-Google</translation>
+<translation id="4150201353443180367">Isiboniso</translation>
 <translation id="4155551848414053977">Qiniseka ukuthi iskena sivuliwe futhi siyatholakala ngenethiwekhi yakho noma nge-Direct connection</translation>
 <translation id="4159784952369912983">Okuphephuli</translation>
 <translation id="4170180284036919717">Thatha isithombe</translation>
@@ -418,6 +424,7 @@
 <translation id="4890353053343094602">Khetha elisha elilodwa ngokushesha</translation>
 <translation id="4891842000192098784">Ukucindezeleka</translation>
 <translation id="4897058166682006107">Idivayisi isele ngo-<ph name="BATTERY_PERCENTAGE" />% we-bud yebhethri.</translation>
+<translation id="4905998861748258752">Vula isakhi ukuze ukhethe okukhethwayo kwesigcini sesikrini</translation>
 <translation id="4908030561598728899">Ifaka i-firmware...</translation>
 <translation id="4915052247106771211">Lokhu kuzosetha kabusha idivayisi kumasethingi asekuqaleni (i-Powerwash).</translation>
 <translation id="4917385247580444890">kunamandla</translation>
@@ -742,6 +749,7 @@
 <translation id="7960831585769876809">Izinga lokushisa</translation>
 <translation id="7977800524392185497">Ukuze ujoyine inethiwekhi ye-<ph name="NETWORK_NAME" />, iya Kumasethingi</translation>
 <translation id="7978412674231730200">Ukhiye oyimfihlo</translation>
+<translation id="7982789257301363584">Inethiwekhi</translation>
 <translation id="7994702968232966508">Indlela ye-EAP</translation>
 <translation id="802154636333426148">Ukulanda kwehlulekile</translation>
 <translation id="8031884997696620457">I-HSPAPlus</translation>
@@ -836,6 +844,7 @@
 <translation id="8834539327799336565">Kuxhunyiwe manje</translation>
 <translation id="8845001906332463065">Thola usizo</translation>
 <translation id="8855781559874488009">Ayikwazi ukuxhuma ngohlelo lokuvikela kumawebhusayithi we-HTTP</translation>
+<translation id="885701979325669005">Ukugcina</translation>
 <translation id="8863170912498892583">Nika amandla itimu emnyama</translation>
 <translation id="8863888432376731307">Thola i-<ph name="INTENT" /> ye-"<ph name="QUERY" />" nokuningi</translation>
 <translation id="8868741746785112895">I-GUID</translation>
@@ -861,6 +870,7 @@
 <translation id="8997710128084572139">Idivayisi inebhethri engu-<ph name="BATTERY_PERCENTAGE" />%.</translation>
 <translation id="9003704114456258138">Imvamisa</translation>
 <translation id="9025198690966128418">Sebenzisa njengedivayisi yomuntu siqu</translation>
+<translation id="9028832514430399253">Vula ukuguqula ukuze ukhethe izinketho zesigcini sesikrini</translation>
 <translation id="9039663905644212491">I-PEAP</translation>
 <translation id="9062831201344759865">Ukulungiswa kwe-DNS kunokubambezeleka okuphezulu</translation>
 <translation id="9063121522582193837">Ayikwazanga ukulinganisa izingxenye ezithile</translation>
diff --git a/components/autofill/core/browser/data_model/phone_number.cc b/components/autofill/core/browser/data_model/phone_number.cc
index 297bbc84..ab2cb14 100644
--- a/components/autofill/core/browser/data_model/phone_number.cc
+++ b/components/autofill/core/browser/data_model/phone_number.cc
@@ -217,10 +217,27 @@
     case PHONE_HOME_NUMBER:
       return cached_parsed_phone_.number();
 
-    case PHONE_HOME_NUMBER_PREFIX:
-    case PHONE_HOME_NUMBER_SUFFIX:
-      NOTIMPLEMENTED();
-      return std::u16string();
+    case PHONE_HOME_NUMBER_PREFIX: {
+      const std::u16string number = GetInfo(PHONE_HOME_NUMBER, app_locale);
+      const std::u16string number_suffix =
+          GetInfo(PHONE_HOME_NUMBER_SUFFIX, app_locale);
+      DCHECK(number.size() >= number_suffix.size());
+      // As PHONE_HOME_NUMBER = PHONE_HOME_NUMBER_PREFIX +
+      // PHONE_HOME_NUMBER_SUFFIX, extract the appropriate prefix from `number`.
+      return number.substr(0, number.size() - number_suffix.size());
+    }
+
+    case PHONE_HOME_NUMBER_SUFFIX: {
+      const std::u16string number = GetInfo(PHONE_HOME_NUMBER, app_locale);
+      // Libphonenumber doesn't provide functionality to split PHONE_HOME_NUMBER
+      // further, and the HTML standard doesn't specify which suffix
+      // autocomplete="tel-local-suffix" corresponds to. In all countries using
+      // this format that we are aware of (see unit tests), the suffix consists
+      // of the last 4 digits, while the length of the prefix varies.
+      constexpr int kSuffixLength = 4;
+      DCHECK(number.size() >= kSuffixLength);
+      return number.substr(number.size() - kSuffixLength);
+    }
 
     case PHONE_HOME_CITY_CODE_WITH_TRUNK_PREFIX:
       return GetTrunkPrefix() + cached_parsed_phone_.city_code();
diff --git a/components/autofill/core/browser/data_model/phone_number_unittest.cc b/components/autofill/core/browser/data_model/phone_number_unittest.cc
index 4bee80c7..52bd3f6 100644
--- a/components/autofill/core/browser/data_model/phone_number_unittest.cc
+++ b/components/autofill/core/browser/data_model/phone_number_unittest.cc
@@ -324,7 +324,7 @@
                         const std::u16string& city_code_without_trunk,
                         const std::u16string& city_number_with_trunk,
                         const std::u16string& city_number_without_trunk) {
-    // Irrelevant, as the `profile` has country information.
+    // The `locale` is irrelevant, as the `profile` has country information.
     const std::string locale = "en-US";
     PhoneNumber phone_number(&profile);
     phone_number.SetInfo(PHONE_HOME_WHOLE_NUMBER, number, locale);
@@ -372,6 +372,38 @@
   }
 }
 
+// Tests that PHONE_HOME_NUMBER_PREFIX and PHONE_HOME_NUMBER_PREFIX are
+// extracted correctly.
+TEST(PhoneNumberTest, NumberPreAndSuffixes) {
+  AutofillProfile profile;
+
+  // Constructs a `PhoneNumber` object from `number` and verifies that the
+  // pre- and suffix match the expectation.
+  auto TestNumber = [&](const std::u16string& number,
+                        const std::u16string& prefix,
+                        const std::u16string& suffix) {
+    // The `locale` is irrelevant, as the `profile` has country information.
+    const std::string locale = "en-US";
+    PhoneNumber phone_number(&profile);
+    phone_number.SetInfo(PHONE_HOME_WHOLE_NUMBER, number, locale);
+    EXPECT_EQ(prefix, phone_number.GetInfo(PHONE_HOME_NUMBER_PREFIX, locale));
+    EXPECT_EQ(suffix, phone_number.GetInfo(PHONE_HOME_NUMBER_SUFFIX, locale));
+  };
+
+  // US
+  {
+    profile.SetRawInfo(ADDRESS_HOME_COUNTRY, u"US");
+    TestNumber(u"(650) 234-5678", u"234", u"5678");
+  }
+  // JP
+  {
+    profile.SetRawInfo(ADDRESS_HOME_COUNTRY, u"JP");
+    TestNumber(u"03-3224-9999", u"3224", u"9999");   // Landline
+    TestNumber(u"090-1234-5678", u"1234", u"5678");  // Mobile
+    TestNumber(u"+81 824-86-3123", u"86", u"3123");  // Different length prefix
+  }
+}
+
 // Tests whether the |PHONE_HOME_COUNTRY_CODE| is added to the set of matching
 // types.
 TEST(PhoneNumberTest, CountryCodeInMatchingTypes) {
diff --git a/components/autofill/core/browser/field_types.cc b/components/autofill/core/browser/field_types.cc
index fcbe9e5..15d1af44 100644
--- a/components/autofill/core/browser/field_types.cc
+++ b/components/autofill/core/browser/field_types.cc
@@ -48,6 +48,8 @@
     case EMAIL_ADDRESS:
     case USERNAME_AND_EMAIL_ADDRESS:
     case PHONE_HOME_NUMBER:
+    case PHONE_HOME_NUMBER_PREFIX:
+    case PHONE_HOME_NUMBER_SUFFIX:
     case PHONE_HOME_CITY_CODE:
     case PHONE_HOME_CITY_CODE_WITH_TRUNK_PREFIX:
     case PHONE_HOME_COUNTRY_CODE:
@@ -156,8 +158,6 @@
     case PHONE_FAX_COUNTRY_CODE:
     case PHONE_FAX_CITY_AND_NUMBER:
     case PHONE_FAX_WHOLE_NUMBER:
-    case PHONE_HOME_NUMBER_PREFIX:
-    case PHONE_HOME_NUMBER_SUFFIX:
     case FIELD_WITH_DEFAULT_VALUE:
     case MERCHANT_EMAIL_SIGNUP:
     case PRICE:
diff --git a/components/autofill/core/browser/personal_data_manager_cleaner.cc b/components/autofill/core/browser/personal_data_manager_cleaner.cc
index ce4317ca..d3dd49f 100644
--- a/components/autofill/core/browser/personal_data_manager_cleaner.cc
+++ b/components/autofill/core/browser/personal_data_manager_cleaner.cc
@@ -337,7 +337,7 @@
   for (auto* credit_card : personal_data_manager_->GetCreditCards()) {
     // If the credit card is not associated with a billing address, skip it.
     if (credit_card->billing_address_id().empty())
-      break;
+      continue;
 
     // If the billing address profile associated with the card has been merged,
     // replace it by the id of the profile in which it was merged. Repeat the
diff --git a/components/autofill/core/browser/personal_data_manager_unittest.cc b/components/autofill/core/browser/personal_data_manager_unittest.cc
index c40f661..bbf05aa 100644
--- a/components/autofill/core/browser/personal_data_manager_unittest.cc
+++ b/components/autofill/core/browser/personal_data_manager_unittest.cc
@@ -4231,6 +4231,10 @@
   guids_merge_map.insert(std::pair<std::string, std::string>("B", "E"));
   guids_merge_map.insert(std::pair<std::string, std::string>("D", "E"));
 
+  // Create a credit card without a billing address id
+  CreditCard* credit_card0 =
+      new CreditCard(base::GenerateGUID(), test::kEmptyOrigin);
+
   // Create cards that use A, D, E and F as their billing address id.
   CreditCard* credit_card1 =
       new CreditCard(base::GenerateGUID(), test::kEmptyOrigin);
@@ -4247,6 +4251,8 @@
 
   // Add the credit cards to the database.
   personal_data_->local_credit_cards_.push_back(
+      std::unique_ptr<CreditCard>(credit_card0));
+  personal_data_->local_credit_cards_.push_back(
       std::unique_ptr<CreditCard>(credit_card1));
   personal_data_->server_credit_cards_.push_back(
       std::unique_ptr<CreditCard>(credit_card2));
diff --git a/components/autofill/core/browser/webdata/autofill_webdata_backend_util.cc b/components/autofill/core/browser/webdata/autofill_webdata_backend_util.cc
index f11f4a2..cd84e8d6 100644
--- a/components/autofill/core/browser/webdata/autofill_webdata_backend_util.cc
+++ b/components/autofill/core/browser/webdata/autofill_webdata_backend_util.cc
@@ -177,7 +177,7 @@
   for (std::unique_ptr<CreditCard>& credit_card : credit_cards) {
     // If the credit card is not associated with a billing address, skip it.
     if (credit_card->billing_address_id().empty())
-      break;
+      continue;
 
     // If the billing address profile associated with the card has been merged,
     // replace it by the id of the profile in which it was merged. Repeat the
diff --git a/components/autofill_assistant/guided_browsing/OWNERS b/components/autofill_assistant/guided_browsing/OWNERS
new file mode 100644
index 0000000..ed892cb
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/OWNERS
@@ -0,0 +1,2 @@
+# Please keep these in alphabetical order
+jainshashank@google.com
diff --git a/components/autofill_assistant/guided_browsing/android/BUILD.gn b/components/autofill_assistant/guided_browsing/android/BUILD.gn
new file mode 100644
index 0000000..8e3d580f
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/BUILD.gn
@@ -0,0 +1,50 @@
+# Copyright 2022 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/android/rules.gni")
+
+android_library("java") {
+  resources_package =
+      "org.chromium.components.autofill_assistant.guided_browsing"
+
+  deps = [
+    ":java_resources",
+    "$google_play_services_package:google_play_services_vision_common_java",
+    "$google_play_services_package:google_play_services_vision_java",
+    "//base:base_java",
+    "//content/public/android:content_java",
+    "//third_party/androidx:androidx_appcompat_appcompat_java",
+    "//ui/android:ui_java",
+  ]
+
+  sources = [
+    "java/src/org/chromium/components/autofill_assistant/guided_browsing/LayoutUtils.java",
+    "java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/AssistantQrCodeController.java",
+    "java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/AssistantQrCodeDelegate.java",
+    "java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraCallbacks.java",
+    "java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraPreview.java",
+    "java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraPreviewOverlay.java",
+    "java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanBinder.java",
+    "java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanCoordinator.java",
+    "java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanDialog.java",
+    "java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanModel.java",
+    "java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanView.java",
+    "java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/utils/AssistantQrCodePermissionUtils.java",
+  ]
+
+  annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
+}
+
+android_resources("java_resources") {
+  sources = [
+    "java/res/layout/autofill_assistant_qr_code_camera_scan_dialog.xml",
+    "java/res/layout/autofill_assistant_qr_code_camera_scan_permission_layout.xml",
+    "java/res/values-v17/dimens.xml",
+  ]
+  deps = [
+    "//components/browser_ui/strings/android:browser_ui_strings_grd",
+    "//components/browser_ui/styles/android:java_resources",
+    "//components/browser_ui/widget/android:java_resources",
+  ]
+}
diff --git a/components/autofill_assistant/guided_browsing/android/DEPS b/components/autofill_assistant/guided_browsing/android/DEPS
new file mode 100644
index 0000000..83e44bc
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/DEPS
@@ -0,0 +1,7 @@
+include_rules = [
+  "+components/browser_ui/styles/android",
+  "+components/browser_ui/widget/android",
+  "+components/browser_ui/strings/android",
+  "+content/public/android",
+  "+ui/android",
+]
diff --git a/components/autofill_assistant/guided_browsing/android/java/res/layout/autofill_assistant_qr_code_camera_scan_dialog.xml b/components/autofill_assistant/guided_browsing/android/java/res/layout/autofill_assistant_qr_code_camera_scan_dialog.xml
new file mode 100644
index 0000000..4a85c88
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/res/layout/autofill_assistant_qr_code_camera_scan_dialog.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2022 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+  <LinearLayout
+      android:id="@+id/toolbar"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:orientation="horizontal">
+
+  <org.chromium.ui.widget.ChromeImageButton
+      android:id="@+id/close_button"
+      style="@style/ToolbarButton"
+      android:src="@drawable/btn_close"
+      android:layout_height="@dimen/toolbar_button_width"
+      android:contentDescription="@string/close"
+      app:tint="@color/default_icon_color_tint_list" />
+
+  <TextView
+      android:id="@+id/toolbar_title"
+      android:layout_width="fill_parent"
+      android:layout_height="fill_parent"
+      android:textAppearance="@style/TextAppearance.TextLarge.Primary"
+      android:gravity="center"/>
+
+  </LinearLayout>
+
+  <FrameLayout
+      android:id="@+id/qr_code_view"
+      android:layout_width="match_parent"
+      android:layout_height="fill_parent"
+      android:layout_below="@id/toolbar" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/components/autofill_assistant/guided_browsing/android/java/res/layout/autofill_assistant_qr_code_camera_scan_permission_layout.xml b/components/autofill_assistant/guided_browsing/android/java/res/layout/autofill_assistant_qr_code_camera_scan_permission_layout.xml
new file mode 100644
index 0000000..338edd26
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/res/layout/autofill_assistant_qr_code_camera_scan_permission_layout.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2022 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+<ScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/permission_layout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+  <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:orientation="vertical">
+    <ImageView
+        android:id="@+id/tab_line"
+        android:layout_width="match_parent"
+        style="@style/TabBarShadow"
+        android:importantForAccessibility="no"/>
+
+    <org.chromium.ui.widget.ChromeImageView
+        android:id="@+id/camera_icon"
+        android:layout_marginTop="112dp"
+        android:layout_gravity="center_horizontal"
+        android:layout_width="150dp"
+        android:layout_height="150dp"
+        android:scaleType="center"
+        android:importantForAccessibility="no"
+        app:srcCompat="@drawable/camera_img" />
+
+    <TextView
+        android:id="@+id/permission_text"
+        android:layout_width="200dp"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="40dp"
+        android:drawablePadding="24dp"
+        android:gravity="center_horizontal"
+        android:textAppearance="@style/TextAppearance.TextLarge.Primary"
+        android:lineHeight="20dp"
+        android:layout_gravity="center_horizontal"/>
+
+    <org.chromium.ui.widget.ButtonCompat
+        android:id="@+id/permission_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="30dp"
+        style="@style/TextButton"/>
+  </LinearLayout>
+</ScrollView>
diff --git a/components/autofill_assistant/guided_browsing/android/java/res/values-v17/dimens.xml b/components/autofill_assistant/guided_browsing/android/java/res/values-v17/dimens.xml
new file mode 100644
index 0000000..3c64b454
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/res/values-v17/dimens.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2022 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+<resources>
+  <!-- QR code camera preview overlay dimensions -->
+  <dimen name="guided_browsing_qr_code_overlay_text_size">16sp</dimen>
+  <dimen name="guided_browsing_qr_code_overlay_rect_size">250dp</dimen>
+  <dimen name="guided_browsing_qr_code_overlay_corner_size">25dp</dimen>
+  <dimen name="guided_browsing_qr_code_overlay_corner_width">4dp</dimen>
+  <dimen name="guided_browsing_qr_code_overlay_text_top_padding">14dp</dimen>
+</resources>
diff --git a/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/LayoutUtils.java b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/LayoutUtils.java
new file mode 100644
index 0000000..033df19
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/LayoutUtils.java
@@ -0,0 +1,24 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.autofill_assistant.guided_browsing;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+
+import org.chromium.base.BundleUtils;
+
+/** Utilities for dealing with layouts and inflation. */
+public class LayoutUtils {
+    private static final String ASSISTANT_SPLIT_NAME = "autofill_assistant.guided_browsing";
+
+    /**
+     * Creates a LayoutInflater which can be used to inflate layouts from the
+     * autofill_assistant.guided_browsing module.
+     */
+    public static LayoutInflater createInflater(Context context) {
+        return LayoutInflater.from(
+                BundleUtils.createContextForInflation(context, ASSISTANT_SPLIT_NAME));
+    }
+}
\ No newline at end of file
diff --git a/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/AssistantQrCodeController.java b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/AssistantQrCodeController.java
new file mode 100644
index 0000000..c31a742
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/AssistantQrCodeController.java
@@ -0,0 +1,21 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.autofill_assistant.guided_browsing.qr_code;
+
+import android.app.Activity;
+
+import org.chromium.components.autofill_assistant.guided_browsing.qr_code.camera_scan.AssistantQrCodeCameraScanDialog;
+import org.chromium.components.autofill_assistant.guided_browsing.qr_code.camera_scan.AssistantQrCodeCameraScanModel;
+import org.chromium.ui.base.WindowAndroid;
+
+/** Controller to expose QR Code Scan functionality. */
+public class AssistantQrCodeController {
+    /** Prompts the user for QR Code Scanning. */
+    public static void promptQrCodeScan(
+            Activity activity, WindowAndroid windowAndroid, AssistantQrCodeCameraScanModel model) {
+        AssistantQrCodeCameraScanDialog.newInstance(activity, windowAndroid, model)
+                .show(activity.getFragmentManager(), /* tag= */ null);
+    }
+}
diff --git a/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/AssistantQrCodeDelegate.java b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/AssistantQrCodeDelegate.java
new file mode 100644
index 0000000..01451fe
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/AssistantQrCodeDelegate.java
@@ -0,0 +1,17 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.autofill_assistant.guided_browsing.qr_code;
+
+/** Delegate interface for Assistant QR Code Scan actions. */
+public interface AssistantQrCodeDelegate {
+    /** Called when QR Code Scan is successfully completed. */
+    public void onScanResult(String value);
+
+    /** Called when QR Code Scan is cancelled. */
+    public void onScanCancelled();
+
+    /** Called when QR Code Scan fails because of Camera Error. */
+    public void onCameraError();
+}
diff --git a/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraCallbacks.java b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraCallbacks.java
new file mode 100644
index 0000000..dc4722b
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraCallbacks.java
@@ -0,0 +1,124 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.autofill_assistant.guided_browsing.qr_code.camera_scan;
+
+import android.content.Context;
+import android.graphics.ImageFormat;
+import android.hardware.Camera;
+import android.util.SparseArray;
+
+import com.google.android.gms.vision.Frame;
+import com.google.android.gms.vision.barcode.Barcode;
+import com.google.android.gms.vision.barcode.BarcodeDetector;
+
+import org.chromium.base.task.AsyncTask;
+import org.chromium.base.task.PostTask;
+import org.chromium.components.autofill_assistant.guided_browsing.qr_code.AssistantQrCodeDelegate;
+import org.chromium.content_public.browser.UiThreadTaskTraits;
+
+import java.nio.ByteBuffer;
+
+/**
+ * AssistantQrCodeCameraCallbacks provides the callbacks needed for camera preview.
+ */
+public class AssistantQrCodeCameraCallbacks
+        implements Camera.PreviewCallback, Camera.ErrorCallback {
+    private final Context mContext;
+    private final AssistantQrCodeCameraScanModel mCameraScanModel;
+    private final AssistantQrCodeCameraScanCoordinator.DialogCallbacks mDialogCallbacks;
+
+    private BarcodeDetector mDetector;
+
+    /**
+     * The AssistantQrCodeCameraCallbacks constructor.
+     */
+    AssistantQrCodeCameraCallbacks(Context context, AssistantQrCodeCameraScanModel cameraScanModel,
+            AssistantQrCodeCameraScanCoordinator.DialogCallbacks dialogCallbacks) {
+        mContext = context;
+        mCameraScanModel = cameraScanModel;
+        mDialogCallbacks = dialogCallbacks;
+
+        // Set detector to null until it gets initialized asynchronously.
+        mDetector = null;
+        initBarcodeDetectorAsync();
+    }
+
+    /**
+     * Callback on successful camera preview. Inspects the frame for any QR Code. In case of no
+     * QR code detection, the camera preview continues. In case of successful QR Code detection,
+     * sends the output value using the |AssistantQrCodeDelegate| and dismisses the QR Code Camera
+     * Scan dialog UI.
+     */
+    @Override
+    public void onPreviewFrame(byte[] data, Camera camera) {
+        if (mDetector == null) {
+            return;
+        }
+
+        ByteBuffer buffer = ByteBuffer.allocate(data.length);
+        buffer.put(data);
+        Frame frame =
+                new Frame.Builder()
+                        .setImageData(buffer, camera.getParameters().getPreviewSize().width,
+                                camera.getParameters().getPreviewSize().height, ImageFormat.NV21)
+                        .build();
+        SparseArray<Barcode> barcodes = mDetector.detect(frame);
+        if (!mCameraScanModel.get(AssistantQrCodeCameraScanModel.IS_ON_FOREGROUND)) {
+            return;
+        }
+        if (barcodes.size() == 0 || barcodes.valueAt(0).rawValue.isEmpty()) {
+            camera.setOneShotPreviewCallback(this);
+            return;
+        }
+
+        Barcode firstCode = barcodes.valueAt(0);
+        PostTask.postTask(UiThreadTaskTraits.DEFAULT, new Runnable() {
+            @Override
+            public void run() {
+                AssistantQrCodeDelegate delegate =
+                        mCameraScanModel.get(AssistantQrCodeCameraScanModel.DELEGATE);
+                if (delegate != null) {
+                    delegate.onScanResult(firstCode.rawValue);
+                }
+            }
+        });
+        // Dismiss the QR Code scan UI dialog.
+        mDialogCallbacks.dismiss();
+    }
+
+    /**
+     * Callback on camera error. Sends back the error using the |AssistantQrCodeDelegate| and
+     * dismisses the QR Code Camera Scan dialog UI.
+     */
+    @Override
+    public void onError(int error, Camera camera) {
+        PostTask.postTask(UiThreadTaskTraits.DEFAULT, new Runnable() {
+            @Override
+            public void run() {
+                AssistantQrCodeDelegate delegate =
+                        mCameraScanModel.get(AssistantQrCodeCameraScanModel.DELEGATE);
+                if (delegate != null) {
+                    delegate.onCameraError();
+                }
+            }
+        });
+        // Dismiss the QR Code scan UI dialog.
+        mDialogCallbacks.dismiss();
+    }
+
+    private void initBarcodeDetectorAsync() {
+        new AsyncTask<BarcodeDetector>() {
+            @Override
+            protected BarcodeDetector doInBackground() {
+                return new BarcodeDetector.Builder(mContext).build();
+            }
+
+            @Override
+            protected void onPostExecute(BarcodeDetector detector) {
+                mDetector = detector;
+            }
+        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+    }
+}
diff --git a/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraPreview.java b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraPreview.java
new file mode 100644
index 0000000..9b33b7b0
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraPreview.java
@@ -0,0 +1,226 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.autofill_assistant.guided_browsing.qr_code.camera_scan;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.Context;
+import android.hardware.Camera;
+import android.hardware.Camera.CameraInfo;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+
+import org.chromium.ui.display.DisplayAndroid;
+
+/** AssistantQrCodeCameraPreview class controls camera and camera previews. */
+// TODO(b:232057840): Reuse corresponding class from share component
+// (https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/scan_tab/CameraPreview.java).
+public class AssistantQrCodeCameraPreview extends SurfaceView implements SurfaceHolder.Callback {
+    private static final String THREAD_NAME = "CameraHandlerThread";
+
+    // Extra enums for communicating camera failure modes in the error callback.
+    protected static final int NO_CAMERA_FOUND_ERROR = 1000;
+    protected static final int CAMERA_DISABLED_ERROR = 1001;
+    protected static final int CAMERA_IN_USE_ERROR = 1002;
+    protected static final int CAMERA_FAILED_ERROR = 1003;
+
+    private final Context mContext;
+    private final Camera.PreviewCallback mPreviewCallback;
+    private final Camera.ErrorCallback mErrorCallback;
+
+    private int mCameraId;
+    private Camera mCamera;
+    private HandlerThread mCameraThread;
+
+    /**
+     * The AssistantQrCodeCameraPreview constructor.
+     * @param context The context to use for user permissions.
+     * @param previewCallback The callback to processing camera preview.
+     * @param errorCallback The callback when an error happens using the camera.
+     */
+    public AssistantQrCodeCameraPreview(Context context, Camera.PreviewCallback previewCallback,
+            Camera.ErrorCallback errorCallback) {
+        super(context);
+        mContext = context;
+        mPreviewCallback = previewCallback;
+        mErrorCallback = errorCallback;
+    }
+
+    /** Obtains a camera and starts the preview. */
+    public void startCamera() {
+        startCameraAsync();
+    }
+
+    /** Starts the default camera on a separate thread. */
+    private void startCameraAsync() {
+        if (mCameraThread == null) {
+            mCameraThread = new HandlerThread(THREAD_NAME);
+            mCameraThread.start();
+        }
+        mCameraId = getDefaultCameraId();
+        Handler handler = new Handler(mCameraThread.getLooper());
+        handler.post(() -> {
+            Camera camera = getCameraInstance(mCameraId);
+            Handler mainHandler = new Handler(Looper.getMainLooper());
+            mainHandler.post(() -> { setupCamera(camera); });
+        });
+    }
+
+    /** Sets camera information. Set camera to null if camera is used or doesn't exist. */
+    private void setupCamera(Camera camera) {
+        mCamera = camera;
+        startCameraPreview();
+    }
+
+    /** Stops the camera and releases it for other apps. */
+    public void stopCamera() {
+        if (mCamera == null) {
+            return;
+        }
+
+        stopCameraPreview();
+        mCamera.release();
+        mCamera = null;
+
+        if (mCameraThread != null) {
+            mCameraThread.quit();
+            mCameraThread = null;
+        }
+    }
+
+    /** Sets up and starts camera preview. */
+    private void startCameraPreview() {
+        getHolder().addCallback(this);
+
+        if (mCamera == null) {
+            return;
+        }
+
+        try {
+            mCamera.setPreviewDisplay(getHolder());
+            mCamera.setDisplayOrientation(getCameraOrientation());
+            mCamera.setOneShotPreviewCallback(mPreviewCallback);
+            mCamera.setErrorCallback(mErrorCallback);
+
+            Camera.Parameters parameters = mCamera.getParameters();
+            parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
+            mCamera.setParameters(parameters);
+
+            mCamera.startPreview();
+        } catch (Exception e) {
+            mErrorCallback.onError(CAMERA_FAILED_ERROR, mCamera);
+        }
+    }
+
+    /** Stops camera preview. */
+    private void stopCameraPreview() {
+        getHolder().removeCallback(this);
+
+        if (mCamera == null) {
+            return;
+        }
+
+        mCamera.setOneShotPreviewCallback(null);
+        mCamera.setErrorCallback(null);
+        try {
+            mCamera.stopPreview();
+        } catch (RuntimeException e) {
+            // Ignore, error is not important after stopPreview is called.
+        }
+    }
+
+    /** Calculates camera's orientation based on display's orientation and camera. */
+    private int getCameraOrientation() {
+        Camera.CameraInfo info = new Camera.CameraInfo();
+        Camera.getCameraInfo(mCameraId, info);
+
+        int displayOrientation = getDisplayOrientation();
+        if (info == null) {
+            return displayOrientation;
+        }
+
+        int result;
+        if (isBackCamera(info)) {
+            result = (info.orientation - displayOrientation + 360) % 360;
+        } else {
+            // front-facing
+            result = (info.orientation + displayOrientation) % 360;
+            result = (360 - result) % 360; // compensate the mirror
+        }
+        return result;
+    }
+
+    /** Gets the display orientation degree as integer. */
+    private int getDisplayOrientation() {
+        DisplayAndroid display = DisplayAndroid.getNonMultiDisplay(mContext);
+        return display.getRotationDegrees();
+    }
+
+    /** Returns whether given camera info corresponds to back camera. */
+    private static boolean isBackCamera(CameraInfo info) {
+        return info.facing == android.hardware.Camera.CameraInfo.CAMERA_FACING_BACK;
+    }
+
+    /** Returns default camera id. Prefers back camera if available. */
+    private static int getDefaultCameraId() {
+        int numberOfCameras = Camera.getNumberOfCameras();
+        Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
+        int defaultCameraId = -1;
+        for (int i = 0; i < numberOfCameras; i++) {
+            defaultCameraId = i;
+            Camera.getCameraInfo(i, cameraInfo);
+            if (isBackCamera(cameraInfo)) {
+                return i;
+            }
+        }
+        return defaultCameraId;
+    }
+
+    /**
+     * Returns an instance of the Camera for the give id. Returns null if camera is used or doesn't
+     * exist.
+     */
+    private Camera getCameraInstance(int cameraId) {
+        Camera camera = null;
+        try {
+            camera = Camera.open(cameraId);
+        } catch (RuntimeException e) {
+            int error = CAMERA_IN_USE_ERROR;
+            if (cameraId == -1) {
+                error = NO_CAMERA_FOUND_ERROR;
+            } else if (isCameraDisabledByPolicy()) {
+                error = CAMERA_DISABLED_ERROR;
+            }
+            mErrorCallback.onError(error, null);
+        }
+        return camera;
+    }
+
+    /** Checks whether the device administrator has disabled the camera. */
+    private boolean isCameraDisabledByPolicy() {
+        DevicePolicyManager devicePolicyManager =
+                (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
+        return devicePolicyManager.getCameraDisabled(null);
+    }
+
+    /** SurfaceHolder.Callback implementation. */
+    @Override
+    public void surfaceCreated(SurfaceHolder holder) {
+        startCameraPreview();
+    }
+
+    @Override
+    public void surfaceDestroyed(SurfaceHolder holder) {
+        stopCameraPreview();
+    }
+
+    @Override
+    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
+        stopCameraPreview();
+        startCameraPreview();
+    }
+}
diff --git a/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraPreviewOverlay.java b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraPreviewOverlay.java
new file mode 100644
index 0000000..c102a87
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraPreviewOverlay.java
@@ -0,0 +1,139 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.autofill_assistant.guided_browsing.qr_code.camera_scan;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.Rect;
+import android.text.DynamicLayout;
+import android.text.Layout.Alignment;
+import android.text.SpannableStringBuilder;
+import android.text.TextPaint;
+import android.view.View;
+
+import org.chromium.components.autofill_assistant.guided_browsing.R;
+
+/**
+ * AssistantQrCodeCameraPreviewOverlay is a mainly transparent layer meant for the camera preview.
+ */
+public class AssistantQrCodeCameraPreviewOverlay extends View {
+    private final int mRectSize;
+    private final int mCornerSize;
+    private final Paint mCornerPaint;
+    private final Paint mMaskPaint;
+    private final TextPaint mTextPaint;
+    private final int mTextTopPadding;
+    private final DynamicLayout mTextLayout;
+
+    private Rect mFramingRect;
+    private SpannableStringBuilder mTextInstructions;
+
+    public AssistantQrCodeCameraPreviewOverlay(Context context) {
+        super(context);
+
+        mRectSize = getResources().getDimensionPixelSize(
+                R.dimen.guided_browsing_qr_code_overlay_rect_size);
+        mCornerSize = getResources().getDimensionPixelSize(
+                R.dimen.guided_browsing_qr_code_overlay_corner_size);
+        mTextTopPadding = getResources().getDimensionPixelSize(
+                R.dimen.guided_browsing_qr_code_overlay_text_top_padding);
+        updateFramingRect();
+
+        mMaskPaint = new Paint();
+        mMaskPaint.setColor(getResources().getColor(R.color.black_alpha_65));
+
+        mCornerPaint = new Paint();
+        mCornerPaint.setColor(getResources().getColor(android.R.color.white));
+        mCornerPaint.setStyle(Paint.Style.STROKE);
+        mCornerPaint.setStrokeWidth(getResources().getDimensionPixelSize(
+                R.dimen.guided_browsing_qr_code_overlay_corner_width));
+
+        mTextPaint = new TextPaint();
+        mTextPaint.setAntiAlias(true);
+        mTextPaint.setColor(getResources().getColor(android.R.color.white));
+        mTextPaint.setTextSize(getResources().getDimensionPixelSize(
+                R.dimen.guided_browsing_qr_code_overlay_text_size));
+
+        mTextInstructions = new SpannableStringBuilder();
+        mTextLayout = new DynamicLayout(mTextInstructions, mTextInstructions, mTextPaint,
+                mFramingRect.width(), Alignment.ALIGN_CENTER, 1.0f, 0.0f, true);
+    }
+
+    public void setTextInstructions(String text) {
+        mTextInstructions.clear();
+        mTextInstructions.append(text);
+    }
+
+    @Override
+    protected void onSizeChanged(int w, int h, int ow, int oh) {
+        updateFramingRect();
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        drawOverlayMask(canvas);
+        drawCorners(canvas);
+        drawText(canvas);
+    }
+
+    /** Draws transparent scrim around the framing rectangle. */
+    private void drawOverlayMask(Canvas canvas) {
+        int width = canvas.getWidth();
+        int height = canvas.getHeight();
+
+        canvas.drawRect(0, 0, width, mFramingRect.top, mMaskPaint);
+        canvas.drawRect(
+                0, mFramingRect.top, mFramingRect.left, mFramingRect.bottom + 1, mMaskPaint);
+        canvas.drawRect(mFramingRect.right + 1, mFramingRect.top, width, mFramingRect.bottom + 1,
+                mMaskPaint);
+        canvas.drawRect(0, mFramingRect.bottom + 1, width, height, mMaskPaint);
+    }
+
+    /** Draws corners around the framing rectangle. */
+    private void drawCorners(Canvas canvas) {
+        // Top-left corner
+        Path path = new Path();
+        path.moveTo(mFramingRect.left, mFramingRect.top + mCornerSize);
+        path.lineTo(mFramingRect.left, mFramingRect.top);
+        path.lineTo(mFramingRect.left + mCornerSize, mFramingRect.top);
+        canvas.drawPath(path, mCornerPaint);
+
+        // Top-right corner
+        path.moveTo(mFramingRect.right, mFramingRect.top + mCornerSize);
+        path.lineTo(mFramingRect.right, mFramingRect.top);
+        path.lineTo(mFramingRect.right - mCornerSize, mFramingRect.top);
+        canvas.drawPath(path, mCornerPaint);
+
+        // Bottom-right corner
+        path.moveTo(mFramingRect.right, mFramingRect.bottom - mCornerSize);
+        path.lineTo(mFramingRect.right, mFramingRect.bottom);
+        path.lineTo(mFramingRect.right - mCornerSize, mFramingRect.bottom);
+        canvas.drawPath(path, mCornerPaint);
+
+        // Bottom-left corner
+        path.moveTo(mFramingRect.left, mFramingRect.bottom - mCornerSize);
+        path.lineTo(mFramingRect.left, mFramingRect.bottom);
+        path.lineTo(mFramingRect.left + mCornerSize, mFramingRect.bottom);
+        canvas.drawPath(path, mCornerPaint);
+    }
+
+    /** Draws text below the framing rectangle. */
+    private void drawText(Canvas canvas) {
+        canvas.save();
+        canvas.translate(mFramingRect.left, mFramingRect.bottom + mTextTopPadding);
+        mTextLayout.draw(canvas);
+        canvas.restore();
+    }
+
+    /** Updates the framing rectangle to always be in the center of the view. */
+    private void updateFramingRect() {
+        int width = getWidth();
+        int height = getHeight();
+        mFramingRect = new Rect((width - mRectSize) / 2, (height - mRectSize) / 2,
+                mRectSize + (width - mRectSize) / 2, mRectSize + (height - mRectSize) / 2);
+    }
+}
diff --git a/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanBinder.java b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanBinder.java
new file mode 100644
index 0000000..41474ff
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanBinder.java
@@ -0,0 +1,83 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.autofill_assistant.guided_browsing.qr_code.camera_scan;
+
+import android.view.View;
+import android.widget.TextView;
+
+import org.chromium.components.autofill_assistant.guided_browsing.R;
+import org.chromium.ui.modelutil.PropertyKey;
+import org.chromium.ui.modelutil.PropertyModelChangeProcessor.ViewBinder;
+import org.chromium.ui.widget.ButtonCompat;
+
+/**
+ * This class is responsible for pushing updates to the Autofill Assistant UI for QR Code Camera
+ * Scan. These updates are pulled from the {@link AssistantQrCodeCameraScanModel} when a
+ * notification of an update is received.
+ */
+class AssistantQrCodeCameraScanBinder implements ViewBinder<AssistantQrCodeCameraScanModel,
+        AssistantQrCodeCameraScanBinder.ViewHolder, PropertyKey> {
+    /**
+     * A wrapper class that holds the different views of the QR Code Camera Scan UI.
+     */
+    static class ViewHolder {
+        private final AssistantQrCodeCameraScanView mCameraScanView;
+        private final TextView mTitleView;
+        private final View mCameraPermissionsView;
+        private final View mOpenSettingsView;
+        private final AssistantQrCodeCameraPreviewOverlay mCameraPreviewOverlay;
+
+        public ViewHolder(AssistantQrCodeCameraScanView cameraScanView) {
+            mCameraScanView = cameraScanView;
+            mTitleView = cameraScanView.getRootView().findViewById(R.id.toolbar_title);
+            mCameraPermissionsView = cameraScanView.getCameraPermissionView();
+            mOpenSettingsView = cameraScanView.getOpenSettingsView();
+            mCameraPreviewOverlay = cameraScanView.getCameraPreviewOverlay();
+        }
+    }
+
+    @Override
+    public void bind(
+            AssistantQrCodeCameraScanModel model, ViewHolder viewHolder, PropertyKey propertyKey) {
+        if (propertyKey == AssistantQrCodeCameraScanModel.DELEGATE) {
+            // Do nothing. Subsequent notifications will be sent to the new delegate.
+        } else if (propertyKey == AssistantQrCodeCameraScanModel.IS_ON_FOREGROUND) {
+            viewHolder.mCameraScanView.onForegroundChanged(
+                    model.get(AssistantQrCodeCameraScanModel.IS_ON_FOREGROUND));
+        } else if (propertyKey == AssistantQrCodeCameraScanModel.HAS_CAMERA_PERMISSION) {
+            viewHolder.mCameraScanView.cameraPermissionsChanged(
+                    model.get(AssistantQrCodeCameraScanModel.HAS_CAMERA_PERMISSION));
+        } else if (propertyKey == AssistantQrCodeCameraScanModel.CAN_PROMPT_FOR_CAMERA_PERMISSION) {
+            viewHolder.mCameraScanView.canPromptForPermissionChanged(
+                    model.get(AssistantQrCodeCameraScanModel.CAN_PROMPT_FOR_CAMERA_PERMISSION));
+        } else if (propertyKey == AssistantQrCodeCameraScanModel.TOOLBAR_TITLE) {
+            viewHolder.mTitleView.setText(model.get(AssistantQrCodeCameraScanModel.TOOLBAR_TITLE));
+        } else if (propertyKey == AssistantQrCodeCameraScanModel.PERMISSION_TEXT) {
+            TextView permissionsTextView =
+                    viewHolder.mCameraPermissionsView.findViewById(R.id.permission_text);
+            permissionsTextView.setText(model.get(AssistantQrCodeCameraScanModel.PERMISSION_TEXT));
+        } else if (propertyKey == AssistantQrCodeCameraScanModel.PERMISSION_BUTTON_TEXT) {
+            ButtonCompat permissionButton =
+                    viewHolder.mCameraPermissionsView.findViewById(R.id.permission_button);
+            permissionButton.setText(
+                    model.get(AssistantQrCodeCameraScanModel.PERMISSION_BUTTON_TEXT));
+        } else if (propertyKey == AssistantQrCodeCameraScanModel.OPEN_SETTINGS_TEXT) {
+            TextView openSettingsTextView =
+                    viewHolder.mOpenSettingsView.findViewById(R.id.permission_text);
+            openSettingsTextView.setText(
+                    model.get(AssistantQrCodeCameraScanModel.OPEN_SETTINGS_TEXT));
+        } else if (propertyKey == AssistantQrCodeCameraScanModel.OPEN_SETTINGS_BUTTON_TEXT) {
+            ButtonCompat openSettingsButton =
+                    viewHolder.mOpenSettingsView.findViewById(R.id.permission_button);
+            openSettingsButton.setText(
+                    model.get(AssistantQrCodeCameraScanModel.OPEN_SETTINGS_BUTTON_TEXT));
+        } else if (propertyKey == AssistantQrCodeCameraScanModel.OVERLAY_TITLE) {
+            viewHolder.mCameraPreviewOverlay.setTextInstructions(
+                    model.get(AssistantQrCodeCameraScanModel.OVERLAY_TITLE));
+        } else {
+            assert false : "Unhandled property detected in AssistantQrCodeCameraScanBinder!";
+        }
+    }
+}
\ No newline at end of file
diff --git a/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanCoordinator.java b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanCoordinator.java
new file mode 100644
index 0000000..02a7d06
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanCoordinator.java
@@ -0,0 +1,96 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.autofill_assistant.guided_browsing.qr_code.camera_scan;
+
+import android.content.Context;
+import android.view.View;
+
+import org.chromium.components.autofill_assistant.guided_browsing.qr_code.AssistantQrCodeDelegate;
+import org.chromium.components.autofill_assistant.guided_browsing.qr_code.utils.AssistantQrCodePermissionUtils;
+import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
+
+/**
+ * Creates and represents the QR Code camera scan UI.
+ */
+public class AssistantQrCodeCameraScanCoordinator {
+    /** Callbacks to parent dialog. */
+    public interface DialogCallbacks {
+        /** Called when component UI is to be dismissed. */
+        void dismiss();
+    }
+
+    private final Context mContext;
+    private final WindowAndroid mWindowAndroid;
+    private final AssistantQrCodeCameraScanModel mCameraScanModel;
+    private final AssistantQrCodeCameraScanView mCameraScanView;
+    private AssistantQrCodeCameraScanBinder.ViewHolder mViewHolder;
+
+    /**
+     * The AssistantQrCodeCameraScanCoordinator constructor.
+     */
+    public AssistantQrCodeCameraScanCoordinator(Context context, WindowAndroid windowAndroid,
+            AssistantQrCodeCameraScanModel cameraScanModel,
+            AssistantQrCodeCameraScanCoordinator.DialogCallbacks dialogCallbacks) {
+        mContext = context;
+        mWindowAndroid = windowAndroid;
+        mCameraScanModel = cameraScanModel;
+
+        AssistantQrCodeCameraCallbacks cameraCallbacks =
+                new AssistantQrCodeCameraCallbacks(context, cameraScanModel, dialogCallbacks);
+        mCameraScanView = new AssistantQrCodeCameraScanView(context,
+                cameraCallbacks::onPreviewFrame, cameraCallbacks::onError,
+                new AssistantQrCodeCameraScanView.Delegate() {
+                    @Override
+                    public void onScanCancelled() {
+                        AssistantQrCodeDelegate delegate =
+                                cameraScanModel.get(AssistantQrCodeCameraScanModel.DELEGATE);
+                        if (delegate != null) {
+                            delegate.onScanCancelled();
+                        }
+                        dialogCallbacks.dismiss();
+                    }
+
+                    @Override
+                    public void promptForCameraPermission() {
+                        AssistantQrCodePermissionUtils.promptForCameraPermission(
+                                windowAndroid, cameraScanModel);
+                    }
+                });
+
+        mViewHolder = new AssistantQrCodeCameraScanBinder.ViewHolder(mCameraScanView);
+        PropertyModelChangeProcessor.create(
+                cameraScanModel, mViewHolder, new AssistantQrCodeCameraScanBinder());
+
+        updatePermissionSettings();
+    }
+
+    public View getView() {
+        return mCameraScanView.getRootView();
+    }
+
+    public void resume() {
+        updatePermissionSettings();
+        mCameraScanModel.set(AssistantQrCodeCameraScanModel.IS_ON_FOREGROUND, true);
+    }
+
+    public void pause() {
+        mCameraScanModel.set(AssistantQrCodeCameraScanModel.IS_ON_FOREGROUND, false);
+    }
+
+    public void destroy() {
+        mCameraScanView.stopCamera();
+        // Explicitly clean up view holder.
+        mViewHolder = null;
+    }
+
+    /** Updates the permission settings with the latest values. */
+    private void updatePermissionSettings() {
+        mCameraScanModel.set(AssistantQrCodeCameraScanModel.HAS_CAMERA_PERMISSION,
+                AssistantQrCodePermissionUtils.hasCameraPermission(mContext));
+        mCameraScanModel.set(AssistantQrCodeCameraScanModel.CAN_PROMPT_FOR_CAMERA_PERMISSION,
+                AssistantQrCodePermissionUtils.canPromptForCameraPermission(mWindowAndroid));
+    }
+}
\ No newline at end of file
diff --git a/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanDialog.java b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanDialog.java
new file mode 100644
index 0000000..01b8acb
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanDialog.java
@@ -0,0 +1,78 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.autofill_assistant.guided_browsing.qr_code.camera_scan;
+
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.appcompat.app.AlertDialog;
+
+import org.chromium.components.autofill_assistant.guided_browsing.R;
+import org.chromium.ui.base.WindowAndroid;
+
+/**
+ * Main Dialog Fragment to trigger QR Code Camera Scan.
+ */
+public class AssistantQrCodeCameraScanDialog extends DialogFragment {
+    private Context mContext;
+    private WindowAndroid mWindowAndroid;
+    private AssistantQrCodeCameraScanModel mCameraScanModel;
+    private AssistantQrCodeCameraScanCoordinator mCameraScanCoordinator;
+
+    /**
+     * Create a new instance of {@link AssistantQrCodeCameraScanDialog}.
+     */
+    public static AssistantQrCodeCameraScanDialog newInstance(Context context,
+            WindowAndroid windowAndroid, AssistantQrCodeCameraScanModel cameraScanModel) {
+        AssistantQrCodeCameraScanDialog assistantQrCodeCameraScanDialog =
+                new AssistantQrCodeCameraScanDialog();
+        assistantQrCodeCameraScanDialog.setContext(context);
+        assistantQrCodeCameraScanDialog.setWindowAndroid(windowAndroid);
+        assistantQrCodeCameraScanDialog.setCameraScanModel(cameraScanModel);
+        return assistantQrCodeCameraScanDialog;
+    }
+
+    public void setContext(Context context) {
+        mContext = context;
+    }
+
+    public void setWindowAndroid(WindowAndroid windowAndroid) {
+        mWindowAndroid = windowAndroid;
+    }
+
+    public void setCameraScanModel(AssistantQrCodeCameraScanModel cameraScanModel) {
+        mCameraScanModel = cameraScanModel;
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        mCameraScanCoordinator = new AssistantQrCodeCameraScanCoordinator(
+                mContext, mWindowAndroid, mCameraScanModel, this::dismiss);
+        AlertDialog.Builder builder =
+                new AlertDialog.Builder(getActivity(), R.style.ThemeOverlay_BrowserUI_Fullscreen);
+        builder.setView(mCameraScanCoordinator.getView());
+        return builder.create();
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        mCameraScanCoordinator.resume();
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        mCameraScanCoordinator.pause();
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        mCameraScanCoordinator.destroy();
+    }
+}
\ No newline at end of file
diff --git a/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanModel.java b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanModel.java
new file mode 100644
index 0000000..d90aeb0
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanModel.java
@@ -0,0 +1,98 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.autofill_assistant.guided_browsing.qr_code.camera_scan;
+
+import org.chromium.components.autofill_assistant.guided_browsing.qr_code.AssistantQrCodeDelegate;
+import org.chromium.ui.modelutil.PropertyModel;
+import org.chromium.ui.modelutil.PropertyModel.WritableBooleanPropertyKey;
+
+/**
+ * State for the QR Code Camera Scan UI.
+ */
+public class AssistantQrCodeCameraScanModel extends PropertyModel {
+    /** Assistant QR Code delegate. */
+    static final WritableObjectPropertyKey<AssistantQrCodeDelegate> DELEGATE =
+            new WritableObjectPropertyKey<>();
+
+    /** Is the application in foreground. */
+    static final WritableBooleanPropertyKey IS_ON_FOREGROUND = new WritableBooleanPropertyKey();
+
+    /** Does the application has permissions to start camera. */
+    static final WritableBooleanPropertyKey HAS_CAMERA_PERMISSION =
+            new WritableBooleanPropertyKey();
+
+    /** Does the application has permissions to even prompt for camera permissions. */
+    static final WritableBooleanPropertyKey CAN_PROMPT_FOR_CAMERA_PERMISSION =
+            new WritableBooleanPropertyKey();
+
+    /** Camera Scan Toolbar Title. */
+    static final WritableObjectPropertyKey<String> TOOLBAR_TITLE =
+            new WritableObjectPropertyKey<>();
+
+    /** Camera Scan Permission Text. */
+    static final WritableObjectPropertyKey<String> PERMISSION_TEXT =
+            new WritableObjectPropertyKey<>();
+
+    /** Camera Scan Permission Button Text. */
+    static final WritableObjectPropertyKey<String> PERMISSION_BUTTON_TEXT =
+            new WritableObjectPropertyKey<>();
+
+    /** Camera Scan Open Settings Text. */
+    static final WritableObjectPropertyKey<String> OPEN_SETTINGS_TEXT =
+            new WritableObjectPropertyKey<>();
+
+    /** Camera Scan Open Settings Button Text. */
+    static final WritableObjectPropertyKey<String> OPEN_SETTINGS_BUTTON_TEXT =
+            new WritableObjectPropertyKey<>();
+
+    /** Camera Scan Preview Overlay Title. */
+    static final WritableObjectPropertyKey<String> OVERLAY_TITLE =
+            new WritableObjectPropertyKey<>();
+
+    /**
+     * The AssistantQrCodeCameraScanModel constructor.
+     */
+    public AssistantQrCodeCameraScanModel() {
+        super(DELEGATE, IS_ON_FOREGROUND, HAS_CAMERA_PERMISSION, CAN_PROMPT_FOR_CAMERA_PERMISSION,
+                TOOLBAR_TITLE, PERMISSION_TEXT, PERMISSION_BUTTON_TEXT, OPEN_SETTINGS_TEXT,
+                OPEN_SETTINGS_BUTTON_TEXT, OVERLAY_TITLE);
+    }
+
+    public void setDelegate(AssistantQrCodeDelegate delegate) {
+        set(DELEGATE, delegate);
+    }
+
+    public void setHasCameraPermission(boolean hasCameraPermission) {
+        set(HAS_CAMERA_PERMISSION, hasCameraPermission);
+    }
+
+    public void setCanPromptForCameraPermission(boolean canPromptForCameraPermission) {
+        set(CAN_PROMPT_FOR_CAMERA_PERMISSION, canPromptForCameraPermission);
+    }
+
+    public void setToolbarTitle(String text) {
+        set(TOOLBAR_TITLE, text);
+    }
+
+    public void setPermissionText(String text) {
+        set(PERMISSION_TEXT, text);
+    }
+
+    public void setPermissionButtonText(String text) {
+        set(PERMISSION_BUTTON_TEXT, text);
+    }
+
+    public void setOpenSettingsText(String text) {
+        set(OPEN_SETTINGS_TEXT, text);
+    }
+
+    public void setOpenSettingsButtonText(String text) {
+        set(OPEN_SETTINGS_BUTTON_TEXT, text);
+    }
+
+    public void setOverlayTitle(String text) {
+        set(OVERLAY_TITLE, text);
+    }
+}
\ No newline at end of file
diff --git a/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanView.java b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanView.java
new file mode 100644
index 0000000..f6e790c
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/camera_scan/AssistantQrCodeCameraScanView.java
@@ -0,0 +1,257 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.autofill_assistant.guided_browsing.qr_code.camera_scan;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.hardware.Camera.ErrorCallback;
+import android.hardware.Camera.PreviewCallback;
+import android.net.Uri;
+import android.provider.Settings;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.FrameLayout;
+
+import org.chromium.components.autofill_assistant.guided_browsing.LayoutUtils;
+import org.chromium.components.autofill_assistant.guided_browsing.R;
+import org.chromium.ui.widget.ButtonCompat;
+import org.chromium.ui.widget.ChromeImageButton;
+
+/**
+ * Manages the Android View representing the QR Code Camera scan panel.
+ */
+class AssistantQrCodeCameraScanView {
+    /** Interface used to delegate various user interactions to the coordinator. */
+    public interface Delegate {
+        /** Called when user cancels the QR Code Scanning */
+        void onScanCancelled();
+
+        /** Prompts the user for camera permissions */
+        void promptForCameraPermission();
+    }
+
+    private final Context mContext;
+    private final PreviewCallback mCameraPreviewCallback;
+    private final ErrorCallback mCameraErrorCallback;
+    private final AssistantQrCodeCameraScanView.Delegate mViewDelegate;
+
+    private final View mRootView;
+    // Will be used to update the main body of the view based on state.
+    private final FrameLayout mBodyView;
+    private final View mCameraPermissionsView;
+    private final View mOpenSettingsView;
+    private final AssistantQrCodeCameraPreviewOverlay mCameraPreviewOverlay;
+
+    private boolean mHasCameraPermission;
+    private boolean mCanPromptForPermission;
+    private boolean mIsOnForeground;
+    private AssistantQrCodeCameraPreview mCameraPreview;
+
+    /**
+     * The AssistantQrCodeCameraScanView constructor.
+     */
+    public AssistantQrCodeCameraScanView(Context context, PreviewCallback cameraPreviewCallback,
+            ErrorCallback cameraErrorCallback, AssistantQrCodeCameraScanView.Delegate delegate) {
+        mContext = context;
+        mCameraPreviewCallback = cameraPreviewCallback;
+        mCameraErrorCallback = cameraErrorCallback;
+        mViewDelegate = delegate;
+
+        mBodyView = new FrameLayout(context);
+        mRootView = createRootView();
+        mCameraPermissionsView = createCameraPermissionView();
+        mOpenSettingsView = createOpenSettingsView();
+        mCameraPreviewOverlay = new AssistantQrCodeCameraPreviewOverlay(context);
+    }
+
+    public View getRootView() {
+        return mRootView;
+    }
+
+    public View getCameraPermissionView() {
+        return mCameraPermissionsView;
+    }
+
+    public View getOpenSettingsView() {
+        return mOpenSettingsView;
+    }
+
+    public AssistantQrCodeCameraPreviewOverlay getCameraPreviewOverlay() {
+        return mCameraPreviewOverlay;
+    }
+
+    /**
+     * Creates the root view for the QR Code Camera Scan Dialog.
+     */
+    private View createRootView() {
+        View dialogView = LayoutUtils.createInflater(mContext).inflate(
+                R.layout.autofill_assistant_qr_code_camera_scan_dialog, /* root= */ null);
+
+        ChromeImageButton closeButton = dialogView.findViewById(R.id.close_button);
+        closeButton.setOnClickListener(v -> { mViewDelegate.onScanCancelled(); });
+
+        FrameLayout layout = dialogView.findViewById(R.id.qr_code_view);
+        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
+                FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
+        layout.addView(mBodyView, params);
+
+        return dialogView;
+    }
+
+    /**
+     * Creates a view that prompts the user ot provide camera permissions.
+     */
+    private View createCameraPermissionView() {
+        View cameraPermissionsView = LayoutUtils.createInflater(mContext).inflate(
+                R.layout.autofill_assistant_qr_code_camera_scan_permission_layout,
+                /* root= */ null);
+
+        ButtonCompat permissionButton = cameraPermissionsView.findViewById(R.id.permission_button);
+        permissionButton.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mViewDelegate.promptForCameraPermission();
+            }
+        });
+
+        return cameraPermissionsView;
+    }
+
+    /**
+     * Creates a view that opens the settings page for the app and allows the user to to update
+     * permissions including give the app camera permission.
+     */
+    private View createOpenSettingsView() {
+        View openSettingsView = LayoutUtils.createInflater(mContext).inflate(
+                R.layout.autofill_assistant_qr_code_camera_scan_permission_layout,
+                /* root= */ null);
+
+        ButtonCompat openSettingsButton = openSettingsView.findViewById(R.id.permission_button);
+        openSettingsButton.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent openSettingsIntent = getAppInfoIntent(mContext.getPackageName());
+                ((Activity) mContext).startActivity(openSettingsIntent);
+            }
+        });
+
+        return openSettingsView;
+    }
+
+    /**
+     * Updates on the state of the view based on the updated value of |hasCameraPermission|.
+     *
+     * @param hasCameraPermission Indicates whether camera permissions were granted.
+     */
+    public void cameraPermissionsChanged(Boolean hasCameraPermission) {
+        // No change, nothing to do here
+        if (mHasCameraPermission && hasCameraPermission) {
+            return;
+        }
+        mHasCameraPermission = hasCameraPermission;
+        updateView();
+    }
+
+    /**
+     * Updates on the state of the view based on the updated value of |canPromptForPermission|.
+     *
+     * @param canPromptForPermission Indicates whether the user can be prompted for camera
+     *            permission
+     */
+    public void canPromptForPermissionChanged(Boolean canPromptForPermission) {
+        mCanPromptForPermission = canPromptForPermission;
+        updateView();
+    }
+
+    /**
+     * Updates on the state of the view based on the updated value of |isOnForeground|.
+     *
+     * @param isOnForeground Indicates whether this component UI is currently on foreground.
+     */
+    public void onForegroundChanged(Boolean isOnForeground) {
+        mIsOnForeground = isOnForeground;
+        if (!mIsOnForeground && mCameraPreview != null) {
+            mCameraPreview.stopCamera();
+        } else {
+            updateView();
+        }
+    }
+
+    /**
+     * Update the view based on various state parameters:
+     * - app is in the foreground
+     * - user has given camera permission
+     * - user can be prompted for camera permission.
+     */
+    private void updateView() {
+        // The scan tab is not in the foreground so don't do any rendering.
+        if (!mIsOnForeground) {
+            return;
+        }
+
+        if (mHasCameraPermission && mCameraPreview != null) {
+            mCameraPreview.startCamera();
+        } else if (mHasCameraPermission && mCameraPreview == null) {
+            displayCameraPreview();
+        } else if (mCanPromptForPermission) {
+            displayCameraPermissionsView();
+        } else {
+            displayOpenSettingsView();
+        }
+    }
+
+    /**
+     * Displays the camera preview with overlay. Caller should check that we already have the
+     * camera permissions.
+     */
+    public void displayCameraPreview() {
+        mBodyView.removeAllViews();
+        stopCamera();
+
+        mCameraPreview = new AssistantQrCodeCameraPreview(
+                mContext, mCameraPreviewCallback, mCameraErrorCallback);
+        mBodyView.addView(mCameraPreview);
+        mBodyView.addView(mCameraPreviewOverlay);
+
+        mCameraPreview.startCamera();
+    }
+
+    /**
+     * Displays the permission dialog. Caller should check that the user can be prompted and hasn't
+     * permanently denied permission.
+     */
+    private void displayCameraPermissionsView() {
+        mBodyView.removeAllViews();
+        mBodyView.addView(mCameraPermissionsView);
+    }
+
+    /**
+     * Displays the open settings dialog.
+     */
+    private void displayOpenSettingsView() {
+        mBodyView.removeAllViews();
+        mBodyView.addView(mOpenSettingsView);
+    }
+
+    /**
+     * Returns an Intent to show the App Info page for the current app.
+     */
+    private Intent getAppInfoIntent(String packageName) {
+        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+        intent.setData(new Uri.Builder().scheme("package").opaquePart(packageName).build());
+        return intent;
+    }
+
+    /**
+     * Stop the camera.
+     */
+    public void stopCamera() {
+        if (mCameraPreview != null) {
+            mCameraPreview.stopCamera();
+            mCameraPreview = null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/utils/AssistantQrCodePermissionUtils.java b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/utils/AssistantQrCodePermissionUtils.java
new file mode 100644
index 0000000..61518f9
--- /dev/null
+++ b/components/autofill_assistant/guided_browsing/android/java/src/org/chromium/components/autofill_assistant/guided_browsing/qr_code/utils/AssistantQrCodePermissionUtils.java
@@ -0,0 +1,62 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.autofill_assistant.guided_browsing.qr_code.utils;
+
+import android.Manifest.permission;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Process;
+
+import org.chromium.components.autofill_assistant.guided_browsing.qr_code.camera_scan.AssistantQrCodeCameraScanModel;
+import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.permissions.PermissionCallback;
+
+/**
+ * AssistantQrCodePermissionUtils provides various utility fucnctions around permissions needed
+ * for Qr Code scanning.
+ */
+public class AssistantQrCodePermissionUtils {
+    /** Returns whether the user has granted camera permissions. */
+    public static boolean hasCameraPermission(Context context) {
+        return context.checkPermission(permission.CAMERA, Process.myPid(), Process.myUid())
+                == PackageManager.PERMISSION_GRANTED;
+    }
+
+    /** Returns whether the user can be prompted for camera permissions. */
+    public static boolean canPromptForCameraPermission(WindowAndroid windowAndroid) {
+        return windowAndroid.canRequestPermission(permission.CAMERA);
+    }
+
+    /**
+     * Prompts the user for camera permission. Processes the results and updates {@cameraScanModel}
+     * values accordingly.
+     */
+    public static void promptForCameraPermission(
+            WindowAndroid windowAndroid, AssistantQrCodeCameraScanModel cameraScanModel) {
+        final PermissionCallback callback = new PermissionCallback() {
+            // Handle the results from prompting the user for camera permission.
+            @Override
+            public void onRequestPermissionsResult(String[] permissions, int[] grantResults) {
+                // No results were produced (Does this ever happen?)
+                if (grantResults.length == 0) {
+                    return;
+                }
+                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+                    cameraScanModel.setHasCameraPermission(true);
+                } else {
+                    // The order in which these fields are important because it causes updates to
+                    // the view. CanPromptForPermission must be updated first so that it doesn't
+                    // cause the view to be updated twice creating a flicker effect.
+                    if (!windowAndroid.canRequestPermission(permission.CAMERA)) {
+                        cameraScanModel.setCanPromptForCameraPermission(false);
+                    }
+                    cameraScanModel.setHasCameraPermission(false);
+                }
+            }
+        };
+
+        windowAndroid.requestPermissions(new String[] {permission.CAMERA}, callback);
+    }
+}
diff --git a/components/autofill_payments_strings.grdp b/components/autofill_payments_strings.grdp
index d5e2fe4..c14e8b15 100644
--- a/components/autofill_payments_strings.grdp
+++ b/components/autofill_payments_strings.grdp
@@ -560,7 +560,7 @@
       Make it more secure with a virtual card?
   </message>
   <message name="IDS_AUTOFILL_VIRTUAL_CARD_ENROLLMENT_DIALOG_CONTENT_LABEL" desc="Text explaining the benefit of enrolling a credit card as a virtual card. Also contains a link to learn more about virtual cards from IDS_AUTOFILL_VIRTUAL_CARD_ENROLLMENT_LEARN_MORE_LINK_LABEL.">
-    A virtual card disguises your actual card to help protect you from potential fraud. <ph name="IDS_AUTOFILL_VIRTUAL_CARD_ENROLLMENT_LEARN_MORE_LINK_LABEL">$1<ex>Learn about virtual cards</ex></ph>
+    A virtual card hides your actual card to help protect you from potential fraud. <ph name="IDS_AUTOFILL_VIRTUAL_CARD_ENROLLMENT_LEARN_MORE_LINK_LABEL">$1<ex>Learn about virtual cards</ex></ph>
   </message>
   <message name="IDS_AUTOFILL_VIRTUAL_CARD_ENROLLMENT_DECLINE_BUTTON_LABEL_SKIP" desc="Text displayed in the decline button in the virtual card enroll bubble. It is displayed only if the bubble/infobar will still be shown again at a later date after this one is declined.">
     Skip
diff --git a/components/autofill_payments_strings_grdp/IDS_AUTOFILL_VIRTUAL_CARD_ENROLLMENT_DIALOG_CONTENT_LABEL.png.sha1 b/components/autofill_payments_strings_grdp/IDS_AUTOFILL_VIRTUAL_CARD_ENROLLMENT_DIALOG_CONTENT_LABEL.png.sha1
index c82bfa3..24c1690d 100644
--- a/components/autofill_payments_strings_grdp/IDS_AUTOFILL_VIRTUAL_CARD_ENROLLMENT_DIALOG_CONTENT_LABEL.png.sha1
+++ b/components/autofill_payments_strings_grdp/IDS_AUTOFILL_VIRTUAL_CARD_ENROLLMENT_DIALOG_CONTENT_LABEL.png.sha1
@@ -1 +1 @@
-6d220d5a0e8b42035028e8e06b251e6bfae75e74
\ No newline at end of file
+eeb8b83879e8ba5065b2acee01141f951d95ce29
\ No newline at end of file
diff --git a/components/certificate_transparency/data/log_list.json b/components/certificate_transparency/data/log_list.json
index 3d234d6..30de5698 100644
--- a/components/certificate_transparency/data/log_list.json
+++ b/components/certificate_transparency/data/log_list.json
@@ -1,6 +1,6 @@
 {
-  "version": "10.4",
-  "log_list_timestamp": "2022-06-06T12:54:11Z",
+  "version": "10.5",
+  "log_list_timestamp": "2022-06-07T12:58:08Z",
   "operators": [
     {
       "name": "Google",
diff --git a/components/commerce/content/browser/commerce_tab_helper.cc b/components/commerce/content/browser/commerce_tab_helper.cc
index e72a7d6..7339afa 100644
--- a/components/commerce/content/browser/commerce_tab_helper.cc
+++ b/components/commerce/content/browser/commerce_tab_helper.cc
@@ -32,9 +32,23 @@
     return;
   }
 
+  // Notify the service that we're no longer interested in a particular URL.
+  shopping_service_->DidNavigateAway(web_wrapper_.get(),
+                                     previous_main_frame_url_);
+  previous_main_frame_url_ = web_wrapper_->GetLastCommittedURL();
+
   shopping_service_->DidNavigatePrimaryMainFrame(web_wrapper_.get());
 }
 
+void CommerceTabHelper::DidFinishLoad(
+    content::RenderFrameHost* render_frame_host,
+    const GURL& validated_url) {
+  if (!shopping_service_)
+    return;
+
+  shopping_service_->DidFinishLoad(web_wrapper_.get());
+}
+
 void CommerceTabHelper::WebContentsDestroyed() {
   if (shopping_service_)
     shopping_service_->WebWrapperDestroyed(web_wrapper_.get());
diff --git a/components/commerce/content/browser/commerce_tab_helper.h b/components/commerce/content/browser/commerce_tab_helper.h
index f223918..35f2c0dd 100644
--- a/components/commerce/content/browser/commerce_tab_helper.h
+++ b/components/commerce/content/browser/commerce_tab_helper.h
@@ -17,6 +17,7 @@
 
 namespace content {
 class NavigationHandle;
+class RenderFrameHost;
 class WebContents;
 }  // namespace content
 
@@ -37,6 +38,9 @@
   void DidFinishNavigation(
       content::NavigationHandle* navigation_handle) override;
 
+  void DidFinishLoad(content::RenderFrameHost* render_frame_host,
+                     const GURL& validated_url) override;
+
   void WebContentsDestroyed() override;
 
  private:
@@ -53,6 +57,12 @@
 
   raw_ptr<ShoppingService> shopping_service_;
 
+  // The url from the previous successful main frame navigation. This will be
+  // empty if this is the first navigation for this tab or post-restart. We keep
+  // track of this because the URL kepkt by the backing WebContents will have
+  // changed before we get the signal for it.
+  GURL previous_main_frame_url_;
+
   WEB_CONTENTS_USER_DATA_KEY_DECL();
 };
 
diff --git a/components/commerce/core/shopping_service.cc b/components/commerce/core/shopping_service.cc
index 00cf2263..9564552 100644
--- a/components/commerce/core/shopping_service.cc
+++ b/components/commerce/core/shopping_service.cc
@@ -10,7 +10,6 @@
 
 #include "base/bind.h"
 #include "base/feature_list.h"
-#include "base/logging.h"
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/commerce/core/commerce_feature_list.h"
 #include "components/commerce/core/metrics/metrics_utils.h"
@@ -25,6 +24,8 @@
 namespace commerce {
 
 ProductInfo::ProductInfo() = default;
+ProductInfo::ProductInfo(const ProductInfo&) = default;
+ProductInfo& ProductInfo::operator=(const ProductInfo&) = default;
 ProductInfo::~ProductInfo() = default;
 MerchantInfo::MerchantInfo() = default;
 MerchantInfo::MerchantInfo(MerchantInfo&&) = default;
@@ -70,22 +71,100 @@
 void ShoppingService::WebWrapperCreated(WebWrapper* web) {}
 
 void ShoppingService::DidNavigatePrimaryMainFrame(WebWrapper* web) {
-  // Record metrics about the page navigation if allowed.
-  if (IsPDPMetricsRecordingEnabled() && opt_guide_) {
+  if (opt_guide_ &&
+      (IsProductInfoApiEnabled() || IsPDPMetricsRecordingEnabled())) {
+    UpdateProductInfoCacheForInsertion(web->GetLastCommittedURL());
+
     opt_guide_->CanApplyOptimization(
         web->GetLastCommittedURL(),
         optimization_guide::proto::OptimizationType::PRICE_TRACKING,
-        base::BindOnce(&ShoppingService::PDPMetricsCallback,
-                       weak_ptr_factory_.GetWeakPtr(), web->IsOffTheRecord()));
+        base::BindOnce(
+            [](base::WeakPtr<ShoppingService> service, const GURL& url,
+               bool is_off_the_record,
+               optimization_guide::OptimizationGuideDecision decision,
+               const optimization_guide::OptimizationMetadata& metadata) {
+              service->HandleOptGuideProductInfoResponse(
+                  url,
+                  base::BindOnce(
+                      [](const GURL&, const absl::optional<ProductInfo>&) {}),
+                  decision, metadata);
+
+              service->PDPMetricsCallback(is_off_the_record, decision,
+                                          metadata);
+            },
+            weak_ptr_factory_.GetWeakPtr(), web->GetLastCommittedURL(),
+            web->IsOffTheRecord()));
   }
 }
 
-void ShoppingService::WebWrapperDestroyed(WebWrapper* web) {}
+void ShoppingService::DidNavigateAway(WebWrapper* web, const GURL& from_url) {
+  UpdateProductInfoCacheForRemoval(from_url);
+}
+
+void ShoppingService::DidFinishLoad(WebWrapper* web) {}
+
+void ShoppingService::WebWrapperDestroyed(WebWrapper* web) {
+  UpdateProductInfoCacheForRemoval(web->GetLastCommittedURL());
+}
+
+void ShoppingService::UpdateProductInfoCacheForInsertion(const GURL& url) {
+  if (!IsProductInfoApiEnabled())
+    return;
+
+  auto it = product_info_cache_.find(url.spec());
+  if (it != product_info_cache_.end()) {
+    std::get<0>(it->second) = std::get<0>(it->second) + 1;
+  } else {
+    product_info_cache_[url.spec()] = std::make_tuple(1, false, nullptr);
+    std::get<2>(product_info_cache_[url.spec()]).reset();
+  }
+}
+
+void ShoppingService::UpdateProductInfoCache(
+    const GURL& url,
+    bool needs_js,
+    std::unique_ptr<ProductInfo> info) {
+  auto it = product_info_cache_.find(url.spec());
+  if (it == product_info_cache_.end())
+    return;
+
+  int count = std::get<0>(it->second);
+  product_info_cache_[url.spec()] =
+      std::make_tuple(count, needs_js, std::move(info));
+}
+
+const ProductInfo* ShoppingService::GetFromProductInfoCache(const GURL& url) {
+  auto it = product_info_cache_.find(url.spec());
+  if (it == product_info_cache_.end())
+    return nullptr;
+
+  return std::get<2>(it->second).get();
+}
+
+void ShoppingService::UpdateProductInfoCacheForRemoval(const GURL& url) {
+  if (!IsProductInfoApiEnabled())
+    return;
+
+  // Check if the previously navigated URL cache needs to be cleared. If more
+  // than one tab was open with the same URL, keep it in the cache but decrement
+  // the internal count.
+  auto it = product_info_cache_.find(url.spec());
+  if (it != product_info_cache_.end()) {
+    if (std::get<0>(it->second) <= 1) {
+      product_info_cache_.erase(it);
+    } else {
+      std::get<0>(it->second) = std::get<0>(it->second) - 1;
+    }
+  }
+}
 
 void ShoppingService::PDPMetricsCallback(
     bool is_off_the_record,
     optimization_guide::OptimizationGuideDecision decision,
     const optimization_guide::OptimizationMetadata& metadata) {
+  if (!IsPDPMetricsRecordingEnabled())
+    return;
+
   metrics::RecordPDPStateForNavigation(decision, metadata, pref_service_,
                                        is_off_the_record);
 }
@@ -98,6 +177,15 @@
   // Crash if this API is used without a valid experiment.
   CHECK(IsProductInfoApiEnabled());
 
+  const ProductInfo* cachedInfo = GetFromProductInfoCache(url);
+  if (cachedInfo) {
+    absl::optional<ProductInfo> info;
+    // Make a copy based on the cached value.
+    info.emplace(*cachedInfo);
+    std::move(callback).Run(url, info);
+    return;
+  }
+
   opt_guide_->CanApplyOptimization(
       url, optimization_guide::proto::OptimizationType::PRICE_TRACKING,
       base::BindOnce(&ShoppingService::HandleOptGuideProductInfoResponse,
@@ -136,6 +224,9 @@
     ProductInfoCallback callback,
     optimization_guide::OptimizationGuideDecision decision,
     const optimization_guide::OptimizationMetadata& metadata) {
+  if (!IsProductInfoApiEnabled())
+    return;
+
   // If optimization guide returns negative, return a negative signal with an
   // empty data object.
   if (decision != optimization_guide::OptimizationGuideDecision::kTrue) {
@@ -143,7 +234,7 @@
     return;
   }
 
-  absl::optional<ProductInfo> info;
+  std::unique_ptr<ProductInfo> info = nullptr;
 
   if (metadata.any_metadata().has_value()) {
     absl::optional<commerce::PriceTrackingData> parsed_any =
@@ -153,7 +244,7 @@
     if (parsed_any.has_value() && price_data.IsInitialized()) {
       commerce::BuyableProduct buyable_product = price_data.buyable_product();
 
-      info.emplace();
+      info = std::make_unique<ProductInfo>();
 
       if (buyable_product.has_title())
         info->title = buyable_product.title();
@@ -177,7 +268,15 @@
     }
   }
 
-  std::move(callback).Run(url, info);
+  absl::optional<ProductInfo> optional_info;
+  if (info) {
+    optional_info.emplace(*info);
+    UpdateProductInfoCache(url, true, std::move(info));
+  }
+
+  // TODO(mdjones): Longer-term it probably makes sense to wait until the
+  // javascript has run to execute this.
+  std::move(callback).Run(url, optional_info);
 }
 
 void ShoppingService::HandleOptGuideMerchantInfoResponse(
diff --git a/components/commerce/core/shopping_service.h b/components/commerce/core/shopping_service.h
index 96ec97e..6e911bbc 100644
--- a/components/commerce/core/shopping_service.h
+++ b/components/commerce/core/shopping_service.h
@@ -5,8 +5,10 @@
 #ifndef COMPONENTS_COMMERCE_CORE_SHOPPING_SERVICE_H_
 #define COMPONENTS_COMMERCE_CORE_SHOPPING_SERVICE_H_
 
+#include <map>
 #include <memory>
 #include <string>
+#include <tuple>
 
 #include "base/callback.h"
 #include "base/memory/raw_ptr.h"
@@ -38,8 +40,8 @@
 // Information returned by the product info APIs.
 struct ProductInfo {
   ProductInfo();
-  ProductInfo(const ProductInfo&) = delete;
-  ProductInfo& operator=(const ProductInfo&) = delete;
+  ProductInfo(const ProductInfo&);
+  ProductInfo& operator=(const ProductInfo&);
   ~ProductInfo();
 
   std::string title;
@@ -104,15 +106,26 @@
   // corresponds to a user creating a tab.
   void WebWrapperCreated(WebWrapper* web);
 
-  // A notification that a web wrapper finished a navigation in the primary
-  // main frame.
-  void DidNavigatePrimaryMainFrame(WebWrapper* web);
-
   // A notification that a WebWrapper has been destroyed. This signals that the
   // web page backing the provided WebWrapper is about to be destroyed.
   // Typically corresponds to a user closing a tab.
   void WebWrapperDestroyed(WebWrapper* web);
 
+ private:
+  // Allow tests to access private methods.
+  friend class ShoppingServiceTestBase;
+
+  // A notification that a web wrapper finished a navigation in the primary
+  // main frame.
+  void DidNavigatePrimaryMainFrame(WebWrapper* web);
+
+  // A notification that the user navigated away from the |from_url|.
+  void DidNavigateAway(WebWrapper* web, const GURL& from_url);
+
+  // A notification that the provided web wrapper has finished loading its main
+  // frame.
+  void DidFinishLoad(WebWrapper* web);
+
   // Whether APIs like |GetProductInfoForURL| are enabled and allowed to be
   // used.
   bool IsProductInfoApiEnabled();
@@ -144,6 +157,21 @@
       optimization_guide::OptimizationGuideDecision decision,
       const optimization_guide::OptimizationMetadata& metadata);
 
+  // Update the cache notifying that a tab is on the specified URL.
+  void UpdateProductInfoCacheForInsertion(const GURL& url);
+
+  // Update the data stored in the cache.
+  void UpdateProductInfoCache(const GURL& url,
+                              bool needs_js,
+                              std::unique_ptr<ProductInfo> info);
+
+  // Get the data stored in the cache or nullptr if none exists.
+  const ProductInfo* GetFromProductInfoCache(const GURL& url);
+
+  // Update the cache storing product info for a navigation away from the
+  // provided URL or closing of a tab.
+  void UpdateProductInfoCacheForRemoval(const GURL& url);
+
   // A handle to optimization guide for information about URLs that have
   // recently been navigated to.
   raw_ptr<optimization_guide::NewOptimizationGuideDecider> opt_guide_;
@@ -155,6 +183,13 @@
   // BookmarkModel is provided to the service.
   std::unique_ptr<ShoppingBookmarkModelObserver> shopping_bookmark_observer_;
 
+  // This is a cache that maps URL to a tuple of number of web wrappers the URL
+  // is open in, whether the javascript fallback needs to run, and the product
+  // info associated with the URL, so: <count, run_js, info>.
+  std::unordered_map<std::string,
+                     std::tuple<uint32_t, bool, std::unique_ptr<ProductInfo>>>
+      product_info_cache_;
+
   base::WeakPtrFactory<ShoppingService> weak_ptr_factory_;
 };
 
diff --git a/components/commerce/core/shopping_service_test_base.cc b/components/commerce/core/shopping_service_test_base.cc
index 82a39942..dbddc3a 100644
--- a/components/commerce/core/shopping_service_test_base.cc
+++ b/components/commerce/core/shopping_service_test_base.cc
@@ -161,4 +161,26 @@
   shopping_service_->DidNavigatePrimaryMainFrame(web);
 }
 
+void ShoppingServiceTestBase::DidNavigateAway(WebWrapper* web,
+                                              const GURL& url) {
+  shopping_service_->DidNavigateAway(web, url);
+}
+
+void ShoppingServiceTestBase::WebWrapperDestroyed(WebWrapper* web) {
+  shopping_service_->WebWrapperDestroyed(web);
+}
+
+int ShoppingServiceTestBase::GetProductInfoCacheOpenURLCount(const GURL& url) {
+  auto it = shopping_service_->product_info_cache_.find(url.spec());
+  if (it == shopping_service_->product_info_cache_.end())
+    return 0;
+
+  return std::get<0>(it->second);
+}
+
+const ProductInfo* ShoppingServiceTestBase::GetFromProductInfoCache(
+    const GURL& url) {
+  return shopping_service_->GetFromProductInfoCache(url);
+}
+
 }  // namespace commerce
diff --git a/components/commerce/core/shopping_service_test_base.h b/components/commerce/core/shopping_service_test_base.h
index fe845b7a..80fdfe26 100644
--- a/components/commerce/core/shopping_service_test_base.h
+++ b/components/commerce/core/shopping_service_test_base.h
@@ -115,8 +115,17 @@
 
   void TestBody() override;
 
-  // A direct proxy to the same method in the ShoppingService class.
+  // A direct proxies to the same methods in the ShoppingService class.
   void DidNavigatePrimaryMainFrame(WebWrapper* web);
+  void DidNavigateAway(WebWrapper* web, const GURL& url);
+  void WebWrapperDestroyed(WebWrapper* web);
+
+  // Get the count of the number of tabs a particular URL is open in from the
+  // product info cache.
+  int GetProductInfoCacheOpenURLCount(const GURL& url);
+
+  // Get the item in the product info cache if it exists.
+  const ProductInfo* GetFromProductInfoCache(const GURL& url);
 
  protected:
   std::unique_ptr<bookmarks::BookmarkModel> bookmark_model_;
diff --git a/components/commerce/core/shopping_service_unittest.cc b/components/commerce/core/shopping_service_unittest.cc
index d78c3685..60db5b7 100644
--- a/components/commerce/core/shopping_service_unittest.cc
+++ b/components/commerce/core/shopping_service_unittest.cc
@@ -103,6 +103,107 @@
   ASSERT_TRUE(callback_executed);
 }
 
+// Test that the product info cache only keeps track of live tabs.
+TEST_F(ShoppingServiceTest, TestProductInfoCacheURLCount) {
+  base::test::ScopedFeatureList test_features;
+  test_features.InitAndEnableFeature(commerce::kShoppingList);
+
+  std::string url = "http://example.com/foo";
+  MockWebWrapper web1(GURL(url), false);
+  MockWebWrapper web2(GURL(url), false);
+
+  std::string url2 = "http://example.com/bar";
+  MockWebWrapper web3(GURL(url2), false);
+
+  // Ensure navigating to then navigating away clears the cache item.
+  ASSERT_EQ(0, GetProductInfoCacheOpenURLCount(GURL(url)));
+  DidNavigatePrimaryMainFrame(&web1);
+  ASSERT_EQ(1, GetProductInfoCacheOpenURLCount(GURL(url)));
+  DidNavigateAway(&web1, GURL(url));
+  ASSERT_EQ(0, GetProductInfoCacheOpenURLCount(GURL(url)));
+
+  // Ensure navigating to a URL in multiple "tabs" retains the cached item until
+  // both are navigated away.
+  ASSERT_EQ(0, GetProductInfoCacheOpenURLCount(GURL(url)));
+  DidNavigatePrimaryMainFrame(&web1);
+  DidNavigatePrimaryMainFrame(&web2);
+  ASSERT_EQ(2, GetProductInfoCacheOpenURLCount(GURL(url)));
+  DidNavigateAway(&web1, GURL(url));
+  ASSERT_EQ(1, GetProductInfoCacheOpenURLCount(GURL(url)));
+  DidNavigateAway(&web2, GURL(url));
+  ASSERT_EQ(0, GetProductInfoCacheOpenURLCount(GURL(url)));
+
+  // Make sure more than one entry can be in the cache.
+  ASSERT_EQ(0, GetProductInfoCacheOpenURLCount(GURL(url)));
+  ASSERT_EQ(0, GetProductInfoCacheOpenURLCount(GURL(url2)));
+  DidNavigatePrimaryMainFrame(&web1);
+  DidNavigatePrimaryMainFrame(&web3);
+  ASSERT_EQ(1, GetProductInfoCacheOpenURLCount(GURL(url)));
+  ASSERT_EQ(1, GetProductInfoCacheOpenURLCount(GURL(url2)));
+
+  // Simulate closing the browser to ensure the cache is emptied.
+  WebWrapperDestroyed(&web1);
+  WebWrapperDestroyed(&web2);
+  WebWrapperDestroyed(&web3);
+
+  ASSERT_EQ(0, GetProductInfoCacheOpenURLCount(GURL(url)));
+  ASSERT_EQ(0, GetProductInfoCacheOpenURLCount(GURL(url2)));
+}
+
+// Test that product info is inserted into the cache without a client
+// necessarily querying for it.
+TEST_F(ShoppingServiceTest, TestProductInfoCacheFullLifecycle) {
+  base::test::ScopedFeatureList test_features;
+  test_features.InitAndEnableFeature(commerce::kShoppingList);
+
+  MockWebWrapper web(GURL(kProductUrl), false);
+
+  OptimizationMetadata meta = opt_guide_->BuildPriceTrackingResponse(
+      kTitle, kImageUrl, kOfferId, kClusterId, kCountryCode);
+
+  opt_guide_->SetResponse(GURL(kProductUrl), OptimizationType::PRICE_TRACKING,
+                          OptimizationGuideDecision::kTrue, meta);
+
+  DidNavigatePrimaryMainFrame(&web);
+
+  // By this point there should be something in the cache.
+  ASSERT_EQ(1, GetProductInfoCacheOpenURLCount(GURL(kProductUrl)));
+
+  // We should be able to access the cached data.
+  const ProductInfo* cached_info = GetFromProductInfoCache(GURL(kProductUrl));
+  ASSERT_EQ(kTitle, cached_info->title);
+  ASSERT_EQ(kImageUrl, cached_info->image_url);
+  ASSERT_EQ(kOfferId, cached_info->offer_id);
+  ASSERT_EQ(kClusterId, cached_info->product_cluster_id);
+  ASSERT_EQ(kCountryCode, cached_info->country_code);
+
+  // The main API should still work.
+  bool callback_executed = false;
+  shopping_service_->GetProductInfoForUrl(
+      GURL(kProductUrl), base::BindOnce(
+                             [](bool* callback_executed, const GURL& url,
+                                const absl::optional<ProductInfo>& info) {
+                               ASSERT_EQ(kProductUrl, url.spec());
+                               ASSERT_TRUE(info.has_value());
+
+                               ASSERT_EQ(kTitle, info->title);
+                               ASSERT_EQ(kImageUrl, info->image_url);
+                               ASSERT_EQ(kOfferId, info->offer_id);
+                               ASSERT_EQ(kClusterId, info->product_cluster_id);
+                               ASSERT_EQ(kCountryCode, info->country_code);
+                               *callback_executed = true;
+                             },
+                             &callback_executed));
+
+  // Make sure the callback was actually run. In testing the callback is run
+  // immediately, this check ensures that is actually the case.
+  ASSERT_TRUE(callback_executed);
+
+  // Close the "tab" and make sure the cache is empty.
+  WebWrapperDestroyed(&web);
+  ASSERT_EQ(0, GetProductInfoCacheOpenURLCount(GURL(kProductUrl)));
+}
+
 // Test that merchant info is processed correctly.
 TEST_F(ShoppingServiceTest, TestMerchantInfoResponse) {
   // Ensure a feature that uses merchant info is enabled.
diff --git a/components/commerce/ios/browser/commerce_tab_helper.h b/components/commerce/ios/browser/commerce_tab_helper.h
index 013eb4ca..ecc6e66 100644
--- a/components/commerce/ios/browser/commerce_tab_helper.h
+++ b/components/commerce/ios/browser/commerce_tab_helper.h
@@ -41,6 +41,10 @@
   void DidFinishNavigation(web::WebState* web_state,
                            web::NavigationContext* navigation_context) override;
 
+  void PageLoaded(
+      web::WebState* web_state,
+      web::PageLoadCompletionStatus load_completion_status) override;
+
   void WebStateDestroyed(web::WebState* web_state) override;
 
  private:
@@ -60,6 +64,12 @@
   base::ScopedObservation<web::WebState, web::WebStateObserver>
       scoped_observation_{this};
 
+  // The url from the previous successful main frame navigation. This will be
+  // empty if this is the first navigation for this tab or post-restart. We keep
+  // track of this because the URL kepkt by the backing WebContents will have
+  // changed before we get the signal for it.
+  GURL previous_main_frame_url_;
+
   WEB_STATE_USER_DATA_KEY_DECL();
 };
 
diff --git a/components/commerce/ios/browser/commerce_tab_helper.mm b/components/commerce/ios/browser/commerce_tab_helper.mm
index 356f8ea..6fcd603 100644
--- a/components/commerce/ios/browser/commerce_tab_helper.mm
+++ b/components/commerce/ios/browser/commerce_tab_helper.mm
@@ -46,9 +46,23 @@
     return;
   }
 
+  // Notify the service that we're no longer interested in a particular URL.
+  shopping_service_->DidNavigateAway(web_wrapper_.get(),
+                                     previous_main_frame_url_);
+  previous_main_frame_url_ = web_wrapper_->GetLastCommittedURL();
+
   shopping_service_->DidNavigatePrimaryMainFrame(web_wrapper_.get());
 }
 
+void CommerceTabHelper::PageLoaded(
+    web::WebState* web_state,
+    web::PageLoadCompletionStatus load_completion_status) {
+  if (!shopping_service_)
+    return;
+
+  shopping_service_->DidFinishLoad(web_wrapper_.get());
+}
+
 void CommerceTabHelper::WebStateDestroyed(web::WebState* web_state) {
   if (shopping_service_)
     shopping_service_->WebWrapperDestroyed(web_wrapper_.get());
diff --git a/components/component_updater/installer_policies/BUILD.gn b/components/component_updater/installer_policies/BUILD.gn
index aff6966..7b5328c 100644
--- a/components/component_updater/installer_policies/BUILD.gn
+++ b/components/component_updater/installer_policies/BUILD.gn
@@ -24,6 +24,8 @@
     "safety_tips_component_installer.h",
     "trust_token_key_commitments_component_installer_policy.cc",
     "trust_token_key_commitments_component_installer_policy.h",
+    "url_param_classification_component_installer.cc",
+    "url_param_classification_component_installer.h",
   ]
 
   deps = [
@@ -33,6 +35,8 @@
     "//components/prefs:prefs",
     "//components/reputation/core",
     "//components/reputation/core:proto",
+    "//components/url_param_filter/core:core",
+    "//components/url_param_filter/core:url_param_filter_classification_proto",
   ]
 
   # Disallow depending on content.
@@ -62,6 +66,7 @@
     "autofill_states_component_installer_unittest.cc",
     "optimization_hints_component_installer_unittest.cc",
     "trust_token_key_commitments_component_installer_policy_unittest.cc",
+    "url_param_classification_component_installer_unittest.cc",
   ]
 
   deps = [
@@ -71,6 +76,9 @@
     "//components/autofill/core/browser:test_support",
     "//components/component_updater:test_support",
     "//components/optimization_guide/core",
+    "//components/url_param_filter/core:core",
+    "//components/url_param_filter/core:test_support",
+    "//components/url_param_filter/core:url_param_filter_classification_proto",
     "//services/network/public/cpp",
     "//testing/gmock",
     "//testing/gtest",
diff --git a/components/component_updater/installer_policies/DEPS b/components/component_updater/installer_policies/DEPS
index 8c299adc..a327ea6 100644
--- a/components/component_updater/installer_policies/DEPS
+++ b/components/component_updater/installer_policies/DEPS
@@ -6,5 +6,6 @@
   "+components/optimization_guide/core",
   "+components/prefs",
   "+components/reputation/core",
+  "+components/url_param_filter/core",
   "+services/network/public",
 ]
diff --git a/chrome/browser/component_updater/url_param_classification_component_installer.cc b/components/component_updater/installer_policies/url_param_classification_component_installer.cc
similarity index 96%
rename from chrome/browser/component_updater/url_param_classification_component_installer.cc
rename to components/component_updater/installer_policies/url_param_classification_component_installer.cc
index 0ccf4eb..adf0bff 100644
--- a/chrome/browser/component_updater/url_param_classification_component_installer.cc
+++ b/components/component_updater/installer_policies/url_param_classification_component_installer.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/component_updater/url_param_classification_component_installer.h"
+#include "components/component_updater/installer_policies/url_param_classification_component_installer.h"
 
 #include "base/bind.h"
 #include "base/callback.h"
@@ -18,7 +18,6 @@
 #include "components/component_updater/component_updater_paths.h"
 #include "components/url_param_filter/core/features.h"
 #include "components/url_param_filter/core/url_param_classifications_loader.h"
-#include "content/public/browser/browser_task_traits.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
 using component_updater::ComponentUpdateService;
@@ -114,7 +113,6 @@
     const base::Version& version,
     const base::FilePath& install_dir,
     base::Value manifest) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   VLOG(1) << "Component ready, version " << version.GetString() << " in "
           << install_dir.value();
   // Given BEST_EFFORT since we don't need to be USER_BLOCKING.
@@ -218,7 +216,6 @@
 }
 
 void RegisterUrlParamClassificationComponent(ComponentUpdateService* cus) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   // Register the component even if feature isn't enabled so that when it is
   // enabled in the future, the component is already installed.
   VLOG(1) << "Registering Url Param Classifications component.";
diff --git a/chrome/browser/component_updater/url_param_classification_component_installer.h b/components/component_updater/installer_policies/url_param_classification_component_installer.h
similarity index 91%
rename from chrome/browser/component_updater/url_param_classification_component_installer.h
rename to components/component_updater/installer_policies/url_param_classification_component_installer.h
index f0603574c..871ea36 100644
--- a/chrome/browser/component_updater/url_param_classification_component_installer.h
+++ b/components/component_updater/installer_policies/url_param_classification_component_installer.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_COMPONENT_UPDATER_URL_PARAM_CLASSIFICATION_COMPONENT_INSTALLER_H_
-#define CHROME_BROWSER_COMPONENT_UPDATER_URL_PARAM_CLASSIFICATION_COMPONENT_INSTALLER_H_
+#ifndef COMPONENTS_COMPONENT_UPDATER_INSTALLER_POLICIES_URL_PARAM_CLASSIFICATION_COMPONENT_INSTALLER_H_
+#define COMPONENTS_COMPONENT_UPDATER_INSTALLER_POLICIES_URL_PARAM_CLASSIFICATION_COMPONENT_INSTALLER_H_
 
 #include "base/callback.h"
 #include "base/files/file_path.h"
@@ -88,4 +88,4 @@
 
 }  // namespace component_updater
 
-#endif  // CHROME_BROWSER_COMPONENT_UPDATER_URL_PARAM_CLASSIFICATION_COMPONENT_INSTALLER_H_
+#endif  // COMPONENTS_COMPONENT_UPDATER_INSTALLER_POLICIES_URL_PARAM_CLASSIFICATION_COMPONENT_INSTALLER_H_
diff --git a/chrome/browser/component_updater/url_param_classification_component_installer_unittest.cc b/components/component_updater/installer_policies/url_param_classification_component_installer_unittest.cc
similarity index 97%
rename from chrome/browser/component_updater/url_param_classification_component_installer_unittest.cc
rename to components/component_updater/installer_policies/url_param_classification_component_installer_unittest.cc
index 7fd3859..883c35f 100644
--- a/chrome/browser/component_updater/url_param_classification_component_installer_unittest.cc
+++ b/components/component_updater/installer_policies/url_param_classification_component_installer_unittest.cc
@@ -2,7 +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/component_updater/url_param_classification_component_installer.h"
+#include "components/component_updater/installer_policies/url_param_classification_component_installer.h"
+
 #include <memory>
 
 #include "base/check.h"
@@ -13,13 +14,13 @@
 #include "base/test/bind.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
+#include "base/test/task_environment.h"
 #include "base/version.h"
 #include "components/component_updater/mock_component_updater_service.h"
 #include "components/url_param_filter/core/features.h"
 #include "components/url_param_filter/core/url_param_classifications_loader.h"
 #include "components/url_param_filter/core/url_param_filter_classification.pb.h"
 #include "components/url_param_filter/core/url_param_filter_test_helper.h"
-#include "content/public/test/browser_task_environment.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -98,7 +99,7 @@
 
 TEST_P(UrlParamClassificationComponentInstallerFeatureAgnosticTest,
        ComponentRegistered) {
-  content::BrowserTaskEnvironment task_env;
+  base::test::TaskEnvironment task_env;
   auto service =
       std::make_unique<component_updater::MockComponentUpdateService>();
 
@@ -237,7 +238,7 @@
 
 TEST_F(UrlParamClassificationComponentInstallerTest,
        FeatureEnabled_ComponentReady_FiresCallback) {
-  content::BrowserTaskEnvironment task_env;
+  base::test::TaskEnvironment task_env;
   base::test::ScopedFeatureList scoped_list;
 
   scoped_list.InitAndEnableFeatureWithParameters(
@@ -272,7 +273,7 @@
 
 TEST_F(UrlParamClassificationComponentInstallerTest,
        FeatureDisabled_ComponentReady_DoesntFireCallback) {
-  content::BrowserTaskEnvironment task_env;
+  base::test::TaskEnvironment task_env;
   base::test::ScopedFeatureList scoped_list;
   scoped_list.InitAndDisableFeature(
       url_param_filter::features::kIncognitoParamFilterEnabled);
diff --git a/components/content_settings/core/common/content_settings_pattern_parser.cc b/components/content_settings/core/common/content_settings_pattern_parser.cc
index d033ac8..0160a91 100644
--- a/components/content_settings/core/common/content_settings_pattern_parser.cc
+++ b/components/content_settings/core/common/content_settings_pattern_parser.cc
@@ -168,8 +168,8 @@
       builder->WithPortWildcard();
     } else {
       // Check if the port string represents a valid port.
-      for (size_t i = 0; i < port_piece.size(); ++i) {
-        if (!base::IsAsciiDigit(port_piece[i])) {
+      for (const auto port_char : port_piece) {
+        if (!base::IsAsciiDigit(port_char)) {
           builder->Invalid();
           return;
         }
@@ -177,11 +177,11 @@
       // TODO(markusheintz): Check port range.
       builder->WithPort(std::string(port_piece));
     }
-  } else {
-    if (!ContentSettingsPattern::IsNonWildcardDomainNonPortScheme(
-            scheme_piece) &&
-        !base::LowerCaseEqualsASCII(scheme_piece, url::kFileScheme))
-      builder->WithPortWildcard();
+  } else if (!ContentSettingsPattern::IsNonWildcardDomainNonPortScheme(
+                 scheme_piece) &&
+             !base::EqualsCaseInsensitiveASCII(scheme_piece,
+                                               url::kFileScheme)) {
+    builder->WithPortWildcard();
   }
 
   if (!path_piece.empty()) {
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java
index eb5505c..8451ae7 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java
@@ -1151,6 +1151,7 @@
     @SmallTest
     @Feature({"Cronet"})
     @OnlyRunNativeCronet
+    @DisabledTest(message = "crbug.com/1334040")
     public void testSimpleGetBufferUpdates() throws Exception {
         TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCallback();
         callback.setAutoAdvance(false);
diff --git a/components/page_info_strings.grdp b/components/page_info_strings.grdp
index 7a28dbdc2..ba348e7 100644
--- a/components/page_info_strings.grdp
+++ b/components/page_info_strings.grdp
@@ -698,12 +698,6 @@
   <message name="IDS_PAGE_INFO_ABOUT_THIS_SITE_SUBPAGE_FROM_LABEL" desc="The label containing the source of the description in the 'About this site' subpage in Page Info bubble.">
     From <ph name="SOURCE_NAME">$1<ex>Wikipedia</ex></ph>
   </message>
-  <message name="IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE" desc="Link in page info to learn more about the current page. Opens a website with details on the source and more information about the topic of a site.">
-    More about this page
-  </message>
-  <message name="IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE_TOOLTIP" desc="Tooltip for link in page info to learn more about the current page. Opens a website with details on the source and more information about the topic of a site.">
-    Show more information about this page
-  </message>
   <!-- History strings -->
   <message name="IDS_PAGE_INFO_HISTORY" desc="The button label of the 'History' row in Page Info bubble. The button opens history page for the site.">
     History
diff --git a/components/page_info_strings_grdp/IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE.png.sha1 b/components/page_info_strings_grdp/IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE.png.sha1
deleted file mode 100644
index a92aae70..0000000
--- a/components/page_info_strings_grdp/IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-719e459afea77fb0056a9562c8f4fc903837e45d
\ No newline at end of file
diff --git a/components/page_info_strings_grdp/IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE_TOOLTIP.png.sha1 b/components/page_info_strings_grdp/IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE_TOOLTIP.png.sha1
deleted file mode 100644
index 5dff7db7..0000000
--- a/components/page_info_strings_grdp/IDS_PAGE_INFO_MORE_ABOUT_THIS_PAGE_TOOLTIP.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-5f8154d5b0582227999ef006cfcaa4e58a92e757
\ No newline at end of file
diff --git a/components/password_manager/core/browser/ui/credential_ui_entry.cc b/components/password_manager/core/browser/ui/credential_ui_entry.cc
index 4b08a2ca..c047f15 100644
--- a/components/password_manager/core/browser/ui/credential_ui_entry.cc
+++ b/components/password_manager/core/browser/ui/credential_ui_entry.cc
@@ -34,6 +34,14 @@
 CredentialUIEntry& CredentialUIEntry::operator=(CredentialUIEntry&& other) =
     default;
 
+bool CredentialUIEntry::IsLeaked() const {
+  return password_issues.contains(InsecureType::kLeaked);
+}
+
+bool CredentialUIEntry::IsPhished() const {
+  return password_issues.contains(InsecureType::kPhished);
+}
+
 bool operator==(const CredentialUIEntry& lhs, const CredentialUIEntry& rhs) {
   return lhs.key() == rhs.key();
 }
diff --git a/components/password_manager/core/browser/ui/credential_ui_entry.h b/components/password_manager/core/browser/ui/credential_ui_entry.h
index da72546..b55f322 100644
--- a/components/password_manager/core/browser/ui/credential_ui_entry.h
+++ b/components/password_manager/core/browser/ui/credential_ui_entry.h
@@ -20,6 +20,13 @@
 // construction from PasswordForm for convenience. A single entry might
 // correspond to multiple PasswordForms.
 struct CredentialUIEntry {
+  struct Less {
+    bool operator()(const CredentialUIEntry& lhs,
+                    const CredentialUIEntry& rhs) const {
+      return lhs.key() < rhs.key();
+    }
+  };
+
   explicit CredentialUIEntry(const PasswordForm& form);
   CredentialUIEntry(const CredentialUIEntry& other);
   CredentialUIEntry(CredentialUIEntry&& other);
@@ -71,6 +78,10 @@
 
   const CredentialKey& key() const { return key_; }
 
+  // Information about password insecurities.
+  bool IsLeaked() const;
+  bool IsPhished() const;
+
  private:
   // Key which is constructed from an original PasswordForm.
   CredentialKey key_;
diff --git a/components/password_manager/core/browser/ui/insecure_credentials_manager.cc b/components/password_manager/core/browser/ui/insecure_credentials_manager.cc
index d7d4ae02..239aff3 100644
--- a/components/password_manager/core/browser/ui/insecure_credentials_manager.cc
+++ b/components/password_manager/core/browser/ui/insecure_credentials_manager.cc
@@ -280,18 +280,6 @@
 }
 
 bool InsecureCredentialsManager::MuteCredential(
-    const CredentialView& credential) {
-  auto it = credentials_to_forms_.find(credential);
-  if (it == credentials_to_forms_.end())
-    return false;
-
-  const auto& saved_passwords = it->second.forms;
-  DCHECK(!saved_passwords.empty());
-
-  return MuteCredential(CredentialUIEntry(saved_passwords[0]));
-}
-
-bool InsecureCredentialsManager::MuteCredential(
     const CredentialUIEntry& credential) {
   CredentialUIEntry updated_credential = credential;
   for (auto& password_issue : updated_credential.password_issues) {
@@ -304,18 +292,6 @@
 }
 
 bool InsecureCredentialsManager::UnmuteCredential(
-    const CredentialView& credential) {
-  auto it = credentials_to_forms_.find(credential);
-  if (it == credentials_to_forms_.end())
-    return false;
-
-  const auto& saved_passwords = it->second.forms;
-  DCHECK(!saved_passwords.empty());
-
-  return UnmuteCredential(CredentialUIEntry(saved_passwords[0]));
-}
-
-bool InsecureCredentialsManager::UnmuteCredential(
     const CredentialUIEntry& credential) {
   CredentialUIEntry updated_credential = credential;
   for (auto& password_issue : updated_credential.password_issues) {
diff --git a/components/password_manager/core/browser/ui/insecure_credentials_manager.h b/components/password_manager/core/browser/ui/insecure_credentials_manager.h
index 20cf5eb..2ccd09cf 100644
--- a/components/password_manager/core/browser/ui/insecure_credentials_manager.h
+++ b/components/password_manager/core/browser/ui/insecure_credentials_manager.h
@@ -189,14 +189,10 @@
 
   // Attempts to mute |credential| from the password store.
   // Returns whether the mute succeeded.
-  // TODO(crbug.com/1330549): Use CredentialUIEntry only.
-  bool MuteCredential(const CredentialView& credential);
   bool MuteCredential(const CredentialUIEntry& credential);
 
   // Attempts to unmute |credential| from the password store.
   // Returns whether the unmute succeeded.
-  // TODO(crbug.com/1330549): Use CredentialUIEntry only.
-  bool UnmuteCredential(const CredentialView& credential);
   bool UnmuteCredential(const CredentialUIEntry& credential);
 
   // Returns a vector of currently insecure credentials.
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter.cc b/components/password_manager/core/browser/ui/saved_passwords_presenter.cc
index ece02a88..24bae7d 100644
--- a/components/password_manager/core/browser/ui/saved_passwords_presenter.cc
+++ b/components/password_manager/core/browser/ui/saved_passwords_presenter.cc
@@ -93,11 +93,12 @@
   RemoveCredential(CredentialUIEntry(form));
 }
 
-void SavedPasswordsPresenter::RemoveCredential(
+bool SavedPasswordsPresenter::RemoveCredential(
     const CredentialUIEntry& credential) {
   const auto range =
       sort_key_to_password_forms_.equal_range(credential.key().value());
 
+  bool removed = false;
   std::for_each(range.first, range.second, [&](const auto& pair) {
     const auto& current_form = pair.second;
     // Make sure |form| and |current_form| share the same store.
@@ -106,8 +107,10 @@
       // 'OnGetPasswordStoreResultsFrom'. So it can be present only in one store
       // at a time..
       GetStoreFor(current_form).RemoveLogin(current_form);
+      removed = true;
     }
   });
+  return removed;
 }
 
 bool SavedPasswordsPresenter::AddPassword(const PasswordForm& form) {
@@ -193,6 +196,7 @@
   base::ranges::transform(range.first, range.second,
                           std::back_inserter(forms_to_change),
                           [](const auto& pair) { return pair.second; });
+
   if (forms_to_change.empty())
     return false;
 
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter.h b/components/password_manager/core/browser/ui/saved_passwords_presenter.h
index ee453da4..134906d 100644
--- a/components/password_manager/core/browser/ui/saved_passwords_presenter.h
+++ b/components/password_manager/core/browser/ui/saved_passwords_presenter.h
@@ -69,7 +69,7 @@
   // Removes the credential and all its duplicates from the store.
   // TODO(crbug.com/1330906): Remove in favor of EditSavedCredentials.
   void RemovePassword(const PasswordForm& form);
-  void RemoveCredential(const CredentialUIEntry& credential);
+  bool RemoveCredential(const CredentialUIEntry& credential);
 
   // Adds the credential to the store specified in the |form|. Returns true
   // if the password was added, false if |form|'s data is not valid (invalid
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index a744e54..7088d007 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -1207,9 +1207,9 @@
 
       Si no estableces la política, se aplicará la protección predeterminada de la Navegación segura en todos los recursos.
 
-      Se debe establecer esta política como una lista de nombres de dominio completamente calificados. No permite expresiones regulares, ni permitirá incluir subdominios de dominios enumerados en dicha lista.
+      Se debe establecer esta política como una lista de nombres de dominio completamente calificados. No permite expresiones regulares ni permitirá incluir subdominios de dominios enumerados en dicha lista.
 
-      En <ph name="MS_WIN_NAME" />, esta funcionalidad solo estará disponible en instancias que están vinculadas a un dominio de <ph name="MS_AD_NAME" />, están inscritas en <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> o se ejecutan en Windows 10 Pro. En <ph name="MAC_OS_NAME" />, esta funcionalidad solo está disponible en instancias administradas mediante MDM o vinculadas a un dominio a través de MCX.</translation>
+      En <ph name="MS_WIN_NAME" />, esta funcionalidad solo está disponible en instancias que están vinculadas a un dominio de <ph name="MS_AD_NAME" />, están inscritas en <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> o se ejecutan en Windows 10 Pro. En <ph name="MAC_OS_NAME" />, esta funcionalidad solo está disponible en instancias administradas mediante MDM o vinculadas a un dominio a través de MCX.</translation>
 <translation id="2221779615493499989">Informa a los usuarios sobre el estado de red en dispositivos inscritos.
 
       Si estableces la política como falsa, no se informarán los eventos.
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index 8be74fd..ad22f8b 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -1820,6 +1820,7 @@
 
       如果未設定這項政策,系統會套用 <ph name="ASK_GEOLOCATION_POLICY_NAME" /> 政策,但使用者可以變更這項設定。</translation>
 <translation id="2922511125678964398">允許網頁認證入口驗證機制忽略 Proxy 設定</translation>
+<translation id="2926813071464307947">停用轉譯器應用程式容器沙箱</translation>
 <translation id="2931888116345994552">如果將這項政策設為啟用或不設定,就會允許更新 <ph name="PRODUCT_NAME" /> 中的所有元件。
 
       如果將這項政策設為停用,則會禁止更新元件。不過,部分元件不受本政策規範:只要元件更新不含可執行的程式碼,且對瀏覽器安全性至關重要,就不會遭到禁止。
@@ -2255,6 +2256,11 @@
           如果這項政策設為非空白字串,該字串就會成為「<ph name="PRODUCT_NAME" />」目的地的名稱,否則目的地名稱將會是裝置名稱。如果未設定這項政策,則目的地名稱會是裝置名稱,且裝置擁有者 (或裝置管理網域中的使用者) 可進行變更。名稱長度上限為 24 個字元。</translation>
 <translation id="3329063005964041553">封鎖這些網頁應用程式上的 File Handling API</translation>
 <translation id="3329401415394648069">允許使用 U2F Security Key API。</translation>
+<translation id="3329976499753286262">如果將這項政策設為啟用或不設定,系統會在支援的平台上啟用轉譯器應用程式容器設定。
+
+      將這項政策設為停用會對 <ph name="PRODUCT_NAME" /> 的安全性和穩定性造成危害,因為這會減弱轉譯器程序使用的沙箱機制。建議只有必須在轉譯器程序中執行的第三方軟體發生相容性問題時,才停用這項政策。
+
+      注意:如要進一步瞭解程序寬鬆檢查機制政策,請前往 https://chromium.googlesource.com/chromium/src/+/HEAD/docs/design/sandbox.md#Process-mitigation-policies。</translation>
 <translation id="3339271789059866414">設定系統 Proxy 服務的可用性和系統服務的 Proxy 憑證。
       如果不設定這項政策,將無法使用系統 Proxy 服務。</translation>
 <translation id="3348799281602260763">如果啟用這項政策,WebRTC 對等互連可降級至傳輸層安全標準 (TLS)/DTLS 通訊協定的過時版本 (DTLS 1.0、TLS 1.0 和 TLS 1.1)。
@@ -4151,6 +4157,7 @@
 <translation id="5625771176514429288">系統會允許 Chrome 應用程式在這些平台上執行。</translation>
 <translation id="5630352020869108293">還原上次工作階段</translation>
 <translation id="5633871703004128675">啟用插入點醒目顯示無障礙功能</translation>
+<translation id="5634032995857968056">啟用轉譯器應用程式容器沙箱</translation>
 <translation id="5639454129004500060">如果設定這項政策,該政策會納入用來下載桌面範本檔案的資訊。檔案中有要為當前使用者佈建的桌面範本。
       如果未設定這項政策,桌面範本清單中就不會加入任何預先設定的桌面範本。如果 <ph name="DESK_TEMPLATES_ENABLED_POLICY_NAME" /> 政策不是設為 true,則這項政策不會有任何作用。</translation>
 <translation id="5641279111657132737">這項政策已遭淘汰,請改用「<ph name="AUTH_SERVER_ALLOWLIST_POLICY_NAME" />」政策。
@@ -7007,6 +7014,7 @@
 <translation id="8763716376920670835">自 M101 起,WebSQL 預設為啟用,但你仍然可以透過 Chrome 旗標將其停用。
           如果將這項政策設為 False 或未設定,系統就可停用 WebSQL。
           如果將這項政策設為 True,系統將無法停用 WebSQL。</translation>
+<translation id="8766910236040529804">啟用轉譯器應用程式容器</translation>
 <translation id="8767743923206070405">如果將這項政策設為啟用,<ph name="PRODUCT_NAME" /> 的工具列上會顯示「首頁」按鈕。如果將這項政策設為停用,則不會顯示「首頁」按鈕。
 
       如果設定這項政策,使用者將無法在 <ph name="PRODUCT_NAME" /> 中進行變更。如果未設定,使用者可選擇是否要顯示「首頁」按鈕。</translation>
diff --git a/components/search_engines/template_url_service.cc b/components/search_engines/template_url_service.cc
index da681c5..a9536ea 100644
--- a/components/search_engines/template_url_service.cc
+++ b/components/search_engines/template_url_service.cc
@@ -31,6 +31,7 @@
 #include "components/search_engines/template_url_prepopulate_data.h"
 #include "components/search_engines/template_url_service_client.h"
 #include "components/search_engines/template_url_service_observer.h"
+#include "components/search_engines/template_url_starter_pack_data.h"
 #include "components/search_engines/util.h"
 #include "components/sync/model/sync_change.h"
 #include "components/sync/model/sync_change_processor.h"
@@ -896,6 +897,37 @@
   }
 }
 
+void TemplateURLService::RepairStarterPackEngines() {
+  DCHECK(loaded());
+
+  Scoper scoper(this);
+
+  std::vector<std::unique_ptr<TemplateURLData>> starter_pack_engines =
+      TemplateURLStarterPackData::GetStarterPackEngines();
+  DCHECK(!starter_pack_engines.empty());
+  ActionsFromCurrentData actions(CreateActionsFromCurrentStarterPackData(
+      &starter_pack_engines, template_urls_));
+
+  // Remove items.
+  for (auto i = actions.removed_engines.begin();
+       i < actions.removed_engines.end(); ++i) {
+    Remove(*i);
+  }
+
+  // Edit items.
+  for (auto i(actions.edited_engines.begin()); i < actions.edited_engines.end();
+       ++i) {
+    Update(i->first, TemplateURL(i->second));
+  }
+
+  // Add items.
+  for (std::vector<TemplateURLData>::const_iterator i =
+           actions.added_engines.begin();
+       i < actions.added_engines.end(); ++i) {
+    Add(std::make_unique<TemplateURL>(*i));
+  }
+}
+
 void TemplateURLService::AddObserver(TemplateURLServiceObserver* observer) {
   model_observers_.AddObserver(observer);
 }
diff --git a/components/search_engines/template_url_service.h b/components/search_engines/template_url_service.h
index 44ccf120..7f190a5 100644
--- a/components/search_engines/template_url_service.h
+++ b/components/search_engines/template_url_service.h
@@ -342,6 +342,15 @@
   // prepopulate data.
   void RepairPrepopulatedSearchEngines();
 
+  // Performs the same actions that happen when the starter pack data version is
+  // revved: all existing starter pack entries are checked against the current
+  // starter pack data, any now-extraneous safe_for_autoreplace() entries are
+  // removed, any existing engines are reset to the provided data (except for
+  // user-edited names or keywords), and any new starter pack engines are
+  // added.  Unlike `RepairPrepopulatedSearchEngines()`, this does not modify
+  // the default search engine entry.
+  void RepairStarterPackEngines();
+
   // Observers used to listen for changes to the model.
   // TemplateURLService does NOT delete the observers when deleted.
   void AddObserver(TemplateURLServiceObserver* observer);
@@ -491,6 +500,7 @@
   FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, LastVisitedTimeUpdate);
   FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest,
                            RepairPrepopulatedSearchEngines);
+  FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, RepairStarterPackEngines);
   FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, PreSyncDeletes);
   FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, MergeInSyncTemplateURL);
   FRIEND_TEST_ALL_PREFIXES(LocationBarModelTest, GoogleBaseURL);
diff --git a/components/services/screen_ai/proto/proto_convertor.cc b/components/services/screen_ai/proto/proto_convertor.cc
index 623979e..ba27b51 100644
--- a/components/services/screen_ai/proto/proto_convertor.cc
+++ b/components/services/screen_ai/proto/proto_convertor.cc
@@ -241,7 +241,7 @@
   DCHECK_LT(index, node_data.size());
   DCHECK_NE(parent_node.id, ui::kInvalidAXNodeID);
   ui::AXNodeData& current_node = node_data[index];
-  if (SerializePredictedType(ui_component.predicted_type(), current_node))
+  if (!SerializePredictedType(ui_component.predicted_type(), current_node))
     return;
   current_node.id = GetNextNodeID();
   SerializeBoundingBox(ui_component.bounding_box(), parent_node.id,
@@ -319,10 +319,10 @@
   // TODO(https://crbug.com/1278249): Create an AXTreeSource and create the
   // update using AXTreeSerializer.
 
-  // Each `UIComponent`, `LineBox`, and `WordBox` will take up one node in the
-  // accessibility tree, resulting in hundreds of nodes, making it inefficient
-  // to push_back one node at a time. We pre-allocate the needed nodes making
-  // node creation an O(n) operation.
+  // Each `UIComponent` and `LineBox` will take up one node in the accessibility
+  // tree, resulting in hundreds of nodes, making it inefficient to push_back
+  // one node at a time. We pre-allocate the needed nodes making node creation
+  // an O(n) operation.
   const size_t word_count = std::accumulate(
       std::begin(visual_annotation.lines()),
       std::end(visual_annotation.lines()), 0u,
diff --git a/components/services/screen_ai/proto/proto_convertor_unittest.cc b/components/services/screen_ai/proto/proto_convertor_unittest.cc
index 4ba0a6df5..d9eba124 100644
--- a/components/services/screen_ai/proto/proto_convertor_unittest.cc
+++ b/components/services/screen_ai/proto/proto_convertor_unittest.cc
@@ -102,7 +102,15 @@
         serialized_annotation, snapshot_bounds);
 
     const std::string expected_update(
-        "id=1 dialog (0, 0)-(800, 900) child_ids=2\n");
+        "id=1 dialog (0, 0)-(800, 900) child_ids=2,3\n"
+        "  id=2 button offset_container_id=1 (0, 1)-(2, 3) transform=[ +0.0000 "
+        "-1.0000 +0.0000 +0.0000  \n"
+        "  +1.0000 +0.0000 +0.0000 +0.0000  \n"
+        "  +0.0000 +0.0000 +1.0000 +0.0000  \n"
+        "  +0.0000 +0.0000 +0.0000 +1.0000 ]\n"
+        "\n"
+        "  id=3 genericContainer offset_container_id=1 (0, 0)-(5, 5) "
+        "role_description=Signature\n");
     EXPECT_EQ(expected_update, update.ToString());
   }
 
@@ -175,18 +183,26 @@
         serialized_annotation, snapshot_bounds);
 
     const std::string expected_update(
-        "id=3 dialog (0, 0)-(800, 900) child_ids=4\n"
-        "id=5 region (0, 0)-(800, 900) is_page_breaking_object=true "
-        "child_ids=6,7\n"
-        "  id=6 staticText (0, 0)-(5, 0) name_from=contents text_direction=ltr "
-        "name=\n"
-        "  id=7 staticText offset_container_id=5 (100, 100)-(500, 20) "
-        "name_from=contents text_direction=rtl name=Hello world language=en "
+        "id=4 dialog (0, 0)-(800, 900) child_ids=5,6\n"
+        "  id=5 button offset_container_id=4 (0, 1)-(2, 3) transform=[ +0.0000 "
+        "-1.0000 +0.0000 +0.0000  \n"
+        "  +1.0000 +0.0000 +0.0000 +0.0000  \n"
+        "  +0.0000 +0.0000 +1.0000 +0.0000  \n"
+        "  +0.0000 +0.0000 +0.0000 +1.0000 ]\n"
+        "\n"
+        "  id=6 genericContainer offset_container_id=4 (0, 0)-(5, 5) "
+        "role_description=Signature\n"
+        "id=7 region (0, 0)-(800, 900) is_page_breaking_object=true "
         "child_ids=8,9\n"
-        "    id=8 inlineTextBox offset_container_id=7 (100, 100)-(250, 20) "
+        "  id=8 staticText (0, 0)-(5, 0) name_from=contents text_direction=ltr "
+        "name=\n"
+        "  id=9 staticText offset_container_id=7 (100, 100)-(500, 20) "
+        "name_from=contents text_direction=rtl name=Hello world language=en "
+        "child_ids=10,11\n"
+        "    id=10 inlineTextBox offset_container_id=9 (100, 100)-(250, 20) "
         "name_from=contents background_color=&C350 color=&61A8 "
         "text_direction=rtl name=Hello \n"
-        "    id=9 inlineTextBox offset_container_id=7 (350, 100)-(250, 20) "
+        "    id=11 inlineTextBox offset_container_id=9 (350, 100)-(250, 20) "
         "name_from=contents background_color=&C350 color=&61A8 "
         "text_direction=rtl name=world\n");
     EXPECT_EQ(expected_update, update.ToString());
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb
index b275792..3fa99bd 100644
--- a/components/strings/components_strings_as.xtb
+++ b/components/strings/components_strings_as.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">অনুদান, জলপানি আৰু বিত্তীয় সহায়</translation>
 <translation id="1048785276086539861">আপুনি এন’টেশ্বন সম্পাদনা কৰিলে, এই নথিখন একক পৃষ্ঠাৰ ভিউলৈ সলনি হ’ব</translation>
 <translation id="1050038467049342496">অন্য এপ্‌বোৰ বাছনি কৰক</translation>
+<translation id="1053959602163383901">আপুনি <ph name="PROVIDER_ORIGIN" /> ব্যৱহাৰ কৰা ৱেবছাইটসমূহত বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ ডিভাইচৰ জৰিয়তে সত্যাপন কৰিবলৈ বাছনি কৰিছে। এই প্ৰদানকাৰীয়ে হয়তো আপোনাৰ পৰিশোধ পদ্ধতিৰ বিষয়ে তথ্য ষ্ট’ৰ কৰি ৰাখিব পাৰে, যিটো আপুনি <ph name="LINK_TEXT" /> পাৰে।</translation>
 <translation id="1055184225775184556">যোগ কৰা কার্যটো &amp;আনডু কৰক</translation>
 <translation id="1056663316309890343">ফট’ৰ ছফ্টৱেৰ</translation>
 <translation id="1056898198331236512">সতর্কবার্তা</translation>
@@ -426,6 +427,7 @@
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> ভাষাৰ পৃষ্ঠাসমূহ অনুবাদ কৰা নহয়।</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{এই নিয়ন্ত্ৰণটো অন কৰা অৱস্থাত আৰু স্থিতিটো সক্ৰিয় হৈ থাকিলে, Chromeএ আপোনাৰ শেহতীয়া ব্ৰাউজিঙৰ কাৰ্যকলাপৰ সৈতে সকলোতকৈ বেছি মিলা বহুতো লোকৰ গোট অথবা “একেধৰণৰ বৈশিষ্ট্য শ্বেয়াৰ কৰা গোট” নিৰ্ধাৰণ কৰে। বিজ্ঞাপনদাতাই গোটটোৰ বাবে বিজ্ঞাপন বাছনি কৰিব পাৰে আৰু আপোনাৰ ডিভাইচত আপোনাৰ ব্ৰাউজিঙৰ কাৰ্যকলাপ ব্যক্তিগত কৰি ৰখা হয়। আপোনাৰ গোটটো প্ৰতিদিনে আপডে’ট কৰা হয়।}=1{এই নিয়ন্ত্ৰণটো অন কৰা অৱস্থাত আৰু স্থিতিটো সক্ৰিয় হৈ থাকিলে, Chromeএ আপোনাৰ শেহতীয়া ব্ৰাউজিঙৰ কাৰ্যকলাপৰ সৈতে সকলোতকৈ বেছি মিলা বহুতো লোকৰ গোট অথবা “একেধৰণৰ বৈশিষ্ট্য শ্বেয়াৰ কৰা গোট” নিৰ্ধাৰণ কৰে। বিজ্ঞাপনদাতাই গোটটোৰ বাবে বিজ্ঞাপন বাছনি কৰিব পাৰে আৰু আপোনাৰ ডিভাইচত আপোনাৰ ব্ৰাউজিঙৰ কাৰ্যকলাপ ব্যক্তিগত কৰি ৰখা হয়। আপোনাৰ গোটটো প্ৰতিদিনে আপডে’ট কৰা হয়।}one{এই নিয়ন্ত্ৰণটো অন কৰা অৱস্থাত আৰু স্থিতিটো সক্ৰিয় হৈ থাকিলে, Chromeএ আপোনাৰ শেহতীয়া ব্ৰাউজিঙৰ কাৰ্যকলাপৰ সৈতে সকলোতকৈ বেছি মিলা বহুতো লোকৰ গোট অথবা “একেধৰণৰ বৈশিষ্ট্য শ্বেয়াৰ কৰা গোট” নিৰ্ধাৰণ কৰে। বিজ্ঞাপনদাতাই গোটটোৰ বাবে বিজ্ঞাপন বাছনি কৰিব পাৰে আৰু আপোনাৰ ডিভাইচত আপোনাৰ ব্ৰাউজিঙৰ কাৰ্যকলাপ ব্যক্তিগত কৰি ৰখা হয়। আপোনাৰ গোটটো প্ৰতি {NUM_DAYS} দিনত আপডে’ট কৰা হয়।}other{এই নিয়ন্ত্ৰণটো অন কৰা অৱস্থাত আৰু স্থিতিটো সক্ৰিয় হৈ থাকিলে, Chromeএ আপোনাৰ শেহতীয়া ব্ৰাউজিঙৰ কাৰ্যকলাপৰ সৈতে সকলোতকৈ বেছি মিলা বহুতো লোকৰ গোট অথবা “একেধৰণৰ বৈশিষ্ট্য শ্বেয়াৰ কৰা গোট” নিৰ্ধাৰণ কৰে। বিজ্ঞাপনদাতাই গোটটোৰ বাবে বিজ্ঞাপন বাছনি কৰিব পাৰে আৰু আপোনাৰ ডিভাইচত আপোনাৰ ব্ৰাউজিঙৰ কাৰ্যকলাপ ব্যক্তিগত কৰি ৰখা হয়। আপোনাৰ গোটটো প্ৰতি {NUM_DAYS} দিনত আপডে’ট কৰা হয়।}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{১টা পৰামৰ্শ}one{#টা পৰামৰ্শ}other{#টা পৰামৰ্শ}}</translation>
+<translation id="2066915425250589881">মচাৰ বাবে অনুৰোধ জনাব</translation>
 <translation id="2068528718802935086">কেঁচুৱা আৰু খোজ কাঢ়িবলৈ শিকা শিশু</translation>
 <translation id="2071156619270205202">ভাৰ্চুৱেল কাৰ্ড নম্বৰৰ বাবে এই কাৰ্ডখন যোগ্য নহয়।</translation>
 <translation id="2071692954027939183">জাননীসমূহ স্বয়ংক্ৰিয়ভাৱে অৱৰোধ কৰা হৈছে কাৰণ আপুনি সাধাৰণতে সেইসমূহক অনুমতি নিদিয়ে</translation>
@@ -582,6 +584,7 @@
 <translation id="2512101340618156538">অনুমতি নাই (ডিফ’ল্ট)</translation>
 <translation id="2512413427717747692">Chromeক ডিফ’ল্ট ব্ৰাউজাৰ বুটাম হিচাপে ছেট কৰক, iOS ছেটিঙত Chromeক ছিষ্টেমৰ ডিফ’ল্ট ব্ৰাউজাৰ হিচাপে ছেট কৰিবলৈ এণ্টাৰ টিপক</translation>
 <translation id="2515629240566999685">আপোনাৰ অঞ্চলৰ ছিংগনেল পৰীক্ষা কৰি থকা হৈছে</translation>
+<translation id="2515761554693942801">আপুনি <ph name="PROVIDER_ORIGIN" /> ব্যৱহাৰ কৰা ৱেবছাইটসমূহত স্পৰ্শ আইডিৰ জৰিয়তে সত্যাপন কৰিবলৈ বাছনি কৰিছে। এই প্ৰদানকাৰীয়ে হয়তো আপোনাৰ পৰিশোধ পদ্ধতিৰ বিষয়ে তথ্য ষ্ট’ৰ কৰি ৰাখিব পাৰে, যিটো আপুনি <ph name="LINK_TEXT" /> পাৰে।</translation>
 <translation id="2521385132275182522">তলৰ অংশৰ সোঁফালে ষ্টে'পল কৰক</translation>
 <translation id="2521736961081452453">ফ’ৰ্ম সৃষ্টি কৰক</translation>
 <translation id="2523886232349826891">কেৱল এই ডিভাইচটোত ছেভ কৰা হয়</translation>
@@ -1497,6 +1500,7 @@
 <translation id="5051305769747448211">লাইভ কমেডী</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{Nearby Share ব্যৱহাৰ কৰি এই ফাইলটো পঠিয়াবলৈ, আপোনাৰ ডিভাইচত ঠাই (<ph name="DISK_SPACE_SIZE" />) খালী কৰক}one{Nearby Share ব্যৱহাৰ কৰি এই ফাইলসমূহ পঠিয়াবলৈ, আপোনাৰ ডিভাইচত ঠাই (<ph name="DISK_SPACE_SIZE" />) খালী কৰক}other{Nearby Share ব্যৱহাৰ কৰি এই ফাইলসমূহ পঠিয়াবলৈ, আপোনাৰ ডিভাইচত ঠাই (<ph name="DISK_SPACE_SIZE" />) খালী কৰক}}</translation>
 <translation id="5056549851600133418">আপোনাৰ বাবে লেখনি</translation>
+<translation id="5060483733937416656">আপুনি <ph name="PROVIDER_ORIGIN" /> ব্যৱহাৰ কৰা ৱেবছাইটসমূহত Windows Helloৰ জৰিয়তে সত্যাপন কৰিবলৈ বাছনি কৰিছে। এই প্ৰদানকাৰীয়ে হয়তো আপোনাৰ পৰিশোধ পদ্ধতিৰ বিষয়ে তথ্য ষ্ট’ৰ কৰি ৰাখিব পাৰে, যিটো আপুনি <ph name="LINK_TEXT" /> পাৰে।</translation>
 <translation id="5061227663725596739">আপুনি <ph name="LOOKALIKE_DOMAIN" />ৰ কথা বুজাব বিচাৰিছিল নেকি?</translation>
 <translation id="5066056036849835175">প্ৰিণ্ট কৰাৰ ইতিহাস</translation>
 <translation id="5068234115460527047">হে’জ্ পুঁজি</translation>
diff --git a/components/strings/components_strings_be.xtb b/components/strings/components_strings_be.xtb
index 41b1c061..2575c54 100644
--- a/components/strings/components_strings_be.xtb
+++ b/components/strings/components_strings_be.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">Спосаб прыняцця</translation>
 <translation id="1281476433249504884">Укладчык 1</translation>
 <translation id="1285320974508926690">Ніколі не перакладаць гэты сайт</translation>
+<translation id="1288548991597756084">Захоўвайце даныя карткі ў бяспецы</translation>
 <translation id="1292571435393770077">Латок 16</translation>
 <translation id="1292701964462482250">"Праграмнае забеспячэнне на камп'ютары не дае браўзеру Chrome устанавіць бяспечнае падключэнне да інтэрнэту" (толькі камп'ютары пад кіраваннем Windows)</translation>
 <translation id="1294154142200295408">Варыянты для каманднага радка</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;Каб выправіць памылку, націсніце &lt;strong&gt;Падключыцца&lt;/strong&gt; на старонцы, якую вы спрабуеце адкрыць.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Ландшафтны дызайн</translation>
 <translation id="1513706915089223971">Спіс запісаў гісторыі</translation>
+<translation id="1516097932025103760">Пасля шыфравання даных яны будуць захоўвацца ў бяспецы. Код CVC не захоўваецца ніколі.</translation>
 <translation id="1517433312004943670">Патрабуецца нумар тэлефона</translation>
 <translation id="1519264250979466059">Дата зборкі</translation>
 <translation id="1521159554480556801">Тэкстыльнае мастацтва</translation>
@@ -1415,6 +1417,7 @@
 <translation id="483241715238664915">Уключыць папярэджанні</translation>
 <translation id="4834250788637067901">Спосабы аплаты, прапановы і адрасы, якія выкарыстоўваюць Google Pay</translation>
 <translation id="4838327282952368871">Летуценны</translation>
+<translation id="4839087176073128681">Плаціце карткай хутчэй і абараняйце яе даныя з дапамогай перадавых тэхналогій бяспекі Google.</translation>
 <translation id="4840250757394056958">Праглядзець гісторыю Chrome</translation>
 <translation id="484462545196658690">Аўтаматычна</translation>
 <translation id="484671803914931257">Атрымайце скідку ад прадаўца "<ph name="MERCHANT_NAME" />" і не толькі</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb
index f30d11b..3f39950 100644
--- a/components/strings/components_strings_bn.xtb
+++ b/components/strings/components_strings_bn.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">অনুদান, বৃত্তি এবং আর্থিক সাহায্য</translation>
 <translation id="1048785276086539861">অ্যানোটেশন এডিট করার সময় এই ডকুমেন্ট আবার 'সিঙ্গেল পেজ ভিউ' মোডে দেখা যাবে</translation>
 <translation id="1050038467049342496">অন্যান্য অ্যাপ্লিকেশানগুলি বন্ধ করুন</translation>
+<translation id="1053959602163383901"><ph name="PROVIDER_ORIGIN" /> ব্যবহার করে এমন ওয়েবসাইটে যাচাইকরণ করার ডিভাইস ব্যবহার করে যাচাই করার বিকল্প বেছে নিয়েছেন। এই পরিষেবা প্রদানকারী আপনার পেমেন্ট পদ্ধতি সম্পর্কে তথ্য স্টোর করে থাকতে পারে যা আপনি <ph name="LINK_TEXT" /> পারেন।</translation>
 <translation id="1055184225775184556">&amp;যোগ করাকে পূর্বাবস্থায় ফেরান</translation>
 <translation id="1056663316309890343">ফটোতে কাজে লাগে এমন সফ্টওয়্যার</translation>
 <translation id="1056898198331236512">সতর্কতা</translation>
@@ -427,6 +428,7 @@
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> ভাষার পৃষ্ঠা অনুবাদ করা হবে না।</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{এই কন্ট্রোল চালু এবং স্ট্যাটাস অ্যাক্টিভ থাকলে আপনার সাম্প্রতিক ব্রাউজিং-এর ইতিহাস, আরও বড় কোন গ্রুপ বা 'দল'-এর সাথে সবচেয়ে বেশি মেলে, 'Chrome' তা নির্ধারণ করে। বিজ্ঞাপনদাতারা গ্রুপের জন্য বিজ্ঞাপন বেছে নিতে পারেন এবং আপনার ব্রাউজিং-এর ইতিহাস ডিভাইসে ব্যক্তিগত রাখা হয়। আপনার গ্রুপ প্রত্যেকদিন আপডেট করা হয়।}=1{এই কন্ট্রোল চালু এবং স্ট্যাটাস অ্যাক্টিভ থাকলে আপনার সাম্প্রতিক ব্রাউজিং-এর ইতিহাস, আরও বড় কোন গ্রুপ বা 'দল'-এর সাথে সবচেয়ে বেশি মেলে, 'Chrome' তা নির্ধারণ করে। বিজ্ঞাপনদাতারা গ্রুপের জন্য বিজ্ঞাপন বেছে নিতে পারেন এবং আপনার ব্রাউজিং-এর ইতিহাস ডিভাইসে ব্যক্তিগত রাখা হয়। আপনার গ্রুপ প্রত্যেকদিন আপডেট করা হয়।}one{এই কন্ট্রোল চালু এবং স্ট্যাটাস অ্যাক্টিভ থাকলে আপনার সাম্প্রতিক ব্রাউজিং-এর ইতিহাস, আরও বড় কোন গ্রুপ বা 'দল'-এর সাথে সবচেয়ে বেশি মেলে, 'Chrome' তা নির্ধারণ করে। বিজ্ঞাপনদাতারা গ্রুপের জন্য বিজ্ঞাপন বেছে নিতে পারেন এবং আপনার ব্রাউজিং-এর ইতিহাস ডিভাইসে ব্যক্তিগত রাখা হয়। আপনার গ্রুপ প্রতি {NUM_DAYS} দিনে আপডেট করা হয়।}other{এই কন্ট্রোল চালু এবং স্ট্যাটাস অ্যাক্টিভ থাকলে আপনার সাম্প্রতিক ব্রাউজিং-এর ইতিহাস, আরও বড় কোন গ্রুপ বা 'দল'-এর সাথে সবচেয়ে বেশি মেলে, 'Chrome' তা নির্ধারণ করে। বিজ্ঞাপনদাতারা গ্রুপের জন্য বিজ্ঞাপন বেছে নিতে পারেন এবং আপনার ব্রাউজিং-এর ইতিহাস ডিভাইসে ব্যক্তিগত রাখা হয়। আপনার গ্রুপ প্রতি {NUM_DAYS} দিনে আপডেট করা হয়।}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{১টি প্রস্তাব}one{#টি প্রস্তাব}other{#টি প্রস্তাব}}</translation>
+<translation id="2066915425250589881">মুছে ফেলার অনুরোধ</translation>
 <translation id="2068528718802935086">শিশু ও ছোট শিশু</translation>
 <translation id="2071156619270205202">ভার্চুয়াল কার্ড নম্বরের জন্য এই কার্ডটি যোগ্য নয়।</translation>
 <translation id="2071692954027939183">আপনি সাধারণত বিজ্ঞপ্তি অনুমোদন না করার জন্য অটোমেটিক ব্লক হয়ে গেছে</translation>
@@ -583,6 +585,7 @@
 <translation id="2512101340618156538">অনুমতি নেই (ডিফল্ট)</translation>
 <translation id="2512413427717747692">Chrome-কে ডিফল্ট ব্রাউজার বোতাম হিসেবে সেট করুন, iOS সেটিংসে Chrome-কে সিস্টেমের ডিফল্ট ব্রাউজার হিসেবে সেট করতে Enter কী প্রেস করুন</translation>
 <translation id="2515629240566999685">আপনার এলাকায় সংকেত পরীক্ষা করে দেখুন</translation>
+<translation id="2515761554693942801"><ph name="PROVIDER_ORIGIN" /> ব্যবহার করে এমন ওয়েবসাইটে টাচ আইডি ব্যবহার করে যাচাই করার বিকল্প বেছে নিয়েছেন। এই পরিষেবা প্রদানকারী আপনার পেমেন্ট পদ্ধতি সম্পর্কে তথ্য স্টোর করে থাকতে পারে যা আপনি <ph name="LINK_TEXT" /> পারেন।</translation>
 <translation id="2521385132275182522">নিচে ডানদিকে স্টেপল করুন</translation>
 <translation id="2521736961081452453">ফর্ম তৈরি করুন</translation>
 <translation id="2523886232349826891">শুধুমাত্র এই ডিভাইসে সেভ করা যাবে</translation>
@@ -1502,6 +1505,7 @@
 <translation id="5051305769747448211">লাইভ কমেডি</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{নিয়ারবাই শেয়ার ব্যবহার করে এই ফাইল পাঠাতে চাইলে, আপনার ডিভাইসে (<ph name="DISK_SPACE_SIZE" />) জায়গা খালি করুন}one{নিয়ারবাই শেয়ার ব্যবহার করে এই ফাইলগুলি পাঠাতে চাইলে, আপনার ডিভাইসে (<ph name="DISK_SPACE_SIZE" />) জায়গা খালি করুন}other{নিয়ারবাই শেয়ার ব্যবহার করে এই ফাইলগুলি পাঠাতে চাইলে, আপনার ডিভাইসে (<ph name="DISK_SPACE_SIZE" />) জায়গা খালি করুন}}</translation>
 <translation id="5056549851600133418">আপনার জন্য নিবন্ধগুলি</translation>
+<translation id="5060483733937416656"><ph name="PROVIDER_ORIGIN" /> ব্যবহার করে এমন ওয়েবসাইটে Windows Hello ব্যবহার করে যাচাই করার বিকল্প বেছে নিয়েছেন। এই পরিষেবা প্রদানকারী আপনার পেমেন্ট পদ্ধতি সম্পর্কে তথ্য স্টোর করে থাকতে পারে যা আপনি <ph name="LINK_TEXT" /> পারেন।</translation>
 <translation id="5061227663725596739">আপনি কি <ph name="LOOKALIKE_DOMAIN" /> ডোমেনের কথা বলছেন?</translation>
 <translation id="5066056036849835175">প্রিন্ট করার ইতিহাস</translation>
 <translation id="5068234115460527047">হেজ তহবিল</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb
index 2f5c215..1b4c0c0f 100644
--- a/components/strings/components_strings_cs.xtb
+++ b/components/strings/components_strings_cs.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">Způsob vyzvednutí</translation>
 <translation id="1281476433249504884">Stohovač 1</translation>
 <translation id="1285320974508926690">Tento web nikdy nepřekládat</translation>
+<translation id="1288548991597756084">Bezpečně si uložte kartu</translation>
 <translation id="1292571435393770077">Přihrádka 16</translation>
 <translation id="1292701964462482250">Software na počítači Chromu brání v bezpečném připojení k webu (pouze počítače se systémem Windows)</translation>
 <translation id="1294154142200295408">Varianty pro příkazový řádek</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;Chybu odstraníte tím, že na stránce, kterou se snažíte otevřít, kliknete na &lt;strong&gt;Připojení&lt;/strong&gt;.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Krajinářství</translation>
 <translation id="1513706915089223971">Seznam položek v historii</translation>
+<translation id="1516097932025103760">Karta bude zašifrována a bezpečně uložena (kód CVC uložen nebude).</translation>
 <translation id="1517433312004943670">Je vyžadováno telefonní číslo</translation>
 <translation id="1519264250979466059">Datum sestavení</translation>
 <translation id="1521159554480556801">Umění využívající textil a vlákna</translation>
@@ -1403,6 +1405,7 @@
 <translation id="483241715238664915">Zapnout upozornění</translation>
 <translation id="4834250788637067901">Platební metody, nabídky a adresy z Google Pay</translation>
 <translation id="4838327282952368871">Zasněné</translation>
+<translation id="4839087176073128681">Plaťte rychleji a chraňte svou kartu pomocí špičkového zabezpečení od Googlu.</translation>
 <translation id="4840250757394056958">Zobrazit historii Chromu</translation>
 <translation id="484462545196658690">Automaticky</translation>
 <translation id="484671803914931257">Získejte slevu u obchodníka <ph name="MERCHANT_NAME" /> a dalších</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb
index d2c80f5..3b61e6da 100644
--- a/components/strings/components_strings_en-GB.xtb
+++ b/components/strings/components_strings_en-GB.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">Grants, scholarships and financial aid</translation>
 <translation id="1048785276086539861">When you edit annotations, this document will return to single-page view</translation>
 <translation id="1050038467049342496">Close other apps</translation>
+<translation id="1053959602163383901">You chose to verify with an authenticator device on websites that use <ph name="PROVIDER_ORIGIN" />. This provider may have stored information about your payment method, which you can <ph name="LINK_TEXT" />.</translation>
 <translation id="1055184225775184556">&amp;Undo add</translation>
 <translation id="1056663316309890343">Photo software</translation>
 <translation id="1056898198331236512">Warning</translation>
@@ -425,6 +426,7 @@
 <translation id="2053111141626950936">Pages in <ph name="LANGUAGE" /> will not be translated.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{When this control is on and the status is active, Chrome determines which large group of people, or 'cohort', your recent browsing activity is most similar to. Advertisers can select ads for the group, and your browsing activity is kept private on your device. Your group is updated every day.}=1{When this control is on and the status is active, Chrome determines which large group of people, or 'cohort', your recent browsing activity is most similar to. Advertisers can select ads for the group, and your browsing activity is kept private on your device. Your group is updated every day.}other{When this control is on and the status is active, Chrome determines which large group of people, or 'cohort', your recent browsing activity is most similar to. Advertisers can select ads for the group, and your browsing activity is kept private on your device. Your group is updated every {NUM_DAYS} days.}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 suggestion}other{# suggestions}}</translation>
+<translation id="2066915425250589881">request to be deleted</translation>
 <translation id="2068528718802935086">Babies and toddlers</translation>
 <translation id="2071156619270205202">This card is not eligible for virtual card number.</translation>
 <translation id="2071692954027939183">Notifications were automatically blocked because you usually don't allow them</translation>
@@ -581,6 +583,7 @@
 <translation id="2512101340618156538">Not allowed (default)</translation>
 <translation id="2512413427717747692">Set Chrome as default browser button, press Enter to set Chrome as the system's default browser in iOS settings</translation>
 <translation id="2515629240566999685">Checking the signal in your area</translation>
+<translation id="2515761554693942801">You chose to verify with Touch ID on websites that use <ph name="PROVIDER_ORIGIN" />. This provider may have stored information about your payment method, which you can <ph name="LINK_TEXT" />.</translation>
 <translation id="2521385132275182522">Staple bottom right</translation>
 <translation id="2521736961081452453">Create form</translation>
 <translation id="2523886232349826891">Saved on this device only</translation>
@@ -1500,6 +1503,7 @@
 <translation id="5051305769747448211">Live comedy</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{To send this file using Nearby Share, free up space (<ph name="DISK_SPACE_SIZE" />) on your device}other{To send these files using Nearby Share, free up space (<ph name="DISK_SPACE_SIZE" />) on your device}}</translation>
 <translation id="5056549851600133418">Articles for you</translation>
+<translation id="5060483733937416656">You chose to verify with Windows Hello on websites that use <ph name="PROVIDER_ORIGIN" />. This provider may have stored information about your payment method, which you can <ph name="LINK_TEXT" />.</translation>
 <translation id="5061227663725596739">Did you mean <ph name="LOOKALIKE_DOMAIN" />?</translation>
 <translation id="5066056036849835175">Printing history</translation>
 <translation id="5068234115460527047">Hedge funds</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index d7ff135..a709c1d 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">Método de retiro</translation>
 <translation id="1281476433249504884">Apilador 1</translation>
 <translation id="1285320974508926690">Nunca traducir este sitio</translation>
+<translation id="1288548991597756084">Guarda tu tarjeta de forma segura</translation>
 <translation id="1292571435393770077">Bandeja 16</translation>
 <translation id="1292701964462482250">"Un software en tu computadora evita que Chrome se conecte de forma segura a la Web" (solo en computadoras con Windows)</translation>
 <translation id="1294154142200295408">Variaciones en la línea de comandos</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;Para solucionar el error, haz clic en &lt;strong&gt;Conectar&lt;/strong&gt; en la página que deseas abrir.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Paisajismo</translation>
 <translation id="1513706915089223971">Lista de entradas del historial</translation>
+<translation id="1516097932025103760">Se encriptará y guardará la tarjeta de forma segura, y no se almacenará el CVC.</translation>
 <translation id="1517433312004943670">Se requiere el número de teléfono</translation>
 <translation id="1519264250979466059">Fecha de compilación</translation>
 <translation id="1521159554480556801">Arte textil y telas</translation>
@@ -1408,6 +1410,7 @@
 <translation id="483241715238664915">Activar advertencias</translation>
 <translation id="4834250788637067901">Formas de pago, ofertas y direcciones con Google Pay</translation>
 <translation id="4838327282952368871">Dreamy</translation>
+<translation id="4839087176073128681">Paga más rápido la próxima vez y protege tu tarjeta con la seguridad líder de la industria de Google.</translation>
 <translation id="4840250757394056958">Ver tu historial de Chrome</translation>
 <translation id="484462545196658690">Automático</translation>
 <translation id="484671803914931257">Obtén descuentos en <ph name="MERCHANT_NAME" /> y más</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb
index eeadb7d..c566cbb 100644
--- a/components/strings/components_strings_es.xtb
+++ b/components/strings/components_strings_es.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">Método de recogida</translation>
 <translation id="1281476433249504884">Apilador 1</translation>
 <translation id="1285320974508926690">No traducir nunca este sitio</translation>
+<translation id="1288548991597756084">Guardar tarjeta de forma segura</translation>
 <translation id="1292571435393770077">Bandeja 16</translation>
 <translation id="1292701964462482250">"Hay software en tu ordenador que impide que Chrome se conecte a la Web de forma segura" (solo para ordenadores Windows)</translation>
 <translation id="1294154142200295408">Variaciones de la línea de comandos</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;Para solucionar el problema, haz clic en &lt;strong&gt;Conectar&lt;/strong&gt; en la página que intentas abrir.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Paisajismo</translation>
 <translation id="1513706915089223971">Lista de entradas del historial</translation>
+<translation id="1516097932025103760">Se cifrará y se guardará de forma segura, y el CVC nunca se almacenará.</translation>
 <translation id="1517433312004943670">Número de teléfono requerido</translation>
 <translation id="1519264250979466059">Fecha de compilación</translation>
 <translation id="1521159554480556801">Arte textil y con fibras</translation>
@@ -1416,6 +1418,7 @@
 <translation id="483241715238664915">Activar advertencias</translation>
 <translation id="4834250788637067901">Métodos de pago, ofertas y direcciones con Google Pay</translation>
 <translation id="4838327282952368871">De ensueño</translation>
+<translation id="4839087176073128681">Paga más rápido la próxima vez y protege tu tarjeta con la seguridad de Google, uno de los servicios más utilizados del sector.</translation>
 <translation id="4840250757394056958">Ver tu historial de Chrome</translation>
 <translation id="484462545196658690">Automático</translation>
 <translation id="484671803914931257">Obtén descuentos en <ph name="MERCHANT_NAME" /> y más</translation>
diff --git a/components/strings/components_strings_eu.xtb b/components/strings/components_strings_eu.xtb
index e94dd5f..06f455a 100644
--- a/components/strings/components_strings_eu.xtb
+++ b/components/strings/components_strings_eu.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">Bekak eta dirulaguntzak</translation>
 <translation id="1048785276086539861">Oharpenak editatzen dituzunean, orri bakarreko ikuspegira itzuliko da dokumentua</translation>
 <translation id="1050038467049342496">Itxi beste aplikazio batzuk</translation>
+<translation id="1053959602163383901"><ph name="PROVIDER_ORIGIN" /> darabilten webguneetan gailu autentifikatzaile batekin egiaztatzea aukeratu duzu. Baliteke hornitzaile horrek zure ordainketa-metodoari buruzko informazioa gorde izatea, baina <ph name="LINK_TEXT" />.</translation>
 <translation id="1055184225775184556">&amp;Desegin gehitzea</translation>
 <translation id="1056663316309890343">Argazkietarako softwareak</translation>
 <translation id="1056898198331236512">Abisua</translation>
@@ -422,6 +423,7 @@
 <translation id="2053111141626950936">Ez dira itzuliko <ph name="LANGUAGE" /> darabilten orriak.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{Kontrolatzeko aukera abian denean eta aktibo dagoenean, duela gutxi egin dituzun arakatze-jardueren antz handiena duen talde demografikoa zein den zehaztuko du Chrome-k. Iragarleek talde horretarako iragarkiak hauta ditzakete, eta arakatze-historia pribatu mantenduko da gailuan. Egunero eguneratuko da taldea.}=1{Kontrolatzeko aukera abian denean eta aktibo dagoenean, duela gutxi egin dituzun arakatze-jardueren antz handiena duen talde demografikoa zein den zehaztuko du Chrome-k. Iragarleek talde horretarako iragarkiak hauta ditzakete, eta arakatze-historia pribatu mantenduko da gailuan. Egunero eguneratuko da taldea.}other{Kontrolatzeko aukera abian denean eta aktibo dagoenean, duela gutxi egin dituzun arakatze-jardueren antz handiena duen talde demografikoa zein den zehaztuko du Chrome-k. Iragarleek talde horretarako iragarkiak hauta ditzakete, eta arakatze-historia pribatu mantenduko da gailuan. {NUM_DAYS} egunetik behin eguneratuko da taldea.}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 iradokizun}other{# iradokizun}}</translation>
+<translation id="2066915425250589881">hura ezabatzea eska dezakezu</translation>
 <translation id="2068528718802935086">Haurtxoak eta ume txikiak</translation>
 <translation id="2071156619270205202">Txartela ez da egokia txartel birtualaren zenbaki bat izateko.</translation>
 <translation id="2071692954027939183">Automatikoki blokeatu dira jakinarazpenak, normalean ez dituzulako onartzen</translation>
@@ -578,6 +580,7 @@
 <translation id="2512101340618156538">Baimenik gabe (lehenetsia)</translation>
 <translation id="2512413427717747692">Chrome arakatzaile lehenetsi gisa ezartzeko botoia: sakatu "Sartu" Chrome sistemaren arakatzaile lehenetsi gisa ezartzeko iOS-en ezarpenetan</translation>
 <translation id="2515629240566999685">Seinalea egiaztatu.</translation>
+<translation id="2515761554693942801"><ph name="PROVIDER_ORIGIN" /> darabilten webguneetan Touch ID-rekin egiaztatzea aukeratu duzu. Baliteke hornitzaile horrek zure ordainketa-metodoari buruzko informazioa gorde izatea, baina <ph name="LINK_TEXT" />.</translation>
 <translation id="2521385132275182522">Grapa bat behean, eskuinetara</translation>
 <translation id="2521736961081452453">Sortu inprimaki bat</translation>
 <translation id="2523886232349826891">Gailu honetan soilik gordeko da</translation>
@@ -1488,6 +1491,7 @@
 <translation id="5051305769747448211">Zuzeneko komedia</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{Fitxategia Nearby Share bidez bidaltzeko, egin tokia (<ph name="DISK_SPACE_SIZE" />) gailuan}other{Fitxategiak Nearby Share bidez bidaltzeko, egin tokia (<ph name="DISK_SPACE_SIZE" />) gailuan}}</translation>
 <translation id="5056549851600133418">Zuretzako artikuluak</translation>
+<translation id="5060483733937416656"><ph name="PROVIDER_ORIGIN" /> darabilten webguneetan Windows Hello-rekin egiaztatzea aukeratu duzu. Baliteke hornitzaile horrek zure ordainketa-metodoari buruzko informazioa gorde izatea, baina <ph name="LINK_TEXT" />.</translation>
 <translation id="5061227663725596739"><ph name="LOOKALIKE_DOMAIN" /> esan nahi al zenuen?</translation>
 <translation id="5066056036849835175">Inprimaketa-historia</translation>
 <translation id="5068234115460527047">Estaldura-funtsak</translation>
diff --git a/components/strings/components_strings_gl.xtb b/components/strings/components_strings_gl.xtb
index d825e69..f511f6a 100644
--- a/components/strings/components_strings_gl.xtb
+++ b/components/strings/components_strings_gl.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">Método de recollida</translation>
 <translation id="1281476433249504884">Amontoador 1</translation>
 <translation id="1285320974508926690">Non traducir nunca este sitio</translation>
+<translation id="1288548991597756084">Garda a tarxeta de forma segura</translation>
 <translation id="1292571435393770077">Bandexa 16</translation>
 <translation id="1292701964462482250">"Hai software no teu ordenador que está evitando que Chrome se conecte de forma segura á web" (só para ordenadores con Windows)</translation>
 <translation id="1294154142200295408">Variacións da liña de comandos</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;Para solucionar o erro, fai clic en &lt;strong&gt;Conectar&lt;/strong&gt; na páxina que tentas abrir.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Paisaxismo</translation>
 <translation id="1513706915089223971">Lista de entradas do historial</translation>
+<translation id="1516097932025103760">Encriptarase e gardarase de forma segura. O CVC nunca se almacena.</translation>
 <translation id="1517433312004943670">O número de teléfono é obrigatorio</translation>
 <translation id="1519264250979466059">Data de compilación</translation>
 <translation id="1521159554480556801">Arte téxtil e fibras</translation>
@@ -1415,6 +1417,7 @@
 <translation id="483241715238664915">Activar advertencias</translation>
 <translation id="4834250788637067901">Métodos de pago, ofertas e enderezos que usan Google Pay</translation>
 <translation id="4838327282952368871">Onírico</translation>
+<translation id="4839087176073128681">Paga máis rápido a próxima vez e protexe a tarxeta coas medidas de seguranza de Google líderes no sector.</translation>
 <translation id="4840250757394056958">Ver historial de Chrome</translation>
 <translation id="484462545196658690">Automático</translation>
 <translation id="484671803914931257">Obtén un desconto en <ph name="MERCHANT_NAME" /> e noutros comerciantes</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb
index dcea2e6..e3e103e 100644
--- a/components/strings/components_strings_gu.xtb
+++ b/components/strings/components_strings_gu.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">પિકઅપ પદ્ધતિ</translation>
 <translation id="1281476433249504884">સ્ટૅકર 1</translation>
 <translation id="1285320974508926690">આ સાઇટનો ક્યારેય અનુવાદ કરશો નહીં</translation>
+<translation id="1288548991597756084">કાર્ડને સુરક્ષિત રીતે સાચવો</translation>
 <translation id="1292571435393770077">ટ્રે 16</translation>
 <translation id="1292701964462482250">"તમારા કમ્પ્યુટરમાંનું સૉફ્ટવેર Chromeને સુરક્ષિત રીતે વેબ સાથે કનેક્ટ થવાથી અટકાવે છે" (માત્ર Windows કમ્પ્યુટર)</translation>
 <translation id="1294154142200295408">આદેશ વાક્યમાં વિવિધતા</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;આ સમસ્યા ઉકેલવા માટે, તમે ખોલવાનો પ્રયાસ કરી રહ્યા છો એ પેજ પર &lt;strong&gt;કનેક્ટ કરો&lt;/strong&gt; પર ક્લિક કરો.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">લૅન્ડસ્કેપ ડિઝાઇન</translation>
 <translation id="1513706915089223971">ઇતિહાસના એન્ટ્રીની સૂચિ</translation>
+<translation id="1516097932025103760">તેને એન્ક્રિપ્ટ કરવામાં આવશે, તેને સુરક્ષિત રીતે સાચવવામાં આવશે અને CVC ક્યારેય સ્ટોર કરવામાં આવશે નહીં.</translation>
 <translation id="1517433312004943670">ફોન નંબર આવશ્યક</translation>
 <translation id="1519264250979466059">નિર્માણ તારીખ</translation>
 <translation id="1521159554480556801">ફાઇબર અને વસ્ત્રકળા</translation>
@@ -1416,6 +1418,7 @@
 <translation id="483241715238664915">ચેતવણીઓ ચાલુ કરો</translation>
 <translation id="4834250788637067901">Google Payનો ઉપયોગ કરતી ચુકવણી પદ્ધતિઓ, ઑફરો અને સરનામાં</translation>
 <translation id="4838327282952368871">સ્વપ્નશીલ</translation>
+<translation id="4839087176073128681">Googleની ઉદ્યોગ જગતની અગ્રણી સુરક્ષા સુવિધા વડે આગલી વખતે વધુ ઝડપથી ચુકવણી કરો અને તમારા કાર્ડને સુરક્ષિત રાખો.</translation>
 <translation id="4840250757394056958">તમારો Chrome ઇતિહાસ જુઓ</translation>
 <translation id="484462545196658690">ઑટો</translation>
 <translation id="484671803914931257"><ph name="MERCHANT_NAME" /> અને અન્ય ઘણા પર ડિસ્કાઉન્ટ મેળવો</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb
index 0761ca8b..fc2cdb3 100644
--- a/components/strings/components_strings_ka.xtb
+++ b/components/strings/components_strings_ka.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">გრანტები, სტიპენდიები და ფინანსური დახმარება</translation>
 <translation id="1048785276086539861">ანოტაციების რედაქტირებისას ეს დოკუმენტი დაბრუნდება ერთგვერდიან ხედზე</translation>
 <translation id="1050038467049342496">სხვა აპების დახურვა</translation>
+<translation id="1053959602163383901">თქვენ აირჩიეთ ავტორიზაციის მოწყობილობის მეშვეობით დადასტურება ვებსაიტებზე, რომელთა მიერაც გამოიყენება <ph name="PROVIDER_ORIGIN" />. ამ პროვაიდერს შეიძლებოდა შეენახა ინფორმაცია თქვენი გადახდის მეთოდის შესახებ. სურვილისამებრ, შეგიძლიათ <ph name="LINK_TEXT" />.</translation>
 <translation id="1055184225775184556">და დაბრუნება-დამატება</translation>
 <translation id="1056663316309890343">ფოტოების პროგრამული უზრუნველყოფა</translation>
 <translation id="1056898198331236512">გაფრთხილება</translation>
@@ -422,6 +423,7 @@
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> გვერდები არ ითარგმნება.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{როცა მართვის ეს საშუალება ჩართულია და სტატუსი აქტიურია, Chrome განსაზღვრავს, ადამიანთა რომელი ვრცელი ჯგუფის, ანუ ე.წ. „კოჰორტის“, მსგავსია თქვენი დათვალიერების ბოლოდროინდელი აქტივობა. რეკლამის განმთავსებლებს შეეძლებათ ჯგუფისთვის რეკლამის არჩევა, ხოლო თქვენი დათვალიერების აქტივობა კონფიდენციალურად შეინახება თქვენს მოწყობილობაზე. თქვენი ჯგუფი ყოველდღიურად განახლდება.}=1{როცა მართვის ეს საშუალება ჩართულია და სტატუსი აქტიურია, Chrome განსაზღვრავს, ადამიანთა რომელი ვრცელი ჯგუფის, ანუ ე.წ. „კოჰორტის“, მსგავსია თქვენი დათვალიერების ბოლოდროინდელი აქტივობა. რეკლამის განმთავსებლებს შეეძლებათ ჯგუფისთვის რეკლამის არჩევა, ხოლო თქვენი დათვალიერების აქტივობა კონფიდენციალურად შეინახება თქვენს მოწყობილობაზე. თქვენი ჯგუფი ყოველდღიურად განახლდება.}other{როცა მართვის ეს საშუალება ჩართულია და სტატუსი აქტიურია, Chrome განსაზღვრავს, ადამიანთა რომელი ვრცელი ჯგუფის, ანუ ე.წ. „კოჰორტის“, მსგავსია თქვენი დათვალიერების ბოლოდროინდელი აქტივობა. რეკლამის განმთავსებლებს შეეძლებათ ჯგუფისთვის რეკლამის არჩევა, ხოლო თქვენი დათვალიერების აქტივობა კონფიდენციალურად შეინახება თქვენს მოწყობილობაზე. თქვენი ჯგუფი {NUM_DAYS} დღეში ერთხელ განახლდება.}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 შეთავაზება}other{# შეთავაზება}}</translation>
+<translation id="2066915425250589881">მისი წაშლის მოთხოვნა</translation>
 <translation id="2068528718802935086">ჩვილები და ახალფეხადგმული ბავშვები</translation>
 <translation id="2071156619270205202">ეს ბარათი არ აკმაყოფილებს ვირტუალური ბარათის ნომრის მიღების კრიტერიუმებს.</translation>
 <translation id="2071692954027939183">შეტყობინებები ავტომატურად დაიბლოკა, რადგან, როგორც წესი, მათ მიღებას კრძალავთ ხოლმე</translation>
@@ -578,6 +580,7 @@
 <translation id="2512101340618156538">აკრძალულია (ნაგულისხმევად)</translation>
 <translation id="2512413427717747692">სისტემის ნაგულისხმევ ბრაუზერად Chrome-ის დაყენების ღილაკი, iOS პარამეტრებიდან Chrome სისტემის ნაგულისხმევ ბრაუზერად რომ დააყენოთ, დააჭირეთ კლავიშს Enter</translation>
 <translation id="2515629240566999685">თქვენს ზონაში სიგნალის შემოწმება</translation>
+<translation id="2515761554693942801">თქვენ აირჩიეთ Touch ID-ს მეშვეობით დადასტურება ვებსაიტებზე, რომელთა მიერაც გამოიყენება <ph name="PROVIDER_ORIGIN" />. ამ პროვაიდერს შეიძლებოდა შეენახა ინფორმაცია თქვენი გადახდის მეთოდის შესახებ. სურვილისამებრ, შეგიძლიათ <ph name="LINK_TEXT" />.</translation>
 <translation id="2521385132275182522">ქვედა მარჯვენა ნაწილის დასტეპლერება</translation>
 <translation id="2521736961081452453">ფორმის შექმნა</translation>
 <translation id="2523886232349826891">შეინახება მხოლოდ ამ მოწყობილობაზე</translation>
@@ -1492,6 +1495,7 @@
 <translation id="5051305769747448211">ლაივკომედია</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{ეს ფაილი მახლობლად გაზიარების მეშვეობით რომ გაგზავნოთ, გაათავისუფლეთ სივრცე (<ph name="DISK_SPACE_SIZE" />) თქვენს მოწყობილობაზე}other{ეს ფაილები მახლობლად გაზიარების მეშვეობით რომ გაგზავნოთ, გაათავისუფლეთ სივრცე (<ph name="DISK_SPACE_SIZE" />) თქვენს მოწყობილობაზე}}</translation>
 <translation id="5056549851600133418">თქვენთვის განკუთვნილი სტატიები</translation>
+<translation id="5060483733937416656">თქვენ აირჩიეთ Windows Hello-ს მეშვეობით დადასტურება ვებსაიტებზე, რომელთა მიერაც გამოიყენება <ph name="PROVIDER_ORIGIN" />. ამ პროვაიდერს შეიძლებოდა შეენახა ინფორმაცია თქვენი გადახდის მეთოდის შესახებ. სურვილისამებრ, შეგიძლიათ <ph name="LINK_TEXT" />.</translation>
 <translation id="5061227663725596739"><ph name="LOOKALIKE_DOMAIN" /> ხომ არ იგულისხმეთ?</translation>
 <translation id="5066056036849835175">ბეჭდვის ისტორია</translation>
 <translation id="5068234115460527047">ჰეჯირებისთვის გამიზნული სახსრები</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb
index 514ce73..5e2ead4 100644
--- a/components/strings/components_strings_lt.xtb
+++ b/components/strings/components_strings_lt.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">Dotacijos, stipendijos ir finansinė pagalba</translation>
 <translation id="1048785276086539861">Kai redaguosite komentarus, bus pateikta šio dokumento vieno puslapio peržiūra</translation>
 <translation id="1050038467049342496">Uždarykite kitas programas</translation>
+<translation id="1053959602163383901">Svetainėse, kuriose naudojama <ph name="PROVIDER_ORIGIN" />, pasirinkote patvirtinti naudodami autentifikavimo priemonės įrenginį. Šis teikėjas galėjo išsaugoti informaciją apie jūsų mokėjimo metodą, ir galite <ph name="LINK_TEXT" />.</translation>
 <translation id="1055184225775184556">&amp;Anuliuoti pridėjimą</translation>
 <translation id="1056663316309890343">Nuotraukų programinė įranga</translation>
 <translation id="1056898198331236512">Įspėjimas</translation>
@@ -426,6 +427,7 @@
 <translation id="2053111141626950936">Puslapiai, parašyti <ph name="LANGUAGE" />, verčiami nebus.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{Kai šis valdiklis įjungtas ir būsena aktyvi, „Chrome“ nustato, į kurią didelę žmonių grupę panašiausia jūsų pastaroji naršymo veikla. Reklamuotojai gali pasirinkti grupės skelbimus, o jūsų naršymo veikla saugoma privačiai jūsų įrenginyje. Grupė atnaujinama kiekvieną dieną.}=1{Kai šis valdiklis įjungtas ir būsena aktyvi, „Chrome“ nustato, į kurią didelę žmonių grupę panašiausia jūsų pastaroji naršymo veikla. Reklamuotojai gali pasirinkti grupės skelbimus, o jūsų naršymo veikla saugoma privačiai jūsų įrenginyje. Grupė atnaujinama kiekvieną dieną.}one{Kai šis valdiklis įjungtas ir būsena aktyvi, „Chrome“ nustato, į kurią didelę žmonių grupę panašiausia jūsų pastaroji naršymo veikla. Reklamuotojai gali pasirinkti grupės skelbimus, o jūsų naršymo veikla saugoma privačiai jūsų įrenginyje. Grupė atnaujinama kas {NUM_DAYS} dieną.}few{Kai šis valdiklis įjungtas ir būsena aktyvi, „Chrome“ nustato, į kurią didelę žmonių grupę panašiausia jūsų pastaroji naršymo veikla. Reklamuotojai gali pasirinkti grupės skelbimus, o jūsų naršymo veikla saugoma privačiai jūsų įrenginyje. Grupė atnaujinama kas {NUM_DAYS} dienas.}many{Kai šis valdiklis įjungtas ir būsena aktyvi, „Chrome“ nustato, į kurią didelę žmonių grupę panašiausia jūsų pastaroji naršymo veikla. Reklamuotojai gali pasirinkti grupės skelbimus, o jūsų naršymo veikla saugoma privačiai jūsų įrenginyje. Grupė atnaujinama kas {NUM_DAYS} dienos.}other{Kai šis valdiklis įjungtas ir būsena aktyvi, „Chrome“ nustato, į kurią didelę žmonių grupę panašiausia jūsų pastaroji naršymo veikla. Reklamuotojai gali pasirinkti grupės skelbimus, o jūsų naršymo veikla saugoma privačiai jūsų įrenginyje. Grupė atnaujinama kas {NUM_DAYS} dienų.}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 pasiūlymas}one{# pasiūlymas}few{# pasiūlymai}many{# pasiūlymo}other{# pasiūlymų}}</translation>
+<translation id="2066915425250589881">pateikti užklausą ją ištrinti</translation>
 <translation id="2068528718802935086">Kūdikiai ir pradedantys vaikščioti vaikai</translation>
 <translation id="2071156619270205202">Šiai kortelei negali būti suteiktas virtualios kortelės numeris.</translation>
 <translation id="2071692954027939183">Pranešimai automatiškai užblokuoti, nes įprastai jų neleidžiate</translation>
@@ -582,6 +584,7 @@
 <translation id="2512101340618156538">Neleidžiama (numatytasis nustatymas)</translation>
 <translation id="2512413427717747692">„Chrome“ nustatymo kaip numatytosios naršyklės režimas; paspauskite „Enter“, kad nustatytumėte „Chrome“ kaip numatytąją sistemos naršyklę „iOS“ nustatymuose</translation>
 <translation id="2515629240566999685">Patikrinti signalo stiprumą savo srityje</translation>
+<translation id="2515761554693942801">Svetainėse, kuriose naudojama <ph name="PROVIDER_ORIGIN" />, pasirinkote patvirtinti naudodami „Touch ID“. Šis teikėjas galėjo išsaugoti informaciją apie jūsų mokėjimo metodą, ir galite <ph name="LINK_TEXT" />.</translation>
 <translation id="2521385132275182522">Sankabėlė apačioje dešinėje</translation>
 <translation id="2521736961081452453">Sukurti formą</translation>
 <translation id="2523886232349826891">Išsaugota tik šiame įrenginyje</translation>
@@ -1502,6 +1505,7 @@
 <translation id="5051305769747448211">Komedija gyvai</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{Jei norite siųsti šį failą naudodami funkciją „Bendrinimas netoliese“, atlaisvinkite vietos (<ph name="DISK_SPACE_SIZE" />) įrenginyje}one{Jei norite siųsti šiuos failus naudodami funkciją „Bendrinimas netoliese“, atlaisvinkite vietos (<ph name="DISK_SPACE_SIZE" />) įrenginyje}few{Jei norite siųsti šiuos failus naudodami funkciją „Bendrinimas netoliese“, atlaisvinkite vietos (<ph name="DISK_SPACE_SIZE" />) įrenginyje}many{Jei norite siųsti šiuos failus naudodami funkciją „Bendrinimas netoliese“, atlaisvinkite vietos (<ph name="DISK_SPACE_SIZE" />) įrenginyje}other{Jei norite siųsti šiuos failus naudodami funkciją „Bendrinimas netoliese“, atlaisvinkite vietos (<ph name="DISK_SPACE_SIZE" />) įrenginyje}}</translation>
 <translation id="5056549851600133418">Jums skirti straipsniai</translation>
+<translation id="5060483733937416656">Svetainėse, kuriose naudojama <ph name="PROVIDER_ORIGIN" />, pasirinkote patvirtinti naudodami „Windows Hello“. Šis teikėjas galėjo išsaugoti informaciją apie jūsų mokėjimo metodą, ir galite <ph name="LINK_TEXT" />.</translation>
 <translation id="5061227663725596739">Turėjote omenyje <ph name="LOOKALIKE_DOMAIN" />?</translation>
 <translation id="5066056036849835175">Spausdinimo istorija</translation>
 <translation id="5068234115460527047">Rizikos draudimo fondai</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb
index b5be68d..3ff4cbc 100644
--- a/components/strings/components_strings_lv.xtb
+++ b/components/strings/components_strings_lv.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">Saņemšanas veids</translation>
 <translation id="1281476433249504884">1. izvades vieta</translation>
 <translation id="1285320974508926690">Nekad netulkot šo vietni</translation>
+<translation id="1288548991597756084">Droši saglabājiet karti</translation>
 <translation id="1292571435393770077">16. paplāte</translation>
 <translation id="1292701964462482250">“Programmatūra jūsu datorā, kuras dēļ pārlūkā Chrome nevar izveidot drošu tīmekļa savienojumu” (tikai Windows datoros)</translation>
 <translation id="1294154142200295408">Komandrindu varianti</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;Lai novērstu šo kļūdu, lapā, kuru mēģināt atvērt, noklikšķiniet uz &lt;strong&gt;Izveidot savienojumu&lt;/strong&gt;.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Ainavu arhitektūra</translation>
 <translation id="1513706915089223971">Vēstures ierakstu saraksts</translation>
+<translation id="1516097932025103760">Karte tiks šifrēta, droši saglabāta, un CVC kods nekad netiks saglabāts.</translation>
 <translation id="1517433312004943670">Jānorāda tālruņa numurs</translation>
 <translation id="1519264250979466059">Būvējuma datums</translation>
 <translation id="1521159554480556801">Šķiedras un tekstila māksla</translation>
@@ -1415,6 +1417,7 @@
 <translation id="483241715238664915">Ieslēgt brīdinājumus</translation>
 <translation id="4834250788637067901">Maksājumu veidi, piedāvājumi un adreses no pakalpojuma Google Pay</translation>
 <translation id="4838327282952368871">Mierīga</translation>
+<translation id="4839087176073128681">Nākamreiz maksājiet ātrāk un aizsargājiet savu karti ar nozarē vadošo Google drošības risinājumu.</translation>
 <translation id="4840250757394056958">Skatīt Chrome vēsturi</translation>
 <translation id="484462545196658690">Autom.</translation>
 <translation id="484671803914931257">Saņemiet atlaides, iepērkoties pie <ph name="MERCHANT_NAME" /> un citiem tirgotājiem</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb
index a5433f19..3343ca3c 100644
--- a/components/strings/components_strings_ml.xtb
+++ b/components/strings/components_strings_ml.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">ഗ്രാന്റുകളും സ്കോളർഷിപ്പുകളും സാമ്പത്തിക സഹായവും</translation>
 <translation id="1048785276086539861">നിങ്ങൾ കുറിപ്പുകൾ എഡിറ്റ് ചെയ്യുമ്പോൾ, ഈ ഡോക്യുമെന്റ് ഒറ്റ പേജ് കാഴ്ചയിലേക്ക് മടങ്ങുന്നു</translation>
 <translation id="1050038467049342496">മറ്റ് ആപ്പുകൾ അടയ്‌ക്കുക</translation>
+<translation id="1053959602163383901"><ph name="PROVIDER_ORIGIN" /> ഉപയോഗിക്കുന്ന വെബ്സൈറ്റുകളിൽ ഓതന്റിക്കേറ്റർ ഉപകരണം ഉപയോഗിച്ച് പരിശോധിച്ചുറപ്പിക്കാൻ നിങ്ങൾ തിരഞ്ഞെടുത്തു. നിങ്ങളുടെ പേയ്മെന്റ് രീതിയുമായി ബന്ധപ്പെട്ട വിവരങ്ങൾ ഈ ദാതാവ് സംഭരിച്ചിട്ടുണ്ടാകാം, നിങ്ങൾക്ക് ഇത് <ph name="LINK_TEXT" />.</translation>
 <translation id="1055184225775184556">&amp;ചേർത്തത് പഴയപടിയാക്കുക</translation>
 <translation id="1056663316309890343">ഫോട്ടോ സോഫ്‌റ്റ്‌വെയർ</translation>
 <translation id="1056898198331236512">മുന്നറിയിപ്പ്</translation>
@@ -425,6 +426,7 @@
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> ഭാഷയിലുള്ള പേജുകൾ വിവർത്തനം ചെയ്യില്ല.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{ഈ നിയന്ത്രണം ഓണായിരിക്കുകയും നില 'സജീവം' ആയിരിക്കുകയും ആണെങ്കിൽ, നിങ്ങളുടെ അടുത്തിടെയുള്ള ബ്രൗസിംഗ് ആക്റ്റിവിറ്റിയുമായി ഏറ്റവും സാമ്യമുള്ള ആളുകളുടെ ഗ്രൂപ്പ് അല്ലെങ്കിൽ "സമാന വിഭാഗത്തിൽപ്പെട്ടവർ" ഏതാണ് എന്ന് Chrome നിർണ്ണയിക്കുന്നു. പരസ്യദാതാക്കൾക്ക് ഗ്രൂപ്പിനെ കാണിക്കാൻ പരസ്യങ്ങൾ തിരഞ്ഞെടുക്കാനും നിങ്ങളുടെ ബ്രൗസിംഗ് ആക്റ്റിവിറ്റി ഉപകരണത്തിൽ സ്വകാര്യമായി സൂക്ഷിക്കാനുമാകും. നിങ്ങളുടെ ഗ്രൂപ്പ് എല്ലാ ദിവസവും അപ്‌ഡേറ്റ് ചെയ്യുന്നു.}=1{ഈ നിയന്ത്രണം ഓണായിരിക്കുകയും നില 'സജീവം' ആയിരിക്കുകയും ആണെങ്കിൽ, നിങ്ങളുടെ അടുത്തിടെയുള്ള ബ്രൗസിംഗ് ആക്റ്റിവിറ്റിയുമായി ഏറ്റവും സാമ്യമുള്ള ആളുകളുടെ ഗ്രൂപ്പ് അല്ലെങ്കിൽ "സമാന വിഭാഗത്തിൽപ്പെട്ടവർ" ഏതാണ് എന്ന് Chrome നിർണ്ണയിക്കുന്നു. പരസ്യദാതാക്കൾക്ക് ഗ്രൂപ്പിനെ കാണിക്കാൻ പരസ്യങ്ങൾ തിരഞ്ഞെടുക്കാനും നിങ്ങളുടെ ബ്രൗസിംഗ് ആക്റ്റിവിറ്റി ഉപകരണത്തിൽ സ്വകാര്യമായി സൂക്ഷിക്കാനുമാകും. നിങ്ങളുടെ ഗ്രൂപ്പ് എല്ലാ ദിവസവും അപ്‌ഡേറ്റ് ചെയ്യുന്നു.}other{ഈ നിയന്ത്രണം ഓണായിരിക്കുകയും നില 'സജീവം' ആയിരിക്കുകയും ആണെങ്കിൽ, നിങ്ങളുടെ അടുത്തിടെയുള്ള ബ്രൗസിംഗ് ആക്റ്റിവിറ്റിയുമായി ഏറ്റവും സാമ്യമുള്ള ആളുകളുടെ ഗ്രൂപ്പ് അല്ലെങ്കിൽ "സമാന വിഭാഗത്തിൽപ്പെട്ടവർ" ഏതാണ് എന്ന് Chrome നിർണ്ണയിക്കുന്നു. പരസ്യദാതാക്കൾക്ക് ഗ്രൂപ്പിനെ കാണിക്കാൻ പരസ്യങ്ങൾ തിരഞ്ഞെടുക്കാനും നിങ്ങളുടെ ബ്രൗസിംഗ് ആക്റ്റിവിറ്റി ഉപകരണത്തിൽ സ്വകാര്യമായി സൂക്ഷിക്കാനുമാകും. നിങ്ങളുടെ ഗ്രൂപ്പ് ഓരോ {NUM_DAYS} ദിവസം കൂടുമ്പോഴും അപ്‌ഡേറ്റ് ചെയ്യുന്നു.}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{ഒരു നിർദ്ദേശം}other{# നിർദ്ദേശങ്ങൾ}}</translation>
+<translation id="2066915425250589881">ഇല്ലാതാക്കാൻ അഭ്യർത്ഥിക്കാവുന്നതാണ്</translation>
 <translation id="2068528718802935086">ശിശുക്കളും പിച്ചവയ്ക്കുന്ന കുട്ടികളും</translation>
 <translation id="2071156619270205202">ഈ കാർഡ് വെർച്വൽ കാർഡ് നമ്പറിന് യോഗ്യമല്ല.</translation>
 <translation id="2071692954027939183">നിങ്ങൾ സാധാരണയായി അറിയിപ്പുകൾ അനുവദിക്കാത്തതിനാൽ അവ സ്വയമേവ ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു</translation>
@@ -581,6 +583,7 @@
 <translation id="2512101340618156538">അനുവദനീയമല്ല (ഡിഫോൾട്ട്)</translation>
 <translation id="2512413427717747692">ഡിഫോൾട്ട് ബ്രൗസർ ബട്ടണായി Chrome സജ്ജീകരിക്കുക, iOS ക്രമീകരണത്തിൽ സിസ്റ്റത്തിന്റെ ഡിഫോൾട്ട് ബ്രൗസറായി Chrome സജ്ജീകരിക്കുന്നതിന് Enter അമർത്തുക</translation>
 <translation id="2515629240566999685">നിങ്ങളുടെ ഏരിയയിലെ സിഗ്‌നൽ പരിശോധിക്കുന്നു</translation>
+<translation id="2515761554693942801"><ph name="PROVIDER_ORIGIN" /> ഉപയോഗിക്കുന്ന വെബ്സൈറ്റുകളിൽ Touch ID ഉപയോഗിച്ച് പരിശോധിച്ചുറപ്പിക്കാൻ നിങ്ങൾ തിരഞ്ഞെടുത്തു. നിങ്ങളുടെ പേയ്മെന്റ് രീതിയുമായി ബന്ധപ്പെട്ട വിവരങ്ങൾ ഈ ദാതാവ് സംഭരിച്ചിട്ടുണ്ടാകാം, നിങ്ങൾക്ക് ഇത് <ph name="LINK_TEXT" />.</translation>
 <translation id="2521385132275182522">താഴെ വലതുവശത്ത് സ്‌റ്റേപ്പിൾ ചെയ്യുക</translation>
 <translation id="2521736961081452453">ഫോം സൃഷ്ടിക്കുക</translation>
 <translation id="2523886232349826891">ഈ ഉപകരണത്തിൽ മാത്രം സംരക്ഷിക്കപ്പെടും</translation>
@@ -1497,6 +1500,7 @@
 <translation id="5051305769747448211">തൽസമയ ഹാസ്യം</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{സമീപമുള്ള പങ്കിടൽ ഉപയോഗിച്ച് ഈ ഫയൽ അയയ്‌ക്കാൻ നിങ്ങളുടെ ഉപകരണത്തിൽ ഇടം (<ph name="DISK_SPACE_SIZE" />) സൃഷ്ടിക്കുക}other{സമീപമുള്ള പങ്കിടൽ ഉപയോഗിച്ച് ഈ ഫയലുകൾ അയയ്‌ക്കാൻ നിങ്ങളുടെ ഉപകരണത്തിൽ ഇടം (<ph name="DISK_SPACE_SIZE" />) സൃഷ്ടിക്കുക}}</translation>
 <translation id="5056549851600133418">നിങ്ങൾക്കുള്ള ലേഖനങ്ങൾ</translation>
+<translation id="5060483733937416656"><ph name="PROVIDER_ORIGIN" /> ഉപയോഗിക്കുന്ന വെബ്സൈറ്റുകളിൽ Windows Hello ഉപയോഗിച്ച് പരിശോധിച്ചുറപ്പിക്കാൻ നിങ്ങൾ തിരഞ്ഞെടുത്തു. നിങ്ങളുടെ പേയ്മെന്റ് രീതിയുമായി ബന്ധപ്പെട്ട വിവരങ്ങൾ ഈ ദാതാവ് സംഭരിച്ചിട്ടുണ്ടാകാം, നിങ്ങൾക്ക് ഇത് <ph name="LINK_TEXT" />.</translation>
 <translation id="5061227663725596739"><ph name="LOOKALIKE_DOMAIN" /> ആണോ നിങ്ങൾ ഉദ്ദേശിച്ചത്?</translation>
 <translation id="5066056036849835175">പ്രിന്റിംഗ് ചരിത്രം</translation>
 <translation id="5068234115460527047">ഹെഡ്‌ജ് ഫണ്ടുകൾ</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb
index 42daf99..31e691ee 100644
--- a/components/strings/components_strings_mn.xtb
+++ b/components/strings/components_strings_mn.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">Тусламж, тэтгэлэг, санхүүгийн тусламж</translation>
 <translation id="1048785276086539861">Та тэмдэглэгээг засах үед энэ документ нэг хуудсаар харах руу буцна</translation>
 <translation id="1050038467049342496">Бусад аппыг хаах</translation>
+<translation id="1053959602163383901">Та <ph name="PROVIDER_ORIGIN" />-г ашигладаг вебсайтууд дээр баталгаажуулагч төхөөрөмжөөр баталгаажуулахаар сонгосон. Энэ үйлчилгээ үзүүлэгч таны төлбөрийн хэрэгслийн талаарх мэдээллийг хадгалсан байж болзошгүй бөгөөд та <ph name="LINK_TEXT" /> боломжтой.</translation>
 <translation id="1055184225775184556">&amp; Нэмэх үйлдлийг буцаах</translation>
 <translation id="1056663316309890343">Зургийн программ хангамж</translation>
 <translation id="1056898198331236512">Анхааруулга</translation>
@@ -426,6 +427,7 @@
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> хэл дээрх хуудсыг орчуулахгүй.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{Энэ хяналт асаалттай бөгөөд төлөв нь идэвхтэй үед Chrome таны саяхны хөтчийн үйл ажиллагаа аль том хэмжээний бүлэг хүн эсвэл "нэг үеийнхэн"-тэй хамгийн төстэй болохыг тодорхойлно. Сурталчлагчид бүлэгт зориулж зар сонгох боломжтой бөгөөд хөтчийн үйл ажиллагааг таны төхөөрөмж дээр хувийн байлгадаг. Таны бүлгийг өдөр тутам шинэчилдэг.}=1{Энэ хяналт асаалттай бөгөөд төлөв нь идэвхтэй үед Chrome таны саяхны хөтчийн үйл ажиллагаа аль том хэмжээний бүлэг хүн эсвэл "нэг үеийнхэн"-тэй хамгийн төстэй болохыг тодорхойлно. Сурталчлагчид бүлэгт зориулж зар сонгох боломжтой бөгөөд хөтчийн үйл ажиллагааг таны төхөөрөмж дээр хувийн байлгадаг. Таны бүлгийг өдөр тутам шинэчилдэг.}other{Энэ хяналт асаалттай бөгөөд төлөв нь идэвхтэй үед Chrome таны саяхны хөтчийн үйл ажиллагаа аль том хэмжээний бүлэг хүн эсвэл "нэг үеийнхэн"-тэй хамгийн төстэй болохыг тодорхойлно. Сурталчлагчид бүлэгт зориулж зар сонгох боломжтой бөгөөд хөтчийн үйл ажиллагааг таны төхөөрөмж дээр хувийн байлгадаг. Таны бүлгийг {NUM_DAYS} өдөр тутам шинэчилдэг.}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 зөвлөмж}other{# зөвлөмж}}</translation>
+<translation id="2066915425250589881">устгуулах хүсэлт тавих</translation>
 <translation id="2068528718802935086">Нярай, хөлд орж буй хүүхэд</translation>
 <translation id="2071156619270205202">Энэ карт нь виртуал картын дугаарын эрхгүй байна.</translation>
 <translation id="2071692954027939183">Та мэдэгдлийг ихэвчлэн зөвшөөрдөггүй тул тэдгээрийг автоматаар блоклосон</translation>
@@ -582,6 +584,7 @@
 <translation id="2512101340618156538">Зөвшөөрөөгүй (өгөгдмөл)</translation>
 <translation id="2512413427717747692">Chrome-г өгөгдмөл хөтчийн товчлуур болгон тохируулах, iOS-н тохиргоонд Chrome-г системийн өгөгдмөл хөтөч болгон тохируулахын тулд Enter дээр дарна уу</translation>
 <translation id="2515629240566999685">Таны байгаа газрын дохиог шалгаж байна</translation>
+<translation id="2515761554693942801">Та <ph name="PROVIDER_ORIGIN" />-г ашигладаг вебсайтууд дээр Touch ID-р баталгаажуулахаар сонгосон. Энэ үйлчилгээ үзүүлэгч таны төлбөрийн хэрэгслийн талаарх мэдээллийг хадгалсан байж болзошгүй бөгөөд та <ph name="LINK_TEXT" /> боломжтой.</translation>
 <translation id="2521385132275182522">Баруун доод буланд үдэх</translation>
 <translation id="2521736961081452453">Маягт үүсгэх</translation>
 <translation id="2523886232349826891">Зөвхөн энэ төхөөрөмж дээр хадгалсан</translation>
@@ -1502,6 +1505,7 @@
 <translation id="5051305769747448211">Шууд хошин шог</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{Ойролцоо хуваалцахыг ашиглан энэ файлыг илгээхийн тулд төхөөрөмж дээрээ сул зай (<ph name="DISK_SPACE_SIZE" />) гаргана уу}other{Ойролцоо хуваалцахыг ашиглан эдгээр файлыг илгээхийн тулд төхөөрөмж дээрээ сул зай (<ph name="DISK_SPACE_SIZE" />) гаргана уу}}</translation>
 <translation id="5056549851600133418">Танд зориулсан нийтлэл</translation>
+<translation id="5060483733937416656">Та <ph name="PROVIDER_ORIGIN" />-г ашигладаг вебсайтууд дээр Windows Hello-р баталгаажуулахаар сонгосон. Энэ үйлчилгээ үзүүлэгч таны төлбөрийн хэрэгслийн талаарх мэдээллийг хадгалсан байж болзошгүй бөгөөд та <ph name="LINK_TEXT" /> боломжтой.</translation>
 <translation id="5061227663725596739">Та <ph name="LOOKALIKE_DOMAIN" />-г хайсан уу?</translation>
 <translation id="5066056036849835175">Хэвлэлийн түүх</translation>
 <translation id="5068234115460527047">Хэдж сан</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index 067200d..914f0bc9 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">Geran, biasiswa &amp; bantuan kewangan</translation>
 <translation id="1048785276086539861">Apabila anda mengedit anotasi, dokumen ini akan kembali kepada paparan satu halaman</translation>
 <translation id="1050038467049342496">Tutup apl lain</translation>
+<translation id="1053959602163383901">Anda memilih untuk mengesahkan dengan peranti pengesah pada laman web yang menggunakan <ph name="PROVIDER_ORIGIN" />. Pembekal ini mungkin telah menyimpan maklumat tentang kaedah pembayaran anda, yang boleh anda <ph name="LINK_TEXT" />.</translation>
 <translation id="1055184225775184556">&amp;Buat Asal Tambahkan</translation>
 <translation id="1056663316309890343">Perisian foto</translation>
 <translation id="1056898198331236512">Amaran</translation>
@@ -426,6 +427,7 @@
 <translation id="2053111141626950936">Halaman dalam <ph name="LANGUAGE" /> tidak akan diterjemah.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{Apabila kawalan ini dihidupkan dan status adalah aktif, Chrome akan menentukan kumpulan besar orang, atau "kohort" yang paling serupa dengan aktiviti penyemakan imbas anda baru-baru ini. Pengiklan boleh memilih iklan untuk kumpulan itu dan aktiviti penyemakan imbas anda dipastikan tertutup pada peranti anda. Kumpulan anda dikemas kini setiap hari.}=1{Apabila kawalan ini dihidupkan dan status adalah aktif, Chrome akan menentukan kumpulan besar orang, atau "kohort" yang paling serupa dengan aktiviti penyemakan imbas anda baru-baru ini. Pengiklan boleh memilih iklan untuk kumpulan itu dan aktiviti penyemakan imbas anda dipastikan tertutup pada peranti anda. Kumpulan anda dikemas kini setiap hari.}other{Apabila kawalan ini dihidupkan dan status adalah aktif, Chrome akan menentukan kumpulan besar orang, atau "kohort" yang paling serupa dengan aktiviti penyemakan imbas anda baru-baru ini. Pengiklan boleh memilih iklan untuk kumpulan itu dan aktiviti penyemakan imbas anda dipastikan tertutup pada peranti anda. Kumpulan anda dikemas kini setiap {NUM_DAYS} hari.}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 cadangan}other{# cadangan}}</translation>
+<translation id="2066915425250589881">permintaan untuk dipadamkan</translation>
 <translation id="2068528718802935086">Bayi &amp; kanak-kanak kecil</translation>
 <translation id="2071156619270205202">Kad ini tidak layak untuk nombor kad maya.</translation>
 <translation id="2071692954027939183">Pemberitahuan disekat secara automatik kerana biasanya anda tidak membenarkan pemberitahuan</translation>
@@ -582,6 +584,7 @@
 <translation id="2512101340618156538">Tidak dibenarkan (lalai)</translation>
 <translation id="2512413427717747692">Tetapkan Chrome sebagai butang penyemak imbas lalai, tekan Enter untuk menetapkan Chrome sebagai penyemak imbas lalai sistem dalam tetapan iOS</translation>
 <translation id="2515629240566999685">Semak isyarat di kawasan anda</translation>
+<translation id="2515761554693942801">Anda memilih untuk mengesahkan dengan Touch ID pada laman web yang menggunakan <ph name="PROVIDER_ORIGIN" />. Pembekal ini mungkin telah menyimpan maklumat tentang kaedah pembayaran anda, yang boleh anda <ph name="LINK_TEXT" />.</translation>
 <translation id="2521385132275182522">Kokot bawah sebelah kanan</translation>
 <translation id="2521736961081452453">Buat borang</translation>
 <translation id="2523886232349826891">Disimpan pada peranti ini sahaja</translation>
@@ -1502,6 +1505,7 @@
 <translation id="5051305769747448211">Jenaka langsung</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{Untuk menghantar fail ini menggunakan Kongsi Berdekatan, kosongkan ruang (<ph name="DISK_SPACE_SIZE" />) pada peranti anda}other{Untuk menghantar fail ini menggunakan Kongsi Berdekatan, kosongkan ruang (<ph name="DISK_SPACE_SIZE" />) pada peranti anda}}</translation>
 <translation id="5056549851600133418">Artikel untuk anda</translation>
+<translation id="5060483733937416656">Anda memilih untuk mengesahkan dengan Windows Hello pada laman web yang menggunakan <ph name="PROVIDER_ORIGIN" />. Pembekal ini mungkin telah menyimpan maklumat tentang kaedah pembayaran anda, yang boleh anda <ph name="LINK_TEXT" />.</translation>
 <translation id="5061227663725596739">Adakah anda maksudkan <ph name="LOOKALIKE_DOMAIN" />?</translation>
 <translation id="5066056036849835175">Sejarah pencetakan</translation>
 <translation id="5068234115460527047">Dana lindung nilai</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb
index 21a35ee8..1bdf708d 100644
--- a/components/strings/components_strings_my.xtb
+++ b/components/strings/components_strings_my.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">အလှူငွေ၊ ပညာသင်ထောက်ပံ့ကြေးနှင့် ငွေကြေးအကူအညီ</translation>
 <translation id="1048785276086539861">မှတ်ချက်များတည်းဖြတ်ပါက ဤမှတ်တမ်းသည် စာမျက်နှာတစ်ခုတည်းသို့ ပြန်ပြောင်းသွားမည်</translation>
 <translation id="1050038467049342496">အခြား အက်ပ်များကို ပိတ်ပါ</translation>
+<translation id="1053959602163383901"><ph name="PROVIDER_ORIGIN" /> သုံးသည့် ဝဘ်ဆိုက်များတွင် အထောက်အထားစိစစ်သည့်စက်ဖြင့် အတည်ပြုရန် သင်ရွေးထားသည်။ သင့်ငွေပေးချေနည်းလမ်း အချက်အလက်တွေကို ဤပံ့ပိုးသူက သိမ်းထားနိုင်ပြီး ၎င်းတို့ကို <ph name="LINK_TEXT" />နိုင်ပါသည်။</translation>
 <translation id="1055184225775184556">&amp;ထည့်ပေးမှု တစ်ဆင့်နောက်ပြန်ရန်</translation>
 <translation id="1056663316309890343">ဓာတ်ပုံဆော့ဖ်ဝဲ</translation>
 <translation id="1056898198331236512">သတိပေးချက်</translation>
@@ -427,6 +428,7 @@
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> ဘာသာဖြင့် စာမျက်နှာများကို ဘာသာပြန်မည် မဟုတ်ပါ။</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{ဤထိန်းချုပ်မှုကို ဖွင့်ထားပြီး သုံးနေသည့် အခြေအနေပြသောအခါ Chrome သည် သင်၏မကြာသေးမီက ကြည့်ရှုခြင်းများနှင့် အနီးစပ်ဆုံးတူသော လူအဖွဲ့ကြီး (သို့) “တစ်ချိန်တည်းအတူတကွ လုပ်ဆောင်ခြင်း” ကို သတ်မှတ်သည်။ ကြော်ငြာရှင်များက အဖွဲ့အတွက် ကြော်ငြာများကို ရွေးနိုင်ပြီး သင်၏ကြည့်ရှုခြင်းများကို သင့်စက်တွင် သီးသန့်ထားရှိသည်။ သင့်အဖွဲ့ကို နေ့စဉ် အပ်ဒိတ်လုပ်သည်။}=1{ဤထိန်းချုပ်မှုကို ဖွင့်ထားပြီး သုံးနေသည့် အခြေအနေပြသောအခါ Chrome သည် သင်၏မကြာသေးမီက ကြည့်ရှုခြင်းများနှင့် အနီးစပ်ဆုံးတူသော လူအဖွဲ့ကြီး (သို့) “တစ်ချိန်တည်းအတူတကွ လုပ်ဆောင်ခြင်း” ကို သတ်မှတ်သည်။ ကြော်ငြာရှင်များက အဖွဲ့အတွက် ကြော်ငြာများကို ရွေးနိုင်ပြီး သင်၏ကြည့်ရှုခြင်းများကို သင့်စက်တွင် သီးသန့်ထားရှိသည်။ သင့်အဖွဲ့ကို နေ့စဉ် အပ်ဒိတ်လုပ်သည်။}other{ဤထိန်းချုပ်မှုကို ဖွင့်ထားပြီး သုံးနေသည့် အခြေအနေပြသောအခါ Chrome သည် သင်၏မကြာသေးမီက ကြည့်ရှုခြင်းများနှင့် အနီးစပ်ဆုံးတူသော လူအဖွဲ့ကြီး (သို့) “တစ်ချိန်တည်းအတူတကွ လုပ်ဆောင်ခြင်း” ကို သတ်မှတ်သည်။ ကြော်ငြာရှင်များက အဖွဲ့အတွက် ကြော်ငြာများကို ရွေးနိုင်ပြီး သင်၏ကြည့်ရှုခြင်းများကို သင့်စက်တွင် သီးသန့်ထားရှိသည်။ သင့်အဖွဲ့ကို {NUM_DAYS} ရက်တစ်ကြိမ် အပ်ဒိတ်လုပ်သည်။}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{အကြံပြုချက် ၁ ခု}other{အကြံပြုချက် # ခု}}</translation>
+<translation id="2066915425250589881">ဖျက်ရန် တောင်းဆို</translation>
 <translation id="2068528718802935086">မွေးကင်းစနှင့် လမ်းလျှောက်ခါစကလေးများ</translation>
 <translation id="2071156619270205202">ဤကတ်သည် ပကတိအသွင်ကတ်နံပါတ်အတွက် သတ်မှတ်ချက်မပြည့်မီပါ။</translation>
 <translation id="2071692954027939183">အကြောင်းကြားချက်များကို သင်က ခွင့်ပြုလေ့မရှိသဖြင့် ၎င်းတို့ကို အလိုအလျောက် ပိတ်ထားသည်</translation>
@@ -583,6 +585,7 @@
 <translation id="2512101340618156538">ခွင့်ပြုမထားပါ (မူရင်း)</translation>
 <translation id="2512413427717747692">Chrome ကို မူရင်းဘရောင်ဇာအနေဖြင့် သတ်မှတ်ခြင်း။ Chrome ကို iOS ဆက်တင်များတွင် စနစ်၏ မူရင်းဘရောင်ဇာအဖြစ် သတ်မှတ်ရန် Enter ခလုတ် နှိပ်ပါ</translation>
 <translation id="2515629240566999685">သင့်နေရာဒေသရှိ လှိုင်းဆွဲအားကို စစ်ဆေးနေသည်</translation>
+<translation id="2515761554693942801"><ph name="PROVIDER_ORIGIN" /> သုံးသည့် ဝဘ်ဆိုက်များတွင် Touch ID ဖြင့် အတည်ပြုရန် သင်ရွေးထားသည်။ သင့်ငွေပေးချေနည်းလမ်း အချက်အလက်တွေကို ဤပံ့ပိုးသူက သိမ်းထားနိုင်ပြီး ၎င်းတို့ကို <ph name="LINK_TEXT" />နိုင်ပါသည်။</translation>
 <translation id="2521385132275182522">ညာဘက်အောက်ခြေတွင် ချုပ်စက်ဖြင့် ချုပ်ရန်</translation>
 <translation id="2521736961081452453">ဖောင်ပြုလုပ်ရန်</translation>
 <translation id="2523886232349826891">ဤစက်တွင်သာ သိမ်းထားသည်</translation>
@@ -1502,6 +1505,7 @@
 <translation id="5051305769747448211">တိုက်ရိုက်လွှင့် ဟာသ</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{‘အနီးတစ်ဝိုက် မျှဝေခြင်း’ သုံးပြီး ဤဖိုင်ကိုပို့ရန် သင်၏စက်တွင် နေရာလွတ် (<ph name="DISK_SPACE_SIZE" />) ပြုလုပ်ပါ}other{‘အနီးတစ်ဝိုက် မျှဝေခြင်း’ သုံးပြီး ဤဖိုင်များကိုပို့ရန် သင်၏စက်တွင် နေရာလွတ် (<ph name="DISK_SPACE_SIZE" />) ပြုလုပ်ပါ}}</translation>
 <translation id="5056549851600133418">သင့်အတွက်ဆောင်းပါးများ</translation>
+<translation id="5060483733937416656"><ph name="PROVIDER_ORIGIN" /> သုံးသည့် ဝဘ်ဆိုက်များတွင် Windows Hello ဖြင့် အတည်ပြုရန် သင်ရွေးထားသည်။ သင့်ငွေပေးချေနည်းလမ်း အချက်အလက်တွေကို ဤပံ့ပိုးသူက သိမ်းထားနိုင်ပြီး ၎င်းတို့ကို <ph name="LINK_TEXT" />နိုင်ပါသည်။</translation>
 <translation id="5061227663725596739"><ph name="LOOKALIKE_DOMAIN" /> ကို ဆိုလိုခြင်းဖြစ်ပါသလား။</translation>
 <translation id="5066056036849835175">ပုံနှိပ်ထုတ်ယူမှု မှတ်တမ်း</translation>
 <translation id="5068234115460527047">သီးသန့် ရင်းနှီးမြှုပ်နှံငွေ</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb
index 806896f..3eb34b2e 100644
--- a/components/strings/components_strings_nl.xtb
+++ b/components/strings/components_strings_nl.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">Ophaalmethode</translation>
 <translation id="1281476433249504884">Stapeleenheid 1</translation>
 <translation id="1285320974508926690">Deze site nooit vertalen</translation>
+<translation id="1288548991597756084">Kaart beveiligd opslaan</translation>
 <translation id="1292571435393770077">Lade 16</translation>
 <translation id="1292701964462482250">'Software op je computer voorkomt dat Chrome veilig verbinding kan maken met internet' (alleen Windows-computers)</translation>
 <translation id="1294154142200295408">Opdrachtregelvarianten</translation>
@@ -223,6 +224,7 @@
    &lt;p&gt;​K​li​k ​op​ &lt;​st​ro​ng​&gt;V​er​bi​nd​in​g ​ma​ke​n&lt;​/s​tr​on​g&gt;​ o​p ​de​ p​ag​in​a ​di​e ​je​ p​ro​be​er​t ​te​ o​pe​ne​n ​om​ d​ez​e ​fo​ut​ o​p ​te​ l​os​se​n.​&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Landschapsontwerp</translation>
 <translation id="1513706915089223971">Lijst met geschiedenisitems</translation>
+<translation id="1516097932025103760">De kaart wordt versleuteld en beveiligd opgeslagen en de CVC wordt nooit opgeslagen.</translation>
 <translation id="1517433312004943670">Telefoonnummer vereist</translation>
 <translation id="1519264250979466059">Datum van build</translation>
 <translation id="1521159554480556801">Textielkunst</translation>
@@ -1408,6 +1410,7 @@
 <translation id="483241715238664915">Waarschuwingen aanzetten</translation>
 <translation id="4834250788637067901">Betaalmethoden, aanbiedingen en adressen via Google Pay</translation>
 <translation id="4838327282952368871">Dromerig</translation>
+<translation id="4839087176073128681">Betaal de volgende keer sneller en bescherm je kaart met de toonaangevende beveiliging van Google.</translation>
 <translation id="4840250757394056958">Je Chrome-geschiedenis bekijken</translation>
 <translation id="484462545196658690">Auto</translation>
 <translation id="484671803914931257">Krijg korting bij onder andere <ph name="MERCHANT_NAME" /></translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb
index 7b54c6b7..cd5ae9e 100644
--- a/components/strings/components_strings_no.xtb
+++ b/components/strings/components_strings_no.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">Legater, stipender og økonomisk støtte</translation>
 <translation id="1048785276086539861">Når du redigerer annoteringer, går dette dokumentet tilbake til enkeltsidevisning</translation>
 <translation id="1050038467049342496">Lukk andre apper</translation>
+<translation id="1053959602163383901">Du har valgt å bekrefte med en autentiseringsenhet på nettsteder som bruker <ph name="PROVIDER_ORIGIN" />. Denne leverandøren kan ha lagret informasjon om betalingsmåten din, som du kan <ph name="LINK_TEXT" />.</translation>
 <translation id="1055184225775184556">&amp;Angre tilleggingen</translation>
 <translation id="1056663316309890343">Fotoprogramvare</translation>
 <translation id="1056898198331236512">Advarsel</translation>
@@ -426,6 +427,7 @@
 <translation id="2053111141626950936">Sider på <ph name="LANGUAGE" /> oversettes ikke.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{Når denne kontrollen er på og statusen er aktiv, bestemmer Chrome hvilken stor gruppe mennesker, eller "kohort", den siste nettleseraktiviteten din ligner mest på. Annonsører kan velge annonser for gruppen, og nettlesingsaktiviteten din holdes privat på enheten din. Gruppen din oppdateres hver dag.}=1{Når denne kontrollen er på og statusen er aktiv, bestemmer Chrome hvilken stor gruppe mennesker, eller "kohort", den siste nettleseraktiviteten din ligner mest på. Annonsører kan velge annonser for gruppen, og nettlesingsaktiviteten din holdes privat på enheten din. Gruppen din oppdateres hver dag.}other{Når denne kontrollen er på og statusen er aktiv, bestemmer Chrome hvilken stor gruppe mennesker, eller "kohort", den siste nettleseraktiviteten din ligner mest på. Annonsører kan velge annonser for gruppen, og nettlesingsaktiviteten din holdes privat på enheten din. Gruppen oppdateres hver {NUM_DAYS}. dag.}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 forslag}other{# forslag}}</translation>
+<translation id="2066915425250589881">be om å få slettet</translation>
 <translation id="2068528718802935086">Babyer og småbarn</translation>
 <translation id="2071156619270205202">Dette kortet er ikke kvalifisert for virtuelt kortnummer.</translation>
 <translation id="2071692954027939183">Varsler ble blokkert automatisk fordi du vanligvis ikke tillater dem</translation>
@@ -582,6 +584,7 @@
 <translation id="2512101340618156538">Ikke tillatt (standard)</translation>
 <translation id="2512413427717747692">Knappen «Angi Chrome som standardnettleser» – trykk på Enter for å angi Chrome som systemets standardnettleser i iOS-innstillingene</translation>
 <translation id="2515629240566999685">Sjekk signalet i området ditt</translation>
+<translation id="2515761554693942801">Du har valgt å bekrefte med Touch ID på nettsteder som bruker <ph name="PROVIDER_ORIGIN" />. Denne leverandøren kan ha lagret informasjon om betalingsmåten din, som du kan <ph name="LINK_TEXT" />.</translation>
 <translation id="2521385132275182522">Stift nede til høyre</translation>
 <translation id="2521736961081452453">Opprett skjema</translation>
 <translation id="2523886232349826891">Kun lagret på denne enheten</translation>
@@ -1501,6 +1504,7 @@
 <translation id="5051305769747448211">Livekomedie</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{For å sende denne filen med nærdeling, frigjør plass (<ph name="DISK_SPACE_SIZE" />) på enheten}other{For å sende disse filene med nærdeling, frigjør plass (<ph name="DISK_SPACE_SIZE" />) på enheten}}</translation>
 <translation id="5056549851600133418">Artikler for deg</translation>
+<translation id="5060483733937416656">Du har valgt å bekrefte med Windows Hello på nettsteder som bruker <ph name="PROVIDER_ORIGIN" />. Denne leverandøren kan ha lagret informasjon om betalingsmåten din, som du kan <ph name="LINK_TEXT" />.</translation>
 <translation id="5061227663725596739">Mente du <ph name="LOOKALIKE_DOMAIN" />?</translation>
 <translation id="5066056036849835175">Utskriftslogg</translation>
 <translation id="5068234115460527047">Hedgefond</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb
index 0f0928a6..9c8b927 100644
--- a/components/strings/components_strings_pt-PT.xtb
+++ b/components/strings/components_strings_pt-PT.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">Subsídios, bolsas e assistência financeira</translation>
 <translation id="1048785276086539861">Quando edita anotações, este documento volta à vista de página única.</translation>
 <translation id="1050038467049342496">Fechar outras aplicações</translation>
+<translation id="1053959602163383901">Optou por validar com um dispositivo autenticador nos Websites que usam o fornecedor <ph name="PROVIDER_ORIGIN" />. Este fornecedor pode ter armazenado informações sobre o seu método de pagamento, que pode <ph name="LINK_TEXT" />.</translation>
 <translation id="1055184225775184556">&amp;Anular adição</translation>
 <translation id="1056663316309890343">Software de foto</translation>
 <translation id="1056898198331236512">Aviso</translation>
@@ -426,6 +427,7 @@
 <translation id="2053111141626950936">As páginas em <ph name="LANGUAGE" /> não serão traduzidas.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{Quando este controlo está ativado e o estado está ativo, o Chrome determina a que grupo alargado de pessoas, ou "coorte", a sua atividade de navegação recente é mais semelhante. Os anunciantes podem selecionar anúncios para o grupo e a sua atividade de navegação permanece privada no seu dispositivo. O seu grupo é atualizado todos os dias.}=1{Quando este controlo está ativado e o estado está ativo, o Chrome determina a que grupo alargado de pessoas, ou "coorte", a sua atividade de navegação recente é mais semelhante. Os anunciantes podem selecionar anúncios para o grupo e a sua atividade de navegação permanece privada no seu dispositivo. O seu grupo é atualizado todos os dias.}other{Quando este controlo está ativado e o estado está ativo, o Chrome determina a que grupo alargado de pessoas, ou "coorte", a sua atividade de navegação recente é mais semelhante. Os anunciantes podem selecionar anúncios para o grupo e a sua atividade de navegação permanece privada no seu dispositivo. O seu grupo é atualizado a cada {NUM_DAYS} dias.}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 sugestão}other{# sugestões}}</translation>
+<translation id="2066915425250589881">pedir para eliminar</translation>
 <translation id="2068528718802935086">Bebés e crianças pequenas</translation>
 <translation id="2071156619270205202">Este cartão não é elegível para um número de cartão virtual.</translation>
 <translation id="2071692954027939183">As notificações foram automaticamente bloqueadas porque, geralmente, não as permite.</translation>
@@ -582,6 +584,7 @@
 <translation id="2512101340618156538">Não permitidos (predefinição)</translation>
 <translation id="2512413427717747692">Botão para definir o Chrome como o navegador predefinido, prima Enter para definir o Chrome como o navegador predefinido do sistema nas definições do iOS</translation>
 <translation id="2515629240566999685">Verificar o sinal na área</translation>
+<translation id="2515761554693942801">Optou por validar com o Touch ID em Websites que usam o fornecedor <ph name="PROVIDER_ORIGIN" />. Este fornecedor pode ter armazenado informações sobre o seu método de pagamento, que pode <ph name="LINK_TEXT" />.</translation>
 <translation id="2521385132275182522">Agrafar parte inferior direita</translation>
 <translation id="2521736961081452453">Criar formulário</translation>
 <translation id="2523886232349826891">Guardado apenas neste dispositivo.</translation>
@@ -1501,6 +1504,7 @@
 <translation id="5051305769747448211">Comédia ao vivo</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{Para enviar este ficheiro através da funcionalidade Partilhar na proximidade, liberte espaço (<ph name="DISK_SPACE_SIZE" />) no seu dispositivo}other{Para enviar estes ficheiros através da funcionalidade Partilhar na proximidade, liberte espaço (<ph name="DISK_SPACE_SIZE" />) no seu dispositivo}}</translation>
 <translation id="5056549851600133418">Artigos para si</translation>
+<translation id="5060483733937416656">Optou por validar com o Windows Hello em Websites que usam o fornecedor <ph name="PROVIDER_ORIGIN" />. Este fornecedor pode ter armazenado informações sobre o seu método de pagamento, que pode <ph name="LINK_TEXT" />.</translation>
 <translation id="5061227663725596739">Será que quis dizer <ph name="LOOKALIKE_DOMAIN" />?</translation>
 <translation id="5066056036849835175">Histórico de impressão</translation>
 <translation id="5068234115460527047">Fundos especulativos</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb
index ce9bd80..13d5d4b 100644
--- a/components/strings/components_strings_sq.xtb
+++ b/components/strings/components_strings_sq.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">Mënyra e marrjes</translation>
 <translation id="1281476433249504884">Stivuesi 1</translation>
 <translation id="1285320974508926690">Asnjëherë mos e përkthe këtë sajt</translation>
+<translation id="1288548991597756084">Ruaje kartën në mënyrë të sigurt</translation>
 <translation id="1292571435393770077">Tabakaja 16</translation>
 <translation id="1292701964462482250">"Një softuer në kompjuterin tënd po e ndalon Chrome që të lidhet në mënyrë të sigurt me uebin" (vetëm kompjuterët me Windows)</translation>
 <translation id="1294154142200295408">Variantet e rreshtit të komandës</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;Për të rregulluar gabimin, kliko te &lt;strong&gt;Lidhu&lt;/strong&gt; në faqen që po përpiqesh të hapësh.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Projektimi i terrenit</translation>
 <translation id="1513706915089223971">Lista e regjistrimeve të historikut</translation>
+<translation id="1516097932025103760">Ajo do të enkriptohet, do të ruhet në mënyrë të sigurt dhe kodi CVC nuk do të ruhet asnjëherë.</translation>
 <translation id="1517433312004943670">Numri i telefonit është i detyrueshëm</translation>
 <translation id="1519264250979466059">Data e ndërtimit</translation>
 <translation id="1521159554480556801">Fibra dhe artet tekstile</translation>
@@ -1413,6 +1415,7 @@
 <translation id="483241715238664915">Aktivizo paralajmërimet</translation>
 <translation id="4834250788637067901">Mënyrat e pagesës, ofertat dhe adresat që përdorin Google Pay</translation>
 <translation id="4838327282952368871">Si në ëndërr</translation>
+<translation id="4839087176073128681">Paguaj më shpejt herën tjetër dhe mbroje kartën tënde me sigurinë e nivelit më të lartë në këtë industri nga Google.</translation>
 <translation id="4840250757394056958">Shiko historikun tënd të Chrome</translation>
 <translation id="484462545196658690">Automatike</translation>
 <translation id="484671803914931257">Merr zbritje në <ph name="MERCHANT_NAME" /> dhe të tjera</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb
index 3ba9c4d4..771e055 100644
--- a/components/strings/components_strings_sw.xtb
+++ b/components/strings/components_strings_sw.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">Mbinu ya Kuchukua</translation>
 <translation id="1281476433249504884">Tupio la kutoa la printa la kwanza</translation>
 <translation id="1285320974508926690">Kamwe usitafsiri tovuti hii</translation>
+<translation id="1288548991597756084">Hifadhi kadi kwa usalama</translation>
 <translation id="1292571435393770077">Trei ya 16</translation>
 <translation id="1292701964462482250">"Kuna programu kwenye kompyuta yako inayoizuia Chrome isiunganishe kwenye wavuti kwa usalama" (kompyuta za Windows pekee)</translation>
 <translation id="1294154142200295408">Tofauti za miundo ya amri</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;Ili urekebishe hitilafu, bofya &lt;strong&gt;Unganisha&lt;/strong&gt; kwenye ukurasa unaojaribu kufungua.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Muundo wa mlalo</translation>
 <translation id="1513706915089223971">Orodha ya historia ya maudhui yaliyowekwa</translation>
+<translation id="1516097932025103760">Itasimbwa kwa njia fiche, itahifadhiwa kwa usalama na faili ya CVC haitaifadhiwa.</translation>
 <translation id="1517433312004943670">Nambari ya simu inahitajika</translation>
 <translation id="1519264250979466059">Unda Tarehe</translation>
 <translation id="1521159554480556801">Sanaa ya ufumaji vitambaa na usokotaji nyuzi</translation>
@@ -1415,6 +1417,7 @@
 <translation id="483241715238664915">Washa maonyo</translation>
 <translation id="4834250788637067901">Njia za kulipa, ofa na anwani zinazotumia Google Pay</translation>
 <translation id="4838327282952368871">Dreamy</translation>
+<translation id="4839087176073128681">Lipa kwa haraka zaidi wakati mwingine na ulinde kadi yako kwa kutumia ulinzi wa Google ulio bora zaidi katika sekta.</translation>
 <translation id="4840250757394056958">Angalia historia yako kwenye Chrome</translation>
 <translation id="484462545196658690">Otomatiki</translation>
 <translation id="484671803914931257">Pata punguzo kwenye <ph name="MERCHANT_NAME" /> na zaidi</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb
index 1d7f055..63845b9 100644
--- a/components/strings/components_strings_te.xtb
+++ b/components/strings/components_strings_te.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">గ్రాంట్‌లు, స్కాలర్‌షిప్‌లు &amp; ఆర్ధిక సహాయం</translation>
 <translation id="1048785276086539861">మీరు అదనపు గమనికలను ఎడిట్ చేసినప్పుడు, ఈ డాక్యుమెంట్ సింగిల్ పేజీ వీక్షణకు తిరిగి వస్తుంది</translation>
 <translation id="1050038467049342496">ఇతర యాప్‌లను మూసివేయండి</translation>
+<translation id="1053959602163383901"><ph name="PROVIDER_ORIGIN" />‌ను ఉపయోగించే వెబ్‌సైట్‌లలో ప్రామాణీకరణదారు పరికరంతో వెరిఫై చేయాలని మీరు ఎంచుకున్నారు. ఈ ప్రొవైడర్ మీ పేమెంట్ ఆప్షన్‌కు సంబంధించిన సమాచారాన్ని స్టోర్ చేసుకొని ఉండవచ్చు, దీనిని మీరు <ph name="LINK_TEXT" />.</translation>
 <translation id="1055184225775184556">&amp;జోడించడాన్ని రద్దు చేయి</translation>
 <translation id="1056663316309890343">ఫోటో సాఫ్ట్‌వేర్</translation>
 <translation id="1056898198331236512">హెచ్చరిక</translation>
@@ -428,6 +429,7 @@
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> భాషలో ఉన్న పేజీలు అనువదించబడవు.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{ఈ కంట్రోల్ ఆన్‌లో ఉన్నప్పుడు, అలాగే యాక్టివ్‌గా ఉన్నప్పుడు, మీ ఇటీవలి బ్రౌజింగ్ యాక్టివిటీ ఏ పెద్ద వ్యక్తుల గ్రూప్ లేదా “ఒకే రకమైన యూజర్‌ల గ్రూప్"తో పోలి ఉందని Chrome నిర్ణయిస్తుంది. అడ్వర్టయిజర్‌లు ఈ గ్రూప్‌కు యాడ్‌లను ఎంచుకోవచ్చు, అలాగే మీ బ్రౌజింగ్ యాక్టివిటీ ఈ పరికరంలో ప్రైవేట్‌గా ఉంచబడుతుంది. మీ గ్రూప్ ప్రతి రోజు అప్‌డేట్ చేయబడుతుంది.}=1{ఈ కంట్రోల్ ఆన్‌లో ఉన్నప్పుడు, అలాగే యాక్టివ్‌గా ఉన్నప్పుడు, మీ ఇటీవలి బ్రౌజింగ్ యాక్టివిటీ ఏ పెద్ద వ్యక్తుల గ్రూప్ లేదా “ఒకే రకమైన యూజర్‌ల గ్రూప్"తో పోలి ఉందని Chrome నిర్ణయిస్తుంది. అడ్వర్టయిజర్‌లు ఈ గ్రూప్‌కు యాడ్‌లను ఎంచుకోవచ్చు, అలాగే మీ బ్రౌజింగ్ యాక్టివిటీ ఈ పరికరంలో ప్రైవేట్‌గా ఉంచబడుతుంది. మీ గ్రూప్ ప్రతి రోజు అప్‌డేట్ చేయబడుతుంది.}other{ఈ కంట్రోల్ ఆన్‌లో ఉన్నప్పుడు, అలాగే యాక్టివ్‌గా ఉన్నప్పుడు, మీ ఇటీవలి బ్రౌజింగ్ యాక్టివిటీ ఏ పెద్ద వ్యక్తుల గ్రూప్ లేదా “ఒకే రకమైన యూజర్‌ల గ్రూప్"తో పోలి ఉందని Chrome నిర్ణయిస్తుంది. అడ్వర్టయిజర్‌లు ఈ గ్రూప్‌కు యాడ్‌లను ఎంచుకోవచ్చు, అలాగే మీ బ్రౌజింగ్ యాక్టివిటీ ఈ పరికరంలో ప్రైవేట్‌గా ఉంచబడుతుంది. మీ గ్రూప్ ప్రతి {NUM_DAYS} రోజులకు అప్‌డేట్ చేయబడుతుంది.}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 సూచన}other{# సూచనలు}}</translation>
+<translation id="2066915425250589881">తొలగించవలసిందిగా రిక్వెస్ట్ చేయవచ్చు</translation>
 <translation id="2068528718802935086">పిల్లలు &amp; పసిపిల్లలు</translation>
 <translation id="2071156619270205202">వర్చువల్ కార్డ్ నంబర్ కోసం ఈ కార్డ్‌కు అర్హత లేదు.</translation>
 <translation id="2071692954027939183">మీరు సాధారణంగా వాటిని అనుమతించనందున నోటిఫికేషన్‌లు ఆటోమేటిక్‌గా బ్లాక్ చేయబడ్డాయి</translation>
@@ -584,6 +586,7 @@
 <translation id="2512101340618156538">అనుమతించనివి (ఆటోమేటిక్ సెట్టింగ్)</translation>
 <translation id="2512413427717747692">Chromeను ఆటోమేటిక్ బ్రౌజర్‌గా సెట్ చేసే బటన్, 'Enter'ను నొక్కి iOS సెట్టింగ్‌లలో Chromeను ఆటోమేటిక్ బ్రౌజర్‌గా సెట్ చేయండి</translation>
 <translation id="2515629240566999685">మీ ప్రాంతంలో సిగ్నల్‌ను తనిఖీ చేయడం</translation>
+<translation id="2515761554693942801"><ph name="PROVIDER_ORIGIN" />‌ను ఉపయోగించే వెబ్‌సైట్‌లలో Touch IDతో వెరిఫై చేయాలని మీరు ఎంచుకున్నారు. ఈ ప్రొవైడర్ మీ పేమెంట్ ఆప్షన్‌కు సంబంధించిన సమాచారాన్ని స్టోర్ చేసుకొని ఉండవచ్చు, దీనిని మీరు <ph name="LINK_TEXT" />.</translation>
 <translation id="2521385132275182522">కుడివైపు దిగువ భాగంలో స్టేపుల్</translation>
 <translation id="2521736961081452453">ఫారమ్‌ను క్రియేట్ చేయండి</translation>
 <translation id="2523886232349826891">ఈ పరికరంలో మాత్రమే సేవ్ చేయబడి ఉంటుంది</translation>
@@ -1503,6 +1506,7 @@
 <translation id="5051305769747448211">లైవ్ కామెడీ</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{'సమీప షేరింగ్'ను ఉపయోగించి ఈ ఫైల్‌ను పంపడానికి, మీ పరికరంలో స్పేస్ (<ph name="DISK_SPACE_SIZE" />)ను ఖాళీ చేయండి}other{'సమీప షేరింగ్'ను ఉపయోగించి ఈ ఫైళ్ళను పంపడానికి, మీ పరికరంలో స్పేస్ (<ph name="DISK_SPACE_SIZE" />)ను ఖాళీ చేయండి}}</translation>
 <translation id="5056549851600133418">మీ కోసం కథనాలు</translation>
+<translation id="5060483733937416656"><ph name="PROVIDER_ORIGIN" />‌ను ఉపయోగించే వెబ్‌సైట్‌లలో Windows Helloతో వెరిఫై చేయాలని మీరు ఎంచుకున్నారు. ఈ ప్రొవైడర్ మీ పేమెంట్ ఆప్షన్‌కు సంబంధించిన సమాచారాన్ని స్టోర్ చేసుకొని ఉండవచ్చు, దీనిని మీరు <ph name="LINK_TEXT" />.</translation>
 <translation id="5061227663725596739">మీరు <ph name="LOOKALIKE_DOMAIN" /> గురించి అడిగారా?</translation>
 <translation id="5066056036849835175">ప్రింటింగ్ హిస్టరీ</translation>
 <translation id="5068234115460527047">భద్రతా నిధులు</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb
index 57c3bff..43e66b2 100644
--- a/components/strings/components_strings_tr.xtb
+++ b/components/strings/components_strings_tr.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">Alma Yöntemi</translation>
 <translation id="1281476433249504884">Yığınlayıcı 1</translation>
 <translation id="1285320974508926690">Bu siteyi hiçbir zaman çevirme</translation>
+<translation id="1288548991597756084">Kartı güvenli bir şekilde kaydedin</translation>
 <translation id="1292571435393770077">Tepsi 16</translation>
 <translation id="1292701964462482250">"Bilgisayarınızdaki yazılım, Chrome'un web'e güvenli bir şekilde bağlanmasını engelliyor" (yalnızca Windows bilgisayarlar)</translation>
 <translation id="1294154142200295408">Komut satırı varyasyonları</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;Hatayı gidermek için, açmaya çalıştığınız sayfada &lt;strong&gt;Bağlan&lt;/strong&gt;'ı tıklayın.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Peyzaj tasarımı</translation>
 <translation id="1513706915089223971">Geçmiş girişlerin listesi</translation>
+<translation id="1516097932025103760">Kart bilgileri şifrelenir ve güvenli bir şekilde kaydedilir. CVC ise hiçbir zaman saklanmaz.</translation>
 <translation id="1517433312004943670">Telefon numarası gerekli</translation>
 <translation id="1519264250979466059">Oluşturma Tarihi</translation>
 <translation id="1521159554480556801">Fiber ve kumaş sanatları</translation>
@@ -1409,6 +1411,7 @@
 <translation id="483241715238664915">Uyarıları açın</translation>
 <translation id="4834250788637067901">Google Pay'i kullanan ödeme yöntemleri, teklifler ve adresler</translation>
 <translation id="4838327282952368871">Hayalperest</translation>
+<translation id="4839087176073128681">Google'ın sektör lideri güvenliği sayesinde bir dahaki sefer daha hızlı ödeme yapın ve kartınızı koruyun.</translation>
 <translation id="4840250757394056958">Chrome geçmişimi göster</translation>
 <translation id="484462545196658690">Auto</translation>
 <translation id="484671803914931257"><ph name="MERCHANT_NAME" /> ve diğer satıcılardan indirimli alışveriş yapın</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb
index 627b9f1..57968ca 100644
--- a/components/strings/components_strings_uk.xtb
+++ b/components/strings/components_strings_uk.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">Спосіб отримання</translation>
 <translation id="1281476433249504884">Накопичувач 1</translation>
 <translation id="1285320974508926690">Ніколи не перекладати цей сайт</translation>
+<translation id="1288548991597756084">Надійно зберігайте свою картку</translation>
 <translation id="1292571435393770077">Лоток 16</translation>
 <translation id="1292701964462482250">"Програмне забезпечення на вашому комп’ютері перешкоджає веб-переглядачеві Chrome безпечно під’єднуватися до Інтернету" (лише для комп’ютерів з ОС Windows)</translation>
 <translation id="1294154142200295408">Варіанти командного рядка</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;Щоб виправити цю помилку, натисніть &lt;strong&gt;Підключитися&lt;/strong&gt; на сторінці, яку ви намагаєтеся відкрити.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Ландшафтний дизайн</translation>
 <translation id="1513706915089223971">Список записів в історії</translation>
+<translation id="1516097932025103760">Дані картки буде зашифровано й безпечно збережено. Код CVC ніколи не записується.</translation>
 <translation id="1517433312004943670">Введіть номер телефону</translation>
 <translation id="1519264250979466059">Дата створення версії</translation>
 <translation id="1521159554480556801">Виробництва волокна й тканин</translation>
@@ -1416,6 +1418,7 @@
 <translation id="483241715238664915">Увімкнути попередження</translation>
 <translation id="4834250788637067901">Способи оплати, пропозиції й адреси з Google Pay</translation>
 <translation id="4838327282952368871">Мрійливий</translation>
+<translation id="4839087176073128681">Швидше оплачуйте покупки й захистіть свою картку за допомогою провідних галузевих технологій безпеки Google.</translation>
 <translation id="4840250757394056958">Переглянути історію Chrome</translation>
 <translation id="484462545196658690">Автоматично</translation>
 <translation id="484671803914931257">Отримайте знижку в продавця "<ph name="MERCHANT_NAME" />" та інших магазинах</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb
index cd59cf6..dacdaf2 100644
--- a/components/strings/components_strings_ur.xtb
+++ b/components/strings/components_strings_ur.xtb
@@ -120,6 +120,7 @@
 <translation id="1270502636509132238">پِک اپ کا طریقہ</translation>
 <translation id="1281476433249504884">اسٹیکر 1</translation>
 <translation id="1285320974508926690">اس سائٹ کا ترجمہ کبھی نہ کریں</translation>
+<translation id="1288548991597756084">کارڈ کو محفوظ طریقے سے محفوظ کریں</translation>
 <translation id="1292571435393770077">ٹرے 16</translation>
 <translation id="1292701964462482250">‏"آپ کے کمپیوٹر میں موجود سافٹ ویئر Chrome کو محفوظ طور پر ویب سے منسلک ہونے سے روک رہا ہے" (صرف Windows کمپیوٹرز کیلئے)</translation>
 <translation id="1294154142200295408">کمانڈ لائن کے تغیرات</translation>
@@ -224,6 +225,7 @@
     &lt;p&gt;خرابی ٹھیک کرنے کیلئے، اس صفحے پر &lt;strong&gt;منسلک کریں&lt;/strong&gt; پر کلک کریں جسے آپ کھولنے کی کوشش کر رہے ہیں۔&lt;/p&gt;</translation>
 <translation id="1507780850870535225">لینڈ اسکیپ ڈیزائن</translation>
 <translation id="1513706915089223971">سرگزشت کے اندراجات کی فہرست</translation>
+<translation id="1516097932025103760">‏اسے مرموز کیا جائے گا، محفوظ طریقے سے محفوظ کیا جائے گا اور CVC کو کبھی بھی اسٹور نہیں کیا جائے گا۔</translation>
 <translation id="1517433312004943670">فون نمبر درکار ہے</translation>
 <translation id="1519264250979466059">بلڈ کی تاریخ</translation>
 <translation id="1521159554480556801">فائبر اور ٹیکسٹائل آرٹس</translation>
@@ -1418,6 +1420,7 @@
 <translation id="483241715238664915">وارننگز کو آن کریں</translation>
 <translation id="4834250788637067901">‏Google Pay استعمال کرنے والے ادائیگی کے طریقے، پیشکشیں اور پتے</translation>
 <translation id="4838327282952368871">خیالی</translation>
+<translation id="4839087176073128681">‏اگلی بار تیزی سے ادائیگی کریں اور Google کی انڈسٹری کی صف اول کی سیکیورٹی کے ساتھ اپنے کارڈ کی حفاظت کریں۔</translation>
 <translation id="4840250757394056958">‏اپنے Chrome کی سرگزشت دیکھیں</translation>
 <translation id="484462545196658690">خودکار</translation>
 <translation id="484671803914931257"><ph name="MERCHANT_NAME" /> اور مزید پر رعایت حاصل کریں</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb
index 8a361ac..5f522f7 100644
--- a/components/strings/components_strings_uz.xtb
+++ b/components/strings/components_strings_uz.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">Grantlar, stipendiyalar va moliyaviy yordam</translation>
 <translation id="1048785276086539861">Izohlarni tahrirlash vaqtida bu hujjat bir sahifali shaklga qaytadi</translation>
 <translation id="1050038467049342496">Boshqa ilovalarni yoping</translation>
+<translation id="1053959602163383901"><ph name="PROVIDER_ORIGIN" /> saytlarida shaxsni autentifikatsiya qurilmasi yordamida tasdiqlash mumkin. Bu provayder toʻlov usulingiz axborotini saqlashi mumkin, lekin uning <ph name="LINK_TEXT" />.</translation>
 <translation id="1055184225775184556">&amp;Qo‘shishni bekor qilish</translation>
 <translation id="1056663316309890343">Fotodasturlar</translation>
 <translation id="1056898198331236512">Ogohlantirish</translation>
@@ -425,6 +426,7 @@
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> tilidagi sahifalar tarjima qilinmaydi</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{Bu boshqaruv elementi yoniq va faol boʻlsa, Chrome brauzerdagi oxirgi harakatlaringizga eng mos katta yoki “kogort” guruh odamlarni aniqlaydi. Reklama beruvchilar eʼlonlari uchun guruh tanlaganda qurilmadagi harakatlaringiz maxfiyligi saqlanib qoladi. Guruhingiz har kuni yangilanib turadi.}=1{Bu boshqaruv elementi yoniq va faol boʻlsa, Chrome brauzerdagi oxirgi harakatlaringizga eng mos katta yoki “kogort” guruh odamlarni aniqlaydi. Reklama beruvchilar eʼlonlari uchun guruh tanlaganda qurilmadagi harakatlaringiz maxfiyligi saqlanib qoladi. Guruhingiz har kuni yangilanib turadi.}other{Bu boshqaruv elementi yoniq va faol boʻlsa, Chrome brauzerdagi oxirgi harakatlaringizga eng mos katta yoki “kogort” guruh odamlarni aniqlaydi. Reklama beruvchilar eʼlonlari uchun guruh tanlaganda qurilmadagi harakatlaringiz maxfiyligi saqlanib qoladi. Guruhingiz har {NUM_DAYS} kunda yangilanib turadi.}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 ta tavsiya}other{# ta tavsiya}}</translation>
+<translation id="2066915425250589881">oʻchirilishini talab qilish mumkin</translation>
 <translation id="2068528718802935086">Chaqaloqlar uchun</translation>
 <translation id="2071156619270205202">Koʻrsatilgan raqamdan virtual karta raqami sifatida foydalanib boʻlmaydi.</translation>
 <translation id="2071692954027939183">Odatda ruxsat bermasligingiz uchun bildirishnomalar avtomatik bloklanadi</translation>
@@ -581,6 +583,7 @@
 <translation id="2512101340618156538">Ruxsat berilmagan (standart)</translation>
 <translation id="2512413427717747692">Chrome brauzerini asosiy brauzer tugmasi sifatida sozlash, iOS sozlamalari orqali Chrome brauzerini tizimning asosiy brauzeri sifatida sozlash uchun Enter tugmasini bosing.</translation>
 <translation id="2515629240566999685">Mobil aloqa signalini tekshirish</translation>
+<translation id="2515761554693942801"><ph name="PROVIDER_ORIGIN" /> saytlarida shaxsni Touch ID yordamida tasdiqlash mumkin. Bu provayder toʻlov usulingiz axborotini saqlashi mumkin, lekin uning <ph name="LINK_TEXT" />.</translation>
 <translation id="2521385132275182522">Quyi oʻngdan steplerlash</translation>
 <translation id="2521736961081452453">Shakl yaratish</translation>
 <translation id="2523886232349826891">Faqat shu qurilmada saqlanadi</translation>
@@ -1496,6 +1499,7 @@
 <translation id="5051305769747448211">Jonli komediya</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{Nearby Share yordamida bu faylni yuborish uchun qurilmangizda (<ph name="DISK_SPACE_SIZE" />) joy boʻshating}other{Nearby Share yordamida bu faylni yuborish uchun qurilmangizda (<ph name="DISK_SPACE_SIZE" />) joy boʻshating}}</translation>
 <translation id="5056549851600133418">Sizga atalgan maqolalar</translation>
+<translation id="5060483733937416656"><ph name="PROVIDER_ORIGIN" /> saytlarida shaxsni Windows Hello yordamida tasdiqlash mumkin. Bu provayder toʻlov usulingiz axborotini saqlashi mumkin, lekin uning <ph name="LINK_TEXT" />.</translation>
 <translation id="5061227663725596739">Buni nazarda tutdingizmi: <ph name="LOOKALIKE_DOMAIN" />?</translation>
 <translation id="5066056036849835175">Chop etish tarixi</translation>
 <translation id="5068234115460527047">Xedj fondlari</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb
index 2a88d44..c1e971e 100644
--- a/components/strings/components_strings_vi.xtb
+++ b/components/strings/components_strings_vi.xtb
@@ -27,6 +27,7 @@
 <translation id="1043382569739532657">Trợ cấp, học bổng và hỗ trợ tài chính</translation>
 <translation id="1048785276086539861">Khi bạn chỉnh sửa chú thích, tài liệu này sẽ trở về chế độ xem một trang</translation>
 <translation id="1050038467049342496">Đóng các ứng dụng khác</translation>
+<translation id="1053959602163383901">Bạn đã chọn xác minh bằng một thiết bị xác thực trên các trang web sử dụng <ph name="PROVIDER_ORIGIN" />. Nhà cung cấp này có thể đã lưu trữ thông tin về phương thức thanh toán của bạn mà bạn có thể <ph name="LINK_TEXT" />.</translation>
 <translation id="1055184225775184556">&amp;Hoàn tác thêm</translation>
 <translation id="1056663316309890343">Phần mềm ảnh</translation>
 <translation id="1056898198331236512">Cảnh báo</translation>
@@ -426,6 +427,7 @@
 <translation id="2053111141626950936">Các trang viết bằng <ph name="LANGUAGE" /> sẽ không được dịch.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{Khi chế độ điều khiển này bật và trạng thái là đang hoạt động, Chrome sẽ xác định xem hoạt động duyệt web gần đây của bạn giống với nhóm đông người hoặc "nhóm thuần tập" nào nhất. Các nhà quảng cáo có thể chọn quảng cáo cho nhóm này và hoạt động duyệt web sẽ được lưu giữ riêng tư trên thiết bị của bạn. Nhóm của bạn được cập nhật hằng ngày.}=1{Khi chế độ điều khiển này bật và trạng thái là đang hoạt động, Chrome sẽ xác định xem hoạt động duyệt web gần đây của bạn giống với nhóm đông người hoặc "nhóm thuần tập" nào nhất. Các nhà quảng cáo có thể chọn quảng cáo cho nhóm này và hoạt động duyệt web sẽ được lưu giữ riêng tư trên thiết bị của bạn. Nhóm của bạn được cập nhật hằng ngày.}other{Khi chế độ điều khiển này bật và trạng thái là đang hoạt động, Chrome sẽ xác định xem hoạt động duyệt web gần đây của bạn giống với nhóm đông người hoặc "nhóm thuần tập" nào nhất. Các nhà quảng cáo có thể chọn quảng cáo cho nhóm này và hoạt động duyệt web sẽ được lưu giữ riêng tư trên thiết bị của bạn. Nhóm của bạn được cập nhật {NUM_DAYS} ngày một lần.}}</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 đề xuất}other{# đề xuất}}</translation>
+<translation id="2066915425250589881">yêu cầu xóa</translation>
 <translation id="2068528718802935086">Em bé và trẻ mới biết đi</translation>
 <translation id="2071156619270205202">Thẻ này không đáp ứng điều kiện để tạo số thẻ ảo.</translation>
 <translation id="2071692954027939183">Các thông báo tự động bị chặn do bạn thường xuyên không cho phép các thông báo đó</translation>
@@ -582,6 +584,7 @@
 <translation id="2512101340618156538">Không được phép (mặc định)</translation>
 <translation id="2512413427717747692">Đặt Chrome làm nút trình duyệt mặc định, nhấn Enter để đặt Chrome làm trình duyệt mặc định của hệ thống trong phần cài đặt iOS</translation>
 <translation id="2515629240566999685">Kiểm tra tín hiệu trong khu vực của bạn</translation>
+<translation id="2515761554693942801">Bạn đã chọn xác minh bằng Touch ID trên các trang web sử dụng <ph name="PROVIDER_ORIGIN" />. Nhà cung cấp này có thể đã lưu trữ thông tin về phương thức thanh toán của bạn mà bạn có thể <ph name="LINK_TEXT" />.</translation>
 <translation id="2521385132275182522">Dập ghim dưới cùng bên phải</translation>
 <translation id="2521736961081452453">Tạo biểu mẫu</translation>
 <translation id="2523886232349826891">Chỉ lưu trên thiết bị này</translation>
@@ -1501,6 +1504,7 @@
 <translation id="5051305769747448211">Hài kịch trực tiếp</translation>
 <translation id="5056425809654826431">{NUM_FILES,plural, =1{Để gửi tệp này bằng tính năng Chia sẻ lân cận, hãy giải phóng dung lượng (<ph name="DISK_SPACE_SIZE" />) trên thiết bị của bạn}other{Để gửi các tệp này bằng tính năng Chia sẻ lân cận, hãy giải phóng dung lượng (<ph name="DISK_SPACE_SIZE" />) trên thiết bị của bạn}}</translation>
 <translation id="5056549851600133418">Tin bài dành cho bạn</translation>
+<translation id="5060483733937416656">Bạn đã chọn xác minh với Windows Hello trên các trang web sử dụng <ph name="PROVIDER_ORIGIN" />. Nhà cung cấp này có thể đã lưu trữ thông tin về phương thức thanh toán của bạn mà bạn có thể <ph name="LINK_TEXT" />.</translation>
 <translation id="5061227663725596739">Ý của bạn là <ph name="LOOKALIKE_DOMAIN" /> phải không?</translation>
 <translation id="5066056036849835175">Danh sách tài liệu đã in</translation>
 <translation id="5068234115460527047">Quỹ phòng hộ</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb
index a3f2a21..f6815367 100644
--- a/components/strings/components_strings_zh-CN.xtb
+++ b/components/strings/components_strings_zh-CN.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">取货方式</translation>
 <translation id="1281476433249504884">堆叠出纸器 1</translation>
 <translation id="1285320974508926690">一律不翻译此网站</translation>
+<translation id="1288548991597756084">妥善保存银行卡信息</translation>
 <translation id="1292571435393770077">纸匣 16</translation>
 <translation id="1292701964462482250">“您计算机上的软件导致 Chrome 无法安全地连接到网络”(仅限 Windows 计算机)</translation>
 <translation id="1294154142200295408">命令行变体</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;要修正该错误,请在您尝试打开的网页上点击&lt;strong&gt;连接&lt;/strong&gt;。&lt;/p&gt;</translation>
 <translation id="1507780850870535225">景观设计</translation>
 <translation id="1513706915089223971">历史记录条目列表</translation>
+<translation id="1516097932025103760">系统会对该银行卡进行加密并妥善保存它,但绝不会存储银行卡验证码 (CVC)。</translation>
 <translation id="1517433312004943670">必须提供电话号码</translation>
 <translation id="1519264250979466059">构建日期</translation>
 <translation id="1521159554480556801">纤维与纺织品艺术</translation>
@@ -1403,6 +1405,7 @@
 <translation id="483241715238664915">开启警告</translation>
 <translation id="4834250788637067901">Google Pay 中存储的付款方式、优惠和地址信息</translation>
 <translation id="4838327282952368871">梦幻</translation>
+<translation id="4839087176073128681">业界领先的 Google 安防机制让您能在下次购物时更快捷地付款并保护您的银行卡。</translation>
 <translation id="4840250757394056958">查看您的 Chrome 历史记录</translation>
 <translation id="484462545196658690">自动</translation>
 <translation id="484671803914931257">获取<ph name="MERCHANT_NAME" />及其他商家的折扣信息</translation>
diff --git a/components/strings/components_strings_zu.xtb b/components/strings/components_strings_zu.xtb
index f90c869..58579e0 100644
--- a/components/strings/components_strings_zu.xtb
+++ b/components/strings/components_strings_zu.xtb
@@ -119,6 +119,7 @@
 <translation id="1270502636509132238">Indlela yokulandwa</translation>
 <translation id="1281476433249504884">Isitaki esingu-1</translation>
 <translation id="1285320974508926690">Ungalokothi uhumushe leli sayithi</translation>
+<translation id="1288548991597756084">Londoloza ikhadi ngokuvikelekile</translation>
 <translation id="1292571435393770077">Ithileyi 16</translation>
 <translation id="1292701964462482250">"Isofthiwe kukhompuyutha yakho imisa i-Chrome kusukela ekuxhumekeni ngokuphepha kuwebhu" (Amakhompyutha e-Windows kuphela)</translation>
 <translation id="1294154142200295408">Ukuhluka komugqa womyalo</translation>
@@ -223,6 +224,7 @@
     &lt;p&gt;Ukuze ulungise iphutha, chofoza okuthi &lt;strong&gt;Xhuma&lt;/strong&gt; ekhasini ozama ukulivula.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Ukudizayinwa kwamagceke</translation>
 <translation id="1513706915089223971">Uhlu lokufakiwe komlando</translation>
+<translation id="1516097932025103760">Izobethelwa, ilondolozwe ngokuvikelekile futhi i-CVC ayilokothi igcinwe.</translation>
 <translation id="1517433312004943670">Inombolo yefoni iyadingeka</translation>
 <translation id="1519264250979466059">Idethi yokwakha</translation>
 <translation id="1521159554480556801">Ubuciko be-fiber ne-textile</translation>
@@ -1413,6 +1415,7 @@
 <translation id="483241715238664915">Vula izexwayiso</translation>
 <translation id="4834250788637067901">Izindlela zokukhokha, imititilizo, namakheli asebenzisa i-Google Pay</translation>
 <translation id="4838327282952368871">I-Dreamy</translation>
+<translation id="4839087176073128681">Khokha ngokushesha ngesikhathi esizayo futhi uvikele ikhadi lakho ngokuvikeleka okuhamba phambili embonini ye-Google.</translation>
 <translation id="4840250757394056958">Buka umlando wakho we-Chrome</translation>
 <translation id="484462545196658690">Okuzenzakalelayo</translation>
 <translation id="484671803914931257">Thola isaphulelo ku-<ph name="MERCHANT_NAME" /> nokwengeziwe</translation>
diff --git a/components/sync/base/features.h b/components/sync/base/features.h
index 3626023..1cd8ae1 100644
--- a/components/sync/base/features.h
+++ b/components/sync/base/features.h
@@ -51,6 +51,8 @@
         base::FEATURE_DISABLED_BY_DEFAULT};
 
 #if BUILDFLAG(IS_ANDROID)
+inline constexpr base::Feature kSyncAndroidPromosWithAlternativeTitle{
+    "SyncAndroidPromosWithAlternativeTitle", base::FEATURE_DISABLED_BY_DEFAULT};
 inline constexpr base::Feature kSyncAndroidPromosWithIllustration{
     "SyncAndroidPromosWithIllustration", base::FEATURE_DISABLED_BY_DEFAULT};
 inline constexpr base::Feature kSyncAndroidPromosWithSingleButton{
diff --git a/components/sync/driver/resources/BUILD.gn b/components/sync/driver/resources/BUILD.gn
index dfc3af9..9ec0770 100644
--- a/components/sync/driver/resources/BUILD.gn
+++ b/components/sync/driver/resources/BUILD.gn
@@ -106,10 +106,7 @@
 }
 
 js_library("sync_index") {
-  deps = [
-    "//ui/webui/resources/js:util.m",
-    "//ui/webui/resources/js/cr/ui:tabs",
-  ]
+  deps = [ "//ui/webui/resources/js:util.m" ]
 }
 
 js_library("sync_log") {
diff --git a/components/sync/driver/resources/index.html b/components/sync/driver/resources/index.html
index 8c3ae44..202463d 100644
--- a/components/sync/driver/resources/index.html
+++ b/components/sync/driver/resources/index.html
@@ -7,7 +7,6 @@
 <title>Sync Internals</title>
 <link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
 <link rel="stylesheet" href="chrome://resources/css/list.css">
-<link rel="stylesheet" href="chrome://resources/css/tabs.css">
 <link rel="stylesheet" href="chrome://resources/css/tree.css">
 <link rel="stylesheet" href="about.css">
 <link rel="stylesheet" href="sync_search.css">
@@ -30,244 +29,240 @@
 }
 </style>
 
-<tabbox id="sync-page">
-  <tabs>
-    <tab id="sync-about-tab">About</tab>
-    <tab id="sync-data-tab">Data</tab>
-    <tab id="sync-browser-tab">Sync Node Browser</tab>
-    <tab id="sync-search-tab">Search</tab>
-    <tab id="sync-user-events-tab">User Events</tab>
-    <tab id="sync-traffic-log-tab">Traffic Log</tab>
-    <tab id="sync-invalidations-tab">Invalidations</tab>
-  </tabs>
-  <tabpanels>
-    <tabpanel>
-      <div id="status">
-        <div id="dump">
-          <button id="dump-status">Dump status</button>
-          <input type="checkbox" id="include-ids">
-          Include Identifiers
-        </div>
-        <div id="import">
-          <button id="import-status">Import status</button>
-        </div>
-        <div id="status-data">
-          <textarea rows="10" cols="30" id="status-text"></textarea>
-        </div>
+<cr-tab-box id="sync-page">
+  <div slot="tab" id="sync-about-tab">About</div>
+  <div slot="tab" id="sync-data-tab">Data</div>
+  <div slot="tab" id="sync-browser-tab">Sync Node Browser</div>
+  <div slot="tab" id="sync-search-tab">Search</div>
+  <div slot="tab" id="sync-user-events-tab">User Events</div>
+  <div slot="tab" id="sync-traffic-log-tab">Traffic Log</div>
+  <div slot="tab" id="sync-invalidations-tab">Invalidations</div>
+  <div slot="panel">
+    <div id="status">
+      <div id="dump">
+        <button id="dump-status">Dump status</button>
+        <input type="checkbox" id="include-ids">
+        Include Identifiers
       </div>
-
-      <div id='about-info'>
-        <div class="section" jsselect="details">
-          <h2 jscontent="title"></h2>
-          <table class="about-details">
-            <tr jsselect="data"
-                  jsvalues="class:$this.stat_status"
-                  jseval='highlightIfChanged(this, this.children[1].innerText, stat_value)'>
-              <td class="detail" jscontent="stat_name" width=50%></td>
-              <td class="value" jscontent="stat_value" width=50%></td>
-            </tr>
-          </table>
-        </div>
-
-        <div id="request-start-stop-wrapper" jsskip="true">
-          <button id="request-start">Request Start</button>
-          <button id="request-stop-keep-data">Stop Sync (Keep Data)</button>
-          <button id="request-stop-clear-data">Disable Sync (Clear Data)</button>
-        </div>
-
-        <div id="traffic-event-container-wrapper" jsskip="true">
-          <h2 style="display:inline-block">Sync Protocol Log</h2>
-          <input type="checkbox" id="capture-specifics">
-          <label for="capture-specifics">Capture Specifics</label>
-          <button id="trigger-refresh">Trigger GetUpdates</button>
-          <div id="traffic-event-container">
-            <div class="traffic-event-entry"
-                 jsselect="events"
-                 jseval="addAboutExpandListener(this)">
-              <span class="time" jscontent="(new Date(time)).toLocaleString()"></span>
-              <span class="type" jscontent="type"></span>
-              <pre class="details" jscontent="details"></pre>
-              <pre class="proto" jscontent="JSON.stringify(proto, null, 2)"></pre>
-            </div>
-          </div>
-        </div>
-
-        <div class="section" style="overflow-x: auto">
-          <h2>Type Info</h2>
-          <table id="typeInfo">
-            <tr jsselect="type_status" jsvalues="class:$this.status">
-              <td jscontent="name" width=30%></td>
-              <td jscontent="num_entries" width=10%></td>
-              <td jscontent="num_live" width=10%></td>
-              <td jscontent="message" width=40% class="message"></td>
-              <td jscontent="state" width=10%></td>
-            </tr>
-          </table>
-        </div>
-
-        <div class="section" jsdisplay="unrecoverable_error_detected">
-          <p>
-            <span class="err" jscontent="unrecoverable_error_message"></span>
-          </p>
-        </div>
-
-        <div class="section" jsdisplay="actionable_error_detected">
-          <p>
-            <h2>Actionable Error</h2>
-            <table id="actionableError">
-              <tr jsselect="actionable_error">
-                <td jscontent="stat_name"></td>
-                <td jscontent="stat_value"></td>
-              </tr>
-            </table>
-          </p>
-        </div>
+      <div id="import">
+        <button id="import-status">Import status</button>
       </div>
-    </tabpanel>
-    <tabpanel>
-      <p><strong>Some personal info may be in the events dump. Be
-      careful about posting data dumps on bug reports.</strong></p>
-
-      <button id="dump-to-text">Dump sync events to text</button>
-
-      <pre id="data-dump"></pre>
-
-      <hr>
-
-      <div id="node-type-checkboxes">
+      <div id="status-data">
+        <textarea rows="10" cols="30" id="status-text"></textarea>
       </div>
+    </div>
 
-
-      <button id="dump-to-file">Dump sync nodes to file</button>
-
-      <input type="checkbox" id="include-specifics">include node content <font color="red">WARNING: This is likely to include personal information.</font><br>
-
-      <a style="display: none" id="dump-to-file-anchor"></a>
-    </tabpanel>
-    <tabpanel>
-      <!-- TODO(akalin): Move to a three-pane view; node tree on the left
-      (minus leaf nodes), tree contents list on the upper right, selected
-      item detail on the lower right. -->
-
-      <div id="sync-node-main">
-        <!-- TODO(akalin): Figure out how to get this element to be as tall
-             as its container (style.height=100% doesn't work).  Also fix
-             behavior when tree is too tall (currently it makes you scroll the
-             entire page). -->
-        <div id="sync-node-browser-refresher">
-          <button id="node-browser-refresh-button">Refresh</button>
-          <div id="node-refresh-status">
-            Last refresh time: <span id="node-browser-refresh-time">Never</span>
-          </div>
-        </div>
-        <div id="sync-node-browser-container">
-          <div id="sync-node-tree-container">
-          </div>
-          <div id="sync-node-splitter"></div>
-          <div id="node-details">
-            <table>
-              <tr>
-                <td>Title</td>
-                <td jscontent="NON_UNIQUE_NAME"></td>
-              </tr>
-              <tr>
-                <td>ID</td>
-                <td jscontent="ID"></td>
-              </tr>
-              <tr>
-                <td>Modification Time</td>
-                <td jscontent="MTIME"></td>
-              </tr>
-              <tr>
-                <td>Parent</td>
-                <td jscontent="PARENT_ID"></td>
-              </tr>
-              <tr>
-                <td>Is Folder</td>
-                <td jscontent="IS_DIR"></td>
-              </tr>
-              <tr>
-                <td>Type</td>
-                <td jscontent="modelType"></td>
-              </tr>
-              <tr>
-                <td>External ID</td>
-                <td jscontent="LOCAL_EXTERNAL_ID"></td>
-              </tr>
-              <tr jsdisplay="$this.hasOwnProperty('positionIndex')">
-                <td>Position Index</td>
-                <td jscontent="positionIndex"></td>
-              </tr>
-            </table>
-            <pre jscontent="JSON.stringify($this, null, 2)"></pre></td>
-          </div>
-        </div>
-      </div>
-    </tabpanel>
-    <tabpanel>
-      <p>
-      <input id="sync-search-query" type="search"
-             placeholder="Search Sync Data">
-      <button id="sync-search-submit">Search</button>
-        <span id="sync-search-quicklink-container">Quick Search:
-          <a class='sync-search-quicklink' data-query="&quot;IS_UNAPPLIED_UPDATE&quot;: true"
-            href="#">Unapplied Updates</a>
-          <a class='sync-search-quicklink' data-query="&quot;IS_UNSYNCED&quot;: true"
-            href="#">Unsynced</a>
-          <a class='sync-search-quicklink' data-query="((&quot;IS_UNAPPLIED_UPDATE&quot;: true)[\s\S]*(&quot;IS_UNSYNCED&quot;: true))|((&quot;IS_UNSYNCED&quot;: true)[\s\S]*(&quot;IS_UNAPPLIED_UPDATE&quot;: true))"
-            href="#">Conflicted</a>
-          <a class='sync-search-quicklink' data-query="&quot;IS_DEL&quot;: true"
-            href="#">Deleted</a>
-        </span>
-      </p>
-      <p>
-      <span id="sync-search-status"></span>
-      </p>
-
-      <div id="sync-results-container">
-        <list id="sync-results-list"></list>
-        <div id="sync-results-splitter"></div>
-        <div id="sync-result-details-container">
-          <pre id="sync-result-details"></pre>
-        </div>
-      </div>
-    </tabpanel>
-    <tabpanel>
-      <input id="event-time-usec-input" type="text" placeholder="event_time_usec">
-      <input id="navigation-id-input" type="text" placeholder="navigation_id">
-      <button id="create-event-button">Create</button>
-    </tabpanel>
-    <tabpanel>
-      <div id="traffic-event-fullscreen-container">
-        <div class="traffic-event-entry-fullscreen"
-            jsselect="events"
-            jseval="TrafficLogTag.getInstance().addExpandListener(this)">
-          <span class="time" jscontent="(new Date(time)).toLocaleString()"></span>
-          <span class="type" jscontent="type"></span>
-          <pre class="details" jscontent="details"></pre>
-          <pre class="proto" jscontent="JSON.stringify(proto, null, 2)"></pre>
-        </div>
-      </div>
-    </tabpanel>
-    <tabpanel>
-      <table id="invalidation-counters-table">
-        <thead>
-          <th>Data type</th>
-          <th>Count</th>
-          <th>Last time</th>
-        </thead>
-        <tbody>
-          <tr jsselect="rows">
-            <td jscontent="type"></td>
-            <td jscontent="count"></td>
-            <td jscontent="time"></td>
+    <div id='about-info'>
+      <div class="section" jsselect="details">
+        <h2 jscontent="title"></h2>
+        <table class="about-details">
+          <tr jsselect="data"
+                jsvalues="class:$this.stat_status"
+                jseval='highlightIfChanged(this, this.children[1].innerText, stat_value)'>
+            <td class="detail" jscontent="stat_name" width=50%></td>
+            <td class="value" jscontent="stat_value" width=50%></td>
           </tr>
-        </tbody>
-      </table>
-      <textarea id="invalidations-log" rows="10" cols="80"readonly></textarea>
-    </tabpanel>
-  </tabpanels>
-</tabbox>
+        </table>
+      </div>
+
+      <div id="request-start-stop-wrapper" jsskip="true">
+        <button id="request-start">Request Start</button>
+        <button id="request-stop-keep-data">Stop Sync (Keep Data)</button>
+        <button id="request-stop-clear-data">Disable Sync (Clear Data)</button>
+      </div>
+
+      <div id="traffic-event-container-wrapper" jsskip="true">
+        <h2 style="display:inline-block">Sync Protocol Log</h2>
+        <input type="checkbox" id="capture-specifics">
+        <label for="capture-specifics">Capture Specifics</label>
+        <button id="trigger-refresh">Trigger GetUpdates</button>
+        <div id="traffic-event-container">
+          <div class="traffic-event-entry"
+               jsselect="events"
+               jseval="addAboutExpandListener(this)">
+            <span class="time" jscontent="(new Date(time)).toLocaleString()"></span>
+            <span class="type" jscontent="type"></span>
+            <pre class="details" jscontent="details"></pre>
+            <pre class="proto" jscontent="JSON.stringify(proto, null, 2)"></pre>
+          </div>
+        </div>
+      </div>
+
+      <div class="section" style="overflow-x: auto">
+        <h2>Type Info</h2>
+        <table id="typeInfo">
+          <tr jsselect="type_status" jsvalues="class:$this.status">
+            <td jscontent="name" width=30%></td>
+            <td jscontent="num_entries" width=10%></td>
+            <td jscontent="num_live" width=10%></td>
+            <td jscontent="message" width=40% class="message"></td>
+            <td jscontent="state" width=10%></td>
+          </tr>
+        </table>
+      </div>
+
+      <div class="section" jsdisplay="unrecoverable_error_detected">
+        <p>
+          <span class="err" jscontent="unrecoverable_error_message"></span>
+        </p>
+      </div>
+
+      <div class="section" jsdisplay="actionable_error_detected">
+        <p>
+          <h2>Actionable Error</h2>
+          <table id="actionableError">
+            <tr jsselect="actionable_error">
+              <td jscontent="stat_name"></td>
+              <td jscontent="stat_value"></td>
+            </tr>
+          </table>
+        </p>
+      </div>
+    </div>
+  </div>
+  <div slot="panel">
+    <p><strong>Some personal info may be in the events dump. Be
+    careful about posting data dumps on bug reports.</strong></p>
+
+    <button id="dump-to-text">Dump sync events to text</button>
+
+    <pre id="data-dump"></pre>
+
+    <hr>
+
+    <div id="node-type-checkboxes">
+    </div>
+
+
+    <button id="dump-to-file">Dump sync nodes to file</button>
+
+    <input type="checkbox" id="include-specifics">include node content <font color="red">WARNING: This is likely to include personal information.</font><br>
+
+    <a style="display: none" id="dump-to-file-anchor"></a>
+  </div>
+  <div slot="panel">
+    <!-- TODO(akalin): Move to a three-pane view; node tree on the left
+    (minus leaf nodes), tree contents list on the upper right, selected
+    item detail on the lower right. -->
+
+    <div id="sync-node-main">
+      <!-- TODO(akalin): Figure out how to get this element to be as tall
+           as its container (style.height=100% doesn't work).  Also fix
+           behavior when tree is too tall (currently it makes you scroll the
+           entire page). -->
+      <div id="sync-node-browser-refresher">
+        <button id="node-browser-refresh-button">Refresh</button>
+        <div id="node-refresh-status">
+          Last refresh time: <span id="node-browser-refresh-time">Never</span>
+        </div>
+      </div>
+      <div id="sync-node-browser-container">
+        <div id="sync-node-tree-container">
+        </div>
+        <div id="sync-node-splitter"></div>
+        <div id="node-details">
+          <table>
+            <tr>
+              <td>Title</td>
+              <td jscontent="NON_UNIQUE_NAME"></td>
+            </tr>
+            <tr>
+              <td>ID</td>
+              <td jscontent="ID"></td>
+            </tr>
+            <tr>
+              <td>Modification Time</td>
+              <td jscontent="MTIME"></td>
+            </tr>
+            <tr>
+              <td>Parent</td>
+              <td jscontent="PARENT_ID"></td>
+            </tr>
+            <tr>
+              <td>Is Folder</td>
+              <td jscontent="IS_DIR"></td>
+            </tr>
+            <tr>
+              <td>Type</td>
+              <td jscontent="modelType"></td>
+            </tr>
+            <tr>
+              <td>External ID</td>
+              <td jscontent="LOCAL_EXTERNAL_ID"></td>
+            </tr>
+            <tr jsdisplay="$this.hasOwnProperty('positionIndex')">
+              <td>Position Index</td>
+              <td jscontent="positionIndex"></td>
+            </tr>
+          </table>
+          <pre jscontent="JSON.stringify($this, null, 2)"></pre></td>
+        </div>
+      </div>
+    </div>
+  </div>
+  <div slot="panel">
+    <p>
+    <input id="sync-search-query" type="search"
+           placeholder="Search Sync Data">
+    <button id="sync-search-submit">Search</button>
+      <span id="sync-search-quicklink-container">Quick Search:
+        <a class='sync-search-quicklink' data-query="&quot;IS_UNAPPLIED_UPDATE&quot;: true"
+          href="#">Unapplied Updates</a>
+        <a class='sync-search-quicklink' data-query="&quot;IS_UNSYNCED&quot;: true"
+          href="#">Unsynced</a>
+        <a class='sync-search-quicklink' data-query="((&quot;IS_UNAPPLIED_UPDATE&quot;: true)[\s\S]*(&quot;IS_UNSYNCED&quot;: true))|((&quot;IS_UNSYNCED&quot;: true)[\s\S]*(&quot;IS_UNAPPLIED_UPDATE&quot;: true))"
+          href="#">Conflicted</a>
+        <a class='sync-search-quicklink' data-query="&quot;IS_DEL&quot;: true"
+          href="#">Deleted</a>
+      </span>
+    </p>
+    <p>
+    <span id="sync-search-status"></span>
+    </p>
+
+    <div id="sync-results-container">
+      <list id="sync-results-list"></list>
+      <div id="sync-results-splitter"></div>
+      <div id="sync-result-details-container">
+        <pre id="sync-result-details"></pre>
+      </div>
+    </div>
+  </div>
+  <div slot="panel">
+    <input id="event-time-usec-input" type="text" placeholder="event_time_usec">
+    <input id="navigation-id-input" type="text" placeholder="navigation_id">
+    <button id="create-event-button">Create</button>
+  </div>
+  <div slot="panel">
+    <div id="traffic-event-fullscreen-container">
+      <div class="traffic-event-entry-fullscreen"
+          jsselect="events"
+          jseval="TrafficLogTag.getInstance().addExpandListener(this)">
+        <span class="time" jscontent="(new Date(time)).toLocaleString()"></span>
+        <span class="type" jscontent="type"></span>
+        <pre class="details" jscontent="details"></pre>
+        <pre class="proto" jscontent="JSON.stringify(proto, null, 2)"></pre>
+      </div>
+    </div>
+  </div>
+  <div slot="panel">
+    <table id="invalidation-counters-table">
+      <thead>
+        <th>Data type</th>
+        <th>Count</th>
+        <th>Last time</th>
+      </thead>
+      <tbody>
+        <tr jsselect="rows">
+          <td jscontent="type"></td>
+          <td jscontent="count"></td>
+          <td jscontent="time"></td>
+        </tr>
+      </tbody>
+    </table>
+    <textarea id="invalidations-log" rows="10" cols="80"readonly></textarea>
+  </div>
+</cr-tab-box>
 
 <script type="module" src="sync_index.js"></script>
 </body>
diff --git a/components/sync/driver/resources/sync_index.js b/components/sync/driver/resources/sync_index.js
index 155970f..92e5e63 100644
--- a/components/sync/driver/resources/sync_index.js
+++ b/components/sync/driver/resources/sync_index.js
@@ -6,6 +6,7 @@
 import 'chrome://resources/js/ios/web_ui.js';
 // </if>
 
+import 'chrome://resources/cr_elements/cr_tab_box/cr_tab_box.js';
 import './about.js';
 import './data.js';
 import './sync_node_browser.js';
@@ -14,9 +15,8 @@
 import './search.js';
 import './strings.m.js';
 import './invalidations.js';
+
 import {isWindows} from 'chrome://resources/js/cr.m.js';
-import {decorate} from 'chrome://resources/js/cr/ui.m.js';
-import {TabBox} from 'chrome://resources/js/cr/ui/tabs.js';
 import {$} from 'chrome://resources/js/util.m.js';
 
 // Allow platform specific CSS rules.
@@ -27,4 +27,4 @@
   document.documentElement.setAttribute('os', 'win');
 }
 
-decorate('tabbox', TabBox);
+document.querySelector('cr-tab-box').hidden = false;
diff --git a/components/sync/driver/resources/sync_node_browser.js b/components/sync/driver/resources/sync_node_browser.js
index 2c7dd35..e60ceb6 100644
--- a/components/sync/driver/resources/sync_node_browser.js
+++ b/components/sync/driver/resources/sync_node_browser.js
@@ -222,10 +222,13 @@
   customSplitter.decorate($('sync-node-splitter'));
 
   // Automatically trigger a refresh the first time this tab is selected.
-  $('sync-browser-tab').addEventListener('selectedChange', function f(e) {
-    if (this.selected) {
-      $('sync-browser-tab').removeEventListener('selectedChange', f);
-      refresh();
-    }
-  });
+  document.querySelector('cr-tab-box')
+      .addEventListener('selected-index-change', function f(e) {
+        if (document.querySelector('#sync-browser-tab')
+                .hasAttribute('selected')) {
+          document.querySelector('cr-tab-box')
+              .removeEventListener('selected-index-change', f);
+          refresh();
+        }
+      });
 });
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc
index e264531..808900f 100644
--- a/components/viz/common/features.cc
+++ b/components/viz/common/features.cc
@@ -209,11 +209,6 @@
   return base::FeatureList::IsEnabled(kSimpleFrameRateThrottling);
 }
 
-bool IsUsingSkiaRenderer() {
-  // TODO(crbug.com/1247756): Remove this when all callers are gone.
-  return true;
-}
-
 #if BUILDFLAG(IS_ANDROID)
 bool IsDynamicColorGamutEnabled() {
   if (viz::AlwaysUseWideColorGamut())
diff --git a/components/viz/common/features.h b/components/viz/common/features.h
index c068ed0..aab8f02 100644
--- a/components/viz/common/features.h
+++ b/components/viz/common/features.h
@@ -74,7 +74,6 @@
 VIZ_COMMON_EXPORT bool IsOverlayPrioritizationEnabled();
 VIZ_COMMON_EXPORT bool IsDelegatedCompositingEnabled();
 VIZ_COMMON_EXPORT bool IsSyncWindowDestructionEnabled();
-VIZ_COMMON_EXPORT bool IsUsingSkiaRenderer();
 VIZ_COMMON_EXPORT bool IsUsingVizFrameSubmissionForWebView();
 VIZ_COMMON_EXPORT bool IsUsingPreferredIntervalForVideo();
 VIZ_COMMON_EXPORT bool ShouldUseRealBuffersForPageFlipTest();
diff --git a/components/viz/common/resources/transferable_resource.h b/components/viz/common/resources/transferable_resource.h
index 6d4d7ec..4f07426 100644
--- a/components/viz/common/resources/transferable_resource.h
+++ b/components/viz/common/resources/transferable_resource.h
@@ -38,6 +38,9 @@
     // other words, the resource will be returned only when gpu commands are
     // completed.
     kGpuCommandsCompleted,
+    // Commands submitted (release fence) - a resource will be returned after
+    // gpu service submitted commands to the gpu and provide the fence.
+    kReleaseFence,
   };
 
   TransferableResource();
diff --git a/components/viz/service/display/display_resource_provider.cc b/components/viz/service/display/display_resource_provider.cc
index 766002c..6f80ebf 100644
--- a/components/viz/service/display/display_resource_provider.cc
+++ b/components/viz/service/display/display_resource_provider.cc
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "base/atomic_sequence_num.h"
+#include "base/notreached.h"
 #include "base/numerics/safe_math.h"
 #include "base/strings/stringprintf.h"
 #include "base/threading/thread_task_runner_handle.h"
@@ -306,9 +307,9 @@
   }
 }
 
-bool DisplayResourceProvider::ReadLockFenceHasPassed(
+bool DisplayResourceProvider::ResourceFenceHasPassed(
     const ChildResource* resource) {
-  return !resource->read_lock_fence || resource->read_lock_fence->HasPassed();
+  return !resource->resource_fence || resource->resource_fence->HasPassed();
 }
 
 DisplayResourceProvider::CanDeleteNowResult
@@ -322,7 +323,7 @@
 
     // Defer this resource deletion.
     return CanDeleteNowResult::kNo;
-  } else if (!ReadLockFenceHasPassed(&resource)) {
+  } else if (!ResourceFenceHasPassed(&resource)) {
     // TODO(dcastagna): see if it's possible to use this logic for
     // the branch above too, where the resource is locked or still exported.
     // We can't postpone the deletion, so we'll have to lose it.
diff --git a/components/viz/service/display/display_resource_provider.h b/components/viz/service/display/display_resource_provider.h
index 5d89762..be07f99 100644
--- a/components/viz/service/display/display_resource_provider.h
+++ b/components/viz/service/display/display_resource_provider.h
@@ -162,10 +162,16 @@
 
   // Sets the current read fence. If a resource is locked for read
   // and has read fences enabled, the resource will not allow writes
-  // until this fence has passed.
-  void SetReadLockFence(ResourceFence* fence) {
-    current_read_lock_fence_ = fence;
+  // until this fence has passed. This is used if a client uses
+  // TransferableResource::SynchronizationType::kGpuCommandsCompleted.
+  void SetGpuCommandsCompletedFence(ResourceFence* fence) {
+    current_gpu_commands_completed_fence_ = fence;
   }
+  // Sets the current release fence. If a client uses
+  // TransferableResource::SynchronizationType::kReleaseFence, resources must be
+  // returned only after a release fence is stored in this resource fence.
+  // Returned only when gpu commands and the gpu fence are submitted.
+  void SetReleaseFence(ResourceFence* fence) { current_release_fence_ = fence; }
 
   // Creates accounting for a child. Returns a child ID. surface_id is used to
   // associate resources to the surface they belong to. This is used for
@@ -333,12 +339,14 @@
     // mapped for use in the display compositor.
     base::UnguessableToken shared_bitmap_tracing_guid;
 
-    // A fence used for accessing a gpu resource for reading, that ensures any
-    // writing done to the resource has been completed. This is implemented and
-    // used to implement transferring ownership of the resource from the client
-    // to the service, and in the GL drawing code before reading from the
-    // texture.
-    scoped_refptr<ResourceFence> read_lock_fence;
+    // A fence used for returning resources after the display compositor has
+    // completed accessing the resources it received from a client. This can
+    // either be a read lock or a release fence. If the |transferable| has
+    // synchronization type set as kGpuCommandsCompleted, the resource can be
+    // returned after ResourceFence::HasPassed is true. If the |transferable|
+    // has the synchronization type set as kReleaseFence, the resource can be
+    // returned after the fence has a release fence set.
+    scoped_refptr<ResourceFence> resource_fence;
 
     // SkiaRenderer specific details about this resource. Added to ChildResource
     // to avoid map lookups further down the pipeline.
@@ -371,10 +379,7 @@
   ChildResource* TryGetResource(ResourceId id);
 
   void TryReleaseResource(ResourceId id, ChildResource* resource);
-  // Binds the given GL resource to a texture target for sampling using the
-  // specified filter for both minification and magnification. Returns the
-  // texture target used. The resource must be locked for reading.
-  bool ReadLockFenceHasPassed(const ChildResource* resource);
+  bool ResourceFenceHasPassed(const ChildResource* resource);
 
   void DeleteAndReturnUnusedResourcesToChild(
       ChildMap::iterator child_it,
@@ -404,7 +409,8 @@
   ChildMap children_;
 
   base::flat_map<int, std::vector<ResourceId>> batched_returning_resources_;
-  scoped_refptr<ResourceFence> current_read_lock_fence_;
+  scoped_refptr<ResourceFence> current_gpu_commands_completed_fence_;
+  scoped_refptr<ResourceFence> current_release_fence_;
   // Keep track of whether deleted resources should be batched up or returned
   // immediately.
   int batch_return_resources_lock_count_ = 0;
diff --git a/components/viz/service/display/display_resource_provider_skia.cc b/components/viz/service/display/display_resource_provider_skia.cc
index fcd0506f..6e4ea305 100644
--- a/components/viz/service/display/display_resource_provider_skia.cc
+++ b/components/viz/service/display/display_resource_provider_skia.cc
@@ -84,6 +84,13 @@
       continue;
     }
 
+    if (resource.transferable.synchronization_type ==
+        TransferableResource::SynchronizationType::kReleaseFence) {
+      // The resource might have never been used.
+      if (resource.resource_fence)
+        resource.release_fence = resource.resource_fence->GetGpuFenceHandle();
+    }
+
     const bool is_lost = can_delete == CanDeleteNowResult::kYesButLoseResource;
 
     to_return.emplace_back(child_id, resource.sync_token(),
@@ -167,12 +174,20 @@
     }
     resource.locked_for_external_use = true;
 
-    if (resource.transferable.synchronization_type ==
-        TransferableResource::SynchronizationType::kGpuCommandsCompleted) {
-      if (resource_provider_->current_read_lock_fence_.get())
-        resource_provider_->current_read_lock_fence_->Set();
-      resource.read_lock_fence = resource_provider_->current_read_lock_fence_;
+    switch (resource.transferable.synchronization_type) {
+      case TransferableResource::SynchronizationType::kGpuCommandsCompleted:
+        resource.resource_fence =
+            resource_provider_->current_gpu_commands_completed_fence_;
+        break;
+      case TransferableResource::SynchronizationType::kReleaseFence:
+        resource.resource_fence = resource_provider_->current_release_fence_;
+        break;
+      default:
+        break;
     }
+
+    if (resource.resource_fence)
+      resource.resource_fence->Set();
   }
 
   DCHECK(base::Contains(resources_, std::make_pair(id, &resource)));
diff --git a/components/viz/service/display/display_resource_provider_skia_unittest.cc b/components/viz/service/display/display_resource_provider_skia_unittest.cc
index 6a1486cd..18f208a 100644
--- a/components/viz/service/display/display_resource_provider_skia_unittest.cc
+++ b/components/viz/service/display/display_resource_provider_skia_unittest.cc
@@ -17,10 +17,12 @@
 #include "base/callback_helpers.h"
 #include "base/check.h"
 #include "base/memory/ref_counted.h"
+#include "base/memory/scoped_refptr.h"
 #include "build/build_config.h"
 #include "components/viz/client/client_resource_provider.h"
 #include "components/viz/common/resources/release_callback.h"
 #include "components/viz/common/resources/returned_resource.h"
+#include "components/viz/common/resources/transferable_resource.h"
 #include "components/viz/test/test_context_provider.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -29,6 +31,7 @@
 #include "third_party/khronos/GLES2/gl2ext.h"
 #include "third_party/skia/include/core/SkColorSpace.h"
 #include "ui/gfx/geometry/rect.h"
+#include "ui/gfx/gpu_fence_handle.h"
 
 using testing::_;
 using testing::ByMove;
@@ -296,138 +299,218 @@
   child_resource_provider_->RemoveImportedResource(id1);
 }
 
-class TestFence : public ResourceFence {
+class TestGpuCommandsCompletedFence : public ResourceFence {
  public:
-  TestFence() = default;
+  TestGpuCommandsCompletedFence() = default;
 
   // ResourceFence implementation.
   void Set() override {}
   bool HasPassed() override { return passed; }
+  gfx::GpuFenceHandle GetGpuFenceHandle() override {
+    NOTREACHED();
+    return gfx::GpuFenceHandle();
+  }
 
   bool passed = false;
 
  private:
-  ~TestFence() override = default;
+  ~TestGpuCommandsCompletedFence() override = default;
+};
+
+class TestReleaseFence : public ResourceFence {
+ public:
+  TestReleaseFence() = default;
+
+  // ResourceFence implementation.
+  void Set() override {}
+  bool HasPassed() override { return release_fence_.has_value(); }
+  gfx::GpuFenceHandle GetGpuFenceHandle() override {
+    return HasPassed() ? release_fence_->Clone() : gfx::GpuFenceHandle();
+  }
+
+  void SetReleaseFence(gfx::GpuFenceHandle release_fence) {
+    release_fence_ = std::move(release_fence);
+  }
+
+ private:
+  ~TestReleaseFence() override = default;
+
+  absl::optional<gfx::GpuFenceHandle> release_fence_;
 };
 
 TEST_F(DisplayResourceProviderSkiaTest,
-       ReadLockFenceStopsReturnToChildOrDelete) {
-  MockReleaseCallback release;
-  TransferableResource tran1 = CreateResource(RGBA_8888);
-  tran1.synchronization_type =
-      TransferableResource::SynchronizationType::kGpuCommandsCompleted;
-  ResourceId id1 = child_resource_provider_->ImportResource(
-      tran1, base::BindOnce(&MockReleaseCallback::Released,
-                            base::Unretained(&release)));
+       ResourceFenceStopsReturnToChildOrDelete) {
+  const std::vector<TransferableResource::SynchronizationType>
+      kSynchronizationTypes = {
+          TransferableResource::SynchronizationType::kGpuCommandsCompleted,
+          TransferableResource::SynchronizationType::kReleaseFence};
+  for (auto sync_type : kSynchronizationTypes) {
+    MockReleaseCallback release;
+    TransferableResource tran1 = CreateResource(RGBA_8888);
+    tran1.synchronization_type = sync_type;
+    ResourceId id1 = child_resource_provider_->ImportResource(
+        tran1, base::BindOnce(&MockReleaseCallback::Released,
+                              base::Unretained(&release)));
 
-  std::vector<ReturnedResource> returned_to_child;
-  int child_id = resource_provider_->CreateChild(
-      GetReturnCallback(&returned_to_child), SurfaceId());
+    std::vector<ReturnedResource> returned_to_child;
+    int child_id = resource_provider_->CreateChild(
+        GetReturnCallback(&returned_to_child), SurfaceId());
 
-  // Transfer some resources to the parent.
-  std::vector<TransferableResource> list;
-  child_resource_provider_->PrepareSendToParent(
-      {id1}, &list,
-      static_cast<RasterContextProvider*>(child_context_provider_.get()));
-  ASSERT_EQ(1u, list.size());
-  EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1));
-  EXPECT_EQ(list[0].synchronization_type,
-            TransferableResource::SynchronizationType::kGpuCommandsCompleted);
+    // Transfer some resources to the parent.
+    std::vector<TransferableResource> list;
+    child_resource_provider_->PrepareSendToParent(
+        {id1}, &list,
+        static_cast<RasterContextProvider*>(child_context_provider_.get()));
+    ASSERT_EQ(1u, list.size());
+    EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1));
+    EXPECT_EQ(list[0].synchronization_type, sync_type);
 
-  resource_provider_->ReceiveFromChild(child_id, list);
+    resource_provider_->ReceiveFromChild(child_id, list);
 
-  // In DisplayResourceProvider's namespace, use the mapped resource id.
-  std::unordered_map<ResourceId, ResourceId, ResourceIdHasher> resource_map =
-      resource_provider_->GetChildToParentMap(child_id);
+    // In DisplayResourceProvider's namespace, use the mapped resource id.
+    std::unordered_map<ResourceId, ResourceId, ResourceIdHasher> resource_map =
+        resource_provider_->GetChildToParentMap(child_id);
 
-  scoped_refptr<TestFence> fence(new TestFence);
-  resource_provider_->SetReadLockFence(fence.get());
-  {
-    ResourceId parent_id = resource_map[list.front().id];
-    lock_set_->LockResource(parent_id, /*maybe_concurrent_reads=*/true,
-                            /*is_video_plane=*/false);
-    lock_set_->UnlockResources(GenSyncToken());
-  }
-  resource_provider_->DeclareUsedResourcesFromChild(child_id, ResourceIdSet());
-  EXPECT_EQ(0u, returned_to_child.size());
+    scoped_refptr<ResourceFence> fence;
+    TestGpuCommandsCompletedFence* gpu_commands_completed_fence = nullptr;
+    TestReleaseFence* release_fence = nullptr;
+    if (sync_type ==
+        TransferableResource::SynchronizationType::kGpuCommandsCompleted) {
+      fence = base::MakeRefCounted<TestGpuCommandsCompletedFence>();
+      gpu_commands_completed_fence =
+          static_cast<TestGpuCommandsCompletedFence*>(fence.get());
+      resource_provider_->SetGpuCommandsCompletedFence(fence.get());
+    } else {
+      ASSERT_EQ(TransferableResource::SynchronizationType::kReleaseFence,
+                sync_type);
+      fence = base::MakeRefCounted<TestReleaseFence>();
+      release_fence = static_cast<TestReleaseFence*>(fence.get());
+      resource_provider_->SetReleaseFence(fence.get());
+    }
 
-  resource_provider_->DeclareUsedResourcesFromChild(child_id, ResourceIdSet());
-  EXPECT_EQ(0u, returned_to_child.size());
-  fence->passed = true;
-
-  resource_provider_->DeclareUsedResourcesFromChild(child_id, ResourceIdSet());
-  EXPECT_EQ(1u, returned_to_child.size());
-
-  child_resource_provider_->ReceiveReturnsFromParent(
-      std::move(returned_to_child));
-  EXPECT_CALL(release, Released(_, _));
-  child_resource_provider_->RemoveImportedResource(id1);
-}
-
-TEST_F(DisplayResourceProviderSkiaTest, ReadLockFenceDestroyChild) {
-  MockReleaseCallback release;
-
-  TransferableResource tran1 = CreateResource(RGBA_8888);
-  tran1.synchronization_type =
-      TransferableResource::SynchronizationType::kGpuCommandsCompleted;
-  ResourceId id1 = child_resource_provider_->ImportResource(
-      tran1, base::BindOnce(&MockReleaseCallback::Released,
-                            base::Unretained(&release)));
-
-  TransferableResource tran2 = CreateResource(RGBA_8888);
-  ASSERT_EQ(tran2.synchronization_type,
-            TransferableResource::SynchronizationType::kSyncToken);
-  ResourceId id2 = child_resource_provider_->ImportResource(
-      tran2, base::BindOnce(&MockReleaseCallback::Released,
-                            base::Unretained(&release)));
-
-  std::vector<ReturnedResource> returned_to_child;
-  int child_id = resource_provider_->CreateChild(
-      GetReturnCallback(&returned_to_child), SurfaceId());
-
-  // Transfer resources to the parent.
-  std::vector<TransferableResource> list;
-  child_resource_provider_->PrepareSendToParent(
-      {id1, id2}, &list,
-      static_cast<RasterContextProvider*>(child_context_provider_.get()));
-  ASSERT_EQ(2u, list.size());
-  EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1));
-  EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2));
-
-  resource_provider_->ReceiveFromChild(child_id, list);
-
-  // In DisplayResourceProvider's namespace, use the mapped resource id.
-  std::unordered_map<ResourceId, ResourceId, ResourceIdHasher> resource_map =
-      resource_provider_->GetChildToParentMap(child_id);
-
-  scoped_refptr<TestFence> fence(new TestFence);
-  resource_provider_->SetReadLockFence(fence.get());
-  {
-    for (auto& resource : list) {
-      ResourceId parent_id = resource_map[resource.id];
+    {
+      ResourceId parent_id = resource_map[list.front().id];
       lock_set_->LockResource(parent_id, /*maybe_concurrent_reads=*/true,
                               /*is_video_plane=*/false);
+      lock_set_->UnlockResources(GenSyncToken());
     }
-    lock_set_->UnlockResources(GenSyncToken());
+
+    resource_provider_->DeclareUsedResourcesFromChild(child_id,
+                                                      ResourceIdSet());
+    EXPECT_EQ(0u, returned_to_child.size());
+
+    resource_provider_->DeclareUsedResourcesFromChild(child_id,
+                                                      ResourceIdSet());
+    EXPECT_EQ(0u, returned_to_child.size());
+
+    if (gpu_commands_completed_fence) {
+      gpu_commands_completed_fence->passed = true;
+    } else {
+      gfx::GpuFenceHandle fake_handle;
+      // Making a fake fence fd doesn't work on android. The test just crashes.
+#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID)
+      fake_handle.owned_fd.reset({1});
+#endif
+      release_fence->SetReleaseFence(std::move(fake_handle));
+    }
+
+    resource_provider_->DeclareUsedResourcesFromChild(child_id,
+                                                      ResourceIdSet());
+    EXPECT_EQ(1u, returned_to_child.size());
+
+#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID)
+    if (release_fence)
+      EXPECT_FALSE(returned_to_child.begin()->release_fence.is_null());
+    else
+      EXPECT_TRUE(returned_to_child.begin()->release_fence.is_null());
+#endif
+
+    child_resource_provider_->ReceiveReturnsFromParent(
+        std::move(returned_to_child));
+    EXPECT_CALL(release, Released(_, _));
+    child_resource_provider_->RemoveImportedResource(id1);
   }
-  EXPECT_EQ(0u, returned_to_child.size());
+}
 
-  EXPECT_EQ(2u, resource_provider_->num_resources());
+TEST_F(DisplayResourceProviderSkiaTest, ResourceFenceDestroyChild) {
+  const std::vector<TransferableResource::SynchronizationType>
+      kSynchronizationTypes = {
+          TransferableResource::SynchronizationType::kGpuCommandsCompleted,
+          TransferableResource::SynchronizationType::kReleaseFence};
+  for (auto sync_type : kSynchronizationTypes) {
+    MockReleaseCallback release;
 
-  resource_provider_->DestroyChild(child_id);
+    TransferableResource tran1 = CreateResource(RGBA_8888);
+    tran1.synchronization_type = sync_type;
+    ResourceId id1 = child_resource_provider_->ImportResource(
+        tran1, base::BindOnce(&MockReleaseCallback::Released,
+                              base::Unretained(&release)));
 
-  EXPECT_EQ(0u, resource_provider_->num_resources());
-  EXPECT_EQ(2u, returned_to_child.size());
+    TransferableResource tran2 = CreateResource(RGBA_8888);
+    ASSERT_EQ(tran2.synchronization_type,
+              TransferableResource::SynchronizationType::kSyncToken);
+    ResourceId id2 = child_resource_provider_->ImportResource(
+        tran2, base::BindOnce(&MockReleaseCallback::Released,
+                              base::Unretained(&release)));
 
-  // id1 should be lost and id2 should not.
-  EXPECT_EQ(returned_to_child[0].lost, returned_to_child[0].id == id1);
-  EXPECT_EQ(returned_to_child[1].lost, returned_to_child[1].id == id1);
+    std::vector<ReturnedResource> returned_to_child;
+    int child_id = resource_provider_->CreateChild(
+        GetReturnCallback(&returned_to_child), SurfaceId());
 
-  child_resource_provider_->ReceiveReturnsFromParent(
-      std::move(returned_to_child));
-  EXPECT_CALL(release, Released(_, _)).Times(2);
-  child_resource_provider_->RemoveImportedResource(id1);
-  child_resource_provider_->RemoveImportedResource(id2);
+    // Transfer resources to the parent.
+    std::vector<TransferableResource> list;
+    child_resource_provider_->PrepareSendToParent(
+        {id1, id2}, &list,
+        static_cast<RasterContextProvider*>(child_context_provider_.get()));
+    ASSERT_EQ(2u, list.size());
+    EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1));
+    EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2));
+
+    resource_provider_->ReceiveFromChild(child_id, list);
+
+    // In DisplayResourceProvider's namespace, use the mapped resource id.
+    std::unordered_map<ResourceId, ResourceId, ResourceIdHasher> resource_map =
+        resource_provider_->GetChildToParentMap(child_id);
+
+    scoped_refptr<ResourceFence> fence;
+    if (sync_type ==
+        TransferableResource::SynchronizationType::kGpuCommandsCompleted) {
+      fence = base::MakeRefCounted<TestGpuCommandsCompletedFence>();
+      resource_provider_->SetGpuCommandsCompletedFence(fence.get());
+    } else {
+      ASSERT_EQ(TransferableResource::SynchronizationType::kReleaseFence,
+                sync_type);
+      fence = base::MakeRefCounted<TestReleaseFence>();
+      resource_provider_->SetReleaseFence(fence.get());
+    }
+
+    {
+      for (auto& resource : list) {
+        ResourceId parent_id = resource_map[resource.id];
+        lock_set_->LockResource(parent_id, /*maybe_concurrent_reads=*/true,
+                                /*is_video_plane=*/false);
+      }
+      lock_set_->UnlockResources(GenSyncToken());
+    }
+    EXPECT_EQ(0u, returned_to_child.size());
+
+    EXPECT_EQ(2u, resource_provider_->num_resources());
+
+    resource_provider_->DestroyChild(child_id);
+
+    EXPECT_EQ(0u, resource_provider_->num_resources());
+    EXPECT_EQ(2u, returned_to_child.size());
+
+    // id1 should be lost and id2 should not.
+    EXPECT_EQ(returned_to_child[0].lost, returned_to_child[0].id == id1);
+    EXPECT_EQ(returned_to_child[1].lost, returned_to_child[1].id == id1);
+
+    child_resource_provider_->ReceiveReturnsFromParent(
+        std::move(returned_to_child));
+    EXPECT_CALL(release, Released(_, _)).Times(2);
+    child_resource_provider_->RemoveImportedResource(id1);
+    child_resource_provider_->RemoveImportedResource(id2);
+  }
 }
 
 // Test that ScopedBatchReturnResources batching works.
diff --git a/components/viz/service/display/resource_fence.h b/components/viz/service/display/resource_fence.h
index dc4153e..59e1101 100644
--- a/components/viz/service/display/resource_fence.h
+++ b/components/viz/service/display/resource_fence.h
@@ -7,6 +7,8 @@
 
 #include "base/memory/ref_counted.h"
 
+#include "ui/gfx/gpu_fence_handle.h"
+
 namespace viz {
 
 // An abstract interface used to ensure reading from resources passed between
@@ -16,8 +18,16 @@
   ResourceFence(const ResourceFence&) = delete;
   ResourceFence& operator=(const ResourceFence&) = delete;
 
+  // Notifies the fence is needed.
   virtual void Set() = 0;
+  // Tells if the fence is ready.
   virtual bool HasPassed() = 0;
+  // A release fence which availability depends on the type of resource fence
+  // (managed by DisplayResourceProvider and
+  // TransferableResource::synchronization_type). The client must ensure that
+  // HasPassed is true before trying to access the release fence handle.
+  // Otherwise, it's not guaranteed that the fence handle is valid.
+  virtual gfx::GpuFenceHandle GetGpuFenceHandle() = 0;
 
  protected:
   friend class base::RefCountedThreadSafe<ResourceFence>;
diff --git a/components/viz/service/display/skia_output_surface.h b/components/viz/service/display/skia_output_surface.h
index 2378966..a6557e3 100644
--- a/components/viz/service/display/skia_output_surface.h
+++ b/components/viz/service/display/skia_output_surface.h
@@ -17,6 +17,7 @@
 #include "components/viz/service/display/overlay_processor_interface.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
 #include "third_party/skia/include/core/SkYUVAInfo.h"
+#include "ui/gfx/gpu_fence_handle.h"
 
 #if BUILDFLAG(IS_WIN)
 #include "components/viz/service/display/dc_layer_overlay.h"
@@ -129,8 +130,13 @@
   // play the DDL back on GPU thread on a cached SkSurface.
   // Optionally the caller may specify |on_finished| callback to be called after
   // the GPU has finished processing all submitted commands. The callback may be
-  // called on a different thread.
-  virtual void EndPaint(base::OnceClosure on_finished) = 0;
+  // called on a different thread. The caller may also specify
+  // |return_release_fence_cb| callback to be called after all commands are
+  // submitted. The callback will return the release fence which will be
+  // signaled once the submitted commands are processed.
+  virtual void EndPaint(base::OnceClosure on_finished,
+                        base::OnceCallback<void(gfx::GpuFenceHandle)>
+                            return_release_fence_cb) = 0;
 
   // Make a promise SkImage from a render pass id. The render pass has been
   // painted with BeginPaintRenderPass and FinishPaintRenderPass. The format
diff --git a/components/viz/service/display/skia_renderer.cc b/components/viz/service/display/skia_renderer.cc
index fbd06e7..b3f8d00 100644
--- a/components/viz/service/display/skia_renderer.cc
+++ b/components/viz/service/display/skia_renderer.cc
@@ -701,22 +701,30 @@
   sk_sp<SkImage> sk_image_;
 };
 
-class SkiaRenderer::FrameResourceFence : public ResourceFence {
+// A read lock based fence that is signaled after gpu commands are completed
+// meaning the resource has been read.
+class SkiaRenderer::FrameResourceGpuCommandsCompletedFence
+    : public ResourceFence {
  public:
-  FrameResourceFence() = default;
-
-  FrameResourceFence(const FrameResourceFence&) = delete;
-  FrameResourceFence& operator=(const FrameResourceFence&) = delete;
+  FrameResourceGpuCommandsCompletedFence() = default;
+  FrameResourceGpuCommandsCompletedFence(
+      const FrameResourceGpuCommandsCompletedFence&) = delete;
+  FrameResourceGpuCommandsCompletedFence& operator=(
+      const FrameResourceGpuCommandsCompletedFence&) = delete;
 
   // ResourceFence implementation.
   void Set() override { set_ = true; }
   bool HasPassed() override { return event_.IsSignaled(); }
+  gfx::GpuFenceHandle GetGpuFenceHandle() override {
+    NOTREACHED();
+    return gfx::GpuFenceHandle();
+  }
 
   bool WasSet() { return set_; }
   void Signal() { event_.Signal(); }
 
  private:
-  ~FrameResourceFence() override = default;
+  ~FrameResourceGpuCommandsCompletedFence() override = default;
 
   // Accessed only from compositor thread.
   bool set_ = false;
@@ -724,6 +732,41 @@
   base::WaitableEvent event_;
 };
 
+// FrameResourceFence that gets a ReleaseFence which is later set to returned
+// resources.
+class SkiaRenderer::FrameResourceReleaseFence : public ResourceFence {
+ public:
+  FrameResourceReleaseFence() = default;
+  FrameResourceReleaseFence(const FrameResourceReleaseFence&) = delete;
+  FrameResourceReleaseFence& operator=(const FrameResourceReleaseFence&) =
+      delete;
+
+  // ResourceFence implementation:
+  void Set() override { set_ = true; }
+  // If the fence handle has been set, |this| has passed aka the callback has
+  // been called.
+  bool HasPassed() override { return release_fence_.has_value(); }
+  gfx::GpuFenceHandle GetGpuFenceHandle() override {
+    return HasPassed() ? release_fence_.value().Clone() : gfx::GpuFenceHandle();
+  }
+
+  bool WasSet() { return set_; }
+  void SetReleaseFenceCallback(gfx::GpuFenceHandle release_fence) {
+    release_fence_ = std::move(release_fence);
+  }
+
+ private:
+  ~FrameResourceReleaseFence() override = default;
+
+  // Accessed only from compositor thread.
+  bool set_ = false;
+
+  // This is made optional so that the value is set after
+  // SetReleaseFenceCallback is called. Otherwise, there is no way to know if
+  // the fence has been set and a null handle is a "valid" handle.
+  absl::optional<gfx::GpuFenceHandle> release_fence_;
+};
+
 SkiaRenderer::SkiaRenderer(const RendererSettings* settings,
                            const DebugRendererSettings* debug_settings,
                            OutputSurface* output_surface,
@@ -740,9 +783,17 @@
   DCHECK(skia_output_surface_);
   lock_set_for_external_use_.emplace(resource_provider, skia_output_surface_);
 
-  current_frame_resource_fence_ = base::MakeRefCounted<FrameResourceFence>();
-  this->resource_provider()->SetReadLockFence(
-      current_frame_resource_fence_.get());
+  // There can be different synchronization types requested for different
+  // resources. Some of them may require SyncToken, others - ReadLockFence, and
+  // others may need ReleaseFence. SyncTokens are set when the output surface
+  // is flushed and external resources are released. However, other resources
+  // require additional setup, which helps to handle that.
+  current_gpu_commands_completed_fence_ =
+      base::MakeRefCounted<FrameResourceGpuCommandsCompletedFence>();
+  current_release_fence_ = base::MakeRefCounted<FrameResourceReleaseFence>();
+  this->resource_provider()->SetGpuCommandsCompletedFence(
+      current_gpu_commands_completed_fence_.get());
+  this->resource_provider()->SetReleaseFence(current_release_fence_.get());
 
 #if OS_ANDROID
   use_real_color_space_for_stream_video_ =
@@ -759,7 +810,8 @@
 void SkiaRenderer::BeginDrawingFrame() {
   TRACE_EVENT0("viz", "SkiaRenderer::BeginDrawingFrame");
 
-  DCHECK(!current_frame_resource_fence_->WasSet());
+  DCHECK(!current_gpu_commands_completed_fence_->WasSet());
+  DCHECK(!current_release_fence_->WasSet());
 }
 
 void SkiaRenderer::FinishDrawingFrame() {
@@ -2415,7 +2467,8 @@
 }
 
 void SkiaRenderer::ScheduleOverlays() {
-  DCHECK(!current_frame_resource_fence_->WasSet());
+  DCHECK(!current_gpu_commands_completed_fence_->WasSet());
+  DCHECK(!current_release_fence_->WasSet());
 
   // Always add an empty set of locks to be used in either SwapBuffersSkipped()
   // or SwapBuffersComplete().
@@ -2527,7 +2580,8 @@
   NOTREACHED();
 #endif  // BUILDFLAG(IS_ANDROID)
 
-  DCHECK(!current_frame_resource_fence_->WasSet());
+  DCHECK(!current_gpu_commands_completed_fence_->WasSet());
+  DCHECK(!current_release_fence_->WasSet());
 
   skia_output_surface_->ScheduleOverlays(
       std::move(current_frame()->overlay_list), std::move(sync_tokens));
@@ -2872,16 +2926,7 @@
   if (is_root_render_pass && UsingSkiaForDelegatedInk())
     DrawDelegatedInkTrail();
 
-  base::OnceClosure on_finished_callback;
-  // Signal |current_frame_resource_fence_| when the root render pass is
-  // finished.
-  if (current_frame_resource_fence_->WasSet()) {
-    on_finished_callback = base::BindOnce(
-        &FrameResourceFence::Signal, std::move(current_frame_resource_fence_));
-    current_frame_resource_fence_ = base::MakeRefCounted<FrameResourceFence>();
-    resource_provider()->SetReadLockFence(current_frame_resource_fence_.get());
-  }
-  skia_output_surface_->EndPaint(std::move(on_finished_callback));
+  EndPaint(/*failed=*/false);
 
   // Defer flushing drawing task for root render pass, to avoid extra
   // MakeCurrent() call. It is expensive on GL.
@@ -3189,7 +3234,7 @@
     if (!content_image) {
       DLOG(ERROR) << "MakePromiseSkImageFromRenderPass() in "
                      "PrepareRenderPassOverlay() failed.";
-      skia_output_surface_->EndPaint(base::NullCallback());
+      EndPaint(/*failed=*/true);
       return;
     }
 
@@ -3209,14 +3254,7 @@
 
   current_canvas_ = nullptr;
 
-  base::OnceClosure on_finished_callback;
-  if (current_frame_resource_fence_->WasSet()) {
-    on_finished_callback = base::BindOnce(
-        &FrameResourceFence::Signal, std::move(current_frame_resource_fence_));
-    current_frame_resource_fence_ = base::MakeRefCounted<FrameResourceFence>();
-    resource_provider()->SetReadLockFence(current_frame_resource_fence_.get());
-  }
-  skia_output_surface_->EndPaint(std::move(on_finished_callback));
+  EndPaint(/*failed=*/false);
 
   // Adjust |bounds_rect| to contain the whole buffer and at the right location.
   overlay->bounds_rect.set_origin(gfx::PointF(filter_bounds.origin()));
@@ -3224,6 +3262,39 @@
 }
 #endif  // BUILDFLAG(IS_APPLE) || defined(USE_OZONE)
 
+void SkiaRenderer::EndPaint(bool failed) {
+  base::OnceClosure on_finished_callback;
+  base::OnceCallback<void(gfx::GpuFenceHandle)> on_return_release_fence_cb;
+  // If SkiaRenderer has not failed, prepare callbacks and pass them to
+  // SkiaOutputSurface.
+  if (!failed) {
+    // Signal |current_frame_resource_fence_| when the root render pass is
+    // finished.
+    if (current_gpu_commands_completed_fence_->WasSet()) {
+      on_finished_callback =
+          base::BindOnce(&FrameResourceGpuCommandsCompletedFence::Signal,
+                         std::move(current_gpu_commands_completed_fence_));
+      current_gpu_commands_completed_fence_ =
+          base::MakeRefCounted<FrameResourceGpuCommandsCompletedFence>();
+      resource_provider()->SetGpuCommandsCompletedFence(
+          current_gpu_commands_completed_fence_.get());
+    }
+
+    // Return a release fence to the |current_release_fence_|
+    // when the root render pass is finished.
+    if (current_release_fence_->WasSet()) {
+      on_return_release_fence_cb =
+          base::BindOnce(&FrameResourceReleaseFence::SetReleaseFenceCallback,
+                         std::move(current_release_fence_));
+      current_release_fence_ =
+          base::MakeRefCounted<FrameResourceReleaseFence>();
+      resource_provider()->SetReleaseFence(current_release_fence_.get());
+    }
+  }
+  skia_output_surface_->EndPaint(std::move(on_finished_callback),
+                                 std::move(on_return_release_fence_cb));
+}
+
 bool SkiaRenderer::IsRenderPassResourceAllocated(
     const AggregatedRenderPassId& render_pass_id) const {
   auto it = render_pass_backings_.find(render_pass_id);
diff --git a/components/viz/service/display/skia_renderer.h b/components/viz/service/display/skia_renderer.h
index c7bceb8..7922aee 100644
--- a/components/viz/service/display/skia_renderer.h
+++ b/components/viz/service/display/skia_renderer.h
@@ -264,6 +264,11 @@
       OverlayProcessorInterface::PlatformOverlayCandidate* overlay);
 #endif
 
+  // Sets up callbacks for frame resource fences and passes them to
+  // SkiaOutputSurface by calling EndPaint on that. If |failed|,
+  // SkiaOutputSurface::EndPaint will be called with null callbacks.
+  void EndPaint(bool failed);
+
   DisplayResourceProviderSkia* resource_provider() {
     return static_cast<DisplayResourceProviderSkia*>(resource_provider_);
   }
@@ -288,8 +293,12 @@
   raw_ptr<SkCanvas> root_canvas_ = nullptr;
   raw_ptr<SkCanvas> current_canvas_ = nullptr;
   raw_ptr<SkSurface> current_surface_ = nullptr;
-  class FrameResourceFence;
-  scoped_refptr<FrameResourceFence> current_frame_resource_fence_;
+
+  class FrameResourceGpuCommandsCompletedFence;
+  scoped_refptr<FrameResourceGpuCommandsCompletedFence>
+      current_gpu_commands_completed_fence_;
+  class FrameResourceReleaseFence;
+  scoped_refptr<FrameResourceReleaseFence> current_release_fence_;
 
   bool disable_picture_quad_image_filtering_ = false;
   bool is_scissor_enabled_ = false;
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl.cc b/components/viz/service/display_embedder/skia_output_surface_impl.cc
index 33311cb..74fd2601 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl.cc
@@ -624,7 +624,9 @@
   return current_paint_->recorder()->getCanvas();
 }
 
-void SkiaOutputSurfaceImpl::EndPaint(base::OnceClosure on_finished) {
+void SkiaOutputSurfaceImpl::EndPaint(
+    base::OnceClosure on_finished,
+    base::OnceCallback<void(gfx::GpuFenceHandle)> return_release_fence_cb) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(current_paint_);
   auto ddl = current_paint_->recorder()->detach();
@@ -649,7 +651,8 @@
         &SkiaOutputSurfaceImplOnGpu::FinishPaintCurrentFrame,
         base::Unretained(impl_on_gpu_.get()), std::move(ddl),
         std::move(overdraw_ddl), std::move(images_in_current_paint_),
-        resource_sync_tokens_, std::move(on_finished), draw_rectangle_);
+        resource_sync_tokens_, std::move(on_finished),
+        std::move(return_release_fence_cb), draw_rectangle_);
     EnqueueGpuTask(std::move(task), std::move(resource_sync_tokens_),
                    /*make_current=*/true, /*need_framebuffer=*/true);
     draw_rectangle_.reset();
@@ -658,7 +661,8 @@
         &SkiaOutputSurfaceImplOnGpu::FinishPaintRenderPass,
         base::Unretained(impl_on_gpu_.get()), current_paint_->mailbox(),
         std::move(ddl), std::move(images_in_current_paint_),
-        resource_sync_tokens_, std::move(on_finished));
+        resource_sync_tokens_, std::move(on_finished),
+        std::move(return_release_fence_cb));
     EnqueueGpuTask(std::move(task), std::move(resource_sync_tokens_),
                    /*make_current=*/true, /*need_framebuffer=*/false);
   }
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl.h b/components/viz/service/display_embedder/skia_output_surface_impl.h
index e0dc4826..685a700 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl.h
+++ b/components/viz/service/display_embedder/skia_output_surface_impl.h
@@ -117,7 +117,9 @@
                                  sk_sp<SkColorSpace> color_space,
                                  bool is_overlay,
                                  const gpu::Mailbox& mailbox) override;
-  void EndPaint(base::OnceClosure on_finished) override;
+  void EndPaint(base::OnceClosure on_finished,
+                base::OnceCallback<void(gfx::GpuFenceHandle)>
+                    return_release_fence_cb) override;
   void MakePromiseSkImage(ImageContext* image_context) override;
   sk_sp<SkImage> MakePromiseSkImageFromRenderPass(
       const AggregatedRenderPassId& id,
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
index 713a175..71b1628d2 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -12,6 +12,7 @@
 #include "base/callback_helpers.h"
 #include "base/debug/crash_logging.h"
 #include "base/memory/raw_ptr.h"
+#include "base/notreached.h"
 #include "base/task/bind_post_task.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/memory_dump_manager.h"
@@ -38,6 +39,7 @@
 #include "components/viz/service/display_embedder/skia_output_surface_dependency.h"
 #include "components/viz/service/display_embedder/skia_render_copy_results.h"
 #include "gpu/command_buffer/common/swap_buffers_complete_params.h"
+#include "gpu/command_buffer/service/external_semaphore.h"
 #include "gpu/command_buffer/service/gr_shader_cache.h"
 #include "gpu/command_buffer/service/memory_tracking.h"
 #include "gpu/command_buffer/service/scheduler.h"
@@ -68,10 +70,14 @@
 #include "ui/gfx/geometry/rect_conversions.h"
 #include "ui/gfx/geometry/skia_conversions.h"
 #include "ui/gfx/gpu_fence_handle.h"
+#include "ui/gl/gl_fence.h"
 #include "ui/gl/gl_surface.h"
 
 #if BUILDFLAG(ENABLE_VULKAN)
 #include "components/viz/service/display_embedder/skia_output_device_vulkan.h"
+#include "gpu/vulkan/vulkan_device_queue.h"
+#include "gpu/vulkan/vulkan_function_pointers.h"
+#include "gpu/vulkan/vulkan_implementation.h"
 #include "gpu/vulkan/vulkan_util.h"
 #if BUILDFLAG(IS_ANDROID)
 #include "components/viz/service/display_embedder/skia_output_device_vulkan_secondary_cb.h"
@@ -398,6 +404,7 @@
     std::vector<ImageContextImpl*> image_contexts,
     std::vector<gpu::SyncToken> sync_tokens,
     base::OnceClosure on_finished,
+    base::OnceCallback<void(gfx::GpuFenceHandle)> return_release_fence_cb,
     absl::optional<gfx::Rect> draw_rectangle) {
   TRACE_EVENT0("viz", "SkiaOutputSurfaceImplOnGpu::FinishPaintCurrentFrame");
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
@@ -480,7 +487,24 @@
     end_semaphores.insert(end_semaphores.end(), end_paint_semaphores.begin(),
                           end_paint_semaphores.end());
 
+#if BUILDFLAG(ENABLE_VULKAN)
+    // Semaphores for release fences for vulkan should be created before flush.
+    if (!return_release_fence_cb.is_null() && is_using_vulkan()) {
+      const bool result = CreateAndStoreExternalSemaphoreVulkan(end_semaphores);
+      // A release fence will be created on submit as some platforms may use
+      // VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT handle types for their
+      // external semaphore. That handle type has COPY transference. Vulkan spec
+      // says that semaphore has to be signaled, or have an associated semaphore
+      // signal operation pending execution. Thus, delay importing the handle
+      // and creating the fence until commands are submitted.
+      pending_release_fence_cbs_.emplace_back(
+          result ? end_semaphores.back() : GrBackendSemaphore(),
+          std::move(return_release_fence_cb));
+    }
+#endif
+
     const bool end_semaphores_empty = end_semaphores.empty();
+
     auto result = scoped_output_device_paint_->Flush(vulkan_context_provider_,
                                                      std::move(end_semaphores),
                                                      std::move(on_finished));
@@ -491,6 +515,22 @@
       FailedSkiaFlush("output_sk_surface()->flush() failed.");
       return;
     }
+
+    gfx::GpuFenceHandle release_fence;
+    if (!return_release_fence_cb.is_null() && is_using_gl()) {
+      DCHECK(release_fence.is_null());
+      release_fence = CreateReleaseFenceForGL();
+    }
+
+    if (!return_release_fence_cb.is_null() && is_using_dawn())
+      NOTIMPLEMENTED() << "Release fences with dawn are not supported.";
+
+    if (!return_release_fence_cb.is_null()) {
+      // Returning fences for Vulkan is delayed. See the comment above.
+      DCHECK(!is_using_vulkan());
+      PostTaskToClientThread(base::BindOnce(std::move(return_release_fence_cb),
+                                            std::move(release_fence)));
+    }
   }
 }
 
@@ -535,7 +575,8 @@
     sk_sp<SkDeferredDisplayList> ddl,
     std::vector<ImageContextImpl*> image_contexts,
     std::vector<gpu::SyncToken> sync_tokens,
-    base::OnceClosure on_finished) {
+    base::OnceClosure on_finished,
+    base::OnceCallback<void(gfx::GpuFenceHandle)> return_release_fence_cb) {
   TRACE_EVENT0("viz", "SkiaOutputSurfaceImplOnGpu::FinishPaintRenderPass");
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(ddl);
@@ -586,6 +627,22 @@
     backing_representation->SetCleared();
     destroy_after_swap_.emplace_back(std::move(ddl));
 
+#if BUILDFLAG(ENABLE_VULKAN)
+    // Semaphores for release fences for vulkan should be created before flush.
+    if (!return_release_fence_cb.is_null() && is_using_vulkan()) {
+      const bool result = CreateAndStoreExternalSemaphoreVulkan(end_semaphores);
+      // A release fence will be created on submit as some platforms may use
+      // VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT handle types for their
+      // external semaphore. That handle type has COPY transference. Vulkan spec
+      // says that semaphore has to be signaled, or have an associated semaphore
+      // signal operation pending execution. Thus, delay importing the handle
+      // and creating the fence until commands are submitted.
+      pending_release_fence_cbs_.emplace_back(
+          result ? end_semaphores.back() : GrBackendSemaphore(),
+          std::move(return_release_fence_cb));
+    }
+#endif
+
     GrFlushInfo flush_info = {
         .fNumSemaphores = end_semaphores.size(),
         .fSignalSemaphores = end_semaphores.data(),
@@ -594,6 +651,7 @@
                                           &flush_info);
     if (on_finished)
       gpu::AddCleanupTaskForSkiaFlush(std::move(on_finished), &flush_info);
+
     auto result = surface->flush(flush_info);
     if (result != GrSemaphoresSubmitted::kYes &&
         !(begin_semaphores.empty() && end_semaphores.empty())) {
@@ -601,6 +659,24 @@
       FailedSkiaFlush("offscreen.surface()->flush() failed.");
       return;
     }
+
+    // If GL is used, create the release fence after flush.
+    gfx::GpuFenceHandle release_fence;
+    if (!return_release_fence_cb.is_null() && is_using_gl()) {
+      DCHECK(release_fence.is_null());
+      release_fence = CreateReleaseFenceForGL();
+    }
+
+    if (!return_release_fence_cb.is_null() && is_using_dawn())
+      NOTIMPLEMENTED() << "Release fences with dawn are not supported.";
+
+    if (!return_release_fence_cb.is_null()) {
+      // Returning fences for Vulkan is delayed. See the comment above.
+      DCHECK(!is_using_vulkan());
+      PostTaskToClientThread(base::BindOnce(std::move(return_release_fence_cb),
+                                            std::move(release_fence)));
+    }
+
     bool sync_cpu =
         gpu::ShouldVulkanSyncCpuForSkiaSubmit(vulkan_context_provider_);
     if (sync_cpu) {
@@ -1788,6 +1864,20 @@
   promise_image_access_helper_.EndAccess();
   scoped_output_device_paint_.reset();
 
+#if BUILDFLAG(ENABLE_VULKAN)
+  while (!pending_release_fence_cbs_.empty()) {
+    auto& item = pending_release_fence_cbs_.front();
+    auto release_fence = CreateReleaseFenceForVulkan(item.first);
+    if (release_fence.is_null())
+      LOG(ERROR) << "Unable to create a release fence for Vulkan.";
+    PostTaskToClientThread(
+        base::BindOnce(std::move(item.second), std::move(release_fence)));
+    pending_release_fence_cbs_.pop_front();
+  }
+#else
+  DCHECK(pending_release_fence_cbs_.empty());
+#endif
+
   if (frame) {
     if (waiting_for_full_damage_) {
       // If we're using partial swap, we need to check whether the sub-buffer
@@ -2009,4 +2099,56 @@
   output_device_->DiscardBackbuffer();
 }
 
+#if BUILDFLAG(ENABLE_VULKAN)
+gfx::GpuFenceHandle SkiaOutputSurfaceImplOnGpu::CreateReleaseFenceForVulkan(
+    const GrBackendSemaphore& semaphore) {
+  DCHECK(is_using_vulkan());
+
+  if (semaphore.vkSemaphore() == VK_NULL_HANDLE)
+    return {};
+
+  auto* implementation = vulkan_context_provider_->GetVulkanImplementation();
+  VkDevice device =
+      vulkan_context_provider_->GetDeviceQueue()->GetVulkanDevice();
+
+  auto handle =
+      implementation->GetSemaphoreHandle(device, semaphore.vkSemaphore());
+  if (!handle.is_valid()) {
+    vkDestroySemaphore(device, semaphore.vkSemaphore(),
+                       /*pAllocator=*/nullptr);
+    LOG(ERROR) << "Failed to create a release fence for Vulkan.";
+    return {};
+  }
+  return std::move(handle).ToGpuFenceHandle();
+}
+
+bool SkiaOutputSurfaceImplOnGpu::CreateAndStoreExternalSemaphoreVulkan(
+    std::vector<GrBackendSemaphore>& end_semaphores) {
+  DCHECK(is_using_vulkan());
+
+  auto* implementation = vulkan_context_provider_->GetVulkanImplementation();
+  VkDevice device =
+      vulkan_context_provider_->GetDeviceQueue()->GetVulkanDevice();
+
+  VkSemaphore semaphore = implementation->CreateExternalSemaphore(device);
+  if (semaphore == VK_NULL_HANDLE) {
+    LOG(ERROR)
+        << "Creation of an external semaphore for a release fence failed.";
+    return false;
+  }
+
+  end_semaphores.emplace_back();
+  end_semaphores.back().initVulkan(semaphore);
+  return true;
+}
+#endif
+
+gfx::GpuFenceHandle SkiaOutputSurfaceImplOnGpu::CreateReleaseFenceForGL() {
+  if (gl::GLFence::IsGpuFenceSupported()) {
+    auto fence = gl::GLFence::CreateForGpuFence();
+    return fence->GetGpuFence()->GetGpuFenceHandle().Clone();
+  }
+  return {};
+}
+
 }  // namespace viz
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h
index 0be8048..47b069b 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h
@@ -5,6 +5,7 @@
 #ifndef COMPONENTS_VIZ_SERVICE_DISPLAY_EMBEDDER_SKIA_OUTPUT_SURFACE_IMPL_ON_GPU_H_
 #define COMPONENTS_VIZ_SERVICE_DISPLAY_EMBEDDER_SKIA_OUTPUT_SURFACE_IMPL_ON_GPU_H_
 
+#include <deque>
 #include <map>
 #include <memory>
 #include <utility>
@@ -41,6 +42,7 @@
 #include "third_party/skia/include/core/SkPromiseImageTexture.h"
 #include "third_party/skia/include/core/SkSurface.h"
 #include "third_party/skia/include/gpu/GrBackendSemaphore.h"
+#include "ui/gfx/gpu_fence_handle.h"
 
 namespace gfx {
 namespace mojom {
@@ -137,12 +139,14 @@
                const gfx::ColorSpace& color_space,
                float device_scale_factor,
                gfx::OverlayTransform transform);
-  void FinishPaintCurrentFrame(sk_sp<SkDeferredDisplayList> ddl,
-                               sk_sp<SkDeferredDisplayList> overdraw_ddl,
-                               std::vector<ImageContextImpl*> image_contexts,
-                               std::vector<gpu::SyncToken> sync_tokens,
-                               base::OnceClosure on_finished,
-                               absl::optional<gfx::Rect> draw_rectangle);
+  void FinishPaintCurrentFrame(
+      sk_sp<SkDeferredDisplayList> ddl,
+      sk_sp<SkDeferredDisplayList> overdraw_ddl,
+      std::vector<ImageContextImpl*> image_contexts,
+      std::vector<gpu::SyncToken> sync_tokens,
+      base::OnceClosure on_finished,
+      base::OnceCallback<void(gfx::GpuFenceHandle)> return_release_fence_cb,
+      absl::optional<gfx::Rect> draw_rectangle);
   void ScheduleOutputSurfaceAsOverlay(
       const OverlayProcessorInterface::OutputSurfaceOverlayPlane&
           output_surface_plane);
@@ -157,11 +161,13 @@
   void SwapBuffersSkipped();
   void EnsureBackbuffer();
   void DiscardBackbuffer();
-  void FinishPaintRenderPass(const gpu::Mailbox& mailbox,
-                             sk_sp<SkDeferredDisplayList> ddl,
-                             std::vector<ImageContextImpl*> image_contexts,
-                             std::vector<gpu::SyncToken> sync_tokens,
-                             base::OnceClosure on_finished);
+  void FinishPaintRenderPass(
+      const gpu::Mailbox& mailbox,
+      sk_sp<SkDeferredDisplayList> ddl,
+      std::vector<ImageContextImpl*> image_contexts,
+      std::vector<gpu::SyncToken> sync_tokens,
+      base::OnceClosure on_finished,
+      base::OnceCallback<void(gfx::GpuFenceHandle)> return_release_fence_cb);
   // Deletes resources for RenderPasses in |ids|. Also takes ownership of
   // |images_contexts| and destroys them on GPU thread.
   void RemoveRenderPassResource(
@@ -296,6 +302,8 @@
            gpu_preferences_.gr_context_type == gpu::GrContextType::kDawn;
   }
 
+  bool is_using_gl() const { return !is_using_vulkan() && !is_using_dawn(); }
+
   // Helper for `CopyOutput()` method, handles the RGBA format.
   void CopyOutputRGBA(SkSurface* surface,
                       copy_output::RenderPassGeometry geometry,
@@ -377,6 +385,19 @@
 
   void ReleaseAsyncReadResultHelpers();
 
+#if BUILDFLAG(ENABLE_VULKAN)
+  // Creates a release fence. The semaphore is an external semaphore created
+  // by CreateAndStoreExternalSemaphoreVulkan(). May destroy VkSemaphore that
+  // the |semaphore| stores if creation of a release fence fails. In this case,
+  // invalid fence handle is returned.
+  gfx::GpuFenceHandle CreateReleaseFenceForVulkan(
+      const GrBackendSemaphore& semaphore);
+  // Returns true if succeess.
+  bool CreateAndStoreExternalSemaphoreVulkan(
+      std::vector<GrBackendSemaphore>& end_semaphores);
+#endif
+  gfx::GpuFenceHandle CreateReleaseFenceForGL();
+
   class ReleaseCurrent {
    public:
     ReleaseCurrent(scoped_refptr<gl::GLSurface> gl_surface,
@@ -479,6 +500,13 @@
   // Tracking for ongoing AsyncReadResults.
   base::flat_set<AsyncReadResultHelper*> async_read_result_helpers_;
 
+  // Pending release fence callbacks. These callbacks can be delayed if Vulkan
+  // external semaphore type has copy transference, which means importing
+  // semaphores has to be delayed until submission.
+  std::deque<std::pair<GrBackendSemaphore,
+                       base::OnceCallback<void(gfx::GpuFenceHandle)>>>
+      pending_release_fence_cbs_;
+
   THREAD_CHECKER(thread_checker_);
 
   base::WeakPtr<SkiaOutputSurfaceImplOnGpu> weak_ptr_;
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_unittest.cc b/components/viz/service/display_embedder/skia_output_surface_impl_unittest.cc
index a44fbb46..8d69440 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_unittest.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_unittest.cc
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/callback_forward.h"
 #include "base/callback_helpers.h"
 #include "base/run_loop.h"
 #include "cc/test/fake_output_surface_client.h"
@@ -23,6 +24,7 @@
 #include "gpu/command_buffer/service/service_utils.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "ui/gfx/gpu_fence_handle.h"
 #include "ui/gl/gl_implementation.h"
 
 namespace viz {
@@ -45,8 +47,10 @@
   void SetUpSkiaOutputSurfaceImpl();
 
   // Paints and submits root RenderPass with a solid color rect of |size|.
-  gpu::SyncToken PaintRootRenderPass(const gfx::Rect& output_rect,
-                                     base::OnceClosure closure);
+  gpu::SyncToken PaintRootRenderPass(
+      const gfx::Rect& output_rect,
+      base::OnceClosure closure,
+      base::OnceCallback<void(gfx::GpuFenceHandle)> return_release_fence);
 
   void CheckSyncTokenOnGpuThread(const gpu::SyncToken& sync_token);
   void CopyRequestCallbackOnGpuThread(const gfx::Rect& output_rect,
@@ -87,13 +91,15 @@
 
 gpu::SyncToken SkiaOutputSurfaceImplTest::PaintRootRenderPass(
     const gfx::Rect& rect,
-    base::OnceClosure closure) {
+    base::OnceClosure closure,
+    base::OnceCallback<void(gfx::GpuFenceHandle)> return_release_fence) {
   SkPaint paint;
   paint.setColor(kOutputColor);
   SkCanvas* root_canvas = output_surface_->BeginPaintCurrentFrame();
   root_canvas->drawRect(
       SkRect::MakeXYWH(rect.x(), rect.y(), rect.height(), rect.width()), paint);
-  output_surface_->EndPaint(std::move(closure));
+  output_surface_->EndPaint(std::move(closure),
+                            std::move(return_release_fence));
   return output_surface_->Flush();
 }
 
@@ -142,9 +148,14 @@
   bool on_finished_called = false;
   base::OnceClosure on_finished =
       base::BindOnce([](bool* result) { *result = true; }, &on_finished_called);
+  bool on_return_release_fence_called = false;
+  base::OnceCallback<void(gfx::GpuFenceHandle)> return_release_fence_cb =
+      base::BindOnce(
+          [](bool* result, gfx::GpuFenceHandle handle) { *result = true; },
+          &on_return_release_fence_called);
 
-  gpu::SyncToken sync_token =
-      PaintRootRenderPass(output_rect, std::move(on_finished));
+  gpu::SyncToken sync_token = PaintRootRenderPass(
+      output_rect, std::move(on_finished), std::move(return_release_fence_cb));
   EXPECT_TRUE(sync_token.HasData());
 
   // Copy the output
@@ -176,6 +187,10 @@
   output_surface_->ScheduleGpuTaskForTesting(std::move(closure), {sync_token});
   BlockMainThread();
   EXPECT_TRUE(on_finished_called);
+
+  // Let the cb to come back.
+  base::RunLoop().RunUntilIdle();
+  EXPECT_TRUE(on_return_release_fence_called);
 }
 
 // Draws two frames and calls Reshape() between the two frames changing the
@@ -189,7 +204,8 @@
 
     // Draw something, it's not important what.
     base::RunLoop run_loop;
-    PaintRootRenderPass(kSurfaceRect, run_loop.QuitClosure());
+    PaintRootRenderPass(kSurfaceRect, run_loop.QuitClosure(),
+                        base::DoNothing());
 
     OutputSurfaceFrame frame;
     frame.size = kSurfaceRect.size();
@@ -231,7 +247,7 @@
   geometry.sampling_bounds = output_rect;
   geometry.readback_offset = gfx::Vector2d(0, 0);
 
-  PaintRootRenderPass(kSurfaceRect, base::DoNothing());
+  PaintRootRenderPass(kSurfaceRect, base::DoNothing(), base::DoNothing());
   output_surface_->CopyOutput(AggregatedRenderPassId{0}, geometry, color_space,
                               std::move(request), gpu::Mailbox());
   output_surface_->SwapBuffersSkipped(kSurfaceRect);
@@ -272,7 +288,7 @@
   geometry.sampling_bounds = output_rect;
   geometry.readback_offset = gfx::Vector2d(0, 0);
 
-  PaintRootRenderPass(kSurfaceRect, base::DoNothing());
+  PaintRootRenderPass(kSurfaceRect, base::DoNothing(), base::DoNothing());
   output_surface_->CopyOutput(AggregatedRenderPassId{0}, geometry, color_space,
                               std::move(request), gpu::Mailbox());
   output_surface_->SwapBuffersSkipped(kSurfaceRect);
diff --git a/components/viz/service/main/viz_compositor_thread_runner_impl.cc b/components/viz/service/main/viz_compositor_thread_runner_impl.cc
index 91aaa4c..4ae77f1 100644
--- a/components/viz/service/main/viz_compositor_thread_runner_impl.cc
+++ b/components/viz/service/main/viz_compositor_thread_runner_impl.cc
@@ -167,8 +167,7 @@
     GpuServiceImpl* gpu_service) {
   DCHECK(task_runner_->BelongsToCurrentThread());
   DCHECK(!frame_sink_manager_);
-  if (features::IsUsingSkiaRenderer())
-    gpu::SchedulerSequence::DefaultDisallowScheduleTaskOnCurrentThread();
+  gpu::SchedulerSequence::DefaultDisallowScheduleTaskOnCurrentThread();
 
   server_shared_bitmap_manager_ = std::make_unique<ServerSharedBitmapManager>();
   base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
diff --git a/components/viz/test/fake_skia_output_surface.cc b/components/viz/test/fake_skia_output_surface.cc
index 8c07fb6..b20aa542 100644
--- a/components/viz/test/fake_skia_output_surface.cc
+++ b/components/viz/test/fake_skia_output_surface.cc
@@ -26,6 +26,7 @@
 #include "third_party/skia/include/gpu/GrBackendSurface.h"
 #include "third_party/skia/include/gpu/GrDirectContext.h"
 #include "third_party/skia/include/gpu/gl/GrGLTypes.h"
+#include "ui/gfx/gpu_fence_handle.h"
 #include "ui/gfx/presentation_feedback.h"
 #include "ui/gfx/swap_result.h"
 #include "ui/gl/gl_utils.h"
@@ -184,13 +185,17 @@
   return sk_surface->getCanvas();
 }
 
-void FakeSkiaOutputSurface::EndPaint(base::OnceClosure on_finished) {
+void FakeSkiaOutputSurface::EndPaint(
+    base::OnceClosure on_finished,
+    base::OnceCallback<void(gfx::GpuFenceHandle)> return_release_fence_cb) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   sk_surfaces_[current_render_pass_id_]->flushAndSubmit();
   current_render_pass_id_ = AggregatedRenderPassId{0};
 
   if (on_finished)
     std::move(on_finished).Run();
+  if (return_release_fence_cb)
+    std::move(return_release_fence_cb).Run(gfx::GpuFenceHandle());
 }
 
 sk_sp<SkImage> FakeSkiaOutputSurface::MakePromiseSkImageFromRenderPass(
diff --git a/components/viz/test/fake_skia_output_surface.h b/components/viz/test/fake_skia_output_surface.h
index e9893a0..01b7f015 100644
--- a/components/viz/test/fake_skia_output_surface.h
+++ b/components/viz/test/fake_skia_output_surface.h
@@ -72,7 +72,9 @@
                                  sk_sp<SkColorSpace> color_space,
                                  bool is_overlay,
                                  const gpu::Mailbox& mailbox) override;
-  void EndPaint(base::OnceClosure on_finished) override;
+  void EndPaint(base::OnceClosure on_finished,
+                base::OnceCallback<void(gfx::GpuFenceHandle)>
+                    return_release_fence_cb) override;
   void MakePromiseSkImage(ImageContext* image_context) override;
   sk_sp<SkImage> MakePromiseSkImageFromRenderPass(
       const AggregatedRenderPassId& id,
diff --git a/content/browser/aggregation_service/aggregatable_report.cc b/content/browser/aggregation_service/aggregatable_report.cc
index 6310cc8..9201357 100644
--- a/content/browser/aggregation_service/aggregatable_report.cc
+++ b/content/browser/aggregation_service/aggregatable_report.cc
@@ -23,7 +23,6 @@
 #include "base/ranges/algorithm.h"
 #include "base/strings/abseil_string_number_conversions.h"
 #include "base/strings/string_number_conversions.h"
-#include "base/strings/string_util.h"
 #include "base/time/time.h"
 #include "base/values.h"
 #include "components/cbor/values.h"
@@ -280,31 +279,31 @@
 
 AggregatableReportSharedInfo::AggregatableReportSharedInfo(
     base::Time scheduled_report_time,
-    std::string privacy_budget_key,
     base::GUID report_id,
     url::Origin reporting_origin,
-    DebugMode debug_mode)
-    : scheduled_report_time(std::move(scheduled_report_time)),
-      privacy_budget_key(std::move(privacy_budget_key)),
+    DebugMode debug_mode,
+    base::Value::Dict additional_fields)
+    : scheduled_report_time(scheduled_report_time),
       report_id(std::move(report_id)),
       reporting_origin(std::move(reporting_origin)),
-      debug_mode(debug_mode) {}
+      debug_mode(debug_mode),
+      additional_fields(std::move(additional_fields)) {}
 
 AggregatableReportSharedInfo::AggregatableReportSharedInfo(
-    const AggregatableReportSharedInfo& other) = default;
-AggregatableReportSharedInfo& AggregatableReportSharedInfo::operator=(
-    const AggregatableReportSharedInfo& other) = default;
-AggregatableReportSharedInfo::AggregatableReportSharedInfo(
     AggregatableReportSharedInfo&& other) = default;
 AggregatableReportSharedInfo& AggregatableReportSharedInfo::operator=(
     AggregatableReportSharedInfo&& other) = default;
 AggregatableReportSharedInfo::~AggregatableReportSharedInfo() = default;
 
+AggregatableReportSharedInfo AggregatableReportSharedInfo::Clone() const {
+  return AggregatableReportSharedInfo(scheduled_report_time, report_id,
+                                      reporting_origin, debug_mode,
+                                      additional_fields.Clone());
+}
+
 std::string AggregatableReportSharedInfo::SerializeAsJson() const {
   base::Value::Dict value;
 
-  value.Set("privacy_budget_key", privacy_budget_key);
-
   DCHECK(report_id.is_valid());
   value.Set("report_id", report_id.AsLowercaseString());
 
@@ -317,7 +316,6 @@
   value.Set("scheduled_report_time",
             base::NumberToString(scheduled_report_time.ToJavaTime() /
                                  base::Time::kMillisecondsPerSecond));
-
   // TODO(alexmt): Replace with a real version once a version string is decided.
   value.Set("version", "");
 
@@ -326,6 +324,12 @@
     value.Set("debug_mode", "enabled");
   }
 
+  DCHECK(base::ranges::none_of(additional_fields, [&value](const auto& e) {
+    return value.contains(e.first);
+  })) << "Additional fields in shared_info cannot duplicate existing fields";
+
+  value.Merge(additional_fields);
+
   std::string serialized_value;
   bool succeeded = base::JSONWriter::Write(value, &serialized_value);
   DCHECK(succeeded);
@@ -386,11 +390,6 @@
     return absl::nullopt;
   }
 
-  if (!base::ranges::all_of(shared_info.privacy_budget_key,
-                            &base::IsAsciiPrintable<char>)) {
-    return absl::nullopt;
-  }
-
   // Ensure the ordering of urls is deterministic. This is required for
   // AggregatableReport construction later.
   base::ranges::sort(processing_urls);
diff --git a/content/browser/aggregation_service/aggregatable_report.h b/content/browser/aggregation_service/aggregatable_report.h
index 7b21d486..43739db5 100644
--- a/content/browser/aggregation_service/aggregatable_report.h
+++ b/content/browser/aggregation_service/aggregatable_report.h
@@ -85,25 +85,30 @@
   };
 
   AggregatableReportSharedInfo(base::Time scheduled_report_time,
-                               std::string privacy_budget_key,
                                base::GUID report_id,
                                url::Origin reporting_origin,
-                               DebugMode debug_mode);
-  AggregatableReportSharedInfo(const AggregatableReportSharedInfo& other);
+                               DebugMode debug_mode,
+                               base::Value::Dict additional_fields);
+
+  AggregatableReportSharedInfo(const AggregatableReportSharedInfo& other) =
+      delete;
   AggregatableReportSharedInfo& operator=(
-      const AggregatableReportSharedInfo& other);
+      const AggregatableReportSharedInfo& other) = delete;
   AggregatableReportSharedInfo(AggregatableReportSharedInfo&& other);
   AggregatableReportSharedInfo& operator=(AggregatableReportSharedInfo&& other);
   ~AggregatableReportSharedInfo();
 
+  // Creates a deep copy of this object.
+  AggregatableReportSharedInfo Clone() const;
+
   // Serializes to a JSON dictionary, represented as a string.
   std::string SerializeAsJson() const;
 
   base::Time scheduled_report_time;
-  std::string privacy_budget_key;
   base::GUID report_id;  // Used to prevent double counting.
   url::Origin reporting_origin;
   DebugMode debug_mode;
+  base::Value::Dict additional_fields;
 };
 
 // An AggregatableReport contains all the information needed for sending the
@@ -199,9 +204,7 @@
 
   // Returns the JSON representation of this report of the form
   // {
-  //   "shared_info": "{\"scheduled_report_time\":\"[timestamp in
-  //   seconds]\",\"privacy_budget_key\":\"[string]\",\"version\":\"[api
-  //   version]\",\"report_id\":\"[UUID]\",\"reporting_origin\":\"[string]\"}",
+  //   "shared_info": "<shared_info>",
   //   "aggregation_service_payloads": [
   //     {
   //       "payload": "<base64 encoded encrypted data>",
@@ -213,6 +216,18 @@
   //     }
   //   ]
   // }
+  //
+  // Where <shared_info> is the serialization of the JSON (with all whitespace
+  // removed):
+  // {
+  //   "report_id":"[UUID]",
+  //   "reporting_origin":"https://reporter.example"
+  //   "scheduled_report_time":"[timestamp in seconds]",
+  //   "version":"[api version]",
+  // }
+  // Callers may insert API-specific fields into the shared_info dictionary.
+  // In those cases, the keys are inserted in lexicographic order.
+  //
   // If requested, each "aggregation_service_payloads" element has an extra
   // field: `"debug_cleartext_payload": "<base64 encoded payload cleartext>"`.
   // Note that APIs may wish to add additional key-value pairs to this returned
@@ -251,9 +266,7 @@
   // valid for the `payload_contents.aggregation_mode` (see
   // `IsNumberOfHistogramContributionsValid()` above). Also returns
   // `absl::nullopt` if any contribution has a negative value or if
-  // `shared_info.report_id` is not valid. Also returns `absl::nullopt` if
-  // `shared_info.privacy_budget_key` contains any character that isn't
-  // printable ASCII.
+  // `shared_info.report_id` is not valid.
   static absl::optional<AggregatableReportRequest> Create(
       AggregationServicePayloadContents payload_contents,
       AggregatableReportSharedInfo shared_info);
@@ -264,9 +277,7 @@
   // `IsNumberOfHistogramContributionsValid()` and
   // `IsNumberOfProcessingUrlsValid`, respectively). Also returns
   // `absl::nullopt` if any contribution has a negative value or if
-  // `shared_info.report_id` is not valid. Also returns `absl::nullopt` if
-  // `shared_info.privacy_budget_key` contains any character that isn't
-  // printable ASCII.
+  // `shared_info.report_id` is not valid.
   static absl::optional<AggregatableReportRequest> CreateForTesting(
       std::vector<GURL> processing_urls,
       AggregationServicePayloadContents payload_contents,
diff --git a/content/browser/aggregation_service/aggregatable_report_unittest.cc b/content/browser/aggregation_service/aggregatable_report_unittest.cc
index 8ff2ab14..7969ff0e 100644
--- a/content/browser/aggregation_service/aggregatable_report_unittest.cc
+++ b/content/browser/aggregation_service/aggregatable_report_unittest.cc
@@ -163,7 +163,8 @@
 
   AggregationServicePayloadContents expected_payload_contents =
       request.payload_contents();
-  AggregatableReportSharedInfo expected_shared_info = request.shared_info();
+  AggregatableReportSharedInfo expected_shared_info =
+      request.shared_info().Clone();
   size_t expected_num_processing_urls = request.processing_urls().size();
   std::vector<aggregation_service::TestHpkeKey> hpke_keys = {
       aggregation_service::GenerateKey("id123"),
@@ -185,7 +186,8 @@
 
   AggregationServicePayloadContents expected_payload_contents =
       request.payload_contents();
-  AggregatableReportSharedInfo expected_shared_info = request.shared_info();
+  AggregatableReportSharedInfo expected_shared_info =
+      request.shared_info().Clone();
   size_t expected_num_processing_urls = request.processing_urls().size();
 
   aggregation_service::TestHpkeKey hpke_key =
@@ -216,10 +218,11 @@
 
   absl::optional<AggregatableReportRequest> request =
       AggregatableReportRequest::Create(expected_payload_contents,
-                                        example_request.shared_info());
+                                        example_request.shared_info().Clone());
   ASSERT_TRUE(request.has_value());
 
-  AggregatableReportSharedInfo expected_shared_info = request->shared_info();
+  AggregatableReportSharedInfo expected_shared_info =
+      request->shared_info().Clone();
   size_t expected_num_processing_urls = request->processing_urls().size();
 
   aggregation_service::TestHpkeKey hpke_key =
@@ -238,12 +241,12 @@
   AggregatableReportRequest example_request =
       aggregation_service::CreateExampleRequest();
   AggregatableReportSharedInfo expected_shared_info =
-      example_request.shared_info();
+      example_request.shared_info().Clone();
   expected_shared_info.debug_mode =
       AggregatableReportSharedInfo::DebugMode::kEnabled;
   absl::optional<AggregatableReportRequest> request =
       AggregatableReportRequest::Create(example_request.payload_contents(),
-                                        expected_shared_info);
+                                        expected_shared_info.Clone());
   ASSERT_TRUE(request.has_value());
 
   AggregationServicePayloadContents expected_payload_contents =
@@ -268,14 +271,15 @@
       aggregation_service::CreateExampleRequest();
   AggregationServicePayloadContents payload_contents =
       example_request.payload_contents();
-  AggregatableReportSharedInfo shared_info = example_request.shared_info();
+  AggregatableReportSharedInfo shared_info =
+      example_request.shared_info().Clone();
 
   AggregationServicePayloadContents zero_value_payload_contents =
       payload_contents;
   zero_value_payload_contents.contributions[0].value = 0;
   absl::optional<AggregatableReportRequest> zero_value_request =
       AggregatableReportRequest::Create(zero_value_payload_contents,
-                                        shared_info);
+                                        shared_info.Clone());
   EXPECT_TRUE(zero_value_request.has_value());
 
   AggregationServicePayloadContents negative_value_payload_contents =
@@ -283,14 +287,15 @@
   negative_value_payload_contents.contributions[0].value = -1;
   absl::optional<AggregatableReportRequest> negative_value_request =
       AggregatableReportRequest::Create(negative_value_payload_contents,
-                                        shared_info);
+                                        shared_info.Clone());
   EXPECT_FALSE(negative_value_request.has_value());
 }
 
 TEST(AggregatableReportTest, RequestCreatedWithInvalidReportId_Failed) {
   AggregatableReportRequest example_request =
       aggregation_service::CreateExampleRequest();
-  AggregatableReportSharedInfo shared_info = example_request.shared_info();
+  AggregatableReportSharedInfo shared_info =
+      example_request.shared_info().Clone();
   shared_info.report_id = base::GUID();
 
   absl::optional<AggregatableReportRequest> request =
@@ -300,19 +305,6 @@
   EXPECT_FALSE(request.has_value());
 }
 
-TEST(AggregatableReportTest, RequestCreatedWithInvalidPrivacyBudgetKey_Failed) {
-  AggregatableReportRequest example_request =
-      aggregation_service::CreateExampleRequest();
-  AggregatableReportSharedInfo shared_info = example_request.shared_info();
-  shared_info.privacy_budget_key = {static_cast<char>(0xC0)};
-
-  absl::optional<AggregatableReportRequest> request =
-      AggregatableReportRequest::Create(example_request.payload_contents(),
-                                        std::move(shared_info));
-
-  EXPECT_FALSE(request.has_value());
-}
-
 TEST(AggregatableReportTest, RequestCreatedWithZeroContributions) {
   AggregatableReportRequest example_request =
       aggregation_service::CreateExampleRequest();
@@ -323,7 +315,7 @@
   payload_contents.contributions.clear();
   absl::optional<AggregatableReportRequest> request =
       AggregatableReportRequest::Create(payload_contents,
-                                        example_request.shared_info());
+                                        example_request.shared_info().Clone());
   ASSERT_FALSE(request.has_value());
 }
 
@@ -343,7 +335,7 @@
 
   absl::optional<AggregatableReportRequest> request =
       AggregatableReportRequest::Create(payload_contents,
-                                        example_request.shared_info());
+                                        example_request.shared_info().Clone());
   ASSERT_FALSE(request.has_value());
 }
 
@@ -419,15 +411,13 @@
      SharedInfoDebugModeDisabled_SerializeAsJsonReturnsExpectedString) {
   AggregatableReportSharedInfo shared_info(
       base::Time::FromJavaTime(1234567890123),
-      /*privacy_budget_key=*/"example_pbk",
       /*report_id=*/
       base::GUID::ParseLowercase("21abd97f-73e8-4b88-9389-a9fee6abda5e"),
       url::Origin::Create(GURL("https://reporting.example")),
-      AggregatableReportSharedInfo::DebugMode::kDisabled);
+      AggregatableReportSharedInfo::DebugMode::kDisabled, base::Value::Dict());
 
   const char kExpectedString[] =
       R"({)"
-      R"("privacy_budget_key":"example_pbk",)"
       R"("report_id":"21abd97f-73e8-4b88-9389-a9fee6abda5e",)"
       R"("reporting_origin":"https://reporting.example",)"
       R"("scheduled_report_time":"1234567890",)"
@@ -441,16 +431,42 @@
      SharedInfoDebugModeEnabled_SerializeAsJsonReturnsExpectedString) {
   AggregatableReportSharedInfo shared_info(
       base::Time::FromJavaTime(1234567890123),
-      /*privacy_budget_key=*/"example_pbk",
       /*report_id=*/
       base::GUID::ParseLowercase("21abd97f-73e8-4b88-9389-a9fee6abda5e"),
       url::Origin::Create(GURL("https://reporting.example")),
-      AggregatableReportSharedInfo::DebugMode::kEnabled);
+      AggregatableReportSharedInfo::DebugMode::kEnabled, base::Value::Dict());
 
   const char kExpectedString[] =
       R"({)"
       R"("debug_mode":"enabled",)"
-      R"("privacy_budget_key":"example_pbk",)"
+      R"("report_id":"21abd97f-73e8-4b88-9389-a9fee6abda5e",)"
+      R"("reporting_origin":"https://reporting.example",)"
+      R"("scheduled_report_time":"1234567890",)"
+      R"("version":"")"
+      R"(})";
+
+  EXPECT_EQ(shared_info.SerializeAsJson(), kExpectedString);
+}
+
+TEST(AggregatableReportTest, SharedInfoAdditionalFields) {
+  base::Value::Dict additional_fields;
+  additional_fields.Set("foo", "1");
+  additional_fields.Set("bar", "2");
+  additional_fields.Set("baz", "3");
+  AggregatableReportSharedInfo shared_info(
+      base::Time::FromJavaTime(1234567890123),
+      /*report_id=*/
+      base::GUID::ParseLowercase("21abd97f-73e8-4b88-9389-a9fee6abda5e"),
+      url::Origin::Create(GURL("https://reporting.example")),
+      AggregatableReportSharedInfo::DebugMode::kEnabled,
+      std::move(additional_fields));
+
+  const char kExpectedString[] =
+      R"({)"
+      R"("bar":"2",)"
+      R"("baz":"3",)"
+      R"("debug_mode":"enabled",)"
+      R"("foo":"1",)"
       R"("report_id":"21abd97f-73e8-4b88-9389-a9fee6abda5e",)"
       R"("reporting_origin":"https://reporting.example",)"
       R"("scheduled_report_time":"1234567890",)"
diff --git a/content/browser/aggregation_service/aggregation_service_test_utils.cc b/content/browser/aggregation_service/aggregation_service_test_utils.cc
index ed634e4..b04f0060 100644
--- a/content/browser/aggregation_service/aggregation_service_test_utils.cc
+++ b/content/browser/aggregation_service/aggregation_service_test_utils.cc
@@ -168,11 +168,6 @@
            << expected.scheduled_report_time
            << ", actual: " << actual.scheduled_report_time;
   }
-  if (expected.privacy_budget_key != actual.privacy_budget_key) {
-    return testing::AssertionFailure()
-           << "Expected privacy_budget_key " << expected.privacy_budget_key
-           << ", actual: " << actual.privacy_budget_key;
-  }
   if (expected.report_id != actual.report_id) {
     return testing::AssertionFailure()
            << "Expected report_id " << expected.report_id
@@ -183,6 +178,11 @@
            << "Expected debug_mode " << expected.debug_mode
            << ", actual: " << actual.debug_mode;
   }
+  if (expected.additional_fields != actual.additional_fields) {
+    return testing::AssertionFailure()
+           << "Expected additional_fields " << expected.additional_fields
+           << ", actual: " << actual.additional_fields;
+  }
 
   return testing::AssertionSuccess();
 }
@@ -197,19 +197,19 @@
                  aggregation_mode),
              AggregatableReportSharedInfo(
                  /*scheduled_report_time=*/base::Time::Now(),
-                 /*privacy_budget_key=*/"example_budget_key",
                  /*report_id=*/
                  base::GUID::GenerateRandomV4(),
                  url::Origin::Create(GURL("https://reporting.example")),
-                 AggregatableReportSharedInfo::DebugMode::kDisabled))
+                 AggregatableReportSharedInfo::DebugMode::kDisabled,
+                 /*additional_fields=*/base::Value::Dict()))
       .value();
 }
 
 AggregatableReportRequest CloneReportRequest(
     const AggregatableReportRequest& request) {
-  return AggregatableReportRequest::CreateForTesting(request.processing_urls(),
-                                                     request.payload_contents(),
-                                                     request.shared_info())
+  return AggregatableReportRequest::CreateForTesting(
+             request.processing_urls(), request.payload_contents(),
+             request.shared_info().Clone())
       .value();
 }
 
diff --git a/content/browser/aggregation_service/payload_encryption.md b/content/browser/aggregation_service/payload_encryption.md
index 29a10ed..19ac50c0 100644
--- a/content/browser/aggregation_service/payload_encryption.md
+++ b/content/browser/aggregation_service/payload_encryption.md
@@ -32,21 +32,17 @@
 plaintext. This is generated by the browser and encodes information both needed
 by the aggregation service and available for use by the reporting origin.
 
-An example shared\_info field is:
+An example shared\_info field for use in the Attribution Reporting API is:
 
 ```jsonc
-"shared_info": "{\"scheduled_report_time\":\"[timestamp in
-seconds]\",\"privacy_budget_key\":\"[string]\",\"version\":\"[api
-version]\",\"report_id\":\"[UUID]\",\"reporting_origin\":\"https://reporter.example\"}",
+"shared_info": "{\"attribution_destination\":\"https://advertiser.example\",\"report_id\":\"[UUID]\",\"reporting_origin\":\"https://reporter.example\",\"scheduled_report_time\":\"[timestamp in seconds]\",\"source_registration_time\":\"[timestamp in seconds]\",\"version\":\"[api version]\"}"
 ```
 
 The corresponding associated data would then be the following (encoded as UTF-8,
 again using `\0` to indicate a null character):
 
 ```jsonc
-aggregation_service\0{"scheduled_report_time":"[timestamp in
-seconds]","privacy_budget_key":"[string]","version":"[api
-version]","report_id":"[UUID]","reporting_origin":"https://reporter.example"}
+aggregation_service\0{"attribution_destination":"https://advertiser.example","report_id":"[UUID]","reporting_origin":"https://reporter.example","scheduled_report_time":"[timestamp in seconds]","source_registration_time":"[timestamp in seconds]","version":"[api version]"}"
 ```
 
 Note that, for the decryption to succeed, the associated data used must be
diff --git a/content/browser/attribution_reporting/aggregatable_attribution_utils.cc b/content/browser/attribution_reporting/aggregatable_attribution_utils.cc
index 1c83c5f..e3f2382 100644
--- a/content/browser/attribution_reporting/aggregatable_attribution_utils.cc
+++ b/content/browser/attribution_reporting/aggregatable_attribution_utils.cc
@@ -12,6 +12,9 @@
 #include "base/check.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/ranges/algorithm.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/time/time.h"
+#include "base/values.h"
 #include "content/browser/aggregation_service/aggregatable_report.h"
 #include "content/browser/attribution_reporting/aggregatable_histogram_contribution.h"
 #include "content/browser/attribution_reporting/attribution_aggregatable_source.h"
@@ -20,12 +23,29 @@
 #include "content/browser/attribution_reporting/attribution_info.h"
 #include "content/browser/attribution_reporting/attribution_report.h"
 #include "content/browser/attribution_reporting/attribution_utils.h"
+#include "net/base/schemeful_site.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/abseil-cpp/absl/types/variant.h"
 #include "third_party/blink/public/common/attribution_reporting/constants.h"
 
 namespace content {
 
+namespace {
+
+// Note: use the same time serialization as in aggregatable_report.cc.
+// Consider sharing logic if more call-sites need this.
+std::string SerializeTimeRoundedDownToWholeDayInSeconds(base::Time time) {
+  // TODO(csharrison, linnan): Validate that `time` is valid (e.g. not null /
+  // inf).
+  base::Time rounded =
+      base::Time::UnixEpoch() +
+      (time - base::Time::UnixEpoch()).FloorToMultiple(base::Days(1));
+  return base::NumberToString(rounded.ToJavaTime() /
+                              base::Time::kMillisecondsPerSecond);
+}
+
+}  // namespace
+
 std::vector<AggregatableHistogramContribution> CreateAggregatableHistogram(
     const AttributionFilterData& source_filter_data,
     const AttributionAggregatableSource& source,
@@ -120,16 +140,24 @@
             .value = static_cast<int>(contribution.value())};
       });
 
+  base::Value::Dict additional_fields;
+  additional_fields.Set(
+      "source_registration_time",
+      SerializeTimeRoundedDownToWholeDayInSeconds(
+          attribution_info.source.common_info().impression_time()));
+  additional_fields.Set("attribution_destination",
+                        attribution_info.source.common_info()
+                            .ConversionDestination()
+                            .Serialize());
   return AggregatableReportRequest::Create(
       AggregationServicePayloadContents(
           AggregationServicePayloadContents::Operation::kHistogram,
           std::move(contributions),
           AggregationServicePayloadContents::AggregationMode::kDefault),
       AggregatableReportSharedInfo(
-          data->initial_report_time, report.PrivacyBudgetKey(),
-          report.external_report_id(),
-          attribution_info.source.common_info().reporting_origin(),
-          debug_mode));
+          data->initial_report_time, report.external_report_id(),
+          attribution_info.source.common_info().reporting_origin(), debug_mode,
+          std::move(additional_fields)));
 }
 
 }  // namespace content
diff --git a/content/browser/attribution_reporting/aggregatable_attribution_utils_unittest.cc b/content/browser/attribution_reporting/aggregatable_attribution_utils_unittest.cc
index cf95f2b..da414c7 100644
--- a/content/browser/attribution_reporting/aggregatable_attribution_utils_unittest.cc
+++ b/content/browser/attribution_reporting/aggregatable_attribution_utils_unittest.cc
@@ -12,10 +12,13 @@
 #include <vector>
 
 #include "base/test/metrics/histogram_tester.h"
+#include "base/time/time.h"
+#include "base/values.h"
 #include "content/browser/attribution_reporting/aggregatable_histogram_contribution.h"
 #include "content/browser/attribution_reporting/attribution_aggregatable_source.h"
 #include "content/browser/attribution_reporting/attribution_aggregatable_trigger.h"
 #include "content/browser/attribution_reporting/attribution_filter_data.h"
+#include "content/browser/attribution_reporting/attribution_report.h"
 #include "content/browser/attribution_reporting/attribution_test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/abseil-cpp/absl/numeric/int128.h"
@@ -156,4 +159,42 @@
       "Conversions.AggregatableReport.NumContributionsPerReport", 0, 1);
 }
 
+TEST(AggregatableAttributionUtilsTest, RoundsSourceRegistrationTime) {
+  const struct {
+    std::string description;
+    int64_t source_time;
+    std::string expected_serialized_time;
+  } kTestCases[] = {
+      {"14288 * 86400000", 1234483200000, "1234483200"},
+      {"14288 * 86400000 + 1", 1234483200001, "1234483200"},
+      {"14288.5 * 86400000 - 1", 1234526399999, "1234483200"},
+      {"14288.5 * 86400000", 1234526400000, "1234483200"},
+      {"14288.5 * 86400000 + 1", 1234526400001, "1234483200"},
+      {"14289 * 86400000 -1", 1234569599999, "1234483200"},
+      {"14289 * 86400000", 1234569600000, "1234569600"},
+  };
+
+  for (const auto& test_case : kTestCases) {
+    base::Time source_time = base::Time::FromJavaTime(test_case.source_time);
+    AttributionReport report =
+        ReportBuilder(
+            AttributionInfoBuilder(SourceBuilder(source_time).BuildStored())
+                .Build())
+            .SetAggregatableHistogramContributions(
+                {AggregatableHistogramContribution(/*key=*/1, /*value=*/2)})
+            .BuildAggregatableAttribution();
+
+    absl::optional<AggregatableReportRequest> request =
+        CreateAggregatableReportRequest(report);
+    ASSERT_TRUE(request.has_value());
+    const base::Value::Dict& additional_fields =
+        request->shared_info().additional_fields;
+    const std::string* actual_serialized_time =
+        additional_fields.FindString("source_registration_time");
+    ASSERT_TRUE(actual_serialized_time);
+    EXPECT_EQ(*actual_serialized_time, test_case.expected_serialized_time)
+        << test_case.description;
+  }
+}
+
 }  // namespace content
diff --git a/content/browser/attribution_reporting/attribution_manager_impl_unittest.cc b/content/browser/attribution_reporting/attribution_manager_impl_unittest.cc
index 65aa6bb..bf0493a 100644
--- a/content/browser/attribution_reporting/attribution_manager_impl_unittest.cc
+++ b/content/browser/attribution_reporting/attribution_manager_impl_unittest.cc
@@ -22,6 +22,7 @@
 #include "base/test/bind.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/time/time.h"
+#include "base/values.h"
 #include "build/build_config.h"
 #include "content/browser/aggregation_service/aggregatable_report.h"
 #include "content/browser/aggregation_service/aggregation_service_impl.h"
@@ -95,12 +96,17 @@
                         /*key_id=*/"key_2",
                         /*debug_cleartext_payload=*/absl::nullopt);
 
+  base::Value::Dict additional_fields;
+  additional_fields.Set("source_registration_time", "1234569600");
+  additional_fields.Set(
+      "attribution_destination",
+      url::Origin::Create(GURL("https://example.destination")).Serialize());
   AggregatableReportSharedInfo shared_info(
-      base::Time::FromJavaTime(1234567890123),
-      /*privacy_budget_key=*/"example_pbk", DefaultExternalReportID(),
+      base::Time::FromJavaTime(1234567890123), DefaultExternalReportID(),
       /*reporting_origin=*/
       url::Origin::Create(GURL("https://example.reporting")),
-      AggregatableReportSharedInfo::DebugMode::kDisabled);
+      AggregatableReportSharedInfo::DebugMode::kDisabled,
+      std::move(additional_fields));
 
   return AggregatableReport(std::move(payloads), shared_info.SerializeAsJson());
 }
diff --git a/content/browser/attribution_reporting/attribution_report.cc b/content/browser/attribution_reporting/attribution_report.cc
index 7314e92..f88d1e5c 100644
--- a/content/browser/attribution_reporting/attribution_report.cc
+++ b/content/browser/attribution_reporting/attribution_report.cc
@@ -8,18 +8,14 @@
 #include <string>
 #include <utility>
 
-#include "base/base64.h"
 #include "base/check.h"
 #include "base/check_op.h"
 #include "base/memory/raw_ptr.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/values.h"
-#include "components/cbor/values.h"
-#include "components/cbor/writer.h"
 #include "content/browser/attribution_reporting/attribution_source_type.h"
 #include "content/browser/attribution_reporting/common_source_info.h"
-#include "crypto/sha2.h"
 #include "net/base/schemeful_site.h"
 #include "third_party/abseil-cpp/absl/types/variant.h"
 #include "url/gurl.h"
@@ -27,16 +23,6 @@
 
 namespace content {
 
-namespace {
-
-int64_t EncodeTimeRoundDownToWholeDayInSeconds(base::Time time) {
-  return (time - base::Time::UnixEpoch())
-      .FloorToMultiple(base::Days(1))
-      .InSeconds();
-}
-
-}  // namespace
-
 AttributionReport::EventLevelData::EventLevelData(
     uint64_t trigger_data,
     int64_t priority,
@@ -201,14 +187,6 @@
       const CommonSourceInfo& common_info =
           report->attribution_info().source.common_info();
 
-      dict.Set("attribution_destination",
-               common_info.ConversionDestination().Serialize());
-
-      // source_registration_time is rounded down to whole day and in seconds.
-      dict.Set("source_registration_time",
-               base::NumberToString(EncodeTimeRoundDownToWholeDayInSeconds(
-                   common_info.impression_time())));
-
       if (absl::optional<uint64_t> debug_key = common_info.debug_key())
         dict.Set("source_debug_key", base::NumberToString(*debug_key));
 
@@ -228,34 +206,6 @@
   return absl::visit([](const auto& v) { return Id(v.id); }, data_);
 }
 
-std::string AttributionReport::PrivacyBudgetKey() const {
-  DCHECK(absl::holds_alternative<AggregatableAttributionData>(data_));
-
-  const CommonSourceInfo& common_source_info =
-      attribution_info_.source.common_info();
-
-  // Use CBOR to be deterministic.
-  cbor::Value::MapValue value;
-  value.emplace("reporting_origin",
-                common_source_info.reporting_origin().Serialize());
-  value.emplace("destination",
-                common_source_info.ConversionDestination().Serialize());
-
-  // TODO(linnan): Replace with a real version once a version string is decided.
-  static constexpr char kVersion[] = "";
-  value.emplace("version", kVersion);
-
-  value.emplace("source_registration_time",
-                EncodeTimeRoundDownToWholeDayInSeconds(
-                    common_source_info.impression_time()));
-
-  absl::optional<std::vector<uint8_t>> bytes =
-      cbor::Writer::Write(cbor::Value(std::move(value)));
-  DCHECK(bytes.has_value());
-
-  return base::Base64Encode(crypto::SHA256Hash(*bytes));
-}
-
 void AttributionReport::set_report_time(base::Time report_time) {
   report_time_ = report_time;
 }
diff --git a/content/browser/attribution_reporting/attribution_report.h b/content/browser/attribution_reporting/attribution_report.h
index 2ad6143..3394994 100644
--- a/content/browser/attribution_reporting/attribution_report.h
+++ b/content/browser/attribution_reporting/attribution_report.h
@@ -136,11 +136,6 @@
 
   Id ReportId() const;
 
-  // This will be included in aggregatable report to allow aggregation service
-  // to do privacy budgeting. Note that this will DCHECK that the underlying
-  // data is `AggregatableAttributionData`.
-  std::string PrivacyBudgetKey() const;
-
   const AttributionInfo& attribution_info() const { return attribution_info_; }
 
   base::Time report_time() const { return report_time_; }
diff --git a/content/browser/attribution_reporting/attribution_report_network_sender_unittest.cc b/content/browser/attribution_reporting/attribution_report_network_sender_unittest.cc
index 0584f25ca..c355c86 100644
--- a/content/browser/attribution_reporting/attribution_report_network_sender_unittest.cc
+++ b/content/browser/attribution_reporting/attribution_report_network_sender_unittest.cc
@@ -617,9 +617,7 @@
        AggregatableReportSent_ReportBodySetCorrectly) {
   static constexpr char kExpectedReportBody[] =
       R"({"aggregation_service_payloads":"not generated prior to send",)"
-      R"("attribution_destination":"https://conversion.test",)"
-      R"("shared_info":"not generated prior to send",)"
-      R"("source_registration_time":"1234483200"})";
+      R"("shared_info":"not generated prior to send"})";
 
   AttributionReport report =
       ReportBuilder(AttributionInfoBuilder(
@@ -645,9 +643,7 @@
        DebugAggregatableReportSent_ReportUrlAndBodySetCorrectly) {
   static constexpr char kExpectedReportBody[] =
       R"({"aggregation_service_payloads":"not generated prior to send",)"
-      R"("attribution_destination":"https://conversion.test",)"
-      R"("shared_info":"not generated prior to send",)"
-      R"("source_registration_time":"1234483200"})";
+      R"("shared_info":"not generated prior to send"})";
 
   AttributionReport report =
       ReportBuilder(AttributionInfoBuilder(
diff --git a/content/browser/attribution_reporting/attribution_report_unittest.cc b/content/browser/attribution_reporting/attribution_report_unittest.cc
deleted file mode 100644
index ed5d7a0..0000000
--- a/content/browser/attribution_reporting/attribution_report_unittest.cc
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2022 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/attribution_reporting/attribution_report.h"
-
-#include <stdint.h>
-
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "base/time/time.h"
-#include "content/browser/aggregation_service/aggregatable_report.h"
-#include "content/browser/aggregation_service/aggregation_service_test_utils.h"
-#include "content/browser/attribution_reporting/attribution_report.h"
-#include "content/browser/attribution_reporting/attribution_test_utils.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
-#include "third_party/abseil-cpp/absl/types/variant.h"
-#include "url/gurl.h"
-#include "url/origin.h"
-
-namespace content {
-
-TEST(AttributionReportTest, AggregatableReportBody_SourceRegistrationTime) {
-  const struct {
-    std::string description;
-    int64_t source_time;
-    std::string source_time_rounded;
-  } kTestCases[] = {
-      {"14288 * 86400000", 1234483200000, "1234483200"},
-      {"14288 * 86400000 + 1", 1234483200001, "1234483200"},
-      {"14288.5 * 86400000 - 1", 1234526399999, "1234483200"},
-      {"14288.5 * 86400000", 1234526400000, "1234483200"},
-      {"14288.5 * 86400000 + 1", 1234526400001, "1234483200"},
-      {"14289 * 86400000 -1", 1234569599999, "1234483200"},
-      {"14289 * 86400000", 1234569600000, "1234569600"},
-  };
-
-  for (const auto& test_case : kTestCases) {
-    AttributionReport report =
-        ReportBuilder(
-            AttributionInfoBuilder(
-                SourceBuilder(base::Time::FromJavaTime(test_case.source_time))
-                    .BuildStored())
-                .Build())
-            .SetAggregatableHistogramContributions(
-                {AggregatableHistogramContribution(/*key=*/1, /*value=*/2)})
-            .BuildAggregatableAttribution();
-
-    std::vector<AggregatableReport::AggregationServicePayload> payloads;
-    payloads.emplace_back(/*payload=*/kABCD1234AsBytes,
-                          /*key_id=*/"key_1",
-                          /*debug_cleartext_payload=*/absl::nullopt);
-    payloads.emplace_back(/*payload=*/kEFGH5678AsBytes,
-                          /*key_id=*/"key_2",
-                          /*debug_cleartext_payload=*/absl::nullopt);
-
-    AggregatableReportSharedInfo shared_info(
-        base::Time::FromJavaTime(1234567890123),
-        /*privacy_budget_key=*/"example_pbk", report.external_report_id(),
-        /*reporting_origin=*/
-        url::Origin::Create(GURL("https://example.reporting")),
-        AggregatableReportSharedInfo::DebugMode::kDisabled);
-
-    auto& aggregatable_data =
-        absl::get<AttributionReport::AggregatableAttributionData>(
-            report.data());
-    aggregatable_data.assembled_report =
-        AggregatableReport(std::move(payloads), shared_info.SerializeAsJson());
-
-    base::Value::Dict dict = report.ReportBody();
-    const std::string* source_registration_time =
-        dict.FindString("source_registration_time");
-    ASSERT_TRUE(source_registration_time) << test_case.description;
-    EXPECT_EQ(*source_registration_time, test_case.source_time_rounded)
-        << test_case.description;
-  }
-}
-
-TEST(AttributionReportTest, PrivacyBudgetKey) {
-  const std::string kExpectedPrivacyBudgetKey(
-      "hTxwDPlUIel3dB39m09GOkeAkMLcYVdE6H0eK2t1RYc=");
-
-  AttributionReport report =
-      ReportBuilder(AttributionInfoBuilder(
-                        SourceBuilder(base::Time::FromJavaTime(1234567890123))
-                            .BuildStored())
-                        .Build())
-          .SetAggregatableHistogramContributions(
-              {AggregatableHistogramContribution(/*key=*/1, /*value=*/2)})
-          .BuildAggregatableAttribution();
-  EXPECT_EQ(report.PrivacyBudgetKey(), kExpectedPrivacyBudgetKey);
-}
-
-}  // namespace content
diff --git a/content/browser/attribution_reporting/attribution_test_utils.cc b/content/browser/attribution_reporting/attribution_test_utils.cc
index e43835f7..aa2bb61 100644
--- a/content/browser/attribution_reporting/attribution_test_utils.cc
+++ b/content/browser/attribution_reporting/attribution_test_utils.cc
@@ -756,7 +756,7 @@
 bool operator==(const AttributionTrigger& a, const AttributionTrigger& b) {
   const auto tie = [](const AttributionTrigger& t) {
     return std::make_tuple(t.destination_origin(), t.reporting_origin(),
-                           t.debug_key(), t.event_triggers(),
+                           t.filters(), t.debug_key(), t.event_triggers(),
                            t.aggregatable_trigger());
   };
   return tie(a) == tie(b);
@@ -1044,7 +1044,8 @@
 std::ostream& operator<<(std::ostream& out,
                          const AttributionTrigger& conversion) {
   out << "{destination_origin=" << conversion.destination_origin()
-      << ",reporting_origin=" << conversion.reporting_origin() << ",debug_key="
+      << ",reporting_origin=" << conversion.reporting_origin()
+      << ",filters=" << conversion.filters() << ",debug_key="
       << (conversion.debug_key() ? base::NumberToString(*conversion.debug_key())
                                  : "null")
       << "event_triggers=[";
diff --git a/content/browser/background_fetch/storage/mark_request_complete_task.cc b/content/browser/background_fetch/storage/mark_request_complete_task.cc
index 32a818b..d729dfc 100644
--- a/content/browser/background_fetch/storage/mark_request_complete_task.cc
+++ b/content/browser/background_fetch/storage/mark_request_complete_task.cc
@@ -104,6 +104,8 @@
   BackgroundFetchCrossOriginFilter filter(
       registration_id_.storage_key().origin(), *request_info_);
   if (!filter.CanPopulateBody()) {
+    // Don't expose the initial URL in case of cross-origin redirects.
+    response_->url_list.resize(1);
     failure_reason_ = proto::BackgroundFetchRegistration::FETCH_ERROR;
     // No point writing the response to the cache since it won't be exposed.
     CreateAndStoreCompletedRequest(std::move(done_closure));
diff --git a/content/browser/gpu/compositor_util.cc b/content/browser/gpu/compositor_util.cc
index 75a4318d..229a2fc 100644
--- a/content/browser/gpu/compositor_util.cc
+++ b/content/browser/gpu/compositor_util.cc
@@ -215,8 +215,6 @@
      DisableInfo::Problem(
          "WebGL2 has been disabled via blocklist or the command line."),
      false},
-    {"skia_renderer", gpu::kGpuFeatureStatusEnabled,
-     !features::IsUsingSkiaRenderer(), DisableInfo::NotProblem(), false},
     {"raw_draw", gpu::kGpuFeatureStatusEnabled, !features::IsUsingRawDraw(),
      DisableInfo::NotProblem(), false},
     {"direct_rendering_display_compositor", gpu::kGpuFeatureStatusEnabled,
@@ -261,10 +259,8 @@
         gpu_feature_info, i, is_gpu_compositing_disabled, &eof);
     std::string status;
     // Features undergoing a finch controlled roll out.
-    if (gpu_feature_data.name == "skia_renderer" ||
-        gpu_feature_data.name == "raw_draw" ||
-        gpu_feature_data.name == "direct_rendering_display_compositor" ||
-        gpu_feature_data.name == "viz_hit_test_surface_layer") {
+    if (gpu_feature_data.name == "raw_draw" ||
+        gpu_feature_data.name == "direct_rendering_display_compositor") {
       status = (gpu_feature_data.disabled ? "disabled_off_ok" : "enabled_on");
     } else if (gpu_feature_data.disabled || gpu_access_blocked ||
                gpu_feature_data.status == gpu::kGpuFeatureStatusDisabled) {
diff --git a/content/browser/media/capture/frame_sink_video_capture_device.cc b/content/browser/media/capture/frame_sink_video_capture_device.cc
index ee4982f6..bf96950e 100644
--- a/content/browser/media/capture/frame_sink_video_capture_device.cc
+++ b/content/browser/media/capture/frame_sink_video_capture_device.cc
@@ -17,7 +17,6 @@
 #include "base/time/time.h"
 #include "base/token.h"
 #include "build/build_config.h"
-#include "components/viz/common/features.h"
 #include "components/viz/common/surfaces/subtree_capture_id.h"
 #include "components/viz/host/host_frame_sink_manager.h"
 #include "content/browser/compositor/surface_utils.h"
@@ -113,11 +112,6 @@
     return false;
   }
 
-  // We only support NV12 if SkiaRenderer is in use:
-  if (!features::IsUsingSkiaRenderer()) {
-    return false;
-  }
-
   // We only support NV12 if GL_EXT_texture_rg extension is available. GPU
   // capabilities need to be present in order to determine that.
   if (!gpu_capabilities_) {
diff --git a/content/browser/net/cross_origin_embedder_policy_reporter.cc b/content/browser/net/cross_origin_embedder_policy_reporter.cc
index 8af590c..7f906e7 100644
--- a/content/browser/net/cross_origin_embedder_policy_reporter.cc
+++ b/content/browser/net/cross_origin_embedder_policy_reporter.cc
@@ -112,11 +112,11 @@
         kType, context_url_, blink::mojom::ReportBody::New(std::move(list))));
   }
   if (endpoint) {
-    base::DictionaryValue body_to_pass;
+    base::Value::Dict body_to_pass;
     for (const auto& pair : body) {
-      body_to_pass.SetString(pair.first, pair.second);
+      body_to_pass.Set(pair.first, pair.second);
     }
-    body_to_pass.SetString("disposition", disposition);
+    body_to_pass.Set("disposition", disposition);
 
     if (auto* storage_partition = storage_partition_.get()) {
       storage_partition->GetNetworkContext()->QueueReport(
diff --git a/content/browser/net/cross_origin_embedder_policy_reporter_unittest.cc b/content/browser/net/cross_origin_embedder_policy_reporter_unittest.cc
index 5ee093a..0606d9f3 100644
--- a/content/browser/net/cross_origin_embedder_policy_reporter_unittest.cc
+++ b/content/browser/net/cross_origin_embedder_policy_reporter_unittest.cc
@@ -32,7 +32,7 @@
            const std::string& group,
            const GURL& url,
            const net::NetworkIsolationKey& network_isolation_key,
-           base::Value body)
+           base::Value::Dict body)
         : type(type),
           group(group),
           url(url),
@@ -43,7 +43,7 @@
     std::string group;
     GURL url;
     net::NetworkIsolationKey network_isolation_key;
-    base::Value body;
+    base::Value::Dict body;
   };
 
   void QueueReport(
@@ -53,7 +53,7 @@
       const absl::optional<base::UnguessableToken>& reporting_source,
       const net::NetworkIsolationKey& network_isolation_key,
       const absl::optional<std::string>& user_agent,
-      base::Value body) override {
+      base::Value::Dict body) override {
     DCHECK(!user_agent);
     reports_.emplace_back(
         Report(type, group, url, network_isolation_key, std::move(body)));
@@ -99,33 +99,34 @@
   }
   void InvalidateWeakPtrs() { storage_partition_.InvalidateWeakPtrs(); }
   const TestNetworkContext& network_context() const { return network_context_; }
-  base::Value CreateBodyForCorp(base::StringPiece blocked_url,
-                                RequestDestination destination,
-                                base::StringPiece disposition) const {
-    base::Value dict(base::Value::Type::DICTIONARY);
+  base::Value::Dict CreateBodyForCorp(base::StringPiece blocked_url,
+                                      RequestDestination destination,
+                                      base::StringPiece disposition) const {
+    base::Value::Dict dict;
     for (const auto& pair :
          CreateBodyForCorpInternal(blocked_url, destination, disposition)) {
-      dict.SetKey(std::move(pair.first), base::Value(std::move(pair.second)));
+      dict.Set(std::move(pair.first), std::move(pair.second));
     }
     return dict;
   }
 
-  base::Value CreateBodyForNavigation(base::StringPiece blocked_url,
-                                      base::StringPiece disposition) {
-    base::Value dict(base::Value::Type::DICTIONARY);
+  base::Value::Dict CreateBodyForNavigation(base::StringPiece blocked_url,
+                                            base::StringPiece disposition) {
+    base::Value::Dict dict;
     for (const auto& pair :
          CreateBodyInternal("navigation", blocked_url, disposition)) {
-      dict.SetKey(std::move(pair.first), base::Value(std::move(pair.second)));
+      dict.Set(std::move(pair.first), std::move(pair.second));
     }
     return dict;
   }
 
-  base::Value CreateBodyForWorkerInitialization(base::StringPiece blocked_url,
-                                                base::StringPiece disposition) {
-    base::Value dict(base::Value::Type::DICTIONARY);
+  base::Value::Dict CreateBodyForWorkerInitialization(
+      base::StringPiece blocked_url,
+      base::StringPiece disposition) {
+    base::Value::Dict dict;
     for (const auto& pair : CreateBodyInternal("worker initialization",
                                                blocked_url, disposition)) {
-      dict.SetKey(std::move(pair.first), base::Value(std::move(pair.second)));
+      dict.Set(std::move(pair.first), std::move(pair.second));
     }
     return dict;
   }
diff --git a/content/browser/net/cross_origin_opener_policy_reporter.cc b/content/browser/net/cross_origin_opener_policy_reporter.cc
index 7f6b528e..34ed140 100644
--- a/content/browser/net/cross_origin_opener_policy_reporter.cc
+++ b/content/browser/net/cross_origin_opener_policy_reporter.cc
@@ -196,13 +196,13 @@
   if (!endpoint)
     return;
 
-  base::DictionaryValue body;
-  body.SetString(kDisposition,
-                 is_report_only ? kDispositionReporting : kDispositionEnforce);
-  body.SetString(kPreviousURL,
-                 same_origin_with_previous ? SanitizedURL(previous_url) : "");
-  body.SetString(kReferrer, context_referrer_url_);
-  body.SetString(kType, kTypeToResponse);
+  base::Value::Dict body;
+  body.Set(kDisposition,
+           is_report_only ? kDispositionReporting : kDispositionEnforce);
+  body.Set(kPreviousURL,
+           same_origin_with_previous ? SanitizedURL(previous_url) : "");
+  body.Set(kReferrer, context_referrer_url_);
+  body.Set(kType, kTypeToResponse);
   QueueNavigationReport(std::move(body), *endpoint, is_report_only);
 }
 
@@ -220,9 +220,9 @@
   std::string sanitized_next_url;
   if (is_current_source || same_origin_with_next)
     sanitized_next_url = SanitizedURL(next_url);
-  base::DictionaryValue body;
-  body.SetString(kNextURL, sanitized_next_url);
-  body.SetString(kType, kTypeFromResponse);
+  base::Value::Dict body;
+  body.Set(kNextURL, sanitized_next_url);
+  body.Set(kType, kTypeFromResponse);
   QueueNavigationReport(std::move(body), *endpoint, is_report_only);
 }
 
@@ -242,38 +242,37 @@
   DCHECK(base::FeatureList::IsEnabled(
       network::features::kCrossOriginOpenerPolicy));
 
-  base::DictionaryValue body;
-  body.SetStringPath(kType, network::CoopAccessReportTypeToString(report_type));
-  body.SetStringPath(kDisposition, kDispositionReporting);
-  body.SetStringPath(kEffectivePolicy,
-                     ToString(coop_.report_only_value));
-  body.SetStringPath(kProperty, property);
+  base::Value::Dict body;
+  body.Set(kType, network::CoopAccessReportTypeToString(report_type));
+  body.Set(kDisposition, kDispositionReporting);
+  body.Set(kEffectivePolicy, ToString(coop_.report_only_value));
+  body.Set(kProperty, property);
   if (network::IsAccessFromCoopPage(report_type) &&
       source_location->url != "") {
-    body.SetStringPath(kSourceFile, source_location->url);
-    body.SetIntPath(kLineNumber, source_location->line);
-    body.SetIntPath(kColumnNumber, source_location->column);
+    body.Set(kSourceFile, source_location->url);
+    body.Set(kLineNumber, static_cast<int>(source_location->line));
+    body.Set(kColumnNumber, static_cast<int>(source_location->column));
   }
 
   switch (report_type) {
     // Reporter is the openee:
     case network::mojom::CoopAccessReportType::kAccessFromCoopPageToOpener:
     case network::mojom::CoopAccessReportType::kAccessToCoopPageFromOpener:
-      body.SetStringPath(kOpenerURL, reported_window_url);
-      body.SetStringPath(kReferrer, context_referrer_url_);
+      body.Set(kOpenerURL, reported_window_url);
+      body.Set(kReferrer, context_referrer_url_);
       break;
 
     // Reporter is the opener:
     case network::mojom::CoopAccessReportType::kAccessFromCoopPageToOpenee:
     case network::mojom::CoopAccessReportType::kAccessToCoopPageFromOpenee:
-      body.SetStringPath(kOpeneeURL, reported_window_url);
-      body.SetStringPath(kInitialPopupURL, initial_popup_url);
+      body.Set(kOpeneeURL, reported_window_url);
+      body.Set(kInitialPopupURL, initial_popup_url);
       break;
 
     // Other:
     case network::mojom::CoopAccessReportType::kAccessFromCoopPageToOther:
     case network::mojom::CoopAccessReportType::kAccessToCoopPageFromOther:
-      body.SetStringPath(kOtherDocumentURL, reported_window_url);
+      body.Set(kOtherDocumentURL, reported_window_url);
       break;
   }
 
@@ -283,14 +282,13 @@
 }
 
 void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
-    base::DictionaryValue body,
+    base::Value::Dict body,
     const std::string& endpoint,
     bool is_report_only) {
-  body.SetString(kDisposition,
-                 is_report_only ? kDispositionReporting : kDispositionEnforce);
-  body.SetString(
-      kEffectivePolicy,
-      ToString(is_report_only ? coop_.report_only_value : coop_.value));
+  body.Set(kDisposition,
+           is_report_only ? kDispositionReporting : kDispositionEnforce);
+  body.Set(kEffectivePolicy,
+           ToString(is_report_only ? coop_.report_only_value : coop_.value));
   storage_partition_->GetNetworkContext()->QueueReport(
       "coop", endpoint, context_url_, reporting_source_, network_isolation_key_,
       /*user_agent=*/absl::nullopt, std::move(body));
diff --git a/content/browser/net/cross_origin_opener_policy_reporter.h b/content/browser/net/cross_origin_opener_policy_reporter.h
index 9d888a1d..2f46452 100644
--- a/content/browser/net/cross_origin_opener_policy_reporter.h
+++ b/content/browser/net/cross_origin_opener_policy_reporter.h
@@ -77,7 +77,7 @@
                                          bool is_report_only);
 
  private:
-  void QueueNavigationReport(base::DictionaryValue body,
+  void QueueNavigationReport(base::Value::Dict body,
                              const std::string& endpoint,
                              bool is_report_only);
 
diff --git a/content/browser/net/cross_origin_opener_policy_reporter_unittest.cc b/content/browser/net/cross_origin_opener_policy_reporter_unittest.cc
index c5bf836..a9eb8781 100644
--- a/content/browser/net/cross_origin_opener_policy_reporter_unittest.cc
+++ b/content/browser/net/cross_origin_opener_policy_reporter_unittest.cc
@@ -27,7 +27,7 @@
            const std::string& group,
            const GURL& url,
            const net::NetworkIsolationKey& network_isolation_key,
-           base::Value body)
+           base::Value::Dict body)
         : type(type),
           group(group),
           url(url),
@@ -38,7 +38,7 @@
     std::string group;
     GURL url;
     net::NetworkIsolationKey network_isolation_key;
-    base::Value body;
+    base::Value::Dict body;
   };
 
   void QueueReport(
@@ -48,7 +48,7 @@
       const absl::optional<base::UnguessableToken>& reporting_source,
       const net::NetworkIsolationKey& network_isolation_key,
       const absl::optional<std::string>& user_agent,
-      base::Value body) override {
+      base::Value::Dict body) override {
     DCHECK(!user_agent);
     reports_.emplace_back(
         Report(type, group, url, network_isolation_key, std::move(body)));
@@ -120,22 +120,19 @@
   EXPECT_EQ(r1.type, "coop");
   EXPECT_EQ(r1.url, context_url());
   EXPECT_EQ(r1.network_isolation_key, network_isolation_key());
-  EXPECT_EQ(r1.body.FindKey("disposition")->GetString(), "enforce");
-  EXPECT_EQ(r1.body.FindKey("previousResponseURL")->GetString(), url1_report);
-  EXPECT_EQ(r1.body.FindKey("referrer")->GetString(),
-            "https://referrer.com/?a");
-  EXPECT_EQ(r1.body.FindKey("type")->GetString(), "navigation-to-response");
-  EXPECT_EQ(r1.body.FindKey("effectivePolicy")->GetString(),
-            "same-origin-plus-coep");
+  EXPECT_EQ(*r1.body.FindString("disposition"), "enforce");
+  EXPECT_EQ(*r1.body.FindString("previousResponseURL"), url1_report);
+  EXPECT_EQ(*r1.body.FindString("referrer"), "https://referrer.com/?a");
+  EXPECT_EQ(*r1.body.FindString("type"), "navigation-to-response");
+  EXPECT_EQ(*r1.body.FindString("effectivePolicy"), "same-origin-plus-coep");
 
   EXPECT_EQ(r2.type, "coop");
   EXPECT_EQ(r2.url, context_url());
   EXPECT_EQ(r2.network_isolation_key, network_isolation_key());
-  EXPECT_EQ(r2.body.FindKey("disposition")->GetString(), "enforce");
-  EXPECT_EQ(r2.body.FindKey("nextResponseURL")->GetString(), url3);
-  EXPECT_EQ(r2.body.FindKey("type")->GetString(), "navigation-from-response");
-  EXPECT_EQ(r2.body.FindKey("effectivePolicy")->GetString(),
-            "same-origin-plus-coep");
+  EXPECT_EQ(*r2.body.FindString("disposition"), "enforce");
+  EXPECT_EQ(*r2.body.FindString("nextResponseURL"), url3);
+  EXPECT_EQ(*r2.body.FindString("type"), "navigation-from-response");
+  EXPECT_EQ(*r2.body.FindString("effectivePolicy"), "same-origin-plus-coep");
 }
 
 TEST_F(CrossOriginOpenerPolicyReporterTest, UserAndPassSanitization) {
@@ -151,14 +148,13 @@
 
   EXPECT_EQ(r1.type, "coop");
   EXPECT_EQ(r1.url, GURL("https://www1.example.com/x"));
-  EXPECT_EQ(r1.body.FindKey("previousResponseURL")->GetString(),
+  EXPECT_EQ(*r1.body.FindString("previousResponseURL"),
             "https://www2.example.com/x");
-  EXPECT_EQ(r1.body.FindKey("referrer")->GetString(),
-            "https://referrer.com/?a");
+  EXPECT_EQ(*r1.body.FindString("referrer"), "https://referrer.com/?a");
 
   EXPECT_EQ(r2.type, "coop");
   EXPECT_EQ(r2.url, GURL("https://www1.example.com/x"));
-  EXPECT_EQ(r2.body.FindKey("nextResponseURL")->GetString(),
+  EXPECT_EQ(*r2.body.FindString("nextResponseURL"),
             "https://www2.example.com/x");
 }
 
diff --git a/content/browser/net/cross_origin_opener_policy_reporting_browsertest.cc b/content/browser/net/cross_origin_opener_policy_reporting_browsertest.cc
index 5a556a2..bffd3b74 100644
--- a/content/browser/net/cross_origin_opener_policy_reporting_browsertest.cc
+++ b/content/browser/net/cross_origin_opener_policy_reporting_browsertest.cc
@@ -191,7 +191,7 @@
     for (const base::UnguessableToken& reporting_source : reporting_sources_) {
       network_context->QueueReport("type", "default", url_, reporting_source,
                                    net::NetworkIsolationKey(origin, origin),
-                                   "Mozilla/1.0", base::DictionaryValue());
+                                   "Mozilla/1.0", base::Value::Dict());
     }
   }
 
diff --git a/content/browser/net/reporting_service_proxy.cc b/content/browser/net/reporting_service_proxy.cc
index 08c579f..d331647 100644
--- a/content/browser/net/reporting_service_proxy.cc
+++ b/content/browser/net/reporting_service_proxy.cc
@@ -61,8 +61,7 @@
       body.Set("lineNumber", line_number);
     if (column_number)
       body.Set("columnNumber", column_number);
-    QueueReport(url, "default", "intervention",
-                std::make_unique<base::Value>(std::move(body)));
+    QueueReport(url, "default", "intervention", std::move(body));
   }
 
   void QueueDeprecationReport(const GURL& url,
@@ -85,8 +84,7 @@
       body.Set("lineNumber", line_number);
     if (column_number)
       body.Set("columnNumber", column_number);
-    QueueReport(url, "default", "deprecation",
-                std::make_unique<base::Value>(std::move(body)));
+    QueueReport(url, "default", "deprecation", std::move(body));
   }
 
   void QueueCspViolationReport(const GURL& url,
@@ -120,8 +118,7 @@
       body.Set("lineNumber", line_number);
     if (column_number)
       body.Set("columnNumber", column_number);
-    QueueReport(url, group, "csp-violation",
-                std::make_unique<base::Value>(std::move(body)));
+    QueueReport(url, group, "csp-violation", std::move(body));
   }
 
   void QueuePermissionsPolicyViolationReport(
@@ -144,7 +141,7 @@
     if (column_number)
       body.Set("columnNumber", column_number);
     QueueReport(url, "default", "permissions-policy-violation",
-                std::make_unique<base::Value>(std::move(body)));
+                std::move(body));
   }
 
   void QueueDocumentPolicyViolationReport(
@@ -167,8 +164,7 @@
       body.Set("lineNumber", line_number);
     if (column_number)
       body.Set("columnNumber", column_number);
-    QueueReport(url, group, "document-policy-violation",
-                std::make_unique<base::Value>(std::move(body)));
+    QueueReport(url, group, "document-policy-violation", std::move(body));
   }
 
   int render_process_id() const { return render_process_id_; }
@@ -177,14 +173,13 @@
   void QueueReport(const GURL& url,
                    const std::string& group,
                    const std::string& type,
-                   std::unique_ptr<base::Value> body) {
+                   base::Value::Dict body) {
     auto* rph = RenderProcessHost::FromID(render_process_id_);
     if (!rph)
       return;
     rph->GetStoragePartition()->GetNetworkContext()->QueueReport(
         type, group, url, reporting_source_, network_isolation_key_,
-        /*user_agent=*/absl::nullopt,
-        base::Value::FromUniquePtrValue(std::move(body)));
+        /*user_agent=*/absl::nullopt, std::move(body));
   }
 
   const int render_process_id_;
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
index c0c99d3a..bdda69e 100644
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -11653,9 +11653,9 @@
   }
 
   // Construct the crash report.
-  auto body = base::DictionaryValue();
+  base::Value::Dict body;
   if (!reason.empty())
-    body.SetString("reason", reason);
+    body.Set("reason", reason);
 
   // Send the crash report to the Reporting API.
   GetProcess()->GetStoragePartition()->GetNetworkContext()->QueueReport(
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index 8d0465d..b0e4abfc 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -3263,7 +3263,6 @@
     switches::kForceDisplayColorProfile,
     switches::kForceGpuMemAvailableMb,
     switches::kForceHighContrast,
-    switches::kForceOverlayFullscreenVideo,
     switches::kForceRasterColorProfile,
     switches::kForceVideoOverlays,
     switches::kFullMemoryCrashReport,
diff --git a/content/browser/resources/gpu/info_view.js b/content/browser/resources/gpu/info_view.js
index bf70baa..54841004 100644
--- a/content/browser/resources/gpu/info_view.js
+++ b/content/browser/resources/gpu/info_view.js
@@ -284,7 +284,6 @@
       'surface_control': 'Surface Control',
       'vpx_decode': 'VPx Video Decode',
       'webgl2': 'WebGL2',
-      'skia_renderer': 'Skia Renderer',
       'canvas_oop_rasterization': 'Canvas out-of-process rasterization',
       'raw_draw': 'Raw Draw',
       'video_encode': 'Video Encode',
diff --git a/content/browser/resources/quota/quota_internals.css b/content/browser/resources/quota/quota_internals.css
index 309cac4..d4b6e5df 100644
--- a/content/browser/resources/quota/quota_internals.css
+++ b/content/browser/resources/quota/quota_internals.css
@@ -2,6 +2,117 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file. */
 
+tabbox {
+  display: flex;
+  flex-direction: column;
+}
+
+tabs {
+  background: linear-gradient(white, rgb(243, 243, 243));
+  border-bottom: 1px solid rgb(160, 160, 160);
+  display: flex;
+  margin: 0;
+  padding-inline-start: 8px;
+}
+
+tabs.new-style-tabs {
+  background: #fbfbfb;
+  border-bottom: 1px solid #c8c8c8;
+  padding-inline-start: 9px;
+  padding-top: 14px;
+}
+
+tabs > * {
+  background: rgba(160, 160, 160, .3);
+  border: 1px solid rgba(160, 160, 160, .3);
+  border-bottom: 0;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+  cursor: default;
+  display: block;
+  margin-inline-start: 5px;
+  min-width: 4em;
+  padding: 2px 10px;
+  text-align: center;
+  transition: border-color 150ms, background-color 150ms;
+}
+
+tabs.new-style-tabs > * {
+  background: #fbfbfb;
+  border: 1px solid #fbfbfb;
+  border-bottom: 0;
+  border-radius: 0;
+  margin-inline-start: 0;
+  min-width: 0;
+  padding: 4px 9px 4px 10px;
+  transition: none;
+}
+
+tabs > :not([selected]) {
+  background: rgba(238, 238, 238, .3);
+}
+
+tabs.new-style-tabs > :not([selected]) {
+  background: #fbfbfb;
+  color: #646464;
+}
+
+tabs > :not([selected]):hover {
+  background: rgba(247, 247, 247, .3);
+}
+
+tabs.new-style-tabs > :not([selected]):hover {
+  background: #fbfbfb;
+  color: black;
+}
+
+tabs > [selected] {
+  background: white;
+  border-color: rgb(160, 160, 160);
+  margin-bottom: -1px;
+  position: relative;
+  transition: none;
+  z-index: 0;
+}
+
+tabs.new-style-tabs > [selected] {
+  background: #fbfbfb;
+  border-color: #c8c8c8;
+  font-weight: bold;
+}
+
+tabs:focus {
+  outline: none;
+}
+
+html.focus-outline-visible tabs:focus > [selected] {
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+
+tabpanels {
+  background: white;
+  box-shadow: 2px 2px 5px rgba(0, 0, 0, .2);
+  flex: 1;
+  display: flex;
+  padding: 5px 15px 0 15px;
+}
+
+tabpanels.new-style-tabs {
+  background: #fbfbfb;
+  box-shadow: none;
+  padding: 0 20px;
+}
+
+tabpanels > * {
+  flex: 1;
+  display: none;
+}
+
+tabpanels > [selected] {
+  display: block;
+}
+
 button {
   background-color: powderblue;
   border: .5px solid black;
diff --git a/content/browser/resources/quota/quota_internals.html b/content/browser/resources/quota/quota_internals.html
index 3a90df83..f89cf9a 100644
--- a/content/browser/resources/quota/quota_internals.html
+++ b/content/browser/resources/quota/quota_internals.html
@@ -5,7 +5,6 @@
   <title>Quota Internals</title>
   <meta name="viewport" content="width=device-width">
   <link rel="stylesheet" href="chrome://resources/css/roboto.css">
-  <link rel="stylesheet" href="chrome://resources/css/tabs.css">
   <link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
   <link rel="stylesheet" href="quota_internals.css">
   <script type="module" src="quota_internals.js" defer></script>
diff --git a/content/browser/speech/tts_utterance_impl.cc b/content/browser/speech/tts_utterance_impl.cc
index 6ba7627..b6a1e8d 100644
--- a/content/browser/speech/tts_utterance_impl.cc
+++ b/content/browser/speech/tts_utterance_impl.cc
@@ -67,7 +67,6 @@
       should_clear_queue_(true),
       char_index_(0),
       finished_(false) {
-  options_ = std::make_unique<base::DictionaryValue>();
   if (web_contents) {
     web_contents_ = web_contents->GetWeakPtr();
   }
@@ -107,12 +106,12 @@
   return text_;
 }
 
-void TtsUtteranceImpl::SetOptions(const base::Value* options) {
-  options_ = base::Value::ToUniquePtrValue(options->Clone());
+void TtsUtteranceImpl::SetOptions(base::Value::Dict options) {
+  options_ = std::move(options);
 }
 
-const base::Value* TtsUtteranceImpl::GetOptions() {
-  return options_.get();
+const base::Value::Dict* TtsUtteranceImpl::GetOptions() {
+  return &options_;
 }
 
 void TtsUtteranceImpl::SetSrcId(int src_id) {
diff --git a/content/browser/speech/tts_utterance_impl.h b/content/browser/speech/tts_utterance_impl.h
index c1d302f..c458910 100644
--- a/content/browser/speech/tts_utterance_impl.h
+++ b/content/browser/speech/tts_utterance_impl.h
@@ -11,6 +11,7 @@
 
 #include "base/memory/raw_ptr.h"
 #include "base/memory/weak_ptr.h"
+#include "base/values.h"
 #include "content/common/content_export.h"
 #include "content/public/browser/tts_utterance.h"
 
@@ -43,8 +44,8 @@
   void SetText(const std::string& text) override;
   const std::string& GetText() override;
 
-  void SetOptions(const base::Value* options) override;
-  const base::Value* GetOptions() override;
+  void SetOptions(base::Value::Dict options) override;
+  const base::Value::Dict* GetOptions() override;
 
   void SetSrcId(int src_id) override;
   int GetSrcId() override;
@@ -112,7 +113,7 @@
 
   // The full options arg passed to tts.speak, which may include fields
   // other than the ones we explicitly parse, below.
-  std::unique_ptr<base::Value> options_;
+  base::Value::Dict options_;
 
   // The source engine's ID of this utterance, so that it can associate
   // events with the appropriate callback.
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
index b2861672..5eab80b6 100644
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -400,8 +400,6 @@
           // launched and released to stable with no issues.
           {"AutoExpandDetailsElement",
            blink::features::kAutoExpandDetailsElement},
-          {"UserAgentClientHintFullVersionList",
-           blink::features::kUserAgentClientHintFullVersionList},
           {"ClientHintsMetaHTTPEquivAcceptCH",
            blink::features::kClientHintsMetaHTTPEquivAcceptCH},
           {"ClientHintsMetaNameAcceptCH",
@@ -478,8 +476,6 @@
       {wrf::EnableWebGLDraftExtensions, switches::kEnableWebGLDraftExtensions,
        true},
       {wrf::EnableWebGPU, switches::kEnableUnsafeWebGPU, true},
-      {wrf::ForceOverlayFullscreenVideo, switches::kForceOverlayFullscreenVideo,
-       true},
       {wrf::EnableDirectSockets, switches::kIsolatedAppOrigins, true},
   };
   for (const auto& mapping : switchToFeatureMapping) {
diff --git a/content/public/browser/tts_utterance.h b/content/public/browser/tts_utterance.h
index 774266a9..ea73614 100644
--- a/content/public/browser/tts_utterance.h
+++ b/content/public/browser/tts_utterance.h
@@ -8,13 +8,10 @@
 #include <memory>
 #include <set>
 
+#include "base/values.h"
 #include "content/common/content_export.h"
 #include "url/gurl.h"
 
-namespace base {
-class Value;
-}
-
 namespace content {
 class BrowserContext;
 class TtsUtterance;
@@ -87,8 +84,8 @@
   virtual void SetText(const std::string& text) = 0;
   virtual const std::string& GetText() = 0;
 
-  virtual void SetOptions(const base::Value* options) = 0;
-  virtual const base::Value* GetOptions() = 0;
+  virtual void SetOptions(base::Value::Dict options) = 0;
+  virtual const base::Value::Dict* GetOptions() = 0;
 
   virtual void SetSrcId(int src_id) = 0;
   virtual int GetSrcId() = 0;
diff --git a/content/public/common/content_switch_dependent_feature_overrides.cc b/content/public/common/content_switch_dependent_feature_overrides.cc
index 50fece0..4956fbb 100644
--- a/content/public/common/content_switch_dependent_feature_overrides.cc
+++ b/content/public/common/content_switch_dependent_feature_overrides.cc
@@ -81,9 +81,6 @@
      std::cref(blink::features::kViewportHeightClientHintHeader),
      base::FeatureList::OVERRIDE_ENABLE_FEATURE},
     {switches::kEnableExperimentalWebPlatformFeatures,
-     std::cref(blink::features::kUserAgentClientHintFullVersionList),
-     base::FeatureList::OVERRIDE_ENABLE_FEATURE},
-    {switches::kEnableExperimentalWebPlatformFeatures,
      std::cref(blink::features::kClientHintsMetaHTTPEquivAcceptCH),
      base::FeatureList::OVERRIDE_ENABLE_FEATURE},
     {switches::kEnableExperimentalWebPlatformFeatures,
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc
index 61b0f93c..6c368bc 100644
--- a/content/public/common/content_switches.cc
+++ b/content/public/common/content_switches.cc
@@ -467,10 +467,6 @@
 // string. Locks major version to 99.
 const char kForceMajorVersionToMinorPosition[] = "force-major-version-to-minor";
 
-// Forces use of hardware overlay for fullscreen video playback. Useful for
-// testing the Android overlay fullscreen functionality on other platforms.
-const char kForceOverlayFullscreenVideo[]   = "force-overlay-fullscreen-video";
-
 // This forces pages to be loaded as presentation receivers.  Useful for testing
 // behavior specific to presentation receivers.
 // Spec: https://www.w3.org/TR/presentation-api/#interface-presentationreceiver
diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h
index 72cac98..7162940 100644
--- a/content/public/common/content_switches.h
+++ b/content/public/common/content_switches.h
@@ -144,7 +144,6 @@
 CONTENT_EXPORT extern const char kFileUrlPathAlias[];
 CONTENT_EXPORT extern const char kForceDisplayList2dCanvas[];
 CONTENT_EXPORT extern const char kForceMajorVersionToMinorPosition[];
-CONTENT_EXPORT extern const char kForceOverlayFullscreenVideo[];
 CONTENT_EXPORT extern const char kForcePresentationReceiverForTesting[];
 CONTENT_EXPORT extern const char kForceRendererAccessibility[];
 CONTENT_EXPORT extern const char kForceWebRtcIPHandlingPolicy[];
diff --git a/content/public/test/OWNERS b/content/public/test/OWNERS
index 2011059..4371141 100644
--- a/content/public/test/OWNERS
+++ b/content/public/test/OWNERS
@@ -16,6 +16,9 @@
 # For Attribution Reporting API simulator.
 per-file attribution_simulator*=file://content/browser/attribution_reporting/OWNERS
 
+# For Aggregation Service testing tool.
+per-file test_aggregation_service*=file://content/browser/aggregation_service/OWNERS
+
 # Network Service
 per-file network_service_test_helper.*=file://services/network/OWNERS
 
diff --git a/content/public/test/test_aggregation_service.cc b/content/public/test/test_aggregation_service.cc
index 99423a99..a8888dde 100644
--- a/content/public/test/test_aggregation_service.cc
+++ b/content/public/test/test_aggregation_service.cc
@@ -20,17 +20,17 @@
     int value,
     AggregationMode aggregation_mode,
     url::Origin reporting_origin,
-    std::string privacy_budget_key,
     std::vector<GURL> processing_urls,
-    bool is_debug_mode_enabled)
+    bool is_debug_mode_enabled,
+    base::Value::Dict additional_fields)
     : operation(operation),
       bucket(bucket),
       value(value),
       aggregation_mode(aggregation_mode),
       reporting_origin(std::move(reporting_origin)),
-      privacy_budget_key(std::move(privacy_budget_key)),
       processing_urls(std::move(processing_urls)),
-      is_debug_mode_enabled(is_debug_mode_enabled) {}
+      is_debug_mode_enabled(is_debug_mode_enabled),
+      additional_fields(std::move(additional_fields)) {}
 
 TestAggregationService::AssembleRequest::AssembleRequest(
     AssembleRequest&& other) = default;
@@ -48,4 +48,4 @@
       clock, std::move(url_loader_factory));
 }
 
-}  // namespace content
\ No newline at end of file
+}  // namespace content
diff --git a/content/public/test/test_aggregation_service.h b/content/public/test/test_aggregation_service.h
index 94ae456..83ce208d 100644
--- a/content/public/test/test_aggregation_service.h
+++ b/content/public/test/test_aggregation_service.h
@@ -56,9 +56,9 @@
                     int value,
                     AggregationMode aggregation_mode,
                     url::Origin reporting_origin,
-                    std::string privacy_budget_key,
                     std::vector<GURL> processing_urls,
-                    bool is_debug_mode_enabled);
+                    bool is_debug_mode_enabled,
+                    base::Value::Dict additional_fields);
     AssembleRequest(AssembleRequest&& other);
     AssembleRequest& operator=(AssembleRequest&& other);
     ~AssembleRequest();
@@ -79,6 +79,9 @@
     std::vector<GURL> processing_urls;
     // Whether debug_mode should be enabled for the report.
     bool is_debug_mode_enabled;
+
+    // Additional fields to add to shared_info.
+    base::Value::Dict additional_fields;
   };
 
   virtual ~TestAggregationService() = default;
diff --git a/content/renderer/render_process_impl.cc b/content/renderer/render_process_impl.cc
index b657f6ce..619510d 100644
--- a/content/renderer/render_process_impl.cc
+++ b/content/renderer/render_process_impl.cc
@@ -222,6 +222,8 @@
   SetV8FlagIfNotFeature(features::kWebAssemblyDynamicTiering,
                         "--no-wasm-dynamic-tiering");
 
+  v8::V8::SetFlagsFromString("--freeze-flags-after-init");
+
 #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
   if (base::FeatureList::IsEnabled(features::kWebAssemblyTrapHandler)) {
     if (command_line->HasSwitch(switches::kEnableCrashpad) ||
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index 01525c8d..7037cff 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -2065,7 +2065,6 @@
     "../browser/attribution_reporting/attribution_interop_unittest.cc",
     "../browser/attribution_reporting/attribution_manager_impl_unittest.cc",
     "../browser/attribution_reporting/attribution_report_network_sender_unittest.cc",
-    "../browser/attribution_reporting/attribution_report_unittest.cc",
     "../browser/attribution_reporting/attribution_storage_delegate_impl_unittest.cc",
     "../browser/attribution_reporting/attribution_storage_sql_migrations_unittest.cc",
     "../browser/attribution_reporting/attribution_storage_sql_unittest.cc",
diff --git a/content/test/data/attribution_reporting/aggregatable_report_goldens/latest/report_1.json b/content/test/data/attribution_reporting/aggregatable_report_goldens/latest/report_1.json
index 263bf888..4fe70a2 100644
--- a/content/test/data/attribution_reporting/aggregatable_report_goldens/latest/report_1.json
+++ b/content/test/data/attribution_reporting/aggregatable_report_goldens/latest/report_1.json
@@ -1,12 +1,10 @@
 {
-  "aggregation_service_payloads": [ {
-     "debug_cleartext_payload": "omRkYXRhgaJldmFsdWVEAAAAAmZidWNrZXRQAAAAAAAAAAAAAAAAAAAAAWlvcGVyYXRpb25paGlzdG9ncmFt",
-     "key_id": "example_id",
-     "payload": "nNJRhchQJaZTld/Cfsz5/4JelfwxVw4wTBwaXdDu0y2YKJ3lKyjjRUKKemGsPtSj+D1MlST0ggABMGuJexhxntg7hO+fK1KIcoSK0IWyvrgfkvdip0enRdtxxEZP7xR3nAd8JFnMGDnRHOjBuOni"
-  } ],
-  "attribution_destination": "https://conversion.test",
-  "shared_info": "{\"debug_mode\":\"enabled\",\"privacy_budget_key\":\"hTxwDPlUIel3dB39m09GOkeAkMLcYVdE6H0eK2t1RYc=\",\"report_id\":\"21abd97f-73e8-4b88-9389-a9fee6abda5e\",\"reporting_origin\":\"https://report.test\",\"scheduled_report_time\":\"1234486400\",\"version\":\"\"}",
-  "source_debug_key": "123",
-  "source_registration_time": "1234483200",
-  "trigger_debug_key": "456"
+   "aggregation_service_payloads": [ {
+      "debug_cleartext_payload": "omRkYXRhgaJldmFsdWVEAAAAAmZidWNrZXRQAAAAAAAAAAAAAAAAAAAAAWlvcGVyYXRpb25paGlzdG9ncmFt",
+      "key_id": "example_id",
+      "payload": "CF4PgWaFAWo8A3jC9rs3Lqr5HRh47Gkdat07Rc510HyCWo+WNwpD0t5jSCexfy2cgVyucGoT0ub58zA82Vg3fBz/sJcrI/83YxuuXPLMbABysLULuILecMqHSBBJfUQIHv80cMemkRKR6u19mzaq"
+   } ],
+   "shared_info": "{\"attribution_destination\":\"https://conversion.test\",\"debug_mode\":\"enabled\",\"report_id\":\"21abd97f-73e8-4b88-9389-a9fee6abda5e\",\"reporting_origin\":\"https://report.test\",\"scheduled_report_time\":\"1234486400\",\"source_registration_time\":\"1234483200\",\"version\":\"\"}",
+   "source_debug_key": "123",
+   "trigger_debug_key": "456"
 }
diff --git a/content/test/data/attribution_reporting/aggregatable_report_goldens/version_/report_1.json b/content/test/data/attribution_reporting/aggregatable_report_goldens/version_/report_1.json
new file mode 100644
index 0000000..dbea77d
--- /dev/null
+++ b/content/test/data/attribution_reporting/aggregatable_report_goldens/version_/report_1.json
@@ -0,0 +1,13 @@
+{
+  "aggregation_service_payloads": [ {
+     "debug_cleartext_payload": "omRkYXRhgaJldmFsdWVEAAAAAmZidWNrZXRQAAAAAAAAAAAAAAAAAAAAAWlvcGVyYXRpb25paGlzdG9ncmFt",
+     "key_id": "example_id",
+     "payload": "cVrsURY6QvrT1fsdPxWOXb3bjlzB6ih3APjLpydjyRoAJ6FTyZf9AUj1l5VlDweb3fssxCaMkz5jr5oHPlehnBVjrKLiSvtX3mTJ3CJD9DEp3uiiKV5Fsjv4G4RJcdwZERnJN/8s1OWJ6syEqKnJ"
+  } ],
+  "attribution_destination": "https://conversion.test",
+  "shared_info": "{\"debug_mode\":\"enabled\",\"privacy_budget_key\":\"aOEbtVxG8dYzAR2K/xuW/OppNaQikp5RdjAXshOQ9w8=\",\"report_id\":\"21abd97f-73e8-4b88-9389-a9fee6abda5e\",\"reporting_origin\":\"https://report.test\",\"scheduled_report_time\":\"1234486400\",\"version\":\"\"}",
+  "source_debug_key": "123",
+  "source_registration_time": "1234483200",
+  "source_site": "https://impression.test",
+  "trigger_debug_key": "456"
+}
diff --git a/content/test/data/attribution_reporting/interop/basic_aggregatable.json b/content/test/data/attribution_reporting/interop/basic_aggregatable.json
index e885c0db..35d62f50 100644
--- a/content/test/data/attribution_reporting/interop/basic_aggregatable.json
+++ b/content/test/data/attribution_reporting/interop/basic_aggregatable.json
@@ -71,7 +71,6 @@
     "aggregatable_results": [
       {
         "payload": {
-          "attribution_destination": "https://destination.test",
           "histograms": [
             {
               "key": "0x559",
diff --git a/content/test/data/attribution_reporting/simulator/basic_aggregatable.output.json b/content/test/data/attribution_reporting/simulator/basic_aggregatable.output.json
index 3975dbe8..a30496c 100644
--- a/content/test/data/attribution_reporting/simulator/basic_aggregatable.output.json
+++ b/content/test/data/attribution_reporting/simulator/basic_aggregatable.output.json
@@ -2,7 +2,6 @@
   "aggregatable_reports": [
     {
       "report": {
-        "attribution_destination": "https://d.test"
       },
       "report_time": "1643239174123",
       "report_url": "https://r.test/.well-known/attribution-reporting/report-aggregate-attribution",
diff --git a/content/test/data/gpu/pixel_webgpu_util.js b/content/test/data/gpu/pixel_webgpu_util.js
index 53c24d3..4c1c35b 100644
--- a/content/test/data/gpu/pixel_webgpu_util.js
+++ b/content/test/data/gpu/pixel_webgpu_util.js
@@ -24,7 +24,7 @@
   @location(0) fragUV : vec2<f32>;
 };
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) VertexIndex : u32) -> VertexOutput {
   var output: VertexOutput;
   output.Position = quadPos[VertexIndex];
@@ -37,14 +37,14 @@
 @group(0) @binding(0) var mySampler: sampler;
 @group(0) @binding(1) var myTexture: texture_2d<f32>;
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV : vec2<f32>) -> @location(0) vec4<f32> {
   return textureSample(myTexture, mySampler, fragUV);
 }
 `,
 
     fragmentClear: `
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV : vec2<f32>) -> @location(0) vec4<f32> {
   return vec4<f32>(1.0, 1.0, 1.0, 1.0);
 }
@@ -54,7 +54,7 @@
 @group(0) @binding(0) var mySampler: sampler;
 @group(0) @binding(1) var myTexture: texture_external;
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV : vec2<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(myTexture, mySampler, fragUV);
 }
diff --git a/content/test/data/gpu/vc/webgpu_video.js b/content/test/data/gpu/vc/webgpu_video.js
index 9793237..ff85f9d9 100644
--- a/content/test/data/gpu/vc/webgpu_video.js
+++ b/content/test/data/gpu/vc/webgpu_video.js
@@ -36,7 +36,7 @@
   @location(0) fragUV : vec2<f32>;
 };
 
-@stage(vertex) fn main(
+@vertex fn main(
   @location(0) position : vec2<f32>,
   @location(1) uv : vec2<f32>
 ) -> VertexOutput {
@@ -51,7 +51,7 @@
 @group(0) @binding(0) var mySampler: sampler;
 @group(0) @binding(1) var myTexture: texture_external;
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV : vec2<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(myTexture, mySampler, fragUV);
 }
@@ -61,14 +61,14 @@
 @group(0) @binding(0) var mySampler: sampler;
 @group(0) @binding(1) var myTexture: texture_2d<f32>;
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV : vec2<f32>) -> @location(0) vec4<f32> {
   return textureSample(myTexture, mySampler, fragUV);
 }
 `,
 
   vertex_icons: `
-@stage(vertex)
+@vertex
 fn main(@location(0) position : vec2<f32>)
     -> @builtin(position) vec4<f32> {
   return vec4<f32>(position, 0.0, 1.0);
@@ -76,20 +76,20 @@
 `,
 
   fragment_output_blue: `
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(0.11328125, 0.4296875, 0.84375, 1.0);
 }
 `,
   fragment_output_light_blue: `
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(0.3515625, 0.50390625, 0.75390625, 1.0);
 }
 `,
 
   fragment_output_white: `
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(1.0, 1.0, 1.0, 1.0);
 }
diff --git a/content/test/data/gpu/webgpu-import-video.html b/content/test/data/gpu/webgpu-import-video.html
index b6ac22b..a4ad2da 100644
--- a/content/test/data/gpu/webgpu-import-video.html
+++ b/content/test/data/gpu/webgpu-import-video.html
@@ -62,7 +62,7 @@
   @location(0) fragUV : vec2<f32>;
 };
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) idx : u32) -> VertexOutput {
   var pos = array<vec3<f32>, 6>(
     vec3<f32>( 1.0,  1.0, 0.0),
@@ -97,7 +97,7 @@
 @binding(1) @group(0) var myTexture: texture_external;
 @binding(2) @group(0) var myTexture2: texture_external;
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV : vec2<f32>) -> @location(0) vec4<f32> {
   var result : vec4<f32>;
   if (fragUV.y <= 1.0) {
@@ -173,4 +173,4 @@
         requestAnimationFrame(frame);
     </script>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/content/test/gpu/gpu_tests/gpu_helper.py b/content/test/gpu/gpu_tests/gpu_helper.py
index 5963fa9..5f16ce5 100644
--- a/content/test/gpu/gpu_tests/gpu_helper.py
+++ b/content/test/gpu/gpu_tests/gpu_helper.py
@@ -149,7 +149,6 @@
   retval = 'skia-renderer-disabled'
   skia_renderer_enabled = (
       gpu_feature_status
-      and gpu_feature_status.get('skia_renderer') == 'enabled_on'
       and gpu_feature_status.get('gpu_compositing') == 'enabled')
   if skia_renderer_enabled:
     if HasDawnSkiaRenderer(extra_browser_args):
diff --git a/content/test/test_aggregation_service_impl.cc b/content/test/test_aggregation_service_impl.cc
index 6462c49..54f26d6 100644
--- a/content/test/test_aggregation_service_impl.cc
+++ b/content/test/test_aggregation_service_impl.cc
@@ -130,12 +130,12 @@
 
   AggregatableReportSharedInfo shared_info(
       /*scheduled_report_time=*/base::Time::Now() + base::Seconds(30),
-      std::move(request.privacy_budget_key),
       /*report_id=*/base::GUID::GenerateRandomV4(),
       std::move(request.reporting_origin),
       request.is_debug_mode_enabled
           ? AggregatableReportSharedInfo::DebugMode::kEnabled
-          : AggregatableReportSharedInfo::DebugMode::kDisabled);
+          : AggregatableReportSharedInfo::DebugMode::kDisabled,
+      std::move(request.additional_fields));
 
   absl::optional<AggregatableReportRequest> report_request =
       AggregatableReportRequest::CreateForTesting(
diff --git a/content/web_test/browser/web_test_control_host.cc b/content/web_test/browser/web_test_control_host.cc
index e314625..7b224cf 100644
--- a/content/web_test/browser/web_test_control_host.cc
+++ b/content/web_test/browser/web_test_control_host.cc
@@ -1349,10 +1349,6 @@
     std::vector<unsigned char> png;
 
     bool discard_transparency = true;
-    if (base::CommandLine::ForCurrentProcess()->HasSwitch(
-            switches::kForceOverlayFullscreenVideo)) {
-      discard_transparency = false;
-    }
     if (web_test_runtime_flags().dump_drag_image())
       discard_transparency = false;
 
diff --git a/crypto/encryptor.cc b/crypto/encryptor.cc
index 0d21db33..ea12e71 100644
--- a/crypto/encryptor.cc
+++ b/crypto/encryptor.cc
@@ -64,24 +64,20 @@
 }
 
 bool Encryptor::Encrypt(base::StringPiece plaintext, std::string* ciphertext) {
-  CHECK(!plaintext.empty() || mode_ == CBC);
   return CryptString(/*do_encrypt=*/true, plaintext, ciphertext);
 }
 
 bool Encryptor::Encrypt(base::span<const uint8_t> plaintext,
                         std::vector<uint8_t>* ciphertext) {
-  CHECK(!plaintext.empty() || mode_ == CBC);
   return CryptBytes(/*do_encrypt=*/true, plaintext, ciphertext);
 }
 
 bool Encryptor::Decrypt(base::StringPiece ciphertext, std::string* plaintext) {
-  CHECK(!ciphertext.empty());
   return CryptString(/*do_encrypt=*/false, ciphertext, plaintext);
 }
 
 bool Encryptor::Decrypt(base::span<const uint8_t> ciphertext,
                         std::vector<uint8_t>* plaintext) {
-  CHECK(!ciphertext.empty());
   return CryptBytes(/*do_encrypt=*/false, ciphertext, plaintext);
 }
 
@@ -102,18 +98,13 @@
 bool Encryptor::CryptString(bool do_encrypt,
                             base::StringPiece input,
                             std::string* output) {
-  size_t out_size = MaxOutput(do_encrypt, input.size());
-  CHECK_GT(out_size + 1, out_size);  // Overflow
-  std::string result;
-  uint8_t* out_ptr =
-      reinterpret_cast<uint8_t*>(base::WriteInto(&result, out_size + 1));
-
+  std::string result(MaxOutput(do_encrypt, input.size()), '\0');
   absl::optional<size_t> len =
       (mode_ == CTR)
           ? CryptCTR(do_encrypt, base::as_bytes(base::make_span(input)),
-                     base::make_span(out_ptr, out_size))
+                     base::as_writable_bytes(base::make_span(result)))
           : Crypt(do_encrypt, base::as_bytes(base::make_span(input)),
-                  base::make_span(out_ptr, out_size));
+                  base::as_writable_bytes(base::make_span(result)));
   if (!len)
     return false;
 
diff --git a/crypto/encryptor_unittest.cc b/crypto/encryptor_unittest.cc
index 93f8447d..fec60f50 100644
--- a/crypto/encryptor_unittest.cc
+++ b/crypto/encryptor_unittest.cc
@@ -9,6 +9,7 @@
 #include <memory>
 #include <string>
 
+#include "base/containers/span.h"
 #include "base/strings/string_number_conversions.h"
 #include "crypto/symmetric_key.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -466,7 +467,7 @@
   EXPECT_FALSE(encryptor.Init(sym_key.get(), crypto::Encryptor::CBC, iv));
 }
 
-TEST(EncryptorTest, EmptyEncrypt) {
+TEST(EncryptorTest, EmptyEncryptCBC) {
   std::string key = "128=SixteenBytes";
   std::string iv = "Sweet Sixteen IV";
   std::string plaintext;
@@ -477,7 +478,7 @@
   ASSERT_TRUE(sym_key.get());
 
   crypto::Encryptor encryptor;
-  // The IV must be exactly as long a the cipher block size.
+  // The IV must be exactly as long as the cipher block size.
   EXPECT_EQ(16U, iv.size());
   EXPECT_TRUE(encryptor.Init(sym_key.get(), crypto::Encryptor::CBC, iv));
 
@@ -485,6 +486,64 @@
   EXPECT_TRUE(encryptor.Encrypt(plaintext, &ciphertext));
   EXPECT_EQ(expected_ciphertext_hex, base::HexEncode(ciphertext.data(),
                                                      ciphertext.size()));
+
+  std::string decrypted;
+  EXPECT_TRUE(encryptor.Decrypt(ciphertext, &decrypted));
+  EXPECT_EQ(decrypted, plaintext);
+
+  // Decrypting the empty string should fail. Our formulation of CBC expects a
+  // full block of padding for CBC.
+  EXPECT_FALSE(encryptor.Decrypt(std::string(), &decrypted));
+
+  // Repeat the test with the byte-based API.
+  EXPECT_TRUE(encryptor.Init(sym_key.get(), crypto::Encryptor::CBC, iv));
+  std::vector<uint8_t> ciphertext_bytes;
+  EXPECT_TRUE(
+      encryptor.Encrypt(base::span<const uint8_t>(), &ciphertext_bytes));
+  EXPECT_EQ(expected_ciphertext_hex, base::HexEncode(ciphertext_bytes));
+
+  std::vector<uint8_t> decrypted_bytes;
+  EXPECT_TRUE(encryptor.Decrypt(ciphertext_bytes, &decrypted_bytes));
+  EXPECT_EQ(decrypted_bytes.size(), 0u);
+
+  // Decrypting the empty string should fail. Our formulation of CBC expects a
+  // full block of padding for CBC.
+  EXPECT_FALSE(
+      encryptor.Decrypt(base::span<const uint8_t>(), &decrypted_bytes));
+}
+
+TEST(EncryptorTest, EmptyEncryptCTR) {
+  std::string key = "128=SixteenBytes";
+  std::string iv = "Sweet Sixteen IV";
+  std::string plaintext;
+  std::string expected_ciphertext;
+
+  std::unique_ptr<crypto::SymmetricKey> sym_key(
+      crypto::SymmetricKey::Import(crypto::SymmetricKey::AES, key));
+  ASSERT_TRUE(sym_key.get());
+
+  crypto::Encryptor encryptor;
+  EXPECT_TRUE(encryptor.Init(sym_key.get(), crypto::Encryptor::CTR, ""));
+  ASSERT_TRUE(encryptor.SetCounter(iv));
+
+  std::string ciphertext;
+  EXPECT_TRUE(encryptor.Encrypt(plaintext, &ciphertext));
+  EXPECT_EQ(expected_ciphertext, ciphertext);
+
+  std::string decrypted;
+  EXPECT_TRUE(encryptor.Decrypt(ciphertext, &decrypted));
+  EXPECT_EQ(decrypted, plaintext);
+
+  // Repeat the test with the byte-based API.
+  ASSERT_TRUE(encryptor.SetCounter(iv));
+  std::vector<uint8_t> ciphertext_bytes;
+  EXPECT_TRUE(
+      encryptor.Encrypt(base::span<const uint8_t>(), &ciphertext_bytes));
+  EXPECT_EQ(ciphertext_bytes.size(), 0u);
+
+  std::vector<uint8_t> decrypted_bytes;
+  EXPECT_TRUE(encryptor.Decrypt(base::span<const uint8_t>(), &decrypted_bytes));
+  EXPECT_EQ(decrypted_bytes.size(), 0u);
 }
 
 TEST(EncryptorTest, CipherTextNotMultipleOfBlockSize) {
diff --git a/docs/frame_trees.md b/docs/frame_trees.md
index 26e9b62e1..68859a9 100644
--- a/docs/frame_trees.md
+++ b/docs/frame_trees.md
@@ -22,7 +22,8 @@
 Building on the concept above that a `FrameTree` can have an embedded
 `FrameTree` (and many nesting levels of them), there is the concept of
 the `OutermostMainFrame`. The OutermostMainFrame is the main frame (root)
-of a FrameTree that is not embedded in other FrameTrees.[^1]
+of a FrameTree that is not embedded in other FrameTrees.
+[See footnote 1.](#footnote_1)
 
 So that does mean there can be __multiple main frames__ in a displayed
 tab to the user. For features like `fencedframes` the inner `FrameTree`
@@ -31,10 +32,11 @@
 To determine whether something is a main frame `RenderFrameHost::GetParent`
 is typically used. Likewise there is a `RenderFrameHost::GetParentOrOuterDocument` to determine if something is an `OutermostMainFrame`.
 
+```
 Example Frame Tree:
     A
      B (iframe)
-     C (fenced frame - placeholder frame)[^2]
+     C (fenced frame - placeholder frame) [See footnote 2.]
       C* (main frame in fenced frame).
 
     C* GetParent returns null.
@@ -42,6 +44,7 @@
     C GetParent & GetParentOrOuterDocument returns A.
     B GetParent & GetParentOrOuterDocument returns A.
     A GetParent & GetParentOrOuterDocument returns nullptr.
+```
 
 ## Can I have multiple outermost main frames?
 
@@ -71,11 +74,13 @@
 navigating, a `Page` is restored from the `BackForwardCache` or from the
 prendering pages.
 
-[^1] GuestViews (embedding of a WebContents inside another WebContents) are
+## Footnotes
+
+<a name="footnote_1"></a>1: GuestViews (embedding of a WebContents inside another WebContents) are
 considered embedded FrameTrees as well. However for consideration of
 OutermostMainFrames (ie. GetParentOrOuterDocument, Primary page) they do not
 escape the WebContents boundary because of the logical embedding boundary.
 
-[^2] The placeholder RenderFrameHost is generally not exposed outside
+<a name="footnote_2"></a>2: The placeholder RenderFrameHost is generally not exposed outside
 of the content boundary. Iteration APIs such as ForEachRenderFrameHost
 do not visit this node.
diff --git a/docs/fuchsia/gtests.md b/docs/fuchsia/gtests.md
index b0da070..67c56da 100644
--- a/docs/fuchsia/gtests.md
+++ b/docs/fuchsia/gtests.md
@@ -108,7 +108,7 @@
 
 ```bash
 $ out/fuchsia/bin/run_base_unittests -d \
-  --host=localhost --ssh-config=/path/to/ssh/config
+  --host=::1 --port=8022 --ssh-config=/path/to/ssh/config
 ```
 
 ## Troubleshooting a test
diff --git a/docs/process_model_and_site_isolation.md b/docs/process_model_and_site_isolation.md
new file mode 100644
index 0000000..c5afd44
--- /dev/null
+++ b/docs/process_model_and_site_isolation.md
@@ -0,0 +1,529 @@
+# Process Model and Site Isolation
+
+As the early Web matured, web sites evolved from simple documents to active
+programs, changing the web browser's role from a simple document renderer to an
+operating system for programs. Modern browsers like Chromium use multiple
+operating system processes to manage this workload, improving stability,
+security, and performance.
+
+Chromium's **process model** determines how documents, workers, and other web
+content are divided into processes. First, the process model must identify
+which parts of a "program" on the web need to coexist in a single process.
+Somewhat surprisingly, a program on the web is not a single document plus its
+subresources, but rather a group of same (or similar) origin documents that can
+fully access each other's contents. Once these atomic groups are defined, the
+process model can then decide which groups will share a process. These
+decisions can be tuned based on platform, available resources, etc, to achieve
+the right level of isolation for different scenarios.
+
+This document outlines the goals and design of Chromium's process model and the
+various ways it is used today, including its support for Site Isolation.
+
+[TOC]
+
+
+## Goals
+
+At a high level, Chromium aims to use separate processes for different instances
+of web sites when possible. A **web site instance** is a group of documents or
+workers that must share a process with each other to support their needs, such
+as cross-document scripting. (This roughly corresponds to an "[agent
+cluster](https://html.spec.whatwg.org/multipage/webappapis.html#integration-with-the-javascript-agent-cluster-formalism)"
+from the HTML Standard, as described below.)
+
+For stability, putting web site instances in separate processes limits the
+impact of a renderer process crash or hang, allowing other content to continue
+working. For performance, this allows different web site instances to run in
+parallel with better responsiveness, at the cost of some memory overhead for
+each process.
+
+For security, strictly using separate processes for different web sites allows
+significantly stronger defenses against malicious web sites. In addition to
+running web content within a low-privilege
+[sandbox](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/design/sandbox.md)
+that limits an attacker's access to the user's machine, Chromium's
+multi-process architecture can support [Site
+Isolation](https://www.chromium.org/Home/chromium-security/site-isolation),
+where each renderer process is only allowed to access data from a single site.
+Site Isolation involves:
+
+* **Locked Renderer Processes**: A renderer process can be limited to documents
+    and workers from a single web site or origin, even if such documents are in
+    iframes.
+* **Browser-Enforced Restrictions**: The privileged browser process can monitor
+    IPC messages from locked processes to limit their actions or access to site
+    data (e.g., using ChildProcessSecurityPolicy::CanAccessDataForOrigin).
+    This [prevents compromised renderer
+    processes](https://chromium.googlesource.com/chromium/src/+/main/docs/security/compromised-renderers.md)
+    from asking for cross-site data, using permissions granted to other sites,
+    etc.
+* **Network Response Limitations**: Chromium can ensure that locked renderer
+    processes are only allowed to receive sensitive data (e.g., HTML, XML,
+    JSON) from their designated site or origin, while still allowing
+    cross-origin subresource requests (e.g., images, media) as needed for
+    compatibility. This is achieved using [Cross-Origin Read
+    Blocking](https://www.chromium.org/Home/chromium-security/corb-for-developers)
+    (CORB) or [Opaque Response Blocking](https://github.com/annevk/orb) (ORB).
+
+
+## Abstractions and Implementations
+
+Chromium uses several abstractions to track which documents and workers need
+synchronous access to each other, as a constraint for process model decisions.
+
+* **Security Principal** (implemented by
+    [SiteInfo](https://source.chromium.org/chromium/chromium/src/+/main:content/browser/site_info.h;drc=c79153d6f931dbe2ce2c992962512eaca6766623;l=22)):
+    In security terminology, a **principal** is an entity with certain
+    privileges. Chromium associates a security principal with execution
+    contexts (e.g., documents, workers) to track which data their process is
+    allowed to access. This principal is typically a
+    "[site](https://html.spec.whatwg.org/multipage/origin.html#site)" (i.e.,
+    scheme plus eTLD+1, such as `https://example.com`), because web pages can
+    modify their document.domain value to access other same-site documents, and
+    not just same-origin documents. In some cases, though, the principal may be
+    an origin or have a coarser granularity (e.g., `file:`). The SiteInfo class
+    tracks all values that identify a security principal.
+
+* **Principal Instance** (implemented by
+    [SiteInstance](https://source.chromium.org/chromium/chromium/src/+/main:content/public/browser/site_instance.h;drc=858df4ab8b73f2418f51385954760f2154512029;l=32)):
+    A principal instance is the core unit of Chromium's process model. Any two
+    documents with the same principal in the same browsing context group
+    (see below) must live in the same process, because they have synchronous
+    access to each other's content. This access includes cross-document
+    scripting and synchronous communication through shared memory (e.g.,
+    SharedArrayBuffer). If such documents were in different processes, data
+    races or deadlocks would occur if they concurrently accessed objects in
+    their shared DOM or JavaScript heaps.
+
+    This roughly corresponds to the [agent
+    cluster](https://html.spec.whatwg.org/multipage/webappapis.html#integration-with-the-javascript-agent-cluster-formalism)
+    concept in the spec, although they do not match exactly: multiple agent
+    clusters may sometimes share a principal instance (e.g., with `data:` URLs
+    in the same principal instance as their creator), and principals may keep
+    track of more factors than [agent cluster
+    keys](https://html.spec.whatwg.org/multipage/webappapis.html#agent-cluster-key)
+    (e.g., whether the StoragePartition differs).
+
+    Note that the user may visit multiple instances of a given principal in the
+    browser, sometimes in unrelated tabs (i.e., separate browsing context
+    groups). These separate instances do not need synchronous access to each
+    other and can safely run in separate processes.
+
+* **Browsing Context Group** (implemented by
+    [BrowsingInstance](https://source.chromium.org/chromium/chromium/src/+/main:content/browser/browsing_instance.h;drc=df269acf8de952b68b2fbec49365457ff1f6266b;l=34)):
+    A browsing context group is a group of tabs and frames (i.e., containers of
+    documents) that have references to each other (e.g., frames within the same
+    page, popups with window.opener references, etc). Any two documents within
+    a browsing context group may find each other by name, so it is important
+    that any same-principal documents in the group live in the same process. In
+    other words, there is only one principal instance per principal in a given
+    browsing context group. Note that a tab may change its browsing context
+    group on some types of navigations (e.g., due to a
+    Cross-Origin-Opener-Policy header, browser-initiated cross-site
+    navigations, and other reasons).
+
+From an implementation perspective, Chromium keeps track of the SiteInstance of
+each RenderFrameHost, to determine which renderer process to use for the
+RenderFrameHost's documents. SiteInstances are also tracked for workers, such
+as ServiceWorker or SharedWorkerHost.
+
+
+## Modes and Availability
+
+### Full Site Isolation (site-per-process)
+
+_Used on: Desktop platforms (Windows, Mac, Linux, ChromeOS)._
+
+In (one-)site-per-process mode, each process is locked to documents from a
+single site. Sites are defined as scheme plus eTLD+1, since different origins
+within a given site may have synchronous access to each other if they each
+modify their document.domain. This mode provides all sites protection against
+compromised renderers and Spectre-like attacks, without breaking backwards
+compatibility.
+
+This mode can be enabled on Android using
+`chrome://flags/#enable-site-per-process`.
+
+
+### Partial Site Isolation
+
+_Used on: Chrome for Android (2+ GB RAM)._
+
+On platforms like Android with more significant resource constraints, Chromium
+only uses dedicated (locked) processes for some sites, putting the rest in
+unlocked processes that can be used for any web site. (Note that there is a
+threshold of about 2 GB of device RAM required to support any level of Site
+Isolation on Android.)
+
+Locked processes are only allowed to access data from their own site. Unlocked
+processes can generally access data from any site that does not require a
+locked process. Chromium usually creates one unlocked process per browsing
+context group.
+
+Currently, several heuristics are used to isolate the sites that are most likely
+to have user-specific information. As on all platforms, privileged pages like
+WebUI are always isolated. Chromium also isolates sites that users tend to log
+into in general, as well as sites on which a given user has entered a password,
+logged in via an OAuth provider, or encountered a Cross-Origin-Opener-Policy
+(COOP) header.
+
+
+### No Site Isolation
+
+_Used on: Low-memory Chrome for Android (<2 GB RAM), Android WebView, Chrome for
+iOS, Chrome Apps `<webview>`._
+
+On some platforms, Site Isolation is not available, due to implementation or
+resource constraints.
+
+* On Android devices with less than 2 GB of RAM, Site Isolation is disabled to
+  avoid requiring multiple renderer processes in a given tab (for out-of-process
+  iframes). Cross-process navigations in the main frame are still possible
+  (e.g., for browser-initiated cross-site navigations with no other pages in the
+  browsing context group, when a new browsing context group may be created).
+* Android WebView does not yet support multiple renderer processes or
+  out-of-process iframes.
+* Chrome for iOS uses WebKit, which does not currently have support for
+  out-of-process iframes or Site Isolation.
+* The `<webview>` tag in Chrome Apps does not yet support Site Isolation.  See
+  bug [1267977](https://crbug.com/1267977).
+
+
+### Origin Isolation
+
+_Available on: Desktop platforms, Chrome for Android (2+ GB RAM)._
+
+There are several optional ways to lock processes at an origin granularity
+rather than a site granularity, with various tradeoffs for compatibility
+(e.g., breaking pages that modify document.domain). These are available on
+platforms that support some level of Site Isolation.
+
+* **Built-in**: //content embedders can designate particular origins that
+    require isolation from the rest of their site, using
+    ContentBrowserClient::GetOriginsRequiringDedicatedProcess.
+* **Configurable**: Users and administrators can list particular origins that
+    should be isolated from the rest of their site, using the command line
+    (`--isolate-origins=`...), `chrome://flags#isolate-origins`, or
+    [enterprise policy](https://support.google.com/chrome/a/answer/7581529)
+    ([IsolateOrigins](https://chromeenterprise.google/policies/#IsolateOrigins)
+    or
+    [IsolateOriginsAndroid](https://chromeenterprise.google/policies/#IsolateOriginsAndroid)).
+* **Opt-in**: The [Origin-Agent-Cluster](https://web.dev/origin-agent-cluster)
+    HTTP response header can be used by web developers to hint to the browser
+    that an origin locked process can be used. This is not a security guarantee
+    and may not always be honored (e.g., to keep all same-origin documents
+    consistent within a given browsing context group), though it allows finer
+    grained isolation in the common case. Note that there are plans to enable
+    [Origin-Agent-Cluster by default](https://github.com/mikewest/deprecating-document-domain),
+    effectively disabling changes to document.domain.
+
+
+### CrossOriginIsolated
+
+Certain powerful web platform features now require an opt-in
+[CrossOriginIsolated](https://web.dev/coop-coep/) mode, which ensures that all
+cross-origin content (e.g., documents and workers, as well as subresources like
+media or scripts) consents to being loaded in the same process as an origin
+using these features. This opt-in is required because these powerful features
+(e.g., SharedArrayBuffers) can be used for very precise timing, which can make
+attacks that leak data from the process (e.g., using Spectre or other transient
+execution attacks) more effective. This mode is important because not all
+browsers support out-of-process iframes for cross-origin documents, and not all
+cross-origin subresources can be put in a separate process.
+
+CrossOriginIsolated mode requires the main document to have
+Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy headers. These
+headers impose restrictions on all content that may load within the page or
+process (e.g., requiring similar headers on subframes, and CORS, CORP, or a
+credentialless mode for subresources).
+
+
+### Historical Modes
+
+Before Site Isolation was introduced, Chromium initially supported a few other
+process models that affected the number of renderer processes.
+
+* **Process-per-site-instance**: This model was the default when Chromium first
+    launched. It used a new process when navigating to a different site in some
+    scenarios (e.g., via the address bar but not link clicks), as well as when
+    visiting different instances of the same site in different tabs. At the
+    time, cross-site subframes stayed in the same process as their parent
+    frames.
+* **Process-per-site**: This model consolidated all instances of a given site
+    into a single process (per profile), to reduce the process count. It
+    generally led to poor usability when a single process was used for too many
+    tabs. This mode is still used for certain limited cases (e.g., the New Tab
+    Page) to reduce the process count and process creation latency. It is also
+    used for extensions to allow synchronous scripting from a background page.
+    Note that having a single process for a site might not be guaranteed (e.g.,
+    due to multiple profiles, or races).
+* **Process-per-tab**: This model used a separate process for each browsing
+    context group (i.e., possibly multiple related tabs), but did not attempt
+    to switch processes on cross-site navigations. In practice, though, this
+    model still needed to swap processes for privileged pages like `chrome://`
+    URLs.
+* **Single process**: Chromium also allows a single process model which runs all
+    of the browser and renderer code in a single OS process. This is generally
+    not a safe or robust process model, since it prevents the use of the
+    sandbox and cannot survive any crash in renderer process code. It is mainly
+    used for older low-resource Android WebView scenarios, and for debugging or
+    testing.
+
+
+## Visualizations
+
+Chromium provides several ways to view the current state of the process model:
+
+* **Chromium's Task Manager**: This can be found under "More Tools" in the menu,
+    and shows live resource usage for each of Chromium's processes. The Task
+    Manager also shows which documents and workers are grouped together in a
+    given process: only the first row of a given group displays process ID and
+    most statistics, and all rows of a group are highlighted when one is
+    clicked. Note that double clicking any row attempts to switch to the tab it
+    is associated with. In the default sort order (i.e., when clicking the Task
+    column header until the up/down triangle disappears), processes for
+    subframes are listed under the process for their tab when possible,
+    although this may not be possible if subframes from multiple tabs are in a
+    given process.
+* **`chrome://process-internals/#web-contents`**: This is an internal diagnostic
+    page which shows information about the SiteInstances and processes for each
+    open document.
+* **`chrome://discards/graph`**: This is an internal diagnostic page that
+    includes a visualization of how the open documents and workers map to
+    processes. Clicking on any node provides more details.
+
+
+## Process Reuse
+
+For performance, Chromium attempts to strike a balance between using more
+processes to improve parallelism and using fewer processes to conserve memory.
+There are some cases where a new process is always required (e.g., for a
+cross-site page when Site Isolation is enabled), and other cases where
+heuristics can determine whether to create a new process or reuse an old one.
+Generally, process reuse can only happen in suitable cases, such as within a
+given profile or respecting a process lock.  Several factors go into this
+decision.
+
+* **Suitability**: Several properties are global to a given renderer process:
+    profile (including Incognito), StoragePartition (which may differ between
+    tabs and Chrome Apps), and crossOriginIsolated status. For example, two
+    documents from different profiles or StoragePartitions can never share the
+    same renderer process. The ProcessLock (described below) also restricts
+    which documents are allowed in a process.
+* **Soft Process Limit**: On desktop platforms, Chromium sets a "soft" process
+    limit based on the memory available on a given client. While this can be
+    exceeded (e.g., if Site Isolation is enabled and the user has more open
+    sites than the limit), Chromium makes an attempt to start randomly reusing
+    same-site processes when over this limit. For example, if the limit is 100
+    processes and the user has 50 open tabs to `example.com` and 50 open tabs to
+    example.org, then a new `example.com` tab will share a process with a random
+    existing `example.com` tab, while a chromium.org tab will create a 101st
+    process. Note that Chromium on Android does not set this soft process
+    limit, and instead relies on the OS to discard processes.
+* **Aggressive Reuse**: For some cases (including on Android), Chromium will
+    aggressively look for existing same-site processes to reuse even before
+    reaching the process limit. Out-of-process iframes (OOPIFs) use this
+    approach, such that an `example.com` iframe in a cross-site page will be
+    placed in an existing `example.com` process (in any browsing context group),
+    even if the process limit has not been reached. This keeps the process
+    count lower, based on the assumption that most iframes are less resource
+    demanding than top-level documents. Similarly, ServiceWorkers are generally
+    placed in the same process as a document that is likely to rely on them.
+* **Extensions**: Chromium ensures that extensions do not share a process with
+    each other or with web pages, but also that a large number of extensions
+    will not consume the entire soft process limit, forcing same-site web pages
+    into too few processes. Chromium only allows extensions to consume [one
+    third](https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc;drc=8d6a246c9be4f6b731dc7f6e680b7d5e13a512b5;l=454-458)
+    of the process limit before disregarding further extension processes from
+    the process limit computation.
+* **Process-per-site**: As noted above, pages like the New Tab Page (NTP) and
+    extensions use a model where all instances of the page are placed in the
+    same process.
+
+
+## Process Locks
+
+Chromium assigns a
+[ProcessLock](https://source.chromium.org/chromium/chromium/src/+/main:content/browser/process_lock.h;drc=47457a6923c0527261d0503998cbeb7de9bab489;l=19)
+to some or all RenderProcessHosts, to restrict which sites are allowed to load
+in the process and which data the process has access to. A RenderProcessHost is
+an object in the browser process that represents a given renderer process,
+though it can be reused if that renderer process crashes and is restarted. Some
+ProcessLock cases are used on all platforms (e.g., `chrome://` URLs are never
+allowed to share a process with other sites), while other cases may depend on
+the mode (e.g., Full Site Isolation requires all processes to be locked, once
+content has been loaded in the process).
+
+ProcessLocks may have varying granularity, such as a single site
+(e.g., `https://example.com`), a single origin
+(e.g., `https://accounts.example.com`), an entire scheme (e.g., `file://`), or
+a special "allow-any-site" value for processes allowed to host multiple sites
+(which may have other restrictions, such as whether they are
+crossOriginIsolated). RenderProcessHosts begin with an "invalid" or unlocked
+ProcessLock before one is assigned.
+
+ProcessLocks are always assigned before any content is loaded in a renderer
+process, either at the start of a navigation or at OnResponseStarted time, just
+before a navigation commits. Note that a process may initially receive
+an "allow-any-site" lock for some empty document schemes (e.g., `about:blank`),
+which may later be refined to a site-specific lock when the first actual
+content commits. Once a site-specific lock is assigned, it remains constant for
+the lifetime of the RenderProcessHost, even if the renderer process itself
+exits and is recreated.
+
+Note that content may be allowed in a locked process based on its origin
+(e.g., an `about:blank` page with an inherited `https://example.com` origin is
+allowed in a process locked to `https://example.com`). Also, some opaque origin
+cases are allowed into a locked process as well, such as `data:` URLs created
+within that process, or same-site sandboxed iframes.
+
+
+## Special Cases
+
+There are many special cases to consider in Chromium's process model, which may
+affect invariants or how features are designed.
+
+* **WebUI**: Pages like `chrome://settings` are considered part of Chromium and
+    are highly privileged, usually hosted in the `chrome://` scheme. They are
+    strictly isolated from non-WebUI pages as well as other types of WebUI
+    pages (based on "site"), on all platforms. They are also generally not
+    allowed to load content from the network (apart from a shrinking
+    [list](https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc;drc=3344b61f7c7f06cf96069751c3bd64d8ec3e3428;l=1405)
+    of allowlisted pages), unless it is from a separate unprivileged
+    `chrome-untrusted://` document. Additionally, normal web pages are not
+    allowed to navigate to WebUI pages, which makes privilege escalation
+    attacks more difficult.
+* **New Tab Page**: On desktop platforms, the default "local" NTP is a WebUI
+    page using process-per-site mode, which loads content from the network via
+    `chrome-untrusted://` iframes. Third party NTPs are also possible, which
+    load a "remote" non-WebUI web page with limited privileges. On Android, the
+    NTP is instead a native Android surface with no privileged renderer
+    process. Chrome on Android creates an unused renderer process in the
+    background while the NTP surface is visible, so that the next page can use
+    it.
+* **Extensions**: On desktop platforms, extension documents and workers are
+    semi-privileged and run in dedicated renderer processes. In contrast,
+    extension content scripts run within the same unprivileged web renderer
+    process as the pages they modify, and thus Chrome Extensions need to
+    [treat content scripts as less
+    trustworthy](https://groups.google.com/a/chromium.org/g/chromium-extensions/c/0ei-UCHNm34/m/lDaXwQhzBAAJ).
+    The browser process makes an effort to enforce that renderer processes have
+    access to any extension APIs or capabilities that they attempt to use.
+* **Hosted Apps**: A hosted app is a deprecated type of extension which allows a
+    normal web site to have a special type of renderer process. For example, a
+    hosted app for `https://example.com/app/` will have an "effective URL" that
+    looks like a `chrome-extension://` URL, causing it to be treated
+    differently in the process model. This support may eventually be removed.
+* **Chrome Web Store**: The [Chrome Web
+    Store](https://chrome.google.com/webstore) is a rare example of a privileged
+    web page, to which Chrome grants special APIs for installing extensions.
+    This implementation currently relies on hosted apps.
+* **GuestView**: The Chrome Apps `<webview>` tag and similar cases like
+    MimeHandlerView and ExtensionOptionsGuest embed one WebContents within
+    another. These may use a different process model, such as `<webview>` not
+    yet supporting Site Isolation. (See bug
+    [1267977](https://crbug.com/1267977).) Note that Chrome Apps allow
+    `<webview>` tags to load normal web pages and the app's own `data:` or
+    `chrome-extension://` URLs, but not URLs from other extensions or apps.
+* **Sandboxed iframes**: Documents with the sandbox attribute and without
+    `allow-same-origin` (either iframes or popups) may be same-site with their
+    parent or opener but use an opaque origin. Chromium currently keeps these
+    documents in the same process as their parent or opener, but this may
+    change in bug [510122](https://crbug.com/510122).
+* **`data:` URLs**: Chromium generally keeps documents with `data:` URLs in the
+    same process as the site that created them, since that site has control
+    over their content. The exception is when restoring a previous session, in
+    which case each document with a `data:` URL ends up in its own process.
+* **File URLs**: Chromium currently treats all `file://` URLs as part of the
+    same site. Normal web pages are not allowed to load `file://` URLs, and
+    renderer processes are only granted access to particular `file://` URLs via
+    file chooser dialogs (e.g., for uploads). These URLs may be further isolated
+    from each other in bug [780770](https://crbug.com/780770).
+* **Error Pages**: Chromium uses a special type of process for error pages
+    provided by the browser (as opposed to error pages provided by a web site,
+    like a 404 page), using process-per-site mode to keep all such pages in the
+    same process. Currently this only applies to error pages in a main frame.
+* **Spare Process**: Chromium often creates a spare RenderProcessHost with a
+    live but unlocked renderer process, which is used the next time a renderer
+    process is needed. This avoids the need to wait for a new process to
+    start.
+* **Android WebView**: While Android WebView uses much of the same code as
+    Chromium, it currently only supports a single renderer process in most
+    cases.
+
+
+## Further Reading
+
+Several academic papers have covered topics about Chromium's process model.
+
+[**Security Architecture of the Chromium
+Browser**](http://crypto.stanford.edu/websec/chromium/)
+
+Adam Barth, Collin Jackson, Charles Reis, and The Google Chrome Team. Stanford
+Technical Report, September 2008.
+
+_Abstract:_
+
+Most current web browsers employ a monolithic architecture that combines "the
+user" and "the web" into a single protection domain. An attacker who exploits
+an arbitrary code execution vulnerability in such a browser can steal sensitive
+files or install malware. In this paper, we present the security architecture
+of Chromium, the open-source browser upon which Google Chrome is built.
+Chromium has two modules in separate protection domains: a browser kernel,
+which interacts with the operating system, and a rendering engine, which runs
+with restricted privileges in a sandbox. This architecture helps mitigate
+high-severity attacks without sacrificing compatibility with existing web
+sites. We define a threat model for browser exploits and evaluate how the
+architecture would have mitigated past vulnerabilities.
+
+[**Isolating Web Programs in Modern Browser
+Architectures**](https://research.google.com/pubs/archive/34924.pdf)
+
+Charles Reis, Steven D. Gribble (both authors at UW + Google). Eurosys,
+April 2009.
+
+_Abstract:_
+
+Many of today's web sites contain substantial amounts of client-side code, and
+consequently, they act more like programs than simple documents. This creates
+robustness and performance challenges for web browsers. To give users a robust
+and responsive platform, the browser must identify program boundaries and
+provide isolation between them.
+
+We provide three contributions in this paper. First, we present abstractions of
+web programs and program instances, and we show that these abstractions clarify
+how browser components interact and how appropriate program boundaries can be
+identified. Second, we identify backwards compatibility tradeoffs that
+constrain how web content can be divided into programs without disrupting
+existing web sites. Third, we present a multi-process browser architecture that
+isolates these web program instances from each other, improving fault
+tolerance, resource management, and performance. We discuss how this
+architecture is implemented in Google Chrome, and we provide a quantitative
+performance evaluation examining its benefits and costs.
+
+[**Site Isolation: Process Separation for Web Sites within the
+Browser**](https://www.usenix.org/conference/usenixsecurity19/presentation/reis)
+
+Charles Reis, Alexander Moshchuk, and Nasko Oskov, Google. Usenix Security,
+August 2019.
+
+_Abstract:_
+
+Current production web browsers are multi-process but place different web sites
+in the same renderer process, which is not sufficient to mitigate threats
+present on the web today. With the prevalence of private user data stored on
+web sites, the risk posed by compromised renderer processes, and the advent of
+transient execution attacks like Spectre and Meltdown that can leak data via
+microarchitectural state, it is no longer safe to render documents from
+different web sites in the same process. In this paper, we describe our
+successful deployment of the Site Isolation architecture to all desktop users
+of Google Chrome as a mitigation for process-wide attacks. Site Isolation locks
+each renderer process to documents from a single site and filters certain
+cross-site data from each process. We overcame performance and compatibility
+challenges to adapt a production browser to this new architecture. We find that
+this architecture offers the best path to protection against compromised
+renderer processes and same-process transient execution attacks, despite
+current limitations. Our performance results indicate it is practical to deploy
+this level of isolation while sufficiently preserving compatibility with
+existing web content. Finally, we discuss future directions and how the current
+limitations of Site Isolation might be addressed.
diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc
index d8080f67..a647664b 100644
--- a/gpu/command_buffer/service/webgpu_decoder_impl.cc
+++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc
@@ -1067,7 +1067,7 @@
 #if BUILDFLAG(IS_LINUX)
     callback(WGPURequestAdapterStatus_Unavailable, nullptr,
              "WebGPU on Linux requires command-line flag "
-             "--enable-features=Vulkan,UseSkiaRenderer",
+             "--enable-features=Vulkan",
              userdata);
     return;
 #endif  // BUILDFLAG(IS_LINUX)
diff --git a/gpu/ipc/service/command_buffer_stub.cc b/gpu/ipc/service/command_buffer_stub.cc
index 12277c0..0b2958e 100644
--- a/gpu/ipc/service/command_buffer_stub.cc
+++ b/gpu/ipc/service/command_buffer_stub.cc
@@ -127,7 +127,9 @@
       route_id_(route_id),
       last_flush_id_(0),
       previous_processed_num_(0),
-      wait_set_get_buffer_count_(0) {}
+      wait_set_get_buffer_count_(0) {
+  process_delayed_work_timer_.SetTaskRunner(channel_->task_runner());
+}
 
 CommandBufferStub::~CommandBufferStub() {
   Destroy();
@@ -174,18 +176,6 @@
 }
 
 void CommandBufferStub::PollWork() {
-  // Post another delayed task if we have not yet reached the time at which
-  // we should process delayed work.
-  base::TimeTicks current_time = base::TimeTicks::Now();
-  DCHECK(!process_delayed_work_time_.is_null());
-  if (process_delayed_work_time_ > current_time) {
-    channel_->task_runner()->PostDelayedTask(
-        FROM_HERE, base::BindOnce(&CommandBufferStub::PollWork, AsWeakPtr()),
-        process_delayed_work_time_ - current_time);
-    return;
-  }
-  process_delayed_work_time_ = base::TimeTicks();
-
   PerformWork();
 }
 
@@ -247,10 +237,13 @@
   }
 
   base::TimeTicks current_time = base::TimeTicks::Now();
-  // |process_delayed_work_time_| is set if processing of delayed work is
-  // already scheduled. Just update the time if already scheduled.
-  if (!process_delayed_work_time_.is_null()) {
-    process_delayed_work_time_ = current_time + delay;
+  // Just update the time if already scheduled.
+  if (process_delayed_work_timer_.IsRunning()) {
+    process_delayed_work_timer_.Stop();
+    process_delayed_work_timer_.Start(
+        FROM_HERE, current_time + delay,
+        base::BindOnce(&CommandBufferStub::PollWork, AsWeakPtr()),
+        base::ExactDeadline(true));
     return;
   }
 
@@ -271,10 +264,10 @@
     delay = base::TimeDelta();
   }
 
-  process_delayed_work_time_ = current_time + delay;
-  channel_->task_runner()->PostDelayedTask(
-      FROM_HERE, base::BindOnce(&CommandBufferStub::PollWork, AsWeakPtr()),
-      delay);
+  process_delayed_work_timer_.Start(
+      FROM_HERE, current_time + delay,
+      base::BindOnce(&CommandBufferStub::PollWork, AsWeakPtr()),
+      base::ExactDeadline(true));
 }
 
 bool CommandBufferStub::MakeCurrent() {
diff --git a/gpu/ipc/service/command_buffer_stub.h b/gpu/ipc/service/command_buffer_stub.h
index 2f06894..707cd58 100644
--- a/gpu/ipc/service/command_buffer_stub.h
+++ b/gpu/ipc/service/command_buffer_stub.h
@@ -17,6 +17,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
 #include "base/time/time.h"
+#include "base/timer/timer.h"
 #include "build/build_config.h"
 #include "gpu/command_buffer/common/command_buffer_id.h"
 #include "gpu/command_buffer/common/constants.h"
@@ -316,7 +317,7 @@
 
   base::ObserverList<DestructionObserver>::Unchecked destruction_observers_;
 
-  base::TimeTicks process_delayed_work_time_;
+  base::DeadlineTimer process_delayed_work_timer_;
   uint32_t previous_processed_num_;
   base::TimeTicks last_idle_time_;
 
diff --git a/gpu/ipc/service/gpu_channel_manager.cc b/gpu/ipc/service/gpu_channel_manager.cc
index 04618c0..aeb03c59 100644
--- a/gpu/ipc/service/gpu_channel_manager.cc
+++ b/gpu/ipc/service/gpu_channel_manager.cc
@@ -28,7 +28,6 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/traced_value.h"
 #include "build/build_config.h"
-#include "components/viz/common/features.h"
 #include "gpu/command_buffer/common/context_creation_attribs.h"
 #include "gpu/command_buffer/common/sync_token.h"
 #include "gpu/command_buffer/service/feature_info.h"
@@ -360,18 +359,14 @@
   DCHECK(io_task_runner);
   DCHECK(scheduler);
 
-  const bool using_skia_renderer = features::IsUsingSkiaRenderer();
   const bool enable_gr_shader_cache =
       (gpu_feature_info_.status_values[GPU_FEATURE_TYPE_GPU_RASTERIZATION] ==
-       gpu::kGpuFeatureStatusEnabled) ||
-      using_skia_renderer;
+       gpu::kGpuFeatureStatusEnabled);
   const bool disable_disk_cache =
       gpu_preferences_.disable_gpu_shader_disk_cache;
   if (enable_gr_shader_cache && !disable_disk_cache) {
     gr_shader_cache_.emplace(gpu_preferences.gpu_program_cache_size, this);
-    if (using_skia_renderer) {
-      gr_shader_cache_->CacheClientIdOnDisk(gpu::kDisplayCompositorClientId);
-    }
+    gr_shader_cache_->CacheClientIdOnDisk(gpu::kDisplayCompositorClientId);
   }
 }
 
@@ -816,8 +811,7 @@
     // TODO(crbug.com/1192632): disable robust_resource_initialization for
     // SwANGLE.
     if (gl::GLSurfaceEGL::GetGLDisplayEGL()->GetDisplayType() !=
-            gl::ANGLE_SWIFTSHADER &&
-        features::IsUsingSkiaRenderer()) {
+        gl::ANGLE_SWIFTSHADER) {
       attribs.robust_resource_initialization = false;
     }
 
diff --git a/gpu/ipc/service/gpu_memory_ablation_experiment.cc b/gpu/ipc/service/gpu_memory_ablation_experiment.cc
index 844c34e..bc223a4 100644
--- a/gpu/ipc/service/gpu_memory_ablation_experiment.cc
+++ b/gpu/ipc/service/gpu_memory_ablation_experiment.cc
@@ -12,7 +12,6 @@
 #include "base/task/sequenced_task_runner.h"
 #include "base/time/time.h"
 #include "base/trace_event/common/trace_event_common.h"
-#include "components/viz/common/features.h"
 #include "gpu/command_buffer/common/mailbox.h"
 #include "gpu/command_buffer/common/shared_image_usage.h"
 #include "gpu/command_buffer/service/mailbox_manager_impl.h"
@@ -210,7 +209,7 @@
       channel_manager->mailbox_manager(),
       channel_manager->shared_image_manager(),
       gmb_factory ? gmb_factory->AsImageFactory() : nullptr, this,
-      features::IsUsingSkiaRenderer(),
+      /*enable_wrapped_sk_image=*/true,
       /*is_for_display_compositor=*/false);
 
   rep_factory_ = std::make_unique<SharedImageRepresentationFactory>(
diff --git a/gpu/ipc/service/image_transport_surface_win.cc b/gpu/ipc/service/image_transport_surface_win.cc
index 1aea035..0311c15 100644
--- a/gpu/ipc/service/image_transport_surface_win.cc
+++ b/gpu/ipc/service/image_transport_surface_win.cc
@@ -7,7 +7,6 @@
 #include <memory>
 
 #include "base/win/windows_version.h"
-#include "components/viz/common/features.h"
 #include "gpu/command_buffer/service/feature_info.h"
 #include "gpu/config/gpu_preferences.h"
 #include "gpu/ipc/service/pass_through_image_transport_surface.h"
@@ -34,9 +33,8 @@
   settings.disable_vp_scaling = workarounds.disable_vp_scaling;
   settings.disable_vp_super_resolution =
       workarounds.disable_vp_super_resolution;
-  settings.use_angle_texture_offset = features::IsUsingSkiaRenderer();
+  settings.use_angle_texture_offset = true;
   settings.force_root_surface_full_damage =
-      features::IsUsingSkiaRenderer() &&
       gl::ShouldForceDirectCompositionRootSurfaceFullDamage();
   settings.force_root_surface_full_damage_always =
       workarounds.force_direct_composition_full_damage_always;
diff --git a/gpu/ipc/service/shared_image_stub.cc b/gpu/ipc/service/shared_image_stub.cc
index b5329e1..7877295 100644
--- a/gpu/ipc/service/shared_image_stub.cc
+++ b/gpu/ipc/service/shared_image_stub.cc
@@ -14,7 +14,6 @@
 #include "base/trace_event/memory_dump_manager.h"
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
-#include "components/viz/common/features.h"
 #include "gpu/command_buffer/service/mailbox_manager.h"
 #include "gpu/command_buffer/service/scheduler.h"
 #include "gpu/command_buffer/service/shared_image_factory.h"
@@ -509,7 +508,7 @@
       channel_manager->mailbox_manager(),
       channel_manager->shared_image_manager(),
       gmb_factory ? gmb_factory->AsImageFactory() : nullptr, this,
-      features::IsUsingSkiaRenderer(),
+      /*enable_wrapped_sk_image=*/true,
       /*is_for_display_compositor=*/false);
   return ContextResult::kSuccess;
 }
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg
index 9456232..60f0795 100644
--- a/infra/config/generated/luci/cr-buildbucket.cfg
+++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -54622,12 +54622,11 @@
     builders {
       name: "fuchsia-binary-size"
       swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
+      dimensions: "builder:fuchsia-binary-size"
+      dimensions: "cores:16"
       dimensions: "cpu:x86-64"
       dimensions: "os:Ubuntu-18.04"
       dimensions: "pool:luci.chromium.try"
-      dimensions: "ssd:0"
       exe {
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
         cipd_version: "refs/heads/main"
@@ -54645,6 +54644,7 @@
         '  },'
         '  "$build/goma": {'
         '    "enable_ats": true,'
+        '    "jobs": 150,'
         '    "rpc_extra_params": "?prod",'
         '    "server_host": "goma.chromium.org",'
         '    "use_luci_auth": true'
@@ -76384,9 +76384,9 @@
     builders {
       name: "WebRTC Chromium Linux Tester"
       swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builder:WebRTC Chromium Linux Tester"
       dimensions: "cpu:x86-64"
       dimensions: "os:Ubuntu-18.04"
+      dimensions: "pool:luci.chromium.webrtc.fyi"
       exe {
         cipd_package: "infra/chromium/bootstrapper/${platform}"
         cipd_version: "latest"
@@ -76478,9 +76478,9 @@
     builders {
       name: "WebRTC Chromium Mac Tester"
       swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builder:WebRTC Chromium Mac Tester"
       dimensions: "cpu:x86-64"
-      dimensions: "os:Mac"
+      dimensions: "os:Ubuntu-18.04"
+      dimensions: "pool:luci.chromium.webrtc.fyi"
       exe {
         cipd_package: "infra/chromium/bootstrapper/${platform}"
         cipd_version: "latest"
@@ -76572,9 +76572,9 @@
     builders {
       name: "WebRTC Chromium Win10 Tester"
       swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builder:WebRTC Chromium Win10 Tester"
       dimensions: "cpu:x86-64"
-      dimensions: "os:Windows"
+      dimensions: "os:Ubuntu-18.04"
+      dimensions: "pool:luci.chromium.webrtc.fyi"
       exe {
         cipd_package: "infra/chromium/bootstrapper/${platform}"
         cipd_version: "latest"
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.fuchsia.star b/infra/config/subprojects/chromium/try/tryserver.chromium.fuchsia.star
index 34235c4..fab55880 100644
--- a/infra/config/subprojects/chromium/try/tryserver.chromium.fuchsia.star
+++ b/infra/config/subprojects/chromium/try/tryserver.chromium.fuchsia.star
@@ -46,8 +46,10 @@
 try_.builder(
     name = "fuchsia-binary-size",
     branch_selector = branches.FUCHSIA_LTS_MILESTONE,
-    builderless = True,
+    builderless = not settings.is_main,
+    cores = 16,
     executable = "recipe:binary_size_fuchsia_trybot",
+    goma_jobs = goma.jobs.J150,
     properties = {
         "$build/binary_size": {
             "analyze_targets": [
diff --git a/infra/config/subprojects/webrtc/webrtc.star b/infra/config/subprojects/webrtc/webrtc.star
index df1352f..a3daa8b 100644
--- a/infra/config/subprojects/webrtc/webrtc.star
+++ b/infra/config/subprojects/webrtc/webrtc.star
@@ -61,6 +61,8 @@
 builder(
     name = "WebRTC Chromium Linux Tester",
     triggered_by = ["WebRTC Chromium Linux Builder"],
+    pool = "luci.chromium.webrtc.fyi",
+    auto_builder_dimension = False,
 )
 
 builder(
@@ -71,8 +73,9 @@
 
 builder(
     name = "WebRTC Chromium Mac Tester",
-    os = os.MAC_ANY,
     triggered_by = ["WebRTC Chromium Mac Builder"],
+    pool = "luci.chromium.webrtc.fyi",
+    auto_builder_dimension = False,
 )
 
 builder(
@@ -84,6 +87,7 @@
 
 builder(
     name = "WebRTC Chromium Win10 Tester",
-    os = os.WINDOWS_ANY,
     triggered_by = ["WebRTC Chromium Win Builder"],
+    pool = "luci.chromium.webrtc.fyi",
+    auto_builder_dimension = False,
 )
diff --git a/ios/chrome/app/strings/ios_chromium_strings.grd b/ios/chrome/app/strings/ios_chromium_strings.grd
index 542fd6b..c770daa 100644
--- a/ios/chrome/app/strings/ios_chromium_strings.grd
+++ b/ios/chrome/app/strings/ios_chromium_strings.grd
@@ -584,6 +584,9 @@
       <message name="IDS_IOS_PASSWORD_SUGGESTIONS_TIP" desc="The text of the tip explaining to the user they can tap on Autofill password suggestions">
         Use the password you saved in Chromium to sign in faster
       </message>
+      <message name="IDS_IOS_PASSWORD_SUGGESTIONS_TIP_VOICEOVER" desc="The VoiceOver announcement when the tip explaining to the user they can select Autofill password suggestions." meaning="The VoiceOver announcement when the tip explaining to the user they can select Autofill password suggestions.">
+        Chromium tip. Sign in faster by selecting your saved password at the top of the keyboard.
+      </message>
     </messages>
   </release>
 </grit>
diff --git a/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_PASSWORD_SUGGESTIONS_TIP_VOICEOVER.png.sha1 b/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_PASSWORD_SUGGESTIONS_TIP_VOICEOVER.png.sha1
new file mode 100644
index 0000000..b11d759
--- /dev/null
+++ b/ios/chrome/app/strings/ios_chromium_strings_grd/IDS_IOS_PASSWORD_SUGGESTIONS_TIP_VOICEOVER.png.sha1
@@ -0,0 +1 @@
+d549119fde3390342a06b148f6fb36b3892a33d3
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_google_chrome_strings.grd b/ios/chrome/app/strings/ios_google_chrome_strings.grd
index 5eefc64f..5dbf8ae 100644
--- a/ios/chrome/app/strings/ios_google_chrome_strings.grd
+++ b/ios/chrome/app/strings/ios_google_chrome_strings.grd
@@ -584,6 +584,9 @@
       <message name="IDS_IOS_PASSWORD_SUGGESTIONS_TIP" desc="The text of the tip explaining to the user they can tap on Autofill password suggestions">
         Use the password you saved in Chrome to sign in faster
       </message>
+      <message name="IDS_IOS_PASSWORD_SUGGESTIONS_TIP_VOICEOVER" desc="The VoiceOver announcement when the tip explaining to the user they can select Autofill password suggestions." meaning="The VoiceOver announcement when the tip explaining to the user they can select Autofill password suggestions.">
+        Chrome tip. Sign in faster by selecting your saved password at the top of the keyboard.
+      </message>
     </messages>
   </release>
 </grit>
diff --git a/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_PASSWORD_SUGGESTIONS_TIP_VOICEOVER.png.sha1 b/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_PASSWORD_SUGGESTIONS_TIP_VOICEOVER.png.sha1
new file mode 100644
index 0000000..b11d759
--- /dev/null
+++ b/ios/chrome/app/strings/ios_google_chrome_strings_grd/IDS_IOS_PASSWORD_SUGGESTIONS_TIP_VOICEOVER.png.sha1
@@ -0,0 +1 @@
+d549119fde3390342a06b148f6fb36b3892a33d3
\ 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 05b6214..015e753 100644
--- a/ios/chrome/app/strings/resources/ios_strings_af.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_af.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Bestuur sinkronisering</translation>
 <translation id="1076421457278169141">Kode is geskandeer</translation>
 <translation id="1084365883616172403">Facebook-plasing is voltooi.</translation>
-<translation id="1086486568852410168">Soek met Google Lens</translation>
 <translation id="1103523840287552314">Vertaal <ph name="LANGUAGE" /> altyd</translation>
 <translation id="1104948393051856124">Aanvaar en gaan voort</translation>
 <translation id="110724200315609752">Wissel na oop venster</translation>
@@ -739,6 +738,7 @@
 <translation id="7099761977003084116">Onlangse oortjies</translation>
 <translation id="7102005569666697658">Laai tans af … <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">Versteek</translation>
+<translation id="7108762695052995889">Besoek webwerf</translation>
 <translation id="7133798577887235672">Volle naam en van</translation>
 <translation id="7136892417564438900">Kamera is onbeskikbaar</translation>
 <translation id="7153999225810839758"><ph name="TIME" /> minute om te lees</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb
index b9d55e9..bc74737 100644
--- a/ios/chrome/app/strings/resources/ios_strings_am.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">ስምረትን ያቀናብሩ</translation>
 <translation id="1076421457278169141">ኮድ ተቃኝቷል</translation>
 <translation id="1084365883616172403">የFacebook ልጥፍ ተጠናቅቋል።</translation>
-<translation id="1086486568852410168">በGoogle ሌንስ ይፈልጉ</translation>
 <translation id="1103523840287552314">ሁልጊዜ <ph name="LANGUAGE" />ን መተርጎም</translation>
 <translation id="1104948393051856124">ተቀበል እና ቀጥል</translation>
 <translation id="110724200315609752">ወደ ክፍት መስኮት ቀይር</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
index ab0760f..2e2891cc 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ar.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">إدارة المزامنة</translation>
 <translation id="1076421457278169141">تم مسح الرمز ضوئيًا</translation>
 <translation id="1084365883616172403">‏اكتمل النشر على Facebook.</translation>
-<translation id="1086486568852410168">‏البحث باستخدام "عدسة Google"</translation>
 <translation id="1103523840287552314">ترجمة اللغة <ph name="LANGUAGE" /> دائمًا</translation>
 <translation id="1104948393051856124">القبول والمتابعة</translation>
 <translation id="110724200315609752">التبديل إلى نافذة مفتوحة</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_as.xtb b/ios/chrome/app/strings/resources/ios_strings_as.xtb
index 31ff536..a7edfd0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_as.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_as.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">ছিংক পৰিচালনা কৰক</translation>
 <translation id="1076421457278169141">ক’ড স্কেন কৰা হ’ল</translation>
 <translation id="1084365883616172403">ফেচবুক প’ষ্ট দিয়া হ’ল।</translation>
-<translation id="1086486568852410168">Google Lensৰে সন্ধান কৰক</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> সদাই অনুবাদ কৰক</translation>
 <translation id="1104948393051856124">গ্ৰহণ কৰক আৰু অব্যাহত ৰাখক</translation>
 <translation id="110724200315609752">খোলা থকা ৱিণ্ড’লৈ যাওক</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">আপোনাৰ ব্ৰাউজাৰটো পৰিচালিত। <ph name="BEGIN_LINK" />সবিশেষ<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">পাছৱৰ্ড লুকুৱাওক</translation>
 <translation id="145015347812617860"><ph name="COUNT" />টা বস্তু</translation>
+<translation id="1450170672351507823">সাধাৰণ সুৰক্ষা অন কৰা আছে। আৰু অধিক সুৰক্ষাৰ বাবে বৰ্ধিত সুৰক্ষা ব্যৱহাৰ কৰক।</translation>
 <translation id="149095475893949513">এই ৱেবছাইটটোৱে এটা কনফিগাৰেশ্বনৰ প্ৰ'ফাইল ডাউনল'ড কৰিবলৈ চেষ্টা কৰি আছে।</translation>
 <translation id="1491277525950327607">ছেটিং ট’গ’ল কৰিবলৈ দুবাৰ টিপক।</translation>
 <translation id="1492417797159476138">এই ছাইটটোৰ বাবে আপুনি ইতিমধ্যে এই ব্যৱহাৰকাৰীৰ নামটো ছেভ কৰিছে</translation>
@@ -163,6 +163,7 @@
 <translation id="236977714248711277">ছাইটসমূহে আপোনাৰ ব্ৰাউজিঙৰ অভিজ্ঞতা উন্নত কৰিবলৈ কুকিসমূহ ব্যৱহাৰ কৰিব নোৱাৰে, উদাহৰণস্বৰূপে, আপোনাক ছাইন ইন কৰি ৰাখিবলৈ অথবা আপোনাৰ শ্বপিং কার্টত থকা বস্তুবোৰ মনত ৰাখিবলৈ।
 
 বিভিন্ন ছাইটত আপোনাৰ ব্ৰাউজিঙৰ কার্যকলাপ চাবলৈ ছাইটসমূহে কুকিসমূহ ব্যৱহাৰ কৰিব নোৱাৰে, উদাহৰণস্বৰূপে, বিজ্ঞাপন ব্যক্তিগতকৰণ কৰিবলৈ।</translation>
+<translation id="2375243552872247702">আপোনাৰ বাবে থকা সমল চাওক</translation>
 <translation id="2381405137052800939">মৌলিক</translation>
 <translation id="2386793615875593361">১টা বাছনি কৰা হৈছে</translation>
 <translation id="2421004566762153674">তৃতীয় পক্ষৰ কুকিসমূহ অৱৰোধ কৰা</translation>
@@ -602,6 +603,7 @@
 <translation id="6136914049981179737">ছেকেণ্ড পূর্বে</translation>
 <translation id="6144589619057374135">${url} ইনক’গনিট’ত খোলক</translation>
 <translation id="6149061208933997199">পাছৱৰ্ড ব্যৱহাৰ কৰক</translation>
+<translation id="6152406514676263192">আপোনাৰ আগ্ৰহৰ ওপৰত ভিত্তি কৰি আটাইতকৈ প্ৰাসংগিক সমলৰ বাবে ছিংক কৰক।</translation>
 <translation id="6159839020698489198">ঐচ্ছিক</translation>
 <translation id="6177442314419606057">Chromeত সন্ধান কৰক</translation>
 <translation id="6184086493125982861">টেব দেখুওৱাক</translation>
@@ -749,6 +751,7 @@
 <translation id="7189598951263744875">শ্বেয়াৰ কৰক...</translation>
 <translation id="7192050974311852563">ল’গ কৰা প্ৰক্ৰিয়া আৰম্ভ কৰক</translation>
 <translation id="7203585745079012652">সঁহাৰিটো কৈ দিয়ক</translation>
+<translation id="7207023858769244910">আপোনাৰ আগ্ৰহৰ ওপৰত ভিত্তি কৰি সমল লাভ কৰিবলৈ ছিংক কৰক।</translation>
 <translation id="7207383424303353046">নতুন: Chromeক আপোনাৰ ডিফ’ল্ট ব্ৰাউজাৰ এপ্‌ বনাই ছাইটসমূহ স্বয়ংক্ৰিয়ভাৱে তাত খোলক। <ph name="BEGIN_LINK" />ছেটিংসমূহ খোলক<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">কার্ডৰ উপনাম অমান্য</translation>
 <translation id="722454870747268814">নতুন ইনক’গ্নিট’ টেব</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_az.xtb b/ios/chrome/app/strings/resources/ios_strings_az.xtb
index 33de1c9..3b305b6c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_az.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_az.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Sinxronizasiyanı İdarə Edin</translation>
 <translation id="1076421457278169141">Kod skan olundu</translation>
 <translation id="1084365883616172403">Facebook paylaşımı tamamlandı.</translation>
-<translation id="1086486568852410168">Google Linza ilə axtarın</translation>
 <translation id="1103523840287552314">Həmişə <ph name="LANGUAGE" /> dilinə tərcümə edin</translation>
 <translation id="1104948393051856124">Qəbul edin və Davam edin</translation>
 <translation id="110724200315609752">Açıq Pəncərəyə keçirin</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">Brauzeriniz idarə edilir. <ph name="BEGIN_LINK" />Ətraflı<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">Parolu Gizlədin</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> element</translation>
+<translation id="1450170672351507823">Standart qoruma aktivdir. Təhlükəsizliyi daha da artırmaq üçün Qabaqcıl qoruma işlədin.</translation>
 <translation id="149095475893949513">Bu vebsayt konfiqurasiya profilini endirməyə çalışır.</translation>
 <translation id="1491277525950327607">Ayarı dəyişmək üçün iki dəfə klikləyin</translation>
 <translation id="1492417797159476138">Hazırda bu istifadəçi adını bu sayt üçün yadda saxlamısınız</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_be.xtb b/ios/chrome/app/strings/resources/ios_strings_be.xtb
index 143aa60..ce78830 100644
--- a/ios/chrome/app/strings/resources/ios_strings_be.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_be.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Кіраванне сінхранізацыяй</translation>
 <translation id="1076421457278169141">Код сканіраваны</translation>
 <translation id="1084365883616172403">Публікацыя ў Facebook выканана.</translation>
-<translation id="1086486568852410168">Пошук праз Google Аб'ектыў</translation>
 <translation id="1103523840287552314">Заўсёды перакладаць з мовы: <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Прыняць і працягнуць</translation>
 <translation id="110724200315609752">Пераключыцца на адкрытае акно</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
index d1c94390..28cd025 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Управление на синхронизирането</translation>
 <translation id="1076421457278169141">Кодът бе сканиран</translation>
 <translation id="1084365883616172403">Публикацията във Facebook е завършена.</translation>
-<translation id="1086486568852410168">Търсене с Google Обектив</translation>
 <translation id="1103523840287552314">Винаги да се превежда от <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Приемам и напред</translation>
 <translation id="110724200315609752">Превключване към отворения прозорец</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
index bc1de3bf4c..75be5b7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">সিঙ্ক পরিচালনা করুন</translation>
 <translation id="1076421457278169141">কোড স্ক্যান করা হয়েছে</translation>
 <translation id="1084365883616172403">Facebook পোষ্ট সম্পূর্ণ হয়েছে৷</translation>
-<translation id="1086486568852410168">Google Lens ব্যবহার করে সার্চ করুন</translation>
 <translation id="1103523840287552314">সর্বদা অনুবাদ করুন <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">স্বীকার করুন ও চালিয়ে যান</translation>
 <translation id="110724200315609752">এই উইন্ডো থেকে পাল্টে খুলে রাখা উইন্ডোতে যান</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">আপনার ব্রাউজার ম্যানেজ করা হয়। <ph name="BEGIN_LINK" />বিবরণ<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">পাসওয়ার্ড লুকান</translation>
 <translation id="145015347812617860"><ph name="COUNT" />টি আইটেম</translation>
+<translation id="1450170672351507823">'স্ট্যান্ডার্ড সুরক্ষা' ফিচারটি চালু করা আছে। আরও উন্নত নিরাপত্তার জন্য 'স্ট্যান্ডার্ড সুরক্ষা' ফিচারটি চালু করুন।</translation>
 <translation id="149095475893949513">এই ওয়েবসাইটটি একটি কনফিগারেশন প্রোফাইল ডাউনলোড করার চেষ্টা করছে।</translation>
 <translation id="1491277525950327607">সেটিং টগল করতে দুবার আলতো চাপুন</translation>
 <translation id="1492417797159476138">আপনি আগেই এই সাইটের জন্য ইউজারনেমটি সেভ করেছেন</translation>
@@ -163,6 +163,7 @@
 <translation id="236977714248711277">আপনি যাতে সাইন-ইন হয়ে থাকতে পারেন, তার ব্যবস্থা করা বা শপিং কার্টে আপনার বেছে নেওয়া আইটেমগুলি মনে রাখার মতো আপনার ব্রাউজিং অভিজ্ঞতা আরও ভাল করার জন্য সাইট কুকি ব্যবহার করতে পারবে না।
 
 আপনার জন্য পছন্দমতো বিজ্ঞাপন বেছে নেওয়ার মতো বিভিন্ন ওয়েবসাইট জুড়ে আপনার ব্রাউজিং অ্যাক্টিভিটি দেখার জন্য সাইট কুকি ব্যবহার করতে পারবে না।</translation>
+<translation id="2375243552872247702">আপনার জন্য কন্টেন্ট দেখুন</translation>
 <translation id="2381405137052800939">প্রাথমিক বিষয়াদি</translation>
 <translation id="2386793615875593361">১টি নির্বাচিত</translation>
 <translation id="2421004566762153674">থার্ড-পার্টি কুকি ব্লক করুন</translation>
@@ -603,6 +604,7 @@
 <translation id="6136914049981179737">সেকেন্ড আগে</translation>
 <translation id="6144589619057374135">'ছদ্মবেশী মোডে' ${url} খুলুন</translation>
 <translation id="6149061208933997199">পাসওয়ার্ড ব্যবহার করুন</translation>
+<translation id="6152406514676263192">আপনার আগ্রহের উপর ভিত্তি করে সবচেয়ে প্রাসঙ্গিক কন্টেন্টের জন্য সিঙ্ক করুন।</translation>
 <translation id="6159839020698489198">ঐচ্ছিক</translation>
 <translation id="6177442314419606057">Chrome-এ সার্চ করুন</translation>
 <translation id="6184086493125982861">ট্যাব দেখান</translation>
@@ -750,6 +752,7 @@
 <translation id="7189598951263744875">শেয়ার করুন...</translation>
 <translation id="7192050974311852563">লগ করা শুরু করুন</translation>
 <translation id="7203585745079012652">আবার উত্তরগুলি বলে</translation>
+<translation id="7207023858769244910">আপনার আগ্রহের উপর ভিত্তি করে কন্টেন্ট পেতে সিঙ্ক করুন।</translation>
 <translation id="7207383424303353046">নতুন: Chrome-কে আপনার ডিফল্ট ব্রাউজার অ্যাপ হিসেবে সেট করে এতে অটোমেটিক সাইট খুলুন। <ph name="BEGIN_LINK" />সেটিংস খুলুন<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">কার্ডের বিশেষ নামটি সঠিক নয়</translation>
 <translation id="722454870747268814">নতুন ছদ্মবেশী ট্যাব</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
index 5326795..141a30b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bs.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Upravljanje sinhronizacijom</translation>
 <translation id="1076421457278169141">Kôd je skeniran</translation>
 <translation id="1084365883616172403">Objava na Facebooku je završena.</translation>
-<translation id="1086486568852410168">Pretražujte pomoću Google Objektiva</translation>
 <translation id="1103523840287552314">Uvijek prevodi <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Prihvati i nastavi</translation>
 <translation id="110724200315609752">Prebaci na otvoreni prozor</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">Vašim preglednikom se upravlja. <ph name="BEGIN_LINK" />Detalji<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">Sakrijte lozinku</translation>
 <translation id="145015347812617860">Broj stavki: <ph name="COUNT" /></translation>
+<translation id="1450170672351507823">Standardna zaštita je uključena. Za još veću sigurnost koristite poboljšanu zaštitu.</translation>
 <translation id="149095475893949513">Ova web lokacija pokušava preuzeti profil konfiguracije.</translation>
 <translation id="1491277525950327607">Dodirnite dvaput da prebacite postavku</translation>
 <translation id="1492417797159476138">Već ste sačuvali ovo korisničko ime za ovu web lokaciju</translation>
@@ -739,6 +739,7 @@
 <translation id="7099761977003084116">Nedavne kartice</translation>
 <translation id="7102005569666697658">Preuzimanje… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">Sakrij</translation>
+<translation id="7108762695052995889">Posjeti web lokaciju</translation>
 <translation id="7133798577887235672">Puno ime i prezime</translation>
 <translation id="7136892417564438900">Kamera je nedostupna</translation>
 <translation id="7153999225810839758">Čitanje od <ph name="TIME" /> min</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
index da901b3..e28a5e1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ca.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Gestiona la sincronització</translation>
 <translation id="1076421457278169141">S'ha escanejat el codi</translation>
 <translation id="1084365883616172403">S'ha completat la publicació a Facebook.</translation>
-<translation id="1086486568852410168">Cerca amb Google Lens</translation>
 <translation id="1103523840287552314">Tradueix sempre el text en <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Accepta i continua</translation>
 <translation id="110724200315609752">Canvia a la finestra oberta</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
index e6f2167..7e81722 100644
--- a/ios/chrome/app/strings/resources/ios_strings_cs.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Správa synchronizace</translation>
 <translation id="1076421457278169141">Kód byl naskenován</translation>
 <translation id="1084365883616172403">Příspěvek na Facebook byl odeslán.</translation>
-<translation id="1086486568852410168">Vyhledat pomocí Google Lens</translation>
 <translation id="1103523840287552314">Vždy překládat jazyk <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Přijmout a pokračovat</translation>
 <translation id="110724200315609752">Přepnout na otevřené okno</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cy.xtb b/ios/chrome/app/strings/resources/ios_strings_cy.xtb
index 050bc5b..4dcce17 100644
--- a/ios/chrome/app/strings/resources/ios_strings_cy.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_cy.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Rheoli Cysoni</translation>
 <translation id="1076421457278169141">Mae'r cod wedi'i sganio</translation>
 <translation id="1084365883616172403">Wedi gorffen postio i Facebook.</translation>
-<translation id="1086486568852410168">Chwilio â Google Lens</translation>
 <translation id="1103523840287552314">Cyfieithu <ph name="LANGUAGE" /> bob amser</translation>
 <translation id="1104948393051856124">Derbyn a Pharhau</translation>
 <translation id="110724200315609752">Newid i ffenestr sydd ar Agor</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb
index 1e3a275..6cfe6e8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_da.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Administrer synkronisering</translation>
 <translation id="1076421457278169141">Koden er scannet</translation>
 <translation id="1084365883616172403">Indlæg delt på Facebook.</translation>
-<translation id="1086486568852410168">Søg med Google Lens</translation>
 <translation id="1103523840287552314">Oversæt altid <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Acceptér og fortsæt</translation>
 <translation id="110724200315609752">Skift til åbent vindue</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb
index e04b876..af5f121d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_de.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Synchronisierung verwalten</translation>
 <translation id="1076421457278169141">Code gescannt</translation>
 <translation id="1084365883616172403">Facebook-Beitrag gepostet</translation>
-<translation id="1086486568852410168">Mit Google Lens suchen</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> immer übersetzen</translation>
 <translation id="1104948393051856124">Akzeptieren &amp; weiter</translation>
 <translation id="110724200315609752">Zu offenem Fenster wechseln</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">Dein Browser wird verwaltet. <ph name="BEGIN_LINK" />Details<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">Passwort ausblenden</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> Elemente</translation>
+<translation id="1450170672351507823">Standardschutz ist aktiviert. Der erweiterte Schutz bietet noch mehr Sicherheit.</translation>
 <translation id="149095475893949513">Diese Website versucht, ein Konfigurationsprofil herunterzuladen.</translation>
 <translation id="1491277525950327607">Zum Aktivieren bzw. Deaktivieren doppeltippen</translation>
 <translation id="1492417797159476138">Du hast diesen Nutzernamen für diese Website bereits gespeichert</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb
index 7fb4768..c0c82fb4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_el.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Διαχείριση συγχρονισμού</translation>
 <translation id="1076421457278169141">Ο κώδικας σαρώθηκε</translation>
 <translation id="1084365883616172403">Η ανάρτηση στο Facebook ολοκληρώθηκε.</translation>
-<translation id="1086486568852410168">Αναζήτηση με Google Lens</translation>
 <translation id="1103523840287552314">Να μεταφράζονται πάντα τα <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Αποδοχή και συνέχεια</translation>
 <translation id="110724200315609752">Εναλλαγή σε ανοικτό παράθυρο</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">Το πρόγραμμα περιήγησής σας είναι διαχειριζόμενο. <ph name="BEGIN_LINK" />Λεπτομέρειες<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">Απόκρυψη κωδικού πρόσβασης</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> στοιχεία</translation>
+<translation id="1450170672351507823">Η Βασική προστασία είναι ενεργή. Για ακόμη μεγαλύτερη ασφάλεια, χρησιμοποιήστε τη Βελτιωμένη προστασία.</translation>
 <translation id="149095475893949513">Αυτός ο ιστότοπος προσπαθεί να κατεβάσει ένα προφίλ διαμόρφωσης.</translation>
 <translation id="1491277525950327607">Πατήστε δύο φορές για εναλλαγή της ρύθμισης</translation>
 <translation id="1492417797159476138">Έχετε αποθηκεύσει ήδη αυτό το όνομα χρήστη για αυτόν τον ιστότοπο.</translation>
@@ -740,6 +740,7 @@
 <translation id="7099761977003084116">Πρόσφατες καρτέλες</translation>
 <translation id="7102005569666697658">Λήψη… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">Απόκρυψη</translation>
+<translation id="7108762695052995889">Επίσκεψη στον ιστότοπο</translation>
 <translation id="7133798577887235672">Ονοματεπώνυμο</translation>
 <translation id="7136892417564438900">Η κάμερα δεν είναι διαθέσιμη</translation>
 <translation id="7153999225810839758"><ph name="TIME" /> λεπτό για ανάγνωση</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 25a589d..ec66f126 100644
--- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Manage Sync</translation>
 <translation id="1076421457278169141">Code scanned</translation>
 <translation id="1084365883616172403">Facebook post completed.</translation>
-<translation id="1086486568852410168">Search with Google Lens</translation>
 <translation id="1103523840287552314">Always translate <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Accept &amp; Continue</translation>
 <translation id="110724200315609752">Switch to open window</translation>
@@ -164,6 +163,7 @@
 <translation id="236977714248711277">Sites can't use cookies to improve your browsing experience, for example, to keep you signed in or to remember items in your shopping basket.
 
 Sites can't use cookies to see your browsing activity across different sites, for example, to personalise ads.</translation>
+<translation id="2375243552872247702">See content for you</translation>
 <translation id="2381405137052800939">Basics</translation>
 <translation id="2386793615875593361">1 selected</translation>
 <translation id="2421004566762153674">Blocking third-party cookies</translation>
@@ -603,6 +603,7 @@
 <translation id="6136914049981179737">Seconds ago</translation>
 <translation id="6144589619057374135">Open ${url} in Incognito</translation>
 <translation id="6149061208933997199">Use Password</translation>
+<translation id="6152406514676263192">Sync for the most relevant content based on your interests.</translation>
 <translation id="6159839020698489198">optional</translation>
 <translation id="6177442314419606057">Search in Chrome</translation>
 <translation id="6184086493125982861">Show Tabs</translation>
@@ -751,6 +752,7 @@
 <translation id="7189598951263744875">Share...</translation>
 <translation id="7192050974311852563">Start logging</translation>
 <translation id="7203585745079012652">Speak Answers Back</translation>
+<translation id="7207023858769244910">Sync to get content based on your interests.</translation>
 <translation id="7207383424303353046">New: Open sites in Chrome automatically by making it your default browser app. <ph name="BEGIN_LINK" />Open settings<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">Invalid card nickname</translation>
 <translation id="722454870747268814">New Incognito Tab</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 818d832..e709500 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Administrar la sincronización</translation>
 <translation id="1076421457278169141">Código escaneado</translation>
 <translation id="1084365883616172403">Entrada de Facebook publicada</translation>
-<translation id="1086486568852410168">Buscar con Google Lens</translation>
 <translation id="1103523840287552314">Siempre traducir <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Aceptar y continuar</translation>
 <translation id="110724200315609752">Cambiar a otra ventana abierta</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb
index 4c84457..07412c1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Gestionar sincronización</translation>
 <translation id="1076421457278169141">Código escaneado</translation>
 <translation id="1084365883616172403">Publicado en Facebook</translation>
-<translation id="1086486568852410168">Buscar con Google Lens</translation>
 <translation id="1103523840287552314">Traducir siempre del <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Aceptar y continuar</translation>
 <translation id="110724200315609752">Cambiar a ventana abierta</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_et.xtb b/ios/chrome/app/strings/resources/ios_strings_et.xtb
index d206c883..64a9134 100644
--- a/ios/chrome/app/strings/resources/ios_strings_et.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_et.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Sünkroonimise haldamine</translation>
 <translation id="1076421457278169141">Kood on skannitud</translation>
 <translation id="1084365883616172403">Facebooki postitus on valmis.</translation>
-<translation id="1086486568852410168">Otsing Google Lensiga</translation>
 <translation id="1103523840287552314">Tõlgi alati: <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Nõustu ja jätka</translation>
 <translation id="110724200315609752">Lülitu avatud aknale</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
index 85374e12..cfa4f2a 100644
--- a/ios/chrome/app/strings/resources/ios_strings_eu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Kudeatu sinkronizazioa</translation>
 <translation id="1076421457278169141">Eskaneatu da kodea</translation>
 <translation id="1084365883616172403">Mezua Facebook-en argitaratu da.</translation>
-<translation id="1086486568852410168">Bilatu Google Lens bidez</translation>
 <translation id="1103523840287552314">Itzuli <ph name="LANGUAGE" /> beti</translation>
 <translation id="1104948393051856124">Onartu eta jarraitu</translation>
 <translation id="110724200315609752">Erabili irekita dagoen leihoa</translation>
@@ -163,6 +162,7 @@
 <translation id="236977714248711277">Webguneek ezin dituzte erabili cookieak arakatze-zerbitzua hobetzeko; adibidez, saioa hasita mantentzeko edo erosketa-saskiko produktuak gogoratzeko.
 
 Webguneek ezin dituzte erabili cookieak beste webguneetan egiten dituzun arakatze-jarduerak ikusteko, hala nola iragarkiak pertsonalizatzeko.</translation>
+<translation id="2375243552872247702">Ikusi zuretzako edukia</translation>
 <translation id="2381405137052800939">Oinarrizkoak</translation>
 <translation id="2386793615875593361">Bat hautatu da</translation>
 <translation id="2421004566762153674">Hirugarrenen cookieak blokeatzea</translation>
@@ -602,6 +602,7 @@
 <translation id="6136914049981179737">Duela segundo gutxi</translation>
 <translation id="6144589619057374135">Ireki ${url} ezkutuko moduan</translation>
 <translation id="6149061208933997199">Erabili pasahitza</translation>
+<translation id="6152406514676263192">Zure interesetan oinarritutako eduki egokiena lortzeko, sinkronizatu.</translation>
 <translation id="6159839020698489198">aukerakoa</translation>
 <translation id="6177442314419606057">Bilatu Chrome-n</translation>
 <translation id="6184086493125982861">Erakutsi fitxak</translation>
@@ -749,6 +750,7 @@
 <translation id="7189598951263744875">Partekatu…</translation>
 <translation id="7192050974311852563">Hasi erregistratzen</translation>
 <translation id="7203585745079012652">Erantzun ahots bidez</translation>
+<translation id="7207023858769244910">Interesetan oinarritutako edukia lortzeko, sinkronizatu.</translation>
 <translation id="7207383424303353046">Berria: ezarri Chrome arakatzaile lehenetsi gisa eta ireki webguneak bertan automatikoki. <ph name="BEGIN_LINK" />Ireki ezarpenak<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">Txartelaren goitizenak ez du balio</translation>
 <translation id="722454870747268814">Ezkutuko moduko fitxa berria</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
index b7a3f929..df118ff 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">مدیریت همگام‌سازی</translation>
 <translation id="1076421457278169141">کد اسکن شد</translation>
 <translation id="1084365883616172403">‏پست Facebook ارسال شد.</translation>
-<translation id="1086486568852410168">‏جستجو با «لنز Google»</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> همیشه ترجمه شود</translation>
 <translation id="1104948393051856124">پذیرش و ادامه</translation>
 <translation id="110724200315609752">رفتن به پنجره باز</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">مرورگرتان تحت‌مدیریت است. <ph name="BEGIN_LINK" />جزئیات<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">پنهان کردن گذرواژه</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> مورد</translation>
+<translation id="1450170672351507823">«محافظت استاندارد» روشن است. برای امنیت بیشتر، از «محافظت پیشرفته» استفاده کنید.</translation>
 <translation id="149095475893949513">این وب‌سایت می‌خواهد نمایه پیکربندی بارگیری کند.</translation>
 <translation id="1491277525950327607">برای جابه‌جایی بین تنظیمات، دو ضربه سریع بزنید</translation>
 <translation id="1492417797159476138">قبلاً این نام کاربری را برای این سایت ذخیره کرده‌اید</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
index 08bfde7..c8f7339c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Synkronointiasetusten määritys</translation>
 <translation id="1076421457278169141">Koodi skannattiin.</translation>
 <translation id="1084365883616172403">Facebook-viesti julkaistu.</translation>
-<translation id="1086486568852410168">Hae Google Lensilla</translation>
 <translation id="1103523840287552314">Käännä <ph name="LANGUAGE" /> aina</translation>
 <translation id="1104948393051856124">Hyväksy ja jatka</translation>
 <translation id="110724200315609752">Vaihda avoimeen ikkunaan</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">Tämä on ylläpidetty selain. <ph name="BEGIN_LINK" />Tiedot<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">Piilota salasana</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> kohdetta</translation>
+<translation id="1450170672351507823">Perustason suojaus on päällä. Käytä parannettua suojausta, jos haluat lisäsuojaa.</translation>
 <translation id="149095475893949513">Verkkosivusto yrittää ladata määritysprofiilia.</translation>
 <translation id="1491277525950327607">Muuta asetusta kaksoisnapauttamalla.</translation>
 <translation id="1492417797159476138">Tallensit jo tämän käyttäjänimen sivustolle</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
index c872a1f..4777ac9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Pamahalaan ang Pag-sync</translation>
 <translation id="1076421457278169141">Na-scan na ang code</translation>
 <translation id="1084365883616172403">Kumpleto na ang pag-post sa Facebook.</translation>
-<translation id="1086486568852410168">Maghanap gamit ang Google Lens</translation>
 <translation id="1103523840287552314">Palaging i-translate ang <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Tanggapin at Magpatuloy</translation>
 <translation id="110724200315609752">Lumipat sa Nakabukas na Window</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">Pinapamahalaan ang iyong browser. <ph name="BEGIN_LINK" />Mga Detalye<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">Itago ang Password</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> (na) item</translation>
+<translation id="1450170672351507823">Naka-on ang standard na proteksyon. Para sa higit pang seguridad, gamitin ang Pinahusay na proteksyon.</translation>
 <translation id="149095475893949513">Sinusubukan ng website na ito na mag-download ng profile ng configuration.</translation>
 <translation id="1491277525950327607">I-double tap upang i-toggle ang setting</translation>
 <translation id="1492417797159476138">Na-save mo na ang username na ito para sa site na ito</translation>
@@ -739,6 +739,7 @@
 <translation id="7099761977003084116">Mga Kamakailang Tab</translation>
 <translation id="7102005569666697658">Dina-download… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">Itago</translation>
+<translation id="7108762695052995889">Bisitahin ang Site</translation>
 <translation id="7133798577887235672">Buong Pangalan</translation>
 <translation id="7136892417564438900">Hindi available ang camera</translation>
 <translation id="7153999225810839758"><ph name="TIME" /> (na) minutong pagbabasa</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 0f4e750e..c11d08f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Gérer la synchronisation</translation>
 <translation id="1076421457278169141">Code numérisé</translation>
 <translation id="1084365883616172403">Message Facebook terminé.</translation>
-<translation id="1086486568852410168">Rechercher avec Lentille Google</translation>
 <translation id="1103523840287552314">Toujours traduire les pages rédigées en <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Accepter et continuer</translation>
 <translation id="110724200315609752">Retourner à la fenêtre ouverte</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">Votre navigateur est géré. <ph name="BEGIN_LINK" />Détails<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">Masquer le mot de passe</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> éléments</translation>
+<translation id="1450170672351507823">La protection standard est activée. Pour profiter d'une sécurité accrue, servez-vous de la protection améliorée.</translation>
 <translation id="149095475893949513">Ce site Web tente de télécharger un profil de configuration.</translation>
 <translation id="1491277525950327607">Touchez deux fois pour activer ou désactiver le paramètre</translation>
 <translation id="1492417797159476138">Vous avez déjà enregistré ce nom d'utilisateur pour ce site</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
index 20025ec..8cabbb0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Gérer la synchronisation</translation>
 <translation id="1076421457278169141">Code scanné</translation>
 <translation id="1084365883616172403">Post Facebook publié.</translation>
-<translation id="1086486568852410168">Rechercher avec Google Lens</translation>
 <translation id="1103523840287552314">Toujours traduire les pages en <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Accepter et continuer</translation>
 <translation id="110724200315609752">Passer à une autre fenêtre ouverte</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gl.xtb b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
index fc819d1..c80425a5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_gl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Xestionar sincronización</translation>
 <translation id="1076421457278169141">Escaneouse o código</translation>
 <translation id="1084365883616172403">Completouse a publicación de Facebook.</translation>
-<translation id="1086486568852410168">Buscar con Google Lens</translation>
 <translation id="1103523840287552314">Traducir sempre o <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Aceptar e continuar</translation>
 <translation id="110724200315609752">Ir á ventá aberta</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
index 007221f..d2b57ca 100644
--- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">સિંક મેનેજ કરો</translation>
 <translation id="1076421457278169141">કોડ સ્કેન કર્યો</translation>
 <translation id="1084365883616172403">Facebook પોસ્ટ પૂર્ણ કરી છે.</translation>
-<translation id="1086486568852410168">Google Lens વડે શોધો</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" />નો હંમેશાં અનુવાદ કરો</translation>
 <translation id="1104948393051856124">સ્વીકારો અને ચાલુ રાખો</translation>
 <translation id="110724200315609752">ખુલ્લી વિંડો પર સ્વિચ કરો</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">તમારું બ્રાઉઝર મેનેજ કરવામાં આવી રહ્યું છે. <ph name="BEGIN_LINK" />વિગતો<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">પાસવર્ડ છુપાવો</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> આઇટમ્સ</translation>
+<translation id="1450170672351507823">માનક સુરક્ષા ચાલુ છે. વધુ સઘન સુરક્ષા માટે, વધારેલા સંરક્ષણનો ઉપયોગ કરો.</translation>
 <translation id="149095475893949513">આ વેબસાઇટ કન્ફિગ્યુરેશન પ્રોફાઇલ ડાઉનલોડ કરવાનો પ્રયાસ કરી રહી છે.</translation>
 <translation id="1491277525950327607">સેટિંગ ટૉગલ કરવા માટે બે વાર ટૅપ કરો</translation>
 <translation id="1492417797159476138">તમે આ સાઇટ માટે પહેલેથી જ વપરાશકર્તા નામ સાચવ્યું છે</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
index b6084f8..91f51f33 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">सिंक प्रबंधित करें</translation>
 <translation id="1076421457278169141">कोड स्कैन किया गया</translation>
 <translation id="1084365883616172403">Facebook पोस्ट पूरी हुई.</translation>
-<translation id="1086486568852410168">Google Lens की मदद से खोजें</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> का हमेशा अनुवाद करें</translation>
 <translation id="1104948393051856124">स्‍वीकार करें और जारी रखें</translation>
 <translation id="110724200315609752">खुली हुई विंडो पर जाएं</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">आपका ब्राउज़र मैनेज किया गया है. <ph name="BEGIN_LINK" />ब्यौरा<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">पासवर्ड छिपाएं</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> आइटम</translation>
+<translation id="1450170672351507823">सामान्य सुरक्षा की सुविधा चालू है. इससे भी ज़्यादा सुरक्षा के लिए, बेहतर सुरक्षा की सुविधा का इस्तेमाल करें.</translation>
 <translation id="149095475893949513">यह वेबसाइट, कॉन्फ़िगरेशन प्रोफ़ाइल को डाउनलोड करने की कोशिश कर रही है.</translation>
 <translation id="1491277525950327607">सेटिंग को टॉगल करने के लिए दो बार टैप करें</translation>
 <translation id="1492417797159476138">आपने इस साइट के लिए, यह उपयोगकर्ता नाम पहले ही सेव कर दिया है</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
index e1af98dc..f5d6a16 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Upravljanje sinkronizacijom</translation>
 <translation id="1076421457278169141">Kod skeniran</translation>
 <translation id="1084365883616172403">Dovršen je post za Facebook.</translation>
-<translation id="1086486568852410168">Pretraži pomoću Google objektiva</translation>
 <translation id="1103523840287552314">Uvijek prevedi <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Prihvati i nastavi</translation>
 <translation id="110724200315609752">Prijeđite na otvoreni prozor</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">Vaš je preglednik upravljan. <ph name="BEGIN_LINK" />Pojedinosti<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">Sakrijte zaporku</translation>
 <translation id="145015347812617860">Broj stavki: <ph name="COUNT" /></translation>
+<translation id="1450170672351507823">Uključena je standardna zaštita. Za još veću sigurnost koristite poboljšanu zaštitu.</translation>
 <translation id="149095475893949513">Web-lokacija pokušava preuzeti profil za konfiguraciju.</translation>
 <translation id="1491277525950327607">Dodirnite dvaput da biste promijenili postavku</translation>
 <translation id="1492417797159476138">Već ste spremili ovo korisničko ime za ovu web-lokaciju</translation>
@@ -739,6 +739,7 @@
 <translation id="7099761977003084116">Nedavne kartice</translation>
 <translation id="7102005569666697658">Preuzimanje… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">Sakrij preglednik</translation>
+<translation id="7108762695052995889">Otvori web-lokaciju</translation>
 <translation id="7133798577887235672">Ime i prezime</translation>
 <translation id="7136892417564438900">Fotoaparat nije dostupan</translation>
 <translation id="7153999225810839758"><ph name="TIME" /> min čitanja</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
index e1df268..442e716 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Szinkronizálás kezelése</translation>
 <translation id="1076421457278169141">Kód beolvasva</translation>
 <translation id="1084365883616172403">A Facebook-bejegyzés kész.</translation>
-<translation id="1086486568852410168">Keresés a Google Lens segítségével</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> - mindig legyen lefordítva</translation>
 <translation id="1104948393051856124">Elfogadás és folytatás</translation>
 <translation id="110724200315609752">Váltás megnyitott ablakra</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hy.xtb b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
index fa44829..8c3a574 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hy.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Համաժամացման կառավարում</translation>
 <translation id="1076421457278169141">Կոդը ընթերցվեց</translation>
 <translation id="1084365883616172403">Facebook-ում փակցնումն ավարտվեց:</translation>
-<translation id="1086486568852410168">Որոնել Google Տեսապակու միջոցով</translation>
 <translation id="1103523840287552314">Միշտ թարգմանել <ph name="LANGUAGE" />-ից</translation>
 <translation id="1104948393051856124">Ընդունել և շարունակել</translation>
 <translation id="110724200315609752">Անցնել բացված պատուհան</translation>
@@ -739,6 +738,7 @@
 <translation id="7099761977003084116">Վերջին ներդիրները</translation>
 <translation id="7102005569666697658">Ներբեռնում… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">Թաքցնել</translation>
+<translation id="7108762695052995889">Անցեք կայք</translation>
 <translation id="7133798577887235672">Անուն, ազգանուն</translation>
 <translation id="7136892417564438900">Ֆոտոխցիկն անհասանելի է</translation>
 <translation id="7153999225810839758">Կարդալու համար կպահանջվի <ph name="TIME" /> րոպե</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb
index 23bc648a..be546cab 100644
--- a/ios/chrome/app/strings/resources/ios_strings_id.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Kelola Sinkronisasi</translation>
 <translation id="1076421457278169141">Kode telah dipindai</translation>
 <translation id="1084365883616172403">Kirim Facebook selesai.</translation>
-<translation id="1086486568852410168">Telusuri dengan Google Lens</translation>
 <translation id="1103523840287552314">Selalu terjemahkan <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Terima &amp; Lanjutkan</translation>
 <translation id="110724200315609752">Alihkan ke Jendela yang Terbuka</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_is.xtb b/ios/chrome/app/strings/resources/ios_strings_is.xtb
index e69f897..e749dba 100644
--- a/ios/chrome/app/strings/resources/ios_strings_is.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_is.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Stjórna samstillingu</translation>
 <translation id="1076421457278169141">Kóði skannaður</translation>
 <translation id="1084365883616172403">Facebook-færsla birt.</translation>
-<translation id="1086486568852410168">Leita með Google linsu</translation>
 <translation id="1103523840287552314">Þýða alltaf <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Samþykkja og halda áfram</translation>
 <translation id="110724200315609752">Skipta yfir í opinn glugga</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_it.xtb b/ios/chrome/app/strings/resources/ios_strings_it.xtb
index 57a09a2..ab9250aa 100644
--- a/ios/chrome/app/strings/resources/ios_strings_it.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_it.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Gestisci la sincronizzazione</translation>
 <translation id="1076421457278169141">Scansione del codice eseguita</translation>
 <translation id="1084365883616172403">Pubblicazione su Facebook completata.</translation>
-<translation id="1086486568852410168">Cerca con Google Lens</translation>
 <translation id="1103523840287552314">Traduci sempre <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Accetta e continua</translation>
 <translation id="110724200315609752">Passa alla finestra aperta</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
index bf7838d..66e32b9e7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">ניהול הסנכרון</translation>
 <translation id="1076421457278169141">הקוד נסרק</translation>
 <translation id="1084365883616172403">‏הפרסום ב-‏Facebook בוצע.</translation>
-<translation id="1086486568852410168">‏חיפוש באמצעות Google Lens</translation>
 <translation id="1103523840287552314">ברצוני לקבל תרגום מ<ph name="LANGUAGE" /> תמיד</translation>
 <translation id="1104948393051856124">בסדר, מקובל עליי</translation>
 <translation id="110724200315609752">מעבר לחלון פתוח</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
index 6449ea7..82cc1e30 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ja.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">同期の管理</translation>
 <translation id="1076421457278169141">コードをスキャンしました</translation>
 <translation id="1084365883616172403">Facebookへの投稿が完了しました。</translation>
-<translation id="1086486568852410168">Google レンズで検索</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" />を常に翻訳</translation>
 <translation id="1104948393051856124">同意して続行</translation>
 <translation id="110724200315609752">開いているウィンドウに切り替え</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">お使いのブラウザは管理されています。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">パスワードを非表示にします</translation>
 <translation id="145015347812617860"><ph name="COUNT" />個のアイテム</translation>
+<translation id="1450170672351507823">標準保護機能がオンになっています。セキュリティをさらに強化するには、保護強化機能を使用してください。</translation>
 <translation id="149095475893949513">このウェブサイトが設定プロファイルをダウンロードしようとしています。</translation>
 <translation id="1491277525950327607">設定を切り替えるにはダブルタップします</translation>
 <translation id="1492417797159476138">このユーザー名はこのサイトですでに保存されています</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
index e32d879..e041e66 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ka.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">სინქრონიზაციის მართვა</translation>
 <translation id="1076421457278169141">კოდი დასკანირდა</translation>
 <translation id="1084365883616172403">Facebook-ის პოსტი დასრულებულია.</translation>
-<translation id="1086486568852410168">ძიება Google Lens-ით</translation>
 <translation id="1103523840287552314">ყოველთვის თარგმნე ამ ენიდან: <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">მიღება და გაგრძელება</translation>
 <translation id="110724200315609752">გახსნილ ფანჯარაზე გადართვა</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">თქვენი ბრაუზერი მართულია. <ph name="BEGIN_LINK" />დეტალურად<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">პაროლის დამალვა</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> ელემენტი</translation>
+<translation id="1450170672351507823">სტანდარტული დაცვა ჩართულია. გირჩევთ დამატებითი დაცვის გამოყენებასაც.</translation>
 <translation id="149095475893949513">ეს ვებსაიტი კონფიგურაციის პროფილის ჩამოტვირთვას ცდილობს.</translation>
 <translation id="1491277525950327607">პარამეტრის გადასართავად, შეეხეთ ორმაგად</translation>
 <translation id="1492417797159476138">მომხმარებლის ეს სახელი ამ საიტისთვის უკვე შეინახეთ</translation>
@@ -163,6 +163,7 @@
 <translation id="236977714248711277">საიტებს არ შეუძლია ქუქი-ჩანაწერების გამოყენება ვების დათვალიერების პროცესის გასაუმჯობესებლად, მაგალითად, სისტემაში შესული მდგომარეობის შესანარჩუნებლად ან საყიდლების კალათაში დამატებული ერთეულების დასამახსოვრებლად.
 
 საიტებს არ შეუძლია ქუქი-ჩანაწერების გამოყენება სხვადასხვა საიტის თქვენ მიერ დათვალიერების აქტივობის სანახავად, მაგალითად, რეკლამის თქვენზე მოსარგებად.</translation>
+<translation id="2375243552872247702">იხილეთ თქვენთვის განკუთვნილი კონტენტი</translation>
 <translation id="2381405137052800939">ძირითადი</translation>
 <translation id="2386793615875593361">1 არჩეულია</translation>
 <translation id="2421004566762153674">მესამე მხარის ქუქი-ჩანაწერების დაბლოკვა</translation>
@@ -602,6 +603,7 @@
 <translation id="6136914049981179737">წამის წინ</translation>
 <translation id="6144589619057374135">${url}-ის გახსნა ინკოგნიტო რეჟიმში</translation>
 <translation id="6149061208933997199">პაროლის გამოყენება</translation>
+<translation id="6152406514676263192">შეასრულეთ სინქრონიზაცია, ყველაზე რელევანტური კონტენტი რომ მიიღოთ თქვენს ინტერესებზე დაფუძნებით.</translation>
 <translation id="6159839020698489198">არასავალდებულო</translation>
 <translation id="6177442314419606057">Chrome-ში ძიება</translation>
 <translation id="6184086493125982861">ჩანართების ჩვენება</translation>
@@ -739,6 +741,7 @@
 <translation id="7099761977003084116">ბოლოდროინდელი ჩანართები</translation>
 <translation id="7102005569666697658">მიმდინარეობს ჩამოტვირთვა… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">დამალვა</translation>
+<translation id="7108762695052995889">საიტზე გადასვლა</translation>
 <translation id="7133798577887235672">სრული სახელი</translation>
 <translation id="7136892417564438900">კამერა მიუწვდომელია</translation>
 <translation id="7153999225810839758"><ph name="TIME" />-წუთიანი საკითხავი</translation>
@@ -749,6 +752,7 @@
 <translation id="7189598951263744875">გაზიარება…</translation>
 <translation id="7192050974311852563">ჟურნალირების დაწყება</translation>
 <translation id="7203585745079012652">აბრუნებს ხმოვან პასუხებს</translation>
+<translation id="7207023858769244910">შეასრულეთ სინქრონიზაცია, თქვენს ინტერესებზე დაფუძნებული კონტენტი რომ მიიღოთ.</translation>
 <translation id="7207383424303353046">სიახლე: ავტომატურად გახსენით საიტები Chrome-ში — აქციეთ ის ბრაუზერის ნაგულისხმევ აპად. <ph name="BEGIN_LINK" />პარამეტრების გახსნა<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">ბარათის მეტსახელი არასწორია</translation>
 <translation id="722454870747268814">ახალი ინკოგნიტო ჩანართი</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kk.xtb b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
index 7bff47d..71195568 100644
--- a/ios/chrome/app/strings/resources/ios_strings_kk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Синхрондауды басқару</translation>
 <translation id="1076421457278169141">Код сканерленген</translation>
 <translation id="1084365883616172403">Facebook жариялау аяқталды.</translation>
-<translation id="1086486568852410168">Google Lens арқылы іздеу</translation>
 <translation id="1103523840287552314">Әрқашан <ph name="LANGUAGE" /> тіліне аудару</translation>
 <translation id="1104948393051856124">Қабылдау және жалғастыру</translation>
 <translation id="110724200315609752">Ашық терезеге ауысу</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_km.xtb b/ios/chrome/app/strings/resources/ios_strings_km.xtb
index b97c75a2e..460f90f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_km.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_km.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">គ្រប់គ្រង​ការធ្វើ​សមកាលកម្ម</translation>
 <translation id="1076421457278169141">បានស្កេនរកលេខកូដ</translation>
 <translation id="1084365883616172403">ការបង្ហោះតាម Facebook បានបញ្ចប់។</translation>
-<translation id="1086486568852410168">ស្វែងរក​ដោយ​ប្រើ Google Lens</translation>
 <translation id="1103523840287552314">បកប្រែ <ph name="LANGUAGE" /> ជានិច្ច</translation>
 <translation id="1104948393051856124">ព្រមទទួល និងបន្ត</translation>
 <translation id="110724200315609752">ប្ដូរទៅ "វិនដូផ្សេង​ដែល​កំពុងបើក"</translation>
@@ -740,6 +739,7 @@
 <translation id="7099761977003084116">ផ្ទាំង​ថ្មីៗ</translation>
 <translation id="7102005569666697658">កំពុង​ទាញយក… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">លាក់</translation>
+<translation id="7108762695052995889">ចូលមើល​គេហទំព័រ</translation>
 <translation id="7133798577887235672">ឈ្មោះពេញ</translation>
 <translation id="7136892417564438900">កាមេរ៉ាមិនអាចប្រើបានទេ</translation>
 <translation id="7153999225810839758">អាន <ph name="TIME" /> នាទី</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
index 0dddabdf..0a420916 100644
--- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">ಸಿಂಕ್ ನಿರ್ವಹಿಸಿ</translation>
 <translation id="1076421457278169141">ಕೋಡ್‌ ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="1084365883616172403">Facebook ಪೋಸ್ಟ್ ಪೂರ್ಣಗೊಂಡಿದೆ.</translation>
-<translation id="1086486568852410168">Google Lens ಬಳಸಿಕೊಂಡು ಹುಡುಕಿ</translation>
 <translation id="1103523840287552314">ಯಾವಾಗಲೂ ಅನುವಾದಿಸಿ <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">ಅಂಗೀಕರಿಸಿ ಮತ್ತು ಮುಂದುವರಿಯಿರಿ</translation>
 <translation id="110724200315609752">ತೆರೆದ ವಿಂಡೋಗೆ ಬದಲಿಸಿ.</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">ನಿಮ್ಮ ಬ್ರೌಸರ್ ಅನ್ನು ನಿರ್ವಹಿಸಲಾಗಿದೆ. <ph name="BEGIN_LINK" />ವಿವರಗಳು<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">ಪಾಸ್‌ವರ್ಡ್ ಮರೆಮಾಡಿ</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> ಐಟಂಗಳು</translation>
+<translation id="1450170672351507823">ಪ್ರಮಾಣಿತ ಸುರಕ್ಷತೆ ಆನ್ ಆಗಿದೆ. ಇನ್ನೂ ಹೆಚ್ಚಿನ ಸುರಕ್ಷತೆಗಾಗಿ, ವರ್ಧಿತ ರಕ್ಷಣೆಯನ್ನು ಬಳಸಿ.</translation>
 <translation id="149095475893949513">ಈ ವೆಬ್‌ಸೈಟ್ ಕಾನ್ಫಿಗರೇಶನ್ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದೆ.</translation>
 <translation id="1491277525950327607">ಸೆಟ್ಟಿಂಗ್‌ ಟಾಗಲ್‌ ಮಾಡಲು ಡಬಲ್ ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="1492417797159476138">ಈ ಸೈಟ್‌ಗಾಗಿ ನೀವು ಈಗಾಗಲೇ ಈ ಬಳಕೆದಾರರ ಹೆಸರನ್ನು ಉಳಿಸಿದ್ದೀರಿ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
index afaa1774..b7fd9b7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ko.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">동기화 관리</translation>
 <translation id="1076421457278169141">코드 스캔됨</translation>
 <translation id="1084365883616172403">Facebook 게시가 완료되었습니다.</translation>
-<translation id="1086486568852410168">Google 렌즈로 검색</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> 항상 번역</translation>
 <translation id="1104948393051856124">동의 및 계속</translation>
 <translation id="110724200315609752">열려 있는 다른 창으로 전환</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
index 29d1da87..40a3956 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ky.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Шайкештирүүнү башкаруу</translation>
 <translation id="1076421457278169141">Код скандалды</translation>
 <translation id="1084365883616172403">Facebook'ка жайгаштырылды.</translation>
-<translation id="1086486568852410168">Google Lens аркылуу издөө</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> тилин ар дайым которуу</translation>
 <translation id="1104948393051856124">Кабыл алуу жана улантуу</translation>
 <translation id="110724200315609752">Ачык терезеге которулуңуз</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
index b991cdea..aa84bd0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lo.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">ຈັດການການຊິ້ງຂໍ້ມູນ</translation>
 <translation id="1076421457278169141">ສະແກນລະຫັດແລ້ວ</translation>
 <translation id="1084365883616172403">ການ​ໂພ​ສ​ທ໌ Facebook ສຳ​ເລັດ.</translation>
-<translation id="1086486568852410168">ຊອກຫາດ້ວຍ Google Lens</translation>
 <translation id="1103523840287552314">ແປ <ph name="LANGUAGE" /> ຢູ່ສະເໝີ</translation>
 <translation id="1104948393051856124">ຍອມ​ຮັບ​ ແລະ​ສືບ​ຕໍ່</translation>
 <translation id="110724200315609752">ປ່ຽນເພື່ອເປີດໜ້າຈໍ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lt.xtb b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
index f8c60b2..05d767c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lt.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Sinchronizavimo tvarkymas</translation>
 <translation id="1076421457278169141">Kodas nuskaitytas</translation>
 <translation id="1084365883616172403">„Facebook“ įrašas paskelbtas.</translation>
-<translation id="1086486568852410168">Paieška naudojant „Google Lens“</translation>
 <translation id="1103523840287552314">Visada versti <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Sutikti ir tęsti</translation>
 <translation id="110724200315609752">Perjungti į atidarytą langą</translation>
@@ -163,6 +162,7 @@
 <translation id="236977714248711277">Svetainės negali naudoti slapukų, kad pagerintų naršymo kokybę, pvz., kad liktumėte prisijungę ar būtų įsimintos pirkinių krepšelyje esančios prekės.
 
 Svetainės negali naudoti slapukų, kad sužinotų apie naršymo veiklą skirtingose svetainėse, pvz., kad galėtų suasmeninti skelbimus.</translation>
+<translation id="2375243552872247702">Jums skirto turinio peržiūra</translation>
 <translation id="2381405137052800939">Pagrindiniai</translation>
 <translation id="2386793615875593361">Pasirinkta: 1</translation>
 <translation id="2421004566762153674">Blokuojami trečiosios šalies slapukai</translation>
@@ -602,6 +602,7 @@
 <translation id="6136914049981179737">Prieš sek.</translation>
 <translation id="6144589619057374135">Atidaryti ${url} inkognito režimu</translation>
 <translation id="6149061208933997199">Naudoti slaptažodį</translation>
+<translation id="6152406514676263192">Sinchronizuokite, kad būtų pateikiamas labiausiai su jūsų pomėgiais susijęs turinys.</translation>
 <translation id="6159839020698489198">nebūtinas</translation>
 <translation id="6177442314419606057">Paieška naršyklėje „Chrome“</translation>
 <translation id="6184086493125982861">Rodyti skirtukus</translation>
@@ -749,6 +750,7 @@
 <translation id="7189598951263744875">Bendrinti...</translation>
 <translation id="7192050974311852563">Pradėti registravimą</translation>
 <translation id="7203585745079012652">Sakyti atsakymus</translation>
+<translation id="7207023858769244910">Sinchronizuokite, kad gautumėte turinio pagal savo pomėgius.</translation>
 <translation id="7207383424303353046">Naujiena: automatiškai atidarykite svetaines naršyklėje „Chrome“, nustatę ją kaip numatytąją naršyklės programą. <ph name="BEGIN_LINK" />Atidarykite skiltį „Nustatymai“<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">Netinkamas kortelės slapyvardis</translation>
 <translation id="722454870747268814">Naujas inkognito skirtukas</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lv.xtb b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
index 0de2f01..765951b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lv.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Sinhronizācijas pārvaldība</translation>
 <translation id="1076421457278169141">Kods ir skenēts</translation>
 <translation id="1084365883616172403">Facebook ziņa izveidota.</translation>
-<translation id="1086486568852410168">Meklēt, izmantojot Google Lens</translation>
 <translation id="1103523840287552314">Vienmēr tulkot <ph name="LANGUAGE" /> valodas saturu</translation>
 <translation id="1104948393051856124">Pieņemt un turpināt</translation>
 <translation id="110724200315609752">Pārslēgties uz atvērto logu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
index 65b9411..56a5bfab 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Управувајте со синхронизацијата</translation>
 <translation id="1076421457278169141">Кодот е скениран</translation>
 <translation id="1084365883616172403">Објавата на Facebook е завршена.</translation>
-<translation id="1086486568852410168">Пребарувајте со Google Lens</translation>
 <translation id="1103523840287552314">Секогаш преведувај <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Прифати и продолжи</translation>
 <translation id="110724200315609752">Префрлете се на отворениот прозорец</translation>
@@ -740,6 +739,7 @@
 <translation id="7099761977003084116">Неодамнешни картички</translation>
 <translation id="7102005569666697658">Се презема… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">Сокриј</translation>
+<translation id="7108762695052995889">Посетете го сајтот</translation>
 <translation id="7133798577887235672">Целосно име</translation>
 <translation id="7136892417564438900">Камерата е недостапна</translation>
 <translation id="7153999225810839758">Време на читање: <ph name="TIME" /> мин.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
index c96e173d..7ff14e3 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">സമന്വയം മാനേജ് ചെയ്യുക</translation>
 <translation id="1076421457278169141">കോഡ് സ്‌കാൻ ചെയ്‌തു</translation>
 <translation id="1084365883616172403">Facebook പങ്കിടൽ പൂർത്തിയായി.</translation>
-<translation id="1086486568852410168">Google Lens ഉപയോഗിച്ച് തിരയുക</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> എല്ലായ്പ്പോഴും വിവര്‍ത്തനം ചെയ്യുക </translation>
 <translation id="1104948393051856124">അംഗീകരിച്ച് തുടരുക</translation>
 <translation id="110724200315609752">തുറന്ന വിൻഡോയിലേക്ക് മാറുക</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">നിങ്ങളുടെ ബ്രൗസർ മാനേജ് ചെയ്യപ്പെടുന്നു. <ph name="BEGIN_LINK" />വിശദാംശങ്ങൾ<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">പാസ്‍വേഡ് അദൃശ്യമാക്കുക</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> ഇനങ്ങൾ</translation>
+<translation id="1450170672351507823">സാധാരണ പരിരക്ഷ ഓണാണ്. കൂടുതൽ സുരക്ഷയ്ക്ക്, മെച്ചപ്പെടുത്തിയ പരിരക്ഷ ഉപയോഗിക്കുക.</translation>
 <translation id="149095475893949513">കോൺഫിഗറേഷൻ പ്രൊഫൈൽ ഡൗൺലോഡ് ചെയ്യാൻ ഈ വെബ്സൈറ്റ് ശ്രമിക്കുന്നു.</translation>
 <translation id="1491277525950327607">ക്രമീകരണം മാറ്റാൻ രണ്ടുതവണ ടാപ്പ് ചെയ്യുക</translation>
 <translation id="1492417797159476138">ഈ സൈറ്റിനായി നിങ്ങൾ ഇതിനകം തന്നെ ഈ ഉപയോക്തൃനാമം സംരക്ഷിച്ചു</translation>
@@ -163,6 +163,7 @@
 <translation id="236977714248711277">നിങ്ങളുടെ ബ്രൗസിംഗ് അനുഭവം മെച്ചപ്പെടുത്താൻ സൈറ്റുകൾക്ക് കുക്കികൾ ഉപയോഗിക്കാനാവില്ല, ഉദാഹരണത്തിന്, സൈൻ ഇൻ ചെയ്‌ത നിലയിൽ തുടരാനോ ഷോപ്പിംഗ് കാർട്ടിലെ ഇനങ്ങൾ ഓർമ്മിക്കാനോ.
 
 വ്യത്യസ്‌ത സൈറ്റുകളിലുടനീളമുള്ള നിങ്ങളുടെ ബ്രൗസിംഗ് ആക്റ്റിവിറ്റി കാണാൻ സൈറ്റുകൾക്ക് കുക്കികൾ ഉപയോഗിക്കാനാവില്ല, ഉദാഹരണത്തിന്, പരസ്യങ്ങൾ വ്യക്തിപരമാക്കാൻ.</translation>
+<translation id="2375243552872247702">നിങ്ങൾക്കുള്ള ഉള്ളടക്കം കാണുക</translation>
 <translation id="2381405137052800939">അടിസ്ഥാനങ്ങൾ</translation>
 <translation id="2386793615875593361">1 എടുത്തു</translation>
 <translation id="2421004566762153674">മൂന്നാം കക്ഷി കുക്കികളെ ബ്ലോക്ക് ചെയ്യുന്നു</translation>
@@ -602,6 +603,7 @@
 <translation id="6136914049981179737">സെക്കൻഡ് മുമ്പ്</translation>
 <translation id="6144589619057374135">${url} അദൃശ്യ മോഡിൽ തുറക്കുക</translation>
 <translation id="6149061208933997199">പാസ്‌വേഡ് ഉപയോഗിക്കുക</translation>
+<translation id="6152406514676263192">നിങ്ങളുടെ താൽപ്പര്യങ്ങൾ അടിസ്ഥാനമാക്കി എറ്റവും പ്രസക്തമായ ഉള്ളടക്കം കാണാൻ സമന്വയിപ്പിക്കൂ.</translation>
 <translation id="6159839020698489198">ഓപ്‌ഷണൽ</translation>
 <translation id="6177442314419606057">Chrome-ൽ തിരയുക</translation>
 <translation id="6184086493125982861">ടാബുകൾ കാണിക്കുക</translation>
@@ -739,6 +741,7 @@
 <translation id="7099761977003084116">സമീപകാല ടാബുകൾ</translation>
 <translation id="7102005569666697658">ഡൗൺലോഡ് ചെയ്യുന്നു… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">മറയ്ക്കുക</translation>
+<translation id="7108762695052995889">സൈറ്റ് സന്ദർശിക്കുക</translation>
 <translation id="7133798577887235672">പൂർണ്ണമായ പേര്</translation>
 <translation id="7136892417564438900">ക്യാമറ ലഭ്യമല്ല</translation>
 <translation id="7153999225810839758">വായിക്കാനെടുക്കുന്ന സമയം <ph name="TIME" /> മിനിറ്റ്</translation>
@@ -749,6 +752,7 @@
 <translation id="7189598951263744875">പങ്കിടുക...</translation>
 <translation id="7192050974311852563">ലോഗിംഗ് ആരംഭിക്കുക</translation>
 <translation id="7203585745079012652">മറുപടിയായി ഉത്തരങ്ങൾ പറയുക</translation>
+<translation id="7207023858769244910">നിങ്ങളുടെ താൽപ്പര്യങ്ങൾ അടിസ്ഥാനമാക്കിയുള്ള ഉള്ളടക്കം നേടാൻ സമന്വയിപ്പിക്കൂ.</translation>
 <translation id="7207383424303353046">പുതിയത്: Chrome നിങ്ങളുടെ ഡിഫോൾഡ് ബ്രൗസർ ആപ്പ് ആയി സജ്ജീകരിച്ച് അതിൽ സൈറ്റുകൾ സ്വയമേവ തുറക്കൂ. <ph name="BEGIN_LINK" />ക്രമീകരണം തുറക്കുക<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">കാർഡിന്റെ വിളിപ്പേര് അസാധുവാണ്</translation>
 <translation id="722454870747268814">പുതിയ ആൾമാറാട്ട ടാബ്</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mn.xtb b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
index 6a192d9..7990db47 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Синкийг удирдах</translation>
 <translation id="1076421457278169141">Кодыг скан хийсэн</translation>
 <translation id="1084365883616172403">Facebook дээр постолж дууслаа.</translation>
-<translation id="1086486568852410168">Google Lens-р хайх</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" />-ийг үргэлж орчуулах</translation>
 <translation id="1104948393051856124">Хүлээн авах &amp; Үргэлжлүүлэх</translation>
 <translation id="110724200315609752">Нээлттэй цонх руу сэлгэх</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">Таны хөтчийг удирдаж байна. <ph name="BEGIN_LINK" />Дэлгэрэнгүй<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">Нууц үгийг нуух</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> зүйлс</translation>
+<translation id="1450170672351507823">Стандарт хамгаалалт асаалттай байна. Аюулгүй байдлаа улам нэмэгдүүлэхийг хүсвэл сайжруулсан хамгаалалтыг ашиглаарай.</translation>
 <translation id="149095475893949513">Энэ вебсайт тохируулгын профайлыг татаж авахаар оролдож байна.</translation>
 <translation id="1491277525950327607">Асаах/унтраах тохиргоог хийхийн тулд хоёр удаа товшино уу</translation>
 <translation id="1492417797159476138">Та энэ сайтад аль хэдийн энэ хэрэглэгчийн нэрийг хадгалсан байна</translation>
@@ -163,6 +163,7 @@
 <translation id="236977714248711277">Сайтууд нь, жишээлбэл таныг нэвтэрсэн хэвээр байлгах эсвэл таны худалдан авалтын сагсан дахь зүйлсийг санах зэргээр таны хөтчийн туршлагыг сайжруулахын тулд күүки ашиглах боломжгүй.
 
 Сайтууд нь, жишээлбэл зарыг хувийн болгохын тулд таны хөтчийн өөр сайт дээрх үйл ажиллагааг харах зорилгоор күүки ашиглах боломжгүй.</translation>
+<translation id="2375243552872247702">Танд зориулсан контентыг хараарай</translation>
 <translation id="2381405137052800939">Үндэс</translation>
 <translation id="2386793615875593361">1 сонгогдсон</translation>
 <translation id="2421004566762153674">Гуравдагч талын күүкиг блоклож байна</translation>
@@ -601,6 +602,7 @@
 <translation id="6136914049981179737">Секунтын өмнө</translation>
 <translation id="6144589619057374135">${url}-г Нууцлалтай горимд нээх</translation>
 <translation id="6149061208933997199">Нууц үг ашиглах</translation>
+<translation id="6152406514676263192">Таны сонирхолд тулгуурласан хамгийн хамааралтай контент харахын тулд синк хийнэ үү.</translation>
 <translation id="6159839020698489198">заавал биш</translation>
 <translation id="6177442314419606057">Chrome-с хайх</translation>
 <translation id="6184086493125982861">Цонхнуудыг харуул</translation>
@@ -738,6 +740,7 @@
 <translation id="7099761977003084116">Саяхны нээсэн табууд</translation>
 <translation id="7102005569666697658">Татаж байна… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">Нуух</translation>
+<translation id="7108762695052995889">Сайтад зочлох</translation>
 <translation id="7133798577887235672">Овог нэр</translation>
 <translation id="7136892417564438900">Камер боломжгүй</translation>
 <translation id="7153999225810839758">Уншихад <ph name="TIME" /> минут болно</translation>
@@ -748,6 +751,7 @@
 <translation id="7189598951263744875">Хуваалцах...</translation>
 <translation id="7192050974311852563">Лог хийж эхлэх</translation>
 <translation id="7203585745079012652">Хариултыг буцааж хэлэх</translation>
+<translation id="7207023858769244910">Таны сонирхолд тулгуурласан контент авахын тулд синк хийнэ үү.</translation>
 <translation id="7207383424303353046">Шинэ: Chrome-г өгөгдмөл хөтчийн аппаа болгоод, сайтуудыг үүн дээр автоматаар нээгээрэй. <ph name="BEGIN_LINK" />Тохиргоог нээх<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">Картын буруу хоч</translation>
 <translation id="722454870747268814">Нууцлалын шинэ таб</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
index d24d3fd..c6a53c8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">सिंक व्यवस्थापित करा</translation>
 <translation id="1076421457278169141">कोड स्कॅन केला</translation>
 <translation id="1084365883616172403">Facebook पोस्ट पूर्ण केले.</translation>
-<translation id="1086486568852410168">Google Lens वापरून शोधा</translation>
 <translation id="1103523840287552314">नेहमी भाषांतर करा <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">स्वीकारा आणि सुरू ठेवा</translation>
 <translation id="110724200315609752">उघड्या विंडोवर स्विच करा</translation>
@@ -741,6 +740,7 @@
 <translation id="7099761977003084116">अलीकडील टॅब</translation>
 <translation id="7102005569666697658">डाउनलोड होत आहे… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">लपवा</translation>
+<translation id="7108762695052995889">साइटला भेट द्या</translation>
 <translation id="7133798577887235672">पूर्ण नाव</translation>
 <translation id="7136892417564438900">कॅमेरा अनुपलब्ध आहे</translation>
 <translation id="7153999225810839758">वाचण्यासाठी <ph name="TIME" /> मिनिटे</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
index 373d477..6b34ca83 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ms.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Urus Penyegerakan</translation>
 <translation id="1076421457278169141">Kod diimbas</translation>
 <translation id="1084365883616172403">Catatan Facebook selesai.</translation>
-<translation id="1086486568852410168">Cari dengan Google Lens</translation>
 <translation id="1103523840287552314">Sentiasa terjemahkan <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Terima &amp; Teruskan</translation>
 <translation id="110724200315609752">Tukar kepada Tetingkap Terbuka</translation>
@@ -164,6 +163,7 @@
 <translation id="236977714248711277">Tapak tidak boleh menggunakan kuki untuk memperbaik pengalaman penyemakan imbas anda, contohnya, untuk mengekalkan log masuk anda atau untuk mengingati item dalam troli beli-belah anda.
 
 Tapak tidak boleh menggunakan kuki untuk melihat aktiviti penyemakan imbas anda pada tapak lain, contohnya, untuk memperibadikan iklan.</translation>
+<translation id="2375243552872247702">Lihat Kandungan untuk Anda</translation>
 <translation id="2381405137052800939">Asas</translation>
 <translation id="2386793615875593361">1 dipilih</translation>
 <translation id="2421004566762153674">Menyekat kuki pihak ketiga</translation>
@@ -603,6 +603,7 @@
 <translation id="6136914049981179737">Bbrp saat lalu</translation>
 <translation id="6144589619057374135">Buka ${url} dalam Inkognito</translation>
 <translation id="6149061208933997199">Gunakan Kata Laluan</translation>
+<translation id="6152406514676263192">Segerakkan kandungan yang paling berkaitan berdasarkan minat anda.</translation>
 <translation id="6159839020698489198">pilihan</translation>
 <translation id="6177442314419606057">Cari dalam Chrome</translation>
 <translation id="6184086493125982861">Paparkan Tab</translation>
@@ -740,6 +741,7 @@
 <translation id="7099761977003084116">Tab Terbaharu</translation>
 <translation id="7102005569666697658">Memuat turun… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">Sembunyikan</translation>
+<translation id="7108762695052995889">Lawati Laman</translation>
 <translation id="7133798577887235672">Nama Penuh</translation>
 <translation id="7136892417564438900">Kamera tidak tersedia</translation>
 <translation id="7153999225810839758">Bacaan <ph name="TIME" /> minit</translation>
@@ -750,6 +752,7 @@
 <translation id="7189598951263744875">Kongsi...</translation>
 <translation id="7192050974311852563">Mula Mengelog</translation>
 <translation id="7203585745079012652">Sebut Kembali Jawapan</translation>
+<translation id="7207023858769244910">Segerakkan untuk mendapatkan kandungan berdasarkan minat anda.</translation>
 <translation id="7207383424303353046">Baharu: Buka tapak dalam Chrome secara automatik dengan menjadikan Chrome Apl Penyemak Imbas Lalai anda. <ph name="BEGIN_LINK" />Buka Tetapan<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">Nama Panggilan Kad Tidak Sah</translation>
 <translation id="722454870747268814">Tab Inkognito Baharu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_my.xtb b/ios/chrome/app/strings/resources/ios_strings_my.xtb
index 16ce0a5..7d36b24 100644
--- a/ios/chrome/app/strings/resources/ios_strings_my.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_my.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">စင့်ခ်ကို စီမံခြင်း</translation>
 <translation id="1076421457278169141">ကုဒ်ကို ဖတ်ပြီးပါပြီ</translation>
 <translation id="1084365883616172403">ဖေ့စ်ဘွတ်တွင် တင်ပြခြင်း ပြီးစီပါပြီ။</translation>
-<translation id="1086486568852410168">Google Lens ဖြင့် ရှာရန်</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" />ကို အမြဲတမ်း ဘာသာပြန်ရန်</translation>
 <translation id="1104948393051856124">လက်ခံရန် &amp; ဆက်လုပ်ရန်</translation>
 <translation id="110724200315609752">'ဖွင့်ထားသော ဝင်းဒိုး' သို့ပြောင်းရန်</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">သင်၏ဘရောင်ဇာကို စီမံခန့်ခွဲထားသည်။ <ph name="BEGIN_LINK" />အသေးစိတ်<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">စကားဝှက် ဖျောက်ထားရန်</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> အကြောင်းအရာများ</translation>
+<translation id="1450170672351507823">ပုံမှန်ကာကွယ်မှုကို ဖွင့်ထားသည်။ ပိုမိုလုံခြုံစေရန် ‘အဆင့်မြင့်ကာကွယ်မှု’ သုံးပါ။</translation>
 <translation id="149095475893949513">ဤဝဘ်ဆိုက်သည် စီစဉ်သတ်မှတ်ချက် ပရိုဖိုင်ကို ဒေါင်းလုဒ်လုပ်ရန် ကြိုးစားနေသည်။</translation>
 <translation id="1491277525950327607">ဆက်တင်ကို ကစားကြည့်ရန် နှစ်ချက်တို့ပါ</translation>
 <translation id="1492417797159476138">ယခုဝဘ်ဆိုက်အတွက် ဤအသုံးပြုသူအမည်ကို သိမ်းပြီးဖြစ်သည်</translation>
@@ -163,6 +163,7 @@
 <translation id="236977714248711277">သင်၏ဝဘ်ကြည့်ရှုမှု ပိုကောင်းမွန်စေရန် ဥပမာအားဖြင့် အမြဲလက်မှတ်ထိုးဝင်ထားရန် သို့မဟုတ် ဈေးခြင်းတောင်းထဲရှိ အရာများ မှတ်ထားရန်တို့အတွက် ဝဘ်ဆိုက်များက ကွတ်ကီးများကို အသုံးပြု၍မရပါ။
 
 ဝဘ်ဆိုက်များသည် ကြော်ငြာများကို ပုဂ္ဂိုလ်ရေးသီးသန့်ပြုလုပ်ရန်အတွက် မတူညီသည့် ဝဘ်ဆိုက်များတစ်လျှောက်တွင် ကွတ်ကီးများသုံးပြီး သင့်ကြည့်ရှုခြင်းမှတ်တမ်းများကို ဝင်ကြည့်ခြင်းမျိုး မလုပ်နိုင်ပါ။</translation>
+<translation id="2375243552872247702">သင့်အတွက်အကြောင်းအရာများ ကြည့်ရန်</translation>
 <translation id="2381405137052800939">အခြေခံများ</translation>
 <translation id="2386793615875593361">1 ရွေးချယ်ထားသည်</translation>
 <translation id="2421004566762153674">ပြင်ပအဖွဲ့အစည်း၏ ကွတ်ကီးများကို ပိတ်ထားသည်</translation>
@@ -601,6 +602,7 @@
 <translation id="6136914049981179737">ပြီးခဲ့သော စက္ကန့်</translation>
 <translation id="6144589619057374135">ရုပ်ဖျက်မုဒ်တွင် ${url} ဖွင့်ရန်</translation>
 <translation id="6149061208933997199">စကားဝှက်အသုံးပြုမည်</translation>
+<translation id="6152406514676263192">သင့်စိတ်ဝင်စားမှုများအပေါ် အခြေခံသည့် အသက်ဆိုင်ဆုံး အကြောင်းအရာများအတွက် စင့်ခ်လုပ်နိုင်သည်။</translation>
 <translation id="6159839020698489198">ချန်လှပ်ထားနိုင်သည်</translation>
 <translation id="6177442314419606057">Chrome တွင် ရှာဖွေရန်</translation>
 <translation id="6184086493125982861">တဲဘ်များ ပြမည်</translation>
@@ -749,6 +751,7 @@
 <translation id="7189598951263744875">ဝေမျှရန်...</translation>
 <translation id="7192050974311852563">မှတ်တမ်းစတင်ရန်</translation>
 <translation id="7203585745079012652">အဖြေများကို ပြန်လည်ပြောကြားမည်</translation>
+<translation id="7207023858769244910">သင့်စိတ်ဝင်စားမှုများအပေါ် အခြေခံသည့် အကြောင်းအရာများ ရယူရန် စင့်ခ်လုပ်နိုင်သည်။</translation>
 <translation id="7207383424303353046">အသစ်- Chrome ကို 'မူရင်း ဘရောင်ဇာအက်ပ်' ပြုလုပ်ခြင်းဖြင့် ဝဘ်ဆိုက်များကို ၎င်းတွင် အလိုအလျောက်ဖွင့်နိုင်သည်။ <ph name="BEGIN_LINK" />ဆက်တင်များ ဖွင့်ရန်<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">မမှန်ကန်သော ကတ်နာမည်ပြောင်</translation>
 <translation id="722454870747268814">ရုပ်ဖျက်တဘ်အသစ်</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
index 7102aee..39f228c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ne.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">सिंक व्यवस्थापन गर्नुहोस्</translation>
 <translation id="1076421457278169141">कोड स्क्यान गरियो</translation>
 <translation id="1084365883616172403">Facebook पोस्ट पूरा भयो।</translation>
-<translation id="1086486568852410168">Google लेन्समार्फत खोज्नुहोस्</translation>
 <translation id="1103523840287552314">सँधै अनुवाद गर्नुहोस् <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">स्वीकार गर्नुहोस् र जारी राख्नुहोस्</translation>
 <translation id="110724200315609752">खुला विन्डोमा जानुहोस्</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">कसैले तपाईंको ब्राउजर व्यवस्थापन गर्छन्। <ph name="BEGIN_LINK" />विवरण<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">पासवर्ड लुकाउनुहोस्</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> वस्तुहरू</translation>
+<translation id="1450170672351507823">"मानक सुरक्षा" अन गरिएको छ। अझै बढी सुरक्षित हुन "परिष्कृत सुरक्षा" प्रयोग गर्नुहोस्।</translation>
 <translation id="149095475893949513">यो वेबसाइट कुनै कन्फिगुरेसन प्रोफाइल डाउनलोड गर्न खोज्दै छ।</translation>
 <translation id="1491277525950327607">सेटिङ टगल गर्न डबल ट्याप गर्नुहोस्</translation>
 <translation id="1492417797159476138">तपाईंले यो साइटका लागि यो युजरनेम सुरक्षित गरिसक्नुभएको छ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
index 61e9d67..111eb24 100644
--- a/ios/chrome/app/strings/resources/ios_strings_nl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Synchronisatie beheren</translation>
 <translation id="1076421457278169141">Code gescand</translation>
 <translation id="1084365883616172403">Facebook-bericht voltooid.</translation>
-<translation id="1086486568852410168">Zoeken met Google Lens</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> altijd vertalen</translation>
 <translation id="1104948393051856124">Accepteren en doorgaan</translation>
 <translation id="110724200315609752">Overschakelen naar geopend venster</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">Je browser wordt beheerd. <ph name="BEGIN_LINK" />Details<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">Wachtwoord verbergen</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> items</translation>
+<translation id="1450170672351507823">Standaardbeveiliging staat aan. Gebruik verbeterde beveiliging voor nog meer bescherming.</translation>
 <translation id="149095475893949513">Deze website probeert een configuratieprofiel te downloaden.</translation>
 <translation id="1491277525950327607">Dubbeltik om de instelling aan of uit te zetten</translation>
 <translation id="1492417797159476138">Je hebt deze gebruikersnaam al opgeslagen voor deze site</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb
index 729bb5b..efd9cb1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_no.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Administrer synkronisering</translation>
 <translation id="1076421457278169141">Koden er skannet</translation>
 <translation id="1084365883616172403">Facebook-innlegget er fullført.</translation>
-<translation id="1086486568852410168">Søk med Google Lens</translation>
 <translation id="1103523840287552314">Oversett alltid <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Godta og fortsett</translation>
 <translation id="110724200315609752">Bytt til åpent vindu</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">Nettleseren din administreres. <ph name="BEGIN_LINK" />Detaljer<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">Skjul passordet</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> elementer</translation>
+<translation id="1450170672351507823">Standardbeskyttelse er på. Bruk økt beskyttelse om du vil ha enda mer sikkerhet.</translation>
 <translation id="149095475893949513">Dette nettstedet prøver å laste ned en konfigurasjonsprofil.</translation>
 <translation id="1491277525950327607">Dobbelttrykk for å slå innstillingen av/på</translation>
 <translation id="1492417797159476138">Du har allerede lagret dette brukernavnet for dette nettstedet</translation>
@@ -163,6 +163,7 @@
 <translation id="236977714248711277">Nettsteder kan ikke bruke informasjonskapsler for å gi deg en bedre surfeopplevelse, for eksempel for å holde deg pålogget eller huske varene i handlekurven din.
 
 Nettsteder kan ikke bruke informasjonskapsler til å se nettleseraktiviteten din på andre nettsteder, for eksempel for å vise deg personlig tilpassede annonser.</translation>
+<translation id="2375243552872247702">Se innhold for deg</translation>
 <translation id="2381405137052800939">Grunninnstillinger</translation>
 <translation id="2386793615875593361">1 er valgt</translation>
 <translation id="2421004566762153674">Blokkerer informasjonskapsler fra tredjeparter</translation>
@@ -602,6 +603,7 @@
 <translation id="6136914049981179737">For noen sekunder siden</translation>
 <translation id="6144589619057374135">Åpne ${url} i inkognitomodus</translation>
 <translation id="6149061208933997199">Bruk passord</translation>
+<translation id="6152406514676263192">Synkroniser for å få det mest relevante innholdet basert på interessene dine.</translation>
 <translation id="6159839020698489198">valgfritt</translation>
 <translation id="6177442314419606057">Søk i Chrome</translation>
 <translation id="6184086493125982861">Vis faner</translation>
@@ -739,6 +741,7 @@
 <translation id="7099761977003084116">Nylige faner</translation>
 <translation id="7102005569666697658">Laster ned … <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">Skjul</translation>
+<translation id="7108762695052995889">Besøk nettstedet</translation>
 <translation id="7133798577887235672">Fullt navn</translation>
 <translation id="7136892417564438900">Kameraet er utilgjengelig</translation>
 <translation id="7153999225810839758"><ph name="TIME" /> minutt(er) å lese</translation>
@@ -749,6 +752,7 @@
 <translation id="7189598951263744875">Del</translation>
 <translation id="7192050974311852563">Start loggføring</translation>
 <translation id="7203585745079012652">Svar med tale</translation>
+<translation id="7207023858769244910">Synkroniser for å få innhold basert på interessene dine.</translation>
 <translation id="7207383424303353046">Nyhet: Åpne nettsteder i Chrome automatisk ved å angi den som standard nettleserapp. <ph name="BEGIN_LINK" />Åpne Innstillinger<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">Ugyldig kallenavn på kortet</translation>
 <translation id="722454870747268814">Ny inkognitofane</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_or.xtb b/ios/chrome/app/strings/resources/ios_strings_or.xtb
index 35a986f4..e933dea 100644
--- a/ios/chrome/app/strings/resources/ios_strings_or.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_or.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">ସିଙ୍କ ପରିଚାଳନା କରନ୍ତୁ</translation>
 <translation id="1076421457278169141">ସ୍କାନ୍ କରାଯାଇଥିବା କୋଡ୍</translation>
 <translation id="1084365883616172403">Facebookରେ ପୋଷ୍ଟ ଶେଷ ହୋଇଛି।</translation>
-<translation id="1086486568852410168">Google Lens ମାଧ୍ୟମରେ ସନ୍ଧାନ କରନ୍ତୁ</translation>
 <translation id="1103523840287552314">ସର୍ବଦା <ph name="LANGUAGE" /> ଅନୁବାଦ କରନ୍ତୁ</translation>
 <translation id="1104948393051856124">ସ୍ୱୀକାର କରନ୍ତୁ ଏବଂ ଜାରି ରଖନ୍ତୁ</translation>
 <translation id="110724200315609752">ଖୋଲା ଥିବା ୱିଣ୍ଡୋକୁ ସ୍ୱିଚ୍ କରନ୍ତୁ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
index f102497d..e889844 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">ਸਿੰਕ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation>
 <translation id="1076421457278169141">ਕੋਡ ਸਕੈਨ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="1084365883616172403">ਫੇਸਬੁੱਕ ਪੋਸਟ ਪੂਰੀ ਕੀਤੀ।</translation>
-<translation id="1086486568852410168">Google Lens ਨਾਲ ਖੋਜੋ</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> ਦਾ ਹਮੇਸ਼ਾਂ ਅਨੁਵਾਦ ਕਰੋ</translation>
 <translation id="1104948393051856124">ਸਵੀਕਾਰ ਕਰੋ &amp; ਜਾਰੀ ਰੱਖੋ</translation>
 <translation id="110724200315609752">ਖੁੱਲ੍ਹੀ ਵਿੰਡੋ 'ਤੇ ਜਾਓ</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਦਾ ਪ੍ਰਬੰਧਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। <ph name="BEGIN_LINK" />ਵੇਰਵੇ<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">ਪਾਸਵਰਡ ਲੁਕਾਓ</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> ਆਈਟਮਾਂ</translation>
+<translation id="1450170672351507823">ਮਿਆਰੀ ਸੁਰੱਖਿਆ ਚਾਲੂ ਹੈ। ਹੋਰ ਵੀ ਜ਼ਿਆਦਾ ਸੁਰੱਖਿਆ ਲਈ, ਵਿਸਤ੍ਰਿਤ ਸੁਰੱਖਿਆ ਵਰਤੋ।</translation>
 <translation id="149095475893949513">ਇਹ ਵੈੱਬਸਾਈਟ ਸੰਰੂਪਣ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੀ ਹੈ।</translation>
 <translation id="1491277525950327607">ਸੈਟਿੰਗ ਨੂੰ ਟੌਗਲ ਕਰਨ ਲਈ ਡਬਲ ਟੈਪ ਕਰੋ</translation>
 <translation id="1492417797159476138">ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਇਸ ਸਾਈਟ ਲਈ ਇਹ ਵਰਤੋਂਕਾਰ ਨਾਮ ਰੱਖਿਅਤ ਕਰ ਚੁੱਕੇ ਹੋ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
index 9522924..e90225c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Zarządzanie synchronizacją</translation>
 <translation id="1076421457278169141">Kod został zeskanowany</translation>
 <translation id="1084365883616172403">Post na Facebooku dodany.</translation>
-<translation id="1086486568852410168">Szukaj za pomocą Obiektywu Google</translation>
 <translation id="1103523840287552314">Zawsze tłumacz z języka: <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Zaakceptuj i kontynuuj</translation>
 <translation id="110724200315609752">Przełącz na otwarte okno</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 21d0edc5..60c54cc 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Gerenciar sincronização</translation>
 <translation id="1076421457278169141">Código lido</translation>
 <translation id="1084365883616172403">A postagem no Facebook foi concluída.</translation>
-<translation id="1086486568852410168">Pesquisar com o Lens</translation>
 <translation id="1103523840287552314">Sempre traduzir do <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Aceitar e continuar</translation>
 <translation id="110724200315609752">Mudar para janela aberta</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">Seu navegador é gerenciado. <ph name="BEGIN_LINK" />Detalhes<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">Ocultar senha</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> itens</translation>
+<translation id="1450170672351507823">A proteção padrão está ativada. Para ter ainda mais segurança, use a Proteção reforçada.</translation>
 <translation id="149095475893949513">O site está tentando fazer o download de um perfil de configuração.</translation>
 <translation id="1491277525950327607">Toque duas vezes para alternar a configuração</translation>
 <translation id="1492417797159476138">Você já salvou este nome de usuário para este site</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 a666320ed..fd6b2e0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Gerir a sincronização</translation>
 <translation id="1076421457278169141">Código digitalizado</translation>
 <translation id="1084365883616172403">Publicação no Facebook concluída.</translation>
-<translation id="1086486568852410168">Pesquisar com o Google Lens</translation>
 <translation id="1103523840287552314">Traduzir sempre <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Aceitar e Continuar</translation>
 <translation id="110724200315609752">Mudar para a janela aberta</translation>
@@ -164,6 +163,7 @@
 <translation id="236977714248711277">Os sites não podem utilizar cookies para melhorar a experiência de navegação, por exemplo, para manter a sua sessão iniciada ou memorizar os artigos no seu carrinho de compras.
 
 Os sites não podem utilizar cookies para ver a sua atividade de navegação em diferentes sites, por exemplo, para personalizar anúncios.</translation>
+<translation id="2375243552872247702">Veja conteúdo para si</translation>
 <translation id="2381405137052800939">Noções básicas</translation>
 <translation id="2386793615875593361">1 selecionada</translation>
 <translation id="2421004566762153674">Bloquear cookies de terceiros</translation>
@@ -603,6 +603,7 @@
 <translation id="6136914049981179737">Há segundos</translation>
 <translation id="6144589619057374135">Abrir ${url} na Navegação anónima</translation>
 <translation id="6149061208933997199">Util. palavra-passe</translation>
+<translation id="6152406514676263192">Sincronize para obter o conteúdo mais relevante com base nos seus interesses.</translation>
 <translation id="6159839020698489198">opcional</translation>
 <translation id="6177442314419606057">Pesquisar no Chrome</translation>
 <translation id="6184086493125982861">Mostrar Separadores</translation>
@@ -740,6 +741,7 @@
 <translation id="7099761977003084116">Separadores recentes</translation>
 <translation id="7102005569666697658">A transferir… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">Ocultar</translation>
+<translation id="7108762695052995889">Visitar site</translation>
 <translation id="7133798577887235672">Nome completo</translation>
 <translation id="7136892417564438900">A câmara não está disponível</translation>
 <translation id="7153999225810839758">Leitura de <ph name="TIME" /> minuto(s)</translation>
@@ -750,6 +752,7 @@
 <translation id="7189598951263744875">Partilhar...</translation>
 <translation id="7192050974311852563">Iniciar registo</translation>
 <translation id="7203585745079012652">Ouvir Respostas</translation>
+<translation id="7207023858769244910">Sincronize para obter conteúdo com base nos seus interesses.</translation>
 <translation id="7207383424303353046">Novidade: abra automaticamente os sites no Chrome ao torná-lo a sua app de navegador predefinida. <ph name="BEGIN_LINK" />Abra as Definições<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">Alcunha do cartão inválido</translation>
 <translation id="722454870747268814">Novo separador de navegação anónima</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
index ae3b2021..fda4411 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ro.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Gestionează sincronizarea</translation>
 <translation id="1076421457278169141">Codul a fost scanat</translation>
 <translation id="1084365883616172403">Postare pe Facebook finalizată.</translation>
-<translation id="1086486568852410168">Caută cu Google Lens</translation>
 <translation id="1103523840287552314">Tradu întotdeauna din <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Acceptă și continuă</translation>
 <translation id="110724200315609752">Comută la fereastra deschisă</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
index b44a7cb..6bb7777 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ru.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Синхронизация</translation>
 <translation id="1076421457278169141">Код отсканирован</translation>
 <translation id="1084365883616172403">Опубликовано в Facebook.</translation>
-<translation id="1086486568852410168">Поиск с Google Объективом</translation>
 <translation id="1103523840287552314">Всегда переводить <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Продолжить</translation>
 <translation id="110724200315609752">Переключиться на открытое окно</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_si.xtb b/ios/chrome/app/strings/resources/ios_strings_si.xtb
index 5624e2e0..92848d46 100644
--- a/ios/chrome/app/strings/resources/ios_strings_si.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_si.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">සමමුහූර්තය කළමනා කරන්න</translation>
 <translation id="1076421457278169141">කේතය ස්කෑන් කරන ලදී</translation>
 <translation id="1084365883616172403">Facebook පළ කිරීම සම්පූර්ණයි.</translation>
-<translation id="1086486568852410168">Google Lens සමග සොයන්න</translation>
 <translation id="1103523840287552314">සැමවිටම <ph name="LANGUAGE" /> පරිවර්තනය කරන්න</translation>
 <translation id="1104948393051856124">පිළිගෙන කරගෙන යන්න</translation>
 <translation id="110724200315609752">කවුළුව විවෘත කරන්න වෙත මාරු වන්න</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
index 03f7c46..71de883 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Správa synchronizácie</translation>
 <translation id="1076421457278169141">Kód bol naskenovaný</translation>
 <translation id="1084365883616172403">Príspevok bol uverejnený na Facebook.</translation>
-<translation id="1086486568852410168">Vyhľadávať pomocou funkcie Google Lens</translation>
 <translation id="1103523840287552314">Vždy preložiť nasledujúci jazyk: <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Prijať a pokračovať</translation>
 <translation id="110724200315609752">Prepnúť na otvorené okno</translation>
@@ -739,6 +738,7 @@
 <translation id="7099761977003084116">Nedávne karty</translation>
 <translation id="7102005569666697658">Sťahuje sa… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">Skryť</translation>
+<translation id="7108762695052995889">Navštíviť web</translation>
 <translation id="7133798577887235672">Celé meno</translation>
 <translation id="7136892417564438900">Kamera nie je k dispozícii</translation>
 <translation id="7153999225810839758">Čítanie na <ph name="TIME" /> min</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
index 042c289..1ed500c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Upravljanje sinhronizacije</translation>
 <translation id="1076421457278169141">Koda je bila optično prebrana</translation>
 <translation id="1084365883616172403">Objava v Facebooku je dokončana.</translation>
-<translation id="1086486568852410168">Iskanje z Googlom Lens</translation>
 <translation id="1103523840287552314">Vedno prevedi ta jezik: <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Sprejmi in nadaljuj</translation>
 <translation id="110724200315609752">Preklop na odprto okno</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
index b236a40..6aebf8f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sq.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Menaxho sinkronizimin</translation>
 <translation id="1076421457278169141">Kodi u skanua</translation>
 <translation id="1084365883616172403">Postimi në Facebook u krye.</translation>
-<translation id="1086486568852410168">Kërko me "Lenten e Google"</translation>
 <translation id="1103523840287552314">Përkthe gjithmonë nga <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Prano dhe vazhdo</translation>
 <translation id="110724200315609752">Kalo te dritarja e hapur</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 4badd59..0486ab8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Upravljajte sinhronizacijom</translation>
 <translation id="1076421457278169141">Skenirali ste kôd</translation>
 <translation id="1084365883616172403">Facebook post je dovršen.</translation>
-<translation id="1086486568852410168">Pretražite pomoću Google objektiva</translation>
 <translation id="1103523840287552314">Uvek prevodi <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Prihvati i nastavi</translation>
 <translation id="110724200315609752">Pređi na otvoren prozor</translation>
@@ -739,6 +738,7 @@
 <translation id="7099761977003084116">Nedavne kartice</translation>
 <translation id="7102005569666697658"><ph name="FILE_SIZE" /> se preuzima…</translation>
 <translation id="7108338896283013870">Sakrij</translation>
+<translation id="7108762695052995889">Idi na sajt</translation>
 <translation id="7133798577887235672">Ime i prezime</translation>
 <translation id="7136892417564438900">Kamera je nedostupna</translation>
 <translation id="7153999225810839758">Čita se za <ph name="TIME" /> min</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
index 2858a11..f07e7ad0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Управљајте синхронизацијом</translation>
 <translation id="1076421457278169141">Скенирали сте кôд</translation>
 <translation id="1084365883616172403">Facebook пост је довршен.</translation>
-<translation id="1086486568852410168">Претражите помоћу Google објектива</translation>
 <translation id="1103523840287552314">Увек преводи <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Прихвати и настави</translation>
 <translation id="110724200315609752">Пређи на отворен прозор</translation>
@@ -739,6 +738,7 @@
 <translation id="7099761977003084116">Недавне картице</translation>
 <translation id="7102005569666697658"><ph name="FILE_SIZE" /> се преузима…</translation>
 <translation id="7108338896283013870">Сакриј</translation>
+<translation id="7108762695052995889">Иди на сајт</translation>
 <translation id="7133798577887235672">Име и презиме</translation>
 <translation id="7136892417564438900">Камера је недоступна</translation>
 <translation id="7153999225810839758">Чита се за <ph name="TIME" /> мин</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
index 79d94ce..1a83956 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sv.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Hantera synkronisering</translation>
 <translation id="1076421457278169141">Koden skannades</translation>
 <translation id="1084365883616172403">Inlägg på Facebook klart.</translation>
-<translation id="1086486568852410168">Sök med Google Lens</translation>
 <translation id="1103523840287552314">Översätt alltid <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Godkänn och fortsätt</translation>
 <translation id="110724200315609752">Byt till Öppet fönster</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
index a74ff55..ea5f67d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sw.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Dhibiti Usawazishaji</translation>
 <translation id="1076421457278169141">Msimbo umechanganuliwa</translation>
 <translation id="1084365883616172403">Chapisho la Facebook limekamilika.</translation>
-<translation id="1086486568852410168">Tafuta ukitumia Lenzi ya Google</translation>
 <translation id="1103523840287552314">Tafsiri <ph name="LANGUAGE" /> kila wakati</translation>
 <translation id="1104948393051856124">Kubali na Uendelee</translation>
 <translation id="110724200315609752">Nenda kwenye Dirisha Lililofunguka</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
index 05e45e90..a13224b3 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">ஒத்திசைவை நிர்வகித்தல்</translation>
 <translation id="1076421457278169141">குறியீடு ஸ்கேன் செய்யப்பட்டது</translation>
 <translation id="1084365883616172403">Facebook இடுகை நிறைவுபெற்றது.</translation>
-<translation id="1086486568852410168">Google Lens மூலம் தேடு</translation>
 <translation id="1103523840287552314">எப்போதும் இந்த மொழியை மொழிபெயர் <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">ஏற்று தொடரவும்</translation>
 <translation id="110724200315609752">திறந்திருக்கும் சாளரத்திற்குச் செல்</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">உங்கள் உலாவி நிர்வகிக்கப்படுகிறது. <ph name="BEGIN_LINK" />விவரங்கள்<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">கடவுச்சொல்லை மறைக்கும்</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> உருப்படிகள்</translation>
+<translation id="1450170672351507823">நிலையான பாதுகாப்பு இயக்கப்பட்டுள்ளது. இன்னும் கூடுதலான பாதுகாப்பிற்கு மேம்பட்ட பாதுகாப்பைப் பயன்படுத்துங்கள்.</translation>
 <translation id="149095475893949513">உள்ளமைவுச் சுயவிவரத்தை இந்த இணையதளம் பதிவிறக்க முயல்கிறது.</translation>
 <translation id="1491277525950327607">அமைப்பை நிலைமாற்ற, இருமுறை தட்டவும்</translation>
 <translation id="1492417797159476138">இந்தத் தளத்தில் இந்தப் பயனர்பெயரை ஏற்கெனவே சேமித்துள்ளீர்கள்</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb
index fb62d20..91cfef9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_te.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">సింక్‌ను నిర్వహించండి</translation>
 <translation id="1076421457278169141">కోడ్ స్కాన్ చేయబడింది</translation>
 <translation id="1084365883616172403">Facebook పోస్ట్ పూర్తయింది.</translation>
-<translation id="1086486568852410168">Google Lensతో సెర్చ్ చేయండి</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" />‌ను ఎల్లప్పుడూ అనువదించండి</translation>
 <translation id="1104948393051856124">అంగీకరించు &amp; కొనసాగు</translation>
 <translation id="110724200315609752">తెరిచి ఉన్న విండోకు స్విచ్ అవ్వండి</translation>
@@ -163,6 +162,7 @@
 <translation id="236977714248711277">మీ బ్రౌజింగ్ అనుభవాన్ని మెరుగుపరచడానికి సైట్‌లు కుక్కీలను ఉపయోగించలేవు, ఉదాహరణకు, మిమ్మల్ని సైన్ ఇన్ చేసి ఉంచడం, మీ షాపింగ్ కార్ట్‌లో ఐటెమ్‌లను గుర్తు చేయడం లాంటివి.
 
 వివిధ సైట్‌లలో మీ బ్రౌజింగ్ యాక్టివిటీని చూడటానికి సైట్‌లు కుక్కీలను ఉపయోగించలేవు, ఉదాహరణకు, యాడ్‌లను వ్యక్తిగతీకరించడం లాంటివి.</translation>
+<translation id="2375243552872247702">మీ కోసం అనుకూలీకరించిన కంటెంట్‌ను చూడండి</translation>
 <translation id="2381405137052800939">ప్రాథమికాలు</translation>
 <translation id="2386793615875593361">1 ఎంచుకోబడింది</translation>
 <translation id="2421004566762153674">థర్డ్-పార్టీ కుక్కీలను బ్లాక్ చేయడం</translation>
@@ -602,6 +602,7 @@
 <translation id="6136914049981179737">సెకన్ల క్రితం</translation>
 <translation id="6144589619057374135">${url}ను అజ్ఞాత మోడ్‌లో తెరవండి</translation>
 <translation id="6149061208933997199">పాస్‌వర్డ్‌ను ఉపయోగించు</translation>
+<translation id="6152406514676263192">మీ ఆసక్తుల ఆధారంగా అత్యంత సందర్భోచితమైన కంటెంట్ కోసం సింక్ చేయండి.</translation>
 <translation id="6159839020698489198">ఆప్షనల్</translation>
 <translation id="6177442314419606057">Chromeలో వెతకండి</translation>
 <translation id="6184086493125982861">ట్యాబ్‌లను చూపించు</translation>
@@ -750,6 +751,7 @@
 <translation id="7189598951263744875">షేర్ చేయండి...</translation>
 <translation id="7192050974311852563">లాగ్ చేయడం ప్రారంభించు</translation>
 <translation id="7203585745079012652">సమాధానాలను చదివి వినిపించు</translation>
+<translation id="7207023858769244910">సింక్ చేసి, మీ ఆసక్తుల ఆధారంగా కంటెంట్‌ను పొందండి.</translation>
 <translation id="7207383424303353046">కొత్తది: Chromeను మీ ఆటోమేటిక్ బ్రౌజర్ యాప్‌గా చేయడం ద్వారా, దానిలో సైట్‌లను ఆటోమేటిక్‌గా తెరవండి. <ph name="BEGIN_LINK" />సెట్టింగ్‌లను తెరవండి<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">కార్డ్ మారుపేరు చెల్లదు</translation>
 <translation id="722454870747268814">కొత్త అజ్ఞాత ట్యాబ్</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_th.xtb b/ios/chrome/app/strings/resources/ios_strings_th.xtb
index fca6bf8..18742d85 100644
--- a/ios/chrome/app/strings/resources/ios_strings_th.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_th.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">จัดการการซิงค์</translation>
 <translation id="1076421457278169141">สแกนโค้ดแล้ว</translation>
 <translation id="1084365883616172403">โพสต์ใน Facebook แล้ว</translation>
-<translation id="1086486568852410168">ค้นหาด้วย Google Lens</translation>
 <translation id="1103523840287552314">แปลภาษา<ph name="LANGUAGE" />ทุกครั้ง</translation>
 <translation id="1104948393051856124">ยอมรับและดำเนินการต่อ</translation>
 <translation id="110724200315609752">เปลี่ยนเพื่อเปิดหน้าต่าง</translation>
@@ -66,6 +65,7 @@
 <translation id="1434356225517321998">เบราว์เซอร์ของคุณมีการจัดการ <ph name="BEGIN_LINK" />รายละเอียด<ph name="END_LINK" /></translation>
 <translation id="1449835205994625556">ซ่อนรหัสผ่าน</translation>
 <translation id="145015347812617860"><ph name="COUNT" /> รายการ</translation>
+<translation id="1450170672351507823">การปกป้องแบบมาตรฐานเปิดอยู่ ใช้การปกป้องที่ปรับปรุงแล้วเพื่อความปลอดภัยมากขึ้น</translation>
 <translation id="149095475893949513">เว็บไซต์นี้พยายามดาวน์โหลดโปรไฟล์การกำหนดค่า</translation>
 <translation id="1491277525950327607">แตะ 2 ครั้งเพื่อสลับการตั้งค่า</translation>
 <translation id="1492417797159476138">คุณบันทึกชื่อผู้ใช้นี้สำหรับเว็บไซต์นี้แล้ว</translation>
@@ -739,6 +739,7 @@
 <translation id="7099761977003084116">แท็บล่าสุด</translation>
 <translation id="7102005569666697658">กำลังดาวน์โหลด… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">ซ่อน</translation>
+<translation id="7108762695052995889">เข้าชมเว็บไซต์</translation>
 <translation id="7133798577887235672">ชื่อและนามสกุล</translation>
 <translation id="7136892417564438900">กล้องถ่ายรูปไม่พร้อมใช้งาน</translation>
 <translation id="7153999225810839758">ใช้เวลาอ่าน <ph name="TIME" /> นาที</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
index eef92a21..235fb79 100644
--- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Senkronizasyonu yönetin</translation>
 <translation id="1076421457278169141">Kod tarandı</translation>
 <translation id="1084365883616172403">Facebook yayını tamamlandı.</translation>
-<translation id="1086486568852410168">Google Lens ile ara</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> dilini daima çevir</translation>
 <translation id="1104948393051856124">Kabul Et ve Devam Et</translation>
 <translation id="110724200315609752">Açık Pencereye Geç</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
index ec55fbb..4bb0c486e 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Керуйте синхронізацією</translation>
 <translation id="1076421457278169141">Код зіскановано</translation>
 <translation id="1084365883616172403">Опубліковано у Facebook</translation>
-<translation id="1086486568852410168">Шукати через Об’єктив</translation>
 <translation id="1103523840287552314">Завжди перекладати з такої мови: <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Прийняти та продовжити</translation>
 <translation id="110724200315609752">Перейти у відкрите вікно</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
index 5b4c406..d13ed59 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ur.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">مطابقت پذیری کا نظم کريں</translation>
 <translation id="1076421457278169141">کوڈ اسکین ہوگیا</translation>
 <translation id="1084365883616172403">‏Facebook کی اشاعت مکمل ہوگئی۔</translation>
-<translation id="1086486568852410168">‏Google لینز سے تلاش کریں</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> کو ہمیشہ ترجمہ کریں</translation>
 <translation id="1104948393051856124">قبول کریں اور جاری رکھیں</translation>
 <translation id="110724200315609752">کھلی ہوئی ونڈو پر سوئچ کریں</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
index d44293e..3979cae 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Sinxronizatsiyani boshqarish</translation>
 <translation id="1076421457278169141">Kod skanerlandi</translation>
 <translation id="1084365883616172403">Facebook’ka joylandi.</translation>
-<translation id="1086486568852410168">Google Lens orqali qidirish</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> tilidan har doim tarjima qilinsin</translation>
 <translation id="1104948393051856124">Davom etish</translation>
 <translation id="110724200315609752">Yopilmagan oynalarga oʻtish</translation>
@@ -164,6 +163,7 @@
 <translation id="236977714248711277">Saytlar sahifalarni kezishingizni yaxshilash, jumladan, kirish axborotingiz yoki xarid qutingizni eslab qolish uchun cookie fayllardan foydalana olmaydi.
 
 Saytlar reklamalarni sizga moslashtirish uchun brauzerdagi faoliyatingizni kuzata olmaydi.</translation>
+<translation id="2375243552872247702">Siz uchun kontent</translation>
 <translation id="2381405137052800939">Asosiy</translation>
 <translation id="2386793615875593361">1 ta belgilandi</translation>
 <translation id="2421004566762153674">Tashqi cookie fayllarni bloklash</translation>
@@ -603,6 +603,7 @@
 <translation id="6136914049981179737">Yaqinda</translation>
 <translation id="6144589619057374135">${url} sahifasini Inkognito rejimida ochish</translation>
 <translation id="6149061208933997199">Paroldan foydalanish</translation>
+<translation id="6152406514676263192">Qiziqishlar asosida eng mos kontent chiqishini sinxronlash.</translation>
 <translation id="6159839020698489198">ixtiyoriy</translation>
 <translation id="6177442314419606057">Chromedan qidirish</translation>
 <translation id="6184086493125982861">Tablarni ko‘rsatish</translation>
@@ -750,6 +751,7 @@
 <translation id="7189598951263744875">Ulashish…</translation>
 <translation id="7192050974311852563">Yozib olishni boshlash</translation>
 <translation id="7203585745079012652">Qidiruv natijalari o‘qilsin</translation>
+<translation id="7207023858769244910">Qiziqishlar asosida yangi kontent chiqishini sinxronlash.</translation>
 <translation id="7207383424303353046">Yangi: Saytlar Chrome brauzerida avtomatik ochilishi uchun uni birlamchi brauzer etib tayinlash kifoya. <ph name="BEGIN_LINK" />Sozlamalarni ochish<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">Karta nomi yaroqsiz</translation>
 <translation id="722454870747268814">Yangi inkognito sahifa</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
index ad531a00..f581b24 100644
--- a/ios/chrome/app/strings/resources/ios_strings_vi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Quản lý dữ liệu đồng bộ hóa</translation>
 <translation id="1076421457278169141">Đã quét mã</translation>
 <translation id="1084365883616172403">Đã đăng lên Facebook.</translation>
-<translation id="1086486568852410168">Tìm kiếm bằng Google Ống kính</translation>
 <translation id="1103523840287552314">Luôn dịch <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Chấp nhận và tiếp tục</translation>
 <translation id="110724200315609752">Chuyển sang Cửa sổ đang mở</translation>
@@ -163,6 +162,7 @@
 <translation id="236977714248711277">Các trang web không thể dùng cookie để cải thiện trải nghiệm duyệt web của bạn, chẳng hạn như để duy trì trạng thái đăng nhập hoặc ghi nhớ các mặt hàng có trong giỏ hàng.
 
 Các trang web không thể dùng cookie để giám sát hoạt động duyệt web của bạn trên nhiều trang web, chẳng hạn như để điều chỉnh quảng cáo cho phù hợp với bạn.</translation>
+<translation id="2375243552872247702">Xem Nội dung dành cho bạn</translation>
 <translation id="2381405137052800939">Thông tin cơ bản</translation>
 <translation id="2386793615875593361">Đã chọn 1</translation>
 <translation id="2421004566762153674">Chặn cookie của bên thứ ba</translation>
@@ -602,6 +602,7 @@
 <translation id="6136914049981179737">Giây trước</translation>
 <translation id="6144589619057374135">Mở ${url} ở Chế độ ẩn danh</translation>
 <translation id="6149061208933997199">Sử dụng mật khẩu</translation>
+<translation id="6152406514676263192">Đồng bộ hóa cho nội dung phù hợp nhất dựa trên mối quan tâm của bạn.</translation>
 <translation id="6159839020698489198">không bắt buộc</translation>
 <translation id="6177442314419606057">Tìm kiếm trong Chrome</translation>
 <translation id="6184086493125982861">Hiển thị thẻ</translation>
@@ -750,6 +751,7 @@
 <translation id="7189598951263744875">Chia sẻ...</translation>
 <translation id="7192050974311852563">Bắt đầu ghi nhật ký</translation>
 <translation id="7203585745079012652">Trả lời bằng giọng nói</translation>
+<translation id="7207023858769244910">Đồng bộ hóa để nhận nội dung dựa trên mối quan tâm của bạn.</translation>
 <translation id="7207383424303353046">Mới: Tự động mở các trang web trên Chrome bằng cách đặt Chrome làm Ứng dụng trình duyệt mặc định. <ph name="BEGIN_LINK" />Mở phần Cài đặt<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">Biệt hiệu của thẻ không hợp lệ</translation>
 <translation id="722454870747268814">Thẻ ẩn danh mới</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 c58b04b..906ed143 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">管理同步功能</translation>
 <translation id="1076421457278169141">已扫描代码</translation>
 <translation id="1084365883616172403">Facebook 信息发布已完成。</translation>
-<translation id="1086486568852410168">使用 Google 智能镜头搜索</translation>
 <translation id="1103523840287552314">一律翻译<ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">接受并继续</translation>
 <translation id="110724200315609752">切换到另一个已打开的窗口</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 bf6e8e9fe..68bf961 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">管理同步功能</translation>
 <translation id="1076421457278169141">已掃描編碼</translation>
 <translation id="1084365883616172403">已順利發布到 Facebook。</translation>
-<translation id="1086486568852410168">使用「Google 智能鏡頭」搜尋</translation>
 <translation id="1103523840287552314">永遠翻譯<ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">接受並繼續</translation>
 <translation id="110724200315609752">切換至已開啟的視窗</translation>
@@ -738,6 +737,7 @@
 <translation id="7099761977003084116">最近開啟的分頁</translation>
 <translation id="7102005569666697658">正在下載…<ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">隱藏</translation>
+<translation id="7108762695052995889">造訪網站</translation>
 <translation id="7133798577887235672">完整名稱</translation>
 <translation id="7136892417564438900">無法使用相機</translation>
 <translation id="7153999225810839758">閱讀時間:<ph name="TIME" /> 分鐘</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 89ac48da..afeeae6b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">管理同步功能</translation>
 <translation id="1076421457278169141">已掃描圖碼/條碼</translation>
 <translation id="1084365883616172403">已順利發布到 Facebook。</translation>
-<translation id="1086486568852410168">透過 Google 智慧鏡頭搜尋</translation>
 <translation id="1103523840287552314">一律翻譯<ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">接受並繼續</translation>
 <translation id="110724200315609752">切換至已開啟的視窗</translation>
@@ -739,6 +738,7 @@
 <translation id="7099761977003084116">最近開啟的分頁</translation>
 <translation id="7102005569666697658">下載中… <ph name="FILE_SIZE" /></translation>
 <translation id="7108338896283013870">隱藏</translation>
+<translation id="7108762695052995889">造訪網站</translation>
 <translation id="7133798577887235672">完整名稱</translation>
 <translation id="7136892417564438900">無法使用相機</translation>
 <translation id="7153999225810839758">閱讀時間:<ph name="TIME" /> 分鐘</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
index eacd900..698c0b62 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
@@ -18,7 +18,6 @@
 <translation id="1066060668811609597">Phatha ukuvumelanisa</translation>
 <translation id="1076421457278169141">Ikhodi iskeniwe</translation>
 <translation id="1084365883616172403">Okuthunyelwe kwe-Facebook kuqedile.</translation>
-<translation id="1086486568852410168">Sesha ngama-Google Lens</translation>
 <translation id="1103523840287552314">Humusha njalo i-<ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Yamukela futhi uqhubeke</translation>
 <translation id="110724200315609752">Shintshela Kuwindi Elivuliwe</translation>
diff --git a/ios/chrome/browser/credential_provider/credential_provider_service.mm b/ios/chrome/browser/credential_provider/credential_provider_service.mm
index f8c0114..ef9d50b 100644
--- a/ios/chrome/browser/credential_provider/credential_provider_service.mm
+++ b/ios/chrome/browser/credential_provider/credential_provider_service.mm
@@ -245,12 +245,16 @@
 
 void CredentialProviderService::AddCredentials(
     std::vector<std::unique_ptr<PasswordForm>> forms) {
+  // User is adding a password (not batch add from user login).
+  const bool should_skip_max_verification = forms.size() == 1;
+
   for (const auto& form : forms) {
     NSString* favicon_key = nil;
     if (IsFaviconEnabled()) {
       favicon_key = GetFaviconFileKey(form->url);
       // Fetch the favicon and save it to the storage.
-      FetchFaviconForURLToPath(favicon_loader_, form->url, favicon_key);
+      FetchFaviconForURLToPath(favicon_loader_, form->url, favicon_key,
+                               should_skip_max_verification);
     }
 
     ArchivableCredential* credential =
diff --git a/ios/chrome/browser/credential_provider/credential_provider_util.h b/ios/chrome/browser/credential_provider/credential_provider_util.h
index 285b120..fc14e9c 100644
--- a/ios/chrome/browser/credential_provider/credential_provider_util.h
+++ b/ios/chrome/browser/credential_provider/credential_provider_util.h
@@ -16,10 +16,11 @@
 NSString* RecordIdentifierForPasswordForm(
     const password_manager::PasswordForm& form);
 
-// Fetch the favicon and save it to the Chrome app group storage.
+// Fetches the favicon and saves it to the Chrome app group storage.
 void FetchFaviconForURLToPath(FaviconLoader* favicon_loader,
                               const GURL& site_url,
-                              NSString* filename);
+                              NSString* filename,
+                              bool skip_max_verification);
 
 // Returns the favicon file key.
 NSString* GetFaviconFileKey(const GURL& url);
diff --git a/ios/chrome/browser/credential_provider/credential_provider_util.mm b/ios/chrome/browser/credential_provider/credential_provider_util.mm
index b48f86b..186e0c88 100644
--- a/ios/chrome/browser/credential_provider/credential_provider_util.mm
+++ b/ios/chrome/browser/credential_provider/credential_provider_util.mm
@@ -5,6 +5,8 @@
 #import "ios/chrome/browser/credential_provider/credential_provider_util.h"
 
 #include <CommonCrypto/CommonDigest.h>
+
+#include "base/mac/foundation_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/thread_pool.h"
@@ -27,6 +29,19 @@
 using base::SysUTF16ToNSString;
 using base::UTF8ToUTF16;
 
+namespace {
+
+// Max number of stored favicons.
+int const kMaxNumberOfFavicons = 2000;
+
+// Key used to store the favicons last sync date in the user preferences.
+NSString* const kFaviconsLastSyncDatePrefKey = @"FaviconsLastSyncDatePrefKey";
+
+// The minimum number of days between the last sync and today.
+constexpr base::TimeDelta kResyncInterval = base::Days(7);
+
+}  // namespace
+
 NSString* RecordIdentifierForPasswordForm(
     const password_manager::PasswordForm& form) {
   // These are the UNIQUE keys in the login database.
@@ -84,11 +99,29 @@
       std::move(write_image));
 }
 
-void FetchFaviconForURLToPath(FaviconLoader* favicon_loader,
-                              const GURL& site_url,
-                              NSString* filename) {
-  DCHECK(favicon_loader);
-  DCHECK(filename);
+// Returns true to continue fetching favicon if the app group storage does not
+// contain more than the max number of favicons or if the verification is
+// skipped.
+bool ShouldContinueFetchingFavicon() {
+  base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
+                                                base::BlockingType::WILL_BLOCK);
+  return
+      [[[NSFileManager defaultManager]
+          contentsOfDirectoryAtPath:app_group::SharedFaviconAttributesFolder()
+                                        .path
+                              error:nil] count] < kMaxNumberOfFavicons;
+}
+
+// Fetches favicon from site URL and saves it to `filename`.
+void ContinueFetchingFavicon(base::WeakPtr<FaviconLoader> weak_favicon_loader,
+                             const GURL& site_url,
+                             NSString* filename,
+                             bool continue_fetching) {
+  FaviconLoader* favicon_loader = weak_favicon_loader.get();
+  if (!continue_fetching || !favicon_loader) {
+    // Reached max number of stored favicons or favicon loader is null.
+    return;
+  }
   favicon_loader->FaviconForPageUrl(
       site_url, kDesiredMediumFaviconSizePt, kMinFaviconSizePt,
       /*fallback_to_google_server=*/false, ^(FaviconAttributes* attributes) {
@@ -96,8 +129,48 @@
       });
 }
 
-// Clean up obsolete favicons from the Chrome app group storage.
-void CleanUpFavicons() {
+void FetchFaviconForURLToPath(FaviconLoader* favicon_loader,
+                              const GURL& site_url,
+                              NSString* filename,
+                              bool skip_max_verification) {
+  DCHECK(favicon_loader);
+  DCHECK(filename);
+  if (skip_max_verification) {
+    ContinueFetchingFavicon(favicon_loader->AsWeakPtr(), site_url, filename,
+                            /* continue_fetching */ YES);
+  } else {
+    base::ThreadPool::PostTaskAndReplyWithResult(
+        FROM_HERE, {base::MayBlock()},
+        base::BindOnce(&ShouldContinueFetchingFavicon),
+        base::BindOnce(&ContinueFetchingFavicon, favicon_loader->AsWeakPtr(),
+                       site_url, filename));
+  }
+}
+
+// Gets the last sync date for favicons in the app group storage.
+base::Time GetFaviconsLastSyncDate() {
+  NSDate* last_sync_date =
+      base::mac::ObjCCast<NSDate>([[NSUserDefaults standardUserDefaults]
+          objectForKey:kFaviconsLastSyncDatePrefKey]);
+  // If no value stored in the NSUserDefaults, consider that the last sync
+  // happened forever ago.
+  if (!last_sync_date)
+    return base::Time();
+  return base::Time::FromNSDate(last_sync_date);
+}
+
+// Sets the value of the last sync date for favicons in the app group storage.
+void SetFaviconsLastSyncDate(base::Time sync_time) {
+  [[NSUserDefaults standardUserDefaults]
+      setObject:sync_time.ToNSDate()
+         forKey:kFaviconsLastSyncDatePrefKey];
+}
+
+// Cleans up obsolete favicons from the Chrome app group storage.
+void CleanUpFavicons(NSSet* excess_favicons_filenames) {
+  base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
+                                                base::BlockingType::WILL_BLOCK);
+
   // TODO(crbug.com/1300569): Remove this when kEnableFaviconForPasswords flag
   // is removed.
   NSFileManager* file_manager = [NSFileManager defaultManager];
@@ -108,6 +181,11 @@
     if ([file_manager fileExistsAtPath:path]) {
       [file_manager removeItemAtPath:path error:nil];
     }
+
+    // Remove last sync date when the flag is disabled.
+    [[NSUserDefaults standardUserDefaults]
+        removeObjectForKey:kFaviconsLastSyncDatePrefKey];
+
     return;
   }
 
@@ -125,7 +203,8 @@
   NSMutableSet* credential_favicon_filename_set =
       [[NSMutableSet alloc] initWithCapacity:all_credentials.count];
   for (id<Credential> credential in all_credentials) {
-    if (credential.favicon) {
+    if (credential.favicon &&
+        ![excess_favicons_filenames containsObject:credential.favicon]) {
       [credential_favicon_filename_set addObject:credential.favicon];
     }
   }
@@ -142,64 +221,98 @@
       }
     }
   }
-}
 
-void CleanUpFaviconsInBackground() {
-  base::OnceCallback<void()> favicon_cleanup = base::BindOnce(^{
-    base::ScopedBlockingCall scoped_blocking_call(
-        FROM_HERE, base::BlockingType::WILL_BLOCK);
-    CleanUpFavicons();
-  });
-  base::ThreadPool::PostTask(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
-      std::move(favicon_cleanup));
+  // Store the last sync date.
+  SetFaviconsLastSyncDate(base::Time::Now());
 }
 
 void UpdateFaviconsStorage(FaviconLoader* favicon_loader) {
-  if (base::FeatureList::IsEnabled(
+  if (!base::FeatureList::IsEnabled(
           password_manager::features::kEnableFaviconForPasswords)) {
-    ArchivableCredentialStore* archivable_store =
-        [[ArchivableCredentialStore alloc]
-            initWithFileURL:CredentialProviderSharedArchivableStoreURL()];
-    NSArray<id<Credential>>* all_credentials = archivable_store.credentials;
+    // Call clean up to remove the repo when the flag is off.
+    base::ThreadPool::PostTask(
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
+        base::BindOnce(&CleanUpFavicons, [[NSMutableSet alloc] init]));
+    return;
+  }
 
-    for (id<Credential> credential : all_credentials) {
-      GURL url = GURL(base::SysNSStringToUTF8(credential.serviceIdentifier));
-      NSString* filename = credential.favicon;
-      if (!credential.favicon) {
-        // Add favicon name to the credential and update the store.
-        filename = GetFaviconFileKey(url);
-        ArchivableCredential* newCredential = [[ArchivableCredential alloc]
-                 initWithFavicon:filename
-              keychainIdentifier:credential.keychainIdentifier
-                            rank:credential.rank
-                recordIdentifier:credential.recordIdentifier
-               serviceIdentifier:credential.serviceIdentifier
-                     serviceName:credential.serviceName
-                            user:credential.user
-            validationIdentifier:credential.validationIdentifier];
-        if ([archivable_store
-                credentialWithRecordIdentifier:newCredential
-                                                   .recordIdentifier]) {
-          [archivable_store updateCredential:newCredential];
-        } else {
-          [archivable_store addCredential:newCredential];
+  // Verify if the app group storage for favicons needs to be synced and
+  // cleaned up by checking the last sync date.
+  const base::TimeDelta time_elapsed_since_last_sync =
+      base::Time::Now() - GetFaviconsLastSyncDate();
+  if (time_elapsed_since_last_sync < kResyncInterval) {
+    return;
+  }
+  ArchivableCredentialStore* archivable_store =
+      [[ArchivableCredentialStore alloc]
+          initWithFileURL:CredentialProviderSharedArchivableStoreURL()];
+  NSArray<id<Credential>>* all_credentials = archivable_store.credentials;
+
+  // Sort by highest rank.
+  NSArray<id<Credential>>* all_credentials_rank =
+      [all_credentials sortedArrayUsingComparator:^NSComparisonResult(
+                           id<Credential> c1, id<Credential> c2) {
+        if (c1.rank == c2.rank) {
+          return NSOrderedSame;
         }
-      }
+        return c1.rank > c2.rank ? NSOrderedAscending : NSOrderedDescending;
+      }];
 
-      // Fetch the favicon and save it to the app group storage.
-      if (filename) {
-        FetchFaviconForURLToPath(favicon_loader, url, filename);
+  // Truncate array if it is larger than the maximum and add the favicons
+  // file name to be removed in a set.
+  NSMutableSet* excess_favicons_filenames = [[NSMutableSet alloc] init];
+  if ([all_credentials_rank count] > kMaxNumberOfFavicons) {
+    for (NSUInteger i = kMaxNumberOfFavicons; i < all_credentials_rank.count;
+         i++) {
+      if ([all_credentials_rank objectAtIndex:i].favicon) {
+        [excess_favicons_filenames
+            addObject:[all_credentials_rank objectAtIndex:i].favicon];
+      }
+    }
+    all_credentials_rank = [all_credentials_rank
+        subarrayWithRange:NSMakeRange(0, kMaxNumberOfFavicons)];
+  }
+
+  for (id<Credential> credential : all_credentials_rank) {
+    GURL url = GURL(base::SysNSStringToUTF8(credential.serviceIdentifier));
+    NSString* filename = credential.favicon;
+    if (!credential.favicon) {
+      // Add favicon name to the credential and update the store.
+      filename = GetFaviconFileKey(url);
+      ArchivableCredential* newCredential = [[ArchivableCredential alloc]
+               initWithFavicon:filename
+            keychainIdentifier:credential.keychainIdentifier
+                          rank:credential.rank
+              recordIdentifier:credential.recordIdentifier
+             serviceIdentifier:credential.serviceIdentifier
+                   serviceName:credential.serviceName
+                          user:credential.user
+          validationIdentifier:credential.validationIdentifier];
+      if ([archivable_store
+              credentialWithRecordIdentifier:newCredential.recordIdentifier]) {
+        [archivable_store updateCredential:newCredential];
+      } else {
+        [archivable_store addCredential:newCredential];
       }
     }
 
-    // Save changes in the credential store and call the clean up method to
-    // remove obsolete favicons from the Chrome app group storage.
-    [archivable_store saveDataWithCompletion:^(NSError* error) {
-      CleanUpFaviconsInBackground();
-    }];
-  } else {
-    // Call clean up to remove the repo when the flag is off.
-    CleanUpFaviconsInBackground();
+    // Fetch the favicon and save it to the app group storage.
+    if (filename) {
+      FetchFaviconForURLToPath(favicon_loader, url, filename, YES);
+
+      // Remove file name duplicate because it is part of the top
+      // `kMaxNumberOfFavicons` credentials used by the user.
+      if ([excess_favicons_filenames containsObject:filename]) {
+        [excess_favicons_filenames removeObject:filename];
+      }
+    }
   }
+
+  // Save changes in the credential store and call the clean up method to
+  // remove obsolete favicons from the Chrome app group storage.
+  [archivable_store saveDataWithCompletion:^(NSError* error) {
+    base::ThreadPool::PostTask(
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
+        base::BindOnce(&CleanUpFavicons, excess_favicons_filenames));
+  }];
 }
diff --git a/ios/chrome/browser/favicon/favicon_loader.h b/ios/chrome/browser/favicon/favicon_loader.h
index 89f52fe..f10c4925 100644
--- a/ios/chrome/browser/favicon/favicon_loader.h
+++ b/ios/chrome/browser/favicon/favicon_loader.h
@@ -77,6 +77,9 @@
   // Cancel all incomplete requests.
   void CancellAllRequests();
 
+  // Return a weak pointer to the current object.
+  base::WeakPtr<FaviconLoader> AsWeakPtr();
+
  private:
   // The LargeIconService used to retrieve favicon.
   favicon::LargeIconService* large_icon_service_;
@@ -88,6 +91,8 @@
   // removed during low-memory conditions based on its inherent LRU removal
   // algorithm. Keyed by NSString of URL (page URL or icon URL) spec.
   NSCache<NSString*, FaviconAttributes*>* favicon_cache_;
+
+  base::WeakPtrFactory<FaviconLoader> weak_ptr_factory_{this};
 };
 
 #endif  // IOS_CHROME_BROWSER_FAVICON_FAVICON_LOADER_H_
diff --git a/ios/chrome/browser/favicon/favicon_loader.mm b/ios/chrome/browser/favicon/favicon_loader.mm
index 3304fb2..febf7b0d 100644
--- a/ios/chrome/browser/favicon/favicon_loader.mm
+++ b/ios/chrome/browser/favicon/favicon_loader.mm
@@ -268,3 +268,7 @@
 void FaviconLoader::CancellAllRequests() {
   cancelable_task_tracker_.TryCancelAll();
 }
+
+base::WeakPtr<FaviconLoader> FaviconLoader::AsWeakPtr() {
+  return weak_ptr_factory_.GetWeakPtr();
+}
diff --git a/ios/chrome/browser/flags/BUILD.gn b/ios/chrome/browser/flags/BUILD.gn
index 9c76418..740dc6a 100644
--- a/ios/chrome/browser/flags/BUILD.gn
+++ b/ios/chrome/browser/flags/BUILD.gn
@@ -69,7 +69,6 @@
     "//ios/chrome/browser/ui/overlays/infobar_banner:feature_flags",
     "//ios/chrome/browser/ui/popup_menu/overflow_menu:feature_flags",
     "//ios/chrome/browser/ui/start_surface:feature_flags",
-    "//ios/chrome/browser/ui/sync/utils:features",
     "//ios/chrome/browser/ui/tab_switcher/tab_grid:features",
     "//ios/chrome/browser/ui/toolbar_container:feature_flags",
     "//ios/chrome/browser/ui/util:features",
diff --git a/ios/chrome/browser/flags/about_flags.mm b/ios/chrome/browser/flags/about_flags.mm
index 4746b5ef..e90cb694 100644
--- a/ios/chrome/browser/flags/about_flags.mm
+++ b/ios/chrome/browser/flags/about_flags.mm
@@ -79,7 +79,6 @@
 #import "ios/chrome/browser/ui/overlays/infobar_banner/infobar_banner_features.h"
 #import "ios/chrome/browser/ui/popup_menu/overflow_menu/feature_flags.h"
 #import "ios/chrome/browser/ui/start_surface/start_surface_features.h"
-#import "ios/chrome/browser/ui/sync/utils/features.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_grid/features.h"
 #import "ios/chrome/browser/ui/toolbar_container/toolbar_container_features.h"
 #include "ios/chrome/browser/ui/ui_feature_flags.h"
@@ -913,10 +912,6 @@
     {"https-only-mode", flag_descriptions::kHttpsOnlyModeName,
      flag_descriptions::kHttpsOnlyModeDescription, flags_ui::kOsIos,
      FEATURE_VALUE_TYPE(security_interstitials::features::kHttpsOnlyMode)},
-    {"display-sync-errors-refactor",
-     flag_descriptions::kDisplaySyncErrorsRefactorName,
-     flag_descriptions::kDisplaySyncErrorsRefactorDescription, flags_ui::kOsIos,
-     FEATURE_VALUE_TYPE(kDisplaySyncErrorsRefactor)},
     {"smart-sorting-new-overflow-menu",
      flag_descriptions::kSmartSortingNewOverflowMenuName,
      flag_descriptions::kSmartSortingNewOverflowMenuDescription,
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
index 2aff901..97622a325 100644
--- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
+++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
@@ -198,12 +198,6 @@
     "When enabled, a sync promotion will be presented to eligible users on top "
     "of the feed cards.";
 
-const char kDisplaySyncErrorsRefactorName[] =
-    "Enable Display Sync Errors refactored code";
-const char kDisplaySyncErrorsRefactorDescription[] =
-    "When enabled, displaying sync errors logic is provided by a Browser Agent "
-    "not BVC.";
-
 const char kDownloadCalendarName[] = "Download Calendar";
 const char kDownloadCalendarDescription[] =
     "Allows user to download & save Calendar";
@@ -266,7 +260,7 @@
 
 const char kEnableFullscreenAPIName[] = "Enable Fullscreen API";
 const char kEnableFullscreenAPIDescription[] =
-    "Enable the Fullscreen API for web content (iOS 15.4+).";
+    "Enable the Fullscreen API for web content (iOS 16.0+).";
 
 const char kEnableLongMessageDurationName[] = "Enable long message duration";
 const char kEnableLongMessageDurationDescription[] =
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
index d249029..def07b45 100644
--- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
+++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
@@ -170,11 +170,6 @@
 extern const char kEnableDiscoverFeedTopSyncPromoName[];
 extern const char kEnableDiscoverFeedTopSyncPromoDescription[];
 
-// Title and description for the flag to enable DisplaySyncErrors refactored
-// code.
-extern const char kDisplaySyncErrorsRefactorName[];
-extern const char kDisplaySyncErrorsRefactorDescription[];
-
 // Title and description for the flag to enable Calendar support.
 extern const char kDownloadCalendarName[];
 extern const char kDownloadCalendarDescription[];
diff --git a/ios/chrome/browser/main/BUILD.gn b/ios/chrome/browser/main/BUILD.gn
index 4c7296b..c4c732d 100644
--- a/ios/chrome/browser/main/BUILD.gn
+++ b/ios/chrome/browser/main/BUILD.gn
@@ -59,6 +59,7 @@
     "//ios/chrome/browser/sessions:serialisation",
     "//ios/chrome/browser/sessions:session_service",
     "//ios/chrome/browser/snapshots",
+    "//ios/chrome/browser/sync:sync_error_browser_agent",
     "//ios/chrome/browser/tabs",
     "//ios/chrome/browser/ui/commands",
     "//ios/chrome/browser/ui/start_surface",
diff --git a/ios/chrome/browser/main/browser_agent_util.mm b/ios/chrome/browser/main/browser_agent_util.mm
index 2bf304b..d5c6574 100644
--- a/ios/chrome/browser/main/browser_agent_util.mm
+++ b/ios/chrome/browser/main/browser_agent_util.mm
@@ -18,6 +18,7 @@
 #import "ios/chrome/browser/sessions/session_restoration_browser_agent.h"
 #import "ios/chrome/browser/sessions/session_service_ios.h"
 #import "ios/chrome/browser/snapshots/snapshot_browser_agent.h"
+#import "ios/chrome/browser/sync/sync_error_browser_agent.h"
 #import "ios/chrome/browser/tabs/closing_web_state_observer_browser_agent.h"
 #import "ios/chrome/browser/tabs/synced_window_delegate_browser_agent.h"
 #import "ios/chrome/browser/tabs/tab_parenting_browser_agent.h"
@@ -94,6 +95,8 @@
   if (!browser->GetBrowserState()->IsOffTheRecord())
     StartSurfaceRecentTabBrowserAgent::CreateForBrowser(browser);
 
+  SyncErrorBrowserAgent::CreateForBrowser(browser);
+
   UpgradeCenterBrowserAgent::CreateForBrowser(browser,
                                               [UpgradeCenter sharedInstance]);
 
diff --git a/ios/chrome/browser/sync/BUILD.gn b/ios/chrome/browser/sync/BUILD.gn
index 4d9d7c5..501c8cec 100644
--- a/ios/chrome/browser/sync/BUILD.gn
+++ b/ios/chrome/browser/sync/BUILD.gn
@@ -107,6 +107,25 @@
   ]
 }
 
+source_set("sync_error_browser_agent") {
+  configs += [ "//build/config/compiler:enable_arc" ]
+  sources = [
+    "sync_error_browser_agent.h",
+    "sync_error_browser_agent.mm",
+  ]
+  deps = [
+    "//ios/chrome/browser/browser_state",
+    "//ios/chrome/browser/main:public",
+    "//ios/chrome/browser/ui/authentication",
+    "//ios/chrome/browser/ui/authentication:signin_presenter",
+    "//ios/chrome/browser/ui/settings/sync/utils",
+    "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/web_state_list",
+    "//ui/base",
+  ]
+  frameworks = [ "UIKit.framework" ]
+}
+
 source_set("test_support") {
   testonly = true
   sources = [
diff --git a/ios/chrome/browser/sync/DEPS b/ios/chrome/browser/sync/DEPS
index f79e7c6..ff3dfc7d 100644
--- a/ios/chrome/browser/sync/DEPS
+++ b/ios/chrome/browser/sync/DEPS
@@ -1,3 +1,12 @@
 include_rules = [
   "+components/consent_auditor",
 ]
+
+specific_include_rules = {
+#TODO(crbug.com/1334154): Remove exceptions as soon as BVC refactoring is complete
+  "sync_error_browser_agent\.mm": [
+    "+ios/chrome/browser/ui/authentication/re_signin_infobar_delegate.h",
+    "+ios/chrome/browser/ui/authentication/signin_presenter.h",
+    "+ios/chrome/browser/ui/settings/sync/utils/sync_util.h",
+  ],
+}
diff --git a/ios/chrome/browser/ui/sync/sync_error_browser_agent.h b/ios/chrome/browser/sync/sync_error_browser_agent.h
similarity index 90%
rename from ios/chrome/browser/ui/sync/sync_error_browser_agent.h
rename to ios/chrome/browser/sync/sync_error_browser_agent.h
index 30e25b3..0f2166a 100644
--- a/ios/chrome/browser/ui/sync/sync_error_browser_agent.h
+++ b/ios/chrome/browser/sync/sync_error_browser_agent.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef IOS_CHROME_BROWSER_UI_SYNC_SYNC_ERROR_BROWSER_AGENT_H_
-#define IOS_CHROME_BROWSER_UI_SYNC_SYNC_ERROR_BROWSER_AGENT_H_
+#ifndef IOS_CHROME_BROWSER_SYNC_SYNC_ERROR_BROWSER_AGENT_H_
+#define IOS_CHROME_BROWSER_SYNC_SYNC_ERROR_BROWSER_AGENT_H_
 
 #import "ios/chrome/browser/main/browser_observer.h"
 #import "ios/chrome/browser/main/browser_user_data.h"
@@ -55,4 +55,4 @@
   __weak id<SyncPresenter> sync_presenter_provider_;
 };
 
-#endif  // IOS_CHROME_BROWSER_UI_SYNC_SYNC_ERROR_BROWSER_AGENT_H_
+#endif  // IOS_CHROME_BROWSER_SYNC_SYNC_ERROR_BROWSER_AGENT_H_
diff --git a/ios/chrome/browser/ui/sync/sync_error_browser_agent.mm b/ios/chrome/browser/sync/sync_error_browser_agent.mm
similarity index 92%
rename from ios/chrome/browser/ui/sync/sync_error_browser_agent.mm
rename to ios/chrome/browser/sync/sync_error_browser_agent.mm
index 79bbc6b..3c9479f 100644
--- a/ios/chrome/browser/ui/sync/sync_error_browser_agent.mm
+++ b/ios/chrome/browser/sync/sync_error_browser_agent.mm
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#import "ios/chrome/browser/ui/sync/sync_error_browser_agent.h"
+#import "ios/chrome/browser/sync/sync_error_browser_agent.h"
 
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
 #import "ios/chrome/browser/ui/authentication/re_signin_infobar_delegate.h"
@@ -52,8 +52,9 @@
                                                web::WebState* web_state,
                                                int index,
                                                bool activating) {
-  DCHECK(signin_presenter_provider_);
-  DCHECK(sync_presenter_provider_);
+  if (signin_presenter_provider_ == nullptr ||
+      sync_presenter_provider_ == nullptr)
+    return;
 
   ChromeBrowserState* browser_state = browser_->GetBrowserState();
 
diff --git a/ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.h b/ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.h
index d0e0899..bb5e922 100644
--- a/ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.h
+++ b/ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.h
@@ -40,14 +40,14 @@
 // UIAlertControllerStyleActionSheet.
 @property(nonatomic, assign) UIAlertControllerStyle alertStyle;
 
-// Allows replacing title with an attributed string. |updateAttributedText| must
+// Allows replacing title with an attributed string. `updateAttributedText` must
 // be called afterward.
 @property(nonatomic, copy) NSAttributedString* attributedTitle;
-// Allows replacing message with an attributed string. |updateAttributedText|
+// Allows replacing message with an attributed string. `updateAttributedText`
 // must be called afterward.
 @property(nonatomic, copy) NSAttributedString* attributedMessage;
 
-// Updates text based on current |attributedTitle| and |attributedMessage|.
+// Updates text based on current `attributedTitle` and `attributedMessage`.
 - (void)updateAttributedText;
 
 @end
diff --git a/ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.mm b/ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.mm
index eb9fd14..f392289 100644
--- a/ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.mm
+++ b/ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.mm
@@ -24,12 +24,12 @@
   // The anchor mode for the popover alert.
   AnchorMode _anchorMode;
 
-  // Rectangle for the popover alert. Only used when |_anchorMode| is VIEW.
+  // Rectangle for the popover alert. Only used when `_anchorMode` is VIEW.
   CGRect _rect;
-  // View for the popovert alert. Only used when |_anchorMode| is VIEW.
+  // View for the popovert alert. Only used when `_anchorMode` is VIEW.
   __weak UIView* _view;
 
-  // Bar button item for the popover alert.  Only used when |_anchorMode| is
+  // Bar button item for the popover alert.  Only used when `_anchorMode` is
   // BAR_BUTTON_ITEM.
   UIBarButtonItem* _barButtonItem;
 }
diff --git a/ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h b/ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h
index fd9a14d..600a129 100644
--- a/ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h
+++ b/ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h
@@ -12,7 +12,7 @@
 
 // A coordinator specialization for the case where the coordinator is creating
 // and managing a modal alert to be displayed to the user.
-// Calling |-stop| on this coordinator dismisses the current alert with no
+// Calling `-stop` on this coordinator dismisses the current alert with no
 // animation then destroys it.
 @interface AlertCoordinator : ChromeCoordinator
 
@@ -22,17 +22,17 @@
 @property(nonatomic, copy, readonly) NSString* title;
 // Message of the alert.
 @property(nonatomic, copy) NSString* message;
-// Whether the alert is visible. This will be true after |-start| is called
-// until a subsequent |-stop|.
+// Whether the alert is visible. This will be true after `-start` is called
+// until a subsequent `-stop`.
 @property(nonatomic, readonly, getter=isVisible) BOOL visible;
-// Handler executed when calling |-executeCancelHandler|. This handler is
-// deleted when the alert is dismissed (user interaction or |-stop|).
+// Handler executed when calling `-executeCancelHandler`. This handler is
+// deleted when the alert is dismissed (user interaction or `-stop`).
 @property(nonatomic, copy) ProceduralBlock cancelAction;
 // Block called when the alert is about to be displayed.
 @property(nonatomic, copy) ProceduralBlock startAction;
-// Block called when the alert is stopped with |stop| or during dealloc. It is
+// Block called when the alert is stopped with `stop` or during dealloc. It is
 // called only if no interaction with the alert (user interaction or call to
-// |-executeCancelHandler|) has occurred.
+// `-executeCancelHandler`) has occurred.
 @property(nonatomic, copy) ProceduralBlock noInteractionAction;
 
 // Init a coordinator for displaying a alert on this view controller.
@@ -45,20 +45,20 @@
 - (instancetype)initWithBaseViewController:(UIViewController*)viewController
                                    browser:(Browser*)browser NS_UNAVAILABLE;
 
-// Adds an item at the end of the menu. It does nothing if |visible| is true or
+// Adds an item at the end of the menu. It does nothing if `visible` is true or
 // if trying to add an item with a UIAlertActionStyleCancel while
-// |cancelButtonAdded| is true. If |enabled| is NO, the action appears dimmed
+// `cancelButtonAdded` is true. If `enabled` is NO, the action appears dimmed
 // and non-interactable.
 - (void)addItemWithTitle:(NSString*)title
                   action:(ProceduralBlock)actionBlock
                    style:(UIAlertActionStyle)style
                  enabled:(BOOL)enabled;
-// Shorthand for the above method, with |enabled| = YES.
+// Shorthand for the above method, with `enabled` = YES.
 - (void)addItemWithTitle:(NSString*)title
                   action:(ProceduralBlock)actionBlock
                    style:(UIAlertActionStyle)style;
 
-// Executes |cancelAction|.
+// Executes `cancelAction`.
 - (void)executeCancelHandler;
 
 @end
@@ -66,7 +66,7 @@
 @interface AlertCoordinator (Subclassing)
 // The UIAlertController being managed by this coordinator.
 @property(nonatomic, readonly) UIAlertController* alertController;
-// Called when lazily instantiating |alertController|.  Subclasses should
+// Called when lazily instantiating `alertController`.  Subclasses should
 // override and return the appropriately configured UIAlertController.
 - (UIAlertController*)alertControllerWithTitle:(NSString*)title
                                        message:(NSString*)message;
diff --git a/ios/chrome/browser/ui/alert_coordinator/alert_coordinator.mm b/ios/chrome/browser/ui/alert_coordinator/alert_coordinator.mm
index de5666f..21e6876e 100644
--- a/ios/chrome/browser/ui/alert_coordinator/alert_coordinator.mm
+++ b/ios/chrome/browser/ui/alert_coordinator/alert_coordinator.mm
@@ -21,7 +21,7 @@
 @property(nonatomic, readwrite, getter=isVisible) BOOL visible;
 
 // Cancel action passed using the public API.
-// It will called from the overridden block stored in the |cancelAction|
+// It will called from the overridden block stored in the `cancelAction`
 // property.
 @property(nonatomic, copy) ProceduralBlock rawCancelAction;
 
diff --git a/ios/chrome/browser/ui/alert_coordinator/alert_coordinator_unittest.mm b/ios/chrome/browser/ui/alert_coordinator/alert_coordinator_unittest.mm
index 83224bd..1be2b72 100644
--- a/ios/chrome/browser/ui/alert_coordinator/alert_coordinator_unittest.mm
+++ b/ios/chrome/browser/ui/alert_coordinator/alert_coordinator_unittest.mm
@@ -237,7 +237,7 @@
   EXPECT_EQ(UIAlertActionStyleCancel, action.style);
 }
 
-// Tests that the |noInteractionAction| block is called for an alert coordinator
+// Tests that the `noInteractionAction` block is called for an alert coordinator
 // which is stopped before the user has interacted with it.
 TEST_F(AlertCoordinatorTest, NoInteractionActionTest) {
   // Setup.
@@ -259,7 +259,7 @@
   EXPECT_TRUE(block_called);
 }
 
-// Tests that the |noInteractionAction| block is not called for an alert
+// Tests that the `noInteractionAction` block is not called for an alert
 // coordinator which is dismissed with the cancel button.
 TEST_F(AlertCoordinatorTest, NoInteractionActionWithCancelTest) {
   // Setup.
diff --git a/ios/chrome/browser/ui/alert_coordinator/loading_alert_coordinator.mm b/ios/chrome/browser/ui/alert_coordinator/loading_alert_coordinator.mm
index 95fb77fd..58c9380 100644
--- a/ios/chrome/browser/ui/alert_coordinator/loading_alert_coordinator.mm
+++ b/ios/chrome/browser/ui/alert_coordinator/loading_alert_coordinator.mm
@@ -47,7 +47,7 @@
   NSString* _title;
   // Callback for the cancel button.
   ProceduralBlock _cancelHandler;
-  // View Controller which will be displayed on |baseViewController|.
+  // View Controller which will be displayed on `baseViewController`.
   UIViewController* _presentedViewController;
 }
 
@@ -68,7 +68,7 @@
   MDCDialogTransitionController* _transitionDelegate;
 }
 
-// Initializes with the |title| of the dialog and the |coordinator| which will
+// Initializes with the `title` of the dialog and the `coordinator` which will
 // be notified if the cancel callback occurs.
 - (instancetype)initWithTitle:(NSString*)title
                   coordinator:(LoadingAlertCoordinator*)coordinator;
diff --git a/ios/chrome/browser/ui/alert_coordinator/repost_form_coordinator.h b/ios/chrome/browser/ui/alert_coordinator/repost_form_coordinator.h
index 5546dc14..89eec4b 100644
--- a/ios/chrome/browser/ui/alert_coordinator/repost_form_coordinator.h
+++ b/ios/chrome/browser/ui/alert_coordinator/repost_form_coordinator.h
@@ -18,14 +18,14 @@
 // buttons.
 @interface RepostFormCoordinator : ChromeCoordinator
 
-// Initializes a coordinator for displaying an alert on this |viewController|.
-// |browser| should be passed as a parameter in the initializer for the
+// Initializes a coordinator for displaying an alert on this `viewController`.
+// `browser` should be passed as a parameter in the initializer for the
 // providing model-layer dependencies and a command dispatcher that can be used
-// by the coordinator and its children. |dialogLocation| is a point where the
-// repost form dialog should be presented on iPad (in |viewController|'s
-// coordinate space). |webState| must not be null and must be owned by the
-// caller. |completionHandler| will be called with YES when Continue button is
-// tapped and with NO when Cancel button is tapped. |completionHandler| can not
+// by the coordinator and its children. `dialogLocation` is a point where the
+// repost form dialog should be presented on iPad (in `viewController`'s
+// coordinate space). `webState` must not be null and must be owned by the
+// caller. `completionHandler` will be called with YES when Continue button is
+// tapped and with NO when Cancel button is tapped. `completionHandler` can not
 // be null.
 - (instancetype)initWithBaseViewController:(UIViewController*)viewController
                                    browser:(Browser*)browser
diff --git a/ios/chrome/browser/ui/alert_coordinator/repost_form_coordinator.mm b/ios/chrome/browser/ui/alert_coordinator/repost_form_coordinator.mm
index f684d06..1f27219 100644
--- a/ios/chrome/browser/ui/alert_coordinator/repost_form_coordinator.mm
+++ b/ios/chrome/browser/ui/alert_coordinator/repost_form_coordinator.mm
@@ -90,7 +90,7 @@
 
   // The resubmit data action cannot be presented as the view was not
   // yet added to the window or another VC is being presented. Retry after
-  // |kDelayBetweenAttemptsNanoSecs|.
+  // `kDelayBetweenAttemptsNanoSecs`.
   const NSUInteger kMaximumNumberAttempts = 10;
   // 400 milliseconds
   const int64_t kDelayBetweenAttemptsNanoSecs = 0.4 * NSEC_PER_SEC;
diff --git a/ios/chrome/browser/ui/alert_view/alert_action.h b/ios/chrome/browser/ui/alert_view/alert_action.h
index f636793..0195566 100644
--- a/ios/chrome/browser/ui/alert_view/alert_action.h
+++ b/ios/chrome/browser/ui/alert_view/alert_action.h
@@ -23,7 +23,7 @@
 // Block to be called when this action is triggered.
 @property(nonatomic, readonly) void (^handler)(AlertAction* action);
 
-// Initializes an action with |title| and |handler|.
+// Initializes an action with `title` and `handler`.
 + (instancetype)actionWithTitle:(NSString*)title
                           style:(UIAlertActionStyle)style
                         handler:(void (^)(AlertAction* action))handler;
diff --git a/ios/chrome/browser/ui/alert_view/alert_consumer.h b/ios/chrome/browser/ui/alert_view/alert_consumer.h
index 6561510..9b75b65 100644
--- a/ios/chrome/browser/ui/alert_view/alert_consumer.h
+++ b/ios/chrome/browser/ui/alert_view/alert_consumer.h
@@ -20,7 +20,7 @@
 - (void)setMessage:(NSString*)message;
 
 // Sets the text field configurations for this alert. One text field will be
-// created for each |TextFieldConfiguration|.
+// created for each `TextFieldConfiguration`.
 - (void)setTextFieldConfigurations:
     (NSArray<TextFieldConfiguration*>*)textFieldConfigurations;
 
diff --git a/ios/chrome/browser/ui/alert_view/alert_view_controller.mm b/ios/chrome/browser/ui/alert_view/alert_view_controller.mm
index b9e2bab..58d8f92e 100644
--- a/ios/chrome/browser/ui/alert_view/alert_view_controller.mm
+++ b/ios/chrome/browser/ui/alert_view/alert_view_controller.mm
@@ -68,7 +68,7 @@
 @interface AlertViewController () <UITextFieldDelegate,
                                    UIGestureRecognizerDelegate>
 
-// The actions for to this alert. |copy| for safety against mutable objects.
+// The actions for to this alert. `copy` for safety against mutable objects.
 @property(nonatomic, copy) NSArray<AlertAction*>* actions;
 
 // This maps UIButtons' tags with AlertActions' uniqueIdentifiers.
@@ -83,7 +83,7 @@
 @property(nonatomic, copy) NSString* message;
 
 // Text field configurations for this alert. One text field will be created for
-// each |TextFieldConfiguration|. |copy| for safety against mutable objects.
+// each `TextFieldConfiguration`. `copy` for safety against mutable objects.
 @property(nonatomic, copy)
     NSArray<TextFieldConfiguration*>* textFieldConfigurations;
 
@@ -101,7 +101,7 @@
 @property(nonatomic, strong) UISwipeGestureRecognizer* swipeRecognizer;
 
 // This is the last focused text field, the gestures to dismiss the keyboard
-// will end up calling |resignFirstResponder| on this.
+// will end up calling `resignFirstResponder` on this.
 @property(nonatomic, weak) UITextField* lastFocusedTextField;
 
 // This holds the text field stack view. A reference is needed because its
@@ -277,7 +277,7 @@
   }
 
   if (self.textFieldConfigurations.count) {
-    // |stackHolder| has the background, border and round corners of the stacked
+    // `stackHolder` has the background, border and round corners of the stacked
     // fields.
     UIView* stackHolder = [[UIView alloc] init];
     stackHolder.layer.cornerRadius = kTextFieldCornerRadius;
diff --git a/ios/chrome/browser/ui/autofill/autofill_app_interface.h b/ios/chrome/browser/ui/autofill/autofill_app_interface.h
index c311dd55..f8206b4 100644
--- a/ios/chrome/browser/ui/autofill/autofill_app_interface.h
+++ b/ios/chrome/browser/ui/autofill/autofill_app_interface.h
@@ -38,7 +38,7 @@
 // Returns the number of profiles (addresses) in the data manager.
 + (NSInteger)profilesCount;
 
-// Used to automatically import addresses without a prompt when |autoAccept| is
+// Used to automatically import addresses without a prompt when `autoAccept` is
 // YES.
 + (void)setAutoAcceptAddressImports:(BOOL)autoAccept;
 
@@ -55,7 +55,7 @@
 + (void)clearCreditCardStore;
 
 // Saves a local credit card that doesn't require CVC to be used.
-// Returns the |card.NetworkAndLastFourDigits| of the card used in the UIs.
+// Returns the `card.NetworkAndLastFourDigits` of the card used in the UIs.
 + (NSString*)saveLocalCreditCard;
 
 // Returns the number of credit cards in the local store.
@@ -83,7 +83,7 @@
 // Wait until all expected events are triggered.
 + (BOOL)waitForEvents [[nodiscard]];
 
-// Sets the next response of the payments server for |request|.
+// Sets the next response of the payments server for `request`.
 + (void)setPaymentsResponse:(NSString*)response
                  forRequest:(NSString*)request
               withErrorCode:(int)error;
diff --git a/ios/chrome/browser/ui/autofill/autofill_app_interface.mm b/ios/chrome/browser/ui/autofill/autofill_app_interface.mm
index 009a2bee..a05e0a2 100644
--- a/ios/chrome/browser/ui/autofill/autofill_app_interface.mm
+++ b/ios/chrome/browser/ui/autofill/autofill_app_interface.mm
@@ -79,14 +79,14 @@
   }
 
  private:
-  // Puts |obtained_| in a known state not corresponding to any PasswordStore
+  // Puts `obtained_` in a known state not corresponding to any PasswordStore
   // state.
   void ResetObtained() {
     obtained_.clear();
     obtained_.emplace_back(nullptr);
   }
 
-  // Returns true if |obtained_| are in the reset state.
+  // Returns true if `obtained_` are in the reset state.
   bool AreObtainedReset() { return obtained_.size() == 1 && !obtained_[0]; }
 
   void AppendObtainedToResults() {
@@ -105,11 +105,11 @@
   base::WeakPtrFactory<TestStoreConsumer> weak_ptr_factory_{this};
 };
 
-// Saves |form| to the password store and waits until the async processing is
+// Saves `form` to the password store and waits until the async processing is
 // done.
 void SaveToPasswordStore(const password_manager::PasswordForm& form) {
   GetPasswordStore()->AddLogin(form);
-  // When we retrieve the form from the store, |in_store| should be set.
+  // When we retrieve the form from the store, `in_store` should be set.
   password_manager::PasswordForm expected_form = form;
   expected_form.in_store = password_manager::PasswordForm::Store::kProfileStore;
   // Check the result and ensure PasswordStore processed this.
@@ -231,7 +231,7 @@
                                           max);
   }
 
-  // Reset the IOSTestEventWaiter and make it watch |events|.
+  // Reset the IOSTestEventWaiter and make it watch `events`.
   void ResetEventWaiterForEvents(NSArray* events, NSTimeInterval timeout) {
     std::list<CreditCardSaveManagerObserverEvent> events_list;
     for (NSNumber* e : events) {
@@ -274,7 +274,7 @@
     OnEvent(CreditCardSaveManagerObserverEvent::kOnStrikeChangeCompleteCalled);
   }
 
-  // Triggers |event| on the IOSTestEventWaiter.
+  // Triggers `event` on the IOSTestEventWaiter.
   bool OnEvent(CreditCardSaveManagerObserverEvent event) {
     return event_waiter_->OnEvent(event);
   }
diff --git a/ios/chrome/browser/ui/autofill/autofill_ui_type_util.h b/ios/chrome/browser/ui/autofill/autofill_ui_type_util.h
index 4d029eea..6318c1f 100644
--- a/ios/chrome/browser/ui/autofill/autofill_ui_type_util.h
+++ b/ios/chrome/browser/ui/autofill/autofill_ui_type_util.h
@@ -49,10 +49,10 @@
     {autofill::EMAIL_ADDRESS, IDS_IOS_AUTOFILL_EMAIL, UIReturnKeyDone,
      UIKeyboardTypeEmailAddress, UITextAutocapitalizationTypeNone}};
 
-// Returns the AutofillUIType equivalent to |type|.
+// Returns the AutofillUIType equivalent to `type`.
 AutofillUIType AutofillUITypeFromAutofillType(autofill::ServerFieldType type);
 
-// Returns the autofill::ServerFieldType equivalent to |type|.
+// Returns the autofill::ServerFieldType equivalent to `type`.
 autofill::ServerFieldType AutofillTypeFromAutofillUIType(AutofillUIType type);
 
 // Returns the list of autofill::ServerFieldType used by the edit profile
diff --git a/ios/chrome/browser/ui/autofill/card_expiration_date_fix_flow_view_bridge.h b/ios/chrome/browser/ui/autofill/card_expiration_date_fix_flow_view_bridge.h
index af9f0f3..946276b7 100644
--- a/ios/chrome/browser/ui/autofill/card_expiration_date_fix_flow_view_bridge.h
+++ b/ios/chrome/browser/ui/autofill/card_expiration_date_fix_flow_view_bridge.h
@@ -55,7 +55,7 @@
   UIViewController* view_controller_;
 
  private:
-  // The controller |this| queries for logic and state.
+  // The controller `this` queries for logic and state.
   CardExpirationDateFixFlowController* controller_;  // weak
 
   // Weak reference to the view controller used to present UI.
@@ -69,7 +69,7 @@
 
 @interface CardExpirationDateFixFlowViewController : UITableViewController
 
-// Designated initializer. |bridge| must not be null.
+// Designated initializer. `bridge` must not be null.
 - (instancetype)initWithBridge:
     (autofill::CardExpirationDateFixFlowViewBridge*)bridge
     NS_DESIGNATED_INITIALIZER;
diff --git a/ios/chrome/browser/ui/autofill/card_name_fix_flow_view_bridge.h b/ios/chrome/browser/ui/autofill/card_name_fix_flow_view_bridge.h
index aa4e134..6daa92d 100644
--- a/ios/chrome/browser/ui/autofill/card_name_fix_flow_view_bridge.h
+++ b/ios/chrome/browser/ui/autofill/card_name_fix_flow_view_bridge.h
@@ -52,7 +52,7 @@
   UIViewController* view_controller_;
 
  private:
-  // The controller |this| queries for logic and state.
+  // The controller `this` queries for logic and state.
   CardNameFixFlowController* controller_;  // weak
 
   // Weak reference to the view controller used to present UI.
@@ -65,7 +65,7 @@
 
 @interface CardNameFixFlowViewController : UITableViewController
 
-// Designated initializer. |bridge| must not be null.
+// Designated initializer. `bridge` must not be null.
 - (instancetype)initWithBridge:(autofill::CardNameFixFlowViewBridge*)bridge
     NS_DESIGNATED_INITIALIZER;
 
diff --git a/ios/chrome/browser/ui/autofill/card_name_fix_flow_view_bridge.mm b/ios/chrome/browser/ui/autofill/card_name_fix_flow_view_bridge.mm
index 8121ddf..2601262 100644
--- a/ios/chrome/browser/ui/autofill/card_name_fix_flow_view_bridge.mm
+++ b/ios/chrome/browser/ui/autofill/card_name_fix_flow_view_bridge.mm
@@ -98,7 +98,7 @@
   NSString* _confirmedName;
   TableViewTextHeaderFooterView* _footerView;
 
-  // Owns |self|.
+  // Owns `self`.
   autofill::CardNameFixFlowViewBridge* _bridge;  // weak
 }
 
diff --git a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h
index 74db81b..d0183e6c 100644
--- a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h
+++ b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h
@@ -23,7 +23,7 @@
 // iOS implementation of the unmask prompt UI.
 class CardUnmaskPromptViewBridge : public CardUnmaskPromptView {
  public:
-  // |base_view_controller| is a weak reference to the view controller used to
+  // `base_view_controller` is a weak reference to the view controller used to
   // present UI.
   CardUnmaskPromptViewBridge(CardUnmaskPromptController* controller,
                              UIViewController* base_view_controller);
@@ -54,7 +54,7 @@
   CardUnmaskPromptViewController* view_controller_;
 
  private:
-  // The controller |this| queries for logic and state.
+  // The controller `this` queries for logic and state.
   CardUnmaskPromptController* controller_;  // weak
 
   // Weak reference to the view controller used to present UI.
@@ -67,7 +67,7 @@
 
 @interface CardUnmaskPromptViewController : CollectionViewController
 
-// Designated initializer. |bridge| must not be null.
+// Designated initializer. `bridge` must not be null.
 - (instancetype)initWithBridge:(autofill::CardUnmaskPromptViewBridge*)bridge
     NS_DESIGNATED_INITIALIZER;
 - (instancetype)initWithLayout:(UICollectionViewLayout*)layout
diff --git a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.mm b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.mm
index b5fd784..8eb65d1f 100644
--- a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.mm
+++ b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.mm
@@ -131,7 +131,7 @@
   CVCItem* _CVCItem;
   StatusItem* _statusItem;
 
-  // Owns |self|.
+  // Owns `self`.
   autofill::CardUnmaskPromptViewBridge* _bridge;  // weak
 }
 
diff --git a/ios/chrome/browser/ui/autofill/cells/cvc_item.h b/ios/chrome/browser/ui/autofill/cells/cvc_item.h
index a8325e43..d3e6c7c 100644
--- a/ios/chrome/browser/ui/autofill/cells/cvc_item.h
+++ b/ios/chrome/browser/ui/autofill/cells/cvc_item.h
@@ -20,15 +20,15 @@
 // The optional error message to display.
 @property(nonatomic, copy) NSString* errorMessage;
 
-// The month text appearing in the |monthInput| of the cell, if |showDateInput|
+// The month text appearing in the `monthInput` of the cell, if `showDateInput`
 // is true.
 @property(nonatomic, copy) NSString* monthText;
 
-// The year text appearing in the |yearInput| of the cell, if |showDateInput|
+// The year text appearing in the `yearInput` of the cell, if `showDateInput`
 // is true.
 @property(nonatomic, copy) NSString* yearText;
 
-// The CVC text appearing in the |CVCInput| of the cell.
+// The CVC text appearing in the `CVCInput` of the cell.
 @property(nonatomic, copy) NSString* CVCText;
 
 // Whether the cell should show the date inputs.
@@ -66,7 +66,7 @@
 // The text field for entering the CVC.
 @property(nonatomic, readonly, strong) UITextField* CVCInput;
 
-// The image view to display the CVC image with the |CVCResourceID|.
+// The image view to display the CVC image with the `CVCResourceID`.
 @property(nonatomic, readonly, strong) UIImageView* CVCImageView;
 
 // The "New Card?" button.
diff --git a/ios/chrome/browser/ui/autofill/cells/cvc_item_unittest.mm b/ios/chrome/browser/ui/autofill/cells/cvc_item_unittest.mm
index a473568..b71a1db 100644
--- a/ios/chrome/browser/ui/autofill/cells/cvc_item_unittest.mm
+++ b/ios/chrome/browser/ui/autofill/cells/cvc_item_unittest.mm
@@ -23,7 +23,7 @@
 using CVCItemTest = PlatformTest;
 
 // Tests that the cell subviews are set properly after a call to
-// |configureCell:| in the different states possible.
+// `configureCell:` in the different states possible.
 TEST_F(CVCItemTest, ConfigureCell) {
   CVCItem* item = [[CVCItem alloc] initWithType:0];
   NSString* instructionsText = @"Instructions Test Text";
diff --git a/ios/chrome/browser/ui/autofill/cells/legacy_autofill_edit_item.h b/ios/chrome/browser/ui/autofill/cells/legacy_autofill_edit_item.h
index 28abb2cf..b6319cc 100644
--- a/ios/chrome/browser/ui/autofill/cells/legacy_autofill_edit_item.h
+++ b/ios/chrome/browser/ui/autofill/cells/legacy_autofill_edit_item.h
@@ -64,10 +64,10 @@
 @property(nonatomic, strong) UILabel* textLabel;
 
 // Text field at the trailing edge of the cell. It displays the item's
-// |textFieldValue|.
+// `textFieldValue`.
 @property(nonatomic, readonly, strong) UITextField* textField;
 
-// UIImageView containing the icon identifying |textField| or its current value.
+// UIImageView containing the icon identifying `textField` or its current value.
 @property(nonatomic, readonly, strong) UIImageView* identifyingIconView;
 
 @end
diff --git a/ios/chrome/browser/ui/autofill/cells/legacy_autofill_edit_item_unittest.mm b/ios/chrome/browser/ui/autofill/cells/legacy_autofill_edit_item_unittest.mm
index 84141b8..e8618a1a0 100644
--- a/ios/chrome/browser/ui/autofill/cells/legacy_autofill_edit_item_unittest.mm
+++ b/ios/chrome/browser/ui/autofill/cells/legacy_autofill_edit_item_unittest.mm
@@ -17,7 +17,7 @@
 using LegacyAutofillEditItemTest = PlatformTest;
 
 // Tests that the label and text field are set properly after a call to
-// |configureCell:|.
+// `configureCell:`.
 TEST_F(LegacyAutofillEditItemTest, ConfigureCell) {
   LegacyAutofillEditItem* item =
       [[LegacyAutofillEditItem alloc] initWithType:0];
diff --git a/ios/chrome/browser/ui/autofill/cells/status_item_unittest.mm b/ios/chrome/browser/ui/autofill/cells/status_item_unittest.mm
index 29acd8c7..aa1fb67 100644
--- a/ios/chrome/browser/ui/autofill/cells/status_item_unittest.mm
+++ b/ios/chrome/browser/ui/autofill/cells/status_item_unittest.mm
@@ -20,7 +20,7 @@
 using StatusItemTest = PlatformTest;
 
 // Tests that the cell subviews are set properly after a call to
-// |configureCell:| in the different states.
+// `configureCell:` in the different states.
 TEST_F(StatusItemTest, ConfigureCell) {
   StatusItem* item = [[StatusItem alloc] initWithType:0];
   NSString* text = @"Test Text";
diff --git a/ios/chrome/browser/ui/autofill/cells/target_account_item.h b/ios/chrome/browser/ui/autofill/cells/target_account_item.h
index 0ca1f9dc..56cb7604 100644
--- a/ios/chrome/browser/ui/autofill/cells/target_account_item.h
+++ b/ios/chrome/browser/ui/autofill/cells/target_account_item.h
@@ -25,7 +25,7 @@
 
 // A left-aligned round badge showing the account avatar.
 @property(nonatomic, readonly, strong) UIImageView* avatarBadge;
-// A label for the account email, shown to the right of |avatarBadge| and to
+// A label for the account email, shown to the right of `avatarBadge` and to
 // the left of the Google pay icon.
 @property(nonatomic, readonly, strong) UILabel* emailLabel;
 
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_chromium_text_data.h b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_chromium_text_data.h
index 45c7c75..81daa80 100644
--- a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_chromium_text_data.h
+++ b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_chromium_text_data.h
@@ -9,7 +9,7 @@
 
 @class FormInputAccessoryViewTextData;
 
-// A version of |FormInputAccessoryViewTextData| with all the fields filled in
+// A version of `FormInputAccessoryViewTextData` with all the fields filled in
 // with Chromium data.
 FormInputAccessoryViewTextData* ChromiumAccessoryViewTextData();
 
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_coordinator.mm b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_coordinator.mm
index 1f8dd985..657e381b 100644
--- a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_coordinator.mm
+++ b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_coordinator.mm
@@ -618,6 +618,8 @@
                   alignment:BubbleAlignmentLeading
                  bubbleType:bubbleType
           dismissalCallback:dismissalCallback];
+  bubbleViewControllerPresenter.voiceOverAnnouncement =
+      l10n_util::GetNSString(IDS_IOS_PASSWORD_SUGGESTIONS_TIP_VOICEOVER);
   return bubbleViewControllerPresenter;
 }
 
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.mm b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.mm
index fcb0ccc..df9af85 100644
--- a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.mm
+++ b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.mm
@@ -121,7 +121,7 @@
   // Bridge to observe the web state from Objective-C.
   std::unique_ptr<web::WebStateObserverBridge> _webStateObserverBridge;
 
-  // Bridge to observe form activity in |_webState|.
+  // Bridge to observe form activity in `_webState`.
   std::unique_ptr<autofill::FormActivityObserverBridge>
       _formActivityObserverBridge;
 
@@ -129,10 +129,10 @@
   BOOL _suggestionsHaveBeenShown;
 
   // The last seen valid params of a form before retrieving suggestions. Or
-  // empty if |_hasLastSeenParams| is NO.
+  // empty if `_hasLastSeenParams` is NO.
   autofill::FormActivityParams _lastSeenParams;
 
-  // If YES |_lastSeenParams| is valid.
+  // If YES `_lastSeenParams` is valid.
   BOOL _hasLastSeenParams;
 }
 
@@ -272,7 +272,7 @@
   DCHECK_EQ(_webState, webState);
   self.validActivityForAccessoryView = NO;
 
-  // Return early if |params| is not complete.
+  // Return early if `params` is not complete.
   if (params.input_missing) {
     return;
   }
@@ -513,13 +513,13 @@
         }];
 }
 
-// Post the passed |suggestions| to the consumer.
+// Post the passed `suggestions` to the consumer.
 - (void)updateWithProvider:(id<FormInputSuggestionsProvider>)provider
                suggestions:(NSArray<FormSuggestion*>*)suggestions {
   if (self.suggestionsDisabled)
     return;
 
-  // If suggestions are enabled, update |currentProvider|.
+  // If suggestions are enabled, update `currentProvider`.
   self.currentProvider = provider;
   // Post it to the consumer.
   [self.consumer showAccessorySuggestions:suggestions];
diff --git a/ios/chrome/browser/ui/autofill/save_card_infobar_metrics_recorder.h b/ios/chrome/browser/ui/autofill/save_card_infobar_metrics_recorder.h
index 20b0b8b..cc637be 100644
--- a/ios/chrome/browser/ui/autofill/save_card_infobar_metrics_recorder.h
+++ b/ios/chrome/browser/ui/autofill/save_card_infobar_metrics_recorder.h
@@ -26,7 +26,7 @@
 
 - (instancetype)init NS_UNAVAILABLE;
 
-// Records histogram for Modal |event|.
+// Records histogram for Modal `event`.
 + (void)recordModalEvent:(MobileMessagesSaveCardModalEvent)event;
 
 @end
diff --git a/ios/chrome/browser/ui/autofill/save_card_message_with_links.h b/ios/chrome/browser/ui/autofill/save_card_message_with_links.h
index 4d2125fb..b678ce6 100644
--- a/ios/chrome/browser/ui/autofill/save_card_message_with_links.h
+++ b/ios/chrome/browser/ui/autofill/save_card_message_with_links.h
@@ -11,9 +11,9 @@
 
 class GURL;
 
-// Represents a message with optional links. Each linkRange in |linkRanges|
-// represents the range (in |messageText|) for the corresponding (same index)
-// linkURL in |linkURLS|.
+// Represents a message with optional links. Each linkRange in `linkRanges`
+// represents the range (in `messageText`) for the corresponding (same index)
+// linkURL in `linkURLS`.
 @interface SaveCardMessageWithLinks : NSObject
 
 @property(nonatomic, copy) NSString* messageText;
diff --git a/ios/chrome/browser/ui/browser_view/BUILD.gn b/ios/chrome/browser/ui/browser_view/BUILD.gn
index 5c56105..fd91c6b 100644
--- a/ios/chrome/browser/ui/browser_view/BUILD.gn
+++ b/ios/chrome/browser/ui/browser_view/BUILD.gn
@@ -81,6 +81,7 @@
     "//ios/chrome/browser/snapshots",
     "//ios/chrome/browser/ssl",
     "//ios/chrome/browser/store_kit",
+    "//ios/chrome/browser/sync:sync_error_browser_agent",
     "//ios/chrome/browser/translate",
     "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/activity_services",
@@ -160,8 +161,6 @@
     "//ios/chrome/browser/ui/side_swipe",
     "//ios/chrome/browser/ui/snackbar",
     "//ios/chrome/browser/ui/start_surface:feature_flags",
-    "//ios/chrome/browser/ui/sync",
-    "//ios/chrome/browser/ui/sync/utils:features",
     "//ios/chrome/browser/ui/tab_switcher/tab_strip",
     "//ios/chrome/browser/ui/tabs",
     "//ios/chrome/browser/ui/tabs:constants",
@@ -263,6 +262,7 @@
     "//ios/chrome/browser/sessions:restoration_agent",
     "//ios/chrome/browser/sessions:test_support",
     "//ios/chrome/browser/snapshots",
+    "//ios/chrome/browser/sync:sync_error_browser_agent",
     "//ios/chrome/browser/tabs",
     "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/activity_services",
diff --git a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
index 5f86b7f..99200ed6 100644
--- a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
@@ -29,6 +29,7 @@
 #import "ios/chrome/browser/signin/account_consistency_service_factory.h"
 #import "ios/chrome/browser/store_kit/store_kit_coordinator.h"
 #import "ios/chrome/browser/store_kit/store_kit_tab_helper.h"
+#import "ios/chrome/browser/sync/sync_error_browser_agent.h"
 #import "ios/chrome/browser/tabs/tab_title_util.h"
 #import "ios/chrome/browser/ui/activity_services/activity_params.h"
 #import "ios/chrome/browser/ui/activity_services/requirements/activity_service_positioner.h"
@@ -101,8 +102,6 @@
 #import "ios/chrome/browser/ui/safe_browsing/safe_browsing_coordinator.h"
 #import "ios/chrome/browser/ui/settings/autofill/autofill_add_credit_card_coordinator.h"
 #import "ios/chrome/browser/ui/sharing/sharing_coordinator.h"
-#import "ios/chrome/browser/ui/sync/sync_error_browser_agent.h"
-#import "ios/chrome/browser/ui/sync/utils/features.h"
 #import "ios/chrome/browser/ui/text_fragments/text_fragments_coordinator.h"
 #import "ios/chrome/browser/ui/text_zoom/text_zoom_coordinator.h"
 #import "ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_coordinator_delegate.h"
@@ -1275,10 +1274,8 @@
   // The view controller should have been created.
   DCHECK(self.viewController);
 
-  if (IsDisplaySyncErrorsRefactorEnabled()) {
-    SyncErrorBrowserAgent::FromBrowser(self.browser)
-        ->SetUIProviders(self.viewController, self.viewController);
-  }
+  SyncErrorBrowserAgent::FromBrowser(self.browser)
+      ->SetUIProviders(self.viewController, self.viewController);
 
   WebStateDelegateBrowserAgent::FromBrowser(self.browser)
       ->SetUIProviders(self.contextMenuProvider,
@@ -1306,9 +1303,7 @@
 
   WebStateDelegateBrowserAgent::FromBrowser(self.browser)->ClearUIProviders();
 
-  if (IsDisplaySyncErrorsRefactorEnabled()) {
-    SyncErrorBrowserAgent::FromBrowser(self.browser)->ClearUIProviders();
-  }
+  SyncErrorBrowserAgent::FromBrowser(self.browser)->ClearUIProviders();
 }
 
 // Uninstalls delegates for each WebState in WebStateList.
diff --git a/ios/chrome/browser/ui/browser_view/browser_coordinator_unittest.mm b/ios/chrome/browser/ui/browser_view/browser_coordinator_unittest.mm
index f9f4ce2..2e7969321 100644
--- a/ios/chrome/browser/ui/browser_view/browser_coordinator_unittest.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_coordinator_unittest.mm
@@ -15,6 +15,7 @@
 #import "ios/chrome/browser/main/test_browser.h"
 #import "ios/chrome/browser/prerender/prerender_service_factory.h"
 #import "ios/chrome/browser/search_engines/template_url_service_factory.h"
+#import "ios/chrome/browser/sync/sync_error_browser_agent.h"
 #import "ios/chrome/browser/ui/commands/activity_service_commands.h"
 #import "ios/chrome/browser/ui/commands/application_commands.h"
 #import "ios/chrome/browser/ui/commands/browser_coordinator_commands.h"
@@ -80,6 +81,7 @@
     TabInsertionBrowserAgent::CreateForBrowser(browser_.get());
     WebStateDelegateBrowserAgent::CreateForBrowser(
         browser_.get(), TabInsertionBrowserAgent::FromBrowser(browser_.get()));
+    SyncErrorBrowserAgent::CreateForBrowser(browser_.get());
 
     IncognitoReauthSceneAgent* reauthAgent = [[IncognitoReauthSceneAgent alloc]
         initWithReauthModule:[[ReauthenticationModule alloc] init]];
diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
index c9dcc419..89c0c57 100644
--- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
@@ -102,7 +102,6 @@
 #import "ios/chrome/browser/ui/side_swipe/side_swipe_controller.h"
 #import "ios/chrome/browser/ui/side_swipe/swipe_view.h"
 #import "ios/chrome/browser/ui/start_surface/start_surface_features.h"
-#import "ios/chrome/browser/ui/sync/utils/features.h"
 #import "ios/chrome/browser/ui/tab_switcher/tab_strip/tab_strip_coordinator.h"
 #import "ios/chrome/browser/ui/tabs/background_tab_animation_view.h"
 #import "ios/chrome/browser/ui/tabs/foreground_tab_animation_view.h"
@@ -4127,14 +4126,6 @@
     return;
   }
 
-  if (!IsDisplaySyncErrorsRefactorEnabled()) {
-    if (!ReSignInInfoBarDelegate::Create(self.browserState, webState,
-                                         self /* id<SigninPresenter> */)) {
-      DisplaySyncErrors(self.browserState, webState,
-                        self /* id<SyncPresenter> */);
-    }
-  }
-
   BOOL inBackground = !activating;
   if (IsStartSurfaceSplashStartupEnabled()) {
     inBackground =
diff --git a/ios/chrome/browser/ui/content_suggestions/BUILD.gn b/ios/chrome/browser/ui/content_suggestions/BUILD.gn
index 8e4851c..f22ac7e 100644
--- a/ios/chrome/browser/ui/content_suggestions/BUILD.gn
+++ b/ios/chrome/browser/ui/content_suggestions/BUILD.gn
@@ -183,6 +183,7 @@
     "//ios/chrome/browser/ui/util:util",
     "//ios/chrome/common:timing",
     "//ios/chrome/common/ui/colors",
+    "//ios/chrome/common/ui/elements",
     "//ios/chrome/common/ui/favicon",
     "//ios/chrome/common/ui/util",
     "//ios/public/provider/chrome/browser",
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view.mm
index 5ec8335..37e15ac 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view.mm
@@ -11,6 +11,7 @@
 #include "base/feature_list.h"
 #include "components/strings/grit/components_strings.h"
 #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_utils.h"
+#import "ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.h"
 #import "ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h"
 #import "ios/chrome/browser/ui/elements/extended_touch_target_button.h"
 #import "ios/chrome/browser/ui/ntp/new_tab_page_header_constants.h"
@@ -28,6 +29,7 @@
 #import "ios/chrome/browser/ui/util/named_guide_util.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
+#import "ios/chrome/common/ui/elements/gradient_view.h"
 #import "ios/chrome/common/ui/util/constraints_ui_util.h"
 #include "ui/base/l10n/l10n_util.h"
 #import "ui/gfx/ios/NSString+CrStringDrawing.h"
@@ -154,7 +156,9 @@
   // Omnibox, used for animations.
   // TODO(crbug.com/936811): See if it is possible to share some initialization
   // code with the real Omnibox.
-  UIColor* color = [UIColor colorNamed:kTextfieldPlaceholderColor];
+  UIColor* color = IsContentSuggestionsUIModuleRefreshEnabled()
+                       ? [UIColor colorNamed:kGrey700Color]
+                       : [UIColor colorNamed:kTextfieldPlaceholderColor];
   OmniboxContainerView* omnibox =
       [[OmniboxContainerView alloc] initWithFrame:CGRectZero
                                         textColor:color
@@ -454,8 +458,18 @@
     _fakeLocationBar.userInteractionEnabled = NO;
     _fakeLocationBar.clipsToBounds = YES;
     _fakeLocationBar.backgroundColor =
-        [UIColor colorNamed:kTextfieldBackgroundColor];
+        IsContentSuggestionsUIModuleRefreshEnabled()
+            ? [UIColor clearColor]
+            : [UIColor colorNamed:kTextfieldBackgroundColor];
     _fakeLocationBar.translatesAutoresizingMaskIntoConstraints = NO;
+    if (IsContentSuggestionsUIModuleRefreshEnabled()) {
+      GradientView* gradientView = [[GradientView alloc]
+          initWithTopColor:[UIColor colorNamed:kGrey300Color]
+               bottomColor:[UIColor colorNamed:kGrey200Color]];
+      gradientView.translatesAutoresizingMaskIntoConstraints = NO;
+      [_fakeLocationBar addSubview:gradientView];
+      AddSameConstraints(_fakeLocationBar, gradientView);
+    }
 
     _fakeLocationBarHighlightView = [[UIView alloc] init];
     _fakeLocationBarHighlightView.userInteractionEnabled = NO;
diff --git a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_manage_devices_item.mm b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_manage_devices_item.mm
index 94a078b1..3850e375 100644
--- a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_manage_devices_item.mm
+++ b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_manage_devices_item.mm
@@ -142,7 +142,7 @@
         [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline],
     NSForegroundColorAttributeName : [UIColor colorNamed:kTextSecondaryColor]
   };
-  // Opening the link is handled by the delegate, so |NSLinkAttributeName|
+  // Opening the link is handled by the delegate, so `NSLinkAttributeName`
   // can be arbitrary.
   NSDictionary* linkAttributes = @{NSLinkAttributeName : @""};
   accountCell.linkAndEmailTextView.attributedText =
diff --git a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_modal_delegate.h b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_modal_delegate.h
index 1f86f53e..349e9ba 100644
--- a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_modal_delegate.h
+++ b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_modal_delegate.h
@@ -14,7 +14,7 @@
 - (void)dismissViewControllerAnimated:(BOOL)animated
                            completion:(void (^)())completion;
 
-// Asks the delegate to send the current tab to the device with |cacheGuid|.
+// Asks the delegate to send the current tab to the device with `cacheGuid`.
 - (void)sendTabToTargetDeviceCacheGUID:(NSString*)cacheGuid
                       targetDeviceName:(NSString*)deviceName;
 
diff --git a/ios/chrome/browser/ui/settings/privacy/BUILD.gn b/ios/chrome/browser/ui/settings/privacy/BUILD.gn
index e1605dd..c359dad 100644
--- a/ios/chrome/browser/ui/settings/privacy/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/privacy/BUILD.gn
@@ -137,3 +137,24 @@
     "//ui/base",
   ]
 }
+
+source_set("eg2_tests") {
+  configs += [
+    "//build/config/compiler:enable_arc",
+    "//build/config/ios:xctest_config",
+  ]
+  testonly = true
+  sources = [ "privacy_safe_browsing_egtest.mm" ]
+  deps = [
+    "//base",
+    "//components/safe_browsing/core/common:safe_browsing_prefs",
+    "//components/strings:components_strings_grit",
+    "//ios/chrome/app/strings:ios_strings_grit",
+    "//ios/chrome/browser/ui/settings/privacy:privacy_constants",
+    "//ios/chrome/test/earl_grey:eg_test_support+eg2",
+    "//ios/testing/earl_grey:eg_test_support+eg2",
+    "//ios/third_party/earl_grey2:test_lib",
+    "//ui/base",
+  ]
+  frameworks = [ "UIKit.framework" ]
+}
diff --git a/ios/chrome/browser/ui/settings/privacy/privacy_safe_browsing_egtest.mm b/ios/chrome/browser/ui/settings/privacy/privacy_safe_browsing_egtest.mm
new file mode 100644
index 0000000..ef9fcfa
--- /dev/null
+++ b/ios/chrome/browser/ui/settings/privacy/privacy_safe_browsing_egtest.mm
@@ -0,0 +1,115 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "components/safe_browsing/core/common/safe_browsing_prefs.h"
+#import "components/strings/grit/components_strings.h"
+#import "ios/chrome/browser/ui/settings/privacy/privacy_constants.h"
+#import "ios/chrome/grit/ios_strings.h"
+#import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
+#import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
+#import "ios/chrome/test/earl_grey/chrome_matchers.h"
+#import "ios/chrome/test/earl_grey/chrome_test_case.h"
+#import "ios/testing/earl_grey/earl_grey_test.h"
+#import "ui/base/l10n/l10n_util.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+using chrome_test_util::ButtonWithAccessibilityLabelId;
+using chrome_test_util::SettingsDoneButton;
+using chrome_test_util::SettingsMenuPrivacyButton;
+using l10n_util::GetNSString;
+
+// Integration tests using the Privacy Safe Browsing settings screen.
+@interface PrivacySafeBrowsingTestCase : ChromeTestCase
+@end
+
+@implementation PrivacySafeBrowsingTestCase
+
+- (void)testOpenPrivacySafeBrowsingSettings {
+  [self openPrivacySafeBrowsingSettings];
+}
+
+// TODO(crbug.com/1333625): Enable once activation point is fixed.
+- (void)DISABLED_testEachSafeBrowsingOption {
+  [self openPrivacySafeBrowsingSettings];
+
+  // Presses each of the Safe Browsing options.
+  [[EarlGrey
+      selectElementWithMatcher:
+          grey_accessibilityID(kSettingsSafeBrowsingEnhancedProtectionCellId)]
+      performAction:grey_tap()];
+  GREYAssertTrue([ChromeEarlGrey userBooleanPref:prefs::kSafeBrowsingEnhanced],
+                 @"Failed to toggle-on Enhanced Safe Browsing");
+
+  [[EarlGrey
+      selectElementWithMatcher:
+          grey_accessibilityID(kSettingsSafeBrowsingStandardProtectionCellId)]
+      performAction:grey_tap()];
+  GREYAssertFalse([ChromeEarlGrey userBooleanPref:prefs::kSafeBrowsingEnhanced],
+                  @"Failed to toggle-off Enhanced Safe Browsing");
+  GREYAssertTrue([ChromeEarlGrey userBooleanPref:prefs::kSafeBrowsingEnabled],
+                 @"Failed to toggle-on Standard Safe Browsing");
+
+  [[EarlGrey
+      selectElementWithMatcher:grey_accessibilityID(
+                                   kSettingsSafeBrowsingNoProtectionCellId)]
+      performAction:grey_tap()];
+  [[EarlGrey selectElementWithMatcher:grey_buttonTitle(GetNSString(IDS_CANCEL))]
+      performAction:grey_tap()];
+  GREYAssertFalse([ChromeEarlGrey userBooleanPref:prefs::kSafeBrowsingEnhanced],
+                  @"Failed to keep Enhanced Safe Browsing off");
+  GREYAssertTrue([ChromeEarlGrey userBooleanPref:prefs::kSafeBrowsingEnabled],
+                 @"Failed to keep Standard Safe Browsing on");
+
+  [[EarlGrey
+      selectElementWithMatcher:grey_accessibilityID(
+                                   kSettingsSafeBrowsingNoProtectionCellId)]
+      performAction:grey_tap()];
+  [[EarlGrey
+      selectElementWithMatcher:
+          grey_buttonTitle(GetNSString(
+              IDS_IOS_SAFE_BROWSING_NO_PROTECTION_CONFIRMATION_DIALOG_CONFIRM))]
+      performAction:grey_tap()];
+  GREYAssertFalse([ChromeEarlGrey userBooleanPref:prefs::kSafeBrowsingEnabled],
+                  @"Failed to toggle-off Standard Safe Browsing");
+}
+
+- (void)testPrivacySafeBrowsingDoneButton {
+  [self openPrivacySafeBrowsingSettings];
+  [[EarlGrey selectElementWithMatcher:SettingsDoneButton()]
+      performAction:grey_tap()];
+}
+
+- (void)testPrivacySafeBrowsingSwipeDown {
+  [self openPrivacySafeBrowsingSettings];
+
+  // Check that ESB is presented.
+  [[EarlGrey selectElementWithMatcher:grey_accessibilityID(
+                                          kPrivacySafeBrowsingTableViewId)]
+      assertWithMatcher:grey_notNil()];
+
+  // Swipe TableView down.
+  [[EarlGrey selectElementWithMatcher:grey_accessibilityID(
+                                          kPrivacySafeBrowsingTableViewId)]
+      performAction:grey_swipeFastInDirection(kGREYDirectionDown)];
+
+  // Check that Settings has been dismissed.
+  [[EarlGrey selectElementWithMatcher:grey_accessibilityID(
+                                          kPrivacySafeBrowsingTableViewId)]
+      assertWithMatcher:grey_nil()];
+}
+
+#pragma mark - Helpers
+
+- (void)openPrivacySafeBrowsingSettings {
+  [ChromeEarlGreyUI openSettingsMenu];
+  [ChromeEarlGreyUI tapSettingsMenuButton:SettingsMenuPrivacyButton()];
+  [ChromeEarlGreyUI
+      tapPrivacyMenuButton:ButtonWithAccessibilityLabelId(
+                               IDS_IOS_PRIVACY_SAFE_BROWSING_TITLE)];
+}
+
+@end
diff --git a/ios/chrome/browser/ui/sync/BUILD.gn b/ios/chrome/browser/ui/sync/BUILD.gn
deleted file mode 100644
index 893e6252..0000000
--- a/ios/chrome/browser/ui/sync/BUILD.gn
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2022 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import("//ios/public/provider/chrome/browser/build_config.gni")
-
-source_set("sync") {
-  configs += [ "//build/config/compiler:enable_arc" ]
-  sources = [
-    "sync_error_browser_agent.h",
-    "sync_error_browser_agent.mm",
-  ]
-  deps = [
-    "//ios/chrome/browser/browser_state",
-    "//ios/chrome/browser/main:public",
-    "//ios/chrome/browser/ui/authentication",
-    "//ios/chrome/browser/ui/authentication:signin_presenter",
-    "//ios/chrome/browser/ui/settings/sync/utils",
-    "//ios/chrome/browser/ui/sync/utils:features",
-    "//ios/chrome/browser/ui/util",
-    "//ios/chrome/browser/web_state_list",
-    "//ui/base",
-  ]
-  frameworks = [ "UIKit.framework" ]
-}
diff --git a/ios/chrome/browser/ui/sync/utils/BUILD.gn b/ios/chrome/browser/ui/sync/utils/BUILD.gn
deleted file mode 100644
index 748c02e..0000000
--- a/ios/chrome/browser/ui/sync/utils/BUILD.gn
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2022 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import("//ios/public/provider/chrome/browser/build_config.gni")
-
-source_set("features") {
-  configs += [ "//build/config/compiler:enable_arc" ]
-  sources = [
-    "features.cc",
-    "features.h",
-  ]
-  public_deps = [ "//base" ]
-}
diff --git a/ios/chrome/browser/ui/sync/utils/features.cc b/ios/chrome/browser/ui/sync/utils/features.cc
deleted file mode 100644
index b9399f64e..0000000
--- a/ios/chrome/browser/ui/sync/utils/features.cc
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2022 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ios/chrome/browser/ui/sync/utils/features.h"
-
-const base::Feature kDisplaySyncErrorsRefactor{
-    "DisplaySyncErrorsRefactor", base::FEATURE_DISABLED_BY_DEFAULT};
-
-bool IsDisplaySyncErrorsRefactorEnabled() {
-  return base::FeatureList::IsEnabled(kDisplaySyncErrorsRefactor);
-}
diff --git a/ios/chrome/browser/ui/sync/utils/features.h b/ios/chrome/browser/ui/sync/utils/features.h
deleted file mode 100644
index 0b8d678..0000000
--- a/ios/chrome/browser/ui/sync/utils/features.h
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2022 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef IOS_CHROME_BROWSER_UI_SYNC_UTILS_FEATURES_H_
-#define IOS_CHROME_BROWSER_UI_SYNC_UTILS_FEATURES_H_
-
-#include "base/feature_list.h"
-
-// Feature flag to enable DisplaySyncErrors refactored code.
-extern const base::Feature kDisplaySyncErrorsRefactor;
-
-// Returns true if DisplaySyncErrors integration is enabled.
-bool IsDisplaySyncErrorsRefactorEnabled();
-
-#endif  // IOS_CHROME_BROWSER_UI_SYNC_UTILS_FEATURES_H_
diff --git a/ios/chrome/browser/ui/ui_feature_flags.cc b/ios/chrome/browser/ui/ui_feature_flags.cc
index 27efe790..6fd7bdd5 100644
--- a/ios/chrome/browser/ui/ui_feature_flags.cc
+++ b/ios/chrome/browser/ui/ui_feature_flags.cc
@@ -38,7 +38,7 @@
     base::FEATURE_DISABLED_BY_DEFAULT};
 
 const base::Feature kDefaultBrowserIntentsShowSettings{
-    "DefaultBrowserIntentsShowSettings", base::FEATURE_DISABLED_BY_DEFAULT};
+    "DefaultBrowserIntentsShowSettings", base::FEATURE_ENABLED_BY_DEFAULT};
 
 const base::Feature kIOSNewOmniboxImplementation{
     "kIOSNewOmniboxImplementation", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey.mm b/ios/chrome/test/earl_grey/chrome_earl_grey.mm
index 0881908..d1ce9a8 100644
--- a/ios/chrome/test/earl_grey/chrome_earl_grey.mm
+++ b/ios/chrome/test/earl_grey/chrome_earl_grey.mm
@@ -480,7 +480,7 @@
   auto result = [self evaluateJavaScript:kGetCookiesScript];
 
   EG_TEST_HELPER_ASSERT_TRUE(result.is_list(),
-                             @"The script response is not iteratble.");
+                             @"The script response is not iterable.");
 
   NSMutableDictionary* cookies = [NSMutableDictionary dictionary];
   for (const auto& option : result.GetListDeprecated()) {
diff --git a/ios/chrome/test/earl_grey2/BUILD.gn b/ios/chrome/test/earl_grey2/BUILD.gn
index 2d84c76..6bd90c55 100644
--- a/ios/chrome/test/earl_grey2/BUILD.gn
+++ b/ios/chrome/test/earl_grey2/BUILD.gn
@@ -130,6 +130,7 @@
     "//ios/chrome/browser/ui/settings/language:eg2_tests",
     "//ios/chrome/browser/ui/settings/password:eg2_tests",
     "//ios/chrome/browser/ui/settings/password/passwords_in_other_apps:eg2_tests",
+    "//ios/chrome/browser/ui/settings/privacy:eg2_tests",
     "//ios/chrome/browser/ui/settings/sync:eg2_tests",
   ]
   data_deps = [ ":ios_chrome_eg2tests" ]
diff --git a/ios/web/common/crw_content_view.h b/ios/web/common/crw_content_view.h
index 8ace43e..fc6ec5c 100644
--- a/ios/web/common/crw_content_view.h
+++ b/ios/web/common/crw_content_view.h
@@ -7,8 +7,8 @@
 
 #import <UIKit/UIKit.h>
 
-// For devices running on a version >= iOS 15.4, WKFullScreenState is converted
-// into CrFullscreenState. Once min version supported is iOS 15.4,
+// For devices running on a version >= iOS 16.0+, WKFullScreenState is converted
+// into CrFullscreenState. Once min version supported is iOS 16.0,
 // uses of this enum should be be replaced with WKFullScreenState and this enum
 // declaration should be removed.
 enum class CrFullscreenState {
diff --git a/ios/web/common/features.h b/ios/web/common/features.h
index c9ae8564..25c4c3ad 100644
--- a/ios/web/common/features.h
+++ b/ios/web/common/features.h
@@ -69,7 +69,7 @@
 // for its current site.
 extern const base::Feature kMediaPermissionsControl;
 
-// Enables the Fullscreen API in WebKit (supported on iOS 15.4+). This API
+// Enables the Fullscreen API in WebKit (supported on iOS 16.0+). This API
 // allows web sites to enter fullscreen mode, with all browser UI hidden.
 extern const base::Feature kEnableFullscreenAPI;
 
diff --git a/media/gpu/v4l2/test/av1_decoder.h b/media/gpu/v4l2/test/av1_decoder.h
index cad35a0..800c746 100644
--- a/media/gpu/v4l2/test/av1_decoder.h
+++ b/media/gpu/v4l2/test/av1_decoder.h
@@ -35,9 +35,6 @@
 #endif
 
 namespace media {
-
-class IvfParser;
-
 namespace v4l2_test {
 
 constexpr int8_t kAv1NumRefFrames = libgav1::kNumReferenceFrameTypes;
diff --git a/media/gpu/v4l2/test/video_decoder.h b/media/gpu/v4l2/test/video_decoder.h
index a87b60e6..4243c0a 100644
--- a/media/gpu/v4l2/test/video_decoder.h
+++ b/media/gpu/v4l2/test/video_decoder.h
@@ -10,9 +10,6 @@
 #include "media/filters/ivf_parser.h"
 
 namespace media {
-
-class IvfParser;
-
 namespace v4l2_test {
 
 // VideoDecoder decodes encoded IVF streams using v4l2 ioctl calls.
diff --git a/media/gpu/v4l2/test/vp9_decoder.h b/media/gpu/v4l2/test/vp9_decoder.h
index eba0f46..961efb6 100644
--- a/media/gpu/v4l2/test/vp9_decoder.h
+++ b/media/gpu/v4l2/test/vp9_decoder.h
@@ -17,9 +17,6 @@
 #include "media/gpu/v4l2/test/video_decoder.h"
 
 namespace media {
-
-class IvfParser;
-
 namespace v4l2_test {
 
 // A Vp9Decoder decodes VP9-encoded IVF streams using v4l2 ioctl calls.
diff --git a/media/renderers/paint_canvas_video_renderer_unittest.cc b/media/renderers/paint_canvas_video_renderer_unittest.cc
index 08ba905..90fe054 100644
--- a/media/renderers/paint_canvas_video_renderer_unittest.cc
+++ b/media/renderers/paint_canvas_video_renderer_unittest.cc
@@ -605,7 +605,13 @@
   EXPECT_EQ(SK_ColorBLACK, bitmap.getColor(kWidth / 2, kHeight - 1));
 }
 
-TEST_F(PaintCanvasVideoRendererTest, HighBitDepth) {
+// TODO(crbug.com/1334227): Re-enable this test
+#if BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_MAC)
+#define MAYBE_HighBitDepth DISABLED_HighBitDepth
+#else
+#define MAYBE_HighBitDepth HighBitDepth
+#endif
+TEST_F(PaintCanvasVideoRendererTest, MAYBE_HighBitDepth) {
   struct params {
     int bit_depth;
     VideoPixelFormat format;
diff --git a/net/network_error_logging/network_error_logging_service.cc b/net/network_error_logging/network_error_logging_service.cc
index 524eddd..092b70f 100644
--- a/net/network_error_logging/network_error_logging_service.cc
+++ b/net/network_error_logging/network_error_logging_service.cc
@@ -246,31 +246,26 @@
   }
 
   base::Value StatusAsValue() const override {
-    base::Value dict(base::Value::Type::DICTIONARY);
-    std::vector<base::Value> policy_list;
+    base::Value::Dict dict;
+    base::Value::List policy_list;
     // We wanted sorted (or at least reproducible) output; luckily, policies_ is
     // a std::map, and therefore already sorted.
     for (const auto& key_and_policy : policies_) {
       const NelPolicyKey& key = key_and_policy.first;
       const NelPolicy& policy = key_and_policy.second;
-      base::Value policy_dict(base::Value::Type::DICTIONARY);
-      policy_dict.SetKey(
-          "networkIsolationKey",
-          base::Value(key.network_isolation_key.ToDebugString()));
-      policy_dict.SetKey("origin", base::Value(key.origin.Serialize()));
-      policy_dict.SetKey("includeSubdomains",
-                         base::Value(policy.include_subdomains));
-      policy_dict.SetKey("reportTo", base::Value(policy.report_to));
-      policy_dict.SetKey("expires",
-                         base::Value(NetLog::TimeToString(policy.expires)));
-      policy_dict.SetKey("successFraction",
-                         base::Value(policy.success_fraction));
-      policy_dict.SetKey("failureFraction",
-                         base::Value(policy.failure_fraction));
-      policy_list.push_back(std::move(policy_dict));
+      base::Value::Dict policy_dict;
+      policy_dict.Set("networkIsolationKey",
+                      key.network_isolation_key.ToDebugString());
+      policy_dict.Set("origin", key.origin.Serialize());
+      policy_dict.Set("includeSubdomains", policy.include_subdomains);
+      policy_dict.Set("reportTo", policy.report_to);
+      policy_dict.Set("expires", NetLog::TimeToString(policy.expires));
+      policy_dict.Set("successFraction", policy.success_fraction);
+      policy_dict.Set("failureFraction", policy.failure_fraction);
+      policy_list.Append(std::move(policy_dict));
     }
-    dict.SetKey("originPolicies", base::Value(std::move(policy_list)));
-    return dict;
+    dict.Set("originPolicies", std::move(policy_list));
+    return base::Value(std::move(dict));
   }
 
   std::set<NelPolicyKey> GetPolicyKeysForTesting() override {
@@ -591,23 +586,24 @@
     if (json_value.size() > kMaxJsonSize)
       return false;
 
-    std::unique_ptr<base::Value> value = base::JSONReader::ReadDeprecated(
-        json_value, base::JSON_PARSE_RFC, kMaxJsonDepth);
+    absl::optional<base::Value> value =
+        base::JSONReader::Read(json_value, base::JSON_PARSE_RFC, kMaxJsonDepth);
     if (!value)
       return false;
 
-    if (!value->is_dict())
+    base::Value::Dict* dict = value->GetIfDict();
+    if (!value)
       return false;
 
     // Max-Age property is missing or malformed.
-    int max_age_sec = value->FindIntKey(kMaxAgeKey).value_or(-1);
+    int max_age_sec = dict->FindInt(kMaxAgeKey).value_or(-1);
     if (max_age_sec < 0)
       return false;
 
     // Report-To property is missing or malformed.
     std::string report_to;
     if (max_age_sec > 0) {
-      std::string* maybe_report_to = value->FindStringKey(kReportToKey);
+      std::string* maybe_report_to = dict->FindString(kReportToKey);
       if (!maybe_report_to)
         return false;
       report_to = *maybe_report_to;
@@ -616,19 +612,19 @@
     // include_subdomains is optional and defaults to false, so it's okay if
     // GetBoolean fails.
     bool include_subdomains =
-        value->FindBoolKey(kIncludeSubdomainsKey).value_or(false);
+        dict->FindBool(kIncludeSubdomainsKey).value_or(false);
 
     // TODO(chlily): According to the spec we should restrict these sampling
     // fractions to [0.0, 1.0].
     // success_fraction is optional and defaults to 0.0, so it's okay if
     // GetDouble fails.
     double success_fraction =
-        value->FindDoubleKey(kSuccessFractionKey).value_or(0.0);
+        dict->FindDouble(kSuccessFractionKey).value_or(0.0);
 
     // failure_fraction is optional and defaults to 1.0, so it's okay if
     // GetDouble fails.
     double failure_fraction =
-        value->FindDoubleKey(kFailureFractionKey).value_or(1.0);
+        dict->FindDouble(kFailureFractionKey).value_or(1.0);
 
     policy_out->report_to = report_to;
     policy_out->include_subdomains = include_subdomains;
@@ -775,52 +771,53 @@
     RemovePolicy(stalest_it);
   }
 
-  std::unique_ptr<const base::Value> CreateReportBody(
-      const std::string& phase,
-      const std::string& type,
-      double sampling_fraction,
-      const RequestDetails& details) const {
-    auto body = std::make_unique<base::DictionaryValue>();
+  static base::Value::Dict CreateReportBody(const std::string& phase,
+                                            const std::string& type,
+                                            double sampling_fraction,
+                                            const RequestDetails& details) {
+    base::Value::Dict body;
 
-    body->SetString(kReferrerKey, details.referrer.spec());
-    body->SetDouble(kSamplingFractionKey, sampling_fraction);
-    body->SetString(kServerIpKey, details.server_ip.ToString());
-    body->SetString(kProtocolKey, details.protocol);
-    body->SetString(kMethodKey, details.method);
-    body->SetInteger(kStatusCodeKey, details.status_code);
-    body->SetInteger(kElapsedTimeKey, details.elapsed_time.InMilliseconds());
-    body->SetString(kPhaseKey, phase);
-    body->SetString(kTypeKey, type);
+    body.Set(kReferrerKey, details.referrer.spec());
+    body.Set(kSamplingFractionKey, sampling_fraction);
+    body.Set(kServerIpKey, details.server_ip.ToString());
+    body.Set(kProtocolKey, details.protocol);
+    body.Set(kMethodKey, details.method);
+    body.Set(kStatusCodeKey, details.status_code);
+    body.Set(kElapsedTimeKey,
+             static_cast<int>(details.elapsed_time.InMilliseconds()));
+    body.Set(kPhaseKey, phase);
+    body.Set(kTypeKey, type);
 
-    return std::move(body);
+    return body;
   }
 
-  std::unique_ptr<const base::Value> CreateSignedExchangeReportBody(
+  static base::Value::Dict CreateSignedExchangeReportBody(
       const SignedExchangeReportDetails& details,
-      double sampling_fraction) const {
-    auto body = std::make_unique<base::DictionaryValue>();
-    body->SetString(kPhaseKey, kSignedExchangePhaseValue);
-    body->SetString(kTypeKey, details.type);
-    body->SetDouble(kSamplingFractionKey, sampling_fraction);
-    body->SetString(kReferrerKey, details.referrer);
-    body->SetString(kServerIpKey, details.server_ip_address.ToString());
-    body->SetString(kProtocolKey, details.protocol);
-    body->SetString(kMethodKey, details.method);
-    body->SetInteger(kStatusCodeKey, details.status_code);
-    body->SetInteger(kElapsedTimeKey, details.elapsed_time.InMilliseconds());
+      double sampling_fraction) {
+    base::Value::Dict body;
+    body.Set(kPhaseKey, kSignedExchangePhaseValue);
+    body.Set(kTypeKey, details.type);
+    body.Set(kSamplingFractionKey, sampling_fraction);
+    body.Set(kReferrerKey, details.referrer);
+    body.Set(kServerIpKey, details.server_ip_address.ToString());
+    body.Set(kProtocolKey, details.protocol);
+    body.Set(kMethodKey, details.method);
+    body.Set(kStatusCodeKey, details.status_code);
+    body.Set(kElapsedTimeKey,
+             static_cast<int>(details.elapsed_time.InMilliseconds()));
 
-    auto* sxg_body = body->SetKey(kSignedExchangeBodyKey,
-                                  base::Value(base::Value::Type::DICTIONARY));
-    sxg_body->SetKey(kOuterUrlKey, base::Value(details.outer_url.spec()));
+    base::Value::Dict sxg_body;
+    sxg_body.Set(kOuterUrlKey, details.outer_url.spec());
     if (details.inner_url.is_valid())
-      sxg_body->SetKey(kInnerUrlKey, base::Value(details.inner_url.spec()));
+      sxg_body.Set(kInnerUrlKey, details.inner_url.spec());
 
-    base::Value cert_url_list = base::Value(base::Value::Type::LIST);
+    base::Value::List cert_url_list;
     if (details.cert_url.is_valid())
-      cert_url_list.Append(base::Value(details.cert_url.spec()));
-    sxg_body->SetKey(kCertUrlKey, std::move(cert_url_list));
+      cert_url_list.Append(details.cert_url.spec());
+    sxg_body.Set(kCertUrlKey, std::move(cert_url_list));
+    body.Set(kSignedExchangeBodyKey, std::move(sxg_body));
 
-    return std::move(body);
+    return body;
   }
 
   bool IsMismatchingSubdomainReport(const NelPolicy& policy,
diff --git a/net/reporting/reporting_browsing_data_remover_unittest.cc b/net/reporting/reporting_browsing_data_remover_unittest.cc
index 86e19da8..05832c2 100644
--- a/net/reporting/reporting_browsing_data_remover_unittest.cc
+++ b/net/reporting/reporting_browsing_data_remover_unittest.cc
@@ -44,9 +44,8 @@
   // TODO(chlily): Take NIK.
   void AddReport(const GURL& url) {
     cache()->AddReport(absl::nullopt, NetworkIsolationKey(), url, kUserAgent_,
-                       kGroup_, kType_,
-                       std::make_unique<base::Value>(base::Value::Type::DICT),
-                       0, tick_clock()->NowTicks(), 0);
+                       kGroup_, kType_, base::Value::Dict(), 0,
+                       tick_clock()->NowTicks(), 0);
   }
 
   // TODO(chlily): Take NIK.
diff --git a/net/reporting/reporting_cache.h b/net/reporting/reporting_cache.h
index 3243cc7..ba4bf5e4 100644
--- a/net/reporting/reporting_cache.h
+++ b/net/reporting/reporting_cache.h
@@ -72,7 +72,7 @@
       const std::string& user_agent,
       const std::string& group_name,
       const std::string& type,
-      std::unique_ptr<const base::Value> body,
+      base::Value::Dict body,
       int depth,
       base::TimeTicks queued,
       int attempts) = 0;
diff --git a/net/reporting/reporting_cache_impl.cc b/net/reporting/reporting_cache_impl.cc
index aec3973f..f3405d3bae 100644
--- a/net/reporting/reporting_cache_impl.cc
+++ b/net/reporting/reporting_cache_impl.cc
@@ -34,7 +34,7 @@
     const std::string& user_agent,
     const std::string& group_name,
     const std::string& type,
-    std::unique_ptr<const base::Value> body,
+    base::Value::Dict body,
     int depth,
     base::TimeTicks queued,
     int attempts) {
@@ -51,7 +51,8 @@
 
   auto report = std::make_unique<ReportingReport>(
       reporting_source, network_isolation_key, url, user_agent, group_name,
-      type, std::move(body), depth, queued, attempts);
+      type, std::make_unique<base::Value>(std::move(body)), depth, queued,
+      attempts);
 
   auto inserted = reports_.insert(std::move(report));
   DCHECK(inserted.second);
diff --git a/net/reporting/reporting_cache_impl.h b/net/reporting/reporting_cache_impl.h
index 4d622e31..7e14df663 100644
--- a/net/reporting/reporting_cache_impl.h
+++ b/net/reporting/reporting_cache_impl.h
@@ -49,7 +49,7 @@
                  const std::string& user_agent,
                  const std::string& group_name,
                  const std::string& type,
-                 std::unique_ptr<const base::Value> body,
+                 base::Value::Dict body,
                  int depth,
                  base::TimeTicks queued,
                  int attempts) override;
diff --git a/net/reporting/reporting_cache_unittest.cc b/net/reporting/reporting_cache_unittest.cc
index 9b3ec57..fd382e6d 100644
--- a/net/reporting/reporting_cache_unittest.cc
+++ b/net/reporting/reporting_cache_unittest.cc
@@ -111,11 +111,11 @@
       const std::string& user_agent,
       const std::string& group,
       const std::string& type,
-      std::unique_ptr<const base::Value> body,
+      base::Value::Dict body,
       int depth,
       base::TimeTicks queued,
       int attempts) {
-    const base::Value* body_unowned = body.get();
+    const base::Value body_clone(body.Clone());
 
     // The public API will only give us the (unordered) full list of reports in
     // the cache.  So we need to grab the list before we add, and the list after
@@ -136,7 +136,7 @@
         EXPECT_EQ(user_agent, report->user_agent);
         EXPECT_EQ(group, report->group);
         EXPECT_EQ(type, report->type);
-        EXPECT_EQ(*body_unowned, *report->body);
+        EXPECT_EQ(body_clone, *report->body);
         EXPECT_EQ(depth, report->depth);
         EXPECT_EQ(queued, report->queued);
         EXPECT_EQ(attempts, report->attempts);
@@ -244,9 +244,8 @@
   cache()->GetReports(&reports);
   EXPECT_TRUE(reports.empty());
 
-  cache()->AddReport(
-      kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0, kNowTicks_, 0);
+  cache()->AddReport(kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_,
+                     kType_, base::Value::Dict(), 0, kNowTicks_, 0);
   EXPECT_EQ(1, observer()->cached_reports_update_count());
 
   cache()->GetReports(&reports);
@@ -283,12 +282,10 @@
 TEST_P(ReportingCacheTest, RemoveAllReports) {
   LoadReportingClients();
 
-  cache()->AddReport(
-      kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0, kNowTicks_, 0);
-  cache()->AddReport(
-      kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0, kNowTicks_, 0);
+  cache()->AddReport(kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_,
+                     kType_, base::Value::Dict(), 0, kNowTicks_, 0);
+  cache()->AddReport(kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_,
+                     kType_, base::Value::Dict(), 0, kNowTicks_, 0);
   EXPECT_EQ(2, observer()->cached_reports_update_count());
 
   std::vector<const ReportingReport*> reports;
@@ -305,9 +302,8 @@
 TEST_P(ReportingCacheTest, RemovePendingReports) {
   LoadReportingClients();
 
-  cache()->AddReport(
-      kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0, kNowTicks_, 0);
+  cache()->AddReport(kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_,
+                     kType_, base::Value::Dict(), 0, kNowTicks_, 0);
   EXPECT_EQ(1, observer()->cached_reports_update_count());
 
   std::vector<const ReportingReport*> reports;
@@ -343,9 +339,8 @@
 TEST_P(ReportingCacheTest, RemoveAllPendingReports) {
   LoadReportingClients();
 
-  cache()->AddReport(
-      kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0, kNowTicks_, 0);
+  cache()->AddReport(kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_,
+                     kType_, base::Value::Dict(), 0, kNowTicks_, 0);
   EXPECT_EQ(1, observer()->cached_reports_update_count());
 
   std::vector<const ReportingReport*> reports;
@@ -385,12 +380,10 @@
   const base::TimeTicks now = base::TimeTicks();
   const ReportingReport* report1 =
       AddAndReturnReport(kNik_, kUrl1_, kUserAgent_, kGroup1_, kType_,
-                         std::make_unique<base::Value>(base::Value::Type::DICT),
-                         0, now + base::Seconds(200), 0);
+                         base::Value::Dict(), 0, now + base::Seconds(200), 0);
   const ReportingReport* report2 =
       AddAndReturnReport(kOtherNik_, kUrl1_, kUserAgent_, kGroup2_, kType_,
-                         std::make_unique<base::Value>(base::Value::Type::DICT),
-                         0, now + base::Seconds(100), 1);
+                         base::Value::Dict(), 0, now + base::Seconds(100), 1);
   // Mark report1 and report2 as pending.
   EXPECT_THAT(cache()->GetReportsToDeliver(),
               ::testing::UnorderedElementsAre(report1, report2));
@@ -431,12 +424,10 @@
   // Add two new reports that will show up as "queued".
   const ReportingReport* report3 =
       AddAndReturnReport(kNik_, kUrl2_, kUserAgent_, kGroup1_, kType_,
-                         std::make_unique<base::Value>(base::Value::Type::DICT),
-                         2, now + base::Seconds(200), 0);
+                         base::Value::Dict(), 2, now + base::Seconds(200), 0);
   const ReportingReport* report4 =
       AddAndReturnReport(kOtherNik_, kUrl1_, kUserAgent_, kGroup1_, kType_,
-                         std::make_unique<base::Value>(base::Value::Type::DICT),
-                         0, now + base::Seconds(300), 0);
+                         base::Value::Dict(), 0, now + base::Seconds(300), 0);
   actual = cache()->GetReportsAsValue();
   expected = base::test::ParseJson(base::StringPrintf(
       R"json(
@@ -505,14 +496,11 @@
   // Queue a V1 report for each of these sources, and a V0 report (with a null
   // source) for the same URL.
   cache()->AddReport(source1, kNik_, kUrl1_, kUserAgent_, kGroup1_, kType_,
-                     std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-                     kNowTicks_, 0);
+                     base::Value::Dict(), 0, kNowTicks_, 0);
   cache()->AddReport(source2, kNik_, kUrl1_, kUserAgent_, kGroup1_, kType_,
-                     std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-                     kNowTicks_, 0);
-  cache()->AddReport(
-      absl::nullopt, kNik_, kUrl1_, kUserAgent_, kGroup1_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0, kNowTicks_, 0);
+                     base::Value::Dict(), 0, kNowTicks_, 0);
+  cache()->AddReport(absl::nullopt, kNik_, kUrl1_, kUserAgent_, kGroup1_,
+                     kType_, base::Value::Dict(), 0, kNowTicks_, 0);
   EXPECT_EQ(3, observer()->cached_reports_update_count());
 
   std::vector<const ReportingReport*> reports;
@@ -1449,18 +1437,16 @@
   // Enqueue the maximum number of reports, spaced apart in time.
   for (size_t i = 0; i < max_report_count; ++i) {
     cache()->AddReport(kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_,
-                       kType_,
-                       std::make_unique<base::Value>(base::Value::Type::DICT),
-                       0, tick_clock()->NowTicks(), 0);
+                       kType_, base::Value::Dict(), 0, tick_clock()->NowTicks(),
+                       0);
     tick_clock()->Advance(base::Minutes(1));
   }
   EXPECT_EQ(max_report_count, report_count());
 
   // Add one more report to force the cache to evict one.
   cache()->AddReport(kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_,
-                     kType_,
-                     std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-                     tick_clock()->NowTicks(), 0);
+                     kType_, base::Value::Dict(), 0, tick_clock()->NowTicks(),
+                     0);
 
   // Make sure the cache evicted a report to make room for the new one, and make
   // sure the report evicted was the earliest-queued one.
@@ -1482,10 +1468,9 @@
   // Enqueue the maximum number of reports, spaced apart in time.
   std::vector<const ReportingReport*> reports;
   for (size_t i = 0; i < max_report_count; ++i) {
-    reports.push_back(AddAndReturnReport(
-        kNik_, kUrl1_, kUserAgent_, kGroup1_, kType_,
-        std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-        tick_clock()->NowTicks(), 0));
+    reports.push_back(AddAndReturnReport(kNik_, kUrl1_, kUserAgent_, kGroup1_,
+                                         kType_, base::Value::Dict(), 0,
+                                         tick_clock()->NowTicks(), 0));
     tick_clock()->Advance(base::Minutes(1));
   }
   EXPECT_EQ(max_report_count, report_count());
@@ -1496,9 +1481,8 @@
 
   // Add one more report to force the cache to evict one. Since the cache has
   // only pending reports, it will be forced to evict the *new* report!
-  cache()->AddReport(
-      kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0, kNowTicks_, 0);
+  cache()->AddReport(kReportingSource_, kNik_, kUrl1_, kUserAgent_, kGroup1_,
+                     kType_, base::Value::Dict(), 0, kNowTicks_, 0);
 
   // Make sure the cache evicted a report, and make sure the report evicted was
   // the new, non-pending one.
diff --git a/net/reporting/reporting_delivery_agent_unittest.cc b/net/reporting/reporting_delivery_agent_unittest.cc
index 270c9403..5d38ffe 100644
--- a/net/reporting/reporting_delivery_agent_unittest.cc
+++ b/net/reporting/reporting_delivery_agent_unittest.cc
@@ -53,17 +53,18 @@
     policy.endpoint_backoff_policy.entry_lifetime_ms = 0;
     policy.endpoint_backoff_policy.always_use_initial_delay = false;
     UsePolicy(policy);
-    report_body_.GetDict().Set("key", "value");
   }
 
   void AddReport(const absl::optional<base::UnguessableToken>& reporting_source,
                  const NetworkIsolationKey& network_isolation_key,
                  const GURL& url,
                  const std::string& group) {
-    cache()->AddReport(
-        reporting_source, network_isolation_key, url, kUserAgent_, group,
-        kType_, std::make_unique<base::Value>(report_body_.Clone()),
-        0 /* depth */, tick_clock()->NowTicks() /* queued */, 0 /* attempts */);
+    base::Value::Dict report_body;
+    report_body.Set("key", "value");
+    cache()->AddReport(reporting_source, network_isolation_key, url,
+                       kUserAgent_, group, kType_, std::move(report_body),
+                       0 /* depth */, tick_clock()->NowTicks() /* queued */,
+                       0 /* attempts */);
   }
 
   // The first report added to the cache is uploaded immediately, and a timer is
@@ -108,7 +109,6 @@
 
   base::test::ScopedFeatureList feature_list_;
 
-  base::Value report_body_{base::Value::Type::DICT};
   const GURL kUrl_ = GURL("https://origin/path");
   const GURL kOtherUrl_ = GURL("https://other-origin/path");
   const GURL kSubdomainUrl_ = GURL("https://sub.origin/path");
diff --git a/net/reporting/reporting_endpoint_manager_unittest.cc b/net/reporting/reporting_endpoint_manager_unittest.cc
index 758b8b7..67d2d5a4 100644
--- a/net/reporting/reporting_endpoint_manager_unittest.cc
+++ b/net/reporting/reporting_endpoint_manager_unittest.cc
@@ -61,7 +61,7 @@
                  const std::string& user_agent,
                  const std::string& group_name,
                  const std::string& type,
-                 std::unique_ptr<const base::Value> body,
+                 base::Value::Dict body,
                  int depth,
                  base::TimeTicks queued,
                  int attempts) override {
diff --git a/net/reporting/reporting_garbage_collector_unittest.cc b/net/reporting/reporting_garbage_collector_unittest.cc
index 17de3c1..6f4cf28 100644
--- a/net/reporting/reporting_garbage_collector_unittest.cc
+++ b/net/reporting/reporting_garbage_collector_unittest.cc
@@ -49,8 +49,7 @@
   EXPECT_FALSE(garbage_collection_timer()->IsRunning());
 
   cache()->AddReport(absl::nullopt, kNik_, kUrl_, kUserAgent_, kGroup_, kType_,
-                     std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-                     tick_clock()->NowTicks(), 0);
+                     base::Value::Dict(), 0, tick_clock()->NowTicks(), 0);
 
   EXPECT_TRUE(garbage_collection_timer()->IsRunning());
 
@@ -61,8 +60,7 @@
 
 TEST_F(ReportingGarbageCollectorTest, Report) {
   cache()->AddReport(absl::nullopt, kNik_, kUrl_, kUserAgent_, kGroup_, kType_,
-                     std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-                     tick_clock()->NowTicks(), 0);
+                     base::Value::Dict(), 0, tick_clock()->NowTicks(), 0);
   garbage_collection_timer()->Fire();
 
   EXPECT_EQ(1u, report_count());
@@ -70,8 +68,7 @@
 
 TEST_F(ReportingGarbageCollectorTest, ExpiredReport) {
   cache()->AddReport(absl::nullopt, kNik_, kUrl_, kUserAgent_, kGroup_, kType_,
-                     std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-                     tick_clock()->NowTicks(), 0);
+                     base::Value::Dict(), 0, tick_clock()->NowTicks(), 0);
   tick_clock()->Advance(2 * policy().max_report_age);
   garbage_collection_timer()->Fire();
 
@@ -80,8 +77,7 @@
 
 TEST_F(ReportingGarbageCollectorTest, FailedReport) {
   cache()->AddReport(absl::nullopt, kNik_, kUrl_, kUserAgent_, kGroup_, kType_,
-                     std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-                     tick_clock()->NowTicks(), 0);
+                     base::Value::Dict(), 0, tick_clock()->NowTicks(), 0);
 
   std::vector<const ReportingReport*> reports;
   cache()->GetReports(&reports);
@@ -120,9 +116,8 @@
   cache()->SetV1EndpointForTesting(group_key, *kReportingSource_,
                                    kIsolationInfo_, kUrl_);
   cache()->AddReport(kReportingSource_, kNik_, kUrl_, kUserAgent_, kGroup_,
-                     kType_,
-                     std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-                     tick_clock()->NowTicks(), 0);
+                     kType_, base::Value::Dict(), 0, tick_clock()->NowTicks(),
+                     0);
   // Mark the source as expired. The source data should be removed as soon as
   // all reports are delivered.
   cache()->SetExpiredSource(*kReportingSource_);
diff --git a/net/reporting/reporting_network_change_observer_unittest.cc b/net/reporting/reporting_network_change_observer_unittest.cc
index 92370ce..d733889 100644
--- a/net/reporting/reporting_network_change_observer_unittest.cc
+++ b/net/reporting/reporting_network_change_observer_unittest.cc
@@ -64,9 +64,8 @@
   UsePolicy(new_policy);
 
   cache()->AddReport(kReportingSource_, kNik_, kUrl_, kUserAgent_, kGroup_,
-                     kType_,
-                     std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-                     tick_clock()->NowTicks(), 0);
+                     kType_, base::Value::Dict(), 0, tick_clock()->NowTicks(),
+                     0);
   SetEndpoint();
   ASSERT_EQ(1u, report_count());
   ASSERT_EQ(1u, cache()->GetEndpointCount());
@@ -84,9 +83,8 @@
   UsePolicy(new_policy);
 
   cache()->AddReport(kReportingSource_, kNik_, kUrl_, kUserAgent_, kGroup_,
-                     kType_,
-                     std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-                     tick_clock()->NowTicks(), 0);
+                     kType_, base::Value::Dict(), 0, tick_clock()->NowTicks(),
+                     0);
   SetEndpoint();
   ASSERT_EQ(1u, report_count());
   ASSERT_EQ(1u, cache()->GetEndpointCount());
@@ -104,9 +102,8 @@
   UsePolicy(new_policy);
 
   cache()->AddReport(kReportingSource_, kNik_, kUrl_, kUserAgent_, kGroup_,
-                     kType_,
-                     std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-                     tick_clock()->NowTicks(), 0);
+                     kType_, base::Value::Dict(), 0, tick_clock()->NowTicks(),
+                     0);
   SetEndpoint();
   ASSERT_EQ(1u, report_count());
   ASSERT_EQ(1u, cache()->GetEndpointCount());
@@ -124,9 +121,8 @@
   UsePolicy(new_policy);
 
   cache()->AddReport(kReportingSource_, kNik_, kUrl_, kUserAgent_, kGroup_,
-                     kType_,
-                     std::make_unique<base::Value>(base::Value::Type::DICT), 0,
-                     tick_clock()->NowTicks(), 0);
+                     kType_, base::Value::Dict(), 0, tick_clock()->NowTicks(),
+                     0);
   SetEndpoint();
   ASSERT_EQ(1u, report_count());
   ASSERT_EQ(1u, cache()->GetEndpointCount());
diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_service.cc
index 8c9caf6..cab6067 100644
--- a/net/reporting/reporting_service.cc
+++ b/net/reporting/reporting_service.cc
@@ -87,7 +87,7 @@
       const std::string& user_agent,
       const std::string& group,
       const std::string& type,
-      std::unique_ptr<const base::Value> body,
+      base::Value::Dict body,
       int depth) override {
     DCHECK(context_);
     DCHECK(context_->delegate());
@@ -208,7 +208,7 @@
       const std::string& user_agent,
       const std::string& group,
       const std::string& type,
-      std::unique_ptr<const base::Value> body,
+      base::Value::Dict body,
       int depth,
       base::TimeTicks queued_ticks) {
     DCHECK(initialized_);
diff --git a/net/reporting/reporting_service.h b/net/reporting/reporting_service.h
index 1f8e6b6..de9fe0c 100644
--- a/net/reporting/reporting_service.h
+++ b/net/reporting/reporting_service.h
@@ -77,7 +77,7 @@
       const std::string& user_agent,
       const std::string& group,
       const std::string& type,
-      std::unique_ptr<const base::Value> body,
+      base::Value::Dict body,
       int depth) = 0;
 
   // Processes a Report-To header. |origin| is the Origin of the URL that the
diff --git a/net/reporting/reporting_service_unittest.cc b/net/reporting/reporting_service_unittest.cc
index 6d40b21..d7c85e2 100644
--- a/net/reporting/reporting_service_unittest.cc
+++ b/net/reporting/reporting_service_unittest.cc
@@ -112,9 +112,8 @@
 };
 
 TEST_P(ReportingServiceTest, QueueReport) {
-  service()->QueueReport(
-      kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0);
+  service()->QueueReport(kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_,
+                         kType_, base::Value::Dict(), 0);
   FinishLoading(true /* load_success */);
 
   std::vector<const ReportingReport*> reports;
@@ -130,9 +129,8 @@
 TEST_P(ReportingServiceTest, QueueReportSanitizeUrl) {
   // Same as kUrl_ but with username, password, and fragment.
   GURL url = GURL("https://username:password@origin/path#fragment");
-  service()->QueueReport(
-      url, kReportingSource_, kNik_, kUserAgent_, kGroup_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0);
+  service()->QueueReport(url, kReportingSource_, kNik_, kUserAgent_, kGroup_,
+                         kType_, base::Value::Dict(), 0);
   FinishLoading(true /* load_success */);
 
   std::vector<const ReportingReport*> reports;
@@ -149,9 +147,8 @@
   GURL url = GURL("https://");
   // This does not trigger an attempt to load from the store because the url
   // is immediately rejected as invalid.
-  service()->QueueReport(
-      url, kReportingSource_, kNik_, kUserAgent_, kGroup_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0);
+  service()->QueueReport(url, kReportingSource_, kNik_, kUserAgent_, kGroup_,
+                         kType_, base::Value::Dict(), 0);
 
   std::vector<const ReportingReport*> reports;
   context()->cache()->GetReports(&reports);
@@ -166,9 +163,8 @@
   // Re-create the store, so it reads the new feature value.
   Init();
 
-  service()->QueueReport(
-      kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0);
+  service()->QueueReport(kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_,
+                         kType_, base::Value::Dict(), 0);
   FinishLoading(true /* load_success */);
 
   std::vector<const ReportingReport*> reports;
@@ -260,9 +256,8 @@
   service()->SetDocumentReportingEndpoints(*kReportingSource_, kOrigin_,
                                            kIsolationInfo_, *parsed_header);
   // This report should be sent immediately, starting the delivery agent timer.
-  service()->QueueReport(
-      kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0);
+  service()->QueueReport(kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_,
+                         kType_, base::Value::Dict(), 0);
 
   FinishLoading(true /* load_success */);
 
@@ -296,9 +291,8 @@
   service()->SetDocumentReportingEndpoints(*kReportingSource_, kOrigin_,
                                            kIsolationInfo_, *parsed_header);
   // This report should be sent immediately, starting the delivery agent timer.
-  service()->QueueReport(
-      kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0);
+  service()->QueueReport(kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_,
+                         kType_, base::Value::Dict(), 0);
 
   FinishLoading(true /* load_success */);
 
@@ -311,9 +305,8 @@
                     ReportingReport::Status::PENDING));
 
   // Queue another report, which should remain queued.
-  service()->QueueReport(
-      kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0);
+  service()->QueueReport(kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_,
+                         kType_, base::Value::Dict(), 0);
   EXPECT_EQ(1u, context()->cache()->GetReportCountWithStatusForTesting(
                     ReportingReport::Status::QUEUED));
   EXPECT_EQ(1u, context()->cache()->GetReportCountWithStatusForTesting(
@@ -467,9 +460,8 @@
   EXPECT_THAT(store()->GetAllCommands(),
               testing::UnorderedElementsAreArray(expected_commands));
 
-  service()->QueueReport(
-      kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0);
+  service()->QueueReport(kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_,
+                         kType_, base::Value::Dict(), 0);
   expected_commands.emplace_back(
       CommandType::UPDATE_REPORTING_ENDPOINT_GROUP_ACCESS_TIME, kGroupKey_);
   EXPECT_THAT(store()->GetAllCommands(),
@@ -529,9 +521,8 @@
   EXPECT_THAT(store()->GetAllCommands(),
               testing::UnorderedElementsAreArray(expected_commands));
 
-  service()->QueueReport(
-      kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_, kType_,
-      std::make_unique<base::Value>(base::Value::Type::DICT), 0);
+  service()->QueueReport(kUrl_, kReportingSource_, kNik_, kUserAgent_, kGroup_,
+                         kType_, base::Value::Dict(), 0);
   EXPECT_THAT(store()->GetAllCommands(),
               testing::UnorderedElementsAreArray(expected_commands));
 
diff --git a/net/reporting/reporting_test_util.cc b/net/reporting/reporting_test_util.cc
index 6130a320..d12ccf0 100644
--- a/net/reporting/reporting_test_util.cc
+++ b/net/reporting/reporting_test_util.cc
@@ -339,10 +339,11 @@
     const std::string& user_agent,
     const std::string& group,
     const std::string& type,
-    std::unique_ptr<const base::Value> body,
+    base::Value::Dict body,
     int depth) {
-  reports_.emplace_back(Report(url, network_isolation_key, user_agent, group,
-                               type, std::move(body), depth));
+  reports_.emplace_back(
+      Report(url, network_isolation_key, user_agent, group, type,
+             std::make_unique<base::Value>(std::move(body)), depth));
 }
 
 void TestReportingService::ProcessReportToHeader(
diff --git a/net/reporting/reporting_test_util.h b/net/reporting/reporting_test_util.h
index bb4f4cd..6c1353c 100644
--- a/net/reporting/reporting_test_util.h
+++ b/net/reporting/reporting_test_util.h
@@ -348,7 +348,7 @@
       const std::string& user_agent,
       const std::string& group,
       const std::string& type,
-      std::unique_ptr<const base::Value> body,
+      base::Value::Dict body,
       int depth) override;
 
   void ProcessReportToHeader(const url::Origin& url,
diff --git a/pdf/pdf_view_plugin_base.cc b/pdf/pdf_view_plugin_base.cc
index 6308d31..98f29f1 100644
--- a/pdf/pdf_view_plugin_base.cc
+++ b/pdf/pdf_view_plugin_base.cc
@@ -177,7 +177,7 @@
   message.Set("layoutOptions", layout.options().ToValue());
   base::Value::List page_dimensions;
   for (size_t i = 0; i < layout.page_count(); ++i)
-    page_dimensions.Append(base::Value(DictFromRect(layout.page_rect(i))));
+    page_dimensions.Append(DictFromRect(layout.page_rect(i)));
   message.Set("pageDimensions", std::move(page_dimensions));
   SendMessage(std::move(message));
 
@@ -867,13 +867,12 @@
 }
 
 // static
-base::Value::DictStorage PdfViewPluginBase::DictFromRect(
-    const gfx::Rect& rect) {
-  base::Value::DictStorage dict;
-  dict["x"] = base::Value(rect.x());
-  dict["y"] = base::Value(rect.y());
-  dict["width"] = base::Value(rect.width());
-  dict["height"] = base::Value(rect.height());
+base::Value::Dict PdfViewPluginBase::DictFromRect(const gfx::Rect& rect) {
+  base::Value::Dict dict;
+  dict.Set("x", rect.x());
+  dict.Set("y", rect.y());
+  dict.Set("width", rect.width());
+  dict.Set("height", rect.height());
   return dict;
 }
 
diff --git a/pdf/pdf_view_plugin_base.h b/pdf/pdf_view_plugin_base.h
index 2454e2f..abfc91a 100644
--- a/pdf/pdf_view_plugin_base.h
+++ b/pdf/pdf_view_plugin_base.h
@@ -350,7 +350,7 @@
     return size > 0 && size <= kMaximumSavedFileSize;
   }
 
-  static base::Value::DictStorage DictFromRect(const gfx::Rect& rect);
+  static base::Value::Dict DictFromRect(const gfx::Rect& rect);
 
  private:
   // Converts a scroll offset (which is relative to a UI direction-dependent
diff --git a/pdf/pdf_view_plugin_base_unittest.cc b/pdf/pdf_view_plugin_base_unittest.cc
index 5320e63..428338a 100644
--- a/pdf/pdf_view_plugin_base_unittest.cc
+++ b/pdf/pdf_view_plugin_base_unittest.cc
@@ -318,32 +318,6 @@
             fake_plugin_.sent_messages()[0]);
 }
 
-TEST_F(PdfViewPluginBaseWithoutDocInfoTest,
-       DocumentLoadCompleteInNonFullFramePdfViewer) {
-  ASSERT_FALSE(fake_plugin_.full_frame());
-  fake_plugin_.CreateUrlLoader();
-
-  ASSERT_FALSE(fake_plugin_.IsPrintPreview());
-  ASSERT_EQ(PdfViewPluginBase::DocumentLoadState::kLoading,
-            fake_plugin_.document_load_state_for_testing());
-
-  EXPECT_CALL(fake_plugin_, UserMetricsRecordAction("PDF.LoadSuccess"));
-  EXPECT_CALL(fake_plugin_, SetFormTextFieldInFocus(false));
-  EXPECT_CALL(fake_plugin_, DidStopLoading()).Times(0);
-  EXPECT_CALL(fake_plugin_,
-              SetContentRestrictions(fake_plugin_.GetContentRestrictions()))
-      .Times(0);
-
-  fake_plugin_.DocumentLoadComplete();
-  EXPECT_EQ(PdfViewPluginBase::DocumentLoadState::kComplete,
-            fake_plugin_.document_load_state_for_testing());
-
-  // Check all the sent messages.
-  ASSERT_EQ(1u, fake_plugin_.sent_messages().size());
-  EXPECT_EQ(CreateExpectedFormTextFieldFocusChangeResponse(),
-            fake_plugin_.sent_messages()[0]);
-}
-
 TEST_F(PdfViewPluginBaseWithEngineTest, HandleInputEvent) {
   auto* engine = static_cast<TestPDFiumEngine*>(fake_plugin_.engine());
   EXPECT_CALL(*engine, HandleInputEvent)
diff --git a/pdf/pdf_view_web_plugin_unittest.cc b/pdf/pdf_view_web_plugin_unittest.cc
index a2fea25..e3a4283 100644
--- a/pdf/pdf_view_web_plugin_unittest.cc
+++ b/pdf/pdf_view_web_plugin_unittest.cc
@@ -603,6 +603,59 @@
   plugin_->CreateUrlLoader();
 }
 
+TEST_F(PdfViewWebPluginTest, DocumentLoadComplete) {
+  plugin_->CreateUrlLoader();
+
+  EXPECT_CALL(*client_ptr_, RecordComputedAction("PDF.LoadSuccess"));
+  EXPECT_CALL(*client_ptr_, PostMessage);
+  EXPECT_CALL(*client_ptr_, PostMessage(base::test::IsJson(R"({
+    "type": "formFocusChange",
+    "focused": false,
+  })")));
+  ExpectUpdateTextInputState(blink::WebTextInputType::kWebTextInputTypeNone);
+  EXPECT_CALL(*client_ptr_, PostMessage(base::test::IsJson(R"({
+    "type": "printPreviewLoaded",
+  })")))
+      .Times(0);
+  EXPECT_CALL(*client_ptr_, DidStopLoading).Times(0);
+  EXPECT_CALL(pdf_service_, UpdateContentRestrictions).Times(0);
+  plugin_->DocumentLoadComplete();
+
+  EXPECT_EQ(PdfViewPluginBase::DocumentLoadState::kComplete,
+            plugin_->document_load_state_for_testing());
+  pdf_receiver_.FlushForTesting();
+}
+
+TEST_F(PdfViewWebPluginFullFrameTest, DocumentLoadComplete) {
+  // Must flush IPCs after `CreateUrlLoader()` in full-frame mode, otherwise
+  // there's an unexpected `UpdateContentRestrictions()` call (see the
+  // `PdfViewWebPluginFullFrameTest.CreateUrlLoader` test).
+  plugin_->CreateUrlLoader();
+  pdf_receiver_.FlushForTesting();
+
+  EXPECT_CALL(*client_ptr_, RecordComputedAction("PDF.LoadSuccess"));
+  EXPECT_CALL(*client_ptr_, PostMessage);
+  EXPECT_CALL(*client_ptr_, PostMessage(base::test::IsJson(R"({
+    "type": "formFocusChange",
+    "focused": false,
+  })")));
+  ExpectUpdateTextInputState(blink::WebTextInputType::kWebTextInputTypeNone);
+  EXPECT_CALL(*client_ptr_, PostMessage(base::test::IsJson(R"({
+    "type": "printPreviewLoaded",
+  })")))
+      .Times(0);
+  EXPECT_CALL(*client_ptr_, DidStopLoading);
+  EXPECT_CALL(pdf_service_, UpdateContentRestrictions(kContentRestrictionPrint |
+                                                      kContentRestrictionPaste |
+                                                      kContentRestrictionCut |
+                                                      kContentRestrictionCopy));
+  plugin_->DocumentLoadComplete();
+
+  EXPECT_EQ(PdfViewPluginBase::DocumentLoadState::kComplete,
+            plugin_->document_load_state_for_testing());
+  pdf_receiver_.FlushForTesting();
+}
+
 TEST_F(PdfViewWebPluginTest, DocumentLoadFailed) {
   plugin_->CreateUrlLoader();
 
@@ -1144,7 +1197,7 @@
   plugin_->NotifyNumberOfFindResultsChanged(/*total=*/5, /*final_result=*/true);
 }
 
-TEST_F(PdfViewWebPluginTest, DocumentLoadCompletePostMessages) {
+TEST_F(PdfViewWebPluginTest, OnDocumentLoadComplete) {
   base::Value::Dict metadata;
   metadata.Set("fileSize", "0 B");
   metadata.Set("linearized", false);
@@ -1313,7 +1366,7 @@
   }
 };
 
-TEST_F(PdfViewWebPluginWithDocInfoTest, DocumentLoadCompletePostMessages) {
+TEST_F(PdfViewWebPluginWithDocInfoTest, OnDocumentLoadComplete) {
   const base::Value::Dict expect_attachments =
       CreateExpectedAttachmentsResponse();
   const base::Value::Dict expect_bookmarks =
@@ -1330,7 +1383,7 @@
  protected:
   static void AddDataToValue(base::span<const uint8_t> data,
                              base::Value& value) {
-    value.SetKey("dataToSave", base::Value(data));
+    value.GetDict().Set("dataToSave", base::Value(data));
   }
 
   void SetUpClient() override {
@@ -1645,6 +1698,34 @@
   plugin_->OnMessage(message.GetDict());
 }
 
+TEST_F(PdfViewWebPluginPrintPreviewTest, DocumentLoadComplete) {
+  base::Value reset_message = base::test::ParseJson(R"({
+    "type": "resetPrintPreviewMode",
+    "url": "chrome-untrusted://print/0/0/print.pdf",
+    "grayscale": false,
+    "pageCount": 1,
+  })");
+  plugin_->OnMessage(reset_message.GetDict());
+
+  EXPECT_CALL(*client_ptr_, RecordComputedAction("PDF.LoadSuccess"));
+  EXPECT_CALL(*client_ptr_, PostMessage);
+  EXPECT_CALL(*client_ptr_, PostMessage(base::test::IsJson(R"({
+    "type": "formFocusChange",
+    "focused": false,
+  })")));
+  ExpectUpdateTextInputState(blink::WebTextInputType::kWebTextInputTypeNone);
+  EXPECT_CALL(*client_ptr_, PostMessage(base::test::IsJson(R"({
+    "type": "printPreviewLoaded",
+  })")));
+  EXPECT_CALL(*client_ptr_, DidStopLoading).Times(0);
+  EXPECT_CALL(pdf_service_, UpdateContentRestrictions).Times(0);
+  plugin_->DocumentLoadComplete();
+
+  EXPECT_EQ(PdfViewPluginBase::DocumentLoadState::kComplete,
+            plugin_->document_load_state_for_testing());
+  pdf_receiver_.FlushForTesting();
+}
+
 TEST_F(PdfViewWebPluginPrintPreviewTest,
        DocumentLoadProgressResetByResetPrintPreviewModeMessage) {
   plugin_->DocumentLoadProgress(2, 100);
diff --git a/pdf/test/test_pdfium_engine.h b/pdf/test/test_pdfium_engine.h
index 1f736ad..705dd36 100644
--- a/pdf/test/test_pdfium_engine.h
+++ b/pdf/test/test_pdfium_engine.h
@@ -97,6 +97,8 @@
 
   void SetPermissions(const std::vector<DocumentPermission>& permissions);
 
+  MOCK_METHOD(void, OnDocumentCanceled, (), (override));
+
  protected:
   std::vector<DocumentAttachmentInfo>& doc_attachment_info_list() {
     return doc_attachment_info_list_;
diff --git a/rlz/chromeos/lib/rlz_value_store_chromeos.cc b/rlz/chromeos/lib/rlz_value_store_chromeos.cc
index a07ce47..3e15cb5a 100644
--- a/rlz/chromeos/lib/rlz_value_store_chromeos.cc
+++ b/rlz/chromeos/lib/rlz_value_store_chromeos.cc
@@ -162,37 +162,37 @@
 // Copy |value| without empty children.
 absl::optional<base::Value> CopyWithoutEmptyChildren(const base::Value& value) {
   switch (value.type()) {
-    case base::Value::Type::DICTIONARY: {
-      base::Value::DictStorage storage;
+    case base::Value::Type::DICT: {
+      base::Value::Dict dict;
+      const base::Value::Dict& dict_in = value.GetDict();
 
-      for (const auto key_value_pair : value.DictItems()) {
+      for (auto it = dict_in.begin(); it != dict_in.end(); ++it) {
         absl::optional<base::Value> item_copy =
-            CopyWithoutEmptyChildren(key_value_pair.second);
+            CopyWithoutEmptyChildren(it->second);
         if (item_copy)
-          storage.insert(
-              std::make_pair(key_value_pair.first, std::move(*item_copy)));
+          dict.Set(it->first, std::move(*item_copy));
       }
 
-      if (storage.empty())
+      if (dict.empty())
         return absl::nullopt;
 
-      return base::Value(std::move(storage));
+      return base::Value(std::move(dict));
     }
 
     case base::Value::Type::LIST: {
-      base::Value::ListStorage storage;
-      storage.reserve(value.GetListDeprecated().size());
+      base::Value::List list;
+      list.reserve(value.GetList().size());
 
-      for (const base::Value& item : value.GetListDeprecated()) {
+      for (const base::Value& item : value.GetList()) {
         absl::optional<base::Value> item_copy = CopyWithoutEmptyChildren(item);
         if (item_copy)
-          storage.push_back(std::move(*item_copy));
+          list.Append(std::move(*item_copy));
       }
 
-      if (storage.empty())
+      if (list.empty())
         return absl::nullopt;
 
-      return base::Value(std::move(storage));
+      return base::Value(std::move(list));
     }
 
     default:
@@ -330,7 +330,7 @@
   events->clear();
 
   bool remove_caf = false;
-  for (const base::Value& item : events_list->GetListDeprecated()) {
+  for (const base::Value& item : events_list->GetList()) {
     const std::string* event = item.GetIfString();
     if (!event)
       continue;
@@ -464,40 +464,39 @@
 
 bool RlzValueStoreChromeOS::AddValueToList(const std::string& list_name,
                                            base::Value value) {
-  base::Value* list_value = rlz_store_.FindListPath(list_name);
-  if (!list_value) {
-    list_value =
-        rlz_store_.SetPath(list_name, base::Value(base::Value::Type::LIST));
+  base::Value::List* list =
+      rlz_store_.GetDict().FindListByDottedPath(list_name);
+  if (!list) {
+    list = &rlz_store_.SetPath(list_name, base::Value(base::Value::Type::LIST))
+                ->GetList();
   }
-  if (!base::Contains(list_value->GetListDeprecated(), value)) {
-    list_value->Append(std::move(value));
+  if (!base::Contains(*list, value)) {
+    list->Append(std::move(value));
   }
   return true;
 }
 
 bool RlzValueStoreChromeOS::RemoveValueFromList(const std::string& list_name,
                                                 const base::Value& to_remove) {
-  base::Value* list_value = rlz_store_.FindListPath(list_name);
-  if (!list_value)
+  base::Value::List* list =
+      rlz_store_.GetDict().FindListByDottedPath(list_name);
+  if (!list)
     return false;
 
-  base::Value::ListStorage storage =
-      std::move(*list_value).TakeListDeprecated();
-  base::EraseIf(storage, [&to_remove](const base::Value& value) {
-    return value == to_remove;
-  });
-  *list_value = base::Value(std::move(storage));
+  list->EraseIf(
+      [&to_remove](const base::Value& value) { return value == to_remove; });
 
   return true;
 }
 
 bool RlzValueStoreChromeOS::ListContainsValue(const std::string& list_name,
                                               const base::Value& value) const {
-  const base::Value* list_value = rlz_store_.FindListPath(list_name);
-  if (!list_value)
+  const base::Value::List* list =
+      rlz_store_.GetDict().FindListByDottedPath(list_name);
+  if (!list)
     return false;
 
-  return base::Contains(list_value->GetListDeprecated(), value);
+  return base::Contains(*list, value);
 }
 
 bool RlzValueStoreChromeOS::HasAccessPointRlz(AccessPoint access_point) const {
diff --git a/services/network/network_context.cc b/services/network/network_context.cc
index 40a552f..968649f 100644
--- a/services/network/network_context.cc
+++ b/services/network/network_context.cc
@@ -1113,17 +1113,13 @@
     const absl::optional<base::UnguessableToken>& reporting_source,
     const net::NetworkIsolationKey& network_isolation_key,
     const absl::optional<std::string>& user_agent,
-    base::Value body) {
+    base::Value::Dict body) {
 #if BUILDFLAG(ENABLE_REPORTING)
   // If |reporting_source| is provided, it must not be empty.
   DCHECK(!(reporting_source.has_value() && reporting_source->is_empty()));
   if (require_network_isolation_key_)
     DCHECK(!network_isolation_key.IsEmpty());
 
-  DCHECK(body.is_dict());
-  if (!body.is_dict())
-    return;
-
   // Get the ReportingService.
   net::URLRequestContext* request_context = url_request_context();
   net::ReportingService* reporting_service =
@@ -1140,9 +1136,9 @@
         request_context->http_user_agent_settings()->GetUserAgent();
   }
 
-  reporting_service->QueueReport(
-      url, reporting_source, network_isolation_key, reported_user_agent, group,
-      type, base::Value::ToUniquePtrValue(std::move(body)), 0 /* depth */);
+  reporting_service->QueueReport(url, reporting_source, network_isolation_key,
+                                 reported_user_agent, group, type,
+                                 std::move(body), 0 /* depth */);
 #endif  // BUILDFLAG(ENABLE_REPORTING)
 }
 
diff --git a/services/network/network_context.h b/services/network/network_context.h
index bcd47e7..56b0063 100644
--- a/services/network/network_context.h
+++ b/services/network/network_context.h
@@ -455,7 +455,7 @@
       const absl::optional<base::UnguessableToken>& reporting_source,
       const net::NetworkIsolationKey& network_isolation_key,
       const absl::optional<std::string>& user_agent,
-      base::Value body) override;
+      base::Value::Dict body) override;
   void QueueSignedExchangeReport(
       mojom::SignedExchangeReportPtr report,
       const net::NetworkIsolationKey& network_isolation_key) override;
diff --git a/services/network/network_context_unittest.cc b/services/network/network_context_unittest.cc
index 9fca09b..47e3bba3 100644
--- a/services/network/network_context_unittest.cc
+++ b/services/network/network_context_unittest.cc
@@ -2270,7 +2270,7 @@
   GURL domain("http://google.com");
   network_context->url_request_context()->reporting_service()->QueueReport(
       domain, absl::nullopt, net::NetworkIsolationKey(), "Mozilla/1.0", "group",
-      "type", nullptr, 0);
+      "type", base::Value::Dict(), 0);
 
   std::vector<const net::ReportingReport*> reports;
   reporting_cache->GetReports(&reports);
@@ -2299,11 +2299,11 @@
   GURL url1("http://google.com");
   reporting_service->QueueReport(url1, absl::nullopt,
                                  net::NetworkIsolationKey(), "Mozilla/1.0",
-                                 "group", "type", nullptr, 0);
+                                 "group", "type", base::Value::Dict(), 0);
   GURL url2("http://chromium.org");
   reporting_service->QueueReport(url2, absl::nullopt,
                                  net::NetworkIsolationKey(), "Mozilla/1.0",
-                                 "group", "type", nullptr, 0);
+                                 "group", "type", base::Value::Dict(), 0);
 
   std::vector<const net::ReportingReport*> reports;
   reporting_cache->GetReports(&reports);
@@ -2338,11 +2338,11 @@
   GURL url1("http://192.168.0.1");
   reporting_service->QueueReport(url1, absl::nullopt,
                                  net::NetworkIsolationKey(), "Mozilla/1.0",
-                                 "group", "type", nullptr, 0);
+                                 "group", "type", base::Value::Dict(), 0);
   GURL url2("http://192.168.0.2");
   reporting_service->QueueReport(url2, absl::nullopt,
                                  net::NetworkIsolationKey(), "Mozilla/1.0",
-                                 "group", "type", nullptr, 0);
+                                 "group", "type", base::Value::Dict(), 0);
 
   std::vector<const net::ReportingReport*> reports;
   reporting_cache->GetReports(&reports);
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
index 9dc7502f..a310af3 100644
--- a/services/network/public/mojom/network_context.mojom
+++ b/services/network/public/mojom/network_context.mojom
@@ -1052,7 +1052,7 @@
               mojo_base.mojom.UnguessableToken? reporting_source,
               NetworkIsolationKey network_isolation_key,
               string? user_agent,
-              mojo_base.mojom.DeprecatedDictionaryValue body);
+              mojo_base.mojom.DictionaryValue body);
 
   // Queues a signed exchange report.
   //
diff --git a/services/network/test/test_network_context.h b/services/network/test/test_network_context.h
index d143a82..9326104 100644
--- a/services/network/test/test_network_context.h
+++ b/services/network/test/test_network_context.h
@@ -128,7 +128,7 @@
       const absl::optional<base::UnguessableToken>& reporting_source,
       const net::NetworkIsolationKey& network_isolation_key,
       const absl::optional<std::string>& user_agent,
-      base::Value body) override {}
+      base::Value::Dict body) override {}
   void QueueSignedExchangeReport(
       mojom::SignedExchangeReportPtr report,
       const net::NetworkIsolationKey& network_isolation_key) override {}
diff --git a/services/viz/public/cpp/compositing/transferable_resource_mojom_traits.cc b/services/viz/public/cpp/compositing/transferable_resource_mojom_traits.cc
index ea12da0e..db1f90f 100644
--- a/services/viz/public/cpp/compositing/transferable_resource_mojom_traits.cc
+++ b/services/viz/public/cpp/compositing/transferable_resource_mojom_traits.cc
@@ -25,6 +25,8 @@
       return viz::mojom::SynchronizationType::kSyncToken;
     case viz::TransferableResource::SynchronizationType::kGpuCommandsCompleted:
       return viz::mojom::SynchronizationType::kGpuCommandsCompleted;
+    case viz::TransferableResource::SynchronizationType::kReleaseFence:
+      return viz::mojom::SynchronizationType::kReleaseFence;
   }
   NOTREACHED();
   return viz::mojom::SynchronizationType::kSyncToken;
@@ -43,6 +45,9 @@
       *out =
           viz::TransferableResource::SynchronizationType::kGpuCommandsCompleted;
       return true;
+    case viz::mojom::SynchronizationType::kReleaseFence:
+      *out = viz::TransferableResource::SynchronizationType::kReleaseFence;
+      return true;
   }
   return false;
 }
diff --git a/services/viz/public/mojom/compositing/transferable_resource.mojom b/services/viz/public/mojom/compositing/transferable_resource.mojom
index b4c970b08..e169be2 100644
--- a/services/viz/public/mojom/compositing/transferable_resource.mojom
+++ b/services/viz/public/mojom/compositing/transferable_resource.mojom
@@ -18,6 +18,7 @@
 enum SynchronizationType {
   kSyncToken,
   kGpuCommandsCompleted,
+  kReleaseFence,
 };
 
 // See components/viz/common/resources/transferable_resource.h.
diff --git a/storage/browser/file_system/obfuscated_file_util.cc b/storage/browser/file_system/obfuscated_file_util.cc
index 19a725b..f3463199 100644
--- a/storage/browser/file_system/obfuscated_file_util.cc
+++ b/storage/browser/file_system/obfuscated_file_util.cc
@@ -866,6 +866,34 @@
   return children.empty();
 }
 
+base::FileErrorOr<base::FilePath>
+ObfuscatedFileUtil::GetDirectoryForBucketAndType(const BucketLocator& bucket,
+                                                 const std::string& type_string,
+                                                 bool create) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  // A default bucket in a first-party context uses
+  // GetDirectoryForStorageKeyAndType() to determine its file path.
+  if (bucket.storage_key.IsFirstPartyContext() && bucket.is_default) {
+    base::File::Error error = base::File::FILE_OK;
+    base::FilePath path = GetDirectoryForStorageKeyAndType(
+        bucket.storage_key, type_string, create, &error);
+    if (error != base::File::FILE_OK)
+      return error;
+    return path;
+  }
+  // All other contexts use the provided bucket information to construct the
+  // file path.
+  base::FilePath path =
+      sandbox_delegate_->quota_manager_proxy()->GetClientBucketPath(
+          bucket, QuotaClientType::kFileSystem);
+  // Append the file system type and verify the path is valid.
+  path = path.AppendASCII(type_string);
+  base::File::Error error = GetDirectoryHelper(path, create);
+  if (error != base::File::FILE_OK)
+    return error;
+  return path;
+}
+
 // TODO(https://crbug.com/1310361): refactor GetDirectoryForStorageKeyAndType
 // and its callers to return a base::FileErrorOr<base::FilePath>.
 base::FilePath ObfuscatedFileUtil::GetDirectoryForStorageKeyAndType(
@@ -1011,8 +1039,7 @@
     const FileSystemURL& url,
     bool create) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  if (!url.bucket().has_value() ||
-      (url.storage_key().IsFirstPartyContext() && url.bucket()->is_default)) {
+  if (!url.bucket().has_value()) {
     // Access the SandboxDirectoryDatabase to construct the file path.
     // TODO(https://crbug.com/1310361): refactor GetDirectoryForStorageKey and
     // its related functions to return a base::FileErrorOr<base::FilePath>.
@@ -1024,15 +1051,8 @@
     return path;
   }
   // Construct the file path using the provided bucket information.
-  base::FilePath path =
-      sandbox_delegate_->quota_manager_proxy()->GetClientBucketPath(
-          url.bucket().value(), QuotaClientType::kFileSystem);
-  // Append the file system type and verify the path is valid.
-  path = path.AppendASCII(CallGetTypeStringForURL(url));
-  base::File::Error error = GetDirectoryHelper(path, create);
-  if (error != base::File::FILE_OK)
-    return error;
-  return path;
+  return GetDirectoryForBucketAndType(url.bucket().value(),
+                                      CallGetTypeStringForURL(url), create);
 }
 
 std::string ObfuscatedFileUtil::CallGetTypeStringForURL(
diff --git a/storage/browser/file_system/obfuscated_file_util.h b/storage/browser/file_system/obfuscated_file_util.h
index 10a610c5..d90c3b0 100644
--- a/storage/browser/file_system/obfuscated_file_util.h
+++ b/storage/browser/file_system/obfuscated_file_util.h
@@ -174,6 +174,16 @@
   bool IsDirectoryEmpty(FileSystemOperationContext* context,
                         const FileSystemURL& url);
 
+  // Gets the topmost directory specific to this BucketLocator and type. This
+  // will contain both the directory database's files and all the backing file
+  // subdirectories.
+  // Returns the topmost origin directory if `type_string` is empty.
+  // Returns a base::FileError if the directory is undefined.
+  base::FileErrorOr<base::FilePath> GetDirectoryForBucketAndType(
+      const BucketLocator& bucket_locator,
+      const std::string& type_string,
+      bool create);
+
   // Gets the topmost directory specific to this StorageKey and type.  This will
   // contain both the directory database's files and all the backing file
   // subdirectories.
diff --git a/storage/browser/quota/quota_manager_impl.h b/storage/browser/quota/quota_manager_impl.h
index 17ba15e0..9ccba1d1 100644
--- a/storage/browser/quota/quota_manager_impl.h
+++ b/storage/browser/quota/quota_manager_impl.h
@@ -203,7 +203,7 @@
   //
   // TODO(crbug.com/1208141): Remove `storage_type` when the only supported
   // StorageType is kTemporary.
-  void CreateBucketForTesting(
+  virtual void CreateBucketForTesting(
       const blink::StorageKey& storage_key,
       const std::string& bucket_name,
       blink::mojom::StorageType storage_type,
diff --git a/storage/browser/test/mock_quota_manager.cc b/storage/browser/test/mock_quota_manager.cc
index 152bc09..b77bc1e 100644
--- a/storage/browser/test/mock_quota_manager.cc
+++ b/storage/browser/test/mock_quota_manager.cc
@@ -76,6 +76,18 @@
   std::move(callback).Run(std::move(bucket));
 }
 
+void MockQuotaManager::CreateBucketForTesting(
+    const blink::StorageKey& storage_key,
+    const std::string& bucket_name,
+    blink::mojom::StorageType storage_type,
+    base::OnceCallback<void(QuotaErrorOr<BucketInfo>)> callback) {
+  const BucketInitParams params = BucketInitParams(storage_key, bucket_name);
+  BucketInfo bucket = CreateBucket(params, storage_type);
+  buckets_.emplace_back(
+      BucketData(bucket, storage::AllQuotaClientTypes(), base::Time::Now()));
+  std::move(callback).Run(std::move(bucket));
+}
+
 void MockQuotaManager::GetOrCreateBucketDeprecated(
     const BucketInitParams& params,
     blink::mojom::StorageType type,
diff --git a/storage/browser/test/mock_quota_manager.h b/storage/browser/test/mock_quota_manager.h
index d08a92a..906b8d2 100644
--- a/storage/browser/test/mock_quota_manager.h
+++ b/storage/browser/test/mock_quota_manager.h
@@ -112,6 +112,12 @@
   // calls to this function.
   void NotifyWriteFailed(const blink::StorageKey& storage_key) override;
 
+  void CreateBucketForTesting(
+      const blink::StorageKey& storage_key,
+      const std::string& bucket_name,
+      blink::mojom::StorageType storage_type,
+      base::OnceCallback<void(QuotaErrorOr<BucketInfo>)> callback) override;
+
   // Helper method for updating internal quota info.
   void SetQuota(const blink::StorageKey& storage_key,
                 blink::mojom::StorageType type,
diff --git a/storage/browser/test/mock_quota_manager_proxy.cc b/storage/browser/test/mock_quota_manager_proxy.cc
index 7a1f933..a6b9f2a9 100644
--- a/storage/browser/test/mock_quota_manager_proxy.cc
+++ b/storage/browser/test/mock_quota_manager_proxy.cc
@@ -42,6 +42,18 @@
     mock_quota_manager_->UpdateOrCreateBucket(params, std::move(callback));
 }
 
+void MockQuotaManagerProxy::CreateBucketForTesting(
+    const blink::StorageKey& storage_key,
+    const std::string& bucket_name,
+    blink::mojom::StorageType storage_type,
+    scoped_refptr<base::SequencedTaskRunner> callback_task_runner,
+    base::OnceCallback<void(QuotaErrorOr<BucketInfo>)> callback) {
+  if (mock_quota_manager_) {
+    mock_quota_manager_->CreateBucketForTesting(
+        storage_key, bucket_name, storage_type, std::move(callback));
+  }
+}
+
 void MockQuotaManagerProxy::GetBucket(
     const blink::StorageKey& storage_key,
     const std::string& bucket_name,
@@ -54,6 +66,15 @@
   }
 }
 
+void MockQuotaManagerProxy::GetBucketById(
+    const BucketId& bucket_id,
+    scoped_refptr<base::SequencedTaskRunner> callback_task_runner,
+    base::OnceCallback<void(QuotaErrorOr<BucketInfo>)> callback) {
+  if (mock_quota_manager_) {
+    mock_quota_manager_->GetBucketById(bucket_id, std::move(callback));
+  }
+}
+
 void MockQuotaManagerProxy::GetUsageAndQuota(
     const blink::StorageKey& storage_key,
     blink::mojom::StorageType type,
diff --git a/storage/browser/test/mock_quota_manager_proxy.h b/storage/browser/test/mock_quota_manager_proxy.h
index 46e5110..f5882f0 100644
--- a/storage/browser/test/mock_quota_manager_proxy.h
+++ b/storage/browser/test/mock_quota_manager_proxy.h
@@ -54,6 +54,11 @@
                  scoped_refptr<base::SequencedTaskRunner> callback_task_runner,
                  base::OnceCallback<void(QuotaErrorOr<BucketInfo>)>) override;
 
+  void GetBucketById(
+      const BucketId& bucket_id,
+      scoped_refptr<base::SequencedTaskRunner> callback_task_runner,
+      base::OnceCallback<void(QuotaErrorOr<BucketInfo>)> callback) override;
+
   // We don't mock them.
   void SetUsageCacheEnabled(storage::QuotaClientType client_id,
                             const blink::StorageKey& storage_key,
@@ -86,6 +91,13 @@
       scoped_refptr<base::SequencedTaskRunner> callback_task_runner,
       base::OnceClosure callback) override;
 
+  void CreateBucketForTesting(
+      const blink::StorageKey& storage_key,
+      const std::string& bucket_name,
+      blink::mojom::StorageType storage_type,
+      scoped_refptr<base::SequencedTaskRunner> callback_task_runner,
+      base::OnceCallback<void(QuotaErrorOr<BucketInfo>)> callback) override;
+
   int notify_storage_accessed_count() const { return storage_accessed_count_; }
   int notify_storage_modified_count() const { return storage_modified_count_; }
   blink::StorageKey last_notified_storage_key() const {
diff --git a/storage/browser/test/mock_quota_manager_unittest.cc b/storage/browser/test/mock_quota_manager_unittest.cc
index 4713b00..ffe83b61 100644
--- a/storage/browser/test/mock_quota_manager_unittest.cc
+++ b/storage/browser/test/mock_quota_manager_unittest.cc
@@ -15,6 +15,7 @@
 #include "base/run_loop.h"
 #include "base/test/bind.h"
 #include "base/test/task_environment.h"
+#include "base/test/test_future.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "components/services/storage/public/cpp/buckets/bucket_locator.h"
 #include "storage/browser/quota/quota_client_type.h"
@@ -97,6 +98,16 @@
     return result;
   }
 
+  QuotaErrorOr<BucketInfo> CreateBucketForTesting(
+      const blink::StorageKey& storage_key,
+      const std::string& bucket_name,
+      blink::mojom::StorageType type) {
+    base::test::TestFuture<QuotaErrorOr<BucketInfo>> bucket_future;
+    manager_->CreateBucketForTesting(storage_key, bucket_name, type,
+                                     bucket_future.GetCallback());
+    return bucket_future.Take();
+  }
+
   void GetModifiedBuckets(StorageType type, base::Time begin, base::Time end) {
     base::RunLoop run_loop;
     manager_->GetBucketsModifiedBetween(
@@ -202,6 +213,41 @@
   }
 }
 
+TEST_F(MockQuotaManagerTest, CreateBucketForTesting) {
+  const StorageKey kStorageKey1 =
+      StorageKey::CreateFromStringForTesting("http://host1:1/");
+  const StorageKey kStorageKey2 =
+      StorageKey::CreateFromStringForTesting("http://host2:1/");
+  const char kBucketName[] = "bucket_name";
+
+  EXPECT_EQ(manager()->BucketDataCount(kClientFile), 0);
+  EXPECT_EQ(manager()->BucketDataCount(kClientDB), 0);
+
+  QuotaErrorOr<BucketInfo> bucket1 =
+      CreateBucketForTesting(kStorageKey1, kBucketName, kTemporary);
+  EXPECT_TRUE(bucket1.ok());
+  EXPECT_EQ(bucket1->storage_key, kStorageKey1);
+  EXPECT_EQ(bucket1->name, kBucketName);
+  EXPECT_EQ(bucket1->type, kTemporary);
+  EXPECT_EQ(manager()->BucketDataCount(kClientFile), 1);
+  EXPECT_TRUE(manager()->BucketHasData(bucket1.value(), kClientFile));
+
+  QuotaErrorOr<BucketInfo> bucket2 =
+      CreateBucketForTesting(kStorageKey2, kBucketName, kTemporary);
+  EXPECT_TRUE(bucket2.ok());
+  EXPECT_EQ(bucket2->storage_key, kStorageKey2);
+  EXPECT_EQ(bucket2->name, kBucketName);
+  EXPECT_EQ(bucket2->type, kTemporary);
+  EXPECT_EQ(manager()->BucketDataCount(kClientFile), 2);
+  EXPECT_TRUE(manager()->BucketHasData(bucket2.value(), kClientFile));
+
+  QuotaErrorOr<BucketInfo> dupe_bucket =
+      GetOrCreateBucket(kStorageKey1, kBucketName);
+  EXPECT_TRUE(dupe_bucket.ok());
+  EXPECT_EQ(dupe_bucket.value(), bucket1.value());
+  EXPECT_EQ(manager()->BucketDataCount(kClientFile), 2);
+}
+
 TEST_F(MockQuotaManagerTest, GetBucket) {
   const StorageKey kStorageKey1 =
       StorageKey::CreateFromStringForTesting("http://host1:1/");
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index 040146a..f059ca01 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -69399,7 +69399,7 @@
           "--platform",
           "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -69411,7 +69411,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "absl_hardening_tests iPhone X 14.5",
+        "name": "absl_hardening_tests iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -69437,21 +69437,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://third_party/abseil-cpp:absl_hardening_tests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone X 16.0"
       },
       {
         "args": [
           "--platform",
           "iPad Air 2",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -69463,7 +69463,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "base_unittests iPad Air 2 14.5",
+        "name": "base_unittests iPad Air 2 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -69489,21 +69489,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://base:base_unittests/",
-        "variant_id": "iPad Air 2 14.5"
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone 6s Plus",
+          "iPhone 8 Plus",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -69515,7 +69515,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "base_unittests iPhone 6s Plus 14.5",
+        "name": "base_unittests iPhone 8 Plus 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -69541,21 +69541,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://base:base_unittests/",
-        "variant_id": "iPhone 6s Plus 14.5"
+        "variant_id": "iPhone 8 Plus 16.0"
       },
       {
         "args": [
           "--platform",
           "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -69567,7 +69567,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "base_unittests iPhone X 14.5",
+        "name": "base_unittests iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -69593,21 +69593,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://base:base_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone X 16.0"
       },
       {
         "args": [
           "--platform",
           "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -69619,7 +69619,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "boringssl_crypto_tests iPhone X 14.5",
+        "name": "boringssl_crypto_tests iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -69645,21 +69645,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://third_party/boringssl:boringssl_crypto_tests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone X 16.0"
       },
       {
         "args": [
           "--platform",
           "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -69671,7 +69671,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "boringssl_ssl_tests iPhone X 14.5",
+        "name": "boringssl_ssl_tests iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -69697,21 +69697,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://third_party/boringssl:boringssl_ssl_tests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone X 16.0"
       },
       {
         "args": [
           "--platform",
           "iPad Air 2",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -69723,7 +69723,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "components_unittests iPad Air 2 14.5",
+        "name": "components_unittests iPad Air 2 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -69749,21 +69749,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://components:components_unittests/",
-        "variant_id": "iPad Air 2 14.5"
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone 6s Plus",
+          "iPhone 8 Plus",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -69775,7 +69775,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "components_unittests iPhone 6s Plus 14.5",
+        "name": "components_unittests iPhone 8 Plus 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -69801,21 +69801,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://components:components_unittests/",
-        "variant_id": "iPhone 6s Plus 14.5"
+        "variant_id": "iPhone 8 Plus 16.0"
       },
       {
         "args": [
           "--platform",
           "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -69827,7 +69827,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "components_unittests iPhone X 14.5",
+        "name": "components_unittests iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -69853,21 +69853,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://components:components_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone X 16.0"
       },
       {
         "args": [
           "--platform",
           "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -69879,7 +69879,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "crashpad_tests iPhone X 14.5",
+        "name": "crashpad_tests iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -69905,21 +69905,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://third_party/crashpad/crashpad:crashpad_tests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone X 16.0"
       },
       {
         "args": [
           "--platform",
           "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -69931,7 +69931,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "crypto_unittests iPhone X 14.5",
+        "name": "crypto_unittests iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -69957,21 +69957,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://crypto:crypto_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone X 16.0"
       },
       {
         "args": [
           "--platform",
           "iPad Air 2",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -69983,7 +69983,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "gfx_unittests iPad Air 2 14.5",
+        "name": "gfx_unittests iPad Air 2 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -70009,21 +70009,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ui/gfx:gfx_unittests/",
-        "variant_id": "iPad Air 2 14.5"
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone 6s Plus",
+          "iPhone 8 Plus",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -70035,7 +70035,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "gfx_unittests iPhone 6s Plus 14.5",
+        "name": "gfx_unittests iPhone 8 Plus 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -70061,21 +70061,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ui/gfx:gfx_unittests/",
-        "variant_id": "iPhone 6s Plus 14.5"
+        "variant_id": "iPhone 8 Plus 16.0"
       },
       {
         "args": [
           "--platform",
           "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -70087,7 +70087,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "gfx_unittests iPhone X 14.5",
+        "name": "gfx_unittests iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -70113,21 +70113,21 @@
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ui/gfx:gfx_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone X 16.0"
       },
       {
         "args": [
           "--platform",
           "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
@@ -70139,7 +70139,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "google_apis_unittests iPhone X 14.5",
+        "name": "google_apis_unittests iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -70165,6 +70165,4583 @@
               "path": "Xcode.app"
             },
             {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://google_apis:google_apis_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad (6th generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_bookmarks_eg2tests_module iPad (6th generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module/",
+        "variant_id": "iPad (6th generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_bookmarks_eg2tests_module iPad Air (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module/",
+        "variant_id": "iPad Air (3rd generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_bookmarks_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_bookmarks_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad (6th generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_integration_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_integration_eg2tests_module iPad (6th generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 8
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/",
+        "variant_id": "iPad (6th generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_integration_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_integration_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 8
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_integration_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_integration_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 8
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad (6th generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_settings_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_settings_eg2tests_module iPad (6th generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module/",
+        "variant_id": "iPad (6th generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_settings_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_settings_eg2tests_module iPad Air (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module/",
+        "variant_id": "iPad Air (3rd generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_settings_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_settings_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_settings_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_settings_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad (6th generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_signin_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_signin_eg2tests_module iPad (6th generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 5
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/",
+        "variant_id": "iPad (6th generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_signin_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_signin_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 5
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_signin_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_signin_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 5
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad (6th generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_smoke_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_smoke_eg2tests_module iPad (6th generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module/",
+        "variant_id": "iPad (6th generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_smoke_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_smoke_eg2tests_module iPad Air (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module/",
+        "variant_id": "iPad Air (3rd generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_smoke_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_smoke_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_smoke_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_smoke_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad (6th generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_ui_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_ui_eg2tests_module iPad (6th generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 12
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/",
+        "variant_id": "iPad (6th generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_ui_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_ui_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 12
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_ui_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_ui_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 12
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_chrome_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_unittests iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test:ios_chrome_unittests/",
+        "variant_id": "iPad Air 2 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8 Plus",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_chrome_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_unittests iPhone 8 Plus 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test:ios_chrome_unittests/",
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_chrome_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test:ios_chrome_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad (6th generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_web_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_web_eg2tests_module iPad (6th generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module/",
+        "variant_id": "iPad (6th generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_web_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_web_eg2tests_module iPad Air (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module/",
+        "variant_id": "iPad Air (3rd generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_web_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_web_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_web_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_web_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_components_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_components_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/components:ios_components_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_net_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_net_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test_id_prefix": "ninja://ios/net:ios_net_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_remoting_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_remoting_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://remoting/ios:ios_remoting_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad (6th generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_showcase_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_showcase_eg2tests_module iPad (6th generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/showcase:ios_showcase_eg2tests_module/",
+        "variant_id": "iPad (6th generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_showcase_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_showcase_eg2tests_module iPad Air (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/showcase:ios_showcase_eg2tests_module/",
+        "variant_id": "iPad Air (3rd generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_showcase_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_showcase_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/showcase:ios_showcase_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_showcase_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_showcase_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/showcase:ios_showcase_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_testing_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_testing_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/testing:ios_testing_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_inttests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_inttests iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web:ios_web_inttests/",
+        "variant_id": "iPad Air 2 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8 Plus",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_inttests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_inttests iPhone 8 Plus 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web:ios_web_inttests/",
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_inttests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_inttests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web:ios_web_inttests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad (6th generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_web_shell_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_shell_eg2tests_module iPad (6th generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/",
+        "variant_id": "iPad (6th generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_web_shell_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_shell_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_web_shell_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_shell_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_unittests iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web:ios_web_unittests/",
+        "variant_id": "iPad Air 2 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8 Plus",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_unittests iPhone 8 Plus 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web:ios_web_unittests/",
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web:ios_web_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_view_inttests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_view_inttests iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web_view:ios_web_view_inttests/",
+        "variant_id": "iPad Air 2 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8 Plus",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_view_inttests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_view_inttests iPhone 8 Plus 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web_view:ios_web_view_inttests/",
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_view_inttests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_view_inttests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web_view:ios_web_view_inttests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_view_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_view_unittests iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web_view:ios_web_view_unittests/",
+        "variant_id": "iPad Air 2 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8 Plus",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_view_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_view_unittests iPhone 8 Plus 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web_view:ios_web_view_unittests/",
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_view_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_view_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web_view:ios_web_view_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "net_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "net_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://net:net_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "services_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "services_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://services:services_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "skia_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "skia_unittests iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://skia:skia_unittests/",
+        "variant_id": "iPad Air 2 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8 Plus",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "skia_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "skia_unittests iPhone 8 Plus 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://skia:skia_unittests/",
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "skia_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "skia_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://skia:skia_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "sql_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "sql_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://sql:sql_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ui_base_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ui_base_unittests iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ui/base:ui_base_unittests/",
+        "variant_id": "iPad Air 2 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8 Plus",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ui_base_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ui_base_unittests iPhone 8 Plus 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ui/base:ui_base_unittests/",
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "ui_base_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ui_base_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ui/base:ui_base_unittests/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "13c100",
+          "--xctest"
+        ],
+        "isolate_name": "url_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "url_unittests iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_13c100",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://url:url_unittests/",
+        "variant_id": "iPhone X 16.0"
+      }
+    ]
+  },
+  "ios16-sdk-simulator": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "isolated_scripts": [
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "absl_hardening_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "absl_hardening_tests iPhone 6s 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_14_5",
+              "path": "Runtime-ios-14.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://third_party/abseil-cpp:absl_hardening_tests/",
+        "variant_id": "iPhone 6s 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "absl_hardening_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "absl_hardening_tests iPhone 6s 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://third_party/abseil-cpp:absl_hardening_tests/",
+        "variant_id": "iPhone 6s 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "absl_hardening_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "absl_hardening_tests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://third_party/abseil-cpp:absl_hardening_tests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "base_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "base_unittests iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://base:base_unittests/",
+        "variant_id": "iPad Air 2 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "base_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "base_unittests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://base:base_unittests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8 Plus",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "base_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "base_unittests iPhone 8 Plus 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://base:base_unittests/",
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone SE (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "base_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "base_unittests iPhone SE (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://base:base_unittests/",
+        "variant_id": "iPhone SE (3rd generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "boringssl_crypto_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "boringssl_crypto_tests iPhone 6s 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_14_5",
+              "path": "Runtime-ios-14.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://third_party/boringssl:boringssl_crypto_tests/",
+        "variant_id": "iPhone 6s 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "boringssl_crypto_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "boringssl_crypto_tests iPhone 6s 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://third_party/boringssl:boringssl_crypto_tests/",
+        "variant_id": "iPhone 6s 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "boringssl_crypto_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "boringssl_crypto_tests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://third_party/boringssl:boringssl_crypto_tests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "boringssl_ssl_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "boringssl_ssl_tests iPhone 6s 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_14_5",
+              "path": "Runtime-ios-14.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://third_party/boringssl:boringssl_ssl_tests/",
+        "variant_id": "iPhone 6s 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "boringssl_ssl_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "boringssl_ssl_tests iPhone 6s 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://third_party/boringssl:boringssl_ssl_tests/",
+        "variant_id": "iPhone 6s 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "boringssl_ssl_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "boringssl_ssl_tests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://third_party/boringssl:boringssl_ssl_tests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "components_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "components_unittests iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://components:components_unittests/",
+        "variant_id": "iPad Air 2 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "components_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "components_unittests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://components:components_unittests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8 Plus",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "components_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "components_unittests iPhone 8 Plus 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://components:components_unittests/",
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone SE (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "components_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "components_unittests iPhone SE (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://components:components_unittests/",
+        "variant_id": "iPhone SE (3rd generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "crashpad_tests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "crashpad_tests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://third_party/crashpad/crashpad:crashpad_tests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "crypto_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "crypto_unittests iPhone 6s 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_14_5",
+              "path": "Runtime-ios-14.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://crypto:crypto_unittests/",
+        "variant_id": "iPhone 6s 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "crypto_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "crypto_unittests iPhone 6s 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://crypto:crypto_unittests/",
+        "variant_id": "iPhone 6s 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "crypto_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "crypto_unittests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://crypto:crypto_unittests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "gfx_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "gfx_unittests iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ui/gfx:gfx_unittests/",
+        "variant_id": "iPad Air 2 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "gfx_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "gfx_unittests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ui/gfx:gfx_unittests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8 Plus",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "gfx_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "gfx_unittests iPhone 8 Plus 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ui/gfx:gfx_unittests/",
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone SE (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "gfx_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "gfx_unittests iPhone SE (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ui/gfx:gfx_unittests/",
+        "variant_id": "iPhone SE (3rd generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "google_apis_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "google_apis_unittests iPhone 6s 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
               "name": "runtime_ios_14_5",
               "path": "Runtime-ios-14.5"
             }
@@ -70172,27 +74749,26 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://google_apis:google_apis_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 6s 14.5"
       },
       {
         "args": [
           "--platform",
-          "iPad (6th generation)",
+          "iPhone 6s",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
-          "--xctest",
-          "--xcode-parallelization"
+          "14a5228q",
+          "--xctest"
         ],
-        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
+        "isolate_name": "google_apis_unittests",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_bookmarks_eg2tests_module iPad (6th generation) 14.5",
+        "name": "google_apis_unittests iPhone 6s 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -70214,38 +74790,37 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
-        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module/",
-        "variant_id": "iPad (6th generation) 14.5"
+        "test_id_prefix": "ninja://google_apis:google_apis_unittests/",
+        "variant_id": "iPhone 6s 15.5"
       },
       {
         "args": [
           "--platform",
-          "iPad Air (3rd generation)",
+          "iPhone 8",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
-          "--xctest",
-          "--xcode-parallelization"
+          "14a5228q",
+          "--xctest"
         ],
-        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
+        "isolate_name": "google_apis_unittests",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_bookmarks_eg2tests_module iPad Air (3rd generation) 14.5",
+        "name": "google_apis_unittests iPhone 8 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -70267,7 +74842,60 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://google_apis:google_apis_unittests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_bookmarks_eg2tests_module iPad Air 2 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -70278,7 +74906,113 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module/",
-        "variant_id": "iPad Air (3rd generation) 14.5"
+        "variant_id": "iPad Air 2 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_bookmarks_eg2tests_module iPad Air 2 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module/",
+        "variant_id": "iPad Air 2 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_bookmarks_eg2tests_module iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module/",
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
@@ -70289,7 +75023,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70320,7 +75054,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -70336,13 +75070,119 @@
       {
         "args": [
           "--platform",
+          "iPhone 7",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_bookmarks_eg2tests_module iPhone 7 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module/",
+        "variant_id": "iPhone 7 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_bookmarks_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
           "iPhone X",
           "--version",
           "14.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70373,7 +75213,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -70389,22 +75229,22 @@
       {
         "args": [
           "--platform",
-          "iPad (6th generation)",
+          "iPhone X",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
-        "isolate_name": "ios_chrome_integration_eg2tests_module",
+        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_integration_eg2tests_module iPad (6th generation) 14.5",
+        "name": "ios_chrome_bookmarks_eg2tests_module iPhone X 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -70426,39 +75266,38 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 8
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
-        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/",
-        "variant_id": "iPad (6th generation) 14.5"
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module/",
+        "variant_id": "iPhone X 15.5"
       },
       {
         "args": [
           "--platform",
-          "iPad Pro (12.9-inch) (2nd generation)",
+          "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
-        "isolate_name": "ios_chrome_integration_eg2tests_module",
+        "isolate_name": "ios_chrome_bookmarks_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_integration_eg2tests_module iPad Pro (12.9-inch) (2nd generation) 14.5",
+        "name": "ios_chrome_bookmarks_eg2tests_module iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -70480,7 +75319,60 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_integration_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_integration_eg2tests_module iPad Air 2 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -70492,7 +75384,115 @@
           "shards": 8
         },
         "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/",
-        "variant_id": "iPad Pro (12.9-inch) (2nd generation) 14.5"
+        "variant_id": "iPad Air 2 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_integration_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_integration_eg2tests_module iPad Air 2 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 8
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/",
+        "variant_id": "iPad Air 2 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_integration_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_integration_eg2tests_module iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 8
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/",
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
@@ -70503,7 +75503,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70534,7 +75534,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -70551,13 +75551,121 @@
       {
         "args": [
           "--platform",
+          "iPhone 7",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_integration_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_integration_eg2tests_module iPhone 7 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 8
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/",
+        "variant_id": "iPhone 7 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_integration_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_integration_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 8
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
           "iPhone X",
           "--version",
           "14.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70588,7 +75696,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -70605,22 +75713,22 @@
       {
         "args": [
           "--platform",
-          "iPad (6th generation)",
+          "iPhone X",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
-        "isolate_name": "ios_chrome_settings_eg2tests_module",
+        "isolate_name": "ios_chrome_integration_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_settings_eg2tests_module iPad (6th generation) 14.5",
+        "name": "ios_chrome_integration_eg2tests_module iPhone X 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -70642,39 +75750,39 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
+          "shards": 8
         },
-        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module/",
-        "variant_id": "iPad (6th generation) 14.5"
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/",
+        "variant_id": "iPhone X 15.5"
       },
       {
         "args": [
           "--platform",
-          "iPad Air (3rd generation)",
+          "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
-        "isolate_name": "ios_chrome_settings_eg2tests_module",
+        "isolate_name": "ios_chrome_integration_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_settings_eg2tests_module iPad Air (3rd generation) 14.5",
+        "name": "ios_chrome_integration_eg2tests_module iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -70696,7 +75804,61 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 8
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_settings_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_settings_eg2tests_module iPad Air 2 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -70708,7 +75870,115 @@
           "shards": 3
         },
         "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module/",
-        "variant_id": "iPad Air (3rd generation) 14.5"
+        "variant_id": "iPad Air 2 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_settings_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_settings_eg2tests_module iPad Air 2 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module/",
+        "variant_id": "iPad Air 2 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_settings_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_settings_eg2tests_module iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module/",
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
@@ -70719,7 +75989,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70750,7 +76020,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -70767,13 +76037,121 @@
       {
         "args": [
           "--platform",
+          "iPhone 7",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_settings_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_settings_eg2tests_module iPhone 7 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module/",
+        "variant_id": "iPhone 7 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_settings_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_settings_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
           "iPhone X",
           "--version",
           "14.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70804,7 +76182,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -70821,22 +76199,22 @@
       {
         "args": [
           "--platform",
-          "iPad (6th generation)",
+          "iPhone X",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
-        "isolate_name": "ios_chrome_signin_eg2tests_module",
+        "isolate_name": "ios_chrome_settings_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_signin_eg2tests_module iPad (6th generation) 14.5",
+        "name": "ios_chrome_settings_eg2tests_module iPhone X 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -70858,39 +76236,39 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 5
+          "shards": 3
         },
-        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/",
-        "variant_id": "iPad (6th generation) 14.5"
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module/",
+        "variant_id": "iPhone X 15.5"
       },
       {
         "args": [
           "--platform",
-          "iPad Pro (12.9-inch) (2nd generation)",
+          "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
-        "isolate_name": "ios_chrome_signin_eg2tests_module",
+        "isolate_name": "ios_chrome_settings_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_signin_eg2tests_module iPad Pro (12.9-inch) (2nd generation) 14.5",
+        "name": "ios_chrome_settings_eg2tests_module iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -70912,7 +76290,61 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_signin_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_signin_eg2tests_module iPad Air 2 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -70924,7 +76356,115 @@
           "shards": 5
         },
         "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/",
-        "variant_id": "iPad Pro (12.9-inch) (2nd generation) 14.5"
+        "variant_id": "iPad Air 2 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_signin_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_signin_eg2tests_module iPad Air 2 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 5
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/",
+        "variant_id": "iPad Air 2 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_signin_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_signin_eg2tests_module iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 5
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/",
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
@@ -70935,7 +76475,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70966,7 +76506,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -70983,13 +76523,121 @@
       {
         "args": [
           "--platform",
+          "iPhone 7",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_signin_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_signin_eg2tests_module iPhone 7 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 5
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/",
+        "variant_id": "iPhone 7 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_signin_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_signin_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 5
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
           "iPhone X",
           "--version",
           "14.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71020,7 +76668,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71037,22 +76685,22 @@
       {
         "args": [
           "--platform",
-          "iPad (6th generation)",
+          "iPhone X",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
-        "isolate_name": "ios_chrome_smoke_eg2tests_module",
+        "isolate_name": "ios_chrome_signin_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_smoke_eg2tests_module iPad (6th generation) 14.5",
+        "name": "ios_chrome_signin_eg2tests_module iPhone X 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -71074,38 +76722,39 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 5
         },
-        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module/",
-        "variant_id": "iPad (6th generation) 14.5"
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/",
+        "variant_id": "iPhone X 15.5"
       },
       {
         "args": [
           "--platform",
-          "iPad Air (3rd generation)",
+          "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
-        "isolate_name": "ios_chrome_smoke_eg2tests_module",
+        "isolate_name": "ios_chrome_signin_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_smoke_eg2tests_module iPad Air (3rd generation) 14.5",
+        "name": "ios_chrome_signin_eg2tests_module iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -71127,7 +76776,61 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 5
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_smoke_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_smoke_eg2tests_module iPad Air 2 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71138,7 +76841,113 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module/",
-        "variant_id": "iPad Air (3rd generation) 14.5"
+        "variant_id": "iPad Air 2 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_smoke_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_smoke_eg2tests_module iPad Air 2 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module/",
+        "variant_id": "iPad Air 2 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_smoke_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_smoke_eg2tests_module iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module/",
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
@@ -71149,7 +76958,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71180,7 +76989,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71196,13 +77005,119 @@
       {
         "args": [
           "--platform",
+          "iPhone 7",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_smoke_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_smoke_eg2tests_module iPhone 7 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module/",
+        "variant_id": "iPhone 7 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_smoke_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_smoke_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
           "iPhone X",
           "--version",
           "14.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71233,7 +77148,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71249,22 +77164,22 @@
       {
         "args": [
           "--platform",
-          "iPad (6th generation)",
+          "iPhone X",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
-        "isolate_name": "ios_chrome_ui_eg2tests_module",
+        "isolate_name": "ios_chrome_smoke_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_ui_eg2tests_module iPad (6th generation) 14.5",
+        "name": "ios_chrome_smoke_eg2tests_module iPhone X 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -71286,39 +77201,38 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 12
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
-        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/",
-        "variant_id": "iPad (6th generation) 14.5"
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module/",
+        "variant_id": "iPhone X 15.5"
       },
       {
         "args": [
           "--platform",
-          "iPad Pro (12.9-inch) (2nd generation)",
+          "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
-        "isolate_name": "ios_chrome_ui_eg2tests_module",
+        "isolate_name": "ios_chrome_smoke_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_ui_eg2tests_module iPad Pro (12.9-inch) (2nd generation) 14.5",
+        "name": "ios_chrome_smoke_eg2tests_module iPhone X 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -71340,7 +77254,60 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_ui_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_ui_eg2tests_module iPad Air 2 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71352,7 +77319,115 @@
           "shards": 12
         },
         "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/",
-        "variant_id": "iPad Pro (12.9-inch) (2nd generation) 14.5"
+        "variant_id": "iPad Air 2 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_ui_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_ui_eg2tests_module iPad Air 2 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 12
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/",
+        "variant_id": "iPad Air 2 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_ui_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_ui_eg2tests_module iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 12
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/",
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
@@ -71363,7 +77438,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71394,7 +77469,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71411,13 +77486,121 @@
       {
         "args": [
           "--platform",
+          "iPhone 7",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_ui_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_ui_eg2tests_module iPhone 7 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 12
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/",
+        "variant_id": "iPhone 7 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_ui_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_ui_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 12
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
           "iPhone X",
           "--version",
           "14.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71448,7 +77631,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71465,21 +77648,22 @@
       {
         "args": [
           "--platform",
-          "iPad Air 2",
+          "iPhone X",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
-          "--xctest"
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
         ],
-        "isolate_name": "ios_chrome_unittests",
+        "isolate_name": "ios_chrome_ui_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_unittests iPad Air 2 14.5",
+        "name": "ios_chrome_ui_eg2tests_module iPhone X 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -71501,81 +77685,84 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
             }
           ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 12
         },
-        "test_id_prefix": "ninja://ios/chrome/test:ios_chrome_unittests/",
-        "variant_id": "iPad Air 2 14.5"
-      },
-      {
-        "args": [
-          "--platform",
-          "iPhone 6s Plus",
-          "--version",
-          "14.5",
-          "--out-dir",
-          "${ISOLATED_OUTDIR}",
-          "--xcode-build-version",
-          "13c100",
-          "--xctest"
-        ],
-        "isolate_name": "ios_chrome_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "ios_chrome_unittests iPhone 6s Plus 14.5",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "infra/tools/mac_toolchain/${platform}",
-              "location": ".",
-              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Mac-11|Mac-10.16"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "xcode_ios_13c100",
-              "path": "Xcode.app"
-            },
-            {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test_id_prefix": "ninja://ios/chrome/test:ios_chrome_unittests/",
-        "variant_id": "iPhone 6s Plus 14.5"
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/",
+        "variant_id": "iPhone X 15.5"
       },
       {
         "args": [
           "--platform",
           "iPhone X",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_ui_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_ui_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 12
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -71583,7 +77770,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_unittests iPhone X 14.5",
+        "name": "ios_chrome_unittests iPad Air 2 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -71605,38 +77792,37 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/chrome/test:ios_chrome_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPad (6th generation)",
+          "iPhone 8",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
-          "--xctest",
-          "--xcode-parallelization"
+          "14a5228q",
+          "--xctest"
         ],
-        "isolate_name": "ios_chrome_web_eg2tests_module",
+        "isolate_name": "ios_chrome_unittests",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_web_eg2tests_module iPad (6th generation) 14.5",
+        "name": "ios_chrome_unittests iPhone 8 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -71658,38 +77844,37 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
-        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module/",
-        "variant_id": "iPad (6th generation) 14.5"
+        "test_id_prefix": "ninja://ios/chrome/test:ios_chrome_unittests/",
+        "variant_id": "iPhone 8 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPad Air (3rd generation)",
+          "iPhone 8 Plus",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
-          "--xctest",
-          "--xcode-parallelization"
+          "14a5228q",
+          "--xctest"
         ],
-        "isolate_name": "ios_chrome_web_eg2tests_module",
+        "isolate_name": "ios_chrome_unittests",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_chrome_web_eg2tests_module iPad Air (3rd generation) 14.5",
+        "name": "ios_chrome_unittests iPhone 8 Plus 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -71711,7 +77896,112 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test:ios_chrome_unittests/",
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone SE (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_chrome_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_unittests iPhone SE (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test:ios_chrome_unittests/",
+        "variant_id": "iPhone SE (3rd generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_web_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_web_eg2tests_module iPad Air 2 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71722,7 +78012,113 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module/",
-        "variant_id": "iPad Air (3rd generation) 14.5"
+        "variant_id": "iPad Air 2 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_web_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_web_eg2tests_module iPad Air 2 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module/",
+        "variant_id": "iPad Air 2 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_web_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_web_eg2tests_module iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module/",
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
@@ -71733,7 +78129,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71764,7 +78160,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71780,13 +78176,119 @@
       {
         "args": [
           "--platform",
+          "iPhone 7",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_web_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_web_eg2tests_module iPhone 7 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module/",
+        "variant_id": "iPhone 7 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_web_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_web_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
           "iPhone X",
           "--version",
           "14.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71817,7 +78319,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71835,19 +78337,20 @@
           "--platform",
           "iPhone X",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
-          "--xctest"
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
         ],
-        "isolate_name": "ios_components_unittests",
+        "isolate_name": "ios_chrome_web_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_components_unittests iPhone X 14.5",
+        "name": "ios_chrome_web_eg2tests_module iPhone X 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -71869,7 +78372,112 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module/",
+        "variant_id": "iPhone X 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_chrome_web_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_chrome_web_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_components_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_components_unittests iPhone 6s 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71880,26 +78488,26 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/components:ios_components_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 6s 14.5"
       },
       {
         "args": [
           "--platform",
-          "iPhone X",
+          "iPhone 6s",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
-        "isolate_name": "ios_net_unittests",
+        "isolate_name": "ios_components_unittests",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_net_unittests iPhone X 14.5",
+        "name": "ios_components_unittests iPhone 6s 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -71921,7 +78529,111 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/components:ios_components_unittests/",
+        "variant_id": "iPhone 6s 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_components_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_components_unittests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/components:ios_components_unittests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_net_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_net_unittests iPhone 6s 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71933,26 +78645,26 @@
           "shards": 3
         },
         "test_id_prefix": "ninja://ios/net:ios_net_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 6s 14.5"
       },
       {
         "args": [
           "--platform",
-          "iPhone X",
+          "iPhone 6s",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
-        "isolate_name": "ios_remoting_unittests",
+        "isolate_name": "ios_net_unittests",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_remoting_unittests iPhone X 14.5",
+        "name": "ios_net_unittests iPhone 6s 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -71974,7 +78686,113 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test_id_prefix": "ninja://ios/net:ios_net_unittests/",
+        "variant_id": "iPhone 6s 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_net_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_net_unittests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test_id_prefix": "ninja://ios/net:ios_net_unittests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_remoting_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_remoting_unittests iPhone 6s 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -71985,27 +78803,26 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://remoting/ios:ios_remoting_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 6s 14.5"
       },
       {
         "args": [
           "--platform",
-          "iPad (6th generation)",
+          "iPhone 6s",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
-          "--xctest",
-          "--xcode-parallelization"
+          "14a5228q",
+          "--xctest"
         ],
-        "isolate_name": "ios_showcase_eg2tests_module",
+        "isolate_name": "ios_remoting_unittests",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_showcase_eg2tests_module iPad (6th generation) 14.5",
+        "name": "ios_remoting_unittests iPhone 6s 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72027,38 +78844,37 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
-        "test_id_prefix": "ninja://ios/showcase:ios_showcase_eg2tests_module/",
-        "variant_id": "iPad (6th generation) 14.5"
+        "test_id_prefix": "ninja://remoting/ios:ios_remoting_unittests/",
+        "variant_id": "iPhone 6s 15.5"
       },
       {
         "args": [
           "--platform",
-          "iPad Air (3rd generation)",
+          "iPhone 8",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
-          "--xctest",
-          "--xcode-parallelization"
+          "14a5228q",
+          "--xctest"
         ],
-        "isolate_name": "ios_showcase_eg2tests_module",
+        "isolate_name": "ios_remoting_unittests",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_showcase_eg2tests_module iPad Air (3rd generation) 14.5",
+        "name": "ios_remoting_unittests iPhone 8 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72080,7 +78896,60 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://remoting/ios:ios_remoting_unittests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_showcase_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_showcase_eg2tests_module iPad Air 2 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -72091,7 +78960,113 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/showcase:ios_showcase_eg2tests_module/",
-        "variant_id": "iPad Air (3rd generation) 14.5"
+        "variant_id": "iPad Air 2 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_showcase_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_showcase_eg2tests_module iPad Air 2 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/showcase:ios_showcase_eg2tests_module/",
+        "variant_id": "iPad Air 2 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_showcase_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_showcase_eg2tests_module iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/showcase:ios_showcase_eg2tests_module/",
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
@@ -72102,7 +79077,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72133,7 +79108,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -72149,13 +79124,119 @@
       {
         "args": [
           "--platform",
+          "iPhone 7",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_showcase_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_showcase_eg2tests_module iPhone 7 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/showcase:ios_showcase_eg2tests_module/",
+        "variant_id": "iPhone 7 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_showcase_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_showcase_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/showcase:ios_showcase_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
           "iPhone X",
           "--version",
           "14.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72186,7 +79267,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -72204,19 +79285,20 @@
           "--platform",
           "iPhone X",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
-          "--xctest"
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
         ],
-        "isolate_name": "ios_testing_unittests",
+        "isolate_name": "ios_showcase_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_testing_unittests iPhone X 14.5",
+        "name": "ios_showcase_eg2tests_module iPhone X 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72238,7 +79320,112 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/showcase:ios_showcase_eg2tests_module/",
+        "variant_id": "iPhone X 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_showcase_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_showcase_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/showcase:ios_showcase_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_testing_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_testing_unittests iPhone 6s 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -72249,7 +79436,319 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/testing:ios_testing_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 6s 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_testing_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_testing_unittests iPhone 6s 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/testing:ios_testing_unittests/",
+        "variant_id": "iPhone 6s 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_testing_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_testing_unittests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/testing:ios_testing_unittests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_inttests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_inttests iPad Air 2 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web:ios_web_inttests/",
+        "variant_id": "iPad Air 2 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_inttests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_inttests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web:ios_web_inttests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8 Plus",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_inttests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_inttests iPhone 8 Plus 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web:ios_web_inttests/",
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone SE (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_inttests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_inttests iPhone SE (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web:ios_web_inttests/",
+        "variant_id": "iPhone SE (3rd generation) 16.0"
       },
       {
         "args": [
@@ -72260,15 +79759,16 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
-          "--xctest"
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
         ],
-        "isolate_name": "ios_web_inttests",
+        "isolate_name": "ios_web_shell_eg2tests_module",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_web_inttests iPad Air 2 14.5",
+        "name": "ios_web_shell_eg2tests_module iPad Air 2 14.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72290,7 +79790,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -72300,123 +79800,19 @@
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
-        "test_id_prefix": "ninja://ios/web:ios_web_inttests/",
+        "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/",
         "variant_id": "iPad Air 2 14.5"
       },
       {
         "args": [
           "--platform",
-          "iPhone 6s Plus",
+          "iPad Air 2",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
-          "--xctest"
-        ],
-        "isolate_name": "ios_web_inttests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "ios_web_inttests iPhone 6s Plus 14.5",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "infra/tools/mac_toolchain/${platform}",
-              "location": ".",
-              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Mac-11|Mac-10.16"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "xcode_ios_13c100",
-              "path": "Xcode.app"
-            },
-            {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test_id_prefix": "ninja://ios/web:ios_web_inttests/",
-        "variant_id": "iPhone 6s Plus 14.5"
-      },
-      {
-        "args": [
-          "--platform",
-          "iPhone X",
-          "--version",
-          "14.5",
-          "--out-dir",
-          "${ISOLATED_OUTDIR}",
-          "--xcode-build-version",
-          "13c100",
-          "--xctest"
-        ],
-        "isolate_name": "ios_web_inttests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "ios_web_inttests iPhone X 14.5",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "infra/tools/mac_toolchain/${platform}",
-              "location": ".",
-              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "os": "Mac-11|Mac-10.16"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "xcode_ios_13c100",
-              "path": "Xcode.app"
-            },
-            {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test_id_prefix": "ninja://ios/web:ios_web_inttests/",
-        "variant_id": "iPhone X 14.5"
-      },
-      {
-        "args": [
-          "--platform",
-          "iPad (6th generation)",
-          "--version",
-          "14.5",
-          "--out-dir",
-          "${ISOLATED_OUTDIR}",
-          "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72425,7 +79821,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_web_shell_eg2tests_module iPad (6th generation) 14.5",
+        "name": "ios_web_shell_eg2tests_module iPad Air 2 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72447,29 +79843,29 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/",
-        "variant_id": "iPad (6th generation) 14.5"
+        "variant_id": "iPad Air 2 15.5"
       },
       {
         "args": [
           "--platform",
-          "iPad Pro (12.9-inch) (2nd generation)",
+          "iPad Air 2",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72478,7 +79874,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_web_shell_eg2tests_module iPad Pro (12.9-inch) (2nd generation) 14.5",
+        "name": "ios_web_shell_eg2tests_module iPad Air 2 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72500,18 +79896,18 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/",
-        "variant_id": "iPad Pro (12.9-inch) (2nd generation) 14.5"
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
@@ -72522,7 +79918,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72553,7 +79949,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -72569,13 +79965,119 @@
       {
         "args": [
           "--platform",
+          "iPhone 7",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_web_shell_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_shell_eg2tests_module iPhone 7 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/",
+        "variant_id": "iPhone 7 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_web_shell_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_shell_eg2tests_module iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
           "iPhone X",
           "--version",
           "14.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72606,7 +80108,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -72622,13 +80124,119 @@
       {
         "args": [
           "--platform",
-          "iPad Air 2",
+          "iPhone X",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_web_shell_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_shell_eg2tests_module iPhone X 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/",
+        "variant_id": "iPhone X 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone X",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest",
+          "--xcode-parallelization"
+        ],
+        "isolate_name": "ios_web_shell_eg2tests_module",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_shell_eg2tests_module iPhone X 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/",
+        "variant_id": "iPhone X 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPad Air 2",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -72636,7 +80244,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_web_unittests iPad Air 2 14.5",
+        "name": "ios_web_unittests iPad Air 2 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72658,29 +80266,29 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/web:ios_web_unittests/",
-        "variant_id": "iPad Air 2 14.5"
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone 6s Plus",
+          "iPhone 8",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -72688,7 +80296,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_web_unittests iPhone 6s Plus 14.5",
+        "name": "ios_web_unittests iPhone 8 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72710,29 +80318,29 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/web:ios_web_unittests/",
-        "variant_id": "iPhone 6s Plus 14.5"
+        "variant_id": "iPhone 8 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone X",
+          "iPhone 8 Plus",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -72740,7 +80348,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_web_unittests iPhone X 14.5",
+        "name": "ios_web_unittests iPhone 8 Plus 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72762,29 +80370,81 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/web:ios_web_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone SE (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_unittests iPhone SE (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web:ios_web_unittests/",
+        "variant_id": "iPhone SE (3rd generation) 16.0"
       },
       {
         "args": [
           "--platform",
           "iPad Air 2",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -72792,7 +80452,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_web_view_inttests iPad Air 2 14.5",
+        "name": "ios_web_view_inttests iPad Air 2 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72814,29 +80474,29 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/web_view:ios_web_view_inttests/",
-        "variant_id": "iPad Air 2 14.5"
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone 6s Plus",
+          "iPhone 8",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -72844,7 +80504,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_web_view_inttests iPhone 6s Plus 14.5",
+        "name": "ios_web_view_inttests iPhone 8 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72866,29 +80526,29 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/web_view:ios_web_view_inttests/",
-        "variant_id": "iPhone 6s Plus 14.5"
+        "variant_id": "iPhone 8 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone X",
+          "iPhone 8 Plus",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -72896,7 +80556,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_web_view_inttests iPhone X 14.5",
+        "name": "ios_web_view_inttests iPhone 8 Plus 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72918,29 +80578,81 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/web_view:ios_web_view_inttests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 8 Plus 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone SE (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_view_inttests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_view_inttests iPhone SE (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web_view:ios_web_view_inttests/",
+        "variant_id": "iPhone SE (3rd generation) 16.0"
       },
       {
         "args": [
           "--platform",
           "iPad Air 2",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -72948,7 +80660,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_web_view_unittests iPad Air 2 14.5",
+        "name": "ios_web_view_unittests iPad Air 2 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -72970,29 +80682,29 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/web_view:ios_web_view_unittests/",
-        "variant_id": "iPad Air 2 14.5"
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone 6s Plus",
+          "iPhone 8",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -73000,7 +80712,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_web_view_unittests iPhone 6s Plus 14.5",
+        "name": "ios_web_view_unittests iPhone 8 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -73022,29 +80734,29 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/web_view:ios_web_view_unittests/",
-        "variant_id": "iPhone 6s Plus 14.5"
+        "variant_id": "iPhone 8 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone X",
+          "iPhone 8 Plus",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -73052,7 +80764,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ios_web_view_unittests iPhone X 14.5",
+        "name": "ios_web_view_unittests iPhone 8 Plus 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -73074,29 +80786,81 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ios/web_view:ios_web_view_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 8 Plus 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone X",
+          "iPhone SE (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ios_web_view_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ios_web_view_unittests iPhone SE (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ios/web_view:ios_web_view_unittests/",
+        "variant_id": "iPhone SE (3rd generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
           "--version",
           "14.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -73104,7 +80868,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "net_unittests iPhone X 14.5",
+        "name": "net_unittests iPhone 6s 14.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -73126,7 +80890,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -73137,26 +80901,26 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://net:net_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 6s 14.5"
       },
       {
         "args": [
           "--platform",
-          "iPhone X",
+          "iPhone 6s",
           "--version",
-          "14.5",
+          "15.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
-        "isolate_name": "services_unittests",
+        "isolate_name": "net_unittests",
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "services_unittests iPhone X 14.5",
+        "name": "net_unittests iPhone 6s 15.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -73178,7 +80942,111 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://net:net_unittests/",
+        "variant_id": "iPhone 6s 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "net_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "net_unittests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://net:net_unittests/",
+        "variant_id": "iPhone 8 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "14.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "services_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "services_unittests iPhone 6s 14.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -73189,18 +81057,122 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://services:services_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 6s 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "services_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "services_unittests iPhone 6s 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://services:services_unittests/",
+        "variant_id": "iPhone 6s 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "services_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "services_unittests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://services:services_unittests/",
+        "variant_id": "iPhone 8 16.0"
       },
       {
         "args": [
           "--platform",
           "iPad Air 2",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -73208,7 +81180,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "skia_unittests iPad Air 2 14.5",
+        "name": "skia_unittests iPad Air 2 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -73230,29 +81202,29 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://skia:skia_unittests/",
-        "variant_id": "iPad Air 2 14.5"
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone 6s Plus",
+          "iPhone 8",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -73260,7 +81232,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "skia_unittests iPhone 6s Plus 14.5",
+        "name": "skia_unittests iPhone 8 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -73282,29 +81254,29 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://skia:skia_unittests/",
-        "variant_id": "iPhone 6s Plus 14.5"
+        "variant_id": "iPhone 8 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone X",
+          "iPhone 8 Plus",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -73312,7 +81284,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "skia_unittests iPhone X 14.5",
+        "name": "skia_unittests iPhone 8 Plus 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -73334,29 +81306,81 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://skia:skia_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 8 Plus 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone X",
+          "iPhone SE (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "skia_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "skia_unittests iPhone SE (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://skia:skia_unittests/",
+        "variant_id": "iPhone SE (3rd generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
           "--version",
           "14.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -73364,7 +81388,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "sql_unittests iPhone X 14.5",
+        "name": "sql_unittests iPhone 6s 14.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -73386,7 +81410,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -73397,18 +81421,122 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://sql:sql_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 6s 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "sql_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "sql_unittests iPhone 6s 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://sql:sql_unittests/",
+        "variant_id": "iPhone 6s 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "sql_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "sql_unittests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://sql:sql_unittests/",
+        "variant_id": "iPhone 8 16.0"
       },
       {
         "args": [
           "--platform",
           "iPad Air 2",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -73416,7 +81544,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ui_base_unittests iPad Air 2 14.5",
+        "name": "ui_base_unittests iPad Air 2 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -73438,29 +81566,29 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ui/base:ui_base_unittests/",
-        "variant_id": "iPad Air 2 14.5"
+        "variant_id": "iPad Air 2 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone 6s Plus",
+          "iPhone 8",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -73468,7 +81596,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ui_base_unittests iPhone 6s Plus 14.5",
+        "name": "ui_base_unittests iPhone 8 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -73490,29 +81618,29 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ui/base:ui_base_unittests/",
-        "variant_id": "iPhone 6s Plus 14.5"
+        "variant_id": "iPhone 8 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone X",
+          "iPhone 8 Plus",
           "--version",
-          "14.5",
+          "16.0",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -73520,7 +81648,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "ui_base_unittests iPhone X 14.5",
+        "name": "ui_base_unittests iPhone 8 Plus 16.0",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -73542,29 +81670,81 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
-              "name": "runtime_ios_14_5",
-              "path": "Runtime-ios-14.5"
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://ui/base:ui_base_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 8 Plus 16.0"
       },
       {
         "args": [
           "--platform",
-          "iPhone X",
+          "iPhone SE (3rd generation)",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "ui_base_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "ui_base_unittests iPhone SE (3rd generation) 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://ui/base:ui_base_unittests/",
+        "variant_id": "iPhone SE (3rd generation) 16.0"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
           "--version",
           "14.5",
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "13c100",
+          "14a5228q",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -73572,7 +81752,7 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
         },
-        "name": "url_unittests iPhone X 14.5",
+        "name": "url_unittests iPhone 6s 14.5",
         "resultdb": {
           "enable": true,
           "has_native_resultdb_integration": true
@@ -73594,7 +81774,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_13c100",
+              "name": "xcode_ios_14a5228q",
               "path": "Xcode.app"
             },
             {
@@ -73605,15 +81785,114 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test_id_prefix": "ninja://url:url_unittests/",
-        "variant_id": "iPhone X 14.5"
+        "variant_id": "iPhone 6s 14.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 6s",
+          "--version",
+          "15.5",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "url_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "url_unittests iPhone 6s 15.5",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_15_5",
+              "path": "Runtime-ios-15.5"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://url:url_unittests/",
+        "variant_id": "iPhone 6s 15.5"
+      },
+      {
+        "args": [
+          "--platform",
+          "iPhone 8",
+          "--version",
+          "16.0",
+          "--out-dir",
+          "${ISOLATED_OUTDIR}",
+          "--xcode-build-version",
+          "14a5228q",
+          "--xctest"
+        ],
+        "isolate_name": "url_unittests",
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+        },
+        "name": "url_unittests iPhone 8 16.0",
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/mac_toolchain/${platform}",
+              "location": ".",
+              "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "xcode_ios_14a5228q",
+              "path": "Xcode.app"
+            },
+            {
+              "name": "runtime_ios_16_0",
+              "path": "Runtime-ios-16.0"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test_id_prefix": "ninja://url:url_unittests/",
+        "variant_id": "iPhone 8 16.0"
       }
     ]
   },
-  "ios16-sdk-simulator": {
-    "additional_compile_targets": [
-      "all"
-    ]
-  },
   "lacros-amd64-generic-rel (goma cache silo)": {
     "additional_compile_targets": [
       "chrome"
diff --git a/testing/buildbot/chromium.webrtc.json b/testing/buildbot/chromium.webrtc.json
index 7657d2c..75764ec 100644
--- a/testing/buildbot/chromium.webrtc.json
+++ b/testing/buildbot/chromium.webrtc.json
@@ -202,7 +202,15 @@
         },
         "perf_builder_name_alias": "chromium-webrtc-rel-linux",
         "swarming": {
-          "can_use_on_swarming_builders": false
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "builder": "WebRTC Chromium Linux Tester",
+              "os": "Ubuntu-18.04",
+              "pool": "luci.chromium.webrtc"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "capture_unittests",
         "test_id_prefix": "ninja://media/capture:capture_unittests/"
@@ -423,7 +431,16 @@
         },
         "perf_builder_name_alias": "chromium-webrtc-rel-mac",
         "swarming": {
-          "can_use_on_swarming_builders": false
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "builder": "WebRTC Chromium Mac Tester",
+              "cpu": "x86-64",
+              "os": "Mac-11|Mac-10.16|Mac-12",
+              "pool": "luci.chromium.webrtc"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "capture_unittests",
         "test_id_prefix": "ninja://media/capture:capture_unittests/"
@@ -631,7 +648,14 @@
         },
         "perf_builder_name_alias": "chromium-webrtc-rel-win10",
         "swarming": {
-          "can_use_on_swarming_builders": false
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "builder": "WebRTC Chromium Win10 Tester",
+              "pool": "luci.chromium.webrtc"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "capture_unittests",
         "test_id_prefix": "ninja://media/capture:capture_unittests/"
diff --git a/testing/buildbot/filters/fuchsia.browser_tests.filter b/testing/buildbot/filters/fuchsia.browser_tests.filter
index ac262fa..a1bd9b0 100644
--- a/testing/buildbot/filters/fuchsia.browser_tests.filter
+++ b/testing/buildbot/filters/fuchsia.browser_tests.filter
@@ -39,6 +39,7 @@
 -ChromeURLDataManagerWebUITrustedTypesTest.NoTrustedTypesViolation/chrome___browser_switch
 -ChromeURLDataManagerWebUITrustedTypesTest.NoTrustedTypesViolation/chrome___nacl
 -ChromeURLDataManagerWebUITrustedTypesTest.NoTrustedTypesViolation/chrome___sandbox
+-HistoryClustersMetricsBrowserTest.IndirectNavigation
 -HttpProxyScriptBrowserTest.Verify
 -LoadingPredictorBrowserTestWithProxy.PrepareForPageLoadWithPrediction
 -LoadingPredictorBrowserTestWithProxy.PrepareForPageLoadWithoutPrediction
@@ -83,6 +84,7 @@
 
 # TODO(crbug.com/1326670) Crash because KERN: channel (5583773) has 3501 messages
 -ExtractorBrowserTest.ExtractBigFile
+-ExtractorBrowserTest.ExtractTarXz
 -ExtractorBrowserTest.ZeroByteFile
 
 # TODO(crbug.com/1326595): Page title count expected to be 1, but it is 0
@@ -486,6 +488,7 @@
 -CorbAndCorsExtensionBrowserTest.ContentScript_CorsAllowedByServer_NoPermissionToTarget
 -CorbAndCorsExtensionBrowserTest.ContentScript_CorsIgnoredByServer_NoPermissionToTarget
 -CorbAndCorsExtensionBrowserTest.ExtensionWithNoHttpPermissions
+-CorbAndCorsExtensionBrowserTest.FromBackgroundPage_ActiveTabPermission_SpanningMode
 -CorbAndCorsExtensionBrowserTest.FromProgrammaticContentScript_AllowedAfterSniffing
 -CorbAndCorsExtensionBrowserTest.FromProgrammaticContentScript_AllowedTextResource
 -CorbAndCorsExtensionBrowserTest.FromProgrammaticContentScript_AllowedTextResource_SubdomainPermissions
@@ -687,10 +690,18 @@
 -ContentScriptApiTest.ContentScriptExtensionProcess
 -CookieControlsBubbleViewTest.InvokeUi_NotWorkingClicked
 -CookieControlsBubbleViewTest.NotWorkingClicked
+-CrExtensionsA11yTestWithMultipleExensions.WithExtensions_aria_allowed_attr
+-CrExtensionsA11yTestWithMultipleExensions.WithExtensions_aria_required_attr
+-CrExtensionsA11yTestWithMultipleExensions.WithExtensions_audio_caption
 -CrExtensionsA11yTestWithMultipleExensions.WithExtensions_button_name
 -CrExtensionsA11yTestWithMultipleExensions.WithExtensions_definition_list
+-CrExtensionsA11yTestWithMultipleExensions.WithExtensions_document_title
+-CrExtensionsA11yTestWithMultipleExensions.WithExtensions_marquee
+-CrExtensionsA11yTestWithMultipleExensions.WithExtensions_meta_viewport_large
 -CrExtensionsA11yTestWithMultipleExensions.WithExtensions_scope_attr_valid
 -CrExtensionsA11yTestWithMultipleExensions.WithExtensions_table_fake_caption
+-CrExtensionsA11yTestWithMultipleExensions.WithExtensions_td_has_header
+-CrExtensionsA11yTestWithMultipleExensions.WithExtensions_video_description
 -CrSettingsBasicPageTest.BasicPage
 -EncryptedMediaSupportedTypesClearKeyTest.Video_MP4
 -EncryptedMediaSupportedTypesClearKeyTest.Video_WebM
@@ -705,7 +716,9 @@
 -InlineLoginHelperBrowserTest.SigninCreatesSyncStarter4
 -InlineLoginHelperBrowserTest.UntrustedSigninDialogCancel
 -InlineLoginHelperBrowserTest.WithAuthCode
+-InspectUITest.LaunchUIDevtools
 -MediaEngagementBrowserTest.RecordSingleVisitOnSameOrigin
+-MediaEngagementBrowserTest.SessionMultipleTabsClosingParent
 -MediaEngagementBrowserTest.SessionNewTabNavigateSameURLWithOpener_Typed
 -MediaEngagementBrowserTest.SessionNewTabSameOrigin
 -MessagingApiTest.Messaging
@@ -752,6 +765,7 @@
 -DestroyProfileOnBrowserClose/ProfileManagerBrowserTest.EphemeralProfile/1
 -DiceWebSigninInterceptionBubbleBrowserTest.ProfileKeepAlive
 -ExtensionDialogTest.TextInputViaKeyEvent
+-IsolateOriginsPrintBrowserTest.PrintIsolatedSubframe
 -LocalCardMigrationBrowserTestForStatusChip.Feedback_CardSavingAnimation
 -LocalCardMigrationBrowserTest.DeleteSuccessfullyMigratedCardsFromLocal
 -LocalCardMigrationBrowserUiTest.InvokeUi_default
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl
index aad27095..4e49fbb 100644
--- a/testing/buildbot/mixins.pyl
+++ b/testing/buildbot/mixins.pyl
@@ -594,6 +594,18 @@
       },
     },
   },
+  'ios_runtime_cache_16_0': {
+    '$mixin_append': {
+      'swarming': {
+        'named_caches': [
+          {
+            'name': 'runtime_ios_16_0',
+            'path': 'Runtime-ios-16.0',
+          },
+        ],
+      },
+    },
+  },
   'isolate_profile_data': {
     'isolate_profile_data': True,
   },
@@ -1352,6 +1364,23 @@
       ],
     },
   },
+  # Default Xcode 14 beta 1.
+  'xcode_14_beta': {
+    '$mixin_append': {
+      'args': [
+        '--xcode-build-version',
+        '14a5228q'
+      ],
+    },
+    'swarming': {
+      'named_caches': [
+        {
+          'name': 'xcode_ios_14a5228q',
+          'path': 'Xcode.app',
+        },
+      ],
+    },
+  },
   'xcode_parallelization': {
     '$mixin_append': {
       'args': [
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index 3497a10..e1dfe83d 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -5194,8 +5194,7 @@
       },
     },
 
-    # TODO(crbug.com/888429): Port remaining WebRTC tests to swarming.
-    'webrtc_chromium_baremetal_gtests': {
+    'webrtc_chromium_baremetal_browser_gtests': {
       'browser_tests': {
         'args': [
           '--gtest_filter=WebRtcStatsPerfBrowserTest.*:'
@@ -5216,12 +5215,54 @@
           'r_webrtc_git': '${webrtc_got_rev}'
         },
       },
+    },
+
+    'webrtc_chromium_baremetal_capture_gtests_linux': {
       # Run capture unittests as well since our bots have real webcams.
       'capture_unittests': {
         'args': ['--enable-logging', '--v=1', '--test-launcher-jobs=1',
                  '--test-launcher-print-test-stdio=always'],
         'swarming': {
-          'can_use_on_swarming_builders': False,
+          'dimension_sets': [
+            {
+              'builder': 'WebRTC Chromium Linux Tester',
+              'pool': 'luci.chromium.webrtc',
+            }
+          ],
+        },
+      },
+    },
+
+    'webrtc_chromium_baremetal_capture_gtests_mac': {
+      # Run capture unittests as well since our bots have real webcams.
+      'capture_unittests': {
+        'remove_mixins': ['mac_x64'],
+        'mixins': ['mac_11_or_12_x64'],
+        'args': ['--enable-logging', '--v=1', '--test-launcher-jobs=1',
+                 '--test-launcher-print-test-stdio=always'],
+        'swarming': {
+          'dimension_sets': [
+            {
+              'builder': 'WebRTC Chromium Mac Tester',
+              'pool': 'luci.chromium.webrtc',
+            }
+          ],
+        },
+      },
+    },
+
+    'webrtc_chromium_baremetal_capture_gtests_win': {
+      # Run capture unittests as well since our bots have real webcams.
+      'capture_unittests': {
+        'args': ['--enable-logging', '--v=1', '--test-launcher-jobs=1',
+                 '--test-launcher-print-test-stdio=always'],
+        'swarming': {
+          'dimension_sets': [
+            {
+              'builder': 'WebRTC Chromium Win10 Tester',
+              'pool': 'luci.chromium.webrtc',
+            }
+          ],
         },
       },
     },
@@ -6652,8 +6693,25 @@
       'webrtc_chromium_simple_gtests',
     ],
 
-    'webrtc_chromium_tests_with_baremetal_tests': [
-      'webrtc_chromium_baremetal_gtests',
+    'webrtc_chromium_tests_with_baremetal_tests_linux': [
+      'webrtc_chromium_baremetal_capture_gtests_linux',
+      'webrtc_chromium_baremetal_browser_gtests',
+      'webrtc_chromium_gtests',
+      'webrtc_chromium_simple_baremetal_gtests',
+      'webrtc_chromium_simple_gtests',
+    ],
+
+    'webrtc_chromium_tests_with_baremetal_tests_mac': [
+      'webrtc_chromium_baremetal_capture_gtests_mac',
+      'webrtc_chromium_baremetal_browser_gtests',
+      'webrtc_chromium_gtests',
+      'webrtc_chromium_simple_baremetal_gtests',
+      'webrtc_chromium_simple_gtests',
+    ],
+
+    'webrtc_chromium_tests_with_baremetal_tests_win': [
+      'webrtc_chromium_baremetal_capture_gtests_win',
+      'webrtc_chromium_baremetal_browser_gtests',
       'webrtc_chromium_gtests',
       'webrtc_chromium_simple_baremetal_gtests',
       'webrtc_chromium_simple_gtests',
@@ -6848,7 +6906,6 @@
         ],
       },
     },
-
     'ios15_sdk_simulator_tests': {
       'ios_common_tests': {
         'variants': [
@@ -6901,37 +6958,87 @@
     'ios16_beta_simulator_tests': {
       'ios_common_tests': {
         'variants': [
-          'SIM_IPHONE_X_14_5',
+          'SIM_IPHONE_X_16_0',
         ],
       },
       'ios_crash_unittests': {
         'variants': [
-          'SIM_IPHONE_X_14_5',
+          'SIM_IPHONE_X_16_0',
         ],
       },
       'ios_eg2_tests': {
         'mixins': ['xcode_parallelization'],
         'variants': [
-          'SIM_IPHONE_X_14_5',
-          'SIM_IPHONE_7_14_5',
-          'SIM_IPAD_AIR_3RD_GEN_14_5',
-          'SIM_IPAD_6_GEN_14_5',
+          'SIM_IPHONE_X_16_0',
+          'SIM_IPHONE_8_16_0',
+          'SIM_IPAD_AIR_3RD_GEN_16_0',
+          'SIM_IPAD_6_GEN_16_0',
         ]
       },
       'ios_eg2_cq_tests': {
         'mixins': ['xcode_parallelization'],
         'variants': [
-          'SIM_IPHONE_7_14_5',
-          'SIM_IPHONE_X_14_5',
-          'SIM_IPAD_PRO_2ND_GEN_14_5',
-          'SIM_IPAD_6_GEN_14_5',
+          'SIM_IPHONE_8_16_0',
+          'SIM_IPHONE_X_16_0',
+          'SIM_IPAD_6_GEN_16_0',
         ]
       },
       'ios_screen_size_dependent_tests': {
         'variants': [
-          'SIM_IPHONE_6S_PLUS_14_5',
-          'SIM_IPHONE_X_14_5',
+          'SIM_IPHONE_8_PLUS_16_0',
+          'SIM_IPHONE_X_16_0',
+          'SIM_IPAD_AIR_2_16_0',
+        ],
+      },
+    },
+
+    'ios16_sdk_simulator_tests': {
+      'ios_common_tests': {
+        'variants': [
+          'SIM_IPHONE_8_16_0',
+          'SIM_IPHONE_6S_15_5',
+          'SIM_IPHONE_6S_14_5',
+        ],
+      },
+      'ios_crash_unittests': {
+        'variants': [
+          'SIM_IPHONE_8_16_0',
+        ],
+      },
+      'ios_eg2_tests': {
+        'mixins': ['xcode_parallelization'],
+        'variants': [
+          'SIM_IPHONE_8_16_0',
+          'SIM_IPAD_AIR_2_16_0',
+          'SIM_IPHONE_X_16_0',
+          'SIM_IPHONE_7_15_5',
+          'SIM_IPAD_AIR_2_15_5',
+          'SIM_IPHONE_X_15_5',
+          'SIM_IPHONE_7_14_5',
           'SIM_IPAD_AIR_2_14_5',
+          'SIM_IPHONE_X_14_5',
+        ]
+      },
+      'ios_eg2_cq_tests': {
+        'mixins': ['xcode_parallelization'],
+        'variants': [
+          'SIM_IPHONE_8_16_0',
+          'SIM_IPAD_AIR_2_16_0',
+          'SIM_IPHONE_X_16_0',
+          'SIM_IPHONE_7_15_5',
+          'SIM_IPAD_AIR_2_15_5',
+          'SIM_IPHONE_X_15_5',
+          'SIM_IPHONE_7_14_5',
+          'SIM_IPAD_AIR_2_14_5',
+          'SIM_IPHONE_X_14_5',
+        ]
+      },
+      'ios_screen_size_dependent_tests': {
+        'variants': [
+          'SIM_IPHONE_8_PLUS_16_0',
+          'SIM_IPHONE_8_16_0',
+          'SIM_IPHONE_SE_3RD_GEN_16_0',
+          'SIM_IPAD_AIR_2_16_0',
         ],
       },
     },
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl
index c23b9e4..e86696c9 100644
--- a/testing/buildbot/variants.pyl
+++ b/testing/buildbot/variants.pyl
@@ -158,6 +158,18 @@
       'ios_runtime_cache_15_5',
     ],
   },
+  'SIM_IPAD_AIR_2_16_0': {
+    'args': [
+      '--platform',
+      'iPad Air 2',
+      '--version',
+      '16.0'
+    ],
+    'identifier': 'iPad Air 2 16.0',
+    'mixins': [
+      'ios_runtime_cache_16_0',
+    ],
+  },
   'SIM_IPAD_AIR_3RD_GEN_14_5': {
     'args': [
       '--platform',
@@ -170,6 +182,18 @@
       'ios_runtime_cache_14_5',
     ],
   },
+  'SIM_IPAD_AIR_3RD_GEN_16_0': {
+    'args': [
+      '--platform',
+      'iPad Air (3rd generation)',
+      '--version',
+      '16.0'
+    ],
+    'identifier': 'iPad Air (3rd generation) 16.0',
+    'mixins': [
+      'ios_runtime_cache_16_0',
+    ],
+  },
   # In Xcode 12, "iPad Pro (12.9-inch)" requires a generation suffix in
   # "platform" arg.
   'SIM_IPAD_PRO_2ND_GEN_14_5': {
@@ -184,16 +208,16 @@
       'ios_runtime_cache_14_5',
     ],
   },
-  'SIM_IPAD_6_GEN_14_5': {
+  'SIM_IPAD_6_GEN_16_0': {
     'args': [
       '--platform',
       'iPad (6th generation)',
       '--version',
-      '14.5',
+      '16.0',
     ],
-    'identifier': 'iPad (6th generation) 14.5',
+    'identifier': 'iPad (6th generation) 16.0',
     'mixins': [
-      'ios_runtime_cache_14_5',
+      'ios_runtime_cache_16_0',
     ],
   },
   'SIM_IPHONE_6S_14_5': {
@@ -304,6 +328,30 @@
       'ios_runtime_cache_15_5',
     ],
   },
+  'SIM_IPHONE_8_16_0': {
+    'args': [
+      '--platform',
+      'iPhone 8',
+      '--version',
+      '16.0',
+    ],
+    'identifier': 'iPhone 8 16.0',
+    'mixins': [
+      'ios_runtime_cache_16_0',
+    ],
+  },
+  'SIM_IPHONE_8_PLUS_16_0': {
+    'args': [
+      '--platform',
+      'iPhone 8 Plus',
+      '--version',
+      '16.0',
+    ],
+    'identifier': 'iPhone 8 Plus 16.0',
+    'mixins': [
+      'ios_runtime_cache_16_0',
+    ],
+  },
   'SIM_IPHONE_SE_1ST_GEN_14_5': {
     'args': [
       '--platform',
@@ -340,6 +388,18 @@
       'ios_runtime_cache_15_5',
     ],
   },
+  'SIM_IPHONE_SE_3RD_GEN_16_0': {
+    'args': [
+      '--platform',
+      'iPhone SE (3rd generation)',
+      '--version',
+      '16.0',
+    ],
+    'identifier': 'iPhone SE (3rd generation) 16.0',
+    'mixins': [
+      'ios_runtime_cache_16_0',
+    ],
+  },
   'SIM_IPHONE_X_14_4': {
     'args': [
       '--platform',
@@ -400,6 +460,18 @@
       'ios_runtime_cache_15_5',
     ],
   },
+  'SIM_IPHONE_X_16_0': {
+    'args': [
+      '--platform',
+      'iPhone X',
+      '--version',
+      '16.0',
+    ],
+    'identifier': 'iPhone X 16.0',
+    'mixins': [
+      'ios_runtime_cache_16_0',
+    ],
+  },
   'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MILESTONE': {
     'args': [
       '--test-runner-outdir',
@@ -1101,4 +1173,4 @@
       'win10_nvidia_gtx_1660_stable',
     ],
   },
-}
\ No newline at end of file
+}
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index 54befb0..6653711 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -3336,9 +3336,12 @@
           'mac_11_x64',
           'mac_toolchain',
           'out_dir_arg',
-          'xcode_13_main',
+          'xcode_14_beta',
           'xctest',
         ],
+        'test_suites': {
+          'isolated_scripts': 'ios16_sdk_simulator_tests'
+        },
       },
       'lacros-amd64-generic-rel (goma cache silo)': {
         'additional_compile_targets': [
@@ -5761,7 +5764,7 @@
           'chromium-webrtc-rel-linux',
         ],
         'test_suites': {
-          'gtest_tests': 'webrtc_chromium_tests_with_baremetal_tests',
+          'gtest_tests': 'webrtc_chromium_tests_with_baremetal_tests_linux',
         },
       },
       'WebRTC Chromium Mac Builder': {
@@ -5775,7 +5778,7 @@
           'mac_x64',
         ],
         'test_suites': {
-          'gtest_tests': 'webrtc_chromium_tests_with_baremetal_tests',
+          'gtest_tests': 'webrtc_chromium_tests_with_baremetal_tests_mac',
         },
       },
       'WebRTC Chromium Win Builder': {
@@ -5788,7 +5791,7 @@
           'chromium-webrtc-rel-win10',
         ],
         'test_suites': {
-          'gtest_tests': 'webrtc_chromium_tests_with_baremetal_tests',
+          'gtest_tests': 'webrtc_chromium_tests_with_baremetal_tests_win',
         },
       },
     },
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 6ac25d3..03c1f783 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -2859,6 +2859,21 @@
             ]
         }
     ],
+    "CreateSafebrowsingOnStartup": [
+        {
+            "platforms": [
+                "android"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "CreateSafebrowsingOnStartup"
+                    ]
+                }
+            ]
+        }
+    ],
     "CriticalPersistedTabDataV2": [
         {
             "platforms": [
@@ -8272,21 +8287,6 @@
             ]
         }
     ],
-    "UseSkiaRenderer": [
-        {
-            "platforms": [
-                "chromeos"
-            ],
-            "experiments": [
-                {
-                    "name": "UseSkiaRenderer",
-                    "enable_features": [
-                        "UseSkiaRenderer"
-                    ]
-                }
-            ]
-        }
-    ],
     "UseSnappyForParkableStrings": [
         {
             "platforms": [
diff --git a/third_party/.gitignore b/third_party/.gitignore
index b61afd0..4d33447 100644
--- a/third_party/.gitignore
+++ b/third_party/.gitignore
@@ -3,8 +3,6 @@
 /__START__
 /accessibility-developer-tools/
 /accessibility_test_framework/lib/
-/adobe/flash/binaries
-/adobe/flash/symbols
 /aemu-linux-arm64
 /aemu-linux-x64
 /aemu-mac-arm64
diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/third_party/blink/common/client_hints/enabled_client_hints.cc
index b8bd0e4..6f39512 100644
--- a/third_party/blink/common/client_hints/enabled_client_hints.cc
+++ b/third_party/blink/common/client_hints/enabled_client_hints.cc
@@ -29,16 +29,12 @@
     case WebClientHintsType::kUAModel:
     case WebClientHintsType::kUAMobile:
     case WebClientHintsType::kUAFullVersion:
+    case WebClientHintsType::kUAFullVersionList:
     case WebClientHintsType::kUABitness:
     case WebClientHintsType::kUAWoW64:
       if (!base::FeatureList::IsEnabled(features::kUserAgentClientHint))
         return true;
       break;
-    case WebClientHintsType::kUAFullVersionList:
-      if (!base::FeatureList::IsEnabled(
-              features::kUserAgentClientHintFullVersionList))
-        return true;
-      break;
     case WebClientHintsType::kPrefersColorScheme:
       if (!base::FeatureList::IsEnabled(
               features::kPrefersColorSchemeClientHintHeader))
diff --git a/third_party/blink/common/client_hints/enabled_client_hints_unittest.cc b/third_party/blink/common/client_hints/enabled_client_hints_unittest.cc
index ef0438f2..bdbfa35 100644
--- a/third_party/blink/common/client_hints/enabled_client_hints_unittest.cc
+++ b/third_party/blink/common/client_hints/enabled_client_hints_unittest.cc
@@ -80,9 +80,7 @@
     // The UserAgentClientHint feature is enabled, and the
     // PrefersColorSchemeClientHintHeader feature is disabled.
     scoped_feature_list_.InitWithFeatures(
-        /*enabled_features=*/{blink::features::kUserAgentClientHint,
-                              blink::features::
-                                  kUserAgentClientHintFullVersionList},
+        /*enabled_features=*/{blink::features::kUserAgentClientHint},
         /*disabled_features=*/{
             blink::features::kPrefersColorSchemeClientHintHeader});
     TrialTokenValidator::SetOriginTrialPolicyGetter(
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
index d0235aa..93c97cd1 100644
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -158,15 +158,10 @@
 const base::Feature kMixedContentAutoupgrade{"AutoupgradeMixedContent",
                                              base::FEATURE_ENABLED_BY_DEFAULT};
 
-// An experimental replacement for the `User-Agent` header, defined in
-// https://tools.ietf.org/html/draft-west-ua-client-hints.
+// Enables User-Agent Client Hints
 const base::Feature kUserAgentClientHint{"UserAgentClientHint",
                                          base::FEATURE_ENABLED_BY_DEFAULT};
 
-// Enable `sec-ch-ua-full-version-list` client hint.
-const base::Feature kUserAgentClientHintFullVersionList{
-    "UserAgentClientHintFullVersionList", base::FEATURE_ENABLED_BY_DEFAULT};
-
 // Handle prefers-color-scheme user preference media feature via client hints.
 const base::Feature kPrefersColorSchemeClientHintHeader{
     "PrefersColorSchemeClientHintHeader", base::FEATURE_ENABLED_BY_DEFAULT};
@@ -1481,5 +1476,9 @@
 #endif
 };
 
+// Allow access to WebSQL in non-secure contexts.
+const base::Feature kWebSQLNonSecureContextAccess{
+    "WebSQLNonSecureContextAccess", base::FEATURE_ENABLED_BY_DEFAULT};
+
 }  // namespace features
 }  // namespace blink
diff --git a/third_party/blink/perf_tests/webgpu/binding-draw.html b/third_party/blink/perf_tests/webgpu/binding-draw.html
index 0b3c75e..4e57a4c 100644
--- a/third_party/blink/perf_tests/webgpu/binding-draw.html
+++ b/third_party/blink/perf_tests/webgpu/binding-draw.html
@@ -37,7 +37,7 @@
                   vec2<f32>(-0.5, -0.5),
                   vec2<f32>(0.5, -0.5));
 
-              @stage(vertex)
+              @vertex
               fn main(@builtin(vertex_index) VertexIndex : u32) -> @builtin(position) vec4<f32> {
                 return vec4<f32>(pos[VertexIndex], 0.0, 1.0);
               }`
@@ -47,7 +47,7 @@
         fragment: {
           module: device.createShaderModule({
             code: `
-              @stage(fragment)
+              @fragment
               fn main() -> @location(0) vec4<f32> {
                 return vec4<f32>(0.0, 1.0, 0.0, 1.0);
               }`
diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h
index 38be643c..20a86789 100644
--- a/third_party/blink/public/common/features.h
+++ b/third_party/blink/public/common/features.h
@@ -61,8 +61,6 @@
 BLINK_COMMON_EXPORT extern const base::Feature kFencedFrames;
 BLINK_COMMON_EXPORT extern const base::Feature kUserAgentClientHint;
 BLINK_COMMON_EXPORT extern const base::Feature
-    kUserAgentClientHintFullVersionList;
-BLINK_COMMON_EXPORT extern const base::Feature
     kPrefersColorSchemeClientHintHeader;
 BLINK_COMMON_EXPORT extern const base::Feature kViewportHeightClientHintHeader;
 BLINK_COMMON_EXPORT extern const base::Feature kFullUserAgent;
@@ -769,6 +767,9 @@
 // See https://crbug.com/1326622 for more info.
 BLINK_COMMON_EXPORT extern const base::Feature kSimulateClickOnAXFocus;
 
+// If enabled, allows the use of WebSQL in non-secure contexts.
+BLINK_COMMON_EXPORT extern const base::Feature kWebSQLNonSecureContextAccess;
+
 }  // namespace features
 }  // namespace blink
 
diff --git a/third_party/blink/public/mojom/subapps/sub_apps_service.mojom b/third_party/blink/public/mojom/subapps/sub_apps_service.mojom
index 7b34eea..c5622eb 100644
--- a/third_party/blink/public/mojom/subapps/sub_apps_service.mojom
+++ b/third_party/blink/public/mojom/subapps/sub_apps_service.mojom
@@ -4,11 +4,42 @@
 
 module blink.mojom;
 
+import "url/mojom/url.mojom";
+
 enum SubAppsServiceResult {
   kSuccess,
   kFailure,
 };
 
+// `unhashed_app_id` is the sub app id generated according to
+// https://www.w3.org/TR/appmanifest/#dfn-identity.
+// `install_url` is a fully qualified URL to a page hosting or
+// containing a link to the app's manifest.
+struct SubAppsServiceAddInfo {
+  string unhashed_app_id;
+  url.mojom.Url install_url;
+};
+
+enum SubAppsServiceAddResultCode {
+  // Success category:
+  kSuccessNewInstall,
+  kSuccessAlreadyInstalled,
+
+  // Failure category:
+  kUserInstallDeclined,
+  kExpectedAppIdCheckFailed,
+  kParentAppUninstalled,
+  kFailure,
+};
+
+// `unhashed_app_id` is the sub app id generated according to
+// https://www.w3.org/TR/appmanifest/#dfn-identity.
+// `result_code` specifies the type of success or failure of the installation.
+struct SubAppsServiceAddResult {
+  string unhashed_app_id;
+  SubAppsServiceAddResultCode result_code;
+};
+
 struct SubAppsServiceListResult {
   SubAppsServiceResult code;
   array<string> sub_app_ids;
@@ -23,11 +54,9 @@
 // frame, and it's main-frame only. It is only valid for already-installed apps,
 // and has an origin associated with it.
 interface SubAppsService {
-  // Installs a sub-app of an already-installed app corresponding to this
-  // instance of SubAppsService. `install_path` is the absolute path which will
-  // be attached to the origin of the already-installed app (effectively
-  // limiting the API to same-origin apps).
-  Add(string install_path) => (SubAppsServiceResult result);
+  // Installs one or more sub-apps of an already-installed app corresponding to
+  // this instance of SubAppsService.
+  Add(array<SubAppsServiceAddInfo> sub_apps) => (array<SubAppsServiceAddResult> result);
 
   // List all sub-app `app_ids` installed by the app making the API call. The
   // `app_id` format is the same as the `web_app::GenerateAppIdUnhashed`
diff --git a/third_party/blink/public/platform/web_media_player.h b/third_party/blink/public/platform/web_media_player.h
index b72b16a92..013ba79 100644
--- a/third_party/blink/public/platform/web_media_player.h
+++ b/third_party/blink/public/platform/web_media_player.h
@@ -291,11 +291,6 @@
   // Sets the poster image URL.
   virtual void SetPoster(const WebURL& poster) {}
 
-  // Whether the WebMediaPlayer supports overlay fullscreen video mode. When
-  // this is true, the video layer will be removed from the layer tree when
-  // entering fullscreen, and the WebMediaPlayer is responsible for displaying
-  // the video in enteredFullscreen().
-  virtual bool SupportsOverlayFullscreenVideo() { return false; }
   // Inform WebMediaPlayer when the element has entered/exited fullscreen.
   virtual void EnteredFullscreen() {}
   virtual void ExitedFullscreen() {}
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
index 3adbe43..92b5c42 100644
--- a/third_party/blink/public/platform/web_runtime_features.h
+++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -191,7 +191,6 @@
   BLINK_PLATFORM_EXPORT static void EnableWebXRLightEstimation(bool);
   BLINK_PLATFORM_EXPORT static void EnableWebXRPlaneDetection(bool);
   BLINK_PLATFORM_EXPORT static void EnableWebXRViewportScale(bool);
-  BLINK_PLATFORM_EXPORT static void ForceOverlayFullscreenVideo(bool);
   BLINK_PLATFORM_EXPORT static void EnableTimerThrottlingForBackgroundTabs(
       bool);
   BLINK_PLATFORM_EXPORT static void EnableExpensiveBackgroundTimerThrottling(
diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni
index 938b099..1045d9b 100644
--- a/third_party/blink/renderer/bindings/generated_in_modules.gni
+++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -2295,6 +2295,8 @@
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_storage_manager.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_sub_apps.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_sub_apps.h",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_sub_apps_add_options.cc",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_sub_apps_add_options.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_subtle_crypto.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_subtle_crypto.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_svg_element.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni
index 66e0217..80cdda2 100644
--- a/third_party/blink/renderer/bindings/idl_in_modules.gni
+++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -733,6 +733,7 @@
           "//third_party/blink/renderer/modules/storage/window_storage.idl",
           "//third_party/blink/renderer/modules/subapps/navigator_sub_apps.idl",
           "//third_party/blink/renderer/modules/subapps/sub_apps.idl",
+          "//third_party/blink/renderer/modules/subapps/sub_apps_add_options.idl",
           "//third_party/blink/renderer/modules/url_pattern/url_pattern.idl",
           "//third_party/blink/renderer/modules/url_pattern/url_pattern_component_result.idl",
           "//third_party/blink/renderer/modules/url_pattern/url_pattern_init.idl",
diff --git a/third_party/blink/renderer/core/css/css_selector.h b/third_party/blink/renderer/core/css/css_selector.h
index 893321e..580fd76 100644
--- a/third_party/blink/renderer/core/css/css_selector.h
+++ b/third_party/blink/renderer/core/css/css_selector.h
@@ -380,10 +380,9 @@
   void SetNth(int a, int b);
   bool MatchNth(unsigned count) const;
 
-  bool IsAdjacentSelector() const {
-    return relation_ == kDirectAdjacent || relation_ == kIndirectAdjacent;
+  static bool IsAdjacentRelation(RelationType relation) {
+    return relation == kDirectAdjacent || relation == kIndirectAdjacent;
   }
-  bool IsUAShadowSelector() const { return relation_ == kUAShadow; }
   bool IsAttributeSelector() const {
     return match_ >= kFirstAttributeSelectorMatch;
   }
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 e0ecb59..c7e3f91 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
@@ -568,9 +568,6 @@
 bool IsPseudoClassValidWithinHasArgument(CSSParserSelector& selector) {
   DCHECK_EQ(selector.Match(), CSSSelector::kPseudoClass);
   switch (selector.GetPseudoType()) {
-    // TODO(blee@igalia.com) Additional limitations may be added later after
-    // related issues are resolved in csswg. (e.g. issues/7211, issues/7212)
-
     // Limited nested :has() to avoid increasing :has() invalidation complexity.
     case CSSSelector::kPseudoHas:
       return false;
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 0309fc49..8d2182a 100644
--- a/third_party/blink/renderer/core/css/rule_feature_set.cc
+++ b/third_party/blink/renderer/core/css/rule_feature_set.cc
@@ -495,18 +495,20 @@
 }
 
 void RuleFeatureSet::UpdateFeaturesFromCombinator(
-    const CSSSelector& last_in_compound,
+    CSSSelector::RelationType combinator,
     const CSSSelector* last_compound_in_adjacent_chain,
     InvalidationSetFeatures& last_compound_in_adjacent_chain_features,
     InvalidationSetFeatures*& sibling_features,
-    InvalidationSetFeatures& descendant_features) {
-  if (last_in_compound.IsAdjacentSelector()) {
+    InvalidationSetFeatures& descendant_features,
+    bool for_logical_combination_in_has) {
+  if (CSSSelector::IsAdjacentRelation(combinator)) {
     if (!sibling_features) {
       sibling_features = &last_compound_in_adjacent_chain_features;
       if (last_compound_in_adjacent_chain) {
         ExtractInvalidationSetFeaturesFromCompound(
             *last_compound_in_adjacent_chain,
-            last_compound_in_adjacent_chain_features, kAncestor);
+            last_compound_in_adjacent_chain_features, kAncestor,
+            for_logical_combination_in_has);
         if (!last_compound_in_adjacent_chain_features.HasFeatures()) {
           last_compound_in_adjacent_chain_features.invalidation_flags
               .SetWholeSubtreeInvalid(true);
@@ -517,7 +519,7 @@
         SiblingInvalidationSet::kDirectAdjacentMax) {
       return;
     }
-    if (last_in_compound.Relation() == CSSSelector::kDirectAdjacent) {
+    if (combinator == CSSSelector::kDirectAdjacent) {
       ++sibling_features->max_direct_adjacent_selectors;
     } else {
       sibling_features->max_direct_adjacent_selectors =
@@ -526,15 +528,17 @@
     return;
   }
 
+  descendant_features.descendant_features_depth++;
+
   if (sibling_features &&
       last_compound_in_adjacent_chain_features.max_direct_adjacent_selectors)
     last_compound_in_adjacent_chain_features = InvalidationSetFeatures();
 
   sibling_features = nullptr;
 
-  if (last_in_compound.IsUAShadowSelector())
+  if (combinator == CSSSelector::kUAShadow)
     descendant_features.invalidation_flags.SetTreeBoundaryCrossing(true);
-  if (last_in_compound.Relation() == CSSSelector::kShadowSlot)
+  if (combinator == CSSSelector::kShadowSlot)
     descendant_features.invalidation_flags.SetInsertionPointCrossing(true);
 }
 
@@ -549,8 +553,9 @@
     for (const CSSSelector* selector = scope->From().First(); selector;
          selector = CSSSelectorList::Next(*selector)) {
       InvalidationSetFeatures scope_features;
-      ExtractInvalidationSetFeaturesFromCompound(*selector, scope_features,
-                                                 kSubject);
+      ExtractInvalidationSetFeaturesFromCompound(
+          *selector, scope_features, kSubject,
+          /* for_logical_combination_in_has */ false);
       descendant_features.Add(scope_features);
     }
   }
@@ -720,7 +725,9 @@
   InvalidationSetFeatures* sibling_features = nullptr;
 
   const CSSSelector* last_in_compound =
-      ExtractInvalidationSetFeaturesFromCompound(complex, features, position);
+      ExtractInvalidationSetFeaturesFromCompound(
+          complex, features, position,
+          /* for_logical_combination_in_has */ false);
 
   bool was_whole_subtree_invalid =
       features.invalidation_flags.WholeSubtreeInvalid();
@@ -745,8 +752,9 @@
 
   if (next_compound) {
     if (last_in_compound) {
-      UpdateFeaturesFromCombinator(*last_in_compound, nullptr, features,
-                                   sibling_features, features);
+      UpdateFeaturesFromCombinator(last_in_compound->Relation(), nullptr,
+                                   features, sibling_features, features,
+                                   /* for_logical_combination_in_has */ false);
     }
 
     AddFeaturesToInvalidationSets(*next_compound, sibling_features, features);
@@ -792,6 +800,7 @@
     InvalidationSetFeatures& features,
     PositionType position) {
   AutoRestoreMaxDirectAdjacentSelectors restore_max(&features);
+  AutoRestoreDescendantFeaturesDepth restore_depth(&features);
 
   const CSSSelectorList* selector_list = simple_selector.SelectorList();
   if (!selector_list)
@@ -801,7 +810,7 @@
   // For the :has pseudo class, we should not extract invalidation set features
   // here because the :has invalidation direction is different with others.
   // (preceding-sibling/ancestors/preceding-sibling-of-ancestors)
-  if (UNLIKELY(pseudo_type == CSSSelector::kPseudoHas))
+  if (pseudo_type == CSSSelector::kPseudoHas)
     return;
 
   DCHECK(SupportsInvalidationWithSelectorList(pseudo_type));
@@ -852,7 +861,8 @@
 const CSSSelector* RuleFeatureSet::ExtractInvalidationSetFeaturesFromCompound(
     const CSSSelector& compound,
     InvalidationSetFeatures& features,
-    PositionType position) {
+    PositionType position,
+    bool for_logical_combination_in_has) {
   // Extract invalidation set features and return a pointer to the the last
   // simple selector of the compound, or nullptr if one of the selectors
   // requiresSubtreeInvalidation().
@@ -888,8 +898,19 @@
     if (features.invalidation_flags.InvalidatesParts())
       metadata_.invalidates_parts = true;
 
-    if (simple_selector->GetPseudoType() == CSSSelector::kPseudoHas)
+    // While adding features to invalidation sets for logical combinations
+    // inside :has(), ExtractInvalidationSetFeaturesFromCompound() can be
+    // called again to extract features from the compound selector containing
+    // the :has() pseudo class. (e.g. '.a:has(:is(.b ~ .c)) .d')
+    // To avoid infinite recursive call, skip adding features for :has() if
+    // ExtractInvalidationSetFeaturesFromCompound() is invoked for the logical
+    // combinations inside :has().
+    if (simple_selector->GetPseudoType() == CSSSelector::kPseudoHas &&
+        !for_logical_combination_in_has) {
       CollectValuesInHasArgument(*simple_selector);
+      AddFeaturesToInvalidationSetsForHasPseudoClass(
+          *simple_selector, &compound, nullptr, features);
+    }
 
     if (!simple_selector->TagHistory() ||
         simple_selector->Relation() != CSSSelector::kSubSelector) {
@@ -926,6 +947,221 @@
   }
 }
 
+void RuleFeatureSet::AddFeaturesToInvalidationSetsForHasPseudoClass(
+    const CSSSelector& pseudo_has,
+    const CSSSelector* compound_containing_has,
+    InvalidationSetFeatures* sibling_features,
+    InvalidationSetFeatures& descendant_features) {
+  DCHECK(compound_containing_has);
+  DCHECK_EQ(pseudo_has.GetPseudoType(), CSSSelector::kPseudoHas);
+
+  // Add features to invalidation sets only when the :has() pseudo class
+  // contains logical combinations containing a complex selector as argument.
+  if (!pseudo_has.ContainsComplexLogicalCombinationsInsideHasPseudoClass())
+    return;
+
+  // Set descendant features as WholeSubtreeInvalid if the descendant features
+  // haven't been extracted yet. (e.g. '.a :has(:is(.b .c)).d {}')
+  AutoRestoreWholeSubtreeInvalid restore_whole_subtree(descendant_features);
+  if (!descendant_features.HasFeatures())
+    descendant_features.invalidation_flags.SetWholeSubtreeInvalid(true);
+
+  // Use descendant features as sibling features if the :has() pseudo class is
+  // in subject position.
+  if (!sibling_features && descendant_features.descendant_features_depth == 0)
+    sibling_features = &descendant_features;
+
+  DCHECK(pseudo_has.SelectorList());
+
+  for (const CSSSelector* relative = pseudo_has.SelectorList()->First();
+       relative; relative = CSSSelectorList::Next(*relative)) {
+    for (const CSSSelector* simple = relative;
+         simple->GetPseudoType() != CSSSelector::kPseudoRelativeAnchor;
+         simple = simple->TagHistory()) {
+      switch (simple->GetPseudoType()) {
+        case CSSSelector::kPseudoIs:
+        case CSSSelector::kPseudoWhere:
+        case CSSSelector::kPseudoNot:
+          AddFeaturesToInvalidationSetsForLogicalCombinationInHas(
+              *simple, compound_containing_has, sibling_features,
+              descendant_features, /* needs_skip_rightmost_compound */ true);
+          break;
+        default:
+          break;
+      }
+    }
+  }
+}
+
+const CSSSelector*
+RuleFeatureSet::SkipAddingAndGetLastInCompoundForLogicalCombinationInHas(
+    const CSSSelector* compound_in_logical_combination,
+    const CSSSelector* compound_containing_has,
+    InvalidationSetFeatures* sibling_features,
+    InvalidationSetFeatures& descendant_features) {
+  const CSSSelector* simple = compound_in_logical_combination;
+  for (; simple; simple = simple->TagHistory()) {
+    switch (simple->GetPseudoType()) {
+      case CSSSelector::kPseudoIs:
+      case CSSSelector::kPseudoWhere:
+      case CSSSelector::kPseudoNot:
+        // Nested logical combinations in righmost compound of a first-depth
+        // logical combination inside :has()
+        // (e.g. '.a:has(.a :is(.b :is(.c .d))) {}')
+        AddFeaturesToInvalidationSetsForLogicalCombinationInHas(
+            *simple, compound_containing_has, sibling_features,
+            descendant_features, /* needs_skip_rightmost_compound */ true);
+        break;
+      default:
+        break;
+    }
+    if (simple->Relation() != CSSSelector::kSubSelector)
+      break;
+  }
+  return simple;
+}
+
+const CSSSelector*
+RuleFeatureSet::AddFeaturesAndGetLastInCompoundForLogicalCombinationInHas(
+    const CSSSelector* compound_in_logical_combination,
+    const CSSSelector* compound_containing_has,
+    InvalidationSetFeatures* sibling_features,
+    InvalidationSetFeatures& descendant_features) {
+  DCHECK(compound_in_logical_combination);
+  bool compound_has_features_for_rule_set_invalidation = false;
+  const CSSSelector* simple = compound_in_logical_combination;
+
+  for (; simple; simple = simple->TagHistory()) {
+    base::AutoReset<bool> reset_has_features(
+        &descendant_features.has_features_for_rule_set_invalidation, false);
+    switch (simple->GetPseudoType()) {
+      case CSSSelector::kPseudoIs:
+      case CSSSelector::kPseudoWhere:
+      case CSSSelector::kPseudoNot:
+        // Nested logical combination inside :has()
+        // (e.g. '.a:has(:is(:is(.a .b) .c)) {}')
+        AddFeaturesToInvalidationSetsForLogicalCombinationInHas(
+            *simple, compound_containing_has, sibling_features,
+            descendant_features, /* needs_skip_rightmost_compound */ false);
+        break;
+      default:
+        AddFeaturesToInvalidationSetsForSimpleSelector(
+            *simple, *compound_in_logical_combination, sibling_features,
+            descendant_features);
+        break;
+    }
+    if (descendant_features.has_features_for_rule_set_invalidation)
+      compound_has_features_for_rule_set_invalidation = true;
+
+    if (simple->Relation() != CSSSelector::kSubSelector)
+      break;
+  }
+
+  // If the compound selector has features for invalidation, mark the
+  // related flag in the descendant_features.
+  // Otherwise add features to universal sibling invalidation set if
+  // sibling_features exists. (e.g. '.a:has(:is(* .b)) ~ .c .d {}')
+  if (compound_has_features_for_rule_set_invalidation) {
+    descendant_features.has_features_for_rule_set_invalidation = true;
+  } else if (sibling_features) {
+    AddFeaturesToUniversalSiblingInvalidationSet(*sibling_features,
+                                                 descendant_features);
+  }
+
+  return simple;
+}
+
+void RuleFeatureSet::AddFeaturesToInvalidationSetsForLogicalCombinationInHas(
+    const CSSSelector& logical_combination,
+    const CSSSelector* compound_containing_has,
+    InvalidationSetFeatures* sibling_features,
+    InvalidationSetFeatures& descendant_features,
+    bool needs_skip_rightmost_compound) {
+  DCHECK(logical_combination.SelectorList());
+  DCHECK(compound_containing_has);
+
+  for (const CSSSelector* complex = logical_combination.SelectorList()->First();
+       complex; complex = CSSSelectorList::Next(*complex)) {
+    base::AutoReset<bool> restore_skip_rightmost(&needs_skip_rightmost_compound,
+                                                 needs_skip_rightmost_compound);
+    AutoRestoreMaxDirectAdjacentSelectors restore_max(sibling_features);
+    AutoRestoreDescendantFeaturesDepth restore_depth(&descendant_features);
+    AutoRestoreTreeBoundaryCrossingFlag restore_tree_boundary(
+        descendant_features);
+    AutoRestoreInsertionPointCrossingFlag restore_insertion_point(
+        descendant_features);
+
+    InvalidationSetFeatures last_compound_in_adjacent_chain_features;
+    const CSSSelector* compound_in_logical_combination = complex;
+    const CSSSelector* last_in_compound;
+    const CSSSelector* last_compound_in_adjacent_chain;
+    while (compound_in_logical_combination) {
+      if (needs_skip_rightmost_compound) {
+        last_in_compound =
+            SkipAddingAndGetLastInCompoundForLogicalCombinationInHas(
+                compound_in_logical_combination, compound_containing_has,
+                sibling_features, descendant_features);
+        // For the rightmost compound that need to be skipped, use the compound
+        // selector containing :has() as last_compound_in_adjacent_chain for
+        // updating features so that the features can be added as if the next
+        // compounds are prepended to the compound containing :has().
+        // (e.g. '.a:has(:is(.b .c ~ .d)) .e' -> '.b .c ~ .a .e')
+        // The selector pointer of '.a:has(:is(.b .c ~ .d))' is passed though
+        // the argument 'compound_containing_has'.
+        last_compound_in_adjacent_chain = compound_containing_has;
+      } else {
+        last_in_compound =
+            AddFeaturesAndGetLastInCompoundForLogicalCombinationInHas(
+                compound_in_logical_combination, compound_containing_has,
+                sibling_features, descendant_features);
+        last_compound_in_adjacent_chain = compound_in_logical_combination;
+      }
+      if (!last_in_compound)
+        break;
+
+      needs_skip_rightmost_compound = false;
+
+      UpdateFeaturesFromCombinatorForLogicalCombinationInHas(
+          last_in_compound->Relation(), last_compound_in_adjacent_chain,
+          last_compound_in_adjacent_chain_features, sibling_features,
+          descendant_features);
+
+      compound_in_logical_combination = last_in_compound->TagHistory();
+    }
+  }
+}
+
+void RuleFeatureSet::UpdateFeaturesFromCombinatorForLogicalCombinationInHas(
+    CSSSelector::RelationType combinator,
+    const CSSSelector* last_compound_in_adjacent_chain,
+    InvalidationSetFeatures& last_compound_in_adjacent_chain_features,
+    InvalidationSetFeatures*& sibling_features,
+    InvalidationSetFeatures& descendant_features) {
+  // Always use indirect relation to add features to invalidation sets for
+  // logical combinations inside :has() since it is too difficult to limit
+  // invalidation distance by counting successive indirect relations in the
+  // logical combinations inside :has().
+  // (e.g. '.a:has(:is(:is(.a > .b) .c)) {}', '.a:has(~ :is(.b + .c + .d)) {}'
+  switch (combinator) {
+    case CSSSelector::CSSSelector::kDescendant:
+    case CSSSelector::CSSSelector::kChild:
+      combinator = CSSSelector::kDescendant;
+      break;
+    case CSSSelector::CSSSelector::kDirectAdjacent:
+    case CSSSelector::CSSSelector::kIndirectAdjacent:
+      combinator = CSSSelector::kIndirectAdjacent;
+      break;
+    default:
+      NOTREACHED();
+      return;
+  }
+
+  UpdateFeaturesFromCombinator(combinator, last_compound_in_adjacent_chain,
+                               last_compound_in_adjacent_chain_features,
+                               sibling_features, descendant_features,
+                               /* for_logical_combination_in_has */ true);
+}
+
 void RuleFeatureSet::AddValuesInComplexSelectorInsideIsWhereNot(
     const CSSSelectorList* selector_list) {
   DCHECK(selector_list);
@@ -1043,6 +1279,7 @@
            simple_selector.SelectorList()->First();
        sub_selector; sub_selector = CSSSelectorList::Next(*sub_selector)) {
     AutoRestoreMaxDirectAdjacentSelectors restore_max(sibling_features);
+    AutoRestoreDescendantFeaturesDepth restore_depth(&descendant_features);
     AutoRestoreTreeBoundaryCrossingFlag restore_tree_boundary(
         descendant_features);
     AutoRestoreInsertionPointCrossingFlag restore_insertion_point(
@@ -1088,6 +1325,7 @@
 
 void RuleFeatureSet::AddFeaturesToInvalidationSetsForSimpleSelector(
     const CSSSelector& simple_selector,
+    const CSSSelector& compound,
     InvalidationSetFeatures* sibling_features,
     InvalidationSetFeatures& descendant_features) {
   if (simple_selector.IsIdClassOrAttributeSelector())
@@ -1095,8 +1333,11 @@
 
   CSSSelector::PseudoType pseudo_type = simple_selector.GetPseudoType();
 
-  if (UNLIKELY(pseudo_type == CSSSelector::kPseudoHas))
+  if (pseudo_type == CSSSelector::kPseudoHas) {
     CollectValuesInHasArgument(simple_selector);
+    AddFeaturesToInvalidationSetsForHasPseudoClass(
+        simple_selector, &compound, sibling_features, descendant_features);
+  }
 
   if (InvalidationSet* invalidation_set = InvalidationSetForSimpleSelector(
           simple_selector,
@@ -1137,7 +1378,7 @@
   // For the :has pseudo class, we should not extract invalidation set features
   // here because the :has invalidation direction is different with others.
   // (preceding-sibling/ancestors/preceding-sibling-of-ancestors)
-  if (UNLIKELY(pseudo_type == CSSSelector::kPseudoHas))
+  if (pseudo_type == CSSSelector::kPseudoHas)
     return;
 
   if (pseudo_type == CSSSelector::kPseudoPart)
@@ -1158,7 +1399,7 @@
     base::AutoReset<bool> reset_has_features(
         &descendant_features.has_features_for_rule_set_invalidation, false);
     AddFeaturesToInvalidationSetsForSimpleSelector(
-        *simple_selector, sibling_features, descendant_features);
+        *simple_selector, compound, sibling_features, descendant_features);
     if (descendant_features.has_features_for_rule_set_invalidation)
       compound_has_features_for_rule_set_invalidation = true;
     if (simple_selector->Relation() != CSSSelector::kSubSelector)
@@ -1192,9 +1433,10 @@
         AddFeaturesToInvalidationSetsForCompoundSelector(
             *compound, sibling_features, descendant_features);
     DCHECK(last_in_compound);
-    UpdateFeaturesFromCombinator(*last_in_compound, compound,
+    UpdateFeaturesFromCombinator(last_in_compound->Relation(), compound,
                                  last_compound_in_sibling_chain_features,
-                                 sibling_features, descendant_features);
+                                 sibling_features, descendant_features,
+                                 /* for_logical_combination_in_has */ false);
     compound = last_in_compound->TagHistory();
   }
 }
diff --git a/third_party/blink/renderer/core/css/rule_feature_set.h b/third_party/blink/renderer/core/css/rule_feature_set.h
index 1076094..2c3771ba 100644
--- a/third_party/blink/renderer/core/css/rule_feature_set.h
+++ b/third_party/blink/renderer/core/css/rule_feature_set.h
@@ -323,6 +323,33 @@
     Vector<AtomicString> tag_names;
     Vector<AtomicString> emitted_tag_names;
     unsigned max_direct_adjacent_selectors = 0;
+
+    // descendant_features_depth is used while adding features for logical
+    // combinations inside :has() pseudo class to determine whether the current
+    // compound selector is in subject position or not.
+    //
+    // This field stores the number of child and descendant combinators
+    // previously evaluated for updating features from combinator. Unlike
+    // max_direct_adjacent_selectors field that indicates the max limit,
+    // this field simply stores the number of child and descendant combinators.
+    //
+    // This field is used only for the logical combinations inside :has(), but
+    // we need to count all the combinators in the entire selector so that we
+    // can correctly determine whether a compound is in the subject position
+    // or not.
+    // (e.g. For '.a:has(:is(.b ~ .c))) .d', the descendant_features_depth for
+    //  compound '.b' is not 0 but 1 since the descendant combinator was
+    //  evaludated for updating features when moving from '.d' to '.a:has(...)')
+    //
+    // How to determine whether a compound is in subject position or not:
+    // 1. If descendant_feature.descendant_features_depth > 0, then the compound
+    //    is not in subject position.
+    // 2. If descendant_feature.descendant_features_depth == 0,
+    //   2.1. If sibling_features != nullptr, then the compound is not in
+    //        subject position.
+    //   2.2. Otherwise, the compound is in subject position.
+    unsigned descendant_features_depth = 0;
+
     InvalidationFlags invalidation_flags;
     bool content_pseudo_crossing = false;
     bool has_nth_pseudo = false;
@@ -361,6 +388,70 @@
     unsigned original_value_ = 0;
   };
 
+  // While adding features to the invalidation sets for the complex selectors
+  // in :is() inside :has(), we need to differentiate whether the :has() is in
+  // subject position or not if there is no sibling_features.
+  //
+  // - case 1) .a:has(:is(.b ~ .c))     : Add features as if we have .b ~ .a
+  // - case 2) .a:has(:is(.b ~ .c)) .d  : add features as if we have .b ~ .a .d
+  //
+  // For .b in case 1, we need to use descendant_features as sibling_features.
+  // But for .b in case 2, we need to extract sibling features from the compound
+  // selector containing the :has() pseudo class.
+  //
+  // By maintaining a descendant depth information to descendant_features
+  // object, we can determine whether the current compound is in subject
+  // position or not. The descendant features depth will be increased when
+  // RuleFeatureSet meets descendant or child combinator while adding features.
+  //
+  // Example)
+  // - .a:has(:is(.b ~ .c))         : At .b, the descendant_features_depth is 0
+  // - .a:has(:is(.b ~ .c)) .d      : At .b, the descendant_features_depth is 1
+  // - .a:has(:is(.b ~ .c)) .d ~ .e : At .b, the descendant_features_depth is 1
+  // - .a:has(:is(.b ~ .c)) .d > .e : At .b, the descendant_features_depth is 2
+  //
+  // To keep the correct depth in the descendant_features object for each level
+  // of nested logical combinations, this class is used.
+  class AutoRestoreDescendantFeaturesDepth {
+    STACK_ALLOCATED();
+
+   public:
+    explicit AutoRestoreDescendantFeaturesDepth(
+        InvalidationSetFeatures* features)
+        : features_(features),
+          original_value_(features ? features->descendant_features_depth : 0) {}
+    ~AutoRestoreDescendantFeaturesDepth() {
+      if (features_)
+        features_->descendant_features_depth = original_value_;
+    }
+
+   private:
+    InvalidationSetFeatures* features_;
+    unsigned original_value_ = 0;
+  };
+
+  // For .a :has(:is(.b .c)).d, the invalidation set for .b is marked as whole-
+  // subtree-invalid because :has() is in subject position and evaluated before
+  // .b. But the invalidation set for .a can have descendant class .d. In this
+  // case, the descendant_features for the same compound selector can have two
+  // different state of WholeSubtreeInvalid flag. To keep the correct flag,
+  // this class is used.
+  class AutoRestoreWholeSubtreeInvalid {
+    STACK_ALLOCATED();
+
+   public:
+    explicit AutoRestoreWholeSubtreeInvalid(InvalidationSetFeatures& features)
+        : features_(features),
+          original_value_(features.invalidation_flags.WholeSubtreeInvalid()) {}
+    ~AutoRestoreWholeSubtreeInvalid() {
+      features_.invalidation_flags.SetWholeSubtreeInvalid(original_value_);
+    }
+
+   private:
+    InvalidationSetFeatures& features_;
+    bool original_value_;
+  };
+
   // For :is(:host(.a), .b) .c, the invalidation set for .a should be marked
   // as tree-crossing, but the invalidation set for .b should not.
   class AutoRestoreTreeBoundaryCrossingFlag {
@@ -437,16 +528,18 @@
   const CSSSelector* ExtractInvalidationSetFeaturesFromCompound(
       const CSSSelector&,
       InvalidationSetFeatures&,
-      PositionType);
+      PositionType,
+      bool for_logical_combination_in_has);
   void ExtractInvalidationSetFeaturesFromSelectorList(const CSSSelector&,
                                                       InvalidationSetFeatures&,
                                                       PositionType);
   void UpdateFeaturesFromCombinator(
-      const CSSSelector&,
+      CSSSelector::RelationType,
       const CSSSelector* last_compound_selector_in_adjacent_chain,
       InvalidationSetFeatures& last_compound_in_adjacent_chain_features,
       InvalidationSetFeatures*& sibling_features,
-      InvalidationSetFeatures& descendant_features);
+      InvalidationSetFeatures& descendant_features,
+      bool for_logical_combination_in_has);
   void UpdateFeaturesFromStyleScope(
       const StyleScope&,
       InvalidationSetFeatures& descendant_features);
@@ -462,7 +555,8 @@
       InvalidationSetFeatures* sibling_features,
       InvalidationSetFeatures& descendant_features);
   void AddFeaturesToInvalidationSetsForSimpleSelector(
-      const CSSSelector&,
+      const CSSSelector& simple_selector,
+      const CSSSelector& compound,
       InvalidationSetFeatures* sibling_features,
       InvalidationSetFeatures& descendant_features);
   void AddFeaturesToInvalidationSetsForSelectorList(
@@ -482,6 +576,85 @@
   void UpdateRuleSetInvalidation(const InvalidationSetFeatures&);
   void CollectValuesInHasArgument(const CSSSelector& has_pseudo_class);
 
+  // The logical combinations like ':is()', ':where()' and ':not()' can cause
+  // a compound selector in ':has()' to match an element outside of the ':has()'
+  // argument checking scope. (:has() anchor element, its ancestors, its
+  // previous siblings or its ancestor previous siblings)
+  // To support invalidation for a mutation on the elements, we can add features
+  // in invalidation sets only for the complex selectors in :is() inside :has()
+  // as if we have another rule with simple selector. (Add features as if the
+  // non-subject part of the logical combination argument is prepended to
+  // the compound containing :has())
+  //
+  // Example 1) '.a:has(:is(.b .c)) {}'
+  //   - For class 'b' change, invalidate descendant '.a' ('.b .a {}')
+  //
+  // Example 2) '.a:has(~ :is(.b ~ .c)) {}'
+  //   - For class 'b' change, invalidate sibling '.a' ('.b ~ .a {}')
+  //
+  // Example 3) '.a:has(~ :is(.b ~ .c)) .d {}'
+  //   - For class 'b' change, invalidate descendant '.d' of sibling '.a'.
+  //     ('.b ~ .a .d {}')
+  //
+  // Example 4) '.a:has(:is(.b ~ .c .d)) {}'
+  //   - For class 'b' change, invalidate descendant '.a' of sibling '.c'.
+  //     ('.b ~ .c .a {}')
+  //   - TODO(blee@igalia.com) For class 'b' change, we need to invalidate
+  //     sibling '.a' also. ('.b ~ .a {}')
+  void AddFeaturesToInvalidationSetsForHasPseudoClass(
+      const CSSSelector& has_pseudo_class,
+      const CSSSelector* compound_containing_has,
+      InvalidationSetFeatures* sibling_features,
+      InvalidationSetFeatures& descendant_features);
+
+  // AddFeaturesToInvalidationSetsForLogicalCombinationInHas() is invoked for
+  // each logical combination inside :has(). Same as the usual feature adding
+  // logic, sibling features and descendant features extracted from the
+  // previous compounds are passed though 'sibling_features' and
+  // 'descendant_features' arguments.
+  //
+  // The rightmost compound of a non-nested logical combinations is always
+  // in the :has() argument checking scope.
+  // - '.c' in '.a:has(:is(.b .c) .d)' is always a descendant of :has() anchor
+  //   element.
+  //
+  // But the rightmost compound of a nested logical combinations can be or
+  // cannot be in the :has() argument checking scope.
+  // - '.c' in '.a:has(:is(:is(.b .c) .d))' can be a :has() anchor element or
+  //   its ancestor.
+  // - '.d' in '.a:has(:is(.b :is(.c .d)))' is always a descendant of :has()
+  //   anchor element.
+  //
+  // To differentiate between the two cases, this method has a bool argument
+  // 'needs_skip_rightmost_compound'.
+  // The argument is always true when the method is called for the non-nested
+  // logical combinations in AddFeaturesToInvalidationSetsForHasPseudoClass().
+  // After the rightmost compound is skipped, the value is changed to false
+  // for the rest compounds.
+  void AddFeaturesToInvalidationSetsForLogicalCombinationInHas(
+      const CSSSelector& logical_combination,
+      const CSSSelector* compound_containing_has,
+      InvalidationSetFeatures* sibling_features,
+      InvalidationSetFeatures& descendant_features,
+      bool needs_skip_rightmost_compound);
+
+  void UpdateFeaturesFromCombinatorForLogicalCombinationInHas(
+      CSSSelector::RelationType combinator,
+      const CSSSelector* last_compound_selector_in_adjacent_chain,
+      InvalidationSetFeatures& last_compound_in_adjacent_chain_features,
+      InvalidationSetFeatures*& sibling_features,
+      InvalidationSetFeatures& descendant_features);
+  const CSSSelector* SkipAddingAndGetLastInCompoundForLogicalCombinationInHas(
+      const CSSSelector* compound_in_logical_combination,
+      const CSSSelector* compound_containing_has,
+      InvalidationSetFeatures* sibling_features,
+      InvalidationSetFeatures& descendant_features);
+  const CSSSelector* AddFeaturesAndGetLastInCompoundForLogicalCombinationInHas(
+      const CSSSelector* compound_in_logical_combination,
+      const CSSSelector* compound_containing_has,
+      InvalidationSetFeatures* sibling_features,
+      InvalidationSetFeatures& descendant_features);
+
   static InvalidationSet& EnsureMutableInvalidationSet(
       scoped_refptr<InvalidationSet>&,
       InvalidationType,
diff --git a/third_party/blink/renderer/core/css/rule_feature_set_test.cc b/third_party/blink/renderer/core/css/rule_feature_set_test.cc
index f9e6a14..229342f1 100644
--- a/third_party/blink/renderer/core/css/rule_feature_set_test.cc
+++ b/third_party/blink/renderer/core/css/rule_feature_set_test.cc
@@ -2008,4 +2008,578 @@
   ExpectRefCountForClassInvalidationSet(global, "a", RefCount::kMany);
 }
 
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas1) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(:is(.b .c))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectClassInvalidation("a", invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas2) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(:is(.b > .c))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectClassInvalidation("a", invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas3) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(~ :is(.b ~ .c))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingClassInvalidation(SiblingInvalidationSet::kDirectAdjacentMax,
+                                   "a", invalidation_lists.siblings);
+    ExpectSiblingNoDescendantInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas4) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(~ :is(.b + .c))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingClassInvalidation(SiblingInvalidationSet::kDirectAdjacentMax,
+                                   "a", invalidation_lists.siblings);
+    ExpectSiblingNoDescendantInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas5) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(~ :is(.b .c ~ .d))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectClassInvalidation("a", invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingClassInvalidation(SiblingInvalidationSet::kDirectAdjacentMax,
+                                   "a", invalidation_lists.siblings);
+    ExpectSiblingNoDescendantInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "d");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas6) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(~ :is(.b > .c + .d))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectClassInvalidation("a", invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingClassInvalidation(SiblingInvalidationSet::kDirectAdjacentMax,
+                                   "a", invalidation_lists.siblings);
+    ExpectSiblingNoDescendantInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "d");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas7) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(:is(.b ~ .c .d))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingDescendantInvalidation(
+        SiblingInvalidationSet::kDirectAdjacentMax, "c", "a",
+        invalidation_lists.siblings);
+    // TODO(blee@igalia.com) Need sibling class "a" invalidation
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectClassInvalidation("a", invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "d");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas8) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(:is(.b + .c > .d))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingDescendantInvalidation(
+        SiblingInvalidationSet::kDirectAdjacentMax, "c", "a",
+        invalidation_lists.siblings);
+    // TODO(blee@igalia.com) Need sibling class "a" invalidation
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectClassInvalidation("a", invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "d");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas9) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(:is(:is(.b, .c) .d))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectClassInvalidation("a", invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectClassInvalidation("a", invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "d");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas10) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(~ :is(:is(.b, .c) ~ .d))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingClassInvalidation(SiblingInvalidationSet::kDirectAdjacentMax,
+                                   "a", invalidation_lists.siblings);
+    ExpectSiblingNoDescendantInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingClassInvalidation(SiblingInvalidationSet::kDirectAdjacentMax,
+                                   "a", invalidation_lists.siblings);
+    ExpectSiblingNoDescendantInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "d");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas11) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(":has(:is(.a .b))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectWholeSubtreeInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas12) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(":has(~ :is(.a ~ .b))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSelfInvalidation(invalidation_lists.siblings);
+    ExpectSiblingNoDescendantInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas13) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(~ :is(.b ~ .c .d ~ .e))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingDescendantInvalidation(
+        SiblingInvalidationSet::kDirectAdjacentMax, "c", "a",
+        invalidation_lists.siblings);
+    // TODO(blee@igalia.com) Need sibling class "a" invalidation
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectClassInvalidation("a", invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "d");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingClassInvalidation(SiblingInvalidationSet::kDirectAdjacentMax,
+                                   "a", invalidation_lists.siblings);
+    ExpectSiblingNoDescendantInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "e");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas14) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(~ :is(.b ~ .c)) .d"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectSiblingDescendantInvalidation(
+        SiblingInvalidationSet::kDirectAdjacentMax, "a", "d",
+        invalidation_lists.siblings);
+    ExpectNoSelfInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas15) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(~ :is(* ~ .b))"));
+  {
+    InvalidationLists invalidation_lists;
+    CollectUniversalSiblingInvalidationSet(invalidation_lists);
+
+    ExpectSiblingClassInvalidation(SiblingInvalidationSet::kDirectAdjacentMax,
+                                   "a", invalidation_lists.siblings);
+    ExpectSelfInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas16) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(~ :is(* ~ .b)) .c"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectUniversalSiblingInvalidationSet(invalidation_lists);
+
+    ExpectSiblingDescendantInvalidation(
+        SiblingInvalidationSet::kDirectAdjacentMax, "a", "c",
+        invalidation_lists.siblings);
+    ExpectNoSelfInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas17) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a :has(:is(.b .c)).d"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectClassInvalidation("d", invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectWholeSubtreeInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "d");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas18) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(~ :is(.b ~ :is(.c ~ .d)))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingClassInvalidation(SiblingInvalidationSet::kDirectAdjacentMax,
+                                   "a", invalidation_lists.siblings);
+    ExpectSiblingNoDescendantInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingClassInvalidation(SiblingInvalidationSet::kDirectAdjacentMax,
+                                   "a", invalidation_lists.siblings);
+    ExpectSiblingNoDescendantInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "d");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
+TEST_F(RuleFeatureSetTest, isPseudoContainingComplexInsideHas19) {
+  EXPECT_EQ(RuleFeatureSet::kSelectorMayMatch,
+            CollectFeatures(".a:has(~ :is(:is(.b ~ .c) ~ .d))"));
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "a");
+    ExpectSelfInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "b");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingClassInvalidation(SiblingInvalidationSet::kDirectAdjacentMax,
+                                   "a", invalidation_lists.siblings);
+    ExpectSiblingNoDescendantInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "c");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectSiblingClassInvalidation(SiblingInvalidationSet::kDirectAdjacentMax,
+                                   "a", invalidation_lists.siblings);
+    ExpectSiblingNoDescendantInvalidation(invalidation_lists.siblings);
+  }
+
+  {
+    InvalidationLists invalidation_lists;
+    CollectInvalidationSetsForClass(invalidation_lists, "d");
+    ExpectNoInvalidation(invalidation_lists.descendants);
+    ExpectNoInvalidation(invalidation_lists.siblings);
+  }
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/selector_checker.cc b/third_party/blink/renderer/core/css/selector_checker.cc
index 7cd0e3e4..95963384 100644
--- a/third_party/blink/renderer/core/css/selector_checker.cc
+++ b/third_party/blink/renderer/core/css/selector_checker.cc
@@ -929,10 +929,6 @@
   Document& document = has_anchor_element->GetDocument();
   DCHECK(document.GetCheckPseudoHasCacheScope());
   SelectorCheckingContext sub_context(has_anchor_element);
-  // 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
   sub_context.scope = context.scope;
   // sub_context.is_inside_visited_link is false (by default) to disable
   // :visited matching when it is in the :has argument
diff --git a/third_party/blink/renderer/core/css/style_engine_test.cc b/third_party/blink/renderer/core/css/style_engine_test.cc
index 7a17900..3c569934 100644
--- a/third_party/blink/renderer/core/css/style_engine_test.cc
+++ b/third_party/blink/renderer/core/css/style_engine_test.cc
@@ -5810,4 +5810,43 @@
   EXPECT_EQ(33, img->OffsetHeight());
 }
 
+TEST_F(StyleEngineSimTest, ResizeWithBlockingSheetTransition) {
+  WebView().MainFrameWidget()->Resize(gfx::Size(500, 500));
+
+  SimRequest html_request("https://example.com/test.html", "text/html");
+  SimSubresourceRequest css_request("https://example.com/slow.css", "text/css");
+
+  LoadURL("https://example.com/test.html");
+  html_request.Complete(R"HTML(
+      <!DOCTYPE html>
+      <style>
+        #trans {
+          transition-duration: 30s;
+          color: red;
+        }
+      </style>
+      <link rel="stylesheet" href="slow.css">
+      <div id="trans"></div>
+  )HTML");
+
+  css_request.Start();
+  WebView().MainFrameWidget()->Resize(gfx::Size(800, 800));
+
+  css_request.Complete(R"CSS(
+    #trans { color: green; }
+  )CSS");
+
+  Compositor().BeginFrame();
+  test::RunPendingTasks();
+
+  Element* trans = GetDocument().getElementById("trans");
+  ASSERT_TRUE(trans);
+
+  // Completing the linked stylesheet should not start a transition since the
+  // sheet is render-blocking.
+  EXPECT_EQ(
+      trans->ComputedStyleRef().VisitedDependentColor(GetCSSPropertyColor()),
+      MakeRGB(0, 128, 0));
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
index 350a9ee..a61165eb 100644
--- a/third_party/blink/renderer/core/dom/element.cc
+++ b/third_party/blink/renderer/core/dom/element.cc
@@ -3755,6 +3755,17 @@
     // of whether the property was inherited or not.
     return nullptr;
   }
+  if (style->TextDecorationsInEffect() != TextDecorationLine::kNone) {
+    // If we have text decorations, they can depend on currentColor,
+    // and are normally updated by the StyleAdjuster. We can, however,
+    // reach this path when color is modified, leading to the decoration
+    // being the wrong color (see crbug.com/1330953). We could rerun
+    // the right part of the StyleAdjuster here, but it's simpler just to
+    // disable the optimization in such cases (especially as we have already
+    // disabled it for links, which are the main causes of text decorations),
+    // so we do that.
+    return nullptr;
+  }
   scoped_refptr<ComputedStyle> new_style = ComputedStyle::Clone(*style);
   new_style->PropagateIndependentInheritedProperties(*parent_style);
   INCREMENT_STYLE_STATS_COUNTER(GetDocument().GetStyleEngine(),
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
index e7f066d..3f6460c 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -1257,10 +1257,12 @@
 
   fullscreen_controller_->UpdateSize();
 
-  // Page scale constraints may need to be updated; running layout now will
-  // do that.
-  MainFrameWidget()->UpdateLifecycle(WebLifecycleUpdate::kLayout,
-                                     DocumentUpdateReason::kSizeChange);
+  if (!scoped_defer_main_frame_update_) {
+    // Page scale constraints may need to be updated; running layout now will
+    // do that.
+    MainFrameWidget()->UpdateLifecycle(WebLifecycleUpdate::kLayout,
+                                       DocumentUpdateReason::kSizeChange);
+  }
 }
 
 void WebViewImpl::ResizeWithBrowserControls(
diff --git a/third_party/blink/renderer/core/frame/fullscreen_controller.cc b/third_party/blink/renderer/core/frame/fullscreen_controller.cc
index 38502ee..f7afd0d 100644
--- a/third_party/blink/renderer/core/frame/fullscreen_controller.cc
+++ b/third_party/blink/renderer/core/frame/fullscreen_controller.cc
@@ -251,13 +251,6 @@
 
     if (auto* video_element = DynamicTo<HTMLVideoElement>(*new_element)) {
       video_element->DidEnterFullscreen();
-
-      // If the video uses overlay fullscreen mode, make the background
-      // transparent.
-      if (video_element->UsesOverlayFullscreenVideo()) {
-        web_view_base_->SetBackgroundColorOverrideForFullscreenController(
-            Color::kTransparent);
-      }
     }
   }
 
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
index d5ef00cb..fccb4b6 100644
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -1446,6 +1446,19 @@
   return View() && View()->ShouldThrottleRendering();
 }
 
+void LocalFrame::PortalStateChanged() {
+  if (Document* document = GetDocument())
+    document->ClearAXObjectCache();
+
+  if (IsOutermostMainFrame()) {
+    intersection_state_.occlusion_state =
+        mojom::blink::FrameOcclusionState::kGuaranteedNotOccluded;
+  } else {
+    intersection_state_.occlusion_state =
+        mojom::blink::FrameOcclusionState::kUnknown;
+  }
+}
+
 LocalFrame::LocalFrame(LocalFrameClient* client,
                        Page& page,
                        FrameOwner* owner,
@@ -1520,6 +1533,11 @@
   attribution_src_loader_ = MakeGarbageCollected<AttributionSrcLoader>(this);
   inspector_task_runner_->InitIsolate(isolate);
 
+  if (IsOutermostMainFrame()) {
+    intersection_state_.occlusion_state =
+        mojom::blink::FrameOcclusionState::kGuaranteedNotOccluded;
+  }
+
   DCHECK(ad_tracker_ ? RuntimeEnabledFeatures::AdTaggingEnabled()
                      : !RuntimeEnabledFeatures::AdTaggingEnabled());
 
@@ -2073,6 +2091,7 @@
 void LocalFrame::SetViewportIntersectionFromParent(
     const mojom::blink::ViewportIntersectionState& intersection_state) {
   DCHECK(IsLocalRoot());
+  DCHECK(!IsOutermostMainFrame());
   // Notify the render frame observers when the main frame intersection or the
   // transform changes.
   if (intersection_state_.main_frame_intersection !=
@@ -2145,9 +2164,6 @@
 mojom::blink::FrameOcclusionState LocalFrame::GetOcclusionState() const {
   if (hidden_)
     return mojom::blink::FrameOcclusionState::kPossiblyOccluded;
-  // TODO(dcheng): Get rid of this branch for the main frame.
-  if (IsMainFrame())
-    return mojom::blink::FrameOcclusionState::kGuaranteedNotOccluded;
   if (IsLocalRoot())
     return intersection_state_.occlusion_state;
   return LocalFrameRoot().GetOcclusionState();
diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h
index 78b83b3..669d4ec 100644
--- a/third_party/blink/renderer/core/frame/local_frame.h
+++ b/third_party/blink/renderer/core/frame/local_frame.h
@@ -384,6 +384,9 @@
 
   bool ShouldThrottleRendering() const;
 
+  // Called on the main frame of the portal is activated or adopted.
+  void PortalStateChanged();
+
   // Returns frame scheduler for this frame.
   // FrameScheduler is destroyed during frame detach and nullptr will be
   // returned after it.
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc
index d3c4659..3ce69c5 100644
--- a/third_party/blink/renderer/core/frame/local_frame_view.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -2939,8 +2939,8 @@
       visual_viewport_or_overlay_needs_repaint_) {
     GraphicsContext graphics_context(*paint_controller_);
 
-    // Draw the overlay layer (video or WebXR DOM overlay) if present.
-    if (PaintLayer* full_screen_layer = GetFullScreenOverlayLayer()) {
+    // Draw the WebXR DOM overlay if present.
+    if (PaintLayer* full_screen_layer = GetXROverlayLayer()) {
       PaintLayerPainter(*full_screen_layer).Paint(graphics_context);
     } else {
       PaintFrame(graphics_context);
@@ -4812,24 +4812,6 @@
   return *sticky_ad_detector_.get();
 }
 
-static PaintLayer* GetFullScreenOverlayVideoLayer(Document& document) {
-  // Recursively find the document that is in fullscreen.
-  Document* content_document = &document;
-  Element* fullscreen_element =
-      Fullscreen::FullscreenElementFrom(*content_document);
-  while (auto* frame_owner =
-             DynamicTo<HTMLFrameOwnerElement>(fullscreen_element)) {
-    content_document = frame_owner->contentDocument();
-    if (!content_document)
-      return nullptr;
-    fullscreen_element = Fullscreen::FullscreenElementFrom(*content_document);
-  }
-  auto* video_element = DynamicTo<HTMLVideoElement>(fullscreen_element);
-  if (!video_element || !video_element->UsesOverlayFullscreenVideo())
-    return nullptr;
-  return video_element->GetLayoutBoxModelObject()->Layer();
-}
-
 static PaintLayer* GetXrOverlayLayer(Document& document) {
   // immersive-ar DOM overlay mode is very similar to fullscreen video, using
   // the AR camera image instead of a video element as a background that's
@@ -4871,7 +4853,7 @@
   return object->Layer();
 }
 
-PaintLayer* LocalFrameView::GetFullScreenOverlayLayer() const {
+PaintLayer* LocalFrameView::GetXROverlayLayer() const {
   Document* doc = frame_->GetDocument();
   DCHECK(doc);
 
@@ -4882,10 +4864,7 @@
   if (doc->IsXrOverlay())
     return GetXrOverlayLayer(*doc);
 
-  // Fullscreen overlay video layers are only used for the main frame.
-  if (!frame_->IsMainFrame())
-    return nullptr;
-  return GetFullScreenOverlayVideoLayer(*doc);
+  return nullptr;
 }
 
 void LocalFrameView::RunPaintBenchmark(int repeat_count,
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.h b/third_party/blink/renderer/core/frame/local_frame_view.h
index 13c3619..cbc3650 100644
--- a/third_party/blink/renderer/core/frame/local_frame_view.h
+++ b/third_party/blink/renderer/core/frame/local_frame_view.h
@@ -787,8 +787,8 @@
 
   bool HasDominantVideoElement() const;
 
-  // Gets the fullscreen overlay layer if present, or nullptr if there is none.
-  PaintLayer* GetFullScreenOverlayLayer() const;
+  // Gets the xr overlay layer if present, or nullptr if there is none.
+  PaintLayer* GetXROverlayLayer() const;
 
   void RunPaintBenchmark(int repeat_count, cc::PaintBenchmarkResult& result);
 
diff --git a/third_party/blink/renderer/core/frame/web_frame_test.cc b/third_party/blink/renderer/core/frame/web_frame_test.cc
index 99dbe24b..dfc4859 100644
--- a/third_party/blink/renderer/core/frame/web_frame_test.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_test.cc
@@ -8664,97 +8664,6 @@
   EXPECT_FLOAT_EQ(5.0, web_view_impl->MaximumPageScaleFactor());
 }
 
-TEST_F(WebFrameTest, OverlayFullscreenVideo) {
-  ScopedForceOverlayFullscreenVideoForTest force_overlay_fullscreen_video(true);
-  RegisterMockedHttpURLLoad("fullscreen_video.html");
-  frame_test_helpers::WebViewHelper web_view_helper;
-  WebViewImpl* web_view_impl = web_view_helper.InitializeAndLoad(
-      base_url_ + "fullscreen_video.html", nullptr, nullptr);
-  web_view_helper.Resize(gfx::Size(600, 400));
-
-  // Ensure that the local frame view has a paint artifact compositor. It's
-  // created lazily, and doing so after entering fullscreen would undo the
-  // overlay video layer modification.
-  UpdateAllLifecyclePhases(web_view_impl);
-
-  const cc::LayerTreeHost* layer_tree_host = web_view_helper.GetLayerTreeHost();
-
-  LocalFrame* frame = web_view_impl->MainFrameImpl()->GetFrame();
-  LocalFrame::NotifyUserActivation(
-      frame, mojom::UserActivationNotificationType::kTest);
-  auto* video =
-      To<HTMLVideoElement>(frame->GetDocument()->getElementById("video"));
-  EXPECT_TRUE(video->UsesOverlayFullscreenVideo());
-  EXPECT_FALSE(video->IsFullscreen());
-  EXPECT_EQ(SkColorGetA(layer_tree_host->background_color()), SK_AlphaOPAQUE);
-
-  const cc::Layer* root_layer = layer_tree_host->root_layer();
-  const char* view_background_layer_name =
-      "Scrolling background of LayoutView #document";
-  EXPECT_EQ(1u, CcLayersByName(root_layer, view_background_layer_name).size());
-  EXPECT_EQ(1u, CcLayersByDOMElementId(root_layer, "other").size());
-  // "spinner" is a composited element in the shadow DOM of the video element.
-  // Not checking "video" because the element itself paints nothing.
-  EXPECT_EQ(1u, CcLayersByDOMElementId(root_layer, "spinner").size());
-
-  video->webkitEnterFullscreen();
-  web_view_impl->DidEnterFullscreen();
-  UpdateAllLifecyclePhases(web_view_impl);
-  EXPECT_TRUE(video->IsFullscreen());
-  EXPECT_EQ(SkColorGetA(layer_tree_host->background_color()),
-            SK_AlphaTRANSPARENT);
-
-  root_layer = layer_tree_host->root_layer();
-  EXPECT_EQ(0u, CcLayersByName(root_layer, view_background_layer_name).size());
-  EXPECT_EQ(0u, CcLayersByDOMElementId(root_layer, "other").size());
-  EXPECT_EQ(1u, CcLayersByDOMElementId(root_layer, "spinner").size());
-
-  web_view_impl->DidExitFullscreen();
-  UpdateAllLifecyclePhases(web_view_impl);
-  EXPECT_FALSE(video->IsFullscreen());
-  EXPECT_EQ(SkColorGetA(layer_tree_host->background_color()), SK_AlphaOPAQUE);
-
-  root_layer = layer_tree_host->root_layer();
-  EXPECT_EQ(1u, CcLayersByName(root_layer, view_background_layer_name).size());
-  EXPECT_EQ(1u, CcLayersByDOMElementId(root_layer, "other").size());
-  EXPECT_EQ(1u, CcLayersByDOMElementId(root_layer, "spinner").size());
-}
-
-TEST_F(WebFrameTest, OverlayFullscreenVideoInIframe) {
-  ScopedForceOverlayFullscreenVideoForTest force_overlay_fullscreen_video(true);
-  RegisterMockedHttpURLLoad("fullscreen_video_in_iframe.html");
-  RegisterMockedHttpURLLoad("fullscreen_video.html");
-  frame_test_helpers::WebViewHelper web_view_helper;
-  WebViewImpl* web_view_impl = web_view_helper.InitializeAndLoad(
-      base_url_ + "fullscreen_video_in_iframe.html", nullptr, nullptr);
-  web_view_helper.Resize(gfx::Size(600, 400));
-
-  const cc::LayerTreeHost* layer_tree_host = web_view_helper.GetLayerTreeHost();
-  LocalFrame* iframe =
-      To<WebLocalFrameImpl>(
-          web_view_helper.GetWebView()->MainFrame()->FirstChild())
-          ->GetFrame();
-  LocalFrame::NotifyUserActivation(
-      iframe, mojom::UserActivationNotificationType::kTest);
-  auto* video =
-      To<HTMLVideoElement>(iframe->GetDocument()->getElementById("video"));
-  EXPECT_TRUE(video->UsesOverlayFullscreenVideo());
-  EXPECT_FALSE(video->IsFullscreen());
-  EXPECT_EQ(SkColorGetA(layer_tree_host->background_color()), SK_AlphaOPAQUE);
-
-  video->webkitEnterFullscreen();
-  web_view_impl->DidEnterFullscreen();
-  UpdateAllLifecyclePhases(web_view_impl);
-  EXPECT_TRUE(video->IsFullscreen());
-  EXPECT_EQ(SkColorGetA(layer_tree_host->background_color()),
-            SK_AlphaTRANSPARENT);
-
-  web_view_impl->DidExitFullscreen();
-  UpdateAllLifecyclePhases(web_view_impl);
-  EXPECT_FALSE(video->IsFullscreen());
-  EXPECT_EQ(SkColorGetA(layer_tree_host->background_color()), SK_AlphaOPAQUE);
-}
-
 TEST_F(WebFrameTest, WebXrImmersiveOverlay) {
   RegisterMockedHttpURLLoad("webxr_overlay.html");
   frame_test_helpers::WebViewHelper web_view_helper;
diff --git a/third_party/blink/renderer/core/html/media/html_video_element.cc b/third_party/blink/renderer/core/html/media/html_video_element.cc
index 6b8b2f5..9f5f507 100644
--- a/third_party/blink/renderer/core/html/media/html_video_element.cc
+++ b/third_party/blink/renderer/core/html/media/html_video_element.cc
@@ -424,14 +424,6 @@
   return IsFullscreen();
 }
 
-bool HTMLVideoElement::UsesOverlayFullscreenVideo() const {
-  if (RuntimeEnabledFeatures::ForceOverlayFullscreenVideoEnabled())
-    return true;
-
-  return GetWebMediaPlayer() &&
-         GetWebMediaPlayer()->SupportsOverlayFullscreenVideo();
-}
-
 void HTMLVideoElement::DidEnterFullscreen() {
   UpdateControlsVisibility();
 
diff --git a/third_party/blink/renderer/core/html/media/html_video_element.h b/third_party/blink/renderer/core/html/media/html_video_element.h
index 36af2f2..3668036a 100644
--- a/third_party/blink/renderer/core/html/media/html_video_element.h
+++ b/third_party/blink/renderer/core/html/media/html_video_element.h
@@ -77,7 +77,6 @@
   void webkitExitFullscreen();
   bool webkitSupportsFullscreen();
   bool webkitDisplayingFullscreen();
-  bool UsesOverlayFullscreenVideo() const override;
   void DidEnterFullscreen();
   void DidExitFullscreen();
 
diff --git a/third_party/blink/renderer/core/input/scroll_manager.cc b/third_party/blink/renderer/core/input/scroll_manager.cc
index 28b6092..604cad2 100644
--- a/third_party/blink/renderer/core/input/scroll_manager.cc
+++ b/third_party/blink/renderer/core/input/scroll_manager.cc
@@ -589,12 +589,6 @@
     return WebInputEventResult::kNotHandled;
   }
 
-  Node* node = scroll_gesture_handling_node_.Get();
-  if (!node || !node->GetLayoutObject()) {
-    TRACE_EVENT_INSTANT0("input", "Lost scroll_gesture_handling_node",
-                         TRACE_EVENT_SCOPE_THREAD);
-    return WebInputEventResult::kNotHandled;
-  }
   if (snap_fling_controller_) {
     if (snap_fling_controller_->HandleGestureScrollUpdate(
             GetGestureScrollUpdateInfo(gesture_event))) {
@@ -615,7 +609,10 @@
   if (delta.IsZero())
     return WebInputEventResult::kNotHandled;
 
-  LayoutObject* layout_object = node->GetLayoutObject();
+  LayoutObject* layout_object =
+      scroll_gesture_handling_node_
+          ? scroll_gesture_handling_node_->GetLayoutObject()
+          : nullptr;
 
   // Try to send the event to the correct view.
   WebInputEventResult result =
diff --git a/third_party/blink/renderer/core/layout/layout_video.cc b/third_party/blink/renderer/core/layout/layout_video.cc
index 548563b..081bf28 100644
--- a/third_party/blink/renderer/core/layout/layout_video.cc
+++ b/third_party/blink/renderer/core/layout/layout_video.cc
@@ -225,10 +225,6 @@
   if (!RuntimeEnabledFeatures::CompositeVideoElementEnabled())
     return CompositingReason::kNone;
 
-  auto* element = To<HTMLMediaElement>(GetNode());
-  if (element->IsFullscreen() && element->UsesOverlayFullscreenVideo())
-    return CompositingReason::kVideo;
-
   if (GetDisplayMode() == kVideo && SupportsAcceleratedRendering())
     return CompositingReason::kVideo;
 
diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc
index e0669b3..ee77f04 100644
--- a/third_party/blink/renderer/core/page/page.cc
+++ b/third_party/blink/renderer/core/page/page.cc
@@ -1080,10 +1080,8 @@
 
   inside_portal_ = inside_portal;
 
-  if (MainFrame() && MainFrame()->IsLocalFrame() &&
-      DeprecatedLocalMainFrame()->GetDocument()) {
-    DeprecatedLocalMainFrame()->GetDocument()->ClearAXObjectCache();
-  }
+  if (MainFrame() && MainFrame()->IsLocalFrame())
+    DeprecatedLocalMainFrame()->PortalStateChanged();
 }
 
 bool Page::InsidePortal() const {
diff --git a/third_party/blink/renderer/core/permissions_policy/permissions_policy_features.json5 b/third_party/blink/renderer/core/permissions_policy/permissions_policy_features.json5
index e7bbc21..26f86b20 100644
--- a/third_party/blink/renderer/core/permissions_policy/permissions_policy_features.json5
+++ b/third_party/blink/renderer/core/permissions_policy/permissions_policy_features.json5
@@ -160,7 +160,6 @@
     {
       name: "ClientHintUAFullVersionList",
       permissions_policy_name: "ch-ua-full-version-list",
-      depends_on: ["UserAgentClientHintFullVersionList"],
     },
     {
       name: "ClientHintUAPlatformVersion",
diff --git a/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc b/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc
index d398e4b..ac3150f 100644
--- a/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc
+++ b/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc
@@ -537,7 +537,13 @@
       LocalFrame::HasTransientUserActivation(GetLocalFrame());
   base::UmaHistogramBoolean("Blink.Clipboard.HasTransientUserActivation",
                             has_transient_user_activation);
-  if (RuntimeEnabledFeatures::ClipboardCustomFormatsEnabled() &&
+  // `allow_without_sanitization` is true only when we are trying to read/write
+  // web custom formats.
+  // TODO(crbug.com/1334203): Remove the `allow_without_sanitization` check.
+  // Currently NTP relies on readText & writeText to be called without any user
+  // gesture.
+  if (allow_without_sanitization &&
+      RuntimeEnabledFeatures::ClipboardCustomFormatsEnabled() &&
       !has_transient_user_activation) {
     script_promise_resolver_->Reject(MakeGarbageCollected<DOMException>(
         DOMExceptionCode::kSecurityError,
diff --git a/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter_unittest.cc b/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter_unittest.cc
index b50f667..05df0c2 100644
--- a/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter_unittest.cc
+++ b/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter_unittest.cc
@@ -633,6 +633,9 @@
 // Confirm that presentation area defaults to the size of the viewport.
 // Numbers and color used were chosen arbitrarily.
 TEST_F(DelegatedInkTrailPresenterUnitTest, PresentationAreaNotProvided) {
+  LoadURL("about:blank");
+  Compositor().BeginFrame();
+
   const int kViewportHeight = 555;
   const int kViewportWidth = 333;
   SetWebViewSize(kViewportWidth, kViewportHeight);
diff --git a/third_party/blink/renderer/modules/file_system_access/file_system_sync_access_handle.cc b/third_party/blink/renderer/modules/file_system_access/file_system_sync_access_handle.cc
index dda2472..35f522b 100644
--- a/third_party/blink/renderer/modules/file_system_access/file_system_sync_access_handle.cc
+++ b/third_party/blink/renderer/modules/file_system_access/file_system_sync_access_handle.cc
@@ -208,8 +208,7 @@
       << "file I/O operation queued after file closed";
 
   if (!base::CheckedNumeric<int64_t>(size).IsValid()) {
-    exception_state.ThrowDOMException(DOMExceptionCode::kNotSupportedError,
-                                      "Cannot truncate file to given length");
+    exception_state.ThrowTypeError("Cannot truncate file to given length");
     return result;
   }
 
@@ -267,8 +266,7 @@
   uint8_t* read_data = static_cast<uint8_t*>(buffer->BaseAddressMaybeShared());
   uint64_t file_offset = options->at();
   if (!base::CheckedNumeric<int64_t>(file_offset).IsValid()) {
-    exception_state.ThrowDOMException(DOMExceptionCode::kNotSupportedError,
-                                      "Cannot read at given offset");
+    exception_state.ThrowTypeError("Cannot read at given offset");
     return 0;
   }
 
@@ -303,15 +301,13 @@
 
   uint64_t file_offset = options->at();
   if (!base::CheckedNumeric<int64_t>(file_offset).IsValid()) {
-    exception_state.ThrowDOMException(DOMExceptionCode::kNotSupportedError,
-                                      "Cannot write at given offset");
+    exception_state.ThrowTypeError("Cannot write at given offset");
     return 0;
   }
 
   size_t write_size = buffer->byteLength();
   if (!base::CheckedNumeric<int>(write_size).IsValid()) {
-    exception_state.ThrowDOMException(DOMExceptionCode::kNotSupportedError,
-                                      "Cannot write more than 2GB");
+    exception_state.ThrowTypeError("Cannot write more than 2GB");
   }
 
   uint8_t* write_data = static_cast<uint8_t*>(buffer->BaseAddressMaybeShared());
@@ -320,7 +316,7 @@
   if (!base::CheckAdd(file_offset, write_size)
            .AssignIfValid(&write_end_offset)) {
     exception_state.ThrowDOMException(
-        DOMExceptionCode::kNotSupportedError,
+        DOMExceptionCode::kQuotaExceededError,
         "No capacity available for this operation");
     return 0;
   }
diff --git a/third_party/blink/renderer/modules/subapps/sub_apps.cc b/third_party/blink/renderer/modules/subapps/sub_apps.cc
index 02024984..10fdbde 100644
--- a/third_party/blink/renderer/modules/subapps/sub_apps.cc
+++ b/third_party/blink/renderer/modules/subapps/sub_apps.cc
@@ -10,6 +10,7 @@
 #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_sub_apps_add_options.h"
 #include "third_party/blink/renderer/core/dom/dom_exception.h"
 #include "third_party/blink/renderer/core/execution_context/execution_context.h"
 #include "third_party/blink/renderer/core/frame/local_dom_window.h"
@@ -19,7 +20,6 @@
 #include "third_party/blink/renderer/platform/bindings/exception_code.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/heap/persistent.h"
-#include "third_party/blink/renderer/platform/weborigin/security_origin.h"
 #include "third_party/blink/renderer/platform/wtf/functional.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 
@@ -28,6 +28,55 @@
 using mojom::blink::SubAppsServiceListResultPtr;
 using mojom::blink::SubAppsServiceResult;
 
+namespace {
+
+Vector<std::pair<String, String>> ResultsFromMojo(
+    Vector<mojom::blink::SubAppsServiceAddResultPtr> sub_apps_mojo) {
+  Vector<std::pair<String, String>> subapps;
+  for (const auto& pair : sub_apps_mojo) {
+    std::string result;
+
+    switch (pair->result_code) {
+      case mojom::blink::SubAppsServiceAddResultCode::kSuccessNewInstall:
+        result = "success-new-install";
+        break;
+      case mojom::blink::SubAppsServiceAddResultCode::kSuccessAlreadyInstalled:
+        result = "success-already-installed";
+        break;
+      case mojom::blink::SubAppsServiceAddResultCode::kUserInstallDeclined:
+        result = "user-install-declined";
+        break;
+      case mojom::blink::SubAppsServiceAddResultCode::kExpectedAppIdCheckFailed:
+        result = "expected-app-id-check-failed";
+        break;
+      case mojom::blink::SubAppsServiceAddResultCode::kParentAppUninstalled:
+        result = "parent-app-uninstalled";
+        break;
+      case mojom::blink::SubAppsServiceAddResultCode::kFailure:
+        result = "failure";
+        break;
+    }
+    subapps.emplace_back(pair->unhashed_app_id, result);
+  }
+  return subapps;
+}
+
+Vector<mojom::blink::SubAppsServiceAddInfoPtr> InstallParamsToMojo(
+    const HeapVector<std::pair<String, Member<SubAppsAddOptions>>>
+        sub_apps_idl) {
+  Vector<mojom::blink::SubAppsServiceAddInfoPtr> subapps;
+  for (const auto& [unhashed_app_id, install_options] : sub_apps_idl) {
+    mojom::blink::SubAppsServiceAddInfoPtr mojom_pair =
+        mojom::blink::SubAppsServiceAddInfo::New();
+    mojom_pair->unhashed_app_id = unhashed_app_id;
+    mojom_pair->install_url = KURL(install_options->installUrl());
+    subapps.push_back(std::move(mojom_pair));
+  }
+  return subapps;
+}
+
+}  // namespace
+
 // static
 const char SubApps::kSupplementName[] = "SubApps";
 
@@ -69,9 +118,10 @@
   service_.reset();
 }
 
-ScriptPromise SubApps::add(ScriptState* script_state,
-                           const String& install_url,
-                           ExceptionState& exception_state) {
+ScriptPromise SubApps::add(
+    ScriptState* script_state,
+    const HeapVector<std::pair<String, Member<SubAppsAddOptions>>>& sub_apps,
+    ExceptionState& exception_state) {
   // [SecureContext] from the IDL ensures this.
   DCHECK(ExecutionContext::From(script_state)->IsSecureContext());
 
@@ -84,34 +134,29 @@
                                            ->GetFrame()
                                            ->GetSecurityContext()
                                            ->GetSecurityOrigin();
-  KURL completed_url = navigator->DomWindow()->CompleteURL(install_url);
-  scoped_refptr<const SecurityOrigin> completed_url_origin =
-      SecurityOrigin::Create(completed_url);
 
-  if (!frame_origin->IsSameOriginWith(completed_url_origin.get())) {
-    exception_state.ThrowDOMException(
-        DOMExceptionCode::kURLMismatchError,
-        "API argument must be a relative path or a fully qualified URL matching"
-        " the origin of the caller.");
-    return ScriptPromise();
+  // Check that each sub app's install url has the same origin as the parent
+  // app, throw exception otherwise.
+  for (const auto& [manifest_id, install_options] : sub_apps) {
+    KURL sub_app_install_url(install_options->installUrl());
+    if (!frame_origin->IsSameOriginWith(
+            SecurityOrigin::Create(sub_app_install_url).get())) {
+      exception_state.ThrowDOMException(
+          DOMExceptionCode::kURLMismatchError,
+          "Install path must be a fully qualified URL matching the origin of "
+          "the caller.");
+      return ScriptPromise();
+    }
   }
 
   auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state);
   GetService()->Add(
-      completed_url.GetPath(),
+      InstallParamsToMojo(sub_apps),
       resolver->WrapCallbackInScriptScope(WTF::Bind(
-          [](ScriptPromiseResolver* resolver, SubAppsServiceResult result) {
-            if (result == SubAppsServiceResult::kSuccess) {
-              resolver->Resolve();
-            } else {
-              resolver->Reject(V8ThrowDOMException::CreateOrDie(
-                  resolver->GetScriptState()->GetIsolate(),
-                  DOMExceptionCode::kOperationError,
-                  "Unable to add given sub-app. Check whether the calling app "
-                  "is installed."));
-            }
+          [](ScriptPromiseResolver* resolver,
+             Vector<mojom::blink::SubAppsServiceAddResultPtr> mojom_results) {
+            resolver->Resolve(ResultsFromMojo(std::move(mojom_results)));
           })));
-
   return resolver->Promise();
 }
 
diff --git a/third_party/blink/renderer/modules/subapps/sub_apps.h b/third_party/blink/renderer/modules/subapps/sub_apps.h
index 357a177..6f757ec6 100644
--- a/third_party/blink/renderer/modules/subapps/sub_apps.h
+++ b/third_party/blink/renderer/modules/subapps/sub_apps.h
@@ -7,6 +7,7 @@
 
 #include "third_party/blink/public/mojom/subapps/sub_apps_service.mojom-blink.h"
 #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
+#include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h"
 #include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h"
 #include "third_party/blink/renderer/platform/supplementable.h"
 #include "third_party/blink/renderer/platform/wtf/forward.h"
@@ -17,6 +18,7 @@
 class Navigator;
 class ScriptPromise;
 class ScriptState;
+class SubAppsAddOptions;
 
 class SubApps : public ScriptWrappable, public Supplement<Navigator> {
   DEFINE_WRAPPERTYPEINFO();
@@ -33,7 +35,10 @@
   void Trace(Visitor*) const override;
 
   // SubApps API.
-  ScriptPromise add(ScriptState*, const String& install_url, ExceptionState&);
+  ScriptPromise add(
+      ScriptState*,
+      const HeapVector<std::pair<String, Member<SubAppsAddOptions>>>& sub_apps,
+      ExceptionState&);
   ScriptPromise list(ScriptState*, ExceptionState&);
   ScriptPromise remove(ScriptState*,
                        const String& unhashed_app_id,
diff --git a/third_party/blink/renderer/modules/subapps/sub_apps.idl b/third_party/blink/renderer/modules/subapps/sub_apps.idl
index 910f142c..cfa9d8d 100644
--- a/third_party/blink/renderer/modules/subapps/sub_apps.idl
+++ b/third_party/blink/renderer/modules/subapps/sub_apps.idl
@@ -4,12 +4,25 @@
 
 // https://github.com/ivansandrk/multi-apps/blob/main/explainer.md
 
+
+enum SubAppsServiceAddResultCode {
+  // Success category:
+  "success-new-install",
+  "success-already-installed",
+
+  // // Failure category:
+  "user-install-declined",
+  "expected-app-id-check-failed",
+  "parent-app-uninstalled",
+  "failure",
+};
+
 [
   Exposed=Window,
   SecureContext,
   RuntimeEnabled=DesktopPWAsSubApps
 ] interface SubApps {
-  [CallWith=ScriptState, RaisesException] Promise<void> add(DOMString install_url);
+  [CallWith=ScriptState, RaisesException] Promise<record<DOMString, SubAppsServiceAddResultCode>> add(record<DOMString, SubAppsAddOptions> sub_apps);
   [CallWith=ScriptState, RaisesException] Promise<FrozenArray<DOMString>> list();
   [CallWith=ScriptState, RaisesException] Promise<void> remove(DOMString app_id);
 };
diff --git a/third_party/blink/renderer/modules/subapps/sub_apps_add_options.idl b/third_party/blink/renderer/modules/subapps/sub_apps_add_options.idl
new file mode 100644
index 0000000..8660d80
--- /dev/null
+++ b/third_party/blink/renderer/modules/subapps/sub_apps_add_options.idl
@@ -0,0 +1,9 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://github.com/ivansandrk/multi-apps/blob/main/explainer.md
+
+dictionary SubAppsAddOptions {
+  required DOMString install_url;
+};
\ No newline at end of file
diff --git a/third_party/blink/renderer/modules/webdatabase/dom_window_web_database.cc b/third_party/blink/renderer/modules/webdatabase/dom_window_web_database.cc
index 93756b0..e1fe68a0 100644
--- a/third_party/blink/renderer/modules/webdatabase/dom_window_web_database.cc
+++ b/third_party/blink/renderer/modules/webdatabase/dom_window_web_database.cc
@@ -71,10 +71,6 @@
     if (window.GetSecurityOrigin()->IsLocal())
       UseCounter::Count(window, WebFeature::kFileAccessedDatabase);
 
-    if (!window.GetExecutionContext()->IsSecureContext()) {
-      UseCounter::Count(window, WebFeature::kOpenWebDatabaseInsecureContext);
-    }
-
     if (!base::FeatureList::IsEnabled(blink::features::kWebSQLAccess) &&
         !base::CommandLine::ForCurrentProcess()->HasSwitch(
             blink::switches::kWebSQLAccess)) {
@@ -83,6 +79,17 @@
       return nullptr;
     }
 
+    if (!window.GetExecutionContext()->IsSecureContext()) {
+      UseCounter::Count(window, WebFeature::kOpenWebDatabaseInsecureContext);
+
+      if (!base::FeatureList::IsEnabled(
+              blink::features::kWebSQLNonSecureContextAccess)) {
+        exception_state.ThrowSecurityError(
+            "Access to the WebDatabase API is denied in non-secure contexts.");
+        return nullptr;
+      }
+    }
+
     if (window.IsCrossSiteSubframeIncludingScheme()) {
       exception_state.ThrowSecurityError(
           "Access to the WebDatabase API is denied in third party contexts.");
diff --git a/third_party/blink/renderer/modules/webdatabase/dom_window_web_database_test.cc b/third_party/blink/renderer/modules/webdatabase/dom_window_web_database_test.cc
index fde19c2..9dc4a8d 100644
--- a/third_party/blink/renderer/modules/webdatabase/dom_window_web_database_test.cc
+++ b/third_party/blink/renderer/modules/webdatabase/dom_window_web_database_test.cc
@@ -48,6 +48,22 @@
   url_test_helpers::UnregisterAllURLsAndClearMemoryCache();
 }
 
+void OpenWebDatabaseInWindow(const char* outer_origin,
+                             const char* outer_file,
+                             ExceptionState& exception_state) {
+  url_test_helpers::RegisterMockedURLLoadFromBase(
+      WebString::FromUTF8(outer_origin), test::CoreTestDataPath(),
+      WebString::FromUTF8(outer_file));
+  frame_test_helpers::WebViewHelper web_view_helper;
+  web_view_helper.InitializeAndLoad(base::StrCat({outer_origin, outer_file}));
+  LocalDOMWindow* local_dom_window = To<LocalDOMWindow>(
+      web_view_helper.GetWebView()->GetPage()->MainFrame()->DomWindow());
+  Database* result = DOMWindowWebDatabase::openDatabase(
+      *local_dom_window, "", "", "", 0, exception_state);
+  EXPECT_EQ(result, nullptr);
+  url_test_helpers::UnregisterAllURLsAndClearMemoryCache();
+}
+
 TEST(DOMWindowWebDatabaseTest, WebSQLThirdPartyContext) {
   V8TestingScope scope;
   OpenWebDatabaseInIFrame("http://not-example.test:0/",
@@ -60,11 +76,48 @@
             static_cast<int>(DOMExceptionCode::kSecurityError));
 }
 
+TEST(DOMWindowWebDatabaseTest, WebSQLNonSecureContextDefault) {
+  V8TestingScope scope;
+  OpenWebDatabaseInWindow("http://example.test:0/", "first_party/empty.html",
+                          scope.GetExceptionState());
+  EXPECT_TRUE(scope.GetExceptionState().HadException());
+  // Insufficient state exists to actually open a database, but this error
+  // means it was tried.
+  EXPECT_TRUE(scope.GetExceptionState().HadException());
+  EXPECT_EQ(scope.GetExceptionState().Code(),
+            static_cast<int>(DOMExceptionCode::kInvalidStateError));
+}
+
+TEST(DOMWindowWebDatabaseTest, WebSQLNonSecureContextFeatureOff) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndDisableFeature(
+      blink::features::kWebSQLNonSecureContextAccess);
+  V8TestingScope scope;
+  OpenWebDatabaseInWindow("http://example.test:0/", "first_party/empty.html",
+                          scope.GetExceptionState());
+  // This error means the database opening was rejected.
+  EXPECT_TRUE(scope.GetExceptionState().HadException());
+  EXPECT_EQ(scope.GetExceptionState().Code(),
+            static_cast<int>(DOMExceptionCode::kSecurityError));
+}
+
+TEST(DOMWindowWebDatabaseTest, WebSQLNonSecureContextFeatureOn) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(
+      blink::features::kWebSQLNonSecureContextAccess);
+  V8TestingScope scope;
+  OpenWebDatabaseInWindow("http://example.test:0/", "first_party/empty.html",
+                          scope.GetExceptionState());
+  // Insufficient state exists to actually open a database, but this error
+  // means it was tried.
+  EXPECT_TRUE(scope.GetExceptionState().HadException());
+  EXPECT_EQ(scope.GetExceptionState().Code(),
+            static_cast<int>(DOMExceptionCode::kInvalidStateError));
+}
+
 TEST(DOMWindowWebDatabaseTest, WebSQLDefault) {
   V8TestingScope scope;
-  OpenWebDatabaseInIFrame("http://example.test:0/",
-                          "first_party/nested-originA.html",
-                          "http://example.test:0/", "first_party/empty.html",
+  OpenWebDatabaseInWindow("https://example.test:0/", "first_party/empty.html",
                           scope.GetExceptionState());
   // Insufficient state exists to actually open a database, but this error
   // means it was tried.
@@ -80,9 +133,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitAndEnableFeature(blink::features::kWebSQLAccess);
   V8TestingScope scope;
-  OpenWebDatabaseInIFrame("http://example.test:0/",
-                          "first_party/nested-originA.html",
-                          "http://example.test:0/", "first_party/empty.html",
+  OpenWebDatabaseInWindow("https://example.test:0/", "first_party/empty.html",
                           scope.GetExceptionState());
   // Insufficient state exists to actually open a database, but this error
   // means it was tried.
@@ -98,9 +149,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitAndDisableFeature(blink::features::kWebSQLAccess);
   V8TestingScope scope;
-  OpenWebDatabaseInIFrame("http://example.test:0/",
-                          "first_party/nested-originA.html",
-                          "http://example.test:0/", "first_party/empty.html",
+  OpenWebDatabaseInWindow("https://example.test:0/", "first_party/empty.html",
                           scope.GetExceptionState());
   // Insufficient state exists to actually open a database, but this error
   // means it was tried.
@@ -116,9 +165,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitAndEnableFeature(blink::features::kWebSQLAccess);
   V8TestingScope scope;
-  OpenWebDatabaseInIFrame("http://example.test:0/",
-                          "first_party/nested-originA.html",
-                          "http://example.test:0/", "first_party/empty.html",
+  OpenWebDatabaseInWindow("https://example.test:0/", "first_party/empty.html",
                           scope.GetExceptionState());
   // Insufficient state exists to actually open a database, but this error
   // means it was tried.
@@ -134,9 +181,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitAndDisableFeature(blink::features::kWebSQLAccess);
   V8TestingScope scope;
-  OpenWebDatabaseInIFrame("http://example.test:0/",
-                          "first_party/nested-originA.html",
-                          "http://example.test:0/", "first_party/empty.html",
+  OpenWebDatabaseInWindow("https://example.test:0/", "first_party/empty.html",
                           scope.GetExceptionState());
   // This error means the database opening was rejected.
   EXPECT_TRUE(scope.GetExceptionState().HadException());
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_swap_chain.cc b/third_party/blink/renderer/modules/webgpu/gpu_swap_chain.cc
index b610184..2e9aeeda 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_swap_chain.cc
+++ b/third_party/blink/renderer/modules/webgpu/gpu_swap_chain.cc
@@ -48,7 +48,7 @@
       WGPUShaderModuleWGSLDescriptor wgsl_desc = {
           .chain = {.sType = WGPUSType_ShaderModuleWGSLDescriptor},
           .source = R"(
-          @stage(vertex) fn vert_main(@builtin(vertex_index) VertexIndex : u32) -> @builtin(position) vec4<f32> {
+          @vertex fn vert_main(@builtin(vertex_index) VertexIndex : u32) -> @builtin(position) vec4<f32> {
             var pos = array<vec2<f32>, 3>(
                 vec2<f32>(-1.0, -1.0),
                 vec2<f32>( 3.0, -1.0),
@@ -56,7 +56,7 @@
             return vec4<f32>(pos[VertexIndex], 0.0, 1.0);
           }
 
-          @stage(fragment) fn frag_main() -> @location(0) vec4<f32> {
+          @fragment fn frag_main() -> @location(0) vec4<f32> {
             return vec4<f32>(1.0);
           }
         )",
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
index 9099b212..42b44f527 100644
--- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
+++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -345,10 +345,6 @@
   ScrollbarThemeSettings::SetOverlayScrollbarsEnabled(enable);
 }
 
-void WebRuntimeFeatures::ForceOverlayFullscreenVideo(bool enable) {
-  RuntimeEnabledFeatures::SetForceOverlayFullscreenVideoEnabled(enable);
-}
-
 void WebRuntimeFeatures::EnableSharedArrayBuffer(bool enable) {
   RuntimeEnabledFeatures::SetSharedArrayBufferEnabled(enable);
 }
diff --git a/third_party/blink/renderer/platform/network/http_parsers.cc b/third_party/blink/renderer/platform/network/http_parsers.cc
index 1601a21..5d2effc 100644
--- a/third_party/blink/renderer/platform/network/http_parsers.cc
+++ b/third_party/blink/renderer/platform/network/http_parsers.cc
@@ -796,6 +796,8 @@
 
       ServerTimingHeader header(name.ToString());
 
+      tokenizer.ConsumeBeforeAnyCharMatch({',', ';'});
+
       while (tokenizer.Consume(';')) {
         StringView parameter_name;
         if (!tokenizer.ConsumeToken(ParsedContentType::Mode::kNormal,
diff --git a/third_party/blink/renderer/platform/network/http_parsers_test.cc b/third_party/blink/renderer/platform/network/http_parsers_test.cc
index fff2385..48c4c8b 100644
--- a/third_party/blink/renderer/platform/network/http_parsers_test.cc
+++ b/third_party/blink/renderer/platform/network/http_parsers_test.cc
@@ -557,8 +557,10 @@
                          {{"metric1", "0", "d1"}, {"metric2", "0", ""}});
 
   // nonsense - extraneous characters after entry name token
-  testServerTimingHeader("metric==   \"\"foo;dur=123.4", {{"metric", "0", ""}});
-  testServerTimingHeader("metric1==   \"\"foo,metric2", {{"metric1", "0", ""}});
+  testServerTimingHeader("metric==   \"\"foo;dur=123.4",
+                         {{"metric", "123.4", ""}});
+  testServerTimingHeader("metric1==   \"\"foo,metric2",
+                         {{"metric1", "0", ""}, {"metric2", "0", ""}});
 
   // nonsense - extraneous characters after param name token
   testServerTimingHeader("metric;dur foo=12", {{"metric", "0", ""}});
@@ -588,7 +590,8 @@
   testServerTimingHeader("{", {{"{", "0", ""}});
   testServerTimingHeader("}", {{"}", "0", ""}});
   testServerTimingHeader("{}", {{"{}", "0", ""}});
-  testServerTimingHeader("{\"foo\":\"bar\"},metric", {{"{", "0", ""}});
+  testServerTimingHeader("{\"foo\":\"bar\"},metric",
+                         {{"{", "0", ""}, {"metric", "0", ""}});
 }
 
 TEST(HTTPParsersTest, ParseContentTypeOptionsTest) {
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 0d91f9a..f2f3a08 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1147,11 +1147,6 @@
       name:"ForceEagerMeasureMemory",
     },
     {
-      // For simulating Android's overlay fullscreen video in web tests on
-      // Linux.
-      name: "ForceOverlayFullscreenVideo",
-    },
-    {
       // https://github.com/flackr/reduce-motion/blob/main/explainer.md
       name: "ForceReduceMotion",
     },
@@ -2437,10 +2432,6 @@
       status: "stable",
     },
     {
-      name: "UserAgentClientHintFullVersionList",
-      status: "stable",
-    },
-    {
       name: "UserAgentReduction",
       origin_trial_feature_name: "UserAgentReduction",
       origin_trial_allows_third_party: true,
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/fuchsia.py b/third_party/blink/tools/blinkpy/web_tests/port/fuchsia.py
index 3b0021d..30f421d 100644
--- a/third_party/blink/tools/blinkpy/web_tests/port/fuchsia.py
+++ b/third_party/blink/tools/blinkpy/web_tests/port/fuchsia.py
@@ -351,7 +351,7 @@
             cmd.extend([
                 '--ozone-platform=scenic', '--use-vulkan',
                 '--enable-gpu-rasterization', '--force-device-scale-factor=1',
-                '--use-gl=stub', '--enable-features=UseSkiaRenderer,Vulkan',
+                '--use-gl=stub', '--enable-features=Vulkan',
                 '--gpu-watchdog-timeout-seconds=60'
             ])
         return cmd
diff --git a/third_party/blink/web_tests/FlagExpectations/highdpi b/third_party/blink/web_tests/FlagExpectations/highdpi
index 6251130aa..08f073d 100644
--- a/third_party/blink/web_tests/FlagExpectations/highdpi
+++ b/third_party/blink/web_tests/FlagExpectations/highdpi
@@ -1243,6 +1243,7 @@
 
 virtual/backface-visibility-interop/transforms/2d/compound-transforms-vs-containers.html [ Pass ]
 virtual/backface-visibility-interop/transforms/2d/zoom-menulist.html [ Pass ]
+virtual/compositor-threaded-percent-based-scrolling/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div.html [ Pass ]
 virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky.html [ Pass ]
 virtual/eye-dropper/fast/forms/color-scheme/color/color-picker-appearance.html [ Pass ]
 virtual/eye-dropper/fast/forms/color-scheme/color/color-suggestion-picker-appearance-with-scrollbar.html [ Pass ]
@@ -1264,6 +1265,7 @@
 virtual/layout_ng_printing/printing/ellipsis-printing-style.html [ Pass ]
 virtual/layout_ng_printing/printing/multi-page-background.html [ Pass ]
 virtual/layout_ng_printing/printing/page-format-data.html [ Pass ]
+virtual/main-threaded-percent-based-scrolling/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div.html [ Pass ]
 virtual/no-forced-frame-updates/external/wpt/html/dom/render-blocking/parser-inserted-preload-link.tentative.html [ Pass ]
 virtual/off-main-thread-css-paint/http/tests/csspaint/border-color.html [ Pass ]
 virtual/scroll-unification/fast/events/event-listener-on-link.html [ Pass ]
diff --git a/third_party/blink/web_tests/FlagSpecificConfig b/third_party/blink/web_tests/FlagSpecificConfig
index 0102c57..07e8bd0b 100644
--- a/third_party/blink/web_tests/FlagSpecificConfig
+++ b/third_party/blink/web_tests/FlagSpecificConfig
@@ -43,7 +43,7 @@
     "name": "skia-vulkan-swiftshader",
     "args": [
           "--enable-gpu-rasterization",
-          "--enable-features=UseSkiaRenderer,Vulkan",
+          "--enable-features=Vulkan",
           "--use-vulkan=swiftshader",
           "--disable-vulkan-fallback-to-gl-for-testing"
     ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index b5f061b..14a7710 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -28,6 +28,8 @@
 
 # Temporarily disabled for DevTools.
 crbug.com/1304217 http/tests/devtools/text-source-map.js [ Skip ]
+crbug.com/1330482 http/tests/devtools/unit/viewport-datagrid-items-attached-to-dom.js [ Skip ]
+crbug.com/1330482 http/tests/devtools/unit/viewport-datagrid-items-expandable-attached-to-dom.js [ Skip ]
 
 # Expected to time out.
 external/wpt/infrastructure/expected-fail/timeout.html [ Timeout ]
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites
index e36b5e6..523f97f 100644
--- a/third_party/blink/web_tests/VirtualTestSuites
+++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -177,7 +177,6 @@
     "args": ["--enable-features=OverlayScrollbar",
              "--enable-threaded-compositing",
              "--enable-prefer-compositing-to-lcd-text",
-             "--force-overlay-fullscreen-video",
              "--enable-overscroll-notifications",
              "--enable-viewport",
              "--disable-canvas-aa",
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text-decor/text-decoration-color-recalc-002-ref.html b/third_party/blink/web_tests/external/wpt/css/css-text-decor/text-decoration-color-recalc-002-ref.html
new file mode 100644
index 0000000..440d2f0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-text-decor/text-decoration-color-recalc-002-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+    <body>
+        <p style="color: green;"><s>Text passes if strikethrough color is green.</s></p>
+    </body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text-decor/text-decoration-color-recalc-002.html b/third_party/blink/web_tests/external/wpt/css/css-text-decor/text-decoration-color-recalc-002.html
new file mode 100644
index 0000000..ce5c36dd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-text-decor/text-decoration-color-recalc-002.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CSS Test: CSS3 text-decoration-color currentColor is updated</title>
+        <link rel="help" href="https://crbug.com/1330953">
+        <link rel="match" href="text-decoration-color-recalc-002-ref.html">
+    </head>
+    <body>
+        <p id="p" style="color: red;"><s>Text passes if strikethrough color is green.</s></p>
+    </body>
+    <script>
+        p.offsetTop;
+        p.style.color = 'green';
+    </script>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-cross-origin.https.html
similarity index 63%
copy from third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html
copy to third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-cross-origin.https.html
index f6d9755..3f6256bc 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-cross-origin.https.html
@@ -4,42 +4,38 @@
 <script src=/resources/testharness.js></script>
 <script src=/resources/testharnessreport.js></script>
 <script src="/common/get-host-info.sub.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="/common/utils.js"></script>
 <script src="resources/common.js"></script>
+<script src="resources/popup-test.js"></script>
 <script>
 [
   {
     "title": "popup with coop/coep",
     "coop": "same-origin",
     "coep": "require-corp",
-    "opener": true
+    "opener": "severed"
   },
   {
     "title": "popup with coop unsafe-none/coep",
     "coop": "unsafe-none",
     "coep": "require-corp",
-    "opener": false
+    "opener": "severed"
   },
   {
     "title": "popup with coop unsafe-none without coep",
     "coop": "unsafe-none",
     "coep": "",
-    "opener": false
+    "opener": "severed"
   },
   {
     "title": "popup without coep",
     "coop": "same-origin",
     "coep": "",
-    "opener": false
+    "opener": "severed"
   }
 ].forEach(variant => {
-  async_test(t => {
-    coop_coep_test(t, SAME_ORIGIN, variant.coop, variant.coep, variant.title.replace(/ /g,"-"), variant.opener);
-  }, `Same-origin ${variant.title}`);
-
-  // "same-site" is a historical value, equivalent to "unsafe-none"
-  async_test(t => {
-    coop_coep_test(t, SAME_SITE, variant.coop, variant.coep, `same-site-${variant.title.replace(/ /g,"-")}`, false);
-  }, `historical: "same-site" ${variant.title}`);
+  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, { coop: variant.coop, coep: variant.coep }, variant.opener);
 });
 
 test(() => {
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html.headers b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-cross-origin.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html.headers
copy to third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-cross-origin.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-origin.https.html
similarity index 63%
rename from third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html
rename to third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-origin.https.html
index f6d9755..66e7aaf 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-origin.https.html
@@ -4,42 +4,38 @@
 <script src=/resources/testharness.js></script>
 <script src=/resources/testharnessreport.js></script>
 <script src="/common/get-host-info.sub.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="/common/utils.js"></script>
 <script src="resources/common.js"></script>
+<script src="resources/popup-test.js"></script>
 <script>
 [
   {
     "title": "popup with coop/coep",
     "coop": "same-origin",
     "coep": "require-corp",
-    "opener": true
+    "opener": "preserved"
   },
   {
     "title": "popup with coop unsafe-none/coep",
     "coop": "unsafe-none",
     "coep": "require-corp",
-    "opener": false
+    "opener": "severed"
   },
   {
     "title": "popup with coop unsafe-none without coep",
     "coop": "unsafe-none",
     "coep": "",
-    "opener": false
+    "opener": "severed"
   },
   {
     "title": "popup without coep",
     "coop": "same-origin",
     "coep": "",
-    "opener": false
+    "opener": "severed"
   }
 ].forEach(variant => {
-  async_test(t => {
-    coop_coep_test(t, SAME_ORIGIN, variant.coop, variant.coep, variant.title.replace(/ /g,"-"), variant.opener);
-  }, `Same-origin ${variant.title}`);
-
-  // "same-site" is a historical value, equivalent to "unsafe-none"
-  async_test(t => {
-    coop_coep_test(t, SAME_SITE, variant.coop, variant.coep, `same-site-${variant.title.replace(/ /g,"-")}`, false);
-  }, `historical: "same-site" ${variant.title}`);
+  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, { coop: variant.coop, coep: variant.coep }, variant.opener);
 });
 
 test(() => {
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html.headers b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-origin.https.html.headers
similarity index 100%
copy from third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html.headers
copy to third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-origin.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-site.https.html
similarity index 63%
copy from third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html
copy to third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-site.https.html
index f6d9755..abce6597 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-site.https.html
@@ -4,42 +4,38 @@
 <script src=/resources/testharness.js></script>
 <script src=/resources/testharnessreport.js></script>
 <script src="/common/get-host-info.sub.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="/common/utils.js"></script>
 <script src="resources/common.js"></script>
+<script src="resources/popup-test.js"></script>
 <script>
 [
   {
     "title": "popup with coop/coep",
     "coop": "same-origin",
     "coep": "require-corp",
-    "opener": true
+    "opener": "severed"
   },
   {
     "title": "popup with coop unsafe-none/coep",
     "coop": "unsafe-none",
     "coep": "require-corp",
-    "opener": false
+    "opener": "severed"
   },
   {
     "title": "popup with coop unsafe-none without coep",
     "coop": "unsafe-none",
     "coep": "",
-    "opener": false
+    "opener": "severed"
   },
   {
     "title": "popup without coep",
     "coop": "same-origin",
     "coep": "",
-    "opener": false
+    "opener": "severed"
   }
 ].forEach(variant => {
-  async_test(t => {
-    coop_coep_test(t, SAME_ORIGIN, variant.coop, variant.coep, variant.title.replace(/ /g,"-"), variant.opener);
-  }, `Same-origin ${variant.title}`);
-
-  // "same-site" is a historical value, equivalent to "unsafe-none"
-  async_test(t => {
-    coop_coep_test(t, SAME_SITE, variant.coop, variant.coep, `same-site-${variant.title.replace(/ /g,"-")}`, false);
-  }, `historical: "same-site" ${variant.title}`);
+  popup_test(`Same-site ${variant.title}`, SAME_SITE, { coop: variant.coop, coep: variant.coep }, variant.opener);
 });
 
 test(() => {
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html.headers b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-site.https.html.headers
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https.html.headers
rename to third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-site.https.html.headers
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/header-parsing-failures.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/header-parsing-failures.https.html
index 1973550..55b126f 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/header-parsing-failures.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/header-parsing-failures.https.html
@@ -84,7 +84,7 @@
     "coop": "*same-origin ",
   }
 ].forEach(variant => {
-  subsetTest(popup_test, `Parsing ${variant.title}`, SAME_ORIGIN, variant.coop, "preserved");
+  subsetTest(popup_test, `Parsing ${variant.title}`, SAME_ORIGIN, { coop: variant.coop }, "preserved");
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/header-parsing-successes.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/header-parsing-successes.https.html
index 0d3dadb..8e055669 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/header-parsing-successes.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/header-parsing-successes.https.html
@@ -38,7 +38,7 @@
     "coop": "same-origin; foo=bar",
   }
 ].forEach(variant => {
-  popup_test(`Parsing ${variant.title}`, SAME_ORIGIN, variant.coop, "severed");
+  popup_test(`Parsing ${variant.title}`, SAME_ORIGIN, { coop: variant.coop }, "severed");
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html
index d45d9e4..21e0875 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html
index 1a09d599..89b0b49 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html
index e884d21..fb33303 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-site ${variant.title}`, SAME_SITE, variant.coop, variant.opener);
+  popup_test(`Same-site ${variant.title}`, SAME_SITE, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html
index d45d9e4..21e0875 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html
index 1a09d599..89b0b49 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html
index e884d21..fb33303 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-site ${variant.title}`, SAME_SITE, variant.coop, variant.opener);
+  popup_test(`Same-site ${variant.title}`, SAME_SITE, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html
index d45d9e4..21e0875 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html
index 1a09d599..89b0b49 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html
index e884d21..fb33303 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-site ${variant.title}`, SAME_SITE, variant.coop, variant.opener);
+  popup_test(`Same-site ${variant.title}`, SAME_SITE, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html
index c776f44..d025fae 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, { coop : variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html
index 7e14d07..438e4242 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "preserved"
   }
 ].forEach(variant => {
-  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, { coop : variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html
index 7d734fa2..d1b6b60 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-site ${variant.title}`, SAME_SITE, variant.coop, variant.opener);
+  popup_test(`Same-site ${variant.title}`, SAME_SITE, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html
index a01ab56..bd1e684 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html
index b103bb7..caf4b17 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html
index 3ed8b1c..93ba9c9 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-site ${variant.title}`, SAME_SITE, variant.coop, variant.opener);
+  popup_test(`Same-site ${variant.title}`, SAME_SITE, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html
index c776f44..31ac5694 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html
index 7b3f4d9..18f8704 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html
index 7d734fa2..d1b6b60 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-site ${variant.title}`, SAME_SITE, variant.coop, variant.opener);
+  popup_test(`Same-site ${variant.title}`, SAME_SITE, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html
index c776f44..31ac5694 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Cross-origin ${variant.title}`, CROSS_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html
index 7b3f4d9..18f8704 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html
index 7d734fa2..d1b6b60 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html
@@ -52,7 +52,7 @@
     "opener": "severed"
   }
 ].forEach(variant => {
-  popup_test(`Same-site ${variant.title}`, SAME_SITE, variant.coop, variant.opener);
+  popup_test(`Same-site ${variant.title}`, SAME_SITE, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-with-structured-header.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-with-structured-header.https.html
index 729be3c..e337e69 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-with-structured-header.https.html
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-with-structured-header.https.html
@@ -27,7 +27,7 @@
     "opener": "severed",
   }
 ].forEach(variant => {
-  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, variant.coop, variant.opener);
+  popup_test(`Same-origin ${variant.title}`, SAME_ORIGIN, { coop: variant.coop }, variant.opener);
 });
 
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/resources/reporting-common.js b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/resources/reporting-common.js
index 6ed75b2..585287d 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/resources/reporting-common.js
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/resources/reporting-common.js
@@ -180,8 +180,7 @@
   return str.replace(/.{8}-.{4}-.{4}-.{4}-.{12}/g, `(uuid)`);
 }
 
-// Run a test (such as coop_coep_test from ./common.js) then check that all
-// expected reports are present.
+// Run a test then check that all expected reports are present.
 async function reportingTest(testFunction, executorToken, expectedReports) {
   await new Promise(testFunction);
   expectedReports = Array.from(
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/common.js b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/common.js
index 34589f4..ff6be1bb 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/common.js
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/common.js
@@ -62,25 +62,6 @@
   });
 }
 
-function coop_coep_test(t, host, coop, coep, channelName, hasOpener, openerDOMAccess, callback) {
-  url_test(t, `${host.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=${encodeURIComponent(coop)}&coep=${coep}&channel=${encodeURIComponent(channelName)}`, channelName, hasOpener, openerDOMAccess, callback);
-}
-
-function coop_test(t, host, coop, channelName, hasOpener, callback) {
-  coop_coep_test(t, host, coop, "", channelName, hasOpener, undefined /* openerDOMAccess */, callback);
-}
-
-function run_coop_tests(documentCOOPValueTitle, testArray) {
-  for (const test of testArray) {
-    let coopName = typeof test[1] === "object" ? test[1].percentEncoded : test[1];
-    async_test(t => {
-      coop_test(t, test[0], test[1],
-                `${documentCOOPValueTitle}_to_${test[0].name}_${coopName.replace(/ /g,"-")}`,
-                test[2], () => { t.done(); });
-    }, `${documentCOOPValueTitle} document opening popup to ${test[0].origin} with COOP: ${format_value(coopName)}`);
-  }
-}
-
 function run_coop_test_iframe (documentTitle, iframe_origin, popup_origin, popup_coop, expects_opener, expects_name) {
   for (const popup_via of ["window_open", "anchor", "form_GET", "form_POST"]) {
     const name = iframe_origin.name + "_iframe_opening_" + popup_origin.name + "_popup_via_" + popup_via + "_with_coop_" + popup_coop;
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/popup-test.js b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/popup-test.js
index 3da5ca1..f613a9f7 100644
--- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/popup-test.js
+++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/popup-test.js
@@ -5,14 +5,16 @@
 // - "/common/dispatcher/dispatcher.js" for cross-origin messaging.
 // - "/common/utils.js" for token().
 
-function getExecutorPath(uuid, origin, coop) {
+function getExecutorPath(uuid, origin, headers) {
   const executor_path = '/common/dispatcher/executor.html?';
-  const coop_header =
-    `|header(Cross-Origin-Opener-Policy,${encodeURIComponent(coop)})`;
+  const coop_header = headers.coop ?
+    `|header(Cross-Origin-Opener-Policy,${encodeURIComponent(headers.coop)})` : '';
+  const coep_header = headers.coep ?
+    `|header(Cross-Origin-Embedder-Policy,${encodeURIComponent(headers.coep)})` : '';
   return origin +
          executor_path +
          `uuid=${uuid}` +
-         '&pipe=' + coop_header;
+         '&pipe=' + coop_header + coep_header;
 }
 
 function getPopupHasOpener(popup_token) {
@@ -31,9 +33,9 @@
   }
 }
 
-// Verifies that a popup with origin `origin` and coop header `coop_header` has
+// Verifies that a popup with origin `origin` and headers `headers` has
 // the expected `opener_state` after being opened.
-async function popup_test(description, origin, coop_header, expected_opener_state) {
+async function popup_test(description, origin, headers, expected_opener_state) {
   promise_test(async t => {
     const popup_token = token();
     const reply_token = token();
@@ -41,7 +43,7 @@
     const popup_url = getExecutorPath(
       popup_token,
       origin.origin,
-      coop_header);
+      headers);
 
     // We open popup and then ping it, it will respond after loading.
     const popup = window.open(popup_url);
diff --git a/third_party/blink/web_tests/external/wpt/resources/chromium/mock-subapps.js b/third_party/blink/web_tests/external/wpt/resources/chromium/mock-subapps.js
index dd6899a5..96ddcfd2 100644
--- a/third_party/blink/web_tests/external/wpt/resources/chromium/mock-subapps.js
+++ b/third_party/blink/web_tests/external/wpt/resources/chromium/mock-subapps.js
@@ -20,9 +20,9 @@
       this.receiver_.$.close();
     }
 
-    add(install_path) {
+    add(sub_apps) {
       return Promise.resolve({
-        result: testInternal.serviceResultCode
+        result: [],
       });
     }
 
diff --git a/third_party/blink/web_tests/external/wpt/subapps/add-error.tentative.https.html b/third_party/blink/web_tests/external/wpt/subapps/add-error.tentative.https.html
index b7d339a..1ae3d0d 100644
--- a/third_party/blink/web_tests/external/wpt/subapps/add-error.tentative.https.html
+++ b/third_party/blink/web_tests/external/wpt/subapps/add-error.tentative.https.html
@@ -18,9 +18,15 @@
   // Detach the frame.
   iframe.remove();
 
+  const same_origin_url = document.location.origin + '/sub-app';
+  let subapp = {};
+  let install_options = {};
+  install_options["install_url"] = same_origin_url;
+  subapp[same_origin_url] = install_options;
+
   // At this point the iframe is detached and unloaded, and its execution
   // context is gone.
-  await promise_rejects_dom(t, 'NotFoundError', iframeDOMException, iframeNavigator.subApps.add('app'));
+  await promise_rejects_dom(t, 'NotFoundError', iframeDOMException, iframeNavigator.subApps.add(subapp));
 }, "The object is no longer associated to a document.");
 
 promise_test(async t => {
@@ -31,22 +37,13 @@
   const iframeDOMException = iframe.contentWindow.DOMException;
   t.add_cleanup(() => iframe.remove());
 
-  await promise_rejects_dom(t, 'InvalidStateError', iframeDOMException, iframeNavigator.subApps.add('app'));
+  const same_origin_url = document.location.origin + '/sub-app';
+  let subapp = {};
+  let install_options = {};
+  install_options["install_url"] = same_origin_url;
+  subapp[same_origin_url] = install_options;
+
+  await promise_rejects_dom(t, 'InvalidStateError', iframeDOMException, iframeNavigator.subApps.add(subapp));
 }, "API is only supported in top-level browsing contexts.");
 
-promise_test(t => {
-  return promise_rejects_dom(t, 'URLMismatchError', navigator.subApps.add(
-                             'https://some.other.origin/'));
-}, 'Wrong origin URL argument.');
-
-promise_test(async t => {
-  t.add_cleanup(async () => {
-      await mockSubAppsService.reset();
-      mockSubAppsService = null;
-  });
-  await createMockSubAppsService(Status.FAILURE);
-  return promise_rejects_dom(t, 'OperationError', navigator.subApps.add(
-                             '/sub-app'));
-}, 'Service failed to add sub-app.');
-
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/subapps/add-success.tentative.https.html b/third_party/blink/web_tests/external/wpt/subapps/add-success.tentative.https.html
index 2463d3c..1f347fd 100644
--- a/third_party/blink/web_tests/external/wpt/subapps/add-success.tentative.https.html
+++ b/third_party/blink/web_tests/external/wpt/subapps/add-success.tentative.https.html
@@ -7,15 +7,14 @@
 
 subapps_test(async (t, mockSubAppsService) => {
   const same_origin_url = document.location.origin + '/sub-app';
-  await navigator.subApps.add(same_origin_url);
-}, 'Same origin fully qualified URL.');
 
-subapps_test(async (t, mockSubAppsService) => {
-  await navigator.subApps.add('sub/app');
-}, 'Relative path.');
+  let subapp = {};
+  let install_options = {};
+  install_options["install_url"] = same_origin_url;
+  subapp[same_origin_url] = install_options;
 
-subapps_test(async (t, mockSubAppsService) => {
-  await navigator.subApps.add('/sub/app');
-}, 'Absolute path.');
+  await navigator.subApps.add(subapp);
+}, 'Add API call works.');
+
 
 </script>
diff --git a/third_party/blink/web_tests/fast/compositor-wheel-scroll-latching/animated-scroll/touchpad-scroll-impl-to-main.html b/third_party/blink/web_tests/fast/compositor-wheel-scroll-latching/animated-scroll/touchpad-scroll-impl-to-main.html
index e09ca389..6a59046 100644
--- a/third_party/blink/web_tests/fast/compositor-wheel-scroll-latching/animated-scroll/touchpad-scroll-impl-to-main.html
+++ b/third_party/blink/web_tests/fast/compositor-wheel-scroll-latching/animated-scroll/touchpad-scroll-impl-to-main.html
@@ -37,11 +37,12 @@
 div.addEventListener("wheel", changeStyleToScrollOnMain, {passive: true});
 
 promise_test(async () => {
-  const pixelsToScrollY = 500;
+  const expectedScrollY = 500;
+  const pixelsToScrollY = calculatePixelsToScroll(div, 0, expectedScrollY).y;
   const x = (rect.left + rect.right) / 2;
   const y = (rect.top + rect.bottom) / 2;
-  await percentBasedSmoothScroll(
-    pixelsToScrollY, x, y, GESTURE_SOURCE_TYPE, 'down', SPEED_INSTANT, div
+  await smoothScroll(
+    pixelsToScrollY, x, y, GESTURE_SOURCE_TYPE, 'down', SPEED_INSTANT
   );
   await waitForAnimationEndTimeBased(() => {
     return div.scrollTop;
diff --git a/third_party/blink/web_tests/fast/events/touch/touch-latched-scroll-node-removed.html b/third_party/blink/web_tests/fast/events/touch/touch-latched-scroll-node-removed.html
index 90265f90..b9b34c24 100644
--- a/third_party/blink/web_tests/fast/events/touch/touch-latched-scroll-node-removed.html
+++ b/third_party/blink/web_tests/fast/events/touch/touch-latched-scroll-node-removed.html
@@ -62,6 +62,7 @@
 
 promise_test( async () => {
   setUpForTest();
+  await waitForCompositorCommit();
   // Start scrolling on the child div and remove the div in the middle of
   // scrolling, then check that parentDiv have not scrolled.
   var x = (rect.left + rect.right) / 2;
@@ -69,6 +70,7 @@
   // Slow scrolling gives enough time to switch from cc to main.
   var pixels_per_sec = 100;
   await smoothScroll(400, x, y, GestureSourceType.TOUCH_INPUT, 'down', pixels_per_sec);
-  await waitFor( () => {return parentDiv.scrollTop === 0});
-}, "New node must start wheel scrolling when the latched node is removed.");
+  await conditionHolds( () => { return parentDiv.scrollTop === 0; },
+    "parentDiv has scrolled, which should not have!" );
+}, "New node must NOT start wheel scrolling when the latched node is removed.");
 </script>
diff --git a/third_party/blink/web_tests/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div.html b/third_party/blink/web_tests/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div.html
index 1847125..c3c23b27 100644
--- a/third_party/blink/web_tests/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div.html
+++ b/third_party/blink/web_tests/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div.html
@@ -10,43 +10,45 @@
 </div>
 
 <script>
+const SCROLL_TOP = isPercentBasedScrollingEnabled() ? pixelsPerTick() * 2 : 200;
+const SCROLL_LEFT = isPercentBasedScrollingEnabled() ? pixelsPerTick() : 100;
+const SOURCE = GestureSourceType.MOUSE_INPUT;
+const NUM_TICKS_X = SCROLL_LEFT / pixelsPerTick();
+const NUM_TICKS_Y = SCROLL_TOP / pixelsPerTick();
+const EXPECTED_WHEEL_DELTA_X = NUM_TICKS_X * LEGACY_MOUSE_WHEEL_TICK_MULTIPLIER;
+const EXPECTED_WHEEL_DELTA_Y = NUM_TICKS_Y * LEGACY_MOUSE_WHEEL_TICK_MULTIPLIER;
+
+let last_event = null;
 
 const overflowElement = document.getElementById("overflow");
-let last_event = null;
 overflowElement.addEventListener("mousewheel", mousewheelHandler, false);
 
+const { x: expectedScrollLeft, y: expectedScrollTop } = calculateExpectedScroll(
+  overflowElement, SCROLL_LEFT, SCROLL_TOP
+);
+
 function mousewheelHandler(e) {
     last_event = e;
 }
-const SOURCE = GestureSourceType.MOUSE_INPUT;
-
-const SCROLL_LEFT = 100;
-const SCROLL_TOP = 200;
-const PIXELS_TO_SCROLL = calculatePixelsToScroll(overflowElement, SCROLL_LEFT, SCROLL_TOP);
-const EXPECTED_WHEEL_DELTA_X = PIXELS_TO_SCROLL.x / pixelsPerTick() *
-                               LEGACY_MOUSE_WHEEL_TICK_MULTIPLIER * window.devicePixelRatio;
-const EXPECTED_WHEEL_DELTA_Y = PIXELS_TO_SCROLL.y / pixelsPerTick() *
-                               LEGACY_MOUSE_WHEEL_TICK_MULTIPLIER * window.devicePixelRatio;
 
 promise_test(async () => {
-    await percentBasedSmoothScroll(SCROLL_LEFT, 100, 110, SOURCE,
-                        'right', SPEED_INSTANT, overflowElement);
+    await smoothScroll(SCROLL_LEFT, 100, 110, SOURCE, 'right', SPEED_INSTANT);
     await waitForAnimationEndTimeBased(() => {
       return overflowElement.scrollLeft;
     });
-    assert_approx_equals(overflowElement.scrollLeft, SCROLL_LEFT, 0.2);
+    assert_approx_equals(overflowElement.scrollLeft, expectedScrollLeft, 0.001);
     assert_equals(last_event.wheelDeltaX, -Math.floor(EXPECTED_WHEEL_DELTA_X));
     assert_equals(last_event.wheelDelta, -Math.floor(EXPECTED_WHEEL_DELTA_X));
 
     last_event = null;
 
-    await percentBasedSmoothScroll(SCROLL_TOP, 100, 110, SOURCE, 'down',
-                        SPEED_INSTANT, overflowElement);
+    await smoothScroll(SCROLL_TOP, 100, 110, SOURCE, 'down', SPEED_INSTANT);
     await waitForAnimationEndTimeBased(() => {
       return overflowElement.scrollTop;
     });
-    assert_approx_equals(overflowElement.scrollTop, SCROLL_TOP, 0.2);
+    assert_approx_equals(overflowElement.scrollTop, expectedScrollTop, 0.001);
     assert_equals(last_event.wheelDeltaY, -Math.floor(EXPECTED_WHEEL_DELTA_Y));
     assert_equals(last_event.wheelDelta, -Math.floor(EXPECTED_WHEEL_DELTA_Y));
 }, 'This test checks the wheel delta value of wheel events, which should be the number of ticks multiplies the legacy mouse wheel tick multiplier.');
-</script>
+
+</script>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/fast/events/wheel/wheel-latched-scroll-node-removed.html b/third_party/blink/web_tests/fast/events/wheel/wheel-latched-scroll-node-removed.html
index 966a887..493f13d 100644
--- a/third_party/blink/web_tests/fast/events/wheel/wheel-latched-scroll-node-removed.html
+++ b/third_party/blink/web_tests/fast/events/wheel/wheel-latched-scroll-node-removed.html
@@ -62,6 +62,7 @@
 
 promise_test( async () => {
   setUpForTest();
+  await waitForCompositorCommit();
   // Start scrolling on the child div and remove the div in the middle of
   // scrolling, then check that parentDiv have not scrolled.
   var x = (rect.left + rect.right) / 2;
@@ -69,6 +70,7 @@
   // Slow scrolling gives enough time to switch from cc to main.
   var pixels_per_sec = 100;
   await smoothScroll(400, x, y, GestureSourceType.MOUSE_INPUT, 'down', pixels_per_sec);
-  await waitFor( () => {return parentDiv.scrollTop === 0});
-}, "New node must start wheel scrolling when the latched node is removed.");
+  await conditionHolds( () => { return parentDiv.scrollTop === 0; },
+    "parentDiv has scrolled, which should not have!" );
+}, "New node must NOT start wheel scrolling when the latched node is removed.");
 </script>
diff --git a/third_party/blink/web_tests/fast/events/wheel/wheelevent-in-scrolling-div.html b/third_party/blink/web_tests/fast/events/wheel/wheelevent-in-scrolling-div.html
index 4789ea11..5d2a66b 100644
--- a/third_party/blink/web_tests/fast/events/wheel/wheelevent-in-scrolling-div.html
+++ b/third_party/blink/web_tests/fast/events/wheel/wheelevent-in-scrolling-div.html
@@ -15,11 +15,12 @@
 
   // scroll diagonally for 1 tick.
   const SCROLL_AMOUNT = pixelsPerTick();
-  const PIXELS_TO_SCROLL = calculatePixelsToScroll(overflowElement, SCROLL_AMOUNT,
-                                                   SCROLL_AMOUNT).y;
-  const EXPECTED_WHEEL_DELTA = -PIXELS_TO_SCROLL / pixelsPerTick() *
-                                LEGACY_MOUSE_WHEEL_TICK_MULTIPLIER *
-                                window.devicePixelRatio;
+  const EXPECTED_DELTA = isPercentBasedScrollingEnabled() ?
+    WHEEL_DELTA : SCROLL_AMOUNT;
+
+  const { x: expectedScrollLeft, y: expectedScrollTop } = (
+    calculateExpectedScroll(overflowElement, SCROLL_AMOUNT, SCROLL_AMOUNT)
+  );
 
   var eventHandlerResolve;
   eventHandlerPromise = new Promise(function(resolve) {
@@ -30,8 +31,8 @@
     var x = overflowElement.offsetLeft + 5;
     var y = overflowElement.offsetTop + 5
     await mouseMoveTo(x, y);
-    await percentBasedSmoothScroll(SCROLL_AMOUNT, x, y, GestureSourceType.MOUSE_INPUT,
-      "downright", SPEED_INSTANT, overflowElement);
+    await smoothScroll(SCROLL_AMOUNT, x, y, GestureSourceType.MOUSE_INPUT,
+      "downright", SPEED_INSTANT);
     await waitForAnimationEndTimeBased(() => {
       return overflowElement.scrollTop;
     });
@@ -39,19 +40,20 @@
       return overflowElement.scrollLeft;
     });
 
-    assert_approx_equals(overflowElement.scrollTop, SCROLL_AMOUNT, 0.2);
-    assert_approx_equals(overflowElement.scrollLeft, SCROLL_AMOUNT, 0.2);
+    assert_approx_equals(overflowElement.scrollTop, expectedScrollTop, 0.001);
+    assert_approx_equals(overflowElement.scrollLeft, expectedScrollLeft, 0.001);
     // The test will timeout if the event handler doesn't resolve this promise.
     await eventHandlerPromise;
   });
 
   function mousewheelHandler(e) {
-    const approxeq = (a, b) => Math.abs(a-b) <= 0.2;
     // e.wheelDeltaX/Y is equal to number of ticks * 120. See kTickMultiplier
     // in src/third_party/blink/renderer/core/events/wheel_event.h
-    if (approxeq(e.wheelDeltaY, EXPECTED_WHEEL_DELTA) &&
-        approxeq(e.wheelDeltaX, EXPECTED_WHEEL_DELTA) &&
-        approxeq(e.wheelDelta, EXPECTED_WHEEL_DELTA)) {
+    if (e.deltaY == EXPECTED_DELTA && e.deltaX == EXPECTED_DELTA
+        && e.wheelDeltaY == -LEGACY_MOUSE_WHEEL_TICK_MULTIPLIER
+        && e.wheelDeltaX == -LEGACY_MOUSE_WHEEL_TICK_MULTIPLIER
+        && e.wheelDelta == -LEGACY_MOUSE_WHEEL_TICK_MULTIPLIER
+    ) {
       eventHandlerResolve();
     }
   }
diff --git a/third_party/blink/web_tests/fast/events/wheel/wheelevent-in-vertical-scrollbar-in-rtl.html b/third_party/blink/web_tests/fast/events/wheel/wheelevent-in-vertical-scrollbar-in-rtl.html
index 0694451..f56f77b 100644
--- a/third_party/blink/web_tests/fast/events/wheel/wheelevent-in-vertical-scrollbar-in-rtl.html
+++ b/third_party/blink/web_tests/fast/events/wheel/wheelevent-in-vertical-scrollbar-in-rtl.html
@@ -5,12 +5,18 @@
 <script src="../../../virtual/percent-based-scrolling/resources/percent-based-util.js"></script>
 <script>
   const pixelsToScroll1 = 10;
+  const { x: pixelsToScrollX1, y: pixelsToScrollY1 } = calculatePixelsToScroll(
+    document.scrollingElement, pixelsToScroll1, pixelsToScroll1
+  );
   const pixelsToScroll2 = 30;
+  const { x: pixelsToScrollX2, y: pixelsToScrollY2 } = calculatePixelsToScroll(
+    document.scrollingElement, pixelsToScroll2, pixelsToScroll2
+  );
   const testScrolls = [
-    {distance: pixelsToScroll1, expectedX: 110, expectedY: -100, direction: 'right'},
-    {distance: pixelsToScroll2, expectedX: 80, expectedY: -100, direction: 'left'},
-    {distance: pixelsToScroll1, expectedX: 80, expectedY: -90, direction: 'down'},
-    {distance: pixelsToScroll2, expectedX: 80, expectedY: -120, direction: 'up'},
+    {distance: pixelsToScrollX1, expectedX: 110, expectedY: -100, direction: 'right'},
+    {distance: pixelsToScrollX2, expectedX: 80, expectedY: -100, direction: 'left'},
+    {distance: pixelsToScrollY1, expectedX: 80, expectedY: -90, direction: 'down'},
+    {distance: pixelsToScrollY2, expectedX: 80, expectedY: -120, direction: 'up'},
   ];
   var currentTest = -1;
 
@@ -22,7 +28,7 @@
     var testCase = testScrolls[currentTest];
     promise_test(async () => {
       await mouseMoveTo(100, 100);
-      await percentBasedSmoothScroll(testCase.distance, 100, 100,
+      await smoothScroll(testCase.distance, 100, 100,
           GestureSourceType.MOUSE_INPUT, testCase.direction, SPEED_INSTANT);
       await waitForAnimationEndTimeBased(() => { return window.scrollX; });
       await waitForAnimationEndTimeBased(() => { return window.scrollY; });
diff --git a/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/mousewheel-scroll.html b/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/mousewheel-scroll.html
index b49bffe..f1b928c 100644
--- a/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/mousewheel-scroll.html
+++ b/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/mousewheel-scroll.html
@@ -11,6 +11,19 @@
 </style>
 
 <script>
+  function checkScrollValues(pixelsToScroll) {
+    const { x: expectedScrollLeft, y: expectedScrollTop} = (
+      calculateExpectedScroll(
+        document.scrollingElement, pixelsToScroll, pixelsToScroll
+      ));
+    assert_approx_equals(
+      document.scrollingElement.scrollTop, expectedScrollTop, 0.001
+    );
+    assert_approx_equals(
+      document.scrollingElement.scrollLeft, expectedScrollLeft, 0.001
+    );
+  }
+
   // Turn on smooth scrolling.
   internals.settings.setScrollAnimatorEnabled(true);
 
@@ -28,10 +41,10 @@
     await mouseMoveTo(x, y);
 
     // Scroll 3 ticks diagonally.
-    await percentBasedSmoothScroll(3 * pixelsPerTick() , x, y, source, 'downright',
+    await smoothScroll(3 * pixelsPerTick() , x, y, source, 'downright',
       SPEED_INSTANT);
     // Undo 2 ticks in each direction.
-    await percentBasedSmoothScroll(2 * pixelsPerTick(), x, y, source, 'upleft',
+    await smoothScroll(2 * pixelsPerTick(), x, y, source, 'upleft',
       SPEED_INSTANT);
 
     await waitForAnimationEndTimeBased(() => { return scroller.scrollTop; });
@@ -39,12 +52,11 @@
 
     // total scroll distance after scrolling actions above
     const pixelsToScroll = pixelsPerTick();
-    assert_approx_equals(scroller.scrollTop, pixelsToScroll, 0.4);
-    assert_approx_equals(scroller.scrollLeft, pixelsToScroll, 0.4);
+    checkScrollValues(pixelsToScroll);
 
     // Undo the last tick in each direction to reset the scroll state before
     // starting the second test.
-    await percentBasedSmoothScroll(1 * pixelsPerTick(), x, y, source, 'upleft',
+    await smoothScroll(1 * pixelsPerTick(), x, y, source, 'upleft',
       SPEED_INSTANT);
 
     await waitForAnimationEndTimeBased(() => { return scroller.scrollTop; });
@@ -61,19 +73,19 @@
     await mouseMoveTo(x, y);
 
     // Scroll down 3 ticks.
-    await percentBasedSmoothScroll(1 * pixelsPerTick(), x, y, source, 'down',
+    await smoothScroll(1 * pixelsPerTick(), x, y, source, 'down',
         SPEED_INSTANT);
-    await percentBasedSmoothScroll(2 * pixelsPerTick(), x, y, source, 'down',
+    await smoothScroll(2 * pixelsPerTick(), x, y, source, 'down',
         SPEED_INSTANT);
     // Scroll right 3 ticks.
-    await percentBasedSmoothScroll(1 * pixelsPerTick(), x, y, source, 'right',
+    await smoothScroll(1 * pixelsPerTick(), x, y, source, 'right',
         SPEED_INSTANT);
-    await percentBasedSmoothScroll(2 * pixelsPerTick(), x, y, source, 'right',
+    await smoothScroll(2 * pixelsPerTick(), x, y, source, 'right',
         SPEED_INSTANT);
     // Undo 1 tick in each direction.
-    await percentBasedSmoothScroll(1 * pixelsPerTick(), x, y, source, 'up',
+    await smoothScroll(1 * pixelsPerTick(), x, y, source, 'up',
         SPEED_INSTANT);
-    await percentBasedSmoothScroll(1 * pixelsPerTick(), x, y, source, 'left',
+    await smoothScroll(1 * pixelsPerTick(), x, y, source, 'left',
         SPEED_INSTANT);
 
     await waitForAnimationEndTimeBased(() => { return scroller.scrollTop; });
@@ -81,8 +93,7 @@
 
     // total scroll distance after scrolling actions above
     const pixelsToScroll = 2 * pixelsPerTick();
-    assert_approx_equals(scroller.scrollTop, pixelsToScroll, 0.6);
-    assert_approx_equals(scroller.scrollLeft, pixelsToScroll, 0.6);
+    checkScrollValues(pixelsToScroll);
   }, "This test ensures that consecutive mouse wheel ticks vertically or " +
       "horizontally scroll to the right offset. The main purpose of this " +
       "test is to ensure that smooth scrolling on the compositor works as " +
diff --git a/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/ongoing-smooth-scroll-anchors.html b/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/ongoing-smooth-scroll-anchors.html
index b5a19c4..be57f8c 100644
--- a/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/ongoing-smooth-scroll-anchors.html
+++ b/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/ongoing-smooth-scroll-anchors.html
@@ -22,7 +22,7 @@
 <div id="anchor"></div>
 
 <script>
-  var asyncTest = async_test("Verify smooth scroll interaction with scroll anchoring");
+  var asyncTest = async_test("Verify smooth scroll interaction with scroll anchroing");
 
   // The element that will change in height.
   var ch;
@@ -30,7 +30,9 @@
   // Initital scroll position.
   var initialY = 10;
   // Amount to smooth scroll by.
-  const userScrollY = 205;
+  const { y: userScrollY } = calculatePixelsToScroll(
+    document.scrollingElement, 0, 205
+  );
   // Amount to change the height of the element above the viewport.
   var changerY =  100;
   // End position: height of ch + userScroll.
@@ -53,7 +55,7 @@
     document.addEventListener("scroll", scrollListener);
 
     // Smooth scroll.
-    percentBasedSmoothScroll(userScrollY, 100, 100, source, 'down', SPEED_INSTANT);
+    smoothScroll(userScrollY, 100, 100, source, 'down', SPEED_INSTANT);
     await raf();
     document.getElementById('anchor').scrollIntoView();
   }
diff --git a/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/ongoing-smooth-scroll-vertical-rl-anchors.html b/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/ongoing-smooth-scroll-vertical-rl-anchors.html
index d13c9b6..a021f00 100644
--- a/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/ongoing-smooth-scroll-vertical-rl-anchors.html
+++ b/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/ongoing-smooth-scroll-vertical-rl-anchors.html
@@ -33,7 +33,9 @@
   var initialX = -10;
   var initialY = 0;
   // Amount to smooth scroll by.
-  const userScrollX = -205;
+  const { x: userScrollX } = calculatePixelsToScroll(
+    document.scrollingElement, -205, 0
+  );
   // Amount to change the height of the element above the viewport.
   var changerX = 100;
   // End position: height of ch + userScroll.
@@ -56,7 +58,7 @@
     document.addEventListener("scroll", scrollListener);
 
     // Smooth scroll.
-    percentBasedSmoothScroll(userScrollX, 100, 100, source, 'right', SPEED_INSTANT);
+    smoothScroll(userScrollX, 100, 100, source, 'right', SPEED_INSTANT);
     await raf();
     window.scrollTo(initialX, initialY);
   }
diff --git a/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/scroll-during-selection.html b/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/scroll-during-selection.html
index 1da0fc65..69c8184 100644
--- a/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/scroll-during-selection.html
+++ b/third_party/blink/web_tests/fast/scroll-behavior/smooth-scroll/scroll-during-selection.html
@@ -29,14 +29,17 @@
       await mouseMoveTo(40, 20);
 
       // Scroll before releasing the mouse.
-      const pixelsToScrollY = 40;
-      await percentBasedSmoothScroll(
+      const expectedScrollY = 40;
+      const { y: pixelsToScrollY } = calculatePixelsToScroll(
+        document.scrollingElement, 0, expectedScrollY
+      );
+      await smoothScroll(
         pixelsToScrollY, 40, 20, GestureSourceType.MOUSE_INPUT, 'down',
         SPEED_INSTANT
       );
       await waitForAnimationEndTimeBased(() => { return window.scrollY; });
       // Windows and Linux values appear to be slightly different
-      assert_approx_equals(window.scrollY, pixelsToScrollY, 0.5);
+      assert_approx_equals(window.scrollY, expectedScrollY, 0.5);
   }, "This test verifies that text selection does not prevent smooth " +
     "scrolls running on the main thread.");
 </script>
diff --git a/third_party/blink/web_tests/fast/scrolling/inertial-scrolling-with-pointer-events-none-overlay.html b/third_party/blink/web_tests/fast/scrolling/inertial-scrolling-with-pointer-events-none-overlay.html
new file mode 100644
index 0000000..3091b891e
--- /dev/null
+++ b/third_party/blink/web_tests/fast/scrolling/inertial-scrolling-with-pointer-events-none-overlay.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<script src="../../resources/testdriver.js"></script>
+<script src="../../resources/testdriver-actions.js"></script>
+<script src="../../resources/testdriver-vendor.js"></script>
+<script src="../../resources/gesture-util.js"></script>
+
+<style>
+#container {
+  width: 400px;
+  height: 400px;
+  overflow: auto;
+}
+
+#inner {
+  height: 3000px;
+  background-color: #eee;
+}
+
+#overlay {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  pointer-events: none;
+}
+
+p {
+ margin: 0;
+ padding: 1000px 0;
+}
+</style>
+
+<body style="margin:0" onload=runTest()>
+  <div id="container">
+    <div id="inner"></div>    
+  </div>
+  <div id="overlay"></div>
+</body>
+
+<script>
+const container = document.getElementById('container');
+const inner = document.getElementById('inner');
+
+const update = () => inner.innerHTML = '<p>Content</p>';
+setInterval(update, 200);
+
+function runTest() {
+  promise_test (async (t) => {
+    const pixels_to_scroll = 100;
+    const start_x = 200;
+    const start_y = 200;
+    const speed_in_pixels_s = 900;
+
+    await waitForCompositorCommit();
+    await swipe(pixels_to_scroll, start_x, start_y, 'up', speed_in_pixels_s);
+    await waitForAnimationEndTimeBased(() => { return container.scrollTop; });
+    assert_greater_than(container.scrollTop, pixels_to_scroll, 
+      "container should scroll at least 100 pixels, which is the length of the swipe.");
+
+    const scroll_top_previous_value = container.scrollTop;
+
+    await waitForCompositorCommit();
+    await swipe(pixels_to_scroll, start_x, start_y, 'up', speed_in_pixels_s);
+    await waitForAnimationEndTimeBased(() => { return container.scrollTop; });
+    assert_greater_than(container.scrollTop, scroll_top_previous_value + pixels_to_scroll);
+  }, "Make sure inertial scrolling is not broken with pointer-events:none overlay.");
+}
+</script>
diff --git a/third_party/blink/web_tests/fast/scrolling/scroll-in-scaled-page-with-overflow-hidden.html b/third_party/blink/web_tests/fast/scrolling/scroll-in-scaled-page-with-overflow-hidden.html
index ada5234..d9d5560 100644
--- a/third_party/blink/web_tests/fast/scrolling/scroll-in-scaled-page-with-overflow-hidden.html
+++ b/third_party/blink/web_tests/fast/scrolling/scroll-in-scaled-page-with-overflow-hidden.html
@@ -37,8 +37,11 @@
       // be scrolled programmatically).
       assert_equals(window.visualViewport.pageTop, 0);
 
-      await percentBasedSmoothScroll(
-        700, 100, 100, MOUSE_INPUT, 'down', SPEED_INSTANT
+      const { y: pixelsToScrollY } = calculatePixelsToScroll(
+        document.scrollingElement, 0, 700
+      );
+      await smoothScroll(
+        pixelsToScrollY, 100, 100, MOUSE_INPUT, 'down', SPEED_INSTANT
       );
       await waitForAnimationEndTimeBased(() => {
         return window.visualViewport.pageTop;
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/android/fullscreen/video-overlay-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/android/fullscreen/video-overlay-scroll-expected.txt
deleted file mode 100644
index 206d7e9..0000000
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/android/fullscreen/video-overlay-scroll-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutFlexibleBox DIV class='sizing-small phase-pre-ready state-no-source use-default-poster'",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#333333"
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div-expected.txt b/third_party/blink/web_tests/flag-specific/highdpi/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div-expected.txt
new file mode 100644
index 0000000..2847f29
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL This test checks the wheel delta value of wheel events, which should be the number of ticks multiplies the legacy mouse wheel tick multiplier. assert_equals: expected -226 but got -339
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/virtual/android/fullscreen/video-fail-to-enter-full-screen-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/virtual/android/fullscreen/video-fail-to-enter-full-screen-expected.png
deleted file mode 100644
index ad6a4f63..0000000
--- a/third_party/blink/web_tests/flag-specific/highdpi/virtual/android/fullscreen/video-fail-to-enter-full-screen-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/virtual/android/fullscreen/video-overlay-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/highdpi/virtual/android/fullscreen/video-overlay-scroll-expected.txt
deleted file mode 100644
index e0510c6..0000000
--- a/third_party/blink/web_tests/flag-specific/highdpi/virtual/android/fullscreen/video-overlay-scroll-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutNGFlexibleBox DIV class='sizing-small phase-pre-ready state-no-source use-default-poster'",
-      "bounds": [1200, 900],
-      "contentsOpaque": true,
-      "backgroundColor": "#333333"
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/virtual/compositor-threaded-percent-based-scrolling/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div-expected.txt b/third_party/blink/web_tests/flag-specific/highdpi/virtual/compositor-threaded-percent-based-scrolling/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div-expected.txt
new file mode 100644
index 0000000..11138ee0
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/highdpi/virtual/compositor-threaded-percent-based-scrolling/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL This test checks the wheel delta value of wheel events, which should be the number of ticks multiplies the legacy mouse wheel tick multiplier. assert_approx_equals: expected 9.250000000000002 +/- 0.001 but got 9.266667366027832
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/virtual/main-threaded-percent-based-scrolling/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div-expected.txt b/third_party/blink/web_tests/flag-specific/highdpi/virtual/main-threaded-percent-based-scrolling/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div-expected.txt
new file mode 100644
index 0000000..11138ee0
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/highdpi/virtual/main-threaded-percent-based-scrolling/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL This test checks the wheel delta value of wheel events, which should be the number of ticks multiplies the legacy mouse wheel tick multiplier. assert_approx_equals: expected 9.250000000000002 +/- 0.001 but got 9.266667366027832
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/flag-specific/skia-vulkan-swiftshader/virtual/android/fullscreen/video-fail-to-enter-full-screen-expected.png b/third_party/blink/web_tests/flag-specific/skia-vulkan-swiftshader/virtual/android/fullscreen/video-fail-to-enter-full-screen-expected.png
deleted file mode 100644
index 92b38a37..0000000
--- a/third_party/blink/web_tests/flag-specific/skia-vulkan-swiftshader/virtual/android/fullscreen/video-fail-to-enter-full-screen-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html b/third_party/blink/web_tests/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html
index d8a5b0a..d1e83fa8 100644
--- a/third_party/blink/web_tests/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html
+++ b/third_party/blink/web_tests/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html
@@ -24,10 +24,7 @@
     logRects('handler');
 
     waitForEvent(document, 'webkitfullscreenchange', function() {
-        if (internals.runtimeFlags.forceOverlayFullscreenVideoEnabled)
-            consoleWrite("Should report no rect or another rect which is not on the document");
-        else
-            consoleWrite("Should keep rect on document");
+        consoleWrite("Should keep rect on document");
         logRects('handler');
         if (JSON.parse(internals.layerTreeAsText(document)).layers.find(
             layer => layer.name.includes("LayoutVideo")))
diff --git a/third_party/blink/web_tests/fullscreen/video-controls-timeline.html b/third_party/blink/web_tests/fullscreen/video-controls-timeline.html
index f458c18..3d4ac12 100644
--- a/third_party/blink/web_tests/fullscreen/video-controls-timeline.html
+++ b/third_party/blink/web_tests/fullscreen/video-controls-timeline.html
@@ -1,10 +1,6 @@
 <body>
     <p>This tests that the video element's timeline controls are draggable in full screen.  Press any key to continue.</p>
     <video id="video" width="300" controls></video>
-    <script>
-        if (window.internals)
-            runPixelTests = internals.runtimeFlags.forceOverlayFullscreenVideoEnabled;
-    </script>
     <script src="full-screen-test.js"></script>
     <script src="../media/media-controls.js"></script>
     <script>
diff --git a/third_party/blink/web_tests/fullscreen/video-fail-to-enter-full-screen.html b/third_party/blink/web_tests/fullscreen/video-fail-to-enter-full-screen.html
index 55c0eedc..3c1df32 100644
--- a/third_party/blink/web_tests/fullscreen/video-fail-to-enter-full-screen.html
+++ b/third_party/blink/web_tests/fullscreen/video-fail-to-enter-full-screen.html
@@ -1,10 +1,6 @@
 <!DOCTYPE html>
 <p>This tests that the video should not be rendered in full screen if requestFullScreen() fails.</p>
 <video id="video" width="300"></video>
-<script>
-    if (window.internals)
-      runPixelTests = internals.runtimeFlags.forceOverlayFullscreenVideoEnabled;
-</script>
 <script src="full-screen-test.js"></script>
 <script src="../media/media-controls.js"></script>
 <script>
diff --git a/third_party/blink/web_tests/fullscreen/video-specified-size.html b/third_party/blink/web_tests/fullscreen/video-specified-size.html
index 3a60f7f5..c44e462 100644
--- a/third_party/blink/web_tests/fullscreen/video-specified-size.html
+++ b/third_party/blink/web_tests/fullscreen/video-specified-size.html
@@ -1,9 +1,5 @@
 <body>
     <video id="video" width="300" controls></video>
-    <script>
-        if (window.internals)
-            runPixelTests = internals.runtimeFlags.forceOverlayFullscreenVideoEnabled;
-    </script>
     <script src="full-screen-test.js"></script>
     <script src=../media/media-file.js></script>
     <script>
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/invalidation/host-pseudo-class-in-has-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/invalidation/host-pseudo-class-in-has-expected.txt
deleted file mode 100644
index 5230719..0000000
--- a/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/invalidation/host-pseudo-class-in-has-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-This is a testharness.js-based test.
-PASS Before adding 'a' to #host_parent: Check #subject1 color
-PASS Before adding 'a' to #host_parent: Check #subject2 color
-FAIL After adding 'a' to #host_parent: Check #subject1 color assert_equals: expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
-FAIL After adding 'a' to #host_parent: Check #subject2 color assert_equals: expected "rgb(0, 0, 255)" but got "rgb(255, 0, 0)"
-PASS After removing 'a' from #host_parent: Check #subject1 color
-PASS After removing 'a' from #host_parent: Check #subject2 color
-FAIL After adding 'a' to #host: Check #subject1 color assert_equals: expected "rgb(154, 205, 50)" but got "rgb(255, 0, 0)"
-FAIL After adding 'a' to #host: Check #subject2 color assert_equals: expected "rgb(135, 206, 235)" but got "rgb(255, 0, 0)"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/invalidation/is-pseudo-containing-complex-in-has-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/invalidation/is-pseudo-containing-complex-in-has-expected.txt
index 221527e..686effd 100644
--- a/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/invalidation/is-pseudo-containing-complex-in-has-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/invalidation/is-pseudo-containing-complex-in-has-expected.txt
@@ -1,9 +1,9 @@
 This is a testharness.js-based test.
-Found 476 tests; 418 PASS, 58 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 476 tests; 470 PASS, 6 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS [ .red:has(#descendant:is(.a_has_scope .b)) ] #has_scope.classList.add('red') : check matches (false)
 PASS [ .red:has(#descendant:is(.a_has_scope .b)) ] #has_scope.classList.add('red') : check #has_scope color
 PASS [ .red:has(#descendant:is(.a_has_scope .b)) ] #parent.classList.add('a_has_scope') : check matches (true)
-FAIL [ .red:has(#descendant:is(.a_has_scope .b)) ] #parent.classList.add('a_has_scope') : check #has_scope color assert_equals: expected "rgb(255, 0, 0)" but got "rgb(128, 128, 128)"
+PASS [ .red:has(#descendant:is(.a_has_scope .b)) ] #parent.classList.add('a_has_scope') : check #has_scope color
 PASS [ .red:has(#descendant:is(.a_has_scope .b)) ] #parent.classList.remove('a_has_scope') : check matches (false)
 PASS [ .red:has(#descendant:is(.a_has_scope .b)) ] #parent.classList.remove('a_has_scope') : check #has_scope color
 PASS [ .red:has(#descendant:is(.a_has_scope .b)) ] #has_scope.classList.add('a_has_scope') : check matches (true)
@@ -19,7 +19,7 @@
 PASS [ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #has_scope.classList.add('orangered') : check matches (false)
 PASS [ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #has_scope.classList.add('orangered') : check #descendant color
 PASS [ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #parent.classList.add('a_descendant') : check matches (true)
-FAIL [ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #parent.classList.add('a_descendant') : check #descendant color assert_equals: expected "rgb(255, 69, 0)" but got "rgb(128, 128, 128)"
+PASS [ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #parent.classList.add('a_descendant') : check #descendant color
 PASS [ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #parent.classList.remove('a_descendant') : check matches (false)
 PASS [ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #parent.classList.remove('a_descendant') : check #descendant color
 PASS [ .orangered:has(#descendant:is(.a_descendant .b)) #descendant ] #has_scope.classList.add('a_descendant') : check matches (true)
@@ -35,7 +35,7 @@
 PASS [ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.add('darkred') : check matches (false)
 PASS [ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.add('darkred') : check #indirect_next color
 PASS [ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.add('a_indirect_next') : check matches (true)
-FAIL [ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.add('a_indirect_next') : check #indirect_next color assert_equals: expected "rgb(139, 0, 0)" but got "rgb(128, 128, 128)"
+PASS [ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.add('a_indirect_next') : check #indirect_next color
 PASS [ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.remove('a_indirect_next') : check matches (false)
 PASS [ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.remove('a_indirect_next') : check #indirect_next color
 PASS [ .darkred:has(#descendant:is(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.add('a_indirect_next') : check matches (true)
@@ -51,7 +51,7 @@
 PASS [ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('pink') : check matches (false)
 PASS [ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('pink') : check #indirect_next_child color
 PASS [ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('a_indirect_next_child') : check matches (true)
-FAIL [ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('a_indirect_next_child') : check #indirect_next_child color assert_equals: expected "rgb(255, 192, 203)" but got "rgb(128, 128, 128)"
+PASS [ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('a_indirect_next_child') : check #indirect_next_child color
 PASS [ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.remove('a_indirect_next_child') : check matches (false)
 PASS [ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.remove('a_indirect_next_child') : check #indirect_next_child color
 PASS [ .pink:has(#descendant:is(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('a_indirect_next_child') : check matches (true)
@@ -67,15 +67,15 @@
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #has_scope.classList.add('green') : check matches (false)
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #has_scope.classList.add('green') : check #has_scope color
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.add('c_has_scope') : check matches (true)
-FAIL [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.add('c_has_scope') : check #has_scope color assert_equals: expected "rgb(0, 128, 0)" but got "rgb(128, 128, 128)"
+PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.add('c_has_scope') : check #has_scope color
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (insertion) check #has_scope color
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
-FAIL [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (removal) check #has_scope color assert_equals: expected "rgb(0, 128, 0)" but got "rgb(128, 128, 128)"
+PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (removal) check #has_scope color
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.remove('c_has_scope') : check matches (false)
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.remove('c_has_scope') : check #has_scope color
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (insertion) check matches (true)
-FAIL [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (insertion) check #has_scope color assert_equals: expected "rgb(0, 128, 0)" but got "rgb(128, 128, 128)"
+PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (insertion) check #has_scope color
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (removal) check matches (false)
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (removal) check #has_scope color
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #previous.classList.add('c_has_scope') : check matches (true)
@@ -83,11 +83,11 @@
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (insertion) check matches (false)
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (insertion) check #has_scope color
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (removal) check matches (true)
-FAIL [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (removal) check #has_scope color assert_equals: expected "rgb(0, 128, 0)" but got "rgb(128, 128, 128)"
+PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (removal) check #has_scope color
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #previous.classList.remove('c_has_scope') : check matches (false)
-PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #previous.classList.remove('c_has_scope') : check #has_scope color
+FAIL [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #previous.classList.remove('c_has_scope') : check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 128, 0)"
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (insertion) check matches (true)
-FAIL [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (insertion) check #has_scope color assert_equals: expected "rgb(0, 128, 0)" but got "rgb(128, 128, 128)"
+PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (insertion) check #has_scope color
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (removal) check matches (false)
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (removal) check #has_scope color
 PASS [ .green:has(#descendant:is(.p + .c_has_scope ~ .d .e)) ] #child_previous.classList.add('c_has_scope') : check matches (true)
@@ -107,27 +107,27 @@
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #has_scope.classList.add('lightgreen') : check matches (false)
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #has_scope.classList.add('lightgreen') : check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.add('c_descendant') : check matches (true)
-FAIL [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.add('c_descendant') : check #descendant color assert_equals: expected "rgb(144, 238, 144)" but got "rgb(128, 128, 128)"
+PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.add('c_descendant') : check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (insertion) check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
-FAIL [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check #descendant color assert_equals: expected "rgb(144, 238, 144)" but got "rgb(128, 128, 128)"
+PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.remove('c_descendant') : check matches (false)
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.remove('c_descendant') : check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (insertion) check matches (true)
-FAIL [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (insertion) check #descendant color assert_equals: expected "rgb(144, 238, 144)" but got "rgb(128, 128, 128)"
+PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (insertion) check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (removal) check matches (false)
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (removal) check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.add('c_descendant') : check matches (true)
-FAIL [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.add('c_descendant') : check #descendant color assert_equals: expected "rgb(144, 238, 144)" but got "rgb(128, 128, 128)"
+PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.add('c_descendant') : check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (insertion) check matches (false)
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (insertion) check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (removal) check matches (true)
-FAIL [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (removal) check #descendant color assert_equals: expected "rgb(144, 238, 144)" but got "rgb(128, 128, 128)"
+PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (removal) check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.remove('c_descendant') : check matches (false)
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.remove('c_descendant') : check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (insertion) check matches (true)
-FAIL [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (insertion) check #descendant color assert_equals: expected "rgb(144, 238, 144)" but got "rgb(128, 128, 128)"
+PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (insertion) check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (removal) check matches (false)
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (removal) check #descendant color
 PASS [ .lightgreen:has(#descendant:is(.p + .c_descendant ~ .d .e)) #descendant ] #child_previous.classList.add('c_descendant') : check matches (true)
@@ -147,15 +147,15 @@
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #has_scope.classList.add('darkgreen') : check matches (false)
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #has_scope.classList.add('darkgreen') : check #indirect_next color
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.add('c_indirect_next') : check matches (true)
-FAIL [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.add('c_indirect_next') : check #indirect_next color assert_equals: expected "rgb(0, 100, 0)" but got "rgb(128, 128, 128)"
+PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.add('c_indirect_next') : check #indirect_next color
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (insertion) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
-FAIL [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next color assert_equals: expected "rgb(0, 100, 0)" but got "rgb(128, 128, 128)"
+PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.remove('c_indirect_next') : check matches (false)
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.remove('c_indirect_next') : check #indirect_next color
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (insertion) check matches (true)
-FAIL [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (insertion) check #indirect_next color assert_equals: expected "rgb(0, 100, 0)" but got "rgb(128, 128, 128)"
+PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (insertion) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (removal) check matches (false)
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (removal) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #previous.classList.add('c_indirect_next') : check matches (true)
@@ -163,11 +163,11 @@
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (insertion) check matches (false)
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (insertion) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check matches (true)
-FAIL [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check #indirect_next color assert_equals: expected "rgb(0, 100, 0)" but got "rgb(128, 128, 128)"
+PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #previous.classList.remove('c_indirect_next') : check matches (false)
-PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #previous.classList.remove('c_indirect_next') : check #indirect_next color
+FAIL [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #previous.classList.remove('c_indirect_next') : check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 100, 0)"
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (insertion) check matches (true)
-FAIL [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (insertion) check #indirect_next color assert_equals: expected "rgb(0, 100, 0)" but got "rgb(128, 128, 128)"
+PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (insertion) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (removal) check matches (false)
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (removal) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:is(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #child_previous.classList.add('c_indirect_next') : check matches (true)
@@ -187,15 +187,15 @@
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('yellowgreen') : check matches (false)
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('yellowgreen') : check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('c_indirect_next_child') : check matches (true)
-FAIL [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('c_indirect_next_child') : check #indirect_next_child color assert_equals: expected "rgb(154, 205, 50)" but got "rgb(128, 128, 128)"
+PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('c_indirect_next_child') : check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (insertion) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
-FAIL [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next_child color assert_equals: expected "rgb(154, 205, 50)" but got "rgb(128, 128, 128)"
+PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.remove('c_indirect_next_child') : check matches (false)
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.remove('c_indirect_next_child') : check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (insertion) check matches (true)
-FAIL [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (insertion) check #indirect_next_child color assert_equals: expected "rgb(154, 205, 50)" but got "rgb(128, 128, 128)"
+PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (insertion) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (removal) check matches (false)
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (removal) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #previous.classList.add('c_indirect_next_child') : check matches (true)
@@ -203,11 +203,11 @@
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (insertion) check matches (false)
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (insertion) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check matches (true)
-FAIL [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check #indirect_next_child color assert_equals: expected "rgb(154, 205, 50)" but got "rgb(128, 128, 128)"
+PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('c_indirect_next_child') : check matches (false)
-PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('c_indirect_next_child') : check #indirect_next_child color
+FAIL [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('c_indirect_next_child') : check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(154, 205, 50)"
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (insertion) check matches (true)
-FAIL [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (insertion) check #indirect_next_child color assert_equals: expected "rgb(154, 205, 50)" but got "rgb(128, 128, 128)"
+PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (insertion) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (removal) check matches (false)
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (removal) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:is(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #child_previous.classList.add('c_indirect_next_child') : check matches (true)
@@ -227,15 +227,15 @@
 PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #has_scope.classList.add('blue') : check matches (false)
 PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #has_scope.classList.add('blue') : check #has_scope color
 PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #previous.classList.add('f_has_scope') : check matches (true)
-FAIL [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #previous.classList.add('f_has_scope') : check #has_scope color assert_equals: expected "rgb(0, 0, 255)" but got "rgb(128, 128, 128)"
+PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #previous.classList.add('f_has_scope') : check #has_scope color
 PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #previous) : (insertion) check matches (false)
 PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #previous) : (insertion) check #has_scope color
 PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #previous) : (removal) check matches (true)
-FAIL [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #previous) : (removal) check #has_scope color assert_equals: expected "rgb(0, 0, 255)" but got "rgb(128, 128, 128)"
+PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .invalid before #previous) : (removal) check #has_scope color
 PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #previous.classList.remove('f_has_scope') : check matches (false)
 PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #previous.classList.remove('f_has_scope') : check #has_scope color
 PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (insertion) check matches (true)
-FAIL [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (insertion) check #has_scope color assert_equals: expected "rgb(0, 0, 255)" but got "rgb(128, 128, 128)"
+PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (insertion) check #has_scope color
 PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (removal) check matches (false)
 PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (removal) check #has_scope color
 PASS [ .blue:has(~ #indirect_next:is(.p + .f_has_scope ~ .g)) ] #has_scope.classList.add('f_has_scope') : check matches (true)
@@ -259,15 +259,15 @@
 PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.add('skyblue') : check matches (false)
 PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.add('skyblue') : check #descendant color
 PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.add('f_descendant') : check matches (true)
-FAIL [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.add('f_descendant') : check #descendant color assert_equals: expected "rgb(135, 206, 235)" but got "rgb(128, 128, 128)"
+PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.add('f_descendant') : check #descendant color
 PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #previous) : (insertion) check matches (false)
 PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #previous) : (insertion) check #descendant color
 PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #previous) : (removal) check matches (true)
-FAIL [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #previous) : (removal) check #descendant color assert_equals: expected "rgb(135, 206, 235)" but got "rgb(128, 128, 128)"
+PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .invalid before #previous) : (removal) check #descendant color
 PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.remove('f_descendant') : check matches (false)
 PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.remove('f_descendant') : check #descendant color
 PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (insertion) check matches (true)
-FAIL [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (insertion) check #descendant color assert_equals: expected "rgb(135, 206, 235)" but got "rgb(128, 128, 128)"
+PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (insertion) check #descendant color
 PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (removal) check matches (false)
 PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (removal) check #descendant color
 PASS [ .skyblue:has(~ #indirect_next:is(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.add('f_descendant') : check matches (true)
@@ -291,15 +291,15 @@
 PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.add('lightblue') : check matches (false)
 PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.add('lightblue') : check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.add('f_indirect_next') : check matches (true)
-FAIL [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.add('f_indirect_next') : check #indirect_next color assert_equals: expected "rgb(173, 216, 230)" but got "rgb(128, 128, 128)"
+PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.add('f_indirect_next') : check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (insertion) check matches (false)
 PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (insertion) check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check matches (true)
-FAIL [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check #indirect_next color assert_equals: expected "rgb(173, 216, 230)" but got "rgb(128, 128, 128)"
+PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.remove('f_indirect_next') : check matches (false)
 PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.remove('f_indirect_next') : check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (insertion) check matches (true)
-FAIL [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (insertion) check #indirect_next color assert_equals: expected "rgb(173, 216, 230)" but got "rgb(128, 128, 128)"
+PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (insertion) check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (removal) check matches (false)
 PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (removal) check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:is(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.add('f_indirect_next') : check matches (true)
@@ -323,15 +323,15 @@
 PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('darkblue') : check matches (false)
 PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('darkblue') : check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.add('f_indirect_next_child') : check matches (true)
-FAIL [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.add('f_indirect_next_child') : check #indirect_next_child color assert_equals: expected "rgb(0, 0, 139)" but got "rgb(128, 128, 128)"
+PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.add('f_indirect_next_child') : check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (insertion) check matches (false)
 PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (insertion) check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check matches (true)
-FAIL [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check #indirect_next_child color assert_equals: expected "rgb(0, 0, 139)" but got "rgb(128, 128, 128)"
+PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('f_indirect_next_child') : check matches (false)
 PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('f_indirect_next_child') : check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (insertion) check matches (true)
-FAIL [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (insertion) check #indirect_next_child color assert_equals: expected "rgb(0, 0, 139)" but got "rgb(128, 128, 128)"
+PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (insertion) check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (removal) check matches (false)
 PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (removal) check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:is(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('f_indirect_next_child') : check matches (true)
@@ -355,7 +355,7 @@
 PASS [ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #has_scope.classList.add('yellow') : check matches (false)
 PASS [ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #has_scope.classList.add('yellow') : check #has_scope color
 PASS [ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #parent.classList.add('h_has_scope') : check matches (true)
-FAIL [ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #parent.classList.add('h_has_scope') : check #has_scope color assert_equals: expected "rgb(255, 255, 0)" but got "rgb(128, 128, 128)"
+PASS [ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #parent.classList.add('h_has_scope') : check #has_scope color
 PASS [ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #parent.classList.remove('h_has_scope') : check matches (false)
 PASS [ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #parent.classList.remove('h_has_scope') : check #has_scope color
 PASS [ .yellow:has(~ #indirect_next:is(.h_has_scope .i)) ] #has_scope.classList.remove('yellow') : check matches (false)
@@ -363,7 +363,7 @@
 PASS [ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #has_scope.classList.add('ivory') : check matches (false)
 PASS [ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #has_scope.classList.add('ivory') : check #descendant color
 PASS [ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #parent.classList.add('h_descendant') : check matches (true)
-FAIL [ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #parent.classList.add('h_descendant') : check #descendant color assert_equals: expected "rgb(255, 255, 240)" but got "rgb(128, 128, 128)"
+PASS [ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #parent.classList.add('h_descendant') : check #descendant color
 PASS [ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #parent.classList.remove('h_descendant') : check matches (false)
 PASS [ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #parent.classList.remove('h_descendant') : check #descendant color
 PASS [ .ivory:has(~ #indirect_next:is(.h_descendant .i)) #descendant ] #has_scope.classList.remove('ivory') : check matches (false)
@@ -371,7 +371,7 @@
 PASS [ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #has_scope.classList.add('greenyellow') : check matches (false)
 PASS [ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #has_scope.classList.add('greenyellow') : check #indirect_next color
 PASS [ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.add('h_indirect_next') : check matches (true)
-FAIL [ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.add('h_indirect_next') : check #indirect_next color assert_equals: expected "rgb(173, 255, 47)" but got "rgb(128, 128, 128)"
+PASS [ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.add('h_indirect_next') : check #indirect_next color
 PASS [ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.remove('h_indirect_next') : check matches (false)
 PASS [ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.remove('h_indirect_next') : check #indirect_next color
 PASS [ .greenyellow:has(~ #indirect_next:is(.h_indirect_next .i)) ~ #indirect_next ] #has_scope.classList.remove('greenyellow') : check matches (false)
@@ -379,7 +379,7 @@
 PASS [ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('khaki') : check matches (false)
 PASS [ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('khaki') : check #indirect_next_child color
 PASS [ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('h_indirect_next_child') : check matches (true)
-FAIL [ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('h_indirect_next_child') : check #indirect_next_child color assert_equals: expected "rgb(240, 230, 140)" but got "rgb(128, 128, 128)"
+PASS [ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('h_indirect_next_child') : check #indirect_next_child color
 PASS [ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.remove('h_indirect_next_child') : check matches (false)
 PASS [ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.remove('h_indirect_next_child') : check #indirect_next_child color
 PASS [ .khaki:has(~ #indirect_next:is(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('khaki') : check matches (false)
@@ -387,15 +387,15 @@
 PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #has_scope.classList.add('purple') : check matches (false)
 PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #has_scope.classList.add('purple') : check #has_scope color
 PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.add('j_has_scope') : check matches (true)
-FAIL [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.add('j_has_scope') : check #has_scope color assert_equals: expected "rgb(128, 0, 128)" but got "rgb(128, 128, 128)"
+PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.add('j_has_scope') : check #has_scope color
 PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
 PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (insertion) check #has_scope color
 PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
-FAIL [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (removal) check #has_scope color assert_equals: expected "rgb(128, 0, 128)" but got "rgb(128, 128, 128)"
+PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (removal) check #has_scope color
 PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.remove('j_has_scope') : check matches (false)
 PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.remove('j_has_scope') : check #has_scope color
 PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (insertion) check matches (true)
-FAIL [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (insertion) check #has_scope color assert_equals: expected "rgb(128, 0, 128)" but got "rgb(128, 128, 128)"
+PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (insertion) check #has_scope color
 PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (removal) check matches (false)
 PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (removal) check #has_scope color
 PASS [ .purple:has(~ #indirect_next:is(.p + .j_has_scope ~ .k .l)) ] #has_scope.classList.remove('purple') : check matches (false)
@@ -403,15 +403,15 @@
 PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #has_scope.classList.add('violet') : check matches (false)
 PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #has_scope.classList.add('violet') : check #descendant color
 PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.add('j_descendant') : check matches (true)
-FAIL [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.add('j_descendant') : check #descendant color assert_equals: expected "rgb(238, 130, 238)" but got "rgb(128, 128, 128)"
+PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.add('j_descendant') : check #descendant color
 PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
 PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (insertion) check #descendant color
 PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
-FAIL [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check #descendant color assert_equals: expected "rgb(238, 130, 238)" but got "rgb(128, 128, 128)"
+PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check #descendant color
 PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.remove('j_descendant') : check matches (false)
 PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.remove('j_descendant') : check #descendant color
 PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (insertion) check matches (true)
-FAIL [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (insertion) check #descendant color assert_equals: expected "rgb(238, 130, 238)" but got "rgb(128, 128, 128)"
+PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (insertion) check #descendant color
 PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (removal) check matches (false)
 PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (removal) check #descendant color
 PASS [ .violet:has(~ #indirect_next:is(.p + .j_descendant ~ .k .l)) #descendant ] #has_scope.classList.remove('violet') : check matches (false)
@@ -419,15 +419,15 @@
 PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #has_scope.classList.add('orchid') : check matches (false)
 PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #has_scope.classList.add('orchid') : check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.add('j_indirect_next') : check matches (true)
-FAIL [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.add('j_indirect_next') : check #indirect_next color assert_equals: expected "rgb(218, 112, 214)" but got "rgb(128, 128, 128)"
+PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.add('j_indirect_next') : check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
 PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (insertion) check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
-FAIL [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next color assert_equals: expected "rgb(218, 112, 214)" but got "rgb(128, 128, 128)"
+PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.remove('j_indirect_next') : check matches (false)
 PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.remove('j_indirect_next') : check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (insertion) check matches (true)
-FAIL [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (insertion) check #indirect_next color assert_equals: expected "rgb(218, 112, 214)" but got "rgb(128, 128, 128)"
+PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (insertion) check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (removal) check matches (false)
 PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (removal) check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:is(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #has_scope.classList.remove('orchid') : check matches (false)
@@ -435,15 +435,15 @@
 PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('plum') : check matches (false)
 PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('plum') : check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('j_indirect_next_child') : check matches (true)
-FAIL [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('j_indirect_next_child') : check #indirect_next_child color assert_equals: expected "rgb(221, 160, 221)" but got "rgb(128, 128, 128)"
+PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('j_indirect_next_child') : check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (insertion) check matches (false)
 PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (insertion) check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check matches (true)
-FAIL [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next_child color assert_equals: expected "rgb(221, 160, 221)" but got "rgb(128, 128, 128)"
+PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.remove('j_indirect_next_child') : check matches (false)
 PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.remove('j_indirect_next_child') : check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (insertion) check matches (true)
-FAIL [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (insertion) check #indirect_next_child color assert_equals: expected "rgb(221, 160, 221)" but got "rgb(128, 128, 128)"
+PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (insertion) check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (removal) check matches (false)
 PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (removal) check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:is(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('plum') : check matches (false)
@@ -451,11 +451,11 @@
 PASS [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.add('orange') : check matches (false)
 PASS [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.add('orange') : check #has_scope color
 PASS [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.add('m') : check matches (true)
-FAIL [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.add('m') : check #has_scope color assert_equals: expected "rgb(255, 165, 0)" but got "rgb(128, 128, 128)"
+PASS [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.add('m') : check #has_scope color
 PASS [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.remove('m') : check matches (false)
 PASS [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.remove('m') : check #has_scope color
 PASS [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.add('n') : check matches (true)
-FAIL [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.add('n') : check #has_scope color assert_equals: expected "rgb(255, 165, 0)" but got "rgb(128, 128, 128)"
+PASS [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.add('n') : check #has_scope color
 PASS [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.remove('n') : check matches (false)
 PASS [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #parent.classList.remove('n') : check #has_scope color
 PASS [ .orange:has(#descendant:is(:is(.m, .n) .o)) ] #has_scope.classList.add('m') : check matches (true)
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/invalidation/not-pseudo-containing-complex-in-has-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/invalidation/not-pseudo-containing-complex-in-has-expected.txt
index 3c63a01..b193bce 100644
--- a/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/invalidation/not-pseudo-containing-complex-in-has-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/invalidation/not-pseudo-containing-complex-in-has-expected.txt
@@ -1,9 +1,9 @@
 This is a testharness.js-based test.
-Found 460 tests; 404 PASS, 56 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 460 tests; 454 PASS, 6 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS [ .red:has(#descendant:not(.a_has_scope .b)) ] #has_scope.classList.add('red') : check matches (true)
 PASS [ .red:has(#descendant:not(.a_has_scope .b)) ] #has_scope.classList.add('red') : check #has_scope color
 PASS [ .red:has(#descendant:not(.a_has_scope .b)) ] #parent.classList.add('a_has_scope') : check matches (false)
-FAIL [ .red:has(#descendant:not(.a_has_scope .b)) ] #parent.classList.add('a_has_scope') : check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(255, 0, 0)"
+PASS [ .red:has(#descendant:not(.a_has_scope .b)) ] #parent.classList.add('a_has_scope') : check #has_scope color
 PASS [ .red:has(#descendant:not(.a_has_scope .b)) ] #parent.classList.remove('a_has_scope') : check matches (true)
 PASS [ .red:has(#descendant:not(.a_has_scope .b)) ] #parent.classList.remove('a_has_scope') : check #has_scope color
 PASS [ .red:has(#descendant:not(.a_has_scope .b)) ] #has_scope.classList.add('a_has_scope') : check matches (false)
@@ -19,7 +19,7 @@
 PASS [ .orangered:has(#descendant:not(.a_descendant .b)) #descendant ] #has_scope.classList.add('orangered') : check matches (true)
 PASS [ .orangered:has(#descendant:not(.a_descendant .b)) #descendant ] #has_scope.classList.add('orangered') : check #descendant color
 PASS [ .orangered:has(#descendant:not(.a_descendant .b)) #descendant ] #parent.classList.add('a_descendant') : check matches (false)
-FAIL [ .orangered:has(#descendant:not(.a_descendant .b)) #descendant ] #parent.classList.add('a_descendant') : check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(255, 69, 0)"
+PASS [ .orangered:has(#descendant:not(.a_descendant .b)) #descendant ] #parent.classList.add('a_descendant') : check #descendant color
 PASS [ .orangered:has(#descendant:not(.a_descendant .b)) #descendant ] #parent.classList.remove('a_descendant') : check matches (true)
 PASS [ .orangered:has(#descendant:not(.a_descendant .b)) #descendant ] #parent.classList.remove('a_descendant') : check #descendant color
 PASS [ .orangered:has(#descendant:not(.a_descendant .b)) #descendant ] #has_scope.classList.add('a_descendant') : check matches (false)
@@ -35,7 +35,7 @@
 PASS [ .darkred:has(#descendant:not(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.add('darkred') : check matches (true)
 PASS [ .darkred:has(#descendant:not(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.add('darkred') : check #indirect_next color
 PASS [ .darkred:has(#descendant:not(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.add('a_indirect_next') : check matches (false)
-FAIL [ .darkred:has(#descendant:not(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.add('a_indirect_next') : check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(139, 0, 0)"
+PASS [ .darkred:has(#descendant:not(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.add('a_indirect_next') : check #indirect_next color
 PASS [ .darkred:has(#descendant:not(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.remove('a_indirect_next') : check matches (true)
 PASS [ .darkred:has(#descendant:not(.a_indirect_next .b)) ~ #indirect_next ] #parent.classList.remove('a_indirect_next') : check #indirect_next color
 PASS [ .darkred:has(#descendant:not(.a_indirect_next .b)) ~ #indirect_next ] #has_scope.classList.add('a_indirect_next') : check matches (false)
@@ -51,7 +51,7 @@
 PASS [ .pink:has(#descendant:not(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('pink') : check matches (true)
 PASS [ .pink:has(#descendant:not(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('pink') : check #indirect_next_child color
 PASS [ .pink:has(#descendant:not(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('a_indirect_next_child') : check matches (false)
-FAIL [ .pink:has(#descendant:not(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('a_indirect_next_child') : check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(255, 192, 203)"
+PASS [ .pink:has(#descendant:not(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('a_indirect_next_child') : check #indirect_next_child color
 PASS [ .pink:has(#descendant:not(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.remove('a_indirect_next_child') : check matches (true)
 PASS [ .pink:has(#descendant:not(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #parent.classList.remove('a_indirect_next_child') : check #indirect_next_child color
 PASS [ .pink:has(#descendant:not(.a_indirect_next_child .b)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('a_indirect_next_child') : check matches (false)
@@ -67,15 +67,15 @@
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] #has_scope.classList.add('green') : check matches (true)
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] #has_scope.classList.add('green') : check #has_scope color
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.add('c_has_scope') : check matches (false)
-FAIL [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.add('c_has_scope') : check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 128, 0)"
+PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.add('c_has_scope') : check #has_scope color
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (insertion) check matches (true)
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (insertion) check #has_scope color
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (removal) check matches (false)
-FAIL [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (removal) check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 128, 0)"
+PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #parent_previous) : (removal) check #has_scope color
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.remove('c_has_scope') : check matches (true)
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] #parent_previous.classList.remove('c_has_scope') : check #has_scope color
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (insertion) check matches (false)
-FAIL [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (insertion) check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 128, 0)"
+PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (insertion) check #has_scope color
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (removal) check matches (true)
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #parent_previous) : (removal) check #has_scope color
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] #previous.classList.add('c_has_scope') : check matches (false)
@@ -83,11 +83,11 @@
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (insertion) check matches (true)
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (insertion) check #has_scope color
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (removal) check matches (false)
-FAIL [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (removal) check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 128, 0)"
+PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .invalid before #previous) : (removal) check #has_scope color
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] #previous.classList.remove('c_has_scope') : check matches (true)
-PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] #previous.classList.remove('c_has_scope') : check #has_scope color
+FAIL [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] #previous.classList.remove('c_has_scope') : check #has_scope color assert_equals: expected "rgb(0, 128, 0)" but got "rgb(128, 128, 128)"
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (insertion) check matches (false)
-FAIL [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (insertion) check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 128, 0)"
+PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (insertion) check #has_scope color
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (removal) check matches (true)
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] insert/remove .c_has_scope before #previous) : (removal) check #has_scope color
 PASS [ .green:has(#descendant:not(.p + .c_has_scope ~ .d .e)) ] #child_previous.classList.add('c_has_scope') : check matches (false)
@@ -107,27 +107,27 @@
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #has_scope.classList.add('lightgreen') : check matches (true)
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #has_scope.classList.add('lightgreen') : check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.add('c_descendant') : check matches (false)
-FAIL [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.add('c_descendant') : check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(144, 238, 144)"
+PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.add('c_descendant') : check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (insertion) check matches (true)
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (insertion) check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check matches (false)
-FAIL [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(144, 238, 144)"
+PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.remove('c_descendant') : check matches (true)
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #parent_previous.classList.remove('c_descendant') : check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (insertion) check matches (false)
-FAIL [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (insertion) check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(144, 238, 144)"
+PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (insertion) check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (removal) check matches (true)
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #parent_previous) : (removal) check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.add('c_descendant') : check matches (false)
-FAIL [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.add('c_descendant') : check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(144, 238, 144)"
+PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.add('c_descendant') : check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (insertion) check matches (true)
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (insertion) check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (removal) check matches (false)
-FAIL [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (removal) check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(144, 238, 144)"
+PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .invalid before #previous) : (removal) check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.remove('c_descendant') : check matches (true)
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #previous.classList.remove('c_descendant') : check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (insertion) check matches (false)
-FAIL [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (insertion) check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(144, 238, 144)"
+PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (insertion) check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (removal) check matches (true)
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] insert/remove .c_descendant before #previous) : (removal) check #descendant color
 PASS [ .lightgreen:has(#descendant:not(.p + .c_descendant ~ .d .e)) #descendant ] #child_previous.classList.add('c_descendant') : check matches (false)
@@ -147,15 +147,15 @@
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #has_scope.classList.add('darkgreen') : check matches (true)
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #has_scope.classList.add('darkgreen') : check #indirect_next color
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.add('c_indirect_next') : check matches (false)
-FAIL [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.add('c_indirect_next') : check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 100, 0)"
+PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.add('c_indirect_next') : check #indirect_next color
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (insertion) check matches (true)
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (insertion) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check matches (false)
-FAIL [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 100, 0)"
+PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.remove('c_indirect_next') : check matches (true)
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #parent_previous.classList.remove('c_indirect_next') : check #indirect_next color
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (insertion) check matches (false)
-FAIL [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (insertion) check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 100, 0)"
+PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (insertion) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (removal) check matches (true)
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #parent_previous) : (removal) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #previous.classList.add('c_indirect_next') : check matches (false)
@@ -163,11 +163,11 @@
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (insertion) check matches (true)
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (insertion) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check matches (false)
-FAIL [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 100, 0)"
+PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #previous.classList.remove('c_indirect_next') : check matches (true)
-PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #previous.classList.remove('c_indirect_next') : check #indirect_next color
+FAIL [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #previous.classList.remove('c_indirect_next') : check #indirect_next color assert_equals: expected "rgb(0, 100, 0)" but got "rgb(128, 128, 128)"
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (insertion) check matches (false)
-FAIL [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (insertion) check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 100, 0)"
+PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (insertion) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (removal) check matches (true)
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] insert/remove .c_indirect_next before #previous) : (removal) check #indirect_next color
 PASS [ .darkgreen:has(#descendant:not(.p + .c_indirect_next ~ .d .e)) ~ #indirect_next ] #child_previous.classList.add('c_indirect_next') : check matches (false)
@@ -187,15 +187,15 @@
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('yellowgreen') : check matches (true)
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('yellowgreen') : check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('c_indirect_next_child') : check matches (false)
-FAIL [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('c_indirect_next_child') : check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(154, 205, 50)"
+PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('c_indirect_next_child') : check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (insertion) check matches (true)
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (insertion) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check matches (false)
-FAIL [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(154, 205, 50)"
+PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.remove('c_indirect_next_child') : check matches (true)
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.remove('c_indirect_next_child') : check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (insertion) check matches (false)
-FAIL [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (insertion) check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(154, 205, 50)"
+PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (insertion) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (removal) check matches (true)
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #parent_previous) : (removal) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #previous.classList.add('c_indirect_next_child') : check matches (false)
@@ -203,11 +203,11 @@
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (insertion) check matches (true)
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (insertion) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check matches (false)
-FAIL [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(154, 205, 50)"
+PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('c_indirect_next_child') : check matches (true)
-PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('c_indirect_next_child') : check #indirect_next_child color
+FAIL [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('c_indirect_next_child') : check #indirect_next_child color assert_equals: expected "rgb(154, 205, 50)" but got "rgb(128, 128, 128)"
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (insertion) check matches (false)
-FAIL [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (insertion) check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(154, 205, 50)"
+PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (insertion) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (removal) check matches (true)
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] insert/remove .c_indirect_next_child before #previous) : (removal) check #indirect_next_child color
 PASS [ .yellowgreen:has(#descendant:not(.p + .c_indirect_next_child ~ .d .e)) ~ #indirect_next #indirect_next_child ] #child_previous.classList.add('c_indirect_next_child') : check matches (false)
@@ -227,11 +227,11 @@
 PASS [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] #has_scope.classList.add('blue') : check matches (true)
 PASS [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] #has_scope.classList.add('blue') : check #has_scope color
 PASS [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] #previous.classList.add('f_has_scope') : check matches (false)
-FAIL [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] #previous.classList.add('f_has_scope') : check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 0, 255)"
+PASS [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] #previous.classList.add('f_has_scope') : check #has_scope color
 PASS [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] #previous.classList.remove('f_has_scope') : check matches (true)
 PASS [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] #previous.classList.remove('f_has_scope') : check #has_scope color
 PASS [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (insertion) check matches (false)
-FAIL [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (insertion) check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 0, 255)"
+PASS [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (insertion) check #has_scope color
 PASS [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (removal) check matches (true)
 PASS [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] insert/remove .f_has_scope before #previous) : (removal) check #has_scope color
 PASS [ .blue:has(~ #indirect_next:not(.p + .f_has_scope ~ .g)) ] #has_scope.classList.add('f_has_scope') : check matches (false)
@@ -251,11 +251,11 @@
 PASS [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.add('skyblue') : check matches (true)
 PASS [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.add('skyblue') : check #descendant color
 PASS [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.add('f_descendant') : check matches (false)
-FAIL [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.add('f_descendant') : check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(135, 206, 235)"
+PASS [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.add('f_descendant') : check #descendant color
 PASS [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.remove('f_descendant') : check matches (true)
 PASS [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] #previous.classList.remove('f_descendant') : check #descendant color
 PASS [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (insertion) check matches (false)
-FAIL [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (insertion) check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(135, 206, 235)"
+PASS [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (insertion) check #descendant color
 PASS [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (removal) check matches (true)
 PASS [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] insert/remove .f_descendant before #previous) : (removal) check #descendant color
 PASS [ .skyblue:has(~ #indirect_next:not(.p + .f_descendant ~ .g)) #descendant ] #has_scope.classList.add('f_descendant') : check matches (false)
@@ -275,15 +275,15 @@
 PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.add('lightblue') : check matches (true)
 PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.add('lightblue') : check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.add('f_indirect_next') : check matches (false)
-FAIL [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.add('f_indirect_next') : check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(173, 216, 230)"
+PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.add('f_indirect_next') : check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (insertion) check matches (true)
 PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (insertion) check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check matches (false)
-FAIL [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(173, 216, 230)"
+PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .invalid before #previous) : (removal) check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.remove('f_indirect_next') : check matches (true)
 PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #previous.classList.remove('f_indirect_next') : check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (insertion) check matches (false)
-FAIL [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (insertion) check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(173, 216, 230)"
+PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (insertion) check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (removal) check matches (true)
 PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] insert/remove .f_indirect_next before #previous) : (removal) check #indirect_next color
 PASS [ .lightblue:has(~ #indirect_next:not(.p + .f_indirect_next ~ .g)) ~ #indirect_next ] #has_scope.classList.add('f_indirect_next') : check matches (false)
@@ -307,15 +307,15 @@
 PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('darkblue') : check matches (true)
 PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('darkblue') : check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.add('f_indirect_next_child') : check matches (false)
-FAIL [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.add('f_indirect_next_child') : check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 0, 139)"
+PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.add('f_indirect_next_child') : check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (insertion) check matches (true)
 PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (insertion) check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check matches (false)
-FAIL [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 0, 139)"
+PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #previous) : (removal) check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('f_indirect_next_child') : check matches (true)
 PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #previous.classList.remove('f_indirect_next_child') : check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (insertion) check matches (false)
-FAIL [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (insertion) check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(0, 0, 139)"
+PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (insertion) check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (removal) check matches (true)
 PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] insert/remove .f_indirect_next_child before #previous) : (removal) check #indirect_next_child color
 PASS [ .darkblue:has(~ #indirect_next:not(.p + .f_indirect_next_child ~ .g)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('f_indirect_next_child') : check matches (false)
@@ -339,7 +339,7 @@
 PASS [ .yellow:has(~ #indirect_next:not(.h_has_scope .i)) ] #has_scope.classList.add('yellow') : check matches (true)
 PASS [ .yellow:has(~ #indirect_next:not(.h_has_scope .i)) ] #has_scope.classList.add('yellow') : check #has_scope color
 PASS [ .yellow:has(~ #indirect_next:not(.h_has_scope .i)) ] #parent.classList.add('h_has_scope') : check matches (false)
-FAIL [ .yellow:has(~ #indirect_next:not(.h_has_scope .i)) ] #parent.classList.add('h_has_scope') : check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(255, 255, 0)"
+PASS [ .yellow:has(~ #indirect_next:not(.h_has_scope .i)) ] #parent.classList.add('h_has_scope') : check #has_scope color
 PASS [ .yellow:has(~ #indirect_next:not(.h_has_scope .i)) ] #parent.classList.remove('h_has_scope') : check matches (true)
 PASS [ .yellow:has(~ #indirect_next:not(.h_has_scope .i)) ] #parent.classList.remove('h_has_scope') : check #has_scope color
 PASS [ .yellow:has(~ #indirect_next:not(.h_has_scope .i)) ] #has_scope.classList.remove('yellow') : check matches (false)
@@ -347,7 +347,7 @@
 PASS [ .ivory:has(~ #indirect_next:not(.h_descendant .i)) #descendant ] #has_scope.classList.add('ivory') : check matches (true)
 PASS [ .ivory:has(~ #indirect_next:not(.h_descendant .i)) #descendant ] #has_scope.classList.add('ivory') : check #descendant color
 PASS [ .ivory:has(~ #indirect_next:not(.h_descendant .i)) #descendant ] #parent.classList.add('h_descendant') : check matches (false)
-FAIL [ .ivory:has(~ #indirect_next:not(.h_descendant .i)) #descendant ] #parent.classList.add('h_descendant') : check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(255, 255, 240)"
+PASS [ .ivory:has(~ #indirect_next:not(.h_descendant .i)) #descendant ] #parent.classList.add('h_descendant') : check #descendant color
 PASS [ .ivory:has(~ #indirect_next:not(.h_descendant .i)) #descendant ] #parent.classList.remove('h_descendant') : check matches (true)
 PASS [ .ivory:has(~ #indirect_next:not(.h_descendant .i)) #descendant ] #parent.classList.remove('h_descendant') : check #descendant color
 PASS [ .ivory:has(~ #indirect_next:not(.h_descendant .i)) #descendant ] #has_scope.classList.remove('ivory') : check matches (false)
@@ -355,7 +355,7 @@
 PASS [ .greenyellow:has(~ #indirect_next:not(.h_indirect_next .i)) ~ #indirect_next ] #has_scope.classList.add('greenyellow') : check matches (true)
 PASS [ .greenyellow:has(~ #indirect_next:not(.h_indirect_next .i)) ~ #indirect_next ] #has_scope.classList.add('greenyellow') : check #indirect_next color
 PASS [ .greenyellow:has(~ #indirect_next:not(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.add('h_indirect_next') : check matches (false)
-FAIL [ .greenyellow:has(~ #indirect_next:not(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.add('h_indirect_next') : check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(173, 255, 47)"
+PASS [ .greenyellow:has(~ #indirect_next:not(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.add('h_indirect_next') : check #indirect_next color
 PASS [ .greenyellow:has(~ #indirect_next:not(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.remove('h_indirect_next') : check matches (true)
 PASS [ .greenyellow:has(~ #indirect_next:not(.h_indirect_next .i)) ~ #indirect_next ] #parent.classList.remove('h_indirect_next') : check #indirect_next color
 PASS [ .greenyellow:has(~ #indirect_next:not(.h_indirect_next .i)) ~ #indirect_next ] #has_scope.classList.remove('greenyellow') : check matches (false)
@@ -363,7 +363,7 @@
 PASS [ .khaki:has(~ #indirect_next:not(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('khaki') : check matches (true)
 PASS [ .khaki:has(~ #indirect_next:not(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('khaki') : check #indirect_next_child color
 PASS [ .khaki:has(~ #indirect_next:not(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('h_indirect_next_child') : check matches (false)
-FAIL [ .khaki:has(~ #indirect_next:not(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('h_indirect_next_child') : check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(240, 230, 140)"
+PASS [ .khaki:has(~ #indirect_next:not(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.add('h_indirect_next_child') : check #indirect_next_child color
 PASS [ .khaki:has(~ #indirect_next:not(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.remove('h_indirect_next_child') : check matches (true)
 PASS [ .khaki:has(~ #indirect_next:not(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #parent.classList.remove('h_indirect_next_child') : check #indirect_next_child color
 PASS [ .khaki:has(~ #indirect_next:not(.h_indirect_next_child .i)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('khaki') : check matches (false)
@@ -371,15 +371,15 @@
 PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] #has_scope.classList.add('purple') : check matches (true)
 PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] #has_scope.classList.add('purple') : check #has_scope color
 PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.add('j_has_scope') : check matches (false)
-FAIL [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.add('j_has_scope') : check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(128, 0, 128)"
+PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.add('j_has_scope') : check #has_scope color
 PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (insertion) check matches (true)
 PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (insertion) check #has_scope color
 PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (removal) check matches (false)
-FAIL [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (removal) check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(128, 0, 128)"
+PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] insert/remove .invalid before #parent_previous) : (removal) check #has_scope color
 PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.remove('j_has_scope') : check matches (true)
 PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] #parent_previous.classList.remove('j_has_scope') : check #has_scope color
 PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (insertion) check matches (false)
-FAIL [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (insertion) check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(128, 0, 128)"
+PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (insertion) check #has_scope color
 PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (removal) check matches (true)
 PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] insert/remove .j_has_scope before #parent_previous) : (removal) check #has_scope color
 PASS [ .purple:has(~ #indirect_next:not(.p + .j_has_scope ~ .k .l)) ] #has_scope.classList.remove('purple') : check matches (false)
@@ -387,15 +387,15 @@
 PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] #has_scope.classList.add('violet') : check matches (true)
 PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] #has_scope.classList.add('violet') : check #descendant color
 PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.add('j_descendant') : check matches (false)
-FAIL [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.add('j_descendant') : check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(238, 130, 238)"
+PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.add('j_descendant') : check #descendant color
 PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (insertion) check matches (true)
 PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (insertion) check #descendant color
 PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check matches (false)
-FAIL [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(238, 130, 238)"
+PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .invalid before #parent_previous) : (removal) check #descendant color
 PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.remove('j_descendant') : check matches (true)
 PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] #parent_previous.classList.remove('j_descendant') : check #descendant color
 PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (insertion) check matches (false)
-FAIL [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (insertion) check #descendant color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(238, 130, 238)"
+PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (insertion) check #descendant color
 PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (removal) check matches (true)
 PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] insert/remove .j_descendant before #parent_previous) : (removal) check #descendant color
 PASS [ .violet:has(~ #indirect_next:not(.p + .j_descendant ~ .k .l)) #descendant ] #has_scope.classList.remove('violet') : check matches (false)
@@ -403,15 +403,15 @@
 PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #has_scope.classList.add('orchid') : check matches (true)
 PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #has_scope.classList.add('orchid') : check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.add('j_indirect_next') : check matches (false)
-FAIL [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.add('j_indirect_next') : check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(218, 112, 214)"
+PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.add('j_indirect_next') : check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (insertion) check matches (true)
 PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (insertion) check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check matches (false)
-FAIL [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(218, 112, 214)"
+PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.remove('j_indirect_next') : check matches (true)
 PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #parent_previous.classList.remove('j_indirect_next') : check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (insertion) check matches (false)
-FAIL [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (insertion) check #indirect_next color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(218, 112, 214)"
+PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (insertion) check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (removal) check matches (true)
 PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] insert/remove .j_indirect_next before #parent_previous) : (removal) check #indirect_next color
 PASS [ .orchid:has(~ #indirect_next:not(.p + .j_indirect_next ~ .k .l)) ~ #indirect_next ] #has_scope.classList.remove('orchid') : check matches (false)
@@ -419,15 +419,15 @@
 PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('plum') : check matches (true)
 PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.add('plum') : check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('j_indirect_next_child') : check matches (false)
-FAIL [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('j_indirect_next_child') : check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(221, 160, 221)"
+PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.add('j_indirect_next_child') : check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (insertion) check matches (true)
 PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (insertion) check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check matches (false)
-FAIL [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(221, 160, 221)"
+PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .invalid before #parent_previous) : (removal) check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.remove('j_indirect_next_child') : check matches (true)
 PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #parent_previous.classList.remove('j_indirect_next_child') : check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (insertion) check matches (false)
-FAIL [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (insertion) check #indirect_next_child color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(221, 160, 221)"
+PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (insertion) check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (removal) check matches (true)
 PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] insert/remove .j_indirect_next_child before #parent_previous) : (removal) check #indirect_next_child color
 PASS [ .plum:has(~ #indirect_next:not(.p + .j_indirect_next_child ~ .k .l)) ~ #indirect_next #indirect_next_child ] #has_scope.classList.remove('plum') : check matches (false)
@@ -435,11 +435,11 @@
 PASS [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #has_scope.classList.add('orange') : check matches (true)
 PASS [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #has_scope.classList.add('orange') : check #has_scope color
 PASS [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #parent.classList.add('m') : check matches (false)
-FAIL [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #parent.classList.add('m') : check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(255, 165, 0)"
+PASS [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #parent.classList.add('m') : check #has_scope color
 PASS [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #parent.classList.add('n') : check matches (true)
 PASS [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #parent.classList.add('n') : check #has_scope color
 PASS [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #parent.classList.remove('n') : check matches (false)
-FAIL [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #parent.classList.remove('n') : check #has_scope color assert_equals: expected "rgb(128, 128, 128)" but got "rgb(255, 165, 0)"
+PASS [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #parent.classList.remove('n') : check #has_scope color
 PASS [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #parent.classList.remove('m') : check matches (true)
 PASS [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #parent.classList.remove('m') : check #has_scope color
 PASS [ .orange:has(#descendant:not(.m:not(.n) .o)) ] #has_scope.classList.add('m') : check matches (false)
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/server-timing/server_timing_header-parsing.https-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/server-timing/server_timing_header-parsing.https-expected.txt
deleted file mode 100644
index 4ea8991..0000000
--- a/third_party/blink/web_tests/platform/generic/external/wpt/server-timing/server_timing_header-parsing.https-expected.txt
+++ /dev/null
@@ -1,332 +0,0 @@
-This is a testharness.js-based test.
-Found 328 tests; 326 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS 0.js - count (0 ?== 0)
-PASS 1.js - count (1 ?== 1)
-PASS 1.js - name (metric ?== metric)
-PASS 1.js - duration (0 ?== 0)
-PASS 1.js - description ( ?== )
-PASS 2.js - count (1 ?== 1)
-PASS 2.js - name (metric ?== metric)
-PASS 2.js - duration (123.4 ?== 123.4)
-PASS 2.js - description ( ?== )
-PASS 3.js - count (1 ?== 1)
-PASS 3.js - name (metric ?== metric)
-PASS 3.js - duration (123.4 ?== 123.4)
-PASS 3.js - description ( ?== )
-PASS 4.js - count (1 ?== 1)
-PASS 4.js - name (metric ?== metric)
-PASS 4.js - duration (0 ?== 0)
-PASS 4.js - description (description ?== description)
-PASS 5.js - count (1 ?== 1)
-PASS 5.js - name (metric ?== metric)
-PASS 5.js - duration (0 ?== 0)
-PASS 5.js - description (description ?== description)
-PASS 6.js - count (1 ?== 1)
-PASS 6.js - name (metric ?== metric)
-PASS 6.js - duration (123.4 ?== 123.4)
-PASS 6.js - description (description ?== description)
-PASS 7.js - count (1 ?== 1)
-PASS 7.js - name (metric ?== metric)
-PASS 7.js - duration (123.4 ?== 123.4)
-PASS 7.js - description (description ?== description)
-PASS 8.js - count (1 ?== 1)
-PASS 8.js - name (aB3!#$%&'*+-.^_`|~ ?== aB3!#$%&'*+-.^_`|~)
-PASS 8.js - duration (0 ?== 0)
-PASS 8.js - description ( ?== )
-PASS 9.js - count (1 ?== 1)
-PASS 9.js - name (metric ?== metric)
-PASS 9.js - duration (123.4 ?== 123.4)
-PASS 9.js - description (descr;,=iption ?== descr;,=iption)
-PASS 10.js - count (1 ?== 1)
-PASS 10.js - name (metric ?== metric)
-PASS 10.js - duration (0 ?== 0)
-PASS 10.js - description ( ?== )
-PASS 11.js - count (1 ?== 1)
-PASS 11.js - name (metric ?== metric)
-PASS 11.js - duration (0 ?== 0)
-PASS 11.js - description ( ?== )
-PASS 12.js - count (1 ?== 1)
-PASS 12.js - name (metric ?== metric)
-PASS 12.js - duration (123.4 ?== 123.4)
-PASS 12.js - description (description ?== description)
-PASS 13.js - count (1 ?== 1)
-PASS 13.js - name (metric ?== metric)
-PASS 13.js - duration (123.4 ?== 123.4)
-PASS 13.js - description (description ?== description)
-PASS 14.js - count (1 ?== 1)
-PASS 14.js - name (metric ?== metric)
-PASS 14.js - duration (0 ?== 0)
-PASS 14.js - description (description ?== description)
-PASS 15.js - count (3 ?== 3)
-PASS 15.js - [0].name (metric1 ?== metric1)
-PASS 15.js - [0].duration (12.3 ?== 12.3)
-PASS 15.js - [0].description (description1 ?== description1)
-PASS 15.js - [1].name (metric2 ?== metric2)
-PASS 15.js - [1].duration (45.6 ?== 45.6)
-PASS 15.js - [1].description (description2 ?== description2)
-PASS 15.js - [2].name (metric3 ?== metric3)
-PASS 15.js - [2].duration (78.9 ?== 78.9)
-PASS 15.js - [2].description (description3 ?== description3)
-PASS 16.js - count (5 ?== 5)
-PASS 16.js - [0].name (metric1 ?== metric1)
-PASS 16.js - [0].duration (0 ?== 0)
-PASS 16.js - [0].description ( ?== )
-PASS 16.js - [1].name (metric2 ?== metric2)
-PASS 16.js - [1].duration (0 ?== 0)
-PASS 16.js - [1].description ( ?== )
-PASS 16.js - [2].name (metric3 ?== metric3)
-PASS 16.js - [2].duration (0 ?== 0)
-PASS 16.js - [2].description ( ?== )
-PASS 16.js - [3].name (metric4 ?== metric4)
-PASS 16.js - [3].duration (0 ?== 0)
-PASS 16.js - [3].description ( ?== )
-PASS 16.js - [4].name (metric5 ?== metric5)
-PASS 16.js - [4].duration (0 ?== 0)
-PASS 16.js - [4].description ( ?== )
-PASS 17.js - count (1 ?== 1)
-PASS 17.js - name (metric ?== metric)
-PASS 17.js - duration (0 ?== 0)
-PASS 17.js - description (description ?== description)
-PASS 18.js - count (1 ?== 1)
-PASS 18.js - name (metric ?== metric)
-PASS 18.js - duration (0 ?== 0)
-PASS 18.js - description (	 description 	 ?== 	 description 	)
-PASS 19.js - count (1 ?== 1)
-PASS 19.js - name (metric ?== metric)
-PASS 19.js - duration (0 ?== 0)
-PASS 19.js - description (descr"iption ?== descr"iption)
-PASS 20.js - count (1 ?== 1)
-PASS 20.js - name (metric ?== metric)
-PASS 20.js - duration (0 ?== 0)
-PASS 20.js - description ( ?== )
-PASS 21.js - count (1 ?== 1)
-PASS 21.js - name (metric ?== metric)
-PASS 21.js - duration (0 ?== 0)
-PASS 21.js - description ( ?== )
-PASS 22.js - count (1 ?== 1)
-PASS 22.js - name (metric ?== metric)
-PASS 22.js - duration (0 ?== 0)
-PASS 22.js - description ( ?== )
-PASS 23.js - count (1 ?== 1)
-PASS 23.js - name (metric ?== metric)
-PASS 23.js - duration (0 ?== 0)
-PASS 23.js - description ( ?== )
-PASS 24.js - count (1 ?== 1)
-PASS 24.js - name (metric ?== metric)
-PASS 24.js - duration (0 ?== 0)
-PASS 24.js - description ( ?== )
-PASS 25.js - count (1 ?== 1)
-PASS 25.js - name (metric ?== metric)
-PASS 25.js - duration (0 ?== 0)
-PASS 25.js - description ( ?== )
-PASS 26.js - count (1 ?== 1)
-PASS 26.js - name (metric ?== metric)
-PASS 26.js - duration (0 ?== 0)
-PASS 26.js - description ( ?== )
-PASS 27.js - count (1 ?== 1)
-PASS 27.js - name (metric ?== metric)
-PASS 27.js - duration (0 ?== 0)
-PASS 27.js - description ( ?== )
-PASS 28.js - count (1 ?== 1)
-PASS 28.js - name (metric ?== metric)
-PASS 28.js - duration (0 ?== 0)
-PASS 28.js - description ( ?== )
-PASS 29.js - count (1 ?== 1)
-PASS 29.js - name (metric ?== metric)
-PASS 29.js - duration (0 ?== 0)
-PASS 29.js - description ( ?== )
-PASS 30.js - count (1 ?== 1)
-PASS 30.js - name (metric ?== metric)
-PASS 30.js - duration (0 ?== 0)
-PASS 30.js - description ( ?== )
-PASS 31.js - count (1 ?== 1)
-PASS 31.js - name (metric ?== metric)
-PASS 31.js - duration (0 ?== 0)
-PASS 31.js - description ( ?== )
-PASS 32.js - count (1 ?== 1)
-PASS 32.js - name (metric ?== metric)
-PASS 32.js - duration (0 ?== 0)
-PASS 32.js - description ( ?== )
-PASS 33.js - count (1 ?== 1)
-PASS 33.js - name (metric ?== metric)
-PASS 33.js - duration (0 ?== 0)
-PASS 33.js - description ( ?== )
-PASS 34.js - count (1 ?== 1)
-PASS 34.js - name (metric ?== metric)
-PASS 34.js - duration (0 ?== 0)
-PASS 34.js - description ( ?== )
-PASS 35.js - count (1 ?== 1)
-PASS 35.js - name (metric ?== metric)
-PASS 35.js - duration (0 ?== 0)
-PASS 35.js - description ( ?== )
-PASS 36.js - count (1 ?== 1)
-PASS 36.js - name (metric ?== metric)
-PASS 36.js - duration (0 ?== 0)
-PASS 36.js - description ( ?== )
-PASS 37.js - count (1 ?== 1)
-PASS 37.js - name (metric ?== metric)
-PASS 37.js - duration (0 ?== 0)
-PASS 37.js - description ( ?== )
-PASS 38.js - count (1 ?== 1)
-PASS 38.js - name (metric ?== metric)
-PASS 38.js - duration (0 ?== 0)
-PASS 38.js - description ( ?== )
-PASS 39.js - count (1 ?== 1)
-PASS 39.js - name (metric ?== metric)
-PASS 39.js - duration (0 ?== 0)
-PASS 39.js - description ( ?== )
-PASS 40.js - count (1 ?== 1)
-PASS 40.js - name (metric ?== metric)
-PASS 40.js - duration (0 ?== 0)
-PASS 40.js - description ( ?== )
-PASS 41.js - count (1 ?== 1)
-PASS 41.js - name (metric ?== metric)
-PASS 41.js - duration (0 ?== 0)
-PASS 41.js - description ( ?== )
-PASS 42.js - count (1 ?== 1)
-PASS 42.js - name (metric ?== metric)
-PASS 42.js - duration (0 ?== 0)
-PASS 42.js - description ( ?== )
-PASS 43.js - count (1 ?== 1)
-PASS 43.js - name (metric ?== metric)
-PASS 43.js - duration (0 ?== 0)
-PASS 43.js - description (\ ?== \)
-PASS 44.js - count (1 ?== 1)
-PASS 44.js - name (metric ?== metric)
-PASS 44.js - duration (0 ?== 0)
-PASS 44.js - description ( ?== )
-PASS 45.js - count (1 ?== 1)
-PASS 45.js - name (metric ?== metric)
-PASS 45.js - duration (0 ?== 0)
-PASS 45.js - description (" ?== ")
-PASS 46.js - count (1 ?== 1)
-PASS 46.js - name (metric ?== metric)
-PASS 46.js - duration (0 ?== 0)
-PASS 46.js - description ( ?== )
-PASS 47.js - count (1 ?== 1)
-PASS 47.js - name (metric ?== metric)
-PASS 47.js - duration (0 ?== 0)
-PASS 47.js - description ( ?== )
-PASS 48.js - count (1 ?== 1)
-PASS 48.js - name (metric ?== metric)
-PASS 48.js - duration (0 ?== 0)
-PASS 48.js - description ( ?== )
-PASS 49.js - count (1 ?== 1)
-PASS 49.js - name (metric ?== metric)
-PASS 49.js - duration (0 ?== 0)
-PASS 49.js - description ( ?== )
-PASS 50.js - count (2 ?== 2)
-PASS 50.js - [0].name (metric ?== metric)
-PASS 50.js - [0].duration (12.3 ?== 12.3)
-PASS 50.js - [0].description (description1 ?== description1)
-PASS 50.js - [1].name (metric ?== metric)
-PASS 50.js - [1].duration (45.6 ?== 45.6)
-PASS 50.js - [1].description (description2 ?== description2)
-PASS 51.js - count (1 ?== 1)
-PASS 51.js - name (metric ?== metric)
-PASS 51.js - duration (123.4 ?== 123.4)
-PASS 51.js - description (description ?== description)
-PASS 52.js - count (1 ?== 1)
-PASS 52.js - name (MeTrIc ?== MeTrIc)
-PASS 52.js - duration (0 ?== 0)
-PASS 52.js - description (DeScRiPtIoN ?== DeScRiPtIoN)
-PASS 53.js - count (1 ?== 1)
-PASS 53.js - name (metric ?== metric)
-PASS 53.js - duration (0 ?== 0)
-PASS 53.js - description ( ?== )
-PASS 54.js - count (1 ?== 1)
-PASS 54.js - name (metric ?== metric)
-PASS 54.js - duration (0 ?== 0)
-PASS 54.js - description ( ?== )
-PASS 55.js - count (2 ?== 2)
-PASS 55.js - [0].name (metric1 ?== metric1)
-PASS 55.js - [0].duration (123.4 ?== 123.4)
-PASS 55.js - [0].description (description ?== description)
-PASS 55.js - [1].name (metric2 ?== metric2)
-PASS 55.js - [1].duration (0 ?== 0)
-PASS 55.js - [1].description ( ?== )
-PASS 56.js - count (1 ?== 1)
-PASS 56.js - name (metric ?== metric)
-PASS 56.js - duration (123.4 ?== 123.4)
-PASS 56.js - description ( ?== )
-PASS 57.js - count (1 ?== 1)
-PASS 57.js - name (metric ?== metric)
-PASS 57.js - duration (0 ?== 0)
-PASS 57.js - description ( ?== )
-PASS 58.js - count (1 ?== 1)
-PASS 58.js - name (metric ?== metric)
-PASS 58.js - duration (0 ?== 0)
-PASS 58.js - description (description1 ?== description1)
-PASS 59.js - count (1 ?== 1)
-PASS 59.js - name (metric ?== metric)
-PASS 59.js - duration (0 ?== 0)
-PASS 59.js - description (description ?== description)
-PASS 60.js - count (1 ?== 1)
-PASS 60.js - name (metric ?== metric)
-PASS 60.js - duration (0 ?== 0)
-PASS 60.js - description (description ?== description)
-PASS 61.js - count (1 ?== 1)
-PASS 61.js - name (metric ?== metric)
-PASS 61.js - duration (123.4 ?== 123.4)
-PASS 61.js - description ( ?== )
-PASS 62.js - count (1 ?== 1)
-PASS 62.js - name (metric ?== metric)
-PASS 62.js - duration (123.4 ?== 123.4)
-PASS 62.js - description ( ?== )
-PASS 63.js - count (1 ?== 1)
-PASS 63.js - name (metric ?== metric)
-PASS 63.js - duration (123.4 ?== 123.4)
-PASS 63.js - description (d1 ?== d1)
-PASS 64.js - count (2 ?== 2)
-PASS 64.js - [0].name (metric1 ?== metric1)
-PASS 64.js - [0].duration (0 ?== 0)
-PASS 64.js - [0].description (d1 ?== d1)
-PASS 64.js - [1].name (metric2 ?== metric2)
-PASS 64.js - [1].duration (0 ?== 0)
-PASS 64.js - [1].description ( ?== )
-PASS 65.js - count (1 ?== 1)
-PASS 65.js - name (metric ?== metric)
-PASS 65.js - duration (123.4 ?== 123.4)
-PASS 65.js - description (d1 ?== d1)
-PASS 66.js - count (2 ?== 2)
-PASS 66.js - [0].name (metric1 ?== metric1)
-PASS 66.js - [0].duration (0 ?== 0)
-PASS 66.js - [0].description (d1 ?== d1)
-PASS 66.js - [1].name (metric2 ?== metric2)
-PASS 66.js - [1].duration (0 ?== 0)
-PASS 66.js - [1].description ( ?== )
-PASS 67.js - count (1 ?== 1)
-PASS 67.js - name (metric ?== metric)
-FAIL 67.js - duration (123.4 ?== 0) assert_equals: 67.js - duration (123.4 ?== 0) expected 0 but got 123.4
-PASS 67.js - description ( ?== )
-FAIL 68.js - count (1 ?== 2) assert_equals: 68.js - count (1 ?== 2) expected 2 but got 1
-PASS 68.js - [0].name (metric1 ?== metric1)
-PASS 68.js - [0].duration (0 ?== 0)
-PASS 68.js - [0].description ( ?== )
-PASS 69.js - count (1 ?== 1)
-PASS 69.js - name (metric ?== metric)
-PASS 69.js - duration (0 ?== 0)
-PASS 69.js - description ( ?== )
-PASS 70.js - count (1 ?== 1)
-PASS 70.js - name (metric ?== metric)
-PASS 70.js - duration (0 ?== 0)
-PASS 70.js - description ( ?== )
-PASS 71.js - count (0 ?== 0)
-PASS 72.js - count (0 ?== 0)
-PASS 73.js - count (0 ?== 0)
-PASS 74.js - count (0 ?== 0)
-PASS 75.js - count (0 ?== 0)
-PASS 76.js - count (0 ?== 0)
-PASS 77.js - count (0 ?== 0)
-PASS 78.js - count (0 ?== 0)
-PASS 79.js - count (0 ?== 0)
-PASS 80.js - count (0 ?== 0)
-PASS 81.js - count (0 ?== 0)
-PASS 82.js - count (0 ?== 0)
-PASS 83.js - count (0 ?== 0)
-PASS 84.js - count (1 ?== 1)
-PASS 84.js - name (metric ?== metric)
-PASS 84.js - duration (42 ?== 42)
-PASS 84.js - description (tabs-should-get-trimmed ?== tabs-should-get-trimmed)
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/platform/generic/virtual/android/fullscreen/video-controls-timeline-expected.png b/third_party/blink/web_tests/platform/generic/virtual/android/fullscreen/video-controls-timeline-expected.png
deleted file mode 100644
index 3cfbcd0..0000000
--- a/third_party/blink/web_tests/platform/generic/virtual/android/fullscreen/video-controls-timeline-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/generic/virtual/android/fullscreen/video-controls-timeline-expected.txt b/third_party/blink/web_tests/platform/generic/virtual/android/fullscreen/video-controls-timeline-expected.txt
deleted file mode 100644
index e69de29..0000000
--- a/third_party/blink/web_tests/platform/generic/virtual/android/fullscreen/video-controls-timeline-expected.txt
+++ /dev/null
diff --git a/third_party/blink/web_tests/platform/generic/virtual/android/fullscreen/video-fail-to-enter-full-screen-expected.txt b/third_party/blink/web_tests/platform/generic/virtual/android/fullscreen/video-fail-to-enter-full-screen-expected.txt
deleted file mode 100644
index 127ec80d..0000000
--- a/third_party/blink/web_tests/platform/generic/virtual/android/fullscreen/video-fail-to-enter-full-screen-expected.txt
+++ /dev/null
@@ -1 +0,0 @@
-CONSOLE WARNING: Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user gesture.
diff --git a/third_party/blink/web_tests/platform/generic/virtual/android/fullscreen/video-overlay-scroll-expected.txt b/third_party/blink/web_tests/platform/generic/virtual/android/fullscreen/video-overlay-scroll-expected.txt
deleted file mode 100644
index a6b22c0..0000000
--- a/third_party/blink/web_tests/platform/generic/virtual/android/fullscreen/video-overlay-scroll-expected.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutVideo (positioned) VIDEO id='video'",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutNGFlexibleBox (relative positioned) DIV class='sizing-small phase-pre-ready state-no-source use-default-poster'",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#333333"
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV",
-      "bounds": [800, 600],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutNGFlexibleBox DIV",
-      "bounds": [800, 600]
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls-expected.txt
deleted file mode 100644
index 5ea5fa68..0000000
--- a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls-expected.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-This test makes sure that touch hit rects are reported for fullscreen HTML5 video control elements even when there is a document handler.
-
-Should have single rect on document before fullscreen
-handler: layer(0,0 800x600) has hit test rect (0,0 800x600)
-
-EVENT(webkitfullscreenchange)
-Should report no rect or another rect which is not on the document
-handler: layer(0,0 800x600) has hit test rect (0,0 800x600)
-handler: layer(0,0 800x600) has hit test rect (0,0 800x600)
-handler: layer(0,0 800x600) has hit test rect (0,0 800x600)
-
-END OF TEST
-
diff --git a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/full-screen-iframe-allowed-video-expected.png b/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/full-screen-iframe-allowed-video-expected.png
deleted file mode 100644
index 3bf2470..0000000
--- a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/full-screen-iframe-allowed-video-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-fail-to-enter-full-screen-expected.png b/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-fail-to-enter-full-screen-expected.png
deleted file mode 100644
index 7c72c3f..0000000
--- a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-fail-to-enter-full-screen-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-overlay-scroll-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-overlay-scroll-expected.txt
deleted file mode 100644
index c3c63f6..0000000
--- a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-overlay-scroll-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "LayoutNGFlexibleBox DIV class='sizing-small phase-pre-ready state-no-source use-default-poster'",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#333333"
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-scrolled-iframe-expected.png b/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-scrolled-iframe-expected.png
deleted file mode 100644
index 3bf2470..0000000
--- a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-scrolled-iframe-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-specified-size-expected.png b/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-specified-size-expected.png
deleted file mode 100644
index 5e82a66..0000000
--- a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-specified-size-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/android/fullscreen/video-overlay-scroll.html b/third_party/blink/web_tests/virtual/android/fullscreen/video-overlay-scroll.html
deleted file mode 100644
index bee6581..0000000
--- a/third_party/blink/web_tests/virtual/android/fullscreen/video-overlay-scroll.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html>
-<body>
-  <script src="../../../fullscreen/full-screen-test.js"></script>
-  <div id="extra" style="width: 100px; height: 1000px"></div>
-  <video id="video"></video>
-  <script>
-    if (window.testRunner)
-      testRunner.dumpAsText();
-
-    window.scrollTo(0, 1000);
-    waitForEventOnceAndEnd(document, 'fullscreenchange', function(){
-      testRunner.setCustomTextOutput(internals.layerTreeAsText(document));
-    });
-
-    runWithKeyDown(function(){
-      video.requestFullscreen();
-    });
-  </script>
-</body>
diff --git a/third_party/blink/web_tests/webgpu/README.md b/third_party/blink/web_tests/webgpu/README.md
index ef2a2d1..d8fd913 100644
--- a/third_party/blink/web_tests/webgpu/README.md
+++ b/third_party/blink/web_tests/webgpu/README.md
@@ -111,7 +111,7 @@
 ```
 
 - On Linux, add:
-    `--no-xvfb --additional-driver-flag=--enable-features=UseSkiaRenderer,Vulkan`.
+    `--no-xvfb --additional-driver-flag=--enable-features=Vulkan`.
 - For backend validation, `--flag-specific` may be changed from `webgpu` to
     `webgpu-with-backend-validation` or `webgpu-with-partial-backend-validation`.
 
diff --git a/third_party/blink/web_tests/wpt_internal/fenced_frame/intersection-observer.https.html b/third_party/blink/web_tests/wpt_internal/fenced_frame/intersection-observer.https.html
index 121ccb5..592e7c12 100644
--- a/third_party/blink/web_tests/wpt_internal/fenced_frame/intersection-observer.https.html
+++ b/third_party/blink/web_tests/wpt_internal/fenced_frame/intersection-observer.https.html
@@ -32,20 +32,20 @@
     [io_entry_on_registration, io_entry_on_transform, io_entry_on_clip]));
 
   let result = await nextValueFromServer(io_entry_on_registration);
-  assert_equals(result, "0,0,100,100",
+  assert_equals(result, "0,0,100,100,true",
     "Subscribing to IO dispatches a notification");
 
   // Apply a transform to the fencedframe and ensure it gets applied to the
   // intersectionRect.
   frame.style.transform = 'translate(-10px, -20px)';
   result = await nextValueFromServer(io_entry_on_transform);
-  assert_equals(result, "10,20,90,80",
+  assert_equals(result, "10,20,90,80,true",
     "Transform applies to intersection rect");
 
   // Now add a clip to the fencedframe which should clip the intersectionRect.
   frame.style.clipPath = 'inset(10px)';
   result = await nextValueFromServer(io_entry_on_clip);
-  assert_equals(result, "10,20,80,70", "Clip applies to intersection rect");
+  assert_equals(result, "10,20,80,70,false", "Clip applies to intersection rect");
 }, 'Intersection Observer Test');
 
 </script>
diff --git a/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/frame-with-intersection-observer.html b/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/frame-with-intersection-observer.html
index 5e066d3..dd36b203 100644
--- a/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/frame-with-intersection-observer.html
+++ b/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/frame-with-intersection-observer.html
@@ -12,14 +12,15 @@
     let rect = entries[0].intersectionRect.x + "," +
                entries[0].intersectionRect.y + "," +
                entries[0].intersectionRect.width + "," +
-               entries[0].intersectionRect.height;
+               entries[0].intersectionRect.height + "," +
+               entries[0].isVisible;
     writeValueToServer(tokens[next_token], rect);
     next_token = next_token + 1;
 
     if (next_token == tokens.length) {
       observer.disconnect();
     }
-  }, {threshold: [0.6, 0.75]});
+  }, {trackVisibility: true, delay: 100, threshold: [0.6, 0.75]});
   observer.observe(document.getElementById("target"));
 }
 
diff --git a/third_party/blink/web_tests/wpt_internal/html/cross-origin-opener-policy/reporting/resources/reporting-common.js b/third_party/blink/web_tests/wpt_internal/html/cross-origin-opener-policy/reporting/resources/reporting-common.js
index b0c0f44..dbaf07e51 100644
--- a/third_party/blink/web_tests/wpt_internal/html/cross-origin-opener-policy/reporting/resources/reporting-common.js
+++ b/third_party/blink/web_tests/wpt_internal/html/cross-origin-opener-policy/reporting/resources/reporting-common.js
@@ -180,8 +180,7 @@
   return str.replace(/.{8}-.{4}-.{4}-.{4}-.{12}/g, `(uuid)`);
 }
 
-// Run a test (such as coop_coep_test from ./common.js) then check that all
-// expected reports are present.
+// Run a test then check that all expected reports are present.
 async function reportingTest(testFunction, executorToken, expectedReports) {
   await new Promise(testFunction);
   expectedReports = Array.from(
diff --git a/third_party/updater/BUILD.gn b/third_party/updater/BUILD.gn
new file mode 100644
index 0000000..fd6d6eb
--- /dev/null
+++ b/third_party/updater/BUILD.gn
@@ -0,0 +1,65 @@
+# Copyright 2022 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/chrome_build.gni")
+
+if (is_win || is_mac) {
+  copy("old_updater") {
+    testonly = true
+    sources = []
+
+    if (is_win && is_chrome_branded) {
+      sources += [
+        "chrome_win_x86/UpdaterSetup_test.exe",
+        "chrome_win_x86_64/UpdaterSetup_test.exe",
+      ]
+    }
+
+    if (is_win && !is_chrome_branded) {
+      sources += [
+        "chromium_win_x86/UpdaterSetup_test.exe",
+        "chromium_win_x86_64/UpdaterSetup_test.exe",
+      ]
+    }
+
+    if (is_mac && is_chrome_branded) {
+      sources += [
+        "chrome_mac_universal/updater/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Helpers/ksadmin",
+        "chrome_mac_universal/updater/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Helpers/ksinstall",
+        "chrome_mac_universal/updater/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Info.plist",
+        "chrome_mac_universal/updater/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/MacOS/GoogleSoftwareUpdate",
+        "chrome_mac_universal/updater/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/MacOS/GoogleSoftwareUpdateAgent",
+        "chrome_mac_universal/updater/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/MacOS/Info.plist",
+        "chrome_mac_universal/updater/GoogleUpdater_test.app/Contents/Info.plist",
+        "chrome_mac_universal/updater/GoogleUpdater_test.app/Contents/MacOS/GoogleUpdater_test",
+        "chrome_mac_universal/updater/GoogleUpdater_test.app/Contents/PkgInfo",
+      ]
+    }
+
+    if (is_mac && !is_chrome_branded) {
+      sources += [
+        "chromium_mac_amd64/updater/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Helpers/ksadmin",
+        "chromium_mac_amd64/updater/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Helpers/ksinstall",
+        "chromium_mac_amd64/updater/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Info.plist",
+        "chromium_mac_amd64/updater/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/MacOS/ChromiumSoftwareUpdate",
+        "chromium_mac_amd64/updater/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Resources/ChromiumSoftwareUpdateAgent.app/Contents/MacOS/ChromiumSoftwareUpdateAgent",
+        "chromium_mac_amd64/updater/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Resources/ChromiumSoftwareUpdateAgent.app/Contents/MacOS/Info.plist",
+        "chromium_mac_amd64/updater/ChromiumUpdater_test.app/Contents/Info.plist",
+        "chromium_mac_amd64/updater/ChromiumUpdater_test.app/Contents/MacOS/ChromiumUpdater_test",
+        "chromium_mac_amd64/updater/ChromiumUpdater_test.app/Contents/PkgInfo",
+        "chromium_mac_arm64/updater/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Helpers/ksadmin",
+        "chromium_mac_arm64/updater/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Helpers/ksinstall",
+        "chromium_mac_arm64/updater/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Info.plist",
+        "chromium_mac_arm64/updater/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/MacOS/ChromiumSoftwareUpdate",
+        "chromium_mac_arm64/updater/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Resources/ChromiumSoftwareUpdateAgent.app/Contents/MacOS/ChromiumSoftwareUpdateAgent",
+        "chromium_mac_arm64/updater/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Resources/ChromiumSoftwareUpdateAgent.app/Contents/MacOS/Info.plist",
+        "chromium_mac_arm64/updater/ChromiumUpdater_test.app/Contents/Info.plist",
+        "chromium_mac_arm64/updater/ChromiumUpdater_test.app/Contents/MacOS/ChromiumUpdater_test",
+        "chromium_mac_arm64/updater/ChromiumUpdater_test.app/Contents/PkgInfo",
+      ]
+    }
+
+    outputs = [ "$root_build_dir/old_updater/{{source_target_relative}}" ]
+  }
+}
diff --git a/third_party/updater/README.chromium b/third_party/updater/README.chromium
index cecbde4d..428d246 100644
--- a/third_party/updater/README.chromium
+++ b/third_party/updater/README.chromium
@@ -9,3 +9,13 @@
 used on the macOS platform to perform browser updates. Based on the way that the
 browser installs the macOS updater, it needs to be bundled within the browser
 product itself.
+
+The updater is built from Chromium source, but placed into third_party and
+referenced as a binary because version skew between Chrome and the updater is
+necessary. New versions of the updater are automatically imported into CIPD by
+the 3pp scripts in this directory, and /DEPS defines which versions of the
+updater are pulled from CIPD into the source checkout.
+
+To update the versions of the updater in this directory, wait for the version
+you want to become available in CIPD, then update /DEPS to point to it. If the
+files change, you may also have to update ./BUILD.gn.
diff --git a/tools/aggregation_service/aggregation_service_tool.cc b/tools/aggregation_service/aggregation_service_tool.cc
index 2d1cd9e8..613ad1f 100644
--- a/tools/aggregation_service/aggregation_service_tool.cc
+++ b/tools/aggregation_service/aggregation_service_tool.cc
@@ -121,9 +121,9 @@
     std::string value_str,
     std::string aggregation_mode_str,
     url::Origin reporting_origin,
-    std::string privacy_budget_key,
     std::vector<GURL> processing_urls,
-    bool is_debug_mode_enabled) {
+    bool is_debug_mode_enabled,
+    base::Value::Dict additional_fields) {
   base::Value::Dict result;
 
   absl::optional<content::TestAggregationService::Operation> operation =
@@ -159,8 +159,8 @@
 
   content::TestAggregationService::AssembleRequest request(
       operation.value(), bucket, value, aggregation_mode.value(),
-      std::move(reporting_origin), std::move(privacy_budget_key),
-      std::move(processing_urls), is_debug_mode_enabled);
+      std::move(reporting_origin), std::move(processing_urls),
+      is_debug_mode_enabled, std::move(additional_fields));
 
   base::RunLoop run_loop;
   agg_service_->AssembleReport(
diff --git a/tools/aggregation_service/aggregation_service_tool.h b/tools/aggregation_service/aggregation_service_tool.h
index 4160262..e941869f 100644
--- a/tools/aggregation_service/aggregation_service_tool.h
+++ b/tools/aggregation_service/aggregation_service_tool.h
@@ -60,9 +60,9 @@
                                    std::string value_str,
                                    std::string aggregation_mode_str,
                                    url::Origin reporting_origin,
-                                   std::string privacy_budget_key,
                                    std::vector<GURL> processing_urls,
-                                   bool is_debug_mode_enabled);
+                                   bool is_debug_mode_enabled,
+                                   base::Value::Dict additional_fields);
 
   // Sends the contents of the aggregatable report to the specified reporting
   // url `url` and returns whether it's successful.
diff --git a/tools/aggregation_service/aggregation_service_tool_main.cc b/tools/aggregation_service/aggregation_service_tool_main.cc
index b888619..0d813e7 100644
--- a/tools/aggregation_service/aggregation_service_tool_main.cc
+++ b/tools/aggregation_service/aggregation_service_tool_main.cc
@@ -34,28 +34,29 @@
 constexpr char kSwitchAlternativeAggregationMode[] =
     "alternative-aggregation-mode";
 constexpr char kSwitchReportingOrigin[] = "reporting-origin";
-constexpr char kSwitchPrivacyBudgetKey[] = "privacy-budget-key";
 constexpr char kSwitchHelperKeyUrls[] = "helper-key-urls";
 constexpr char kSwitchHelperKeyFiles[] = "helper-key-files";
 constexpr char kSwitchOutputFile[] = "output-file";
 constexpr char kSwitchOutputUrl[] = "output-url";
 constexpr char kSwitchDisablePayloadEncryption[] = "disable-payload-encryption";
 constexpr char kSwitchAdditionalFields[] = "additional-fields";
+constexpr char kSwitchAdditionalSharedInfoFields[] =
+    "additional-shared-info-fields";
 constexpr char kSwitchEnableDebugMode[] = "enable-debug-mode";
 
 constexpr char kHelpMsg[] = R"(
   aggregation_service_tool [--operation=<operation>] --bucket=<bucket>
   --value=<value> --aggregation-mode=<aggregation_mode>
   --reporting-origin=<reporting_origin>
-  --privacy-budget-key=<privacy_budget_key>
   --helper-keys=<helper_server_keys> [--output=<output_file>]
   [--output-url=<output_url>] [--disable-payload-encryption]
-  [--additional-fields=<additional_fields>] [--debug-mode]
+  [--additional-fields=<additional_fields>]
+  [--additional-shared-info-fields=<additional_shared_info_fields]
+  [--debug-mode]
 
   Examples:
   aggregation_service_tool --operation="histogram" --bucket=1234 --value=5
   --alternative-aggregation-mode="experimental-poplar" --reporting-origin="https://example.com"
-  --privacy-budget-key="test_privacy_budget_key"
   --helper-key-urls="https://a.com/keys.json https://b.com/path/to/keys.json"
   --output-file="output.json" --enable-debug-mode
   --additional-fields=
@@ -63,7 +64,6 @@
   or
   aggregation_service_tool --bucket=1234 --value=5
   --reporting-origin="https://example.com"
-  --privacy-budget-key="test_privacy_budget_key"
   --helper-key-files="keys.json"
   --output-url="https://c.com/reports"
 
@@ -85,7 +85,6 @@
                                    "experimental-poplar" and "default"
                                    (default value, equivalent to "tee-based").
   --reporting-origin = The reporting origin endpoint.
-  --privacy-budget-key = The privacy budgeting key.
   --helper-key-urls = Optional switch to specify the URL(s) to fetch the public
                       key json file(s) from. Spaces are used as separators.
                       Either this or "--helper-key-files" must be specified.
@@ -99,6 +98,10 @@
   --additional-fields = List of key-value pairs of additional fields to be
                         included in the aggregatable report. Only supports
                         string valued fields.
+  --additional-shared-info-fields = List of key-value pairs of additional
+                                    fields to be included in the aggregatable
+                                    report's shared_info dictionary.
+                                    Only supports string valued fields.
   --disable-payload-encryption = Optional switch. If provided, the aggregatable
                                  report's payload(s) will not be encrypted after
                                  serialization.
@@ -137,13 +140,13 @@
       kSwitchValue,
       kSwitchAlternativeAggregationMode,
       kSwitchReportingOrigin,
-      kSwitchPrivacyBudgetKey,
       kSwitchHelperKeyUrls,
       kSwitchHelperKeyFiles,
       kSwitchOutputFile,
       kSwitchOutputUrl,
       kSwitchDisablePayloadEncryption,
       kSwitchAdditionalFields,
+      kSwitchAdditionalSharedInfoFields,
       kSwitchEnableDebugMode};
   for (const auto& provided_switch : command_line.GetSwitches()) {
     if (!base::Contains(kAllowedSwitches, provided_switch.first)) {
@@ -162,8 +165,7 @@
   }
 
   const std::vector<std::string> kRequiredSwitches = {
-      kSwitchBucket, kSwitchValue, kSwitchReportingOrigin,
-      kSwitchPrivacyBudgetKey};
+      kSwitchBucket, kSwitchValue, kSwitchReportingOrigin};
   for (const std::string& required_switch : kRequiredSwitches) {
     if (!command_line.HasSwitch(required_switch.c_str())) {
       LOG(ERROR) << "aggregation_service_tool expects " << required_switch
@@ -260,17 +262,30 @@
   url::Origin reporting_origin = url::Origin::Create(
       GURL(command_line.GetSwitchValueASCII(kSwitchReportingOrigin)));
 
-  std::string privacy_budget_key =
-      command_line.GetSwitchValueASCII(kSwitchPrivacyBudgetKey);
-
   bool is_debug_mode_enabled = command_line.HasSwitch(kSwitchEnableDebugMode);
 
+  base::Value::Dict additional_shared_info_fields;
+  if (command_line.HasSwitch(kSwitchAdditionalFields)) {
+    std::string additional_shared_info_fields_str =
+        command_line.GetSwitchValueASCII(kSwitchAdditionalFields);
+    // `additional_shared_info_fields_str` is formatted like
+    // "key1=value1,key2=value2".
+    base::StringPairs kv_pairs;
+    base::SplitStringIntoKeyValuePairs(
+        additional_shared_info_fields_str, /*key_value_delimiter=*/'=',
+        /*key_value_pair_delimiter=*/',', &kv_pairs);
+    for (std::pair<std::string, std::string>& kv : kv_pairs) {
+      additional_shared_info_fields.Set(std::move(kv.first),
+                                        std::move(kv.second));
+    }
+  }
+
   base::Value::Dict report_dict = tool.AssembleReport(
       std::move(operation), command_line.GetSwitchValueASCII(kSwitchBucket),
       command_line.GetSwitchValueASCII(kSwitchValue),
       std::move(aggregation_mode), std::move(reporting_origin),
-      std::move(privacy_budget_key), std::move(processing_urls),
-      is_debug_mode_enabled);
+      std::move(processing_urls), is_debug_mode_enabled,
+      std::move(additional_shared_info_fields));
   if (report_dict.empty()) {
     LOG(ERROR)
         << "aggregation_service_tool failed to create the aggregatable report.";
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 2ba1a80..57dc1a0 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -58079,6 +58079,7 @@
   <int value="92106937" label="CloseTabSuggestions:disabled"/>
   <int value="92327255" label="DisplayMoveWindowAccels:disabled"/>
   <int value="93832899" label="NtpCustomizationMenuV2:enabled"/>
+  <int value="96148142" label="SyncAndroidPromosWithAlternativeTitle:enabled"/>
   <int value="97091906" label="AutofillSaveCardShowNoThanks:enabled"/>
   <int value="97764742" label="QuickAnswersForMoreLocales:disabled"/>
   <int value="97976428" label="CastUseBlocklistForRemotingQuery:enabled"/>
@@ -58222,6 +58223,7 @@
   <int value="196103097" label="PaintPreviewShowOnStartup:disabled"/>
   <int value="196578182"
       label="AutofillEnableAugmentedPhoneCountryCode:disabled"/>
+  <int value="197180779" label="SearchResumptionModuleAndroid:disabled"/>
   <int value="198386935" label="OmitCorsClientCert:enabled"/>
   <int value="198719062" label="WebAssemblyLazyCompilation:disabled"/>
   <int value="198762155" label="SharingPeerConnectionSender:enabled"/>
@@ -60640,6 +60642,8 @@
   <int value="1806450300" label="WebUsbDeviceDetection:enabled"/>
   <int value="1807374811" label="CCTModuleCache:enabled"/>
   <int value="1808936313" label="AutofillEnableNameSurenameParsing:enabled"/>
+  <int value="1809704744"
+      label="SyncAndroidPromosWithAlternativeTitle:disabled"/>
   <int value="1809940714" label="SpeculativeLaunchServiceWorker:disabled"/>
   <int value="1810258949" label="DisplayLocking:enabled"/>
   <int value="1810311887" label="WebAssemblyThreads:enabled"/>
@@ -60656,6 +60660,7 @@
   <int value="1814310862" label="WebKioskEnableLacros:enabled"/>
   <int value="1814671708" label="disable-password-manager-reauthentication"/>
   <int value="1814854881" label="NearbySharingSelfShareUI:disabled"/>
+  <int value="1815186008" label="SearchResumptionModuleAndroid:enabled"/>
   <int value="1816174635" label="RequestUnbufferedDispatch:enabled"/>
   <int value="1816723085" label="SchemefulSameSite:enabled"/>
   <int value="1816816375" label="MediaAppHandlesAudio:disabled"/>
diff --git a/tools/metrics/histograms/metadata/bluetooth/histograms.xml b/tools/metrics/histograms/metadata/bluetooth/histograms.xml
index d1684ba4..1219d1d0 100644
--- a/tools/metrics/histograms/metadata/bluetooth/histograms.xml
+++ b/tools/metrics/histograms/metadata/bluetooth/histograms.xml
@@ -222,7 +222,7 @@
 </histogram>
 
 <histogram name="Bluetooth.ChromeOS.FastPair.ConnectDevice.Result"
-    enum="BooleanSuccess" expires_after="2022-11-20">
+    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>
@@ -283,7 +283,7 @@
 </histogram>
 
 <histogram name="Bluetooth.ChromeOS.FastPair.Discovered.Version"
-    enum="FastPairVersion" expires_after="2022-11-20">
+    enum="FastPairVersion" expires_after="2022-09-20">
   <owner>shanefitz@google.com</owner>
   <owner>julietlevesque@google.com</owner>
   <owner>chromeos-cross-device-eng@google.com</owner>
@@ -314,7 +314,7 @@
 
 <histogram
     name="Bluetooth.ChromeOS.FastPair.FastPairDataEncryptor.CreateResult"
-    enum="BooleanSuccess" expires_after="2022-06-20">
+    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>
@@ -449,7 +449,7 @@
 </histogram>
 
 <histogram name="Bluetooth.ChromeOS.FastPair.GattConnection.Result"
-    enum="BooleanSuccess" expires_after="2022-06-20">
+    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>
@@ -552,7 +552,7 @@
 </histogram>
 
 <histogram name="Bluetooth.ChromeOS.FastPair.KeyBasedPairing.Write.Result"
-    enum="BooleanSuccess" expires_after="2022-06-20">
+    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>
@@ -564,7 +564,7 @@
 </histogram>
 
 <histogram name="Bluetooth.ChromeOS.FastPair.KeyGenerationResult"
-    enum="BooleanSuccess" expires_after="2022-06-20">
+    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>
@@ -722,7 +722,7 @@
 </histogram>
 
 <histogram name="Bluetooth.ChromeOS.FastPair.PairingMethod"
-    enum="FastPairPairingMethod" expires_after="2022-11-20">
+    enum="FastPairPairingMethod" expires_after="2022-09-20">
   <owner>shanefitz@google.com</owner>
   <owner>julietlevesque@google.com</owner>
   <owner>chromeos-cross-device-eng@google.com</owner>
@@ -812,7 +812,7 @@
 </histogram>
 
 <histogram name="Bluetooth.ChromeOS.FastPair.Passkey.Write.Result"
-    enum="BooleanSuccess" expires_after="2022-06-20">
+    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>
@@ -839,7 +839,7 @@
 </histogram>
 
 <histogram name="Bluetooth.ChromeOS.FastPair.RetroactiveEngagementFunnel.Steps"
-    enum="FastPairRetroactiveEngagementFlowEvent" expires_after="2022-11-20">
+    enum="FastPairRetroactiveEngagementFlowEvent" expires_after="2022-09-20">
   <owner>shanefitz@google.com</owner>
   <owner>julietlevesque@google.com</owner>
   <owner>chromeos-cross-device-eng@google.com</owner>
@@ -853,7 +853,7 @@
 </histogram>
 
 <histogram name="Bluetooth.ChromeOS.FastPair.RetroactivePairing.Result"
-    enum="BooleanSuccess" expires_after="2022-11-20">
+    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>
diff --git a/tools/metrics/histograms/metadata/extensions/histograms.xml b/tools/metrics/histograms/metadata/extensions/histograms.xml
index 090fee2..202e564 100644
--- a/tools/metrics/histograms/metadata/extensions/histograms.xml
+++ b/tools/metrics/histograms/metadata/extensions/histograms.xml
@@ -359,7 +359,7 @@
 </histogram>
 
 <histogram name="Extensions.ContentVerification.ComputeHashesOnInstallResult"
-    enum="BooleanSuccess" expires_after="2022-07-01">
+    enum="BooleanSuccess" expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>lazyboy@chromium.org</owner>
@@ -376,7 +376,7 @@
 </histogram>
 
 <histogram name="Extensions.ContentVerification.ComputeHashesOnInstallTime"
-    units="ms" expires_after="2022-07-01">
+    units="ms" expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>lazyboy@chromium.org</owner>
@@ -391,7 +391,7 @@
 </histogram>
 
 <histogram name="Extensions.ContentVerification.FetchFailureError"
-    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2022-07-01">
+    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>lazyboy@chromium.org</owner>
@@ -521,7 +521,7 @@
 </histogram>
 
 <histogram name="Extensions.CorruptPolicyExtensionDetected3"
-    enum="ExtensionPolicyReinstallReason" expires_after="2022-07-01">
+    enum="ExtensionPolicyReinstallReason" expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>lazyboy@chromium.org</owner>
@@ -539,7 +539,7 @@
 </histogram>
 
 <histogram name="Extensions.CorruptPolicyExtensionResolved" units="ms"
-    expires_after="2022-07-01">
+    expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>lazyboy@chromium.org</owner>
@@ -1517,7 +1517,7 @@
 </histogram>
 
 <histogram name="Extensions.ForceInstalledFailureSessionType{FailureReason}"
-    enum="SessionType" expires_after="2022-07-01">
+    enum="SessionType" expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>managed-devices@google.com</owner>
@@ -1613,7 +1613,7 @@
 </histogram>
 
 <histogram name="Extensions.ForceInstalledReadyTime" units="ms"
-    expires_after="2022-07-01">
+    expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>managed-devices@google.com</owner>
@@ -1641,7 +1641,7 @@
 </histogram>
 
 <histogram name="Extensions.ForceInstalledStage2"
-    enum="ExtensionInstallationStage" expires_after="2022-07-01">
+    enum="ExtensionInstallationStage" expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>managed-devices@google.com</owner>
@@ -1681,7 +1681,7 @@
 </histogram>
 
 <histogram name="Extensions.ForceInstalledTime{ExtensionInstallStages}"
-    units="ms" expires_after="2022-07-01">
+    units="ms" expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>managed-devices@google.com</owner>
@@ -1727,7 +1727,7 @@
 </histogram>
 
 <histogram name="Extensions.ForceInstalled{ErrorType}FetchTries"
-    units="retries" expires_after="2022-07-01">
+    units="retries" expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>managed-devices@google.com</owner>
@@ -1749,7 +1749,7 @@
 </histogram>
 
 <histogram name="Extensions.ForceInstalled{ErrorType}NetworkErrorCode"
-    enum="NetErrorCodes" expires_after="2022-07-01">
+    enum="NetErrorCodes" expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>managed-devices@google.com</owner>
@@ -3672,7 +3672,7 @@
 
 <histogram
     name="Extensions.{ExtensionSource}ForceInstalledFailureManifestInvalidErrorDetail2"
-    enum="ManifestInvalidError" expires_after="2022-07-01">
+    enum="ManifestInvalidError" expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>managed-devices@google.com</owner>
@@ -3696,7 +3696,7 @@
 
 <histogram
     name="Extensions.{ExtensionSource}ForceInstalled{ErrorType}HttpErrorCode2"
-    enum="HttpResponseCode" expires_after="2022-07-01">
+    enum="HttpResponseCode" expires_after="2022-12-01">
   <owner>vkovalova@google.com</owner>
   <owner>burunduk@chromium.org</owner>
   <owner>managed-devices@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/web_apk/histograms.xml b/tools/metrics/histograms/metadata/web_apk/histograms.xml
index fe4e5ee..71070014 100644
--- a/tools/metrics/histograms/metadata/web_apk/histograms.xml
+++ b/tools/metrics/histograms/metadata/web_apk/histograms.xml
@@ -178,6 +178,9 @@
 
 <histogram name="WebApk.Notification.Permission.Status"
     enum="BooleanWebApkNotificationPermission" expires_after="2022-12-04">
+  <obsolete>
+    Replaced by WebApk.Notification.Permission.Status2 in June 20220.
+  </obsolete>
   <owner>hartmanng@chromium.org</owner>
   <owner>
     src/chrome/android/java/src/org/chromium/chrome/browser/webapps/OWNERS
@@ -188,6 +191,19 @@
   </summary>
 </histogram>
 
+<histogram name="WebApk.Notification.Permission.Status2" enum="ContentSetting"
+    expires_after="2022-12-04">
+  <owner>hartmanng@chromium.org</owner>
+  <owner>mvanouwerkerk@chromium.org</owner>
+  <owner>
+    src/chrome/android/java/src/org/chromium/chrome/browser/webapps/OWNERS
+  </owner>
+  <summary>
+    When a WebAPK receives a notification, log whether it has permission to
+    display that notification.
+  </summary>
+</histogram>
+
 <histogram name="WebApk.Session.TotalDuration2{WebApkDistributorType}"
     units="ms" expires_after="2022-12-16">
   <owner>hartmanng@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/webauthn/histograms.xml b/tools/metrics/histograms/metadata/webauthn/histograms.xml
index 99aa463f..793e700 100644
--- a/tools/metrics/histograms/metadata/webauthn/histograms.xml
+++ b/tools/metrics/histograms/metadata/webauthn/histograms.xml
@@ -119,16 +119,18 @@
 
 <histogram name="WebAuthentication.ChromeOS.GetAssertionStatus"
     enum="WebAuthenticationChromeOSGetAssertionResult"
-    expires_after="2022-05-01">
+    expires_after="2023-06-07">
   <owner>martinkr@google.com</owner>
+  <owner>hcyang@google.com</owner>
   <owner>chrome-webauthn@google.com</owner>
   <summary>Records the outcome of GetAssertion on Chrome OS.</summary>
 </histogram>
 
 <histogram name="WebAuthentication.ChromeOS.MakeCredentialStatus"
     enum="WebAuthenticationChromeOSMakeCredentialResult"
-    expires_after="2022-12-31">
+    expires_after="2023-06-07">
   <owner>martinkr@google.com</owner>
+  <owner>hcyang@google.com</owner>
   <owner>chrome-webauthn@google.com</owner>
   <summary>Records the outcome of MakeCredential on Chrome OS.</summary>
 </histogram>
diff --git a/tools/perf/chrome_telemetry_build/binary_dependencies.json b/tools/perf/chrome_telemetry_build/binary_dependencies.json
index 01ea27f..ab330d1 100644
--- a/tools/perf/chrome_telemetry_build/binary_dependencies.json
+++ b/tools/perf/chrome_telemetry_build/binary_dependencies.json
@@ -31,30 +31,6 @@
         }
       }
     },
-    "flash": {
-      "file_info": {
-        "linux_x86_64": {
-          "local_paths": [
-            "../../../third_party/adobe/flash/binaries/ppapi/linux_64/libpepflashplayer.so"
-          ]
-        },
-        "mac_x86_64": {
-          "local_paths": [
-            "../../../third_party/adobe/flash/binaries/ppapi/mac_64/PepperFlashPlayer.plugin"
-          ]
-        },
-        "win_AMD64": {
-          "local_paths": [
-            "../../../third_party/adobe/flash/binaries/ppapi/win_x64/pepflashplayer.dll"
-          ]
-        },
-        "win_x86": {
-          "local_paths": [
-            "../../../third_party/adobe/flash/binaries/ppapi/win/pepflashplayer.dll"
-          ]
-        }
-      }
-    },
     "generate_breakpad_symbols": {
       "file_info": {
         "mac_arm64": {
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index f5dad8c..1b288fca 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,24 +5,24 @@
             "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux_arm64/49b4b5dcbc312d8d2c3751cf29238b8efeb4e494/trace_processor_shell"
         },
         "win": {
-            "hash": "efe7a86eb8f691460e74369544f580b6e7d3b7b6",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/dbb5ff7cb010a26d1dc8e87e74a872adb1f0dc96/trace_processor_shell.exe"
+            "hash": "65a06566ae6a1f5cbccb81494928088bd7df8284",
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/c05294a1704cc6992869ad438342328ca2b38b8d/trace_processor_shell.exe"
         },
         "linux_arm": {
             "hash": "58893933be305d3bfe0a72ebebcacde2ac3ca893",
             "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux_arm/49b4b5dcbc312d8d2c3751cf29238b8efeb4e494/trace_processor_shell"
         },
         "mac": {
-            "hash": "dd2726ddb8b055ec80e5aef6fcd2b32a4474fc16",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/dbb5ff7cb010a26d1dc8e87e74a872adb1f0dc96/trace_processor_shell"
+            "hash": "b690a23e0ce4129d2a5ff8d316dd8d5a13d52c3f",
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/c05294a1704cc6992869ad438342328ca2b38b8d/trace_processor_shell"
         },
         "mac_arm64": {
             "hash": "e1ad4861384b06d911a65f035317914b8cc975c6",
             "full_remote_path": "perfetto-luci-artifacts/v25.0/mac-arm64/trace_processor_shell"
         },
         "linux": {
-            "hash": "50646fa003794b710c009c4d3291653ff5852975",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/dbb5ff7cb010a26d1dc8e87e74a872adb1f0dc96/trace_processor_shell"
+            "hash": "ca3ee5e4a577e0de91bde20e6260dbfe60b89dd8",
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/c05294a1704cc6992869ad438342328ca2b38b8d/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/ui/android/java/src/org/chromium/ui/resources/dynamics/ViewResourceAdapter.java b/ui/android/java/src/org/chromium/ui/resources/dynamics/ViewResourceAdapter.java
index 32158e7..2479c4e 100644
--- a/ui/android/java/src/org/chromium/ui/resources/dynamics/ViewResourceAdapter.java
+++ b/ui/android/java/src/org/chromium/ui/resources/dynamics/ViewResourceAdapter.java
@@ -52,6 +52,7 @@
     private long mLastGetBitmapTimestamp;
     private AcceleratedImageReader mReader;
     private boolean mUseHardwareBitmapDraw;
+    private boolean mDebugViewAttachedToWindowListenerAdded;
     // Incremented each time we enqueue a Hardware drawn Bitmap. Only used if
     // |mUseHardwareBitmapDraw| is true.
     protected AtomicInteger mCurrentBitmapRequestId;
@@ -265,9 +266,12 @@
      */
     public ViewResourceAdapter(View view, boolean useHardwareBitmapDraw) {
         mView = view;
+        mDebugViewAttachedToWindowListenerAdded = false;
         mView.addOnLayoutChangeListener(this);
         mDirtyRect.set(0, 0, mView.getWidth(), mView.getHeight());
-        mUseHardwareBitmapDraw = useHardwareBitmapDraw;
+        // Enforce hardware accelerated drawing on android Q+ where it's supported.
+        mUseHardwareBitmapDraw =
+                useHardwareBitmapDraw && Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q;
         if (mUseHardwareBitmapDraw) {
             if (sHandler == null) {
                 HandlerThread thread = new HandlerThread("ViewResourceAdapterThread");
@@ -294,26 +298,16 @@
         return bitmap;
     }
 
-    // Software or hardware draw will both need to follow this pattern.
-    //
-    // Note that this method restricts the captured area to the rectangle defined by |mDirtyRect|.
-    private void captureCommon(Canvas canvas) {
-        onCaptureStart(canvas, mDirtyRect.isEmpty() ? null : mDirtyRect);
-        if (!mDirtyRect.isEmpty()) canvas.clipRect(mDirtyRect);
-        capture(canvas);
-        onCaptureEnd();
-    }
-
     // This uses a RecordingNode to store all the required draw instructions without doing
     // them upfront. And then on a threadpool task we grab a hardware canvas (required to use a
     // RenderNode) and draw it using the hardware accelerated canvas.
     @RequiresApi(Build.VERSION_CODES.Q)
-    private void captureWithHardwareDraw() {
+    private boolean captureWithHardwareDraw() {
         try (TraceEvent e = TraceEvent.scoped("ViewResourceAdapter:captureWithHardwareDraw")) {
             if (mView.getWidth() == 0 || mView.getHeight() == 0) {
                 // We haven't actually laid out this view yet no point in requesting a screenshot.
                 // Keep this in sync with other restrictions in init().
-                return;
+                return false;
             }
 
             // Since state is replaced with a whole new object on a different thread if we grab a
@@ -348,19 +342,28 @@
                 renderNode.setPosition(0, 0, mView.getWidth(), mView.getHeight());
 
                 Canvas canvas = renderNode.beginRecording();
-                captureCommon(canvas);
-
+                boolean captureSuccess = captureHardware(canvas, false);
                 renderNode.endRecording();
-                currentState.mRequestNewDraw = false;
-                mReader.requestDraw(renderNode);
+                if (captureSuccess) {
+                    onDrawInstructionsAvailable(renderNode, currentState);
+                }
+                return captureSuccess;
             }
+            return true;
         }
     }
 
+    @SuppressWarnings("NewApi")
+    private void onDrawInstructionsAvailable(
+            RenderNode renderNode, AcceleratedImageReader.State currentState) {
+        currentState.mRequestNewDraw = false;
+        mReader.requestDraw(renderNode);
+    }
+
     private void captureWithSoftwareDraw() {
         try (TraceEvent e = TraceEvent.scoped("ViewResourceAdapter:captureWithSoftwareDraw")) {
             Canvas canvas = new Canvas(mBitmap);
-            captureCommon(canvas);
+            captureCommon(canvas, true);
         }
     }
 
@@ -371,28 +374,32 @@
      * @return A {@link Bitmap} representing the {@link View}.
      */
     @Override
+    @SuppressWarnings("NewApi")
     public Bitmap getBitmap() {
         mAdapterThreadChecker.assertOnValidThread();
         TraceEvent.begin("ViewResourceAdapter:getBitmap");
         super.getBitmap();
-
+        boolean bitmapReady = false;
         if (mLastGetBitmapTimestamp > 0) {
             RecordHistogram.recordLongTimesHistogram("ViewResourceAdapter.GetBitmapInterval",
                     SystemClock.elapsedRealtime() - mLastGetBitmapTimestamp);
         }
 
         if (mUseHardwareBitmapDraw) {
-            captureWithHardwareDraw();
+            bitmapReady = captureWithHardwareDraw();
         } else if (validateBitmap()) {
             captureWithSoftwareDraw();
+            bitmapReady = true;
         } else {
             assert mBitmap.getWidth() == 1 && mBitmap.getHeight() == 1;
             mBitmap.setPixel(0, 0, Color.TRANSPARENT);
         }
 
-        mDirtyRect.setEmpty();
+        if (bitmapReady) {
+            mDirtyRect.setEmpty();
+            mLastGetBitmapTimestamp = SystemClock.elapsedRealtime();
+        }
 
-        mLastGetBitmapTimestamp = SystemClock.elapsedRealtime();
         TraceEvent.end("ViewResourceAdapter:getBitmap");
         return mBitmap;
     }
@@ -517,6 +524,58 @@
     }
 
     /**
+     * Called to draw the {@link View}'s contents into the passed in {@link Canvas}.
+     * @param canvas The {@link Canvas} that will be drawn to.
+     * @param drawWhileDetached drawing while detached causes crashes for both software and
+     * hardware renderer, since enabling hardware renderer caused a regression in number of
+     * crashes, this boolean will only be true for software renderer, and will be removed
+     * later on if the issue was fixed for the hardware renderer and logic for avoiding the
+     * draw would be the same for both hardware and software renderer.
+     * Software or hardware draw will both need to follow this pattern.
+     * @return true if the draw is successful, false if we couldn't draw because the view is
+     * detached.
+     */
+    protected boolean captureCommon(Canvas canvas, boolean drawWhileDetached) {
+        boolean willDraw = drawWhileDetached || mView.isAttachedToWindow();
+        if (!willDraw) {
+            return false;
+        }
+        onCaptureStart(canvas, mDirtyRect.isEmpty() ? null : mDirtyRect);
+        if (!mDirtyRect.isEmpty()) {
+            canvas.clipRect(mDirtyRect);
+        }
+        capture(canvas);
+        onCaptureEnd();
+        return true;
+    }
+
+    protected boolean captureHardware(Canvas canvas, boolean drawWhileDetached) {
+        if (captureCommon(canvas, drawWhileDetached)) {
+            return true;
+        }
+        // TODO(crbug/1318009): remove this code or promote it to default once we determine if this
+        // is the proper fix.
+        TraceEvent.instant("ViewResourceAdapter::DrawAttemptedWhileDetached");
+        if (!mDebugViewAttachedToWindowListenerAdded) {
+            mDebugViewAttachedToWindowListenerAdded = true;
+            mView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
+                @Override
+                public void onViewAttachedToWindow(View view) {
+                    TraceEvent.instant("ViewResourceAdapter::ViewAttachedToWindow");
+                    view.removeOnAttachStateChangeListener(this);
+                    mDebugViewAttachedToWindowListenerAdded = false;
+                }
+
+                @Override
+                public void onViewDetachedFromWindow(View view) {
+                    TraceEvent.instant("ViewResourceAdapter::ViewDetachedFromWindow");
+                }
+            });
+        }
+        return false;
+    }
+
+    /**
      * Called after {@link #capture(Canvas)}.
      */
     protected void onCaptureEnd() {
diff --git a/ui/android/junit/src/org/chromium/ui/resources/dynamics/ViewResourceAdapterTest.java b/ui/android/junit/src/org/chromium/ui/resources/dynamics/ViewResourceAdapterTest.java
index 1391e23..da93e80 100644
--- a/ui/android/junit/src/org/chromium/ui/resources/dynamics/ViewResourceAdapterTest.java
+++ b/ui/android/junit/src/org/chromium/ui/resources/dynamics/ViewResourceAdapterTest.java
@@ -58,7 +58,9 @@
              * Otherwise the GC-related tests would fail.
              */
             @Override
-            protected void capture(Canvas canvas) {}
+            protected boolean captureCommon(Canvas canvas, boolean drawWhileDetached) {
+                return true;
+            }
         };
 
     }
diff --git a/ui/chromeos/translations/ui_chromeos_strings_af.xtb b/ui/chromeos/translations/ui_chromeos_strings_af.xtb
index eae4074..348952b 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_af.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_af.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Genre</translation>
 <translation id="1254593899333212300">Direkte internetverbinding</translation>
 <translation id="1272293450992660632">PIN-waardes stem nie ooreen nie.</translation>
+<translation id="127650757582748357">Saamgeperste BZIP2-argief</translation>
 <translation id="1280820357415527819">Soek tans vir mobiele netwerke …</translation>
 <translation id="1291603679744561561">SIM is gesluit</translation>
 <translation id="1293556467332435079">Lêers</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Kaas</translation>
 <translation id="2781645665747935084">Belgiese</translation>
 <translation id="2782104745158847185">Kon nie Linux-program installeer nie</translation>
+<translation id="2788520643285360081">7-ZIP-argief</translation>
 <translation id="2803375539583399270">Voer PIN in</translation>
 <translation id="2820957248982571256">Skandeer tans …</translation>
+<translation id="2822595620066756134">Saamgeperste GZIP-argief</translation>
 <translation id="2830077785865012357">Chinees-Zhujin</translation>
 <translation id="2843806747483486897">Verander verstek …</translation>
 <translation id="2850124913210091882">Rugsteun</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">Litaus</translation>
 <translation id="3587482841069643663">Alles</translation>
 <translation id="3592251141500063301">Kon nie <ph name="FILE_NAME" /> vanlyn beskikbaar maak nie</translation>
+<translation id="3593874215226880809">Saamgeperste LZIP-argief</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">Kanadese Frans</translation>
 <translation id="3606220979431771195">Turkse F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">Kanselleer <ph name="ACTIVITY_DESCRIPTION" />.</translation>
 <translation id="3690128548376345212">Netwerk <ph name="NETWORK_INDEX" /> van <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />; nie geaktiveer nie; <ph name="CONNECTION_STATUS" />; seinsterkte <ph name="SIGNAL_STRENGTH" />%; besonderhede</translation>
 <translation id="3691184985318546178">Singalees</translation>
+<translation id="3703620396751288986">ZIP-argief</translation>
 <translation id="3726463242007121105">Hierdie toestel kan nie oopgemaak word nie want sy lêerstelsel word nie gesteun nie.</translation>
 <translation id="3727148787322499904">As hierdie instelling verander word, sal dit alle gedeelde netwerke raak</translation>
 <translation id="3737576078404241332">Verwyder uit kantbalk</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">Tsjeggies met Qwerty-sleutelbord</translation>
 <translation id="4656777537938206294">Maak lêers vanlyn beskikbaar</translation>
 <translation id="4658782175094886150">Persoon in sneeu</translation>
+<translation id="4661996069183330363">TAR-argief</translation>
 <translation id="4669606053856530811">Lede van "<ph name="SOURCE_NAME" />" sal toegang verloor tensy hierdie items met hulle gedeel word.</translation>
 <translation id="467809019005607715">Google Skyfies</translation>
 <translation id="4690246192099372265">Sweeds</translation>
@@ -929,6 +935,7 @@
 <translation id="8903931173357132290">Gegradueerde</translation>
 <translation id="8912078710089354287">Hond waai stert</translation>
 <translation id="8919081441417203123">Deens</translation>
+<translation id="8965273390142984105">Saamgeperste LZOP-argief</translation>
 <translation id="8965697826696209160">Daar is nie genoeg spasie nie.</translation>
 <translation id="8997962250644902079">Chinees- (tradisioneel) Pinjin</translation>
 <translation id="9003940392834790328">Netwerk <ph name="NETWORK_INDEX" /> van <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, seinsterkte <ph name="SIGNAL_STRENGTH" />%, deur jou administrateur bestuur, besonderhede</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bs.xtb b/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
index e183ee5..ed69575c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Žanr</translation>
 <translation id="1254593899333212300">Direktna internetska veza</translation>
 <translation id="1272293450992660632">Vrijednosti PIN-a se ne podudaraju.</translation>
+<translation id="127650757582748357">Kompresirana BZIP2 arhiva</translation>
 <translation id="1280820357415527819">Traženje mobilnih mreža</translation>
 <translation id="1291603679744561561">SIM je zaključan</translation>
 <translation id="1293556467332435079">Fajlovi</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Sir</translation>
 <translation id="2781645665747935084">belgijska</translation>
 <translation id="2782104745158847185">Greška prilikom instalacije Linux aplikacije</translation>
+<translation id="2788520643285360081">7-Zip arhiva</translation>
 <translation id="2803375539583399270">Unesite PIN</translation>
 <translation id="2820957248982571256">Skeniranje...</translation>
+<translation id="2822595620066756134">Kompresirana GZIP arhiva</translation>
 <translation id="2830077785865012357">kineski zhuyin</translation>
 <translation id="2843806747483486897">Promijenite zadano...</translation>
 <translation id="2850124913210091882">Napravi sigurnosnu kopiju</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">Litvanska</translation>
 <translation id="3587482841069643663">Sve</translation>
 <translation id="3592251141500063301">Fajl <ph name="FILE_NAME" /> nismo uspjeli učiniti dostupnim offline</translation>
+<translation id="3593874215226880809">Kompresirana LZIP arhiva</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">Kanadska francuska</translation>
 <translation id="3606220979431771195">Turska-f</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">Otkaži <ph name="ACTIVITY_DESCRIPTION" /></translation>
 <translation id="3690128548376345212">Mreže: <ph name="NETWORK_INDEX" /> od <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, Deaktivirano, <ph name="CONNECTION_STATUS" />, Jačina signala <ph name="SIGNAL_STRENGTH" />%, Detalji</translation>
 <translation id="3691184985318546178">sinhaleški</translation>
+<translation id="3703620396751288986">ZIP arhiva</translation>
 <translation id="3726463242007121105">Nije moguće otvoriti uređaj jer sistem fajlova nije podržan.</translation>
 <translation id="3727148787322499904">Promjenom ove postavke uticat ćete na sve dijeljene mreže</translation>
 <translation id="3737576078404241332">Ukloni s bočne trake</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">češki s Qwerty tastaturom</translation>
 <translation id="4656777537938206294">Učinite fajlove dostupnim offline</translation>
 <translation id="4658782175094886150">Osoba na snijegu</translation>
+<translation id="4661996069183330363">TAR arhiva</translation>
 <translation id="4669606053856530811">Članovi tima „<ph name="SOURCE_NAME" />“ će izgubiti pristup osim ako se ove stavke ne dijele s njima.</translation>
 <translation id="467809019005607715">Google Slides</translation>
 <translation id="4690246192099372265">Švedska</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">Diplomac</translation>
 <translation id="8912078710089354287">Pas maše repom</translation>
 <translation id="8919081441417203123">danski</translation>
+<translation id="8965273390142984105">Kompresirana LZOP arhiva</translation>
 <translation id="8965697826696209160">Nema dovoljno prostora.</translation>
 <translation id="8997962250644902079">kineski (tradicionalni) pinyin</translation>
 <translation id="9003940392834790328">Mreža <ph name="NETWORK_INDEX" /> od <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, jačina signala <ph name="SIGNAL_STRENGTH" />%, upravlja vaš administrator, detalji</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_el.xtb b/ui/chromeos/translations/ui_chromeos_strings_el.xtb
index cbbe16a9..6be9233 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_el.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_el.xtb
@@ -36,6 +36,7 @@
 <translation id="1249250836236328755">Είδος</translation>
 <translation id="1254593899333212300">Άμεση σύνδεση στο διαδίκτυο</translation>
 <translation id="1272293450992660632">Οι τιμές PIN δεν ταιριάζουν.</translation>
+<translation id="127650757582748357">Συμπιεσμένο αρχείο BZIP2</translation>
 <translation id="1280820357415527819">Αναζήτηση για δίκτυα κινητής τηλεφωνίας</translation>
 <translation id="1291603679744561561">Η κάρτα SIM είναι κλειδωμένη</translation>
 <translation id="1293556467332435079">Αρχεία</translation>
@@ -209,8 +210,10 @@
 <translation id="2771816809568414714">Τυρί</translation>
 <translation id="2781645665747935084">Βελγικά</translation>
 <translation id="2782104745158847185">Παρουσιάστηκε σφάλμα κατά την εγκατάσταση της εφαρμογής Linux</translation>
+<translation id="2788520643285360081">Αρχείο 7-Zip</translation>
 <translation id="2803375539583399270">Εισαγωγή PIN</translation>
 <translation id="2820957248982571256">Σάρωση…</translation>
+<translation id="2822595620066756134">Συμπιεσμένο αρχείο GZIP</translation>
 <translation id="2830077785865012357">Κινεζικά Zhuyin</translation>
 <translation id="2843806747483486897">Αλλαγή προεπιλογής...</translation>
 <translation id="2850124913210091882">Δημιουργία αντιγράφων ασφαλείας</translation>
@@ -307,6 +310,7 @@
 </translation>
 <translation id="3587482841069643663">Όλες</translation>
 <translation id="3592251141500063301">Το αρχείο <ph name="FILE_NAME" /> δεν μπορεί να γίνει διαθέσιμο εκτός σύνδεσης.</translation>
+<translation id="3593874215226880809">Συμπιεσμένο αρχείο LZIP</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">Γαλλικά Καναδά</translation>
 <translation id="3606220979431771195">Τουρκικά-F</translation>
@@ -319,6 +323,7 @@
 <translation id="3689865792480713551">Ακύρωση <ph name="ACTIVITY_DESCRIPTION" />.</translation>
 <translation id="3690128548376345212">Δίκτυο <ph name="NETWORK_INDEX" /> από <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, Απενεργοποιημένο, <ph name="CONNECTION_STATUS" />, Ισχύς σήματος <ph name="SIGNAL_STRENGTH" />%, Λεπτομέρειες</translation>
 <translation id="3691184985318546178">Σινχάλα</translation>
+<translation id="3703620396751288986">Αρχείο ZIP</translation>
 <translation id="3726463242007121105">Δεν είναι δυνατό το άνοιγμα αυτής της συσκευής επειδή δεν υποστηρίζεται το σύστημα αρχείων της.</translation>
 <translation id="3727148787322499904">Η αλλαγή αυτής της ρύθμισης θα επηρεάσει όλα τα κοινόχρηστα δίκτυα</translation>
 <translation id="3737576078404241332">Κατάργηση από την πλευρική γραμμή</translation>
@@ -421,6 +426,7 @@
 <translation id="4646813851450205600">Τσεχικά με πληκτρολόγιο QWERTY</translation>
 <translation id="4656777537938206294">Κάντε τα αρχεία διαθέσιμα εκτός σύνδεσης</translation>
 <translation id="4658782175094886150">Άτομο στο χιόνι</translation>
+<translation id="4661996069183330363">Αρχείο TAR</translation>
 <translation id="4669606053856530811">Τα μέλη του "<ph name="SOURCE_NAME" />" θα χάσουν την πρόσβαση, εκτός εάν αυτά τα στοιχεία είναι κοινόχρηστα για τα συγκεκριμένα μέλη.</translation>
 <translation id="467809019005607715">Παρουσιάσεις Google</translation>
 <translation id="4690246192099372265">Σουηδικά</translation>
@@ -953,6 +959,7 @@
 <translation id="8912078710089354287">Σκύλος που κουνάει την ουρά του</translation>
 <translation id="8919081441417203123">Δανικά
 </translation>
+<translation id="8965273390142984105">Συμπιεσμένο αρχείο LZOP</translation>
 <translation id="8965697826696209160">Δεν υπάρχει αρκετός χώρος.</translation>
 <translation id="8997962250644902079">Κινεζικά (Παραδοσιακά) Pinyin</translation>
 <translation id="9003940392834790328">Δίκτυο <ph name="NETWORK_INDEX" /> από <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, Ισχύς σήματος <ph name="SIGNAL_STRENGTH" />%, Διαχειριζόμενο από τον διαχειριστή, Λεπτομέρειες</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fil.xtb b/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
index fda7631..ce5bda7 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Genre</translation>
 <translation id="1254593899333212300">Direktang koneksyon ng Internet</translation>
 <translation id="1272293450992660632">Hindi nagtutugma ang mga value ng PIN.</translation>
+<translation id="127650757582748357">BZIP2 compressed archive</translation>
 <translation id="1280820357415527819">Naghahanap ng mga mobile network</translation>
 <translation id="1291603679744561561">Naka-lock ang SIM</translation>
 <translation id="1293556467332435079">Mga File</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Keso</translation>
 <translation id="2781645665747935084">Belgian</translation>
 <translation id="2782104745158847185">Nagkaroon ng error sa pag-install ng Linux application</translation>
+<translation id="2788520643285360081">7-Zip archive</translation>
 <translation id="2803375539583399270">Ilagay ang PIN</translation>
 <translation id="2820957248982571256">Nagsa-scan...</translation>
+<translation id="2822595620066756134">GZIP compressed archive</translation>
 <translation id="2830077785865012357">Chinese Zhuyin</translation>
 <translation id="2843806747483486897">Baguhin ang default...</translation>
 <translation id="2850124913210091882">I-back up</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">Lithuanian</translation>
 <translation id="3587482841069643663">Lahat</translation>
 <translation id="3592251141500063301">Hindi magawang available offline ang <ph name="FILE_NAME" /></translation>
+<translation id="3593874215226880809">LZIP compressed archive</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">Canadian French</translation>
 <translation id="3606220979431771195">Turkish-F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">Kanselahin ang <ph name="ACTIVITY_DESCRIPTION" />.</translation>
 <translation id="3690128548376345212">Network <ph name="NETWORK_INDEX" /> sa <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, Hindi Naka-activate, <ph name="CONNECTION_STATUS" />, Lakas ng Signal <ph name="SIGNAL_STRENGTH" />%, Mga Detalye</translation>
 <translation id="3691184985318546178">Sinhala</translation>
+<translation id="3703620396751288986">ZIP archive</translation>
 <translation id="3726463242007121105">Hindi mabuksan ang device na ito dahil hindi sinusuportahan ang filesystem nito.</translation>
 <translation id="3727148787322499904">Maaapektuhan ang lahat ng nakabahaging network kung babaguhin ang setting na ito</translation>
 <translation id="3737576078404241332">Alisin sa sidebar</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">Czech na may Qwerty keyboard</translation>
 <translation id="4656777537938206294">Gawing available offline ang mga file</translation>
 <translation id="4658782175094886150">Tao sa snow</translation>
+<translation id="4661996069183330363">TAR archive</translation>
 <translation id="4669606053856530811">Mawawalan ng access ang mga miyembro ng '<ph name="SOURCE_NAME" />' maliban na lang kung ibinahagi sa kanila ang mga item na ito.</translation>
 <translation id="467809019005607715">Google Slides</translation>
 <translation id="4690246192099372265">Swedish</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">Nagtapos</translation>
 <translation id="8912078710089354287">Asong kumakawag-kawag ang buntot</translation>
 <translation id="8919081441417203123">Danish</translation>
+<translation id="8965273390142984105">LZOP compressed archive</translation>
 <translation id="8965697826696209160">Walang sapat na espasyo.</translation>
 <translation id="8997962250644902079">Chinese (Traditional) Pinyin</translation>
 <translation id="9003940392834790328">Network <ph name="NETWORK_INDEX" /> sa <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, Lakas ng Signal <ph name="SIGNAL_STRENGTH" />%, Pinapamahalaan ng iyong Administrator, Mga Detalye</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hr.xtb b/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
index adb1793..6fb73c9f 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Žanr</translation>
 <translation id="1254593899333212300">Izravna internetska veza</translation>
 <translation id="1272293450992660632">PIN-ovi se ne podudaraju</translation>
+<translation id="127650757582748357">BZIP2 komprimirana arhiva</translation>
 <translation id="1280820357415527819">Traženje mobilnih mreža</translation>
 <translation id="1291603679744561561">SIM je zaključan</translation>
 <translation id="1293556467332435079">Datoteke</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Sir</translation>
 <translation id="2781645665747935084">belgijska</translation>
 <translation id="2782104745158847185">Pogreška pri instaliranju Linux aplikacije</translation>
+<translation id="2788520643285360081">7-Zip arhiva</translation>
 <translation id="2803375539583399270">Unesite PIN</translation>
 <translation id="2820957248982571256">Traženje...</translation>
+<translation id="2822595620066756134">GZIP komprimirana arhiva</translation>
 <translation id="2830077785865012357">kineski zhuyin</translation>
 <translation id="2843806747483486897">Promijeni zadano...</translation>
 <translation id="2850124913210091882">Stvori sigurnosnu kopiju</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">Litavski</translation>
 <translation id="3587482841069643663">Sve</translation>
 <translation id="3592251141500063301">Postavljanje izvanmrežne dostupnosti datoteke <ph name="FILE_NAME" /> nije uspjelo</translation>
+<translation id="3593874215226880809">LZIP komprimirana arhiva</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">francuska (kanadska)</translation>
 <translation id="3606220979431771195">Turska F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">Otkažite <ph name="ACTIVITY_DESCRIPTION" />.</translation>
 <translation id="3690128548376345212">Mreža <ph name="NETWORK_INDEX" /> od <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, nije aktivirana, <ph name="CONNECTION_STATUS" />, jačina signala <ph name="SIGNAL_STRENGTH" />%, pojedinosti</translation>
 <translation id="3691184985318546178">sinhaleški</translation>
+<translation id="3703620396751288986">ZIP arhiva</translation>
 <translation id="3726463242007121105">Nije moguće otvoriti ovaj uređaj jer nije podržan njegov datotečni sustav.</translation>
 <translation id="3727148787322499904">Promjena te postavke utjecat će na sve dijeljene mreže</translation>
 <translation id="3737576078404241332">Ukloni s bočne trake</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">češki s QWERTY tipkovnicom</translation>
 <translation id="4656777537938206294">Učinite datoteke dostupnima izvanmrežno</translation>
 <translation id="4658782175094886150">Osoba na snijegu</translation>
+<translation id="4661996069183330363">TAR arhiva</translation>
 <translation id="4669606053856530811">Članovi grupe "<ph name="SOURCE_NAME" />" izgubit će pristup ako se te stavke ne podijele s njima.</translation>
 <translation id="467809019005607715">Google prezentacije</translation>
 <translation id="4690246192099372265">Švedski</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">Prvostupnik</translation>
 <translation id="8912078710089354287">Pas maše repom</translation>
 <translation id="8919081441417203123">Danski</translation>
+<translation id="8965273390142984105">LZOP komprimirana arhiva</translation>
 <translation id="8965697826696209160">Nema dovoljno prostora.</translation>
 <translation id="8997962250644902079">kineski (tradicionalni) pinyin</translation>
 <translation id="9003940392834790328">Mreža <ph name="NETWORK_INDEX" /> od <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, jačina signala <ph name="SIGNAL_STRENGTH" />%, upravlja administrator, pojedinosti</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
index e2ad4cf..c593156 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Ժանրը</translation>
 <translation id="1254593899333212300">Համացանցի անմիջական կապակցում</translation>
 <translation id="1272293450992660632">PIN-ի արժեքները չեն համընկնում:</translation>
+<translation id="127650757582748357">BZIP2 սեղմված արխիվ</translation>
 <translation id="1280820357415527819">Բջջային ցանցերի որոնում</translation>
 <translation id="1291603679744561561">SIM քարտը կողպված է</translation>
 <translation id="1293556467332435079">Ֆայլեր</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Պանիր</translation>
 <translation id="2781645665747935084">Բելգիական</translation>
 <translation id="2782104745158847185">Չհաջողվեց տեղադրել Լինուքսի հավելվածը</translation>
+<translation id="2788520643285360081">7-Zip արխիվ</translation>
 <translation id="2803375539583399270">Մուտքագրեք PIN կոդը</translation>
 <translation id="2820957248982571256">Որոնում…</translation>
+<translation id="2822595620066756134">GZIP սեղմված արխիվ</translation>
 <translation id="2830077785865012357">չինարեն (ժույին)</translation>
 <translation id="2843806747483486897">Փոխել կանխադրվածը…</translation>
 <translation id="2850124913210091882">Կրկնօրինակել</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">Լիտվական</translation>
 <translation id="3587482841069643663">Բոլորը</translation>
 <translation id="3592251141500063301">Չհաջողվեց ներբեռնել «<ph name="FILE_NAME" />» ֆայլը՝ անցանց ռեժիմում օգտագործելու համար</translation>
+<translation id="3593874215226880809">LZIP սեղմված արխիվ</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">Կանադական (ֆրանսիական)</translation>
 <translation id="3606220979431771195">Թուրքական F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">Չեղարկել՝ <ph name="ACTIVITY_DESCRIPTION" />։</translation>
 <translation id="3690128548376345212">Ցանց <ph name="NETWORK_INDEX" />՝ <ph name="NETWORK_COUNT" />-ից, <ph name="NETWORK_NAME" />, ակտիվացված չէ, <ph name="CONNECTION_STATUS" />, ազդանշանի ուժգնությունը՝ <ph name="SIGNAL_STRENGTH" /> տոկոս, մանրամասներ</translation>
 <translation id="3691184985318546178">սինհալերեն</translation>
+<translation id="3703620396751288986">ZIP արխիվ</translation>
 <translation id="3726463242007121105">Հնարավոր չէ բացել սարքը, քանի որ նրա ֆայլային համակարգը չի աջակցվում:</translation>
 <translation id="3727148787322499904">Եթե փոխեք այս կարգավորումը, այն կազդի բոլոր ընդհանուր ցանցերի վրա</translation>
 <translation id="3737576078404241332">Հեռացնել կողագոտուց</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">չեխերեն (QWERTY ստեղնաշար)</translation>
 <translation id="4656777537938206294">Ֆայլերը հասանելի դարձրեք առանց ինտերնետի օգտագործելու համար</translation>
 <translation id="4658782175094886150">Մարդը ձյան մեջ</translation>
+<translation id="4661996069183330363">TAR արխիվ</translation>
 <translation id="4669606053856530811">«<ph name="SOURCE_NAME" />»-ի անդամներն այլևս չեն կարողանա օգտագործել այս տարրերը, եթե դրանց համար չտրվի ընդհանուր հասանելիություն։</translation>
 <translation id="467809019005607715">Google Սլայդներ</translation>
 <translation id="4690246192099372265">Շվեդական</translation>
@@ -929,6 +935,7 @@
 <translation id="8903931173357132290">Շրջանավարտ</translation>
 <translation id="8912078710089354287">Պոչը թափահարող շուն</translation>
 <translation id="8919081441417203123">Դանիական</translation>
+<translation id="8965273390142984105">LZOP սեղմված արխիվ</translation>
 <translation id="8965697826696209160">Բավարար տարածք չկա:</translation>
 <translation id="8997962250644902079">չինարեն փինյին (ավանդական)</translation>
 <translation id="9003940392834790328">Ցանց <ph name="NETWORK_INDEX" />՝ <ph name="NETWORK_COUNT" />-ից, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, ազդանշանի ուժգնությունը՝ <ph name="SIGNAL_STRENGTH" />%, կառավարվում է ձեր ադմինիստրատորի կողմից, մանրամասներ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ka.xtb b/ui/chromeos/translations/ui_chromeos_strings_ka.xtb
index 17104eb..37dad4a5 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ka.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ka.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">ჟანრი</translation>
 <translation id="1254593899333212300">პირდაპირი ინტერნეტ კავშირი</translation>
 <translation id="1272293450992660632">PIN-კოდების მნიშვნელობები არ ემთხვევა.</translation>
+<translation id="127650757582748357">BZIP2 შეკუმშული არქივი</translation>
 <translation id="1280820357415527819">მიმდინარეობს მობილური ქსელების ძიება</translation>
 <translation id="1291603679744561561">SIM ბარათი ჩაკეტილია</translation>
 <translation id="1293556467332435079">ფაილები</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">ყველი</translation>
 <translation id="2781645665747935084">ბელგიური</translation>
 <translation id="2782104745158847185">შეცდომა Linux აპლიკაციის ინსტალაციისას</translation>
+<translation id="2788520643285360081">7-Zip არქივი</translation>
 <translation id="2803375539583399270">შეიყვანეთ PIN-კოდი</translation>
 <translation id="2820957248982571256">მიმდინარეობს სკანირება...</translation>
+<translation id="2822595620066756134">GZIP შეკუმშული არქივი</translation>
 <translation id="2830077785865012357">ჩინური ბოპომოფო</translation>
 <translation id="2843806747483486897">ნაგულისხმევის შეცვლა…</translation>
 <translation id="2850124913210091882">სარეზერვო მეხსიერება</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">ლიტვური</translation>
 <translation id="3587482841069643663">ყველა</translation>
 <translation id="3592251141500063301"><ph name="FILE_NAME" /> ხაზგარეშე რეჟიმში ხელმისაწვდომად ვერ გარდაიქმნა</translation>
+<translation id="3593874215226880809">LZIP შეკუმშული არქივი</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">კანადური ფრანგული</translation>
 <translation id="3606220979431771195">თურქული-F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">გაუქმდეს <ph name="ACTIVITY_DESCRIPTION" />.</translation>
 <translation id="3690128548376345212">ქსელი <ph name="NETWORK_INDEX" /> / <ph name="NETWORK_COUNT" />-დან, <ph name="NETWORK_NAME" />, არააქტიური, <ph name="CONNECTION_STATUS" />, სიგნალის სიძლიერეა <ph name="SIGNAL_STRENGTH" />%, დეტალები</translation>
 <translation id="3691184985318546178">სინჰალური</translation>
+<translation id="3703620396751288986">ZIP არქივი</translation>
 <translation id="3726463242007121105">ამ მოწყობილობის გახსნა შეუძლებელია, რადგან მისი ფაილური სისტემა არ არის მხარდაჭერილი.</translation>
 <translation id="3727148787322499904">ამ პარამეტრის შეცვლა ყველა გაზიარებულ ქსელზე აისახება</translation>
 <translation id="3737576078404241332">გვერდითი ზოლიდან წაშლა</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">ჩეხური Qwerty კლავიატურით</translation>
 <translation id="4656777537938206294">აქციეთ ფაილები ხაზგარეშე რეჟიმში ხელმისაწვდომად</translation>
 <translation id="4658782175094886150">პიროვნება თოვლში</translation>
+<translation id="4661996069183330363">TAR არქივი</translation>
 <translation id="4669606053856530811">„<ph name="SOURCE_NAME" />“-ის წევრები დაკარგავენ წვდომას, თუ ეს ერთეულები არ იქნება გაზიარებული მათთან.</translation>
 <translation id="467809019005607715">Google Slides</translation>
 <translation id="4690246192099372265">შვედურო</translation>
@@ -929,6 +935,7 @@
 <translation id="8903931173357132290">კურსდამთავრებული</translation>
 <translation id="8912078710089354287">ძაღლი, რომელიც კუდს აქიცინებს</translation>
 <translation id="8919081441417203123">დანიური</translation>
+<translation id="8965273390142984105">LZOP შეკუმშული არქივი</translation>
 <translation id="8965697826696209160">საკმარისი ადგილი არ არის.</translation>
 <translation id="8997962250644902079">ჩინური (ტრადიციული) პინ-ინი</translation>
 <translation id="9003940392834790328">ქსელი <ph name="NETWORK_INDEX" />/<ph name="NETWORK_COUNT" />-დან, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, სიგნალის სიძლიერე: <ph name="SIGNAL_STRENGTH" />%, მართავს თქვენი ადმინისტრატორი, დეტალები</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_km.xtb b/ui/chromeos/translations/ui_chromeos_strings_km.xtb
index 127abc2..bdc1a1e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_km.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_km.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">ប្រភេទ</translation>
 <translation id="1254593899333212300">ការភ្ជាប់អ៊ីនធឺណិតផ្ទាល់</translation>
 <translation id="1272293450992660632">តម្លៃ PIN មិនត្រូវគ្នាទេ។</translation>
+<translation id="127650757582748357">បណ្ណសារ​ដែល​បាន​បង្ហាប់​ដោយ BZIP2</translation>
 <translation id="1280820357415527819">កំពុង​ស្វែងរក​បណ្ដាញ​ទូរសព្ទ​ចល័ត</translation>
 <translation id="1291603679744561561">បានចាក់​សោស៊ីម</translation>
 <translation id="1293556467332435079">ឯកសារ</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">ឈីស</translation>
 <translation id="2781645665747935084">ភាសាប៊ែលស៊ិក</translation>
 <translation id="2782104745158847185">មានបញ្ហាក្នុង​ការដំឡើង​កម្មវិធី Linux</translation>
+<translation id="2788520643285360081">បណ្ណសារ 7-ZIP</translation>
 <translation id="2803375539583399270">បញ្ចូលកូដ PIN</translation>
 <translation id="2820957248982571256">កំពុងស្កេន...</translation>
+<translation id="2822595620066756134">បណ្ណសារ​ដែល​បាន​បង្ហាប់​ដោយ GZIP</translation>
 <translation id="2830077785865012357">ភាសាចិនជូយីន</translation>
 <translation id="2843806747483486897">ប្តូរលំនាំដើម...</translation>
 <translation id="2850124913210091882">បម្រុងទុក</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">ភាសាលីទុយអានី</translation>
 <translation id="3587482841069643663">ទាំងអស់</translation>
 <translation id="3592251141500063301">មិនអាចទាញយក <ph name="FILE_NAME" /> មកប្រើពេលគ្មានអ៊ីនធឺណិតបានទេ</translation>
+<translation id="3593874215226880809">បណ្ណសារ​ដែល​បាន​បង្ហាប់ដោយ LZIP</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">ភាសាបារាំងកាណាដា</translation>
 <translation id="3606220979431771195">តួកគី-F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">បោះបង់ <ph name="ACTIVITY_DESCRIPTION" /> ។</translation>
 <translation id="3690128548376345212">បណ្ដាញ <ph name="NETWORK_INDEX" /> នៃ <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, បានបិទដំណើរការ, <ph name="CONNECTION_STATUS" />, កម្លាំងរលកសញ្ញា <ph name="SIGNAL_STRENGTH" />%, ព័ត៌មានលម្អិត</translation>
 <translation id="3691184985318546178">ភាសាស៊ីនហាឡា</translation>
+<translation id="3703620396751288986">បណ្ណសារ ZIP</translation>
 <translation id="3726463242007121105">ឧបករណ៍នេះមិនអាចបើកទេ ពីព្រោះប្រព័ន្ធឯកសាររបស់វាមិនត្រូវបានគាំទ្រទេ។</translation>
 <translation id="3727148787322499904">ការផ្លាស់​ប្តូរការ​កំណត់នេះ​នឹង​ប៉ះពាល់​ដល់​បណ្តាញ​ដែល​បានចែករំលែក​ទាំងអស់</translation>
 <translation id="3737576078404241332">លុបចេញពី​របារចំហៀង</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">ភាសាឆែក​ដែលប្រើ​ក្ដារចុច Qwerty</translation>
 <translation id="4656777537938206294">កំណត់ឱ្យ​អាចប្រើ​ឯកសារបាន​ពេលគ្មាន​អ៊ីនធឺណិត</translation>
 <translation id="4658782175094886150">មនុស្ស​នៅក្រោម​ព្រិលធ្លាក់</translation>
+<translation id="4661996069183330363">បណ្ណាសារ TAR</translation>
 <translation id="4669606053856530811">សមាជិករបស់ '<ph name="SOURCE_NAME" />' នឹងបាត់បង់សិទ្ធិ​ចូលប្រើ ប្រសិនបើធាតុទាំងនេះ​មិនត្រូវបានចែករំលែកដល់ពួកគេទេ។</translation>
 <translation id="467809019005607715">Google បទបង្ហាញ</translation>
 <translation id="4690246192099372265">ភាសាស៊ុយអែដ</translation>
@@ -929,6 +935,7 @@
 <translation id="8903931173357132290">និស្សិតបញ្ចប់ការសិក្សា</translation>
 <translation id="8912078710089354287">ឆ្កែកំពុង​បក់កន្ទុយ</translation>
 <translation id="8919081441417203123">ភាសាដាណឺម៉ាក</translation>
+<translation id="8965273390142984105">បណ្ណសារ​ដែល​បាន​បង្ហាប់​ដោយ LZOP</translation>
 <translation id="8965697826696209160">គ្មានចន្លោះផ្ទុកគ្រប់គ្រាន់ទេ។</translation>
 <translation id="8997962250644902079">ភាសាចិន (អក្សរពេញ) ភីងអ៊ីង</translation>
 <translation id="9003940392834790328">បណ្ដាញ <ph name="NETWORK_INDEX" /> នៃ <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, កម្លាំងរលកសញ្ញា <ph name="SIGNAL_STRENGTH" />%, គ្រប់គ្រងដោយ​អ្នកគ្រប់គ្រង​របស់អ្នក, ព័ត៌មាន​លម្អិត</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mk.xtb b/ui/chromeos/translations/ui_chromeos_strings_mk.xtb
index dbbf4f3..f32ac8d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_mk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_mk.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Жанр</translation>
 <translation id="1254593899333212300">Директна интернет-врска</translation>
 <translation id="1272293450992660632">PIN-вредностите не се совпаѓаат.</translation>
+<translation id="127650757582748357">Архива компримирана со BZIP2</translation>
 <translation id="1280820357415527819">Се пребаруваат мобилни мрежи</translation>
 <translation id="1291603679744561561">SIM-картичката е заклучена</translation>
 <translation id="1293556467332435079">Датотеки</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Сирење</translation>
 <translation id="2781645665747935084">Белгиски</translation>
 <translation id="2782104745158847185">Грешка при инсталирањето на апликацијата за Linux</translation>
+<translation id="2788520643285360081">7-Zip-архива</translation>
 <translation id="2803375539583399270">Внесете PIN.</translation>
 <translation id="2820957248982571256">Се скенира…</translation>
+<translation id="2822595620066756134">Архива компримирана со GZIP</translation>
 <translation id="2830077785865012357">кинески џујин</translation>
 <translation id="2843806747483486897">Промени зададени вредности…</translation>
 <translation id="2850124913210091882">Бекап</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">литвански</translation>
 <translation id="3587482841069643663">Сите</translation>
 <translation id="3592251141500063301"><ph name="FILE_NAME" /> не можеше да се направи да биде достапна офлајн</translation>
+<translation id="3593874215226880809">Архива компримирана со LZIP</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">канадско француска</translation>
 <translation id="3606220979431771195">Турска-F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">Откажете <ph name="ACTIVITY_DESCRIPTION" />.</translation>
 <translation id="3690128548376345212">Мрежа <ph name="NETWORK_INDEX" /> од <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, Деактивирана, <ph name="CONNECTION_STATUS" />, Јачина на сигналот <ph name="SIGNAL_STRENGTH" /> %, Детали</translation>
 <translation id="3691184985318546178">синхалски</translation>
+<translation id="3703620396751288986">ZIP-архива</translation>
 <translation id="3726463242007121105">Уредот не може да се отвори затоа што не го поддржува системот со датотеки.</translation>
 <translation id="3727148787322499904">Менувањето на оваа поставка ќе влијае на сите споделени мрежи</translation>
 <translation id="3737576078404241332">Отстрани од странична лента</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">чешки со тастатура Qwerty</translation>
 <translation id="4656777537938206294">Направете датотеките да се достапни офлајн</translation>
 <translation id="4658782175094886150">Човек во снег</translation>
+<translation id="4661996069183330363">TAR-архива</translation>
 <translation id="4669606053856530811">Членовите на „<ph name="SOURCE_NAME" />“ ќе изгубат пристап освен ако ставкиве се споделени со нив.</translation>
 <translation id="467809019005607715">Google Slides</translation>
 <translation id="4690246192099372265">шведски</translation>
@@ -929,6 +935,7 @@
 <translation id="8903931173357132290">Дипломец</translation>
 <translation id="8912078710089354287">Куче што мавта со опашката</translation>
 <translation id="8919081441417203123">дански</translation>
+<translation id="8965273390142984105">Архива компримирана со LZOP</translation>
 <translation id="8965697826696209160">Нема доволно простор.</translation>
 <translation id="8997962250644902079">кинески (традиционален) пинјин</translation>
 <translation id="9003940392834790328">Мрежа <ph name="NETWORK_INDEX" /> од <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, јачина на сигналот: <ph name="SIGNAL_STRENGTH" /> %, управувана од администраторот, детали</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ml.xtb b/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
index b7a09ae..e0275d0 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">വിഭാഗം</translation>
 <translation id="1254593899333212300">നേരിട്ടുള്ള ഇന്‍റര്‍നെറ്റ് കണക്ഷന്‍</translation>
 <translation id="1272293450992660632">പിൻ മൂല്യങ്ങൾ പൊരുത്തപ്പെടുന്നില്ല.</translation>
+<translation id="127650757582748357">BZIP2 കംപ്രസ് ചെയ്ത ആർക്കൈവ്</translation>
 <translation id="1280820357415527819">മൊബൈൽ നെറ്റ്‌വർക്കുകൾ തിരയുന്നു</translation>
 <translation id="1291603679744561561">സിം ലോക്ക് ചെയ്‌തു</translation>
 <translation id="1293556467332435079">Files</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">ചീസ്</translation>
 <translation id="2781645665747935084">ബെൽജിയൻ</translation>
 <translation id="2782104745158847185">Linux ആപ്പ് ഇൻസ്‌റ്റാൾ ചെയ്യുന്നതിൽ പിഴവ്</translation>
+<translation id="2788520643285360081">7-Zip ആർക്കൈവ്</translation>
 <translation id="2803375539583399270">പിൻ നൽകുക</translation>
 <translation id="2820957248982571256">സ്‌കാൻ ചെയ്യുന്നു...</translation>
+<translation id="2822595620066756134">GZIP കംപ്രസ് ചെയ്ത ആർക്കൈവ്</translation>
 <translation id="2830077785865012357">ചൈനീസ് സുയിൻ</translation>
 <translation id="2843806747483486897">ഡിഫോൾട്ട് മാറ്റുക...</translation>
 <translation id="2850124913210091882">ബാക്കപ്പെടുക്കുക</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">ലിത്വാനിയന്‍</translation>
 <translation id="3587482841069643663">എല്ലാം</translation>
 <translation id="3592251141500063301"><ph name="FILE_NAME" /> ഓഫ്‌ലൈനിൽ ലഭ്യമാക്കാനായില്ല</translation>
+<translation id="3593874215226880809">LZIP കംപ്രസ് ചെയ്ത ആർക്കൈവ്</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">കനേഡിയന്‍ ഫ്രഞ്ച്</translation>
 <translation id="3606220979431771195">ടർക്കിഷ്-എഫ്</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551"><ph name="ACTIVITY_DESCRIPTION" /> റദ്ദാക്കുക.</translation>
 <translation id="3690128548376345212"><ph name="NETWORK_COUNT" />-ൽ <ph name="NETWORK_INDEX" />-ാമത്തെ നെറ്റ്‌വർക്ക്, <ph name="NETWORK_NAME" />, സജീവമാക്കിയിട്ടില്ല <ph name="CONNECTION_STATUS" />, സിഗ്‌നൽ ശക്തി <ph name="SIGNAL_STRENGTH" />%, വിശദാംശങ്ങൾ</translation>
 <translation id="3691184985318546178">സിംഹള</translation>
+<translation id="3703620396751288986">ZIP ആർക്കൈവ്</translation>
 <translation id="3726463242007121105">ഈ ഉപകരണത്തിന്റെ ഫയൽസിസ്റ്റം പിന്തുണയ്ക്കാത്തതിനാൽ ഇത് തുറക്കാനായില്ല.</translation>
 <translation id="3727148787322499904">ഈ ക്രമീകരണം മാറ്റുന്നത് എല്ലാ പങ്കിട്ട നെറ്റ്‌വർക്കുകളെയും ബാധിക്കാനിടയാക്കും</translation>
 <translation id="3737576078404241332">സൈഡ്‌ബാറിൽ നിന്ന് നീക്കം ചെയ്യുക</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">Qwerty കീബോർഡ് ഉള്ള ചെക്ക്</translation>
 <translation id="4656777537938206294">ഫയലുകൾ ഓഫ്‌ലൈനിൽ ലഭ്യമാക്കുക</translation>
 <translation id="4658782175094886150">മഞ്ഞിൽ നിൽക്കുന്ന വ്യക്തി</translation>
+<translation id="4661996069183330363">TAR ആർക്കൈവ്</translation>
 <translation id="4669606053856530811">'<ph name="SOURCE_NAME" />' എന്നതിലെ അംഗങ്ങളുമായി ഈ ഇനങ്ങൾ പങ്കിട്ടില്ലെങ്കിൽ അവർക്ക് അവയിലേക്കുള്ള ആക്‌സസ് ‌നഷ്‌ടമാകും.</translation>
 <translation id="467809019005607715">Google Slides</translation>
 <translation id="4690246192099372265">സ്വീഡിഷ്</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">ഗ്രാജ്വേറ്റ്</translation>
 <translation id="8912078710089354287">വാലാട്ടുന്ന നായ</translation>
 <translation id="8919081441417203123">ഡാനിഷ്</translation>
+<translation id="8965273390142984105">LZOP കംപ്രസ് ചെയ്ത ആർക്കൈവ്</translation>
 <translation id="8965697826696209160">പര്യാപ്‌തമായ ഇടമില്ല.</translation>
 <translation id="8997962250644902079">ചൈനീസ് (പരമ്പരാഗതം) പിൻയിൻ</translation>
 <translation id="9003940392834790328"><ph name="NETWORK_COUNT" />-ൽ <ph name="NETWORK_INDEX" /> നെറ്റ്‌വർക്ക്, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, സിഗ്‌നൽ ശക്തി <ph name="SIGNAL_STRENGTH" />%, നിങ്ങളുടെ അഡ്‌മിൻ മാനേജ് ചെയ്യുന്നത്, വിശദാംശങ്ങൾ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mn.xtb b/ui/chromeos/translations/ui_chromeos_strings_mn.xtb
index e736d67..0a31d3b 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_mn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_mn.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Төрөл</translation>
 <translation id="1254593899333212300">Интернетийн шууд холболт</translation>
 <translation id="1272293450992660632">ПИН кодын утга таарахгүй байна.</translation>
+<translation id="127650757582748357">BZIP2 шахалттай archive</translation>
 <translation id="1280820357415527819">Мобайл сүлжээг хайж байна</translation>
 <translation id="1291603679744561561">SIM-г түгжсэн</translation>
 <translation id="1293556467332435079">Файлууд</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Бяслаг</translation>
 <translation id="2781645665747935084">Бельги</translation>
 <translation id="2782104745158847185">Linux аппыг суулгахад алдаа гарлаа</translation>
+<translation id="2788520643285360081">7-ZIP архив</translation>
 <translation id="2803375539583399270">ПИН оруулна уу</translation>
 <translation id="2820957248982571256">Шалгаж байна...</translation>
+<translation id="2822595620066756134">GZIP шахалттай архив</translation>
 <translation id="2830077785865012357">Хятад жуинь</translation>
 <translation id="2843806747483486897">Анхдагч тохиргоог өөрчлөх ...</translation>
 <translation id="2850124913210091882">Хадгалах</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">Литви</translation>
 <translation id="3587482841069643663">Бүгд</translation>
 <translation id="3592251141500063301"><ph name="FILE_NAME" />-г офлайнаар ашиглах боломжтой болгож чадсангүй</translation>
+<translation id="3593874215226880809">LZIP шахалттай архив</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">Канадын франц хэл</translation>
 <translation id="3606220979431771195">Турк хэлний-F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551"><ph name="ACTIVITY_DESCRIPTION" />-г цуцлах.</translation>
 <translation id="3690128548376345212"><ph name="NETWORK_COUNT" />-с <ph name="NETWORK_INDEX" />-р сүлжээ, <ph name="NETWORK_NAME" />, Идэвхжүүлээгүй, <ph name="CONNECTION_STATUS" />, Дохионы хүч <ph name="SIGNAL_STRENGTH" />%, Дэлгэрэнгүй</translation>
 <translation id="3691184985318546178">Синхала</translation>
+<translation id="3703620396751288986">ZIP архив</translation>
 <translation id="3726463242007121105">Файлын систем нь дэмжигдээгүй учир энэ төхөөрөмжийг нээх боломжгүй.</translation>
 <translation id="3727148787322499904">Энэ тохиргоог өөрчилснөөр хуваалцсан бүх сүлжээнд нөлөөлнө</translation>
 <translation id="3737576078404241332">Хажуугийн цэсээс хасах</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">Qwerty гартай чех</translation>
 <translation id="4656777537938206294">Файлуудыг офлайн үед ашиглах боломжтой болгох</translation>
 <translation id="4658782175094886150">Цасан дунд байгаа хүн</translation>
+<translation id="4661996069183330363">TAR архив</translation>
 <translation id="4669606053856530811">Эдгээр зүйлийг '<ph name="SOURCE_NAME" />'-н гишүүдтэй хуваалцаагүй тохиолдолд тус гишүүд хандах боломжгүй.</translation>
 <translation id="467809019005607715">Google Слайд</translation>
 <translation id="4690246192099372265">Швед</translation>
@@ -927,6 +933,7 @@
 <translation id="8903931173357132290">Төгсөгч</translation>
 <translation id="8912078710089354287">Сүүлээ годолзуулж буй нохой</translation>
 <translation id="8919081441417203123">Дани хэл</translation>
+<translation id="8965273390142984105">LZOP шахалттай архив</translation>
 <translation id="8965697826696209160">Хангалттай багтаамж байхгүй байна.</translation>
 <translation id="8997962250644902079">Хятад (уламжлалт) пиньинь</translation>
 <translation id="9003940392834790328">Сүлжээ: <ph name="NETWORK_COUNT" />-н <ph name="NETWORK_INDEX" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, дохионы хүч <ph name="SIGNAL_STRENGTH" />%, таны администратор удирддаг, дэлгэрэнгүй мэдээлэл</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
index 5e8f67b9..eb70572 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">शैली</translation>
 <translation id="1254593899333212300">थेट इंटरनेट कनेक्शन</translation>
 <translation id="1272293450992660632">पिन मूल्ये जुळत नाहीत.</translation>
+<translation id="127650757582748357">काँप्रेस केलेले BZIP2 संग्रहण</translation>
 <translation id="1280820357415527819">मोबाइल नेटवर्क शोधत आहे</translation>
 <translation id="1291603679744561561">सिम लॉक केले आहे</translation>
 <translation id="1293556467332435079">Files</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">चीज</translation>
 <translation id="2781645665747935084">बेल्जियन</translation>
 <translation id="2782104745158847185">Linux ॲप्लिकेशन इंस्टॉल करताना एरर आली</translation>
+<translation id="2788520643285360081">7-Zip संग्रहण</translation>
 <translation id="2803375539583399270">पिन एंटर करा</translation>
 <translation id="2820957248982571256">स्कॅन होत आहे...</translation>
+<translation id="2822595620066756134">काँप्रेस केलेले GZIP संग्रहण</translation>
 <translation id="2830077785865012357">चीनी झुयिन</translation>
 <translation id="2843806747483486897">डीफॉल्ट बदला...</translation>
 <translation id="2850124913210091882">बॅकअप घ्या</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">लिथुआनियन</translation>
 <translation id="3587482841069643663">सर्व</translation>
 <translation id="3592251141500063301"><ph name="FILE_NAME" /> ऑफलाइन उपलब्ध करता आली नाही</translation>
+<translation id="3593874215226880809">काँप्रेस केलेले LZIP संग्रहण</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">कॅनेडियन फ्रेंच</translation>
 <translation id="3606220979431771195">तुर्की-F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551"><ph name="ACTIVITY_DESCRIPTION" /> रद्द करा.</translation>
 <translation id="3690128548376345212"><ph name="NETWORK_NAME" /> चे <ph name="NETWORK_INDEX" /> पैकी <ph name="NETWORK_COUNT" /> नेटवर्क, ॲक्टिव्हेट केलेले नाही, <ph name="CONNECTION_STATUS" /> सिग्नलची क्षमता <ph name="SIGNAL_STRENGTH" />%, तपशील</translation>
 <translation id="3691184985318546178">सिंहली</translation>
+<translation id="3703620396751288986">ZIP संग्रहण</translation>
 <translation id="3726463242007121105">हे डिव्हाइस उघडले जाऊ शकत नाही कारण त्याचे फाइलसिस्टम समर्थित नाही.</translation>
 <translation id="3727148787322499904">हे सेटिंग बदलल्याने सर्व शेअर केलेले नेटवर्क प्रभावित होतील</translation>
 <translation id="3737576078404241332">साइडबारमधून काढून टाका</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">क्वर्टी कीबोर्डसह झेक</translation>
 <translation id="4656777537938206294">फाइल ऑफलाइन उपलब्ध करा</translation>
 <translation id="4658782175094886150">हिमवर्षावात उभी व्यक्ती</translation>
+<translation id="4661996069183330363">TAR संग्रहण</translation>
 <translation id="4669606053856530811">'<ph name="SOURCE_NAME" />' च्या सदस्यांशी हे आयटम शेअर केले जात नाही तोवर त्यांना ॲक्सेस असणार नाही.</translation>
 <translation id="467809019005607715">Google Slides</translation>
 <translation id="4690246192099372265">स्वीडिश</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">पदवीधर</translation>
 <translation id="8912078710089354287">शेपुट हलवत असलेला कुत्रा</translation>
 <translation id="8919081441417203123">डॅनिश</translation>
+<translation id="8965273390142984105">काँप्रेस केलेले LZOP संग्रहण</translation>
 <translation id="8965697826696209160">पुरेशी जागा नाही.</translation>
 <translation id="8997962250644902079">चीनी (पारंपरिक) पिनयिन</translation>
 <translation id="9003940392834790328"><ph name="NETWORK_COUNT" /> पैकी <ph name="NETWORK_INDEX" /> नेटवर्क, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, सिग्नल क्षमता <ph name="SIGNAL_STRENGTH" />%, तुमच्या अ‍ॅडमिनिस्ट्रेटरने व्यवस्थापित केलेले, तपशील</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ms.xtb b/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
index 3867655..9b20b2c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Genre</translation>
 <translation id="1254593899333212300">Sambungan Internet Langsung</translation>
 <translation id="1272293450992660632">Nilai PIN tidak sepadan.</translation>
+<translation id="127650757582748357">Arkib termampat BZIP2</translation>
 <translation id="1280820357415527819">Mencari rangkaian mudah alih</translation>
 <translation id="1291603679744561561">SIM Dikunci</translation>
 <translation id="1293556467332435079">Fail</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Keju</translation>
 <translation id="2781645665747935084">Bahasa Belgium</translation>
 <translation id="2782104745158847185">Ralat semasa memasang aplikasi Linux</translation>
+<translation id="2788520643285360081">7-arkib ZIP</translation>
 <translation id="2803375539583399270">Masukkan PIN</translation>
 <translation id="2820957248982571256">Mengimbas…</translation>
+<translation id="2822595620066756134">Arkib termampat GZIP</translation>
 <translation id="2830077785865012357">Zhuyin Cina</translation>
 <translation id="2843806747483486897">Tukar lalai...</translation>
 <translation id="2850124913210091882">Sandaran</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">Bahasa Lithuania</translation>
 <translation id="3587482841069643663">Semua</translation>
 <translation id="3592251141500063301">Tidak dapat menjadikan <ph name="FILE_NAME" /> tersedia di luar talian</translation>
+<translation id="3593874215226880809">Arkib termampat LZIP</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">Bahasa Perancis Kanada</translation>
 <translation id="3606220979431771195">Turki-F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">Batalkan <ph name="ACTIVITY_DESCRIPTION" />.</translation>
 <translation id="3690128548376345212">Rangkaian <ph name="NETWORK_INDEX" /> daripada <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, Dinyahaktifkan, <ph name="CONNECTION_STATUS" />, Kekuatan Isyarat <ph name="SIGNAL_STRENGTH" />%, Butiran</translation>
 <translation id="3691184985318546178">Sinhala</translation>
+<translation id="3703620396751288986">arkib ZIP</translation>
 <translation id="3726463242007121105">Peranti ini tidak boleh dibuka kerana sistem failnya tidak disokong.</translation>
 <translation id="3727148787322499904">Tindakan menukar tetapan ini akan menjejaskan semua rangkaian yang dikongsi</translation>
 <translation id="3737576078404241332">Alih keluar daripada bar sisi</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">Czech dengan papan kekunci Qwerty</translation>
 <translation id="4656777537938206294">Jadikan fail tersedia di luar talian</translation>
 <translation id="4658782175094886150">Orang dalam salji</translation>
+<translation id="4661996069183330363">Arkib TAR</translation>
 <translation id="4669606053856530811">Ahli '<ph name="SOURCE_NAME" />' akan kehilangan akses melainkan item ini dikongsi dengan mereka.</translation>
 <translation id="467809019005607715">Slaid Google</translation>
 <translation id="4690246192099372265">Sweden</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">Graduan</translation>
 <translation id="8912078710089354287">Anjing menggoyang-goyangkan ekor</translation>
 <translation id="8919081441417203123">Bahasa Denmark</translation>
+<translation id="8965273390142984105">Arkib termampat LZOP</translation>
 <translation id="8965697826696209160">Tiada ruang yang mencukupi.</translation>
 <translation id="8997962250644902079">Pinyin Cina (Tradisional)</translation>
 <translation id="9003940392834790328">Rangkaian <ph name="NETWORK_INDEX" /> daripada <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, Kekuatan Isyarat <ph name="SIGNAL_STRENGTH" />%, Diurus oleh Pentadbir anda, Butiran</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_no.xtb b/ui/chromeos/translations/ui_chromeos_strings_no.xtb
index 3aa84ed..47b480d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_no.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_no.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Sjanger</translation>
 <translation id="1254593899333212300">Direkte internettilkobling</translation>
 <translation id="1272293450992660632">PIN-kodene er ikke like.</translation>
+<translation id="127650757582748357">BZIP2-komprimert arkiv</translation>
 <translation id="1280820357415527819">Søker etter mobilnettverk</translation>
 <translation id="1291603679744561561">SIM-kortet er låst</translation>
 <translation id="1293556467332435079">Filer</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Ost</translation>
 <translation id="2781645665747935084">Belgisk</translation>
 <translation id="2782104745158847185">Feil ved installasjon av Linux-programmet</translation>
+<translation id="2788520643285360081">7-Zip-arkiv</translation>
 <translation id="2803375539583399270">Skriv inn PIN-koden</translation>
 <translation id="2820957248982571256">Skanner …</translation>
+<translation id="2822595620066756134">GZIP-komprimert arkiv</translation>
 <translation id="2830077785865012357">Kinesisk zhuyin</translation>
 <translation id="2843806747483486897">Endre standardhandling</translation>
 <translation id="2850124913210091882">Sikkerhetskopiér</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">Litauisk</translation>
 <translation id="3587482841069643663">Alle</translation>
 <translation id="3592251141500063301">Kunne ikke gjøre <ph name="FILE_NAME" /> tilgjengelig uten nett</translation>
+<translation id="3593874215226880809">LZIP-komprimert arkiv</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">Canadisk fransk</translation>
 <translation id="3606220979431771195">Tyrkisk F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">Avbryt <ph name="ACTIVITY_DESCRIPTION" />.</translation>
 <translation id="3690128548376345212">Nettverk <ph name="NETWORK_INDEX" /> av <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, ikke aktivert, <ph name="CONNECTION_STATUS" />, signalstyrke <ph name="SIGNAL_STRENGTH" /> %, detaljer</translation>
 <translation id="3691184985318546178">Singalesisk</translation>
+<translation id="3703620396751288986">ZIP-arkiv</translation>
 <translation id="3726463242007121105">Denne enheten kan ikke åpnes fordi den har et filsystem som ikke støttes.</translation>
 <translation id="3727148787322499904">Endringer i denne innstillingen påvirker alle delte nettverk</translation>
 <translation id="3737576078404241332">Fjern fra sidefeltet</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">Tsjekkisk med QWERTY-tastatur</translation>
 <translation id="4656777537938206294">Gjør filer tilgjengelige uten nett</translation>
 <translation id="4658782175094886150">Person i snøen</translation>
+<translation id="4661996069183330363">TAR-arkiv</translation>
 <translation id="4669606053856530811">Medlemmer av «<ph name="SOURCE_NAME" />» mister tilgangen, med mindre disse elementene deles med dem.</translation>
 <translation id="467809019005607715">Google Presentasjoner</translation>
 <translation id="4690246192099372265">Svensk</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">Avgangselev</translation>
 <translation id="8912078710089354287">Hund som logrer med halen</translation>
 <translation id="8919081441417203123">Dansk</translation>
+<translation id="8965273390142984105">LZOP-komprimert arkiv</translation>
 <translation id="8965697826696209160">Du har ikke nok ledig plass.</translation>
 <translation id="8997962250644902079">Kinesisk (tradisjonell) pinyin</translation>
 <translation id="9003940392834790328">Nettverk <ph name="NETWORK_INDEX" /> av <ph name="NETWORK_COUNT" /> – <ph name="NETWORK_NAME" /> – <ph name="CONNECTION_STATUS" /> – signalstyrke <ph name="SIGNAL_STRENGTH" /> % – administreres av administratoren din – detaljer</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb b/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
index c9b030b..c0c2c18c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Género</translation>
 <translation id="1254593899333212300">Ligação direta à Internet</translation>
 <translation id="1272293450992660632">Os valores de PIN não correspondem.</translation>
+<translation id="127650757582748357">Arquivo comprimido BZIP2</translation>
 <translation id="1280820357415527819">A pesquisar redes móveis…</translation>
 <translation id="1291603679744561561">SIM bloqueado</translation>
 <translation id="1293556467332435079">Ficheiros</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Queijo</translation>
 <translation id="2781645665747935084">Belga</translation>
 <translation id="2782104745158847185">Ocorreu um erro ao instalar a aplicação para Linux.</translation>
+<translation id="2788520643285360081">Arquivo 7-Zip</translation>
 <translation id="2803375539583399270">Introduzir PIN</translation>
 <translation id="2820957248982571256">A analisar...</translation>
+<translation id="2822595620066756134">Arquivo comprimido GZIP</translation>
 <translation id="2830077785865012357">Chinês zhuyin</translation>
 <translation id="2843806747483486897">Alterar predefinição...</translation>
 <translation id="2850124913210091882">Fazer uma cópia de segurança</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">Lituânia</translation>
 <translation id="3587482841069643663">Tudo</translation>
 <translation id="3592251141500063301">Não foi possível disponibilizar offline o ficheiro <ph name="FILE_NAME" />.</translation>
+<translation id="3593874215226880809">Arquivo comprimido LZIP</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">Francês canadiano</translation>
 <translation id="3606220979431771195">Turco-F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">Cancele <ph name="ACTIVITY_DESCRIPTION" />.</translation>
 <translation id="3690128548376345212">Rede <ph name="NETWORK_INDEX" /> de <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, Desativada, <ph name="CONNECTION_STATUS" />, Intensidade do sinal: <ph name="SIGNAL_STRENGTH" />%, Detalhes</translation>
 <translation id="3691184985318546178">Cingalês</translation>
+<translation id="3703620396751288986">Arquivo ZIP</translation>
 <translation id="3726463242007121105">Não é possível abrir este aparelho porque o sistema de ficheiros não é suportado.</translation>
 <translation id="3727148787322499904">Alterar esta definição afetará todas as redes partilhadas</translation>
 <translation id="3737576078404241332">Remover da barra lateral</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">Checo com teclado Qwerty</translation>
 <translation id="4656777537938206294">Disponibilize ficheiros offline</translation>
 <translation id="4658782175094886150">Pessoa na neve</translation>
+<translation id="4661996069183330363">Arquivo TAR</translation>
 <translation id="4669606053856530811">Os membros de "<ph name="SOURCE_NAME" />" irão perder o acesso, exceto se estes itens forem partilhados com eles.</translation>
 <translation id="467809019005607715">Google Slides</translation>
 <translation id="4690246192099372265">Sueco</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">Graduado</translation>
 <translation id="8912078710089354287">Cão a abanar a cauda</translation>
 <translation id="8919081441417203123">Dinamarquês</translation>
+<translation id="8965273390142984105">Arquivo comprimido LZOP</translation>
 <translation id="8965697826696209160">Não existe espaço suficiente.</translation>
 <translation id="8997962250644902079">Pinyin chinês (tradicional)</translation>
 <translation id="9003940392834790328">Rede <ph name="NETWORK_INDEX" /> de <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, intensidade do sinal: <ph name="SIGNAL_STRENGTH" />%, gerida pelo administrador, detalhes</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sk.xtb b/ui/chromeos/translations/ui_chromeos_strings_sk.xtb
index 8465132..80e86db 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sk.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Žáner</translation>
 <translation id="1254593899333212300">Priame pripojenie k Internetu</translation>
 <translation id="1272293450992660632">Kódy PIN sa nezhodujú.</translation>
+<translation id="127650757582748357">Komprimovaný archív BZIP2</translation>
 <translation id="1280820357415527819">Hľadajú sa mobilné siete</translation>
 <translation id="1291603679744561561">SIM karta je uzamknutá</translation>
 <translation id="1293556467332435079">Súbory</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Syr</translation>
 <translation id="2781645665747935084">Belgická klávesnica</translation>
 <translation id="2782104745158847185">Pri inštalácii aplikácie pre Linux sa vyskytla chyba</translation>
+<translation id="2788520643285360081">Archív 7-Zip</translation>
 <translation id="2803375539583399270">Zadajte kód PIN</translation>
 <translation id="2820957248982571256">Prebieha vyhľadávanie...</translation>
+<translation id="2822595620066756134">Komprimovaný archív GZIP</translation>
 <translation id="2830077785865012357">Čínska klávesnica Ču-jin</translation>
 <translation id="2843806747483486897">Zmeniť predvolenú akciu...</translation>
 <translation id="2850124913210091882">Zálohovať</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">Litovčina</translation>
 <translation id="3587482841069643663">Všetko</translation>
 <translation id="3592251141500063301">Súbor <ph name="FILE_NAME" /> sa nepodarilo sprístupniť offline</translation>
+<translation id="3593874215226880809">Komprimovaný archív LZIP</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">Kanadská francúzska klávesnica</translation>
 <translation id="3606220979431771195">Turecká (typ F)</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">Zrušiť <ph name="ACTIVITY_DESCRIPTION" />.</translation>
 <translation id="3690128548376345212"><ph name="NETWORK_INDEX" />. sieť z <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, neaktivovaná, <ph name="CONNECTION_STATUS" />, sila signálu: <ph name="SIGNAL_STRENGTH" /> %, podrobnosti</translation>
 <translation id="3691184985318546178">Sinhálska klávesnica</translation>
+<translation id="3703620396751288986">Archív ZIP</translation>
 <translation id="3726463242007121105">Toto zariadenie nie je možné otvoriť, pretože jeho systém súborov nie je podporovaný.</translation>
 <translation id="3727148787322499904">Zmena tohto nastavenia ovplyvní všetky zdieľané siete</translation>
 <translation id="3737576078404241332">Odstrániť z bočného panela</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">Česká klávesnica s rozložením Qwerty</translation>
 <translation id="4656777537938206294">Sprístupnite súbory offline</translation>
 <translation id="4658782175094886150">Osoba v snehu</translation>
+<translation id="4661996069183330363">Archív vo formáte TAR</translation>
 <translation id="4669606053856530811">Členovia zdroja <ph name="SOURCE_NAME" /> stratia prístup, pokiaľ s nimi tieto položky nezačnete zdieľať.</translation>
 <translation id="467809019005607715">Prezentácie Google</translation>
 <translation id="4690246192099372265">Švédčina</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">Absolvent</translation>
 <translation id="8912078710089354287">Pes krútiaci chvostom</translation>
 <translation id="8919081441417203123">Dánčina</translation>
+<translation id="8965273390142984105">Komprimovaný archív LZOP</translation>
 <translation id="8965697826696209160">Nedostatok miesta</translation>
 <translation id="8997962250644902079">Čínska klávesnica Pchin-jin (tradičná)</translation>
 <translation id="9003940392834790328"><ph name="NETWORK_INDEX" />. sieť z <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, sila signálu <ph name="SIGNAL_STRENGTH" /> %, ovládané správcom, podrobnosti</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
index 0e14a5a2..90ffbde 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Žanr</translation>
 <translation id="1254593899333212300">Direktna veza sa internetom</translation>
 <translation id="1272293450992660632">PIN-ovi se ne podudaraju.</translation>
+<translation id="127650757582748357">BZIP2 komprimovana arhiva</translation>
 <translation id="1280820357415527819">Traže se mobilne mreže</translation>
 <translation id="1291603679744561561">SIM je zaključan</translation>
 <translation id="1293556467332435079">Datoteke</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Sir</translation>
 <translation id="2781645665747935084">belgijska</translation>
 <translation id="2782104745158847185">Greška pri instaliranju Linux aplikacije</translation>
+<translation id="2788520643285360081">7-Zip arhiva</translation>
 <translation id="2803375539583399270">Unesite PIN</translation>
 <translation id="2820957248982571256">Skenira se...</translation>
+<translation id="2822595620066756134">GZIP komprimovana arhiva</translation>
 <translation id="2830077785865012357">kineski žujin</translation>
 <translation id="2843806747483486897">Promeni podrazumevano...</translation>
 <translation id="2850124913210091882">Napravi rezervnu kopiju</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">litvanski</translation>
 <translation id="3587482841069643663">Sve</translation>
 <translation id="3592251141500063301">Nismo uspeli da učinimo fajl <ph name="FILE_NAME" /> dostupnim oflajn</translation>
+<translation id="3593874215226880809">LZIP komprimovana arhiva</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">kanadska francuska</translation>
 <translation id="3606220979431771195">turska F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">Otkažite <ph name="ACTIVITY_DESCRIPTION" />.</translation>
 <translation id="3690128548376345212">Mreža <ph name="NETWORK_INDEX" /> od <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, nije aktivirana, <ph name="CONNECTION_STATUS" />, jačina signala <ph name="SIGNAL_STRENGTH" />%, detalji</translation>
 <translation id="3691184985318546178">sinhala</translation>
+<translation id="3703620396751288986">ZIP arhiva</translation>
 <translation id="3726463242007121105">Ovaj uređaj ne može da se otvori jer njegov sistem datoteka nije podržan.</translation>
 <translation id="3727148787322499904">Ako promenite ovo podešavanje, to će uticati na sve deljene mreže</translation>
 <translation id="3737576078404241332">Ukloni sa bočne trake</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">češki sa Qwerty tastaturom</translation>
 <translation id="4656777537938206294">Učinite fajlove dostupnim oflajn</translation>
 <translation id="4658782175094886150">Osoba na snegu</translation>
+<translation id="4661996069183330363">TAR arhiva</translation>
 <translation id="4669606053856530811">Članovi iz „<ph name="SOURCE_NAME" />“ će izgubiti pristup ako se ove stavke ne dele sa njima.</translation>
 <translation id="467809019005607715">Google prezentacije</translation>
 <translation id="4690246192099372265">švedski</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">Diplomac</translation>
 <translation id="8912078710089354287">Pas maše repom</translation>
 <translation id="8919081441417203123">danski</translation>
+<translation id="8965273390142984105">LZOP komprimovana arhiva</translation>
 <translation id="8965697826696209160">Nema dovoljno prostora.</translation>
 <translation id="8997962250644902079">kineski (tradicionalni) pinjin</translation>
 <translation id="9003940392834790328"><ph name="NETWORK_INDEX" />. mreža od <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, jačina signala <ph name="SIGNAL_STRENGTH" />%, upravlja administrator, detalji</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
index d32bba5..cba462e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">Жанр</translation>
 <translation id="1254593899333212300">Директна веза са интернетом</translation>
 <translation id="1272293450992660632">PIN-ови се не подударају.</translation>
+<translation id="127650757582748357">BZIP2 компримована архива</translation>
 <translation id="1280820357415527819">Траже се мобилне мреже</translation>
 <translation id="1291603679744561561">SIM је закључан</translation>
 <translation id="1293556467332435079">Датотеке</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">Сир</translation>
 <translation id="2781645665747935084">белгијска</translation>
 <translation id="2782104745158847185">Грешка при инсталирању Linux апликације</translation>
+<translation id="2788520643285360081">7-Zip архива</translation>
 <translation id="2803375539583399270">Унесите PIN</translation>
 <translation id="2820957248982571256">Скенира се...</translation>
+<translation id="2822595620066756134">GZIP компримована архива</translation>
 <translation id="2830077785865012357">кинески жујин</translation>
 <translation id="2843806747483486897">Промени подразумевано...</translation>
 <translation id="2850124913210091882">Направи резервну копију</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">литвански</translation>
 <translation id="3587482841069643663">Све</translation>
 <translation id="3592251141500063301">Нисмо успели да учинимо фајл <ph name="FILE_NAME" /> доступним офлајн</translation>
+<translation id="3593874215226880809">LZIP компримована архива</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">канадска француска</translation>
 <translation id="3606220979431771195">турска F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">Откажите <ph name="ACTIVITY_DESCRIPTION" />.</translation>
 <translation id="3690128548376345212">Мрежа <ph name="NETWORK_INDEX" /> од <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, није активирана, <ph name="CONNECTION_STATUS" />, јачина сигнала <ph name="SIGNAL_STRENGTH" />%, детаљи</translation>
 <translation id="3691184985318546178">синхала</translation>
+<translation id="3703620396751288986">ZIP архива</translation>
 <translation id="3726463242007121105">Овај уређај не може да се отвори јер његов систем датотека није подржан.</translation>
 <translation id="3727148787322499904">Ако промените ово подешавање, то ће утицати на све дељене мреже</translation>
 <translation id="3737576078404241332">Уклони са бочне траке</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">чешки са Qwerty тастатуром</translation>
 <translation id="4656777537938206294">Учините фајлове доступним офлајн</translation>
 <translation id="4658782175094886150">Особа на снегу</translation>
+<translation id="4661996069183330363">TAR архива</translation>
 <translation id="4669606053856530811">Чланови из „<ph name="SOURCE_NAME" />“ ће изгубити приступ ако се ове ставке не деле са њима.</translation>
 <translation id="467809019005607715">Google презентације</translation>
 <translation id="4690246192099372265">шведски</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">Дипломац</translation>
 <translation id="8912078710089354287">Пас маше репом</translation>
 <translation id="8919081441417203123">дански</translation>
+<translation id="8965273390142984105">LZOP компримована архива</translation>
 <translation id="8965697826696209160">Нема довољно простора.</translation>
 <translation id="8997962250644902079">кинески (традиционални) пинјин</translation>
 <translation id="9003940392834790328"><ph name="NETWORK_INDEX" />. мрежа од <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, јачина сигнала <ph name="SIGNAL_STRENGTH" />%, управља администратор, детаљи</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_th.xtb b/ui/chromeos/translations/ui_chromeos_strings_th.xtb
index caf7508..327568a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_th.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_th.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">ประเภท</translation>
 <translation id="1254593899333212300">เชื่อมต่ออินเทอร์เน็ตโดยตรง</translation>
 <translation id="1272293450992660632">ค่า PIN ไม่ตรงกัน</translation>
+<translation id="127650757582748357">ไฟล์เก็บถาวรที่บีบอัดโดย BZIP2</translation>
 <translation id="1280820357415527819">กำลังค้นหาเครือข่ายมือถือ</translation>
 <translation id="1291603679744561561">ล็อกซิมแล้ว</translation>
 <translation id="1293556467332435079">ไฟล์</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">ชีส</translation>
 <translation id="2781645665747935084">เบลเยียม</translation>
 <translation id="2782104745158847185">เกิดข้อผิดพลาดในการติดตั้งแอปพลิเคชัน Linux</translation>
+<translation id="2788520643285360081">ไฟล์เก็บถาวรแบบ 7-Zip</translation>
 <translation id="2803375539583399270">ป้อน PIN</translation>
 <translation id="2820957248982571256">กำลังสแกน...</translation>
+<translation id="2822595620066756134">ไฟล์เก็บถาวรที่บีบอัดโดย GZIP</translation>
 <translation id="2830077785865012357">จีน (Zhuyin)</translation>
 <translation id="2843806747483486897">เปลี่ยนค่าเริ่มต้น...</translation>
 <translation id="2850124913210091882">สำรองข้อมูล</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">ลิทัวเนีย</translation>
 <translation id="3587482841069643663">ทั้งหมด</translation>
 <translation id="3592251141500063301">ทำให้ <ph name="FILE_NAME" /> ใช้งานแบบออฟไลน์ไม่ได้</translation>
+<translation id="3593874215226880809">ไฟล์เก็บถาวรที่บีบอัดโดย LZIP</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">ฝรั่งเศสแบบแคนาดา</translation>
 <translation id="3606220979431771195">ภาษาตุรกี-F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">ยกเลิก<ph name="ACTIVITY_DESCRIPTION" /></translation>
 <translation id="3690128548376345212"><ph name="NETWORK_INDEX" /> จาก <ph name="NETWORK_COUNT" /> เครือข่าย, <ph name="NETWORK_NAME" />, ไม่ได้เปิดใช้งาน, <ph name="CONNECTION_STATUS" />, ความแรงของสัญญาณ <ph name="SIGNAL_STRENGTH" />%, รายละเอียด</translation>
 <translation id="3691184985318546178">สิงหล</translation>
+<translation id="3703620396751288986">ไฟล์เก็บถาวรแบบ Zip</translation>
 <translation id="3726463242007121105">ไม่สามารถเปิดอุปกรณ์นี้ได้ เนื่องจากไม่สนับสนุนระบบไฟล์ของอุปกรณ์นี้</translation>
 <translation id="3727148787322499904">การเปลี่ยนการตั้งค่านี้จะส่งผลกับเครือข่ายที่แชร์ทั้งหมด</translation>
 <translation id="3737576078404241332">นำออกจากแถบด้านข้าง</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">เช็กด้วยแป้นพิมพ์ Qwerty</translation>
 <translation id="4656777537938206294">ทำให้ไฟล์ใช้งานได้แบบออฟไลน์</translation>
 <translation id="4658782175094886150">คนอยู่ท่ามกลางหิมะ</translation>
+<translation id="4661996069183330363">ไฟล์เก็บถาวรแบบ TAR</translation>
 <translation id="4669606053856530811">สมาชิกของ "<ph name="SOURCE_NAME" />" จะสูญเสียสิทธิ์เข้าถึง เว้นแต่มีการแชร์รายการเหล่านี้กับสมาชิกดังกล่าว</translation>
 <translation id="467809019005607715">Google สไลด์</translation>
 <translation id="4690246192099372265">สวีเดน</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">รับปริญญา</translation>
 <translation id="8912078710089354287">สุนัขกำลังกระดิกหาง</translation>
 <translation id="8919081441417203123">เดนมาร์ก</translation>
+<translation id="8965273390142984105">ไฟล์เก็บถาวรที่บีบอัดโดย LZOP</translation>
 <translation id="8965697826696209160">พื้นที่ไม่เพียงพอ</translation>
 <translation id="8997962250644902079">พินอินภาษาจีน (ตัวเต็ม)</translation>
 <translation id="9003940392834790328">เครือข่ายที่ <ph name="NETWORK_INDEX" /> จาก <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />, ความแรงสัญญาณ <ph name="SIGNAL_STRENGTH" />%, จัดการโดยผู้ดูแลระบบ, รายละเอียด</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
index 5ad4f39..f332d521 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">類型</translation>
 <translation id="1254593899333212300">直接連線到互聯網</translation>
 <translation id="1272293450992660632">PIN 值不相符。</translation>
+<translation id="127650757582748357">BZIP2 壓縮檔</translation>
 <translation id="1280820357415527819">正在搜尋流動網絡</translation>
 <translation id="1291603679744561561">SIM 卡已鎖定</translation>
 <translation id="1293556467332435079">檔案</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">芝士</translation>
 <translation id="2781645665747935084">比利時文</translation>
 <translation id="2782104745158847185">安裝 Linux 應用程式時發生錯誤</translation>
+<translation id="2788520643285360081">7-Zip 封存檔</translation>
 <translation id="2803375539583399270">請輸入 PIN</translation>
 <translation id="2820957248982571256">正在掃瞄…</translation>
+<translation id="2822595620066756134">GZIP 壓縮檔</translation>
 <translation id="2830077785865012357">中文 (注音)</translation>
 <translation id="2843806747483486897">變更預設值…</translation>
 <translation id="2850124913210091882">備份</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">立陶宛文</translation>
 <translation id="3587482841069643663">全部</translation>
 <translation id="3592251141500063301">無法將 <ph name="FILE_NAME" /> 設定為可離線使用</translation>
+<translation id="3593874215226880809">LZIP 壓縮檔</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">加拿大法語</translation>
 <translation id="3606220979431771195">土耳其文 F 型</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">取消 <ph name="ACTIVITY_DESCRIPTION" />。</translation>
 <translation id="3690128548376345212"><ph name="NETWORK_COUNT" /> 個網絡之中嘅第 <ph name="NETWORK_INDEX" /> 個網絡,<ph name="NETWORK_NAME" />,未啟用,<ph name="CONNECTION_STATUS" />,訊號強度係 <ph name="SIGNAL_STRENGTH" />%,詳細資料</translation>
 <translation id="3691184985318546178">錫蘭文</translation>
+<translation id="3703620396751288986">ZIP 封存檔</translation>
 <translation id="3726463242007121105">這部裝置所用的檔案系統不受支援,因此系統無法開啟這部裝置。</translation>
 <translation id="3727148787322499904">變更此設定將會影響所有共用網絡</translation>
 <translation id="3737576078404241332">從側欄中移除</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">捷克文,QWERTY 鍵盤</translation>
 <translation id="4656777537938206294">將檔案設定為可離線使用</translation>
 <translation id="4658782175094886150">雪中的人</translation>
+<translation id="4661996069183330363">TAR 封存檔</translation>
 <translation id="4669606053856530811">除非有人與「<ph name="SOURCE_NAME" />」的成員共用這些項目,否則他們將失去存取權。</translation>
 <translation id="467809019005607715">Google 簡報</translation>
 <translation id="4690246192099372265">瑞典文</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">畢業生</translation>
 <translation id="8912078710089354287">搖尾巴的狗</translation>
 <translation id="8919081441417203123">丹麥文</translation>
+<translation id="8965273390142984105">LZOP 壓縮檔</translation>
 <translation id="8965697826696209160">空間不足。</translation>
 <translation id="8997962250644902079">繁體中文 (拼音)</translation>
 <translation id="9003940392834790328">第 <ph name="NETWORK_INDEX" /> 個網絡,一共有 <ph name="NETWORK_COUNT" /> 個網絡,<ph name="NETWORK_NAME" />,<ph name="CONNECTION_STATUS" />,訊號強度係 <ph name="SIGNAL_STRENGTH" />%,由管理員管理,詳情</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
index c2f06776..c5b4cf2 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
@@ -35,6 +35,7 @@
 <translation id="1249250836236328755">類型</translation>
 <translation id="1254593899333212300">直接連線到網際網路</translation>
 <translation id="1272293450992660632">PIN 碼值不相符。</translation>
+<translation id="127650757582748357">BZIP2 壓縮檔</translation>
 <translation id="1280820357415527819">正在搜尋行動網路</translation>
 <translation id="1291603679744561561">SIM 卡已鎖定</translation>
 <translation id="1293556467332435079">檔案</translation>
@@ -207,8 +208,10 @@
 <translation id="2771816809568414714">乳酪</translation>
 <translation id="2781645665747935084">比利時文</translation>
 <translation id="2782104745158847185">安裝 Linux 應用程式時發生錯誤</translation>
+<translation id="2788520643285360081">7-Zip 封存檔</translation>
 <translation id="2803375539583399270">輸入 PIN</translation>
 <translation id="2820957248982571256">掃描中...</translation>
+<translation id="2822595620066756134">GZIP 壓縮檔</translation>
 <translation id="2830077785865012357">中文 (注音)</translation>
 <translation id="2843806747483486897">變更預設值...</translation>
 <translation id="2850124913210091882">備份</translation>
@@ -300,6 +303,7 @@
 <translation id="357479282490346887">立陶宛文</translation>
 <translation id="3587482841069643663">全部</translation>
 <translation id="3592251141500063301">無法將「<ph name="FILE_NAME" />」設為可離線使用</translation>
+<translation id="3593874215226880809">LZIP 壓縮檔</translation>
 <translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation>
 <translation id="3603385196401704894">加拿大法文</translation>
 <translation id="3606220979431771195">土耳其文 F</translation>
@@ -312,6 +316,7 @@
 <translation id="3689865792480713551">取消<ph name="ACTIVITY_DESCRIPTION" />。</translation>
 <translation id="3690128548376345212"><ph name="NETWORK_COUNT" /> 個網路中的第 <ph name="NETWORK_INDEX" /> 個,<ph name="NETWORK_NAME" />,未啟用,<ph name="CONNECTION_STATUS" />,訊號強度 <ph name="SIGNAL_STRENGTH" />%,詳細資料</translation>
 <translation id="3691184985318546178">錫蘭文</translation>
+<translation id="3703620396751288986">ZIP 封存檔</translation>
 <translation id="3726463242007121105">這個裝置所用的檔案系統不受支援,因此系統無法開啟這個裝置。</translation>
 <translation id="3727148787322499904">變更這項設定會影響所有共用網路</translation>
 <translation id="3737576078404241332">從側欄中移除</translation>
@@ -413,6 +418,7 @@
 <translation id="4646813851450205600">捷克文搭配 Qwerty 鍵盤</translation>
 <translation id="4656777537938206294">將檔案設為可離線使用</translation>
 <translation id="4658782175094886150">雪中人</translation>
+<translation id="4661996069183330363">TAR 封存檔</translation>
 <translation id="4669606053856530811">「<ph name="SOURCE_NAME" />」的成員將失去存取權,除非有人與他們共用這些項目。</translation>
 <translation id="467809019005607715">Google 簡報</translation>
 <translation id="4690246192099372265">瑞典文</translation>
@@ -930,6 +936,7 @@
 <translation id="8903931173357132290">畢業生</translation>
 <translation id="8912078710089354287">搖尾巴的狗</translation>
 <translation id="8919081441417203123">丹麥文</translation>
+<translation id="8965273390142984105">LZOP 壓縮檔</translation>
 <translation id="8965697826696209160">空間不足。</translation>
 <translation id="8997962250644902079">中文 (繁體拼音)</translation>
 <translation id="9003940392834790328">第 <ph name="NETWORK_INDEX" /> 個網路 (共 <ph name="NETWORK_COUNT" /> 個),<ph name="NETWORK_NAME" />,<ph name="CONNECTION_STATUS" />,訊號強度 <ph name="SIGNAL_STRENGTH" />%,由系統管理員管理,詳細資料</translation>
diff --git a/ui/compositor/recyclable_compositor_mac.cc b/ui/compositor/recyclable_compositor_mac.cc
index 5a387010..a2c1e7dc 100644
--- a/ui/compositor/recyclable_compositor_mac.cc
+++ b/ui/compositor/recyclable_compositor_mac.cc
@@ -158,8 +158,9 @@
 
 RecyclableCompositorMacFactory::RecyclableCompositorMacFactory()
     : weak_factory_(this) {
-  if (features::IsUsingSkiaRenderer())
-    recycling_disabled_ = true;
+  // TODO(crbug.com/1247756): This class probably isn't needed anymore since
+  // recycling is always disabled.
+  recycling_disabled_ = true;
 }
 
 RecyclableCompositorMacFactory::~RecyclableCompositorMacFactory() = default;
diff --git a/ui/webui/resources/css/BUILD.gn b/ui/webui/resources/css/BUILD.gn
index 321900f9..45073e7 100644
--- a/ui/webui/resources/css/BUILD.gn
+++ b/ui/webui/resources/css/BUILD.gn
@@ -33,7 +33,6 @@
     "menu.css",
     "roboto.css",
     "spinner.css",
-    "tabs.css",
     "text_defaults.css",
     "text_defaults_md.css",
     "throbber.css",
diff --git a/ui/webui/resources/css/tabs.css b/ui/webui/resources/css/tabs.css
deleted file mode 100644
index 63bb858..0000000
--- a/ui/webui/resources/css/tabs.css
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Copyright (c) 2012 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. */
-
-tabbox {
-  -webkit-box-orient: vertical;
-  display: -webkit-box;
-}
-
-tabs {
-  background: -webkit-linear-gradient(white, rgb(243, 243, 243));
-  border-bottom: 1px solid rgb(160, 160, 160);
-  display: -webkit-box;
-  margin: 0;
-  padding-inline-start: 8px;
-}
-
-/* New users of tabs.css should add 'new-style-tabs' to the class list of any
- * 'tabs' or 'tabpanels' elements.
- *
- * TODO(rfevang): Remove when all users are converted to the new style.
- *                (crbug.com/247772). */
-tabs.new-style-tabs {
-  background: #fbfbfb;
-  border-bottom: 1px solid #c8c8c8;
-  padding-inline-start: 9px;
-  padding-top: 14px;
-}
-
-tabs > * {
-  background: rgba(160, 160, 160, .3);
-  border: 1px solid rgba(160, 160, 160, .3);
-  border-bottom: 0;
-  border-top-left-radius: 3px;
-  border-top-right-radius: 3px;
-  cursor: default;
-  display: block;
-  margin-inline-start: 5px;
-  min-width: 4em;
-  padding: 2px 10px;
-  text-align: center;
-  transition: border-color 150ms, background-color 150ms;
-}
-
-tabs.new-style-tabs > * {
-  background: #fbfbfb;
-  border: 1px solid #fbfbfb;
-  border-bottom: 0;
-  border-radius: 0;
-  margin-inline-start: 0;
-  min-width: 0;
-  padding: 4px 9px 4px 10px;
-  transition: none;
-}
-
-tabs > :not([selected]) {
-  background: rgba(238, 238, 238, .3);
-}
-
-tabs.new-style-tabs > :not([selected]) {
-  background: #fbfbfb;
-  color: #646464;
-}
-
-tabs > :not([selected]):hover {
-  background: rgba(247, 247, 247, .3);
-}
-
-tabs.new-style-tabs > :not([selected]):hover {
-  background: #fbfbfb;
-  color: black;
-}
-
-tabs > [selected] {
-  background: white;
-  border-color: rgb(160, 160, 160);
-  margin-bottom: -1px;
-  position: relative;
-  transition: none;
-  z-index: 0;
-}
-
-tabs.new-style-tabs > [selected] {
-  background: #fbfbfb;
-  border-color: #c8c8c8;
-  font-weight: bold;
-}
-
-tabs:focus {
-  outline: none;
-}
-
-html.focus-outline-visible tabs:focus > [selected] {
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-tabpanels {
-  -webkit-box-flex: 1;
-  background: white;
-  box-shadow: 2px 2px 5px rgba(0, 0, 0, .2);
-  display: -webkit-box;
-  padding: 5px 15px 0 15px;
-}
-
-tabpanels.new-style-tabs {
-  background: #fbfbfb;
-  box-shadow: none;
-  padding: 0 20px;
-}
-
-tabpanels > * {
-  -webkit-box-flex: 1;
-  display: none;
-}
-
-tabpanels > [selected] {
-  display: block;
-}
diff --git a/ui/webui/resources/js/cr/ui/BUILD.gn b/ui/webui/resources/js/cr/ui/BUILD.gn
index f3245894..f3c4597 100644
--- a/ui/webui/resources/js/cr/ui/BUILD.gn
+++ b/ui/webui/resources/js/cr/ui/BUILD.gn
@@ -41,7 +41,6 @@
     "focus_outline_manager.js",
     "splitter.js",
     "store.js",
-    "tabs.js",
     "tree.js",
   ]
 
@@ -337,7 +336,6 @@
     ":splitter",
     ":store",
     ":store_client",
-    ":tabs",
     ":tree",
   ]
 }
@@ -563,15 +561,6 @@
   ]
 }
 
-js_library("tabs") {
-  deps = [
-    ":focus_outline_manager.m",
-    "..:ui.m",
-    "../..:cr.m",
-    "../..:util.m",
-  ]
-}
-
 js_library("tree") {
   deps = [
     "../:ui.m",
diff --git a/ui/webui/resources/js/cr/ui/tabs.js b/ui/webui/resources/js/cr/ui/tabs.js
deleted file mode 100644
index 1fbad571..0000000
--- a/ui/webui/resources/js/cr/ui/tabs.js
+++ /dev/null
@@ -1,259 +0,0 @@
-// Copyright (c) 2011 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.
-
-// NOTE: This file depends on ui.js (or the autogenerated ui.m.js module
-// version). These files and all files that depend on them are deprecated, and
-// should only be used by legacy UIs that have not yet been updated to new
-// patterns. Use Web Components in any new code.
-// cr_tab_box is a non-deprecated replacement for the behavior/UI in this
-// file and can be used by non-Polymer UIs.
-// cr_tabs can be used to create tabs for Polymer UIs.
-// See ui/webui/resources/cr_elements/cr_tab_box/README.md for additional
-// information on the differences between these two options.
-
-import {getPropertyDescriptor, isMac, PropertyKind} from '../../cr.m.js';
-import {findAncestor} from '../../util.m.js';
-import {decorate} from '../ui.m.js';
-import {define as crUiDefine} from '../ui.m.js';
-
-import {FocusOutlineManager} from './focus_outline_manager.m.js';
-
-/**
- * Returns the TabBox for a Tab or a TabPanel.
- * @param {Tab|Tabs|TabPanel} el The tab or tabpanel
- *     element.
- * @return {TabBox} The tab box if found.
- */
-function getTabBox(el) {
-  return /** @type {TabBox} */ (findAncestor(el, function(node) {
-    return node.tagName === 'TABBOX';
-  }));
-}
-
-/**
- * Returns whether an element is a tab related object.
- * @param {HTMLElement} el The element whose tag is being checked
- * @return {boolean} Whether the element is a tab related element.
- */
-function isTabElement(el) {
-  return el.tagName === 'TAB' || el.tagName === 'TABPANEL';
-}
-
-/**
- * Decorates all the children of an element.
- * @this {HTMLElement}
- */
-function decorateChildren() {
-  const map = {
-    TABBOX: TabBox,
-    TABS: Tabs,
-    TAB: Tab,
-    TABPANELS: TabPanels,
-    TABPANEL: TabPanel
-  };
-
-  Object.keys(map).forEach(function(tagName) {
-    const children = this.getElementsByTagName(tagName);
-    const constr = map[tagName];
-    for (const child of children) {
-      decorate(child, constr);
-    }
-  }.bind(this));
-}
-
-/**
- * Set hook for TabBox selectedIndex.
- * @param {number} selectedIndex The new selected index.
- * @this {TabBox}
- */
-function selectedIndexSetHook(selectedIndex) {
-  let child, tabChild, element;
-  element = this.querySelector('tabs');
-  if (element) {
-    let i;
-    for (i = 0; child = element.children[i]; i++) {
-      const isSelected = i === selectedIndex;
-      child.selected = isSelected;
-
-      // Update tabIndex for a11y
-      child.setAttribute('tabindex', isSelected ? 0 : -1);
-
-      // Update aria-selected attribute for a11y
-      const firstSelection = !child.hasAttribute('aria-selected');
-      child.setAttribute('aria-selected', isSelected);
-
-      // Update focus, but don't override initial focus.
-      if (isSelected && !firstSelection) {
-        child.focus();
-      }
-    }
-  }
-
-  element = this.querySelector('tabpanels');
-  if (element) {
-    let i;
-    for (i = 0; child = element.children[i]; i++) {
-      child.selected = i === selectedIndex;
-    }
-  }
-}
-
-/**
- * Creates a new tabbox element.
- * @param {Object=} opt_propertyBag Optional properties.
- * @constructor
- * @extends {HTMLElement}
- */
-export const TabBox = crUiDefine('tabbox');
-
-TabBox.prototype = {
-  __proto__: HTMLElement.prototype,
-  decorate() {
-    decorateChildren.call(this);
-    this.addEventListener('selectedChange', this.handleSelectedChange_, true);
-    this.selectedIndex = 0;
-  },
-
-  /**
-   * Callback for when a Tab or TabPanel changes its selected property.
-   * @param {Event} e The property change event.
-   * @private
-   */
-  handleSelectedChange_(e) {
-    const target = /** @type {Tab|TabPanel}} */ (e.target);
-    if (e.newValue && isTabElement(target) && getTabBox(target) === this) {
-      const index =
-          Array.prototype.indexOf.call(target.parentElement.children, target);
-      this.selectedIndex = index;
-    }
-  },
-
-  selectedIndex_: -1
-};
-
-/**
- * The index of the selected tab or -1 if no tab is selected.
- * @type {number}
- */
-TabBox.prototype.selectedIndex;
-Object.defineProperty(
-    TabBox.prototype, 'selectedIndex',
-    getPropertyDescriptor(
-        'selectedIndex', PropertyKind.JS, selectedIndexSetHook));
-
-/**
- * Creates a new tabs element.
- * @param {Object=} opt_propertyBag Optional properties.
- * @constructor
- * @extends {HTMLElement}
- */
-export const Tabs = crUiDefine('tabs');
-Tabs.prototype = {
-  __proto__: HTMLElement.prototype,
-  decorate() {
-    decorateChildren.call(this);
-
-    this.addEventListener('keydown', this.handleKeyDown_.bind(this));
-
-    // Get (and initializes a focus outline manager.
-    this.focusOutlineManager_ = FocusOutlineManager.forDocument(
-        /** @type {!Document} */ (this.ownerDocument));
-  },
-
-  /**
-   * Handle keydown to change the selected tab when the user presses the
-   * arrow keys.
-   * @param {Event} e The keyboard event.
-   * @private
-   */
-  handleKeyDown_(e) {
-    let delta = 0;
-    switch (e.key) {
-      case 'ArrowLeft':
-      case 'ArrowUp':
-        delta = -1;
-        break;
-      case 'ArrowRight':
-      case 'ArrowDown':
-        delta = 1;
-        break;
-    }
-
-    if (!delta) {
-      return;
-    }
-
-    const cs = this.ownerDocument.defaultView.getComputedStyle(this);
-    if (cs.direction === 'rtl') {
-      delta *= -1;
-    }
-
-    const count = this.children.length;
-    const tabbox = getTabBox(this);
-    const index = tabbox.selectedIndex;
-    tabbox.selectedIndex = (index + delta + count) % count;
-
-    // Show focus outline since we used the keyboard.
-    this.focusOutlineManager_.visible = true;
-  }
-};
-
-/**
- * Creates a new tab element.
- * @param {Object=} opt_propertyBag Optional properties.
- * @constructor
- * @extends {HTMLElement}
- */
-export const Tab = crUiDefine('tab');
-Tab.prototype = {
-  __proto__: HTMLElement.prototype,
-  decorate() {
-    const self = this;
-    this.addEventListener(isMac ? 'click' : 'mousedown', function() {
-      self.selected = true;
-    });
-  }
-};
-
-/**
- * Whether the tab is selected.
- * @type {boolean}
- */
-Tab.prototype.selected;
-Object.defineProperty(
-    Tab.prototype, 'selected',
-    getPropertyDescriptor('selected', PropertyKind.BOOL_ATTR));
-
-/**
- * Creates a new tabpanels element.
- * @param {Object=} opt_propertyBag Optional properties.
- * @constructor
- * @extends {HTMLElement}
- */
-export const TabPanels = crUiDefine('tabpanels');
-TabPanels.prototype = {
-  __proto__: HTMLElement.prototype,
-  decorate: decorateChildren
-};
-
-/**
- * Creates a new tabpanel element.
- * @param {Object=} opt_propertyBag Optional properties.
- * @constructor
- * @extends {HTMLElement}
- */
-export const TabPanel = crUiDefine('tabpanel');
-TabPanel.prototype = {
-  __proto__: HTMLElement.prototype,
-  decorate() {}
-};
-
-/**
- * Whether the tab is selected.
- * @type {boolean}
- */
-TabPanel.prototype.selected;
-Object.defineProperty(
-    TabPanel.prototype, 'selected',
-    getPropertyDescriptor('selected', PropertyKind.BOOL_ATTR));