diff --git a/DEPS b/DEPS
index cfa92b70..c0fece2 100644
--- a/DEPS
+++ b/DEPS
@@ -209,11 +209,11 @@
   # 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': '421c360abe763148935eb84a133ddb9eab179209',
+  'skia_revision': '91216673f7266acc9ee57cdb6c2106452a6fe0f0',
   # 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': '9d64f51f8b298b2158ecd7965c20d4cf9178a385',
+  'v8_revision': '90c77f74325dfa5fba11689d6092ae940b412553',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -221,7 +221,7 @@
   # 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': 'ed8755dfdee106faaafc97d00dda84c9a6f694e3',
+  'angle_revision': 'dcfd55262c986478eeb04cc3edf2effc65c69044',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -256,7 +256,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling NaCl
   # and whatever else without interference from each other.
-  'nacl_revision': '6f80046c1db99a8b96995ab2e6f325f65bed5e38',
+  'nacl_revision': '5dec1e72264c1ff96cd8f42e86e5ce30364c4c0c',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling freetype
   # and whatever else without interference from each other.
@@ -288,7 +288,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': '56e1e43c887dbb2869ce52d9b99f71774740c249',
+  'devtools_frontend_revision': '300f2b3d7b972245dd3e92e6ce9f75027863d63b',
   # 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.
@@ -328,7 +328,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': '1bd0450254dee91d82122ae34857a5d8a8f4d8da',
+  'dawn_revision': '1de1371bc53b62c4d8a56e1533bcddff4f42ffc8',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -548,7 +548,7 @@
     Var('chromium_git') + '/external/github.com/toji/webvr.info.git' + '@' + 'c58ae99b9ff9e2aa4c524633519570bf33536248',
 
   'src/ios/third_party/earl_grey2/src': {
-      'url': Var('chromium_git') + '/external/github.com/google/EarlGrey.git' + '@' + '1b993658f3d76dd7f5fa45c55e7d7080b09bae31',
+      'url': Var('chromium_git') + '/external/github.com/google/EarlGrey.git' + '@' + 'aa4852822741a0cc59902469077376f84664b45d',
       'condition': 'checkout_ios',
   },
 
@@ -966,7 +966,7 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'b3c9edb4af40cce0512adbcae7fc3fd2450e2b45',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '5ef4697af266685400317d4af1c585a346cf23de',
 
   'src/third_party/devtools-frontend/src':
     Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'),
@@ -1207,7 +1207,7 @@
   },
 
   'src/third_party/libjpeg_turbo':
-    Var('chromium_git') + '/chromium/deps/libjpeg_turbo.git' + '@' + '7b4981b6500ccba10733c352b9ed2dad14ce3c73',
+    Var('chromium_git') + '/chromium/deps/libjpeg_turbo.git' + '@' + '24e310554f07c0fdb8ee52e3e708e4f3e9eb6e20',
 
   'src/third_party/liblouis/src': {
       'url': Var('chromium_git') + '/external/liblouis-github.git' + '@' + '03d7d72d983d47c17f7de95bbeae89fe33e41943',
@@ -1338,7 +1338,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'e01ad9a6a83bd8df88dc01bc86fd0ec9080296c7',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + '14c4d4957d5e2cb7c6fd4d6b8a3f51318c1b22da',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1552,7 +1552,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '9dd7f1e157c609c8056f7f8b9c04e627611ef937',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'f8187e0a82130f93cf01953deafd63ea427af022',
+    Var('webrtc_git') + '/src.git' + '@' + '8d190d3ce8dadc8c35db74b4968ed2a788341bc3',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1579,7 +1579,7 @@
       'packages': [
         {
           'package': 'skia/tools/goldctl/linux-amd64',
-          'version': 'E6CrCAKZ_DKxclAqgBcEt4adU3HaviUwN42S1t3rW5QC',
+          'version': 'tB-aCGPgfoZoJkUY-FwC5e0McBlS1VYtKsDpf5G42GUC',
         },
       ],
       'dep_type': 'cipd',
@@ -1589,7 +1589,7 @@
       'packages': [
         {
           'package': 'skia/tools/goldctl/windows-amd64',
-          'version': 'XXJR8g1yaihqXsw7WodVpgLtZsimS7Cc3yLJI9sJssgC',
+          'version': 'PtSSNrSR0okAf8Q4RMYxK1dSmKxaw9jqoyxdNvNzOqwC',
         },
       ],
       'dep_type': 'cipd',
@@ -1599,7 +1599,7 @@
       'packages': [
         {
           'package': 'skia/tools/goldctl/mac-amd64',
-          'version': 'RTGs3s-N45d3AzDXnEKw3kbI0qf8xyS_JYMHo4iRCMIC',
+          'version': '010YBDimThQHTBULjf4bYMXghL37h6xogw08_Ij5RrMC',
         },
       ],
       'dep_type': 'cipd',
@@ -1613,7 +1613,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@1778f10117c5df19c433bedad7991db8da8ae397',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@9172c17a540aeb670dc9f04a1111e8c24f805d8d',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/ash/constants/ash_features.cc b/ash/constants/ash_features.cc
index 36ab1f5..453465d6 100644
--- a/ash/constants/ash_features.cc
+++ b/ash/constants/ash_features.cc
@@ -472,10 +472,6 @@
 const base::Feature kLanguageSettingsUpdate2{"LanguageSettingsUpdate2",
                                              base::FEATURE_DISABLED_BY_DEFAULT};
 
-// Enables or disables device management disclosure on login / lock screen.
-const base::Feature kLoginDeviceManagementDisclosure{
-    "LoginDeviceManagementDisclosure", base::FEATURE_ENABLED_BY_DEFAULT};
-
 // Controls whether to enable the requirement of a minimum chrome version on the
 // device through the policy DeviceMinimumVersion. If the requirement is
 // not met and the warning time in the policy has expired, the user is
@@ -824,10 +820,6 @@
   return base::FeatureList::IsEnabled(kKerberosSettingsSection);
 }
 
-bool IsLoginDeviceManagementDisclosureEnabled() {
-  return base::FeatureList::IsEnabled(kLoginDeviceManagementDisclosure);
-}
-
 bool IsMinimumChromeVersionEnabled() {
   return base::FeatureList::IsEnabled(kMinimumChromeVersion);
 }
diff --git a/ash/constants/ash_features.h b/ash/constants/ash_features.h
index 6df875a..c6733bf 100644
--- a/ash/constants/ash_features.h
+++ b/ash/constants/ash_features.h
@@ -208,8 +208,6 @@
 COMPONENT_EXPORT(ASH_CONSTANTS)
 extern const base::Feature kLanguageSettingsUpdate2;
 COMPONENT_EXPORT(ASH_CONSTANTS)
-extern const base::Feature kLoginDeviceManagementDisclosure;
-COMPONENT_EXPORT(ASH_CONSTANTS)
 extern const base::Feature kMediaAppAnnotation;
 COMPONENT_EXPORT(ASH_CONSTANTS)
 extern const base::Feature kMediaAppDisplayExif;
@@ -362,7 +360,6 @@
 COMPONENT_EXPORT(ASH_CONSTANTS)
 bool IsInstantTetheringBackgroundAdvertisingSupported();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsKerberosSettingsSectionEnabled();
-COMPONENT_EXPORT(ASH_CONSTANTS) bool IsLoginDeviceManagementDisclosureEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsMinimumChromeVersionEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsNetworkingInDiagnosticsAppEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsNewOobeLayoutEnabled();
diff --git a/ash/login/ui/lock_contents_view.cc b/ash/login/ui/lock_contents_view.cc
index d0a7ff2..b9f7b0b0 100644
--- a/ash/login/ui/lock_contents_view.cc
+++ b/ash/login/ui/lock_contents_view.cc
@@ -774,8 +774,6 @@
 
 void LockContentsView::ShowEnterpriseDomainManager(
     const std::string& entreprise_domain_manager) {
-  if (!chromeos::features::IsLoginDeviceManagementDisclosureEnabled())
-    return;
   bottom_status_indicator_->SetText(l10n_util::GetStringFUTF16(
       IDS_ASH_LOGIN_MANAGED_DEVICE_INDICATOR, ui::GetChromeOSDeviceName(),
       base::UTF8ToUTF16(entreprise_domain_manager)));
diff --git a/ash/login/ui/lock_contents_view_unittest.cc b/ash/login/ui/lock_contents_view_unittest.cc
index 0a70f03..d1a4d14d 100644
--- a/ash/login/ui/lock_contents_view_unittest.cc
+++ b/ash/login/ui/lock_contents_view_unittest.cc
@@ -820,22 +820,8 @@
   EXPECT_TRUE(test_api.bottom_status_indicator()->GetVisible());
 }
 
-class LockContentsViewUnitTestWithDeviceDisclosureEnabled
-    : public LockContentsViewUnitTest {
- public:
-  LockContentsViewUnitTestWithDeviceDisclosureEnabled()
-      : LockContentsViewUnitTest() {
-    feature_list_.InitWithFeatures(
-        {chromeos::features::kLoginDeviceManagementDisclosure}, {});
-  }
-
- private:
-  base::test::ScopedFeatureList feature_list_;
-};
-
 // Show bottom status indicator if device is enrolled
-TEST_F(LockContentsViewUnitTestWithDeviceDisclosureEnabled,
-       ShowStatusIndicatorIfEnrolledDevice) {
+TEST_F(LockContentsViewUnitTest, ShowStatusIndicatorIfEnrolledDevice) {
   // If the device is enrolled, bottom_status_indicator should be visible.
   Shell::Get()->system_tray_model()->SetEnterpriseDomainInfo("BestCompanyEver",
                                                              false);
@@ -860,8 +846,7 @@
 }
 
 // Show bottom status indicator if device is enrolled
-TEST_F(LockContentsViewUnitTestWithDeviceDisclosureEnabled,
-       ShowManagementBubbleOnClickIfEnrolledDevice) {
+TEST_F(LockContentsViewUnitTest, ShowManagementBubbleOnClickIfEnrolledDevice) {
   // If the device is enrolled, bottom_status_indicator should be visible.
   Shell::Get()->system_tray_model()->SetEnterpriseDomainInfo("BestCompanyEver",
                                                              false);
@@ -896,8 +881,7 @@
 
 // Do not show the management bubble on click if ADB sideloading is enabled and
 // device is enrolled.
-TEST_F(LockContentsViewUnitTestWithDeviceDisclosureEnabled,
-       DoNotShowManagementBubbleOnClickIfAdb) {
+TEST_F(LockContentsViewUnitTest, DoNotShowManagementBubbleOnClickIfAdb) {
   // If the device is enrolled, bottom_status_indicator should be visible.
   Shell::Get()->system_tray_model()->SetEnterpriseDomainInfo("BestCompanyEver",
                                                              false);
diff --git a/ash/projector/projector_ui_controller.cc b/ash/projector/projector_ui_controller.cc
index 7f32790..8df51a8a 100644
--- a/ash/projector/projector_ui_controller.cc
+++ b/ash/projector/projector_ui_controller.cc
@@ -67,7 +67,7 @@
       : controller_(controller) {
     aura::Window* root_window = Shell::Get()->GetRootWindowForNewWindows();
     caption_bubble_model_ = std::make_unique<captions::CaptionBubbleModel>(
-        root_window->GetBoundsInScreen());
+        root_window->GetBoundsInScreen(), base::NullCallback());
 
     auto* caption_bubble = new captions::CaptionBubble(
         base::NullCallback(), /* hide_on_inactivity= */ false);
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb
index 08dfe9f0..24c1161 100644
--- a/ash/strings/ash_strings_az.xtb
+++ b/ash/strings/ash_strings_az.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">təsvir</translation>
 <translation id="3510164367642747937">Maus kursorunu vurğulayın</translation>
 <translation id="3513798432020909783"><ph name="MANAGER_EMAIL" /> tərəfindən idarə edilən hesab</translation>
+<translation id="3552189655002856821">Wi-Fi deaktiv edilib</translation>
 <translation id="3563775809269155755">Hotspotu aktiv edin</translation>
 <translation id="3571734092741541777">Quraşdırın</translation>
 <translation id="3573179567135747900">"<ph name="FROM_LOCALE" />" qaytarın (yenidən başlanmanı tələb edir)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">Səs daxiletməsi</translation>
 <translation id="3900355044994618856">Sessiyanız <ph name="SESSION_TIME_REMAINING" /> ərzində bitəcək</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> qoşulur</translation>
+<translation id="3923494859158167397">Mobil şəbəkələr ayarlanmayıb</translation>
 <translation id="3943857333388298514">Yapışdırın.</translation>
 <translation id="394485226368336402">Audio ayarlar</translation>
 <translation id="3945319193631853098">Ayarlamanı bitirmək üçün toxunun</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">Avtomatik klik düyməsi</translation>
 <translation id="4197790712631116042">Deaktiv</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> əlçatan deyil.</translation>
+<translation id="4209973997261364186">Wi-Fi aktivdir</translation>
 <translation id="4212472694152630271">PIN'ə keçin</translation>
 <translation id="4215497585250573029">VPN Ayarları</translation>
 <translation id="4217571870635786043">İmla</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">Gecə İşığı zəif işıqda ekrana baxmağı və ya oxumağı asanlaşdırır. Gecə İşığının yandığı vaxtı dəyişmək və ya onu birdəfəlik söndürmək üçün toxunun.</translation>
 <translation id="5691772641933328258">Barmaq izi tanınmadı</translation>
 <translation id="5710450975648804523">Narahat Etməyin rejimi aktivdir</translation>
+<translation id="571295407079589142">Mobil data deaktiv edilib</translation>
 <translation id="573413375004481890">Bu cihaz bütün displeyləri dəstəkləyə bilmədi və biri ayrıldı</translation>
 <translation id="574392208103952083">Orta</translation>
 <translation id="5744083938413354016">Klikləyərək çəkmək</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb
index ff15e46..cfee0ad 100644
--- a/ash/strings/ash_strings_de.xtb
+++ b/ash/strings/ash_strings_de.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">Definition</translation>
 <translation id="3510164367642747937">Cursor hervorheben</translation>
 <translation id="3513798432020909783">Konto verwaltet von <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">WLAN ist deaktiviert</translation>
 <translation id="3563775809269155755">Hotspot aktivieren</translation>
 <translation id="3571734092741541777">Einrichten</translation>
 <translation id="3573179567135747900">Zurücksetzen auf "<ph name="FROM_LOCALE" />" (Neustart erforderlich)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">Spracheingabe</translation>
 <translation id="3900355044994618856">Ihre Sitzung wird in <ph name="SESSION_TIME_REMAINING" /> beendet</translation>
 <translation id="3901991538546252627">Verbindung mit <ph name="NAME" /> wird hergestellt.</translation>
+<translation id="3923494859158167397">Es sind keine Mobilfunknetze eingerichtet</translation>
 <translation id="3943857333388298514">Einfügen</translation>
 <translation id="394485226368336402">Audioeinstellungen</translation>
 <translation id="3945319193631853098">Zum Abschließen tippen</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">Schaltfläche für automatische Klicks</translation>
 <translation id="4197790712631116042">Aus</translation>
 <translation id="4201033867194214117">"<ph name="FEATURE_NAME" />" ist nicht verfügbar.</translation>
+<translation id="4209973997261364186">WLAN ist aktiviert</translation>
 <translation id="4212472694152630271">Zu PIN wechseln</translation>
 <translation id="4215497585250573029">VPN-Einstellungen</translation>
 <translation id="4217571870635786043">Spracheingabe</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">Mit der Funktion "Nachtlicht" ist der Bildschirm bei schwachem Licht nicht störend hell und das Lesen fällt leichter. Wenn Sie hier tippen, können Sie einstellen, wann die Funktion eingeschaltet werden soll, oder sie ganz deaktivieren.</translation>
 <translation id="5691772641933328258">Fingerabdruck nicht erkannt</translation>
 <translation id="5710450975648804523">„Bitte nicht stören“ ist aktiviert</translation>
+<translation id="571295407079589142">Mobile Daten sind deaktiviert</translation>
 <translation id="573413375004481890">Dieses Gerät kann nicht alle Ihre Displays unterstützen. Daher wurde die Verbindung zu einem Display getrennt.</translation>
 <translation id="574392208103952083">Mittel</translation>
 <translation id="5744083938413354016">Antippen und Ziehen</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb
index 6abb8d9f..c9c49be0 100644
--- a/ash/strings/ash_strings_es-419.xtb
+++ b/ash/strings/ash_strings_es-419.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">definición</translation>
 <translation id="3510164367642747937">Resaltar el cursor del mouse</translation>
 <translation id="3513798432020909783">Cuenta administrada por <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">La conexión Wi-Fi está desactivada</translation>
 <translation id="3563775809269155755">Habilitar el hotspot</translation>
 <translation id="3571734092741541777">Configurar</translation>
 <translation id="3573179567135747900">Volver a "<ph name="FROM_LOCALE" />" (debes reiniciar).</translation>
@@ -350,6 +351,7 @@
 <translation id="3899995891769452915">Entrada de voz</translation>
 <translation id="3900355044994618856">Tu sesión finalizará en <ph name="SESSION_TIME_REMAINING" /></translation>
 <translation id="3901991538546252627">Conectando con: <ph name="NAME" /></translation>
+<translation id="3923494859158167397">No se configuró ninguna red móvil.</translation>
 <translation id="3943857333388298514">Pegar</translation>
 <translation id="394485226368336402">Configuración de audio</translation>
 <translation id="3945319193631853098">Presiona para completar la configuración.</translation>
@@ -380,6 +382,7 @@
 <translation id="4195877955194704651">Botón de clic automáticos</translation>
 <translation id="4197790712631116042">No</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> no está disponible.</translation>
+<translation id="4209973997261364186">La conexión Wi-Fi está activada.</translation>
 <translation id="4212472694152630271">Cambiar a PIN</translation>
 <translation id="4215497585250573029">Configuración de la VPN</translation>
 <translation id="4217571870635786043">Dictado</translation>
@@ -556,6 +559,7 @@
 <translation id="5689633613396158040">La Luz nocturna te permite ver la pantalla o leer mejor con luz tenue. Presiona para cambiar el horario en el que se activa la Luz nocturna o desactívala por completo.</translation>
 <translation id="5691772641933328258">No se reconoció la huella dactilar</translation>
 <translation id="5710450975648804523">"No interrumpir" activado</translation>
+<translation id="571295407079589142">Los datos móviles están desactivados.</translation>
 <translation id="573413375004481890">Este dispositivo no admite tantas pantallas, por lo que se desconectó una de ellas</translation>
 <translation id="574392208103952083">Media</translation>
 <translation id="5744083938413354016">Función tocar y arrastrar</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index c85049a..e1d47c2 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">definición</translation>
 <translation id="3510164367642747937">Resaltar el cursor del ratón</translation>
 <translation id="3513798432020909783">Cuenta gestionada por <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">La conexión Wi‑Fi está desactivada</translation>
 <translation id="3563775809269155755">Habilitar punto de acceso</translation>
 <translation id="3571734092741541777">Configurar</translation>
 <translation id="3573179567135747900">Cambiar de nuevo por "<ph name="FROM_LOCALE" />" (requiere reiniciar)</translation>
@@ -350,6 +351,7 @@
 <translation id="3899995891769452915">Entrada de voz</translation>
 <translation id="3900355044994618856">Tu sesión terminará en <ph name="SESSION_TIME_REMAINING" /></translation>
 <translation id="3901991538546252627">Conectando con: <ph name="NAME" /></translation>
+<translation id="3923494859158167397">No se han configurado redes móviles</translation>
 <translation id="3943857333388298514">Pegar</translation>
 <translation id="394485226368336402">Configuración de audio</translation>
 <translation id="3945319193631853098">Toca para completar la configuración</translation>
@@ -380,6 +382,7 @@
 <translation id="4195877955194704651">Botón de clics automáticos</translation>
 <translation id="4197790712631116042">Desactivado</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> no está disponible.</translation>
+<translation id="4209973997261364186">La conexión Wi-Fi está activada</translation>
 <translation id="4212472694152630271">Cambiar a PIN</translation>
 <translation id="4215497585250573029">Ajustes de VPN</translation>
 <translation id="4217571870635786043">Dictado</translation>
@@ -556,6 +559,7 @@
 <translation id="5689633613396158040">Con la luz nocturna, resulta más fácil mirar la pantalla o leer con poca luz. Toca para elegir a qué hora debe activarse la luz nocturna o para desactivarla por completo.</translation>
 <translation id="5691772641933328258">Huella digital no reconocida</translation>
 <translation id="5710450975648804523">Modo No molestar activado</translation>
+<translation id="571295407079589142">Los datos móviles están desactivados</translation>
 <translation id="573413375004481890">Este dispositivo no puede admitir todas tus pantallas, así que se ha desconectado una</translation>
 <translation id="574392208103952083">Media</translation>
 <translation id="5744083938413354016">Tocar y arrastrar</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb
index 29536f8..52952ef 100644
--- a/ash/strings/ash_strings_fr.xtb
+++ b/ash/strings/ash_strings_fr.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">définition</translation>
 <translation id="3510164367642747937">Mettre le curseur de la souris en surbrillance</translation>
 <translation id="3513798432020909783">Compte géré par <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">Le Wi-Fi est désactivé</translation>
 <translation id="3563775809269155755">Activer le point d'accès</translation>
 <translation id="3571734092741541777">Configurer</translation>
 <translation id="3573179567135747900">Revenir à "<ph name="FROM_LOCALE" />" (redémarrage requis)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">Saisie vocale</translation>
 <translation id="3900355044994618856">Votre session va être fermée dans <ph name="SESSION_TIME_REMAINING" /></translation>
 <translation id="3901991538546252627">Connexion à <ph name="NAME" /> en cours…</translation>
+<translation id="3923494859158167397">Aucun réseau mobile configuré</translation>
 <translation id="3943857333388298514">Coller</translation>
 <translation id="394485226368336402">Paramètres audio</translation>
 <translation id="3945319193631853098">Appuyez pour terminer la configuration</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">Bouton de clics automatiques</translation>
 <translation id="4197790712631116042">Désactivé</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> n'est pas disponible.</translation>
+<translation id="4209973997261364186">Le Wi-Fi est activé</translation>
 <translation id="4212472694152630271">Authentification par code</translation>
 <translation id="4215497585250573029">Paramètres de VPN</translation>
 <translation id="4217571870635786043">Dictée</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">Cette fonctionnalité facilite la lecture à l'écran lorsque l'éclairage est faible. Appuyez ici pour modifier l'heure à laquelle elle doit s'activer ou désactivez-la complètement.</translation>
 <translation id="5691772641933328258">Empreinte digitale non reconnue</translation>
 <translation id="5710450975648804523">Mode "Ne pas déranger" activé</translation>
+<translation id="571295407079589142">Les données mobiles sont désactivées</translation>
 <translation id="573413375004481890">Cet appareil ne peut pas prendre en charge tous vos écrans. L'un d'eux a été déconnecté</translation>
 <translation id="574392208103952083">Moyen</translation>
 <translation id="5744083938413354016">Déplacement tactile</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb
index 6f9bb2a..c3daf1a 100644
--- a/ash/strings/ash_strings_id.xtb
+++ b/ash/strings/ash_strings_id.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">definisi</translation>
 <translation id="3510164367642747937">Sorot kursor mouse</translation>
 <translation id="3513798432020909783">Akun dikelola oleh <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">Wi-Fi dinonaktifkan</translation>
 <translation id="3563775809269155755">Aktifkan hotspot</translation>
 <translation id="3571734092741541777">Siapkan</translation>
 <translation id="3573179567135747900">Ubah kembali ke "<ph name="FROM_LOCALE" />" (harus dinyalakan ulang)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">Masukan suara</translation>
 <translation id="3900355044994618856">Sesi akan berakhir dalam <ph name="SESSION_TIME_REMAINING" /></translation>
 <translation id="3901991538546252627">Menyambung ke <ph name="NAME" /></translation>
+<translation id="3923494859158167397">Tidak ada jaringan seluler yang disiapkan</translation>
 <translation id="3943857333388298514">Sisipkan</translation>
 <translation id="394485226368336402">Setelan audio</translation>
 <translation id="3945319193631853098">Ketuk untuk menyelesaikan penyiapan</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">Tombol klik otomatis</translation>
 <translation id="4197790712631116042">Nonaktif</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> tidak tersedia.</translation>
+<translation id="4209973997261364186">Wi-Fi diaktifkan</translation>
 <translation id="4212472694152630271">Ganti ke PIN</translation>
 <translation id="4215497585250573029">Setelan VPN</translation>
 <translation id="4217571870635786043">Dikte</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">Cahaya Malam memudahkan Anda melihat layar atau membaca saat cahaya redup. Ketuk untuk mengubah waktu pengaktifan Cahaya Malam atau menonaktifkannya sepenuhnya.</translation>
 <translation id="5691772641933328258">Sidik jari tidak dikenali</translation>
 <translation id="5710450975648804523">Mode Jangan Ganggu aktif</translation>
+<translation id="571295407079589142">Data seluler dinonaktifkan</translation>
 <translation id="573413375004481890">Perangkat ini tidak dapat mendukung semua layar Anda, jadi salah satu telah diputuskan sambungannya</translation>
 <translation id="574392208103952083">Sedang</translation>
 <translation id="5744083938413354016">Ketuk tarik</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb
index 693b6f49..7fa86e8c 100644
--- a/ash/strings/ash_strings_it.xtb
+++ b/ash/strings/ash_strings_it.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">definizione</translation>
 <translation id="3510164367642747937">Evidenzia il puntatore del mouse</translation>
 <translation id="3513798432020909783">Account gestito da <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">Il Wi-Fi non è attivo</translation>
 <translation id="3563775809269155755">Attiva hotspot</translation>
 <translation id="3571734092741541777">Configura</translation>
 <translation id="3573179567135747900">Torna a "<ph name="FROM_LOCALE" />" (è necessario riavviare)</translation>
@@ -350,6 +351,7 @@
 <translation id="3899995891769452915">Input vocale</translation>
 <translation id="3900355044994618856">La sessione terminerà tra <ph name="SESSION_TIME_REMAINING" /></translation>
 <translation id="3901991538546252627">Connessione a: <ph name="NAME" /></translation>
+<translation id="3923494859158167397">Nessuna rete mobile configurata</translation>
 <translation id="3943857333388298514">Incolla</translation>
 <translation id="394485226368336402">Impostazioni audio</translation>
 <translation id="3945319193631853098">Tocca per completare la configurazione</translation>
@@ -380,6 +382,7 @@
 <translation id="4195877955194704651">Pulsante Clic automatici</translation>
 <translation id="4197790712631116042">Off</translation>
 <translation id="4201033867194214117">La funzionalità <ph name="FEATURE_NAME" /> non è disponibile.</translation>
+<translation id="4209973997261364186">Il Wi-Fi è attivo</translation>
 <translation id="4212472694152630271">Passa al PIN</translation>
 <translation id="4215497585250573029">Impostazioni VPN</translation>
 <translation id="4217571870635786043">Dettatura</translation>
@@ -556,6 +559,7 @@
 <translation id="5689633613396158040">Con la funzione Luminosità notturna, potrai guardare lo schermo senza sforzare la vista o leggere in condizioni di luce attenuata. Tocca per cambiare l'ora di attivazione della funzione Luminosità notturna o disattiva completamente la funzione.</translation>
 <translation id="5691772641933328258">Impronta digitale non riconosciuta</translation>
 <translation id="5710450975648804523">Funzione Non disturbare attiva</translation>
+<translation id="571295407079589142">I dati mobili non sono attivi</translation>
 <translation id="573413375004481890">Questo dispositivo non può supportare tutti i tuoi display, pertanto uno è stato scollegato</translation>
 <translation id="574392208103952083">Medio</translation>
 <translation id="5744083938413354016">Trascinamento al tocco</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb
index 13db0356..7668cb2 100644
--- a/ash/strings/ash_strings_ja.xtb
+++ b/ash/strings/ash_strings_ja.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">定義</translation>
 <translation id="3510164367642747937">マウスカーソルをハイライト表示する</translation>
 <translation id="3513798432020909783">このアカウントは <ph name="MANAGER_EMAIL" /> により管理されています</translation>
+<translation id="3552189655002856821">Wi-Fi はオフです</translation>
 <translation id="3563775809269155755">アクセス ポイントを有効にする</translation>
 <translation id="3571734092741541777">設定</translation>
 <translation id="3573179567135747900">「<ph name="FROM_LOCALE" />」に戻します(再起動が必要です)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">音声入力</translation>
 <translation id="3900355044994618856">セッションの制限時間まであと <ph name="SESSION_TIME_REMAINING" /> です</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> に接続しています</translation>
+<translation id="3923494859158167397">モバイル ネットワークが設定されていません</translation>
 <translation id="3943857333388298514">貼り付け</translation>
 <translation id="394485226368336402">音声設定</translation>
 <translation id="3945319193631853098">設定を完了するにはタップしてください</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">自動クリックボタン</translation>
 <translation id="4197790712631116042">オフ</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> は使用できません。</translation>
+<translation id="4209973997261364186">Wi-Fi はオンです</translation>
 <translation id="4212472694152630271">PIN に切り替え</translation>
 <translation id="4215497585250573029">VPN 設定</translation>
 <translation id="4217571870635786043">音声入力</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">夜間モードを利用すると、薄明かりの下でも画面が見やすくなります。タップして、夜間モードをオンにする時間を変更したり、完全にオフにしたりできます。</translation>
 <translation id="5691772641933328258">指紋を認識できません</translation>
 <translation id="5710450975648804523">サイレント モードがオンになっています</translation>
+<translation id="571295407079589142">モバイルデータ通信はオフです</translation>
 <translation id="573413375004481890">このデバイスでサポートできるディスプレイの上限数を超えたため、ディスプレイが 1 台切断されました</translation>
 <translation id="574392208103952083">中</translation>
 <translation id="5744083938413354016">タップによるドラッグ</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb
index 302efb6..4cd1f902 100644
--- a/ash/strings/ash_strings_kk.xtb
+++ b/ash/strings/ash_strings_kk.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">анықтама</translation>
 <translation id="3510164367642747937">Тінтуір курсорын бөлектеу</translation>
 <translation id="3513798432020909783"><ph name="MANAGER_EMAIL" /> басқаратын есептік жазба</translation>
+<translation id="3552189655002856821">Wi-Fi өшірулі</translation>
 <translation id="3563775809269155755">Хотспотты қосу</translation>
 <translation id="3571734092741541777">Орнату</translation>
 <translation id="3573179567135747900">Қайта "<ph name="FROM_LOCALE" />" етіп өзгерту (қайта іске қосуды қажет етеді)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">Дауыспен енгізу</translation>
 <translation id="3900355044994618856">Сеанс <ph name="SESSION_TIME_REMAINING" /> өткен соң аяқталады</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> желісіне қосылу</translation>
+<translation id="3923494859158167397">Ешқандай мобильдік желі реттелмеген.</translation>
 <translation id="3943857333388298514">Қою</translation>
 <translation id="394485226368336402">Аудио параметрлері</translation>
 <translation id="3945319193631853098">Реттеуді аяқтау үшін түртіңіз.</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">Автоматты басу түймесі</translation>
 <translation id="4197790712631116042">Өшірулі</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> қолжетімді емес.</translation>
+<translation id="4209973997261364186">Wi-Fi қосылды.</translation>
 <translation id="4212472694152630271">PIN кодына ауысу</translation>
 <translation id="4215497585250573029">VPN параметрлері</translation>
 <translation id="4217571870635786043">Мәтінді дауыспен енгізу</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">Түнгі жарық режимін қосып қойсаңыз, айнала күңгірттеніп тұрғанда, экран жарығы көзіңізді ауыртпайды. Түнгі жарық қосылатын уақытты өзгерту немесе оны толықтай өшіру үшін түртіңіз.</translation>
 <translation id="5691772641933328258">Саусағыңыздың ізі танылмады</translation>
 <translation id="5710450975648804523">Мазаламау режимі қосулы</translation>
+<translation id="571295407079589142">Мобильдік интернет өшірілді.</translation>
 <translation id="573413375004481890">Бұл құрылғы барлық дисплейлерді бірдей қолдамайтындықтан, бір дисплей ажыратылды.</translation>
 <translation id="574392208103952083">Орташа</translation>
 <translation id="5744083938413354016">Түртіп сүйреу</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb
index d4bed061..a8ad297d 100644
--- a/ash/strings/ash_strings_ko.xtb
+++ b/ash/strings/ash_strings_ko.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">정의</translation>
 <translation id="3510164367642747937">마우스 커서 강조표시</translation>
 <translation id="3513798432020909783">계정 관리자: <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">Wi-Fi가 사용 중지됨</translation>
 <translation id="3563775809269155755">핫스팟 사용</translation>
 <translation id="3571734092741541777">설정</translation>
 <translation id="3573179567135747900">'<ph name="FROM_LOCALE" />'(으)로 다시 변경(다시 시작해야 함)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">음성 입력</translation>
 <translation id="3900355044994618856"><ph name="SESSION_TIME_REMAINING" /> 후 세션 종료</translation>
 <translation id="3901991538546252627"><ph name="NAME" />에 연결 중</translation>
+<translation id="3923494859158167397">설정된 모바일 네트워크 없음</translation>
 <translation id="3943857333388298514">붙여넣기</translation>
 <translation id="394485226368336402">오디오 설정</translation>
 <translation id="3945319193631853098">설정을 완료하려면 탭하세요.</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">자동 클릭 버튼</translation>
 <translation id="4197790712631116042">사용 안함</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" />를 사용할 수 없습니다.</translation>
+<translation id="4209973997261364186">Wi-Fi가 사용 설정됨</translation>
 <translation id="4212472694152630271">PIN으로 전환</translation>
 <translation id="4215497585250573029">VPN 설정</translation>
 <translation id="4217571870635786043">음성기록</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">야간 조명을 사용하면 주위가 어두울 때도 편안하게 화면을 보고 읽을 수 있습니다. 탭하여 야간 조명을 켜거나 완전히 끌 시간을 변경하세요.</translation>
 <translation id="5691772641933328258">지문을 인식할 수 없음</translation>
 <translation id="5710450975648804523">방해 금지 모드 사용 중</translation>
+<translation id="571295407079589142">모바일 데이터 사용 중지</translation>
 <translation id="573413375004481890">사용 중인 일부 디스플레이가 기기에서 지원되지 않아 1개 디스플레이의 연결이 끊김</translation>
 <translation id="574392208103952083">보통</translation>
 <translation id="5744083938413354016">탭 드래그</translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb
index aa1adfc..7f1c128 100644
--- a/ash/strings/ash_strings_ky.xtb
+++ b/ash/strings/ash_strings_ky.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">аныктама</translation>
 <translation id="3510164367642747937">Чычкан курсору баса белгиленсин</translation>
 <translation id="3513798432020909783">Аккаунтту башкарган: <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">Wi-Fi өчүрүлгөн</translation>
 <translation id="3563775809269155755">Туташуу түйүнүн иштетүү</translation>
 <translation id="3571734092741541777">Орнотуу</translation>
 <translation id="3573179567135747900">Төмөнкүгө кайра өзгөртүү "<ph name="FROM_LOCALE" />" (өчүрүп күйгүзүү керек)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">Үн менен киргизүү</translation>
 <translation id="3900355044994618856">Сеансыңыз <ph name="SESSION_TIME_REMAINING" /> кийин аяктайт</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> менен туташууда</translation>
+<translation id="3923494859158167397">Мобилдик тармактак жөндөлгөн жок</translation>
 <translation id="3943857333388298514">Чаптоо</translation>
 <translation id="394485226368336402">Аудио жөндөөлөрү</translation>
 <translation id="3945319193631853098">Жөндөп бүтүрүү үчүн таптаңыз</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">Автоматтык чыкылдатуу баскычы</translation>
 <translation id="4197790712631116042">Өчүк</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> жеткиликтүү эмес.</translation>
+<translation id="4209973997261364186">Wi-Fi күйгүзүлгөн</translation>
 <translation id="4212472694152630271">PIN кодго которулуу</translation>
 <translation id="4215497585250573029">VPN жөндөөлөрү</translation>
 <translation id="4217571870635786043">Үн менен жазуу</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">Түнкү режим күңүрт жерде көзүңүзгө күч келтирбөөгө жардам берет. Түнкү режим күйгүзүлө турган убакытты өзгөртүү же биротоло өчүрүп салуу үчүн таптап коюңуз.</translation>
 <translation id="5691772641933328258">Манжа изи таанылган жок</translation>
 <translation id="5710450975648804523">"Тынчымды алба" режими күйүк</translation>
+<translation id="571295407079589142">Мобилдик трафик өчүрүлгөн</translation>
 <translation id="573413375004481890">Бул түзмөк дисплейлериңиздин баарын кошо алган жок, андыктан алардын бирөө ажыратылды</translation>
 <translation id="574392208103952083">Орточо</translation>
 <translation id="5744083938413354016">Таптап сүйрөө функциясы</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb
index d6f51f3..8928fad 100644
--- a/ash/strings/ash_strings_ml.xtb
+++ b/ash/strings/ash_strings_ml.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">നിർവചനം</translation>
 <translation id="3510164367642747937">മൗസ് കഴ്‌സർ ഹൈലൈറ്റ് ചെയ്യുക</translation>
 <translation id="3513798432020909783">അക്കൗണ്ട് മാനേജ് ചെയ്യുന്നത് <ph name="MANAGER_EMAIL" /> ആണ്</translation>
+<translation id="3552189655002856821">വൈഫൈ ഓഫാണ്</translation>
 <translation id="3563775809269155755">ഹോട്ട്‌സ്പോട്ട് പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="3571734092741541777">സജ്ജീകരിക്കുക</translation>
 <translation id="3573179567135747900">"<ph name="FROM_LOCALE" />" ഭാഷയിലേയ്‌ക്ക് തിരികെ മാറ്റുക (പുനരാരംഭിക്കേണ്ടതുണ്ട്)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">വോയ്‌സ് ഇൻപുട്ട്</translation>
 <translation id="3900355044994618856"><ph name="SESSION_TIME_REMAINING" />-ൽ നിങ്ങളുടെ സെഷൻ അവസാനിക്കുന്നു</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> എന്നതിലേക്ക് കണക്റ്റുചെയ്യുന്നു</translation>
+<translation id="3923494859158167397">മൊബൈൽ നെറ്റ്‌വർക്കുകളൊന്നും സജ്ജീകരിച്ചിട്ടില്ല</translation>
 <translation id="3943857333388298514">ഒട്ടിക്കുക</translation>
 <translation id="394485226368336402">ഓഡിയോ ക്രമീകരണം</translation>
 <translation id="3945319193631853098">സജ്ജീകരണം പൂർത്തിയാക്കാൻ ടാപ്പ് ചെയ്യുക</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">സ്വയമേവയുള്ള ക്ലിക്ക് ബട്ടൺ</translation>
 <translation id="4197790712631116042">ഓഫാണ്</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> ലഭ്യമല്ല.</translation>
+<translation id="4209973997261364186">വൈഫൈ ഓണാക്കി</translation>
 <translation id="4212472694152630271">പിൻ നമ്പറിലേക്ക് മാറുക</translation>
 <translation id="4215497585250573029">VPN ക്രമീകരണം</translation>
 <translation id="4217571870635786043">പറഞ്ഞ് കൊടുക്കൽ</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">മങ്ങിയ വെളിച്ചത്തിൽ സ്‌ക്രീനിൽ നോക്കുന്നതോ വായിക്കുന്നതോ നൈറ്റ് ലൈറ്റ് എളുപ്പമാക്കുന്നു. നൈറ്റ് ലൈറ്റ് പൂർണ്ണമായി ഓഫാകുകയോ ഓണാകുകയോ ചെയ്യേണ്ട സമയം മാറ്റാൻ ടാപ്പ് ചെയ്യുക.</translation>
 <translation id="5691772641933328258">വിരലടയാളം തിരിച്ചറിഞ്ഞില്ല</translation>
 <translation id="5710450975648804523">'ശല്യപ്പെടുത്തരുത്' ഓണാണ്</translation>
+<translation id="571295407079589142">മൊബൈൽ ഡാറ്റ ഓഫാക്കി</translation>
 <translation id="573413375004481890">ഈ ഉപകരണത്തിന് നിങ്ങളുടെ എല്ലാ ഡിസ്പ്ലേകൾക്കും പിന്തുണ നൽകാനാവാത്തതിനാൽ ഒന്ന് വിച്ഛേദിച്ചു</translation>
 <translation id="574392208103952083">ഇടത്തരം</translation>
 <translation id="5744083938413354016">ടാപ്പുചെയ്‌ത് വലിച്ചിടൽ</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb
index 4d0bba7..bfbf6d2 100644
--- a/ash/strings/ash_strings_nl.xtb
+++ b/ash/strings/ash_strings_nl.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">definitie</translation>
 <translation id="3510164367642747937">Muisaanwijzer markeren</translation>
 <translation id="3513798432020909783">Account wordt beheerd door <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">Wifi staat uit</translation>
 <translation id="3563775809269155755">Hotspot aanzetten</translation>
 <translation id="3571734092741541777">Instellen</translation>
 <translation id="3573179567135747900">Teruggaan naar '<ph name="FROM_LOCALE" />' (opnieuw starten vereist)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">Spraakinvoer</translation>
 <translation id="3900355044994618856">Je sessie loopt over <ph name="SESSION_TIME_REMAINING" /> af</translation>
 <translation id="3901991538546252627">Verbinding maken met <ph name="NAME" /></translation>
+<translation id="3923494859158167397">Geen mobiele netwerken ingesteld</translation>
 <translation id="3943857333388298514">Plak</translation>
 <translation id="394485226368336402">Audio-instellingen</translation>
 <translation id="3945319193631853098">Tik om het instellen af te ronden</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">Knop 'Automatische klikken'</translation>
 <translation id="4197790712631116042">Uit</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> is niet beschikbaar.</translation>
+<translation id="4209973997261364186">Wifi staat aan</translation>
 <translation id="4212472694152630271">Overschakelen naar pincode</translation>
 <translation id="4215497585250573029">VPN-instellingen</translation>
 <translation id="4217571870635786043">Dicteren</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">Met Nachtverlichting kun je je scherm beter zien en lezen bij weinig licht. Tik om te wijzigen wanneer Nachtverlichting wordt aangezet of zet de functie helemaal uit.</translation>
 <translation id="5691772641933328258">Vingerafdruk niet herkend</translation>
 <translation id="5710450975648804523">Niet storen staat aan</translation>
+<translation id="571295407079589142">Mobiele data staan uit</translation>
 <translation id="573413375004481890">Dit apparaat kan niet al je schermen ondersteunen, dus één scherm is ontkoppeld</translation>
 <translation id="574392208103952083">Gemiddeld</translation>
 <translation id="5744083938413354016">Tikken en slepen</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb
index 7711a7a..5e33870d 100644
--- a/ash/strings/ash_strings_pa.xtb
+++ b/ash/strings/ash_strings_pa.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">ਪਰਿਭਾਸ਼ਾ</translation>
 <translation id="3510164367642747937">ਮਾਊਸ ਕਰਸਰ ਨੂੰ ਉਜਾਗਰ ਕਰੋ</translation>
 <translation id="3513798432020909783"><ph name="MANAGER_EMAIL" /> ਵੱਲੋਂ ਖਾਤੇ ਦਾ ਪ੍ਰਬੰਧਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ</translation>
+<translation id="3552189655002856821">ਵਾਈ-ਫਾਈ ਬੰਦ ਹੈ</translation>
 <translation id="3563775809269155755">ਹੌਟਸਪੌਟ ਚਾਲੂ ਕਰੋ</translation>
 <translation id="3571734092741541777">ਸਥਾਪਤ ਕਰੋ</translation>
 <translation id="3573179567135747900">"<ph name="FROM_LOCALE" />" 'ਤੇ ਵਾਪਸ ਬਦਲੋ (ਮੁੜ-ਸ਼ੁਰੂ ਲੋੜੀਂਦਾ)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">ਵੌਇਸ ਇਨਪੁੱਟ</translation>
 <translation id="3900355044994618856">ਤੁਹਾਡਾ ਸੈਸ਼ਨ <ph name="SESSION_TIME_REMAINING" /> ਵਿੱਚ ਸਮਾਪਤ ਹੋ ਜਾਵੇਗਾ</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> ਨਾਲ ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ</translation>
+<translation id="3923494859158167397">ਕਿਸੇ ਵੀ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਦਾ ਸੈੱਟਅੱਪ ਨਹੀਂ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="3943857333388298514">ਪੇਸਟ ਕਰੋ</translation>
 <translation id="394485226368336402">ਆਡੀਓ ਸੈਟਿੰਗਾਂ</translation>
 <translation id="3945319193631853098">ਸੈੱਟਅੱਪ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਕਲਿੱਕ ਕਰਨ ਲਈ ਬਟਨ</translation>
 <translation id="4197790712631116042">ਬੰਦ</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> ਉਪਲਬਧ ਨਹੀਂ ਹੈ।</translation>
+<translation id="4209973997261364186">ਵਾਈ-ਫਾਈ ਚਾਲੂ ਹੈ</translation>
 <translation id="4212472694152630271">ਪਿੰਨ 'ਤੇ ਬਦਲੀ ਕਰੋ</translation>
 <translation id="4215497585250573029">VPN ਸੈਟਿੰਗਾਂ</translation>
 <translation id="4217571870635786043">ਬੋਲ ਅਨੁਸਾਰ ਲਿਖਤ</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">ਰਾਤ ਦੀ ਰੋਸ਼ਨੀ ਵਿਸ਼ੇਸ਼ਤਾ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ ਨੂੰ ਘੱਟ ਰੋਸ਼ਨੀ ਵਿੱਚ ਦੇਖਣਾ ਜਾਂ ਪੜ੍ਹਨਾ ਵਧੇਰੇ ਆਸਾਨ ਬਣਾਉਂਦੀ ਹੈ। ਰਾਤ ਦੀ ਰੋਸ਼ਨੀ ਵਿਸ਼ੇਸ਼ਤਾ ਦੇ ਚਾਲੂ ਜਾਂ ਬੰਦ ਹੋਣ ਦਾ ਸਮਾਂ ਬਦਲਣ ਲਈ ਟੈਪ ਕਰੋ</translation>
 <translation id="5691772641933328258">ਫਿੰਗਰਪ੍ਰਿੰਟ ਦੀ ਪਛਾਣ ਨਹੀਂ ਹੋਈ</translation>
 <translation id="5710450975648804523">'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ' ਚਾਲੂ ਹੈ</translation>
+<translation id="571295407079589142">ਮੋਬਾਈਲ ਡਾਟਾ ਬੰਦ ਕੀਤਾ ਹੋਇਆ ਹੈ</translation>
 <translation id="573413375004481890">ਇਹ ਡੀਵਾਈਸ ਤੁਹਾਡੇ ਸਾਰੇ ਡਿਸਪਲੇਆਂ ਨੂੰ ਸਮਰਥਿਤ ਨਹੀਂ ਕਰ ਸਕੀ, ਇਸ ਲਈ ਇੱਕ ਨੂੰ ਡਿਸਕਨੈਕਟ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ</translation>
 <translation id="574392208103952083">ਦਰਮਿਆਨਾ</translation>
 <translation id="5744083938413354016">ਘਸੀਟਣ 'ਤੇ ਟੈਪ ਕਰੋ</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb
index a752e5b..b1fc01c 100644
--- a/ash/strings/ash_strings_ru.xtb
+++ b/ash/strings/ash_strings_ru.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">описание</translation>
 <translation id="3510164367642747937">Выделять указатель мыши</translation>
 <translation id="3513798432020909783">Администратор аккаунта: <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">Нет подключения к Wi-Fi</translation>
 <translation id="3563775809269155755">Включить точку доступа</translation>
 <translation id="3571734092741541777">Настроить</translation>
 <translation id="3573179567135747900">Вернуться к языку: "<ph name="FROM_LOCALE" />" (потребуется перезагрузка)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">Голосовой ввод</translation>
 <translation id="3900355044994618856">Сеанс закончится через <ph name="SESSION_TIME_REMAINING" /></translation>
 <translation id="3901991538546252627">Подключение к <ph name="NAME" /></translation>
+<translation id="3923494859158167397">Нет настроенных мобильных сетей</translation>
 <translation id="3943857333388298514">Вставить</translation>
 <translation id="394485226368336402">Настройки звука</translation>
 <translation id="3945319193631853098">Нажмите, чтобы завершить настройку.</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">Меню "Автоматическое нажатие"</translation>
 <translation id="4197790712631116042">Отключено</translation>
 <translation id="4201033867194214117">Функция "<ph name="FEATURE_NAME" />" недоступна</translation>
+<translation id="4209973997261364186">Есть подключение к Wi-Fi</translation>
 <translation id="4212472694152630271">Войти с помощью PIN-кода</translation>
 <translation id="4215497585250573029">Настройки VPN</translation>
 <translation id="4217571870635786043">Голосовой ввод</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">Она помогает снизить напряжение глаз при тусклом свете. Нажмите здесь, чтобы изменить расписание или полностью отключить ночную подсветку.</translation>
 <translation id="5691772641933328258">Не удалось распознать отпечаток</translation>
 <translation id="5710450975648804523">Режим "Не беспокоить" включен</translation>
+<translation id="571295407079589142">Передача данных отключена</translation>
 <translation id="573413375004481890">Вы подключили к устройству больше дисплеев, чем оно может поддерживать, поэтому один из них пришлось отключить</translation>
 <translation id="574392208103952083">Средний</translation>
 <translation id="5744083938413354016">Перетаскивание нажатием</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb
index 8ecffd70..70e7e4d 100644
--- a/ash/strings/ash_strings_sq.xtb
+++ b/ash/strings/ash_strings_sq.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">përkufizimi</translation>
 <translation id="3510164367642747937">Thekso kursorin e miut</translation>
 <translation id="3513798432020909783">Llogaria menaxhohet nga <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">Wi-Fi është çaktivizuar</translation>
 <translation id="3563775809269155755">Aktivizo zonën e qasjes për internet</translation>
 <translation id="3571734092741541777">Konfigurimi</translation>
 <translation id="3573179567135747900">Ndryshoje përsëri te "<ph name="FROM_LOCALE" />" (kërkohet rinisja)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">Hyrja zanore</translation>
 <translation id="3900355044994618856">Sesioni do të përfundojë për <ph name="SESSION_TIME_REMAINING" /></translation>
 <translation id="3901991538546252627">Po lidhet me <ph name="NAME" /></translation>
+<translation id="3923494859158167397">Nuk ka asnjë rrjet celular të konfiguruar</translation>
 <translation id="3943857333388298514">Ngjite</translation>
 <translation id="394485226368336402">Cilësimet e audios</translation>
 <translation id="3945319193631853098">Trokit për të përfunduar konfigurimin</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">Butoni i klikimeve automatike</translation>
 <translation id="4197790712631116042">Joaktiv</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> nuk ofrohet.</translation>
+<translation id="4209973997261364186">Wi-Fi është i aktivizuar</translation>
 <translation id="4212472694152630271">Kalo te kodi PIN</translation>
 <translation id="4215497585250573029">Cilësimet e VPN-së</translation>
 <translation id="4217571870635786043">Diktimi</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">"Drita e natës" e bën më të lehtë shikimin e ekranit ose leximin në dritë të zbehtë. Trokit për të ndryshuar se kur aktivizohet ose çaktivizohet plotësisht "Drita e natës".</translation>
 <translation id="5691772641933328258">Gjurma e gishtit nuk njihet</translation>
 <translation id="5710450975648804523">"Mos shqetëso" është aktiv</translation>
+<translation id="571295407079589142">Të dhënat celulare janë çaktivizuar</translation>
 <translation id="573413375004481890">Kjo pajisje nuk mund t'i mbështeste të gjitha ekranet, kështu që një prej tyre është shkëputur</translation>
 <translation id="574392208103952083">Mesatar</translation>
 <translation id="5744083938413354016">Zvarritje me trokitje</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb
index c31d137..d72d2b5 100644
--- a/ash/strings/ash_strings_sv.xtb
+++ b/ash/strings/ash_strings_sv.xtb
@@ -94,7 +94,7 @@
 <translation id="1708345662127501511">Skrivbord: <ph name="DESK_NAME" /></translation>
 <translation id="1709762881904163296">Nätverksinställningar</translation>
 <translation id="1719094688023114093">Live Caption är aktiverat.</translation>
-<translation id="1720011244392820496">Aktivera Wi-Fi-synkronisering</translation>
+<translation id="1720011244392820496">Aktivera wifi-synkronisering</translation>
 <translation id="1743570585616704562">Identifierades inte</translation>
 <translation id="1746730358044914197">Inmatningsmetoderna konfigureras av administratören.</translation>
 <translation id="1747827819627189109">Skärmen på tangentbordet har aktiverats</translation>
@@ -203,7 +203,7 @@
 <translation id="2678852583403169292">Textuppläsningsmeny</translation>
 <translation id="2689613560355655046">Skrivbord 8</translation>
 <translation id="2700493154570097719">Ställ in tangentbord</translation>
-<translation id="2704781753052663061">Anslut till andra Wi-Fi-nätverk</translation>
+<translation id="2704781753052663061">Anslut till andra wifi-nätverk</translation>
 <translation id="2705001408393684014">Aktivera eller inaktivera mikrofonen. <ph name="STATE_TEXT" /></translation>
 <translation id="2706462751667573066">Upp</translation>
 <translation id="2718395828230677721">Nattljus</translation>
@@ -302,7 +302,7 @@
 <translation id="3486220673238053218">definition</translation>
 <translation id="3510164367642747937">Markera muspekaren</translation>
 <translation id="3513798432020909783">Kontot hanteras av <ph name="MANAGER_EMAIL" /></translation>
-<translation id="3552189655002856821">Wi-Fi är inaktiverat</translation>
+<translation id="3552189655002856821">wifi är inaktiverat</translation>
 <translation id="3563775809269155755">Aktivera surfzon</translation>
 <translation id="3571734092741541777">Konfigurera</translation>
 <translation id="3573179567135747900">Byt tillbaka till "<ph name="FROM_LOCALE" />" (kräver omstart)</translation>
@@ -321,7 +321,7 @@
 <translation id="3638400994746983214">Aktivera och inaktivera sekretesskärmen. <ph name="STATE_TEXT" />.</translation>
 <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> Hanterad användare</translation>
 <translation id="3665889125180354336">Spela in via mikrofon</translation>
-<translation id="36813544980941320">Wi-Fi-nätverk delas mellan telefonen och <ph name="DEVICE_NAME" /></translation>
+<translation id="36813544980941320">wifi-nätverk delas mellan telefonen och <ph name="DEVICE_NAME" /></translation>
 <translation id="3702809606464356667">Visar fönster från det aktuella skrivbordet, tryck på uppåtpilen för att visa fönster från alla skrivbord</translation>
 <translation id="3702846122927433391">Befolkning i Nigeria</translation>
 <translation id="3705722231355495246">-</translation>
@@ -381,7 +381,7 @@
 <translation id="4195877955194704651">Knapp för Automatiska klick</translation>
 <translation id="4197790712631116042">Av</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> är inte tillgängligt.</translation>
-<translation id="4209973997261364186">Wi-Fi är aktiverat</translation>
+<translation id="4209973997261364186">wifi är aktiverat</translation>
 <translation id="4212472694152630271">Byt till pinkod</translation>
 <translation id="4215497585250573029">VPN-inställningar</translation>
 <translation id="4217571870635786043">Diktering</translation>
@@ -926,7 +926,7 @@
 <translation id="878215960996152260"><ph name="APP_NAME" />, installerad app, blockerad</translation>
 <translation id="8785070478575117577">Anslut till <ph name="NETWORK_NAME" /></translation>
 <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation>
-<translation id="8814190375133053267">Wi-Fi</translation>
+<translation id="8814190375133053267">wifi</translation>
 <translation id="881757059229893486">Inmatningsinställningar</translation>
 <translation id="8825863694328519386">Återgå genom att svepa från vänster</translation>
 <translation id="8828714802988429505">90°</translation>
@@ -965,7 +965,7 @@
 <translation id="9072519059834302790"><ph name="TIME_LEFT" /> tills batteriet är tomt.</translation>
 <translation id="9074739597929991885">Bluetooth</translation>
 <translation id="9077515519330855811">Uppspelningskontroller, nu spelas <ph name="MEDIA_TITLE" /></translation>
-<translation id="9079731690316798640">Wi-Fi: <ph name="ADDRESS" /></translation>
+<translation id="9079731690316798640">wifi: <ph name="ADDRESS" /></translation>
 <translation id="9080132581049224423">Svep uppåt för att öppna startsidan</translation>
 <translation id="9080206825613744995">Mikrofonen används.</translation>
 <translation id="9084606467167974638">Växla menyposition</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb
index 7eb65dc..3f5aad6 100644
--- a/ash/strings/ash_strings_ta.xtb
+++ b/ash/strings/ash_strings_ta.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">விளக்கம்</translation>
 <translation id="3510164367642747937">மவுஸ் கர்சரைத் தனிப்படுத்து</translation>
 <translation id="3513798432020909783">கணக்கை நிர்வகிப்பது: <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">வைஃபை முடக்கப்பட்டது</translation>
 <translation id="3563775809269155755">ஹாட்ஸ்பாட்டை இயக்குதல்</translation>
 <translation id="3571734092741541777">அமை</translation>
 <translation id="3573179567135747900">"<ph name="FROM_LOCALE" />" க்கு மீண்டும் மாற்று (மறுதொடக்கம் தேவை)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">குரல் உள்ளீடு</translation>
 <translation id="3900355044994618856">உங்கள் அமர்வு <ph name="SESSION_TIME_REMAINING" /> இல் முடியும்</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> க்கு இணைக்கிறது</translation>
+<translation id="3923494859158167397">மொபைல் நெட்வொர்க்குகள் எதுவும் அமைக்கப்படவில்லை</translation>
 <translation id="3943857333388298514">ஒட்டு</translation>
 <translation id="394485226368336402">ஆடியோ அமைப்புகள்</translation>
 <translation id="3945319193631853098">அமைவை நிறைவு செய்யத் தட்டவும்</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">தானியங்குக் கிளிக்குகள் பட்டன்</translation>
 <translation id="4197790712631116042">முடக்கப்பட்டுள்ளது</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> அம்சம் இல்லை.</translation>
+<translation id="4209973997261364186">வைஃபை இயக்கப்பட்டது</translation>
 <translation id="4212472694152630271">பின்னிற்கு மாற்று</translation>
 <translation id="4215497585250573029">VPN அமைப்புகள்</translation>
 <translation id="4217571870635786043">சொல்வதை எழுதுவது</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">மங்கலான ஒளியில் திரையைப் பார்ப்பதையோ படிப்பதையோ நைட் லைட் அம்சம் எளிதாக்குகிறது. நைட் லைட்டை ஆன் செய்யவோ முழுமையாக ஆஃப் செய்யவோ வேண்டிய நேரத்தை மாற்றத் தட்டுங்கள்.</translation>
 <translation id="5691772641933328258">கைரேகை அங்கீகரிக்கப்படவில்லை</translation>
 <translation id="5710450975648804523">தொந்தரவு செய்ய வேண்டாம்: ஆன்</translation>
+<translation id="571295407079589142">மொபைல் டேட்டா முடக்கப்பட்டது</translation>
 <translation id="573413375004481890">உங்கள் அனைத்து திரைகளையும் இந்தச் சாதனத்தால் ஆதரிக்க இயலாது, ஆகையால் ஒன்று இணைப்பு நீக்கப்பட்டது</translation>
 <translation id="574392208103952083">நடுநிலை</translation>
 <translation id="5744083938413354016">தட்டி நகர்த்துதல்</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb
index a288aff..8c8b0df 100644
--- a/ash/strings/ash_strings_tr.xtb
+++ b/ash/strings/ash_strings_tr.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">tanım</translation>
 <translation id="3510164367642747937">Fare imlecini vurgula</translation>
 <translation id="3513798432020909783">Hesap <ph name="MANAGER_EMAIL" /> tarafından yönetiliyor</translation>
+<translation id="3552189655002856821">Kablosuz bağlantı kapalı</translation>
 <translation id="3563775809269155755">Hotspot'ı etkinleştir</translation>
 <translation id="3571734092741541777">Kur</translation>
 <translation id="3573179567135747900">Tekrar "<ph name="FROM_LOCALE" />" ayarına dön (yeniden başlatmak gerekir)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">Ses girişi</translation>
 <translation id="3900355044994618856">Oturumunuz <ph name="SESSION_TIME_REMAINING" /> içinde sona erecek</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> ağına bağlanılıyor</translation>
+<translation id="3923494859158167397">Kurulu mobil ağ yok</translation>
 <translation id="3943857333388298514">Yapıştır</translation>
 <translation id="394485226368336402">Ses ayarları</translation>
 <translation id="3945319193631853098">Kuruluımu tamamlamak için dokunun</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">Otomatik tıklamalar düğmesi</translation>
 <translation id="4197790712631116042">Kapalı</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> kullanılamıyor.</translation>
+<translation id="4209973997261364186">Kablosuz özelliği açık</translation>
 <translation id="4212472694152630271">PIN'e geç</translation>
 <translation id="4215497585250573029">VPN Ayarları</translation>
 <translation id="4217571870635786043">Dikte</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">Gece Işığı, loş ışıkta ekranınızı daha iyi görmenizi ve daha kolay okumanızı sağlar. Gece Işığı'nın ne zaman açılacağını değiştirmek veya tamamen kapatmak için dokunun.</translation>
 <translation id="5691772641933328258">Parmak izi tanınmadı</translation>
 <translation id="5710450975648804523">Rahatsız Etmeyin modu açık</translation>
+<translation id="571295407079589142">Mobil veri kapalı</translation>
 <translation id="573413375004481890">Bu cihaz tüm ekranlarınızı destekleyemediği için bir tanesinin bağlantısı kesildi</translation>
 <translation id="574392208103952083">Orta</translation>
 <translation id="5744083938413354016">Dokunarak sürükleme</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb
index 1b3af62..c1c9d94 100644
--- a/ash/strings/ash_strings_uk.xtb
+++ b/ash/strings/ash_strings_uk.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">визначення</translation>
 <translation id="3510164367642747937">Підсвічувати курсор миші</translation>
 <translation id="3513798432020909783">Обліковим записом керує <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">Wi-Fi вимкнено</translation>
 <translation id="3563775809269155755">Увімкнути точку доступу</translation>
 <translation id="3571734092741541777">Налаштувати</translation>
 <translation id="3573179567135747900">Повернутися до мови "<ph name="FROM_LOCALE" />" (потрібно перезавантажитися)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">Голосовий ввід</translation>
 <translation id="3900355044994618856">Сеанс закінчиться через <ph name="SESSION_TIME_REMAINING" /></translation>
 <translation id="3901991538546252627">Під’єднання до <ph name="NAME" /></translation>
+<translation id="3923494859158167397">Мобільні мережі не налаштовано</translation>
 <translation id="3943857333388298514">Вставити</translation>
 <translation id="394485226368336402">Налаштування звуку</translation>
 <translation id="3945319193631853098">Натисніть, щоб завершити налаштування</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">Кнопка автоматичного натискання</translation>
 <translation id="4197790712631116042">Вимкнено</translation>
 <translation id="4201033867194214117">Функція "<ph name="FEATURE_NAME" />" недоступна.</translation>
+<translation id="4209973997261364186">Wi-Fi увімкнено</translation>
 <translation id="4212472694152630271">Ввести PIN-код</translation>
 <translation id="4215497585250573029">Налаштування VPN</translation>
 <translation id="4217571870635786043">Диктування</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">Нічний екран допомагає знизити напруження очей в умовах тьмяного освітлення. Торкніться, щоб змінити час увімкнення нічного екрана або вимкнути його повністю.</translation>
 <translation id="5691772641933328258">Відбиток не розпізнано</translation>
 <translation id="5710450975648804523">Режим "Не турбувати" ввімкнено</translation>
+<translation id="571295407079589142">Мобільний Інтернет вимкнено</translation>
 <translation id="573413375004481890">Цей пристрій не може підтримувати всі екрани, тому один із них відключено</translation>
 <translation id="574392208103952083">Середній</translation>
 <translation id="5744083938413354016">Перетягування дотиком</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb
index 7cd4076..884c8f3b 100644
--- a/ash/strings/ash_strings_vi.xtb
+++ b/ash/strings/ash_strings_vi.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">định nghĩa</translation>
 <translation id="3510164367642747937">Đánh dấu con trỏ chuột</translation>
 <translation id="3513798432020909783">Người quản lý tài khoản: <ph name="MANAGER_EMAIL" /></translation>
+<translation id="3552189655002856821">Wi-Fi đang tắt</translation>
 <translation id="3563775809269155755">Bật điểm phát sóng</translation>
 <translation id="3571734092741541777">Thiết lập</translation>
 <translation id="3573179567135747900">Thay đổi lại thành "<ph name="FROM_LOCALE" />" (yêu cầu khởi động lại)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">Nhập bằng giọng nói</translation>
 <translation id="3900355044994618856">Phiên hoạt động của bạn sẽ kết thúc sau <ph name="SESSION_TIME_REMAINING" /></translation>
 <translation id="3901991538546252627">Đang kết nối với <ph name="NAME" /></translation>
+<translation id="3923494859158167397">Bạn chưa thiết lập mạng di động nào</translation>
 <translation id="3943857333388298514">Dán</translation>
 <translation id="394485226368336402">Cài đặt âm thanh</translation>
 <translation id="3945319193631853098">Nhấn để hoàn tất quá trình thiết lập</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">Nút Lượt nhấp tự động</translation>
 <translation id="4197790712631116042">Đang tắt</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> không dùng được.</translation>
+<translation id="4209973997261364186">Wi-Fi đang bật</translation>
 <translation id="4212472694152630271">Chuyển sang mã PIN</translation>
 <translation id="4215497585250573029">Cài đặt mạng riêng ảo (VPN)</translation>
 <translation id="4217571870635786043">Nhập bằng giọng nói</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">Chế độ Ánh sáng đêm giúp bạn cảm thấy dễ chịu khi nhìn màn hình hoặc đọc trong điều kiện ánh sáng yếu. Hãy nhấn để thay đổi thời gian bật hoặc tắt hoàn toàn chế Ánh sáng đêm.</translation>
 <translation id="5691772641933328258">Không nhận dạng được vân tay</translation>
 <translation id="5710450975648804523">Chế độ Không làm phiền đang bật</translation>
+<translation id="571295407079589142">Dữ liệu di động đang tắt</translation>
 <translation id="573413375004481890">Thiết bị này không thể hỗ trợ tất cả màn hình của bạn nên một màn hình đã bị ngắt kết nối</translation>
 <translation id="574392208103952083">Trung bình</translation>
 <translation id="5744083938413354016">Kéo nhấn</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb
index 6410ddc..b67b9da 100644
--- a/ash/strings/ash_strings_zh-HK.xtb
+++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">定義</translation>
 <translation id="3510164367642747937">突顯滑鼠遊標</translation>
 <translation id="3513798432020909783">帳戶由 <ph name="MANAGER_EMAIL" /> 管理</translation>
+<translation id="3552189655002856821">Wi-Fi 已關閉</translation>
 <translation id="3563775809269155755">啟用熱點</translation>
 <translation id="3571734092741541777">設定</translation>
 <translation id="3573179567135747900">改回「<ph name="FROM_LOCALE" />」(需要重新啟動)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">語音輸入</translation>
 <translation id="3900355044994618856">您的工作階段將於 <ph name="SESSION_TIME_REMAINING" />後結束</translation>
 <translation id="3901991538546252627">正在連線至 <ph name="NAME" /></translation>
+<translation id="3923494859158167397">未設定流動網絡</translation>
 <translation id="3943857333388298514">貼上</translation>
 <translation id="394485226368336402">音訊設定</translation>
 <translation id="3945319193631853098">輕按即可完成設定</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">自動點擊嘅掣</translation>
 <translation id="4197790712631116042">已關閉</translation>
 <translation id="4201033867194214117">「<ph name="FEATURE_NAME" />」無法使用。</translation>
+<translation id="4209973997261364186">Wi-Fi 已開啟</translation>
 <translation id="4212472694152630271">改用 PIN</translation>
 <translation id="4215497585250573029">VPN 設定</translation>
 <translation id="4217571870635786043">語音輸入</translation>
@@ -554,6 +557,7 @@
 <translation id="5689633613396158040">「夜燈模式」讓您更易在光線昏暗的環境下觀看螢幕內容或閱讀。輕按即可變更「夜燈模式」的開啟時間,或完全關閉此功能。</translation>
 <translation id="5691772641933328258">識別唔到指紋</translation>
 <translation id="5710450975648804523">「請勿騷擾」模式已開啟</translation>
+<translation id="571295407079589142">流動數據已關閉</translation>
 <translation id="573413375004481890">此裝置無法支援所有顯示屏,因此已取消連接其中一個</translation>
 <translation id="574392208103952083">中</translation>
 <translation id="5744083938413354016">按住拖曳</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index 948f73e..2ae659c 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -302,6 +302,7 @@
 <translation id="3486220673238053218">定義</translation>
 <translation id="3510164367642747937">醒目顯示滑鼠游標</translation>
 <translation id="3513798432020909783">這個帳戶是由 <ph name="MANAGER_EMAIL" /> 管理</translation>
+<translation id="3552189655002856821">Wi-Fi 已關閉</translation>
 <translation id="3563775809269155755">啟用無線基地台</translation>
 <translation id="3571734092741541777">設定</translation>
 <translation id="3573179567135747900">改回「<ph name="FROM_LOCALE" />」(需要重新啟動)</translation>
@@ -349,6 +350,7 @@
 <translation id="3899995891769452915">語音輸入</translation>
 <translation id="3900355044994618856">你的工作階段將於 <ph name="SESSION_TIME_REMAINING" />後結束</translation>
 <translation id="3901991538546252627">正在連線至:<ph name="NAME" /></translation>
+<translation id="3923494859158167397">尚未設定行動網路</translation>
 <translation id="3943857333388298514">貼上</translation>
 <translation id="394485226368336402">音訊設定</translation>
 <translation id="3945319193631853098">輕觸即可完成設定</translation>
@@ -379,6 +381,7 @@
 <translation id="4195877955194704651">自動點擊按鈕</translation>
 <translation id="4197790712631116042">關閉</translation>
 <translation id="4201033867194214117">「<ph name="FEATURE_NAME" />」無法使用。</translation>
+<translation id="4209973997261364186">Wi-Fi 已開啟</translation>
 <translation id="4212472694152630271">切換為 PIN 碼</translation>
 <translation id="4215497585250573029">VPN 設定</translation>
 <translation id="4217571870635786043">語音輸入</translation>
@@ -555,6 +558,7 @@
 <translation id="5689633613396158040">夜燈功能可讓你在光線昏暗的環境下更容易看清畫面內容或閱讀文字。輕觸即可變更夜燈的開啟時間,或完全關閉夜燈功能。</translation>
 <translation id="5691772641933328258">指紋辨識失敗</translation>
 <translation id="5710450975648804523">「零打擾」模式已開啟</translation>
+<translation id="571295407079589142">行動數據已關閉</translation>
 <translation id="573413375004481890">這部裝置無法支援你的所有螢幕,因此其中一個畫面已中斷連線</translation>
 <translation id="574392208103952083">中</translation>
 <translation id="5744083938413354016">輕觸拖曳</translation>
diff --git a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
index f77bbdc..2aeb747 100644
--- a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
+++ b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
@@ -455,10 +455,9 @@
 
 #if PA_ALLOW_PCSCAN
 void EnablePCScan() {
-  auto& pcscan = internal::PCScan::Instance();
-  pcscan.RegisterScannableRoot(Allocator());
+  internal::PCScan::RegisterScannableRoot(Allocator());
   if (Allocator() != AlignedAllocator())
-    pcscan.RegisterScannableRoot(AlignedAllocator());
+    internal::PCScan::RegisterScannableRoot(AlignedAllocator());
   internal::NonScannableAllocator::Instance().EnablePCScan();
 }
 #endif
diff --git a/base/allocator/partition_allocator/memory_reclaimer.cc b/base/allocator/partition_allocator/memory_reclaimer.cc
index 50b0acf..fd846ca 100644
--- a/base/allocator/partition_allocator/memory_reclaimer.cc
+++ b/base/allocator/partition_allocator/memory_reclaimer.cc
@@ -135,7 +135,7 @@
     const auto invocation_mode = flags & PartitionPurgeAggressiveReclaim
                                      ? PCScan::InvocationMode::kForcedBlocking
                                      : PCScan::InvocationMode::kBlocking;
-    PCScan::Instance().PerformScanIfNeeded(invocation_mode);
+    PCScan::PerformScanIfNeeded(invocation_mode);
   }
 
 #if defined(PA_THREAD_CACHE_SUPPORTED)
diff --git a/base/allocator/partition_allocator/partition_alloc.cc b/base/allocator/partition_allocator/partition_alloc.cc
index 77509ed4..6ec69645 100644
--- a/base/allocator/partition_allocator/partition_alloc.cc
+++ b/base/allocator/partition_allocator/partition_alloc.cc
@@ -67,7 +67,7 @@
 }
 
 void PartitionAllocGlobalUninitForTesting() {
-  internal::PCScan::Instance().UninitForTesting();  // IN-TEST
+  internal::PCScan::UninitForTesting();  // IN-TEST
 #if !BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
   if (features::IsPartitionAllocGigaCageEnabled()) {
 #if defined(PA_HAS_64_BITS_POINTERS)
diff --git a/base/allocator/partition_allocator/partition_ref_count.h b/base/allocator/partition_allocator/partition_ref_count.h
index bca5eb0..46a9c40 100644
--- a/base/allocator/partition_allocator/partition_ref_count.h
+++ b/base/allocator/partition_allocator/partition_ref_count.h
@@ -8,6 +8,7 @@
 #include <atomic>
 #include <cstdint>
 
+#include "base/allocator/partition_allocator/partition_alloc_check.h"
 #include "base/allocator/partition_allocator/partition_alloc_constants.h"
 #include "base/allocator/partition_allocator/partition_alloc_forward.h"
 #include "base/base_export.h"
diff --git a/base/allocator/partition_allocator/partition_root.cc b/base/allocator/partition_allocator/partition_root.cc
index 6872be78..0f36f13 100644
--- a/base/allocator/partition_allocator/partition_root.cc
+++ b/base/allocator/partition_allocator/partition_root.cc
@@ -847,7 +847,7 @@
     // takes snapshot of all allocated pages, decommitting pages here (even
     // under the lock) is racy.
     // TODO(bikineev): Consider rescheduling the purging after PCScan.
-    if (PCScan::Instance().IsInProgress())
+    if (PCScan::IsInProgress())
       return;
     if (flags & PartitionPurgeDecommitEmptySlotSpans)
       DecommitEmptySlotSpans();
diff --git a/base/allocator/partition_allocator/partition_root.h b/base/allocator/partition_allocator/partition_root.h
index 93b7ee27..582e072 100644
--- a/base/allocator/partition_allocator/partition_root.h
+++ b/base/allocator/partition_allocator/partition_root.h
@@ -955,7 +955,7 @@
   // by default.
   if (UNLIKELY(root->IsQuarantineEnabled()) &&
       LIKELY(!slot_span->bucket->is_direct_mapped())) {
-    PCScan::Instance().MoveToQuarantine(ptr, slot_span->bucket->slot_size);
+    PCScan::MoveToQuarantine(ptr, slot_span->bucket->slot_size);
     return;
   }
 
@@ -1284,7 +1284,7 @@
 
   // PCScan safepoint. Call before trying to allocate from cache.
   if (IsQuarantineEnabled())
-    PCScan::Instance().JoinScanIfNeeded();
+    PCScan::JoinScanIfNeeded();
 
   // !thread_safe => !with_thread_cache, but adding the condition allows the
   // compiler to statically remove this branch for the thread-unsafe variant.
diff --git a/base/allocator/partition_allocator/starscan/pcscan.cc b/base/allocator/partition_allocator/starscan/pcscan.cc
index 3458e0c..aab7035 100644
--- a/base/allocator/partition_allocator/starscan/pcscan.cc
+++ b/base/allocator/partition_allocator/starscan/pcscan.cc
@@ -1586,11 +1586,12 @@
 void PCScan::PerformScanIfNeeded(InvocationMode invocation_mode) {
   if (!PCScanInternal::Instance().scannable_roots().size())
     return;
+  PCScan& instance = Instance();
   if (invocation_mode == InvocationMode::kForcedBlocking ||
-      scheduler_.scheduling_backend()
+      instance.scheduler_.scheduling_backend()
           .GetQuarantineData()
           .MinimumScanningThresholdReached())
-    PerformScan(invocation_mode);
+    instance.PerformScan(invocation_mode);
 }
 
 void PCScan::PerformDelayedScan(TimeDelta delay) {
diff --git a/base/allocator/partition_allocator/starscan/pcscan.h b/base/allocator/partition_allocator/starscan/pcscan.h
index dba75b2..ca00572 100644
--- a/base/allocator/partition_allocator/starscan/pcscan.h
+++ b/base/allocator/partition_allocator/starscan/pcscan.h
@@ -43,7 +43,6 @@
 // unreachable and therefore can be safely reclaimed.
 //
 // The driver class encapsulates the entire PCScan infrastructure.
-// TODO(bikineev,1129751): Consider a fully static interface.
 class BASE_EXPORT PCScan final {
  public:
   using Root = PartitionRoot<ThreadSafe>;
@@ -56,48 +55,39 @@
     kScheduleOnlyForTesting,
   };
 
-  static PCScan& Instance() {
-    // The instance is declared as a static member, not static local. The reason
-    // is that we want to use the require_constant_initialization attribute to
-    // avoid double-checked-locking which would otherwise have been introduced
-    // by the compiler for thread-safe dynamic initialization (see constinit
-    // from C++20).
-    return instance_;
-  }
-
   PCScan(const PCScan&) = delete;
   PCScan& operator=(const PCScan&) = delete;
 
   // Registers a root for scanning.
-  void RegisterScannableRoot(Root* root);
+  static void RegisterScannableRoot(Root* root);
   // Registers a root that doesn't need to be scanned but still contains
   // quarantined objects.
-  void RegisterNonScannableRoot(Root* root);
+  static void RegisterNonScannableRoot(Root* root);
 
-  ALWAYS_INLINE void MoveToQuarantine(void* ptr, size_t slot_size);
+  ALWAYS_INLINE static void MoveToQuarantine(void* ptr, size_t slot_size);
 
   // Performs scanning only if a certain quarantine threshold was reached.
-  void PerformScanIfNeeded(InvocationMode invocation_mode);
+  static void PerformScanIfNeeded(InvocationMode invocation_mode);
 
-  void PerformDelayedScan(TimeDelta delay);
+  static void PerformDelayedScan(TimeDelta delay);
 
   // Join scan from safepoint in mutator thread. As soon as PCScan is scheduled,
   // mutators can join PCScan helping out with clearing and scanning.
-  void JoinScanIfNeeded();
+  static void JoinScanIfNeeded();
 
   // Checks if there is a PCScan task currently in progress.
-  ALWAYS_INLINE bool IsInProgress() const;
+  ALWAYS_INLINE static bool IsInProgress();
 
   // Sets process name (used for histograms). |name| must be a string literal.
-  void SetProcessName(const char* name);
+  static void SetProcessName(const char* name);
 
   // Notify PCScan that a new thread was created/destroyed.
-  void NotifyThreadCreated(void* stack_top);
-  void NotifyThreadDestroyed();
+  static void NotifyThreadCreated(void* stack_top);
+  static void NotifyThreadDestroyed();
 
-  void UninitForTesting();
+  static void UninitForTesting();
 
-  PCScanScheduler& scheduler() { return scheduler_; }
+  inline static PCScanScheduler& scheduler();
 
  private:
   class PCScanThread;
@@ -115,6 +105,8 @@
     kSweepingAndFinishing
   };
 
+  ALWAYS_INLINE static PCScan& Instance();
+
   ALWAYS_INLINE bool IsJoinable() const;
 
   inline constexpr PCScan();
@@ -123,13 +115,13 @@
   void PerformScan(InvocationMode invocation_mode);
 
   // Joins scan unconditionally.
-  void JoinScan();
+  static void JoinScan();
 
   // Finish scan as scanner thread.
-  void FinishScanForTesting();
+  static void FinishScanForTesting();
 
   // Reinitialize internal structures (e.g. card table).
-  void ReinitForTesting();
+  static void ReinitForTesting();
 
   size_t epoch() const { return scheduler_.epoch(); }
 
@@ -143,8 +135,18 @@
 // To please Chromium's clang plugin.
 constexpr PCScan::PCScan() = default;
 
-ALWAYS_INLINE bool PCScan::IsInProgress() const {
-  return state_.load(std::memory_order_relaxed) != State::kNotRunning;
+ALWAYS_INLINE PCScan& PCScan::Instance() {
+  // The instance is declared as a static member, not static local. The reason
+  // is that we want to use the require_constant_initialization attribute to
+  // avoid double-checked-locking which would otherwise have been introduced
+  // by the compiler for thread-safe dynamic initialization (see constinit
+  // from C++20).
+  return instance_;
+}
+
+ALWAYS_INLINE bool PCScan::IsInProgress() {
+  const PCScan& instance = Instance();
+  return instance.state_.load(std::memory_order_relaxed) != State::kNotRunning;
 }
 
 ALWAYS_INLINE bool PCScan::IsJoinable() const {
@@ -154,28 +156,35 @@
 }
 
 ALWAYS_INLINE void PCScan::JoinScanIfNeeded() {
-  if (UNLIKELY(IsJoinable()))
-    JoinScan();
+  PCScan& instance = Instance();
+  if (UNLIKELY(instance.IsJoinable()))
+    instance.JoinScan();
 }
 
 ALWAYS_INLINE void PCScan::MoveToQuarantine(void* ptr, size_t slot_size) {
-  auto* quarantine =
-      QuarantineBitmapFromPointer(QuarantineBitmapType::kMutator, epoch(), ptr);
+  PCScan& instance = Instance();
+  auto* quarantine = QuarantineBitmapFromPointer(QuarantineBitmapType::kMutator,
+                                                 instance.epoch(), ptr);
   const bool is_double_freed =
       quarantine->SetBit(reinterpret_cast<uintptr_t>(ptr));
   if (UNLIKELY(is_double_freed))
     DoubleFreeAttempt();
 
-  const bool is_limit_reached = scheduler_.AccountFreed(slot_size);
+  const bool is_limit_reached = instance.scheduler_.AccountFreed(slot_size);
   if (UNLIKELY(is_limit_reached)) {
     // Perform a quick check if another scan is already in progress.
-    if (IsInProgress())
+    if (instance.IsInProgress())
       return;
     // Avoid blocking the current thread for regular scans.
-    PerformScan(InvocationMode::kNonBlocking);
+    instance.PerformScan(InvocationMode::kNonBlocking);
   }
 }
 
+inline PCScanScheduler& PCScan::scheduler() {
+  PCScan& instance = Instance();
+  return instance.scheduler_;
+}
+
 }  // namespace internal
 }  // namespace base
 
diff --git a/base/allocator/partition_allocator/starscan/pcscan_unittest.cc b/base/allocator/partition_allocator/starscan/pcscan_unittest.cc
index 769c0222..c8476b7 100644
--- a/base/allocator/partition_allocator/starscan/pcscan_unittest.cc
+++ b/base/allocator/partition_allocator/starscan/pcscan_unittest.cc
@@ -24,13 +24,13 @@
     PartitionAllocGlobalInit([](size_t) { LOG(FATAL) << "Out of memory"; });
     // Previous test runs within the same process decommit GigaCage, therefore
     // we need to make sure that the card table is recommitted for each run.
-    PCScan::Instance().ReinitForTesting();
+    PCScan::ReinitForTesting();
     allocator_.init({PartitionOptions::AlignedAlloc::kDisallowed,
                      PartitionOptions::ThreadCache::kDisabled,
                      PartitionOptions::Quarantine::kAllowed,
                      PartitionOptions::Cookies::kAllowed,
                      PartitionOptions::RefCount::kDisallowed});
-    PCScan::Instance().RegisterScannableRoot(allocator_.root());
+    PCScan::RegisterScannableRoot(allocator_.root());
   }
   ~PCScanTest() override {
     allocator_.root()->PurgeMemory(PartitionPurgeDecommitEmptySlotSpans |
@@ -53,7 +53,7 @@
     instance.JoinScan();
   }
 
-  void FinishPCScanAsScanner() { PCScan::Instance().FinishScanForTesting(); }
+  void FinishPCScanAsScanner() { PCScan::FinishScanForTesting(); }
 
   bool IsInQuarantine(void* ptr) const {
     return QuarantineBitmapFromPointer(QuarantineBitmapType::kMutator,
@@ -341,8 +341,8 @@
        PartitionOptions::Cookies::kAllowed,
        PartitionOptions::RefCount::kDisallowed});
 
-  PCScan::Instance().RegisterScannableRoot(&source_root);
-  PCScan::Instance().RegisterScannableRoot(&value_root);
+  PCScan::RegisterScannableRoot(&source_root);
+  PCScan::RegisterScannableRoot(&value_root);
 
   auto* source = SourceList::Create(source_root);
   auto* value = ValueList::Create(value_root);
@@ -368,8 +368,8 @@
        PartitionOptions::Cookies::kAllowed,
        PartitionOptions::RefCount::kDisallowed});
 
-  PCScan::Instance().RegisterScannableRoot(&source_root);
-  PCScan::Instance().RegisterNonScannableRoot(&value_root);
+  PCScan::RegisterScannableRoot(&source_root);
+  PCScan::RegisterNonScannableRoot(&value_root);
 
   auto* source = SourceList::Create(source_root);
   auto* value = ValueList::Create(value_root);
@@ -395,8 +395,8 @@
        PartitionOptions::Cookies::kAllowed,
        PartitionOptions::RefCount::kDisallowed});
 
-  PCScan::Instance().RegisterNonScannableRoot(&source_root);
-  PCScan::Instance().RegisterScannableRoot(&value_root);
+  PCScan::RegisterNonScannableRoot(&source_root);
+  PCScan::RegisterScannableRoot(&value_root);
 
   auto* source = SourceList::Create(source_root);
   auto* value = ValueList::Create(value_root);
diff --git a/base/memory/nonscannable_memory.cc b/base/memory/nonscannable_memory.cc
index 4df880a..4a0b438 100644
--- a/base/memory/nonscannable_memory.cc
+++ b/base/memory/nonscannable_memory.cc
@@ -47,8 +47,7 @@
                                     PartitionOptions::Quarantine::kAllowed,
                                     PartitionOptions::Cookies::kAllowed,
                                     PartitionOptions::RefCount::kDisallowed));
-  auto& pcscan = internal::PCScan::Instance();
-  pcscan.RegisterNonScannableRoot(allocator_->root());
+  PCScan::RegisterNonScannableRoot(allocator_->root());
   pcscan_enabled_.store(true, std::memory_order_release);
 }
 #endif  // BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
diff --git a/base/message_loop/message_pump_mac.h b/base/message_loop/message_pump_mac.h
index a81b711..2224fcba 100644
--- a/base/message_loop/message_pump_mac.h
+++ b/base/message_loop/message_pump_mac.h
@@ -192,6 +192,9 @@
   static void RunNestingDeferredWorkSource(void* info);
   void RunNestingDeferredWork();
 
+  // Called before the run loop goes to sleep to notify delegate.
+  void BeforeWait();
+
   // Schedules possible nesting-deferred work to be processed before the run
   // loop goes to sleep, exits, or begins processing sources at the top of its
   // loop.  If this function detects that a nested loop had run since the
diff --git a/base/message_loop/message_pump_mac.mm b/base/message_loop/message_pump_mac.mm
index 5846dcf0..d085795 100644
--- a/base/message_loop/message_pump_mac.mm
+++ b/base/message_loop/message_pump_mac.mm
@@ -454,6 +454,15 @@
   }
 }
 
+void MessagePumpCFRunLoopBase::BeforeWait() {
+  if (!delegate_) {
+    // This point can be reached with a nullptr |delegate_| if Run is not on the
+    // stack but foreign code is spinning the CFRunLoop.
+    return;
+  }
+  delegate_->BeforeWait();
+}
+
 // Called before the run loop goes to sleep or exits, or processes sources.
 void MessagePumpCFRunLoopBase::MaybeScheduleNestingDeferredWork() {
   // deepest_nesting_level_ is set as run loops are entered.  If the deepest
@@ -483,6 +492,9 @@
     // nesting-deferred work may have accumulated.  Schedule it for processing
     // if appropriate.
     self->MaybeScheduleNestingDeferredWork();
+
+    // Notify the delegate that the loop is about to sleep.
+    self->BeforeWait();
   });
 }
 
diff --git a/base/threading/platform_thread_posix.cc b/base/threading/platform_thread_posix.cc
index 699ee8f..dbf96f6 100644
--- a/base/threading/platform_thread_posix.cc
+++ b/base/threading/platform_thread_posix.cc
@@ -74,8 +74,7 @@
 
 #if !defined(OS_NACL)
 #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
-    internal::PCScan::Instance().NotifyThreadCreated(
-        internal::GetStackPointer());
+    internal::PCScan::NotifyThreadCreated(internal::GetStackPointer());
 #endif
 
 #if defined(OS_APPLE)
@@ -101,7 +100,7 @@
       PlatformThread::CurrentId());
 
 #if !defined(OS_NACL) && BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
-  internal::PCScan::Instance().NotifyThreadDestroyed();
+  internal::PCScan::NotifyThreadDestroyed();
 #endif
 
   base::TerminateOnThread();
diff --git a/base/threading/platform_thread_win.cc b/base/threading/platform_thread_win.cc
index 7a73defa4..86e240b2 100644
--- a/base/threading/platform_thread_win.cc
+++ b/base/threading/platform_thread_win.cc
@@ -105,7 +105,7 @@
                                 DUPLICATE_SAME_ACCESS);
 
 #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
-  internal::PCScan::Instance().NotifyThreadCreated(internal::GetStackPointer());
+  internal::PCScan::NotifyThreadCreated(internal::GetStackPointer());
 #endif
 
   win::ScopedHandle scoped_platform_handle;
@@ -127,7 +127,7 @@
   }
 
 #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
-  internal::PCScan::Instance().NotifyThreadDestroyed();
+  internal::PCScan::NotifyThreadDestroyed();
 #endif
 
   // Ensure thread priority is at least NORMAL before initiating thread
diff --git a/cc/paint/image_transfer_cache_entry.cc b/cc/paint/image_transfer_cache_entry.cc
index 9cdaf2c..cd0cb8e6 100644
--- a/cc/paint/image_transfer_cache_entry.cc
+++ b/cc/paint/image_transfer_cache_entry.cc
@@ -259,8 +259,7 @@
   DCHECK_GE(data.size(), SerializedSize());
   // We don't need to populate the SerializeOptions here since the writer is
   // only used for serializing primitives.
-  PaintOp::SerializeOptions options(nullptr, nullptr, nullptr, nullptr, nullptr,
-                                    nullptr, false, false, 0);
+  PaintOp::SerializeOptions options;
   PaintOpWriter writer(data.data(), data.size(), options);
   writer.Write(plane_config_);
 
diff --git a/cc/paint/paint_op_buffer.cc b/cc/paint/paint_op_buffer.cc
index da26e5b..47484ec5 100644
--- a/cc/paint/paint_op_buffer.cc
+++ b/cc/paint/paint_op_buffer.cc
@@ -192,6 +192,7 @@
                                      size_t size,
                                      const PaintOp::SerializeOptions& options,
                                      const PaintFlags* flags_to_serialize,
+                                     const SkM44& current_ctm,
                                      const SkM44& original_ctm);
 
 #define M(T) &T::Serialize,
@@ -349,7 +350,6 @@
     ImageProvider* image_provider,
     TransferCacheSerializeHelper* transfer_cache,
     ClientPaintCache* paint_cache,
-    SkCanvas* canvas,
     SkStrikeServer* strike_server,
     sk_sp<SkColorSpace> color_space,
     bool can_use_lcd_text,
@@ -358,7 +358,6 @@
     : image_provider(image_provider),
       transfer_cache(transfer_cache),
       paint_cache(paint_cache),
-      canvas(canvas),
       strike_server(strike_server),
       color_space(std::move(color_space)),
       can_use_lcd_text(can_use_lcd_text),
@@ -366,6 +365,7 @@
           context_supports_distance_field_text),
       max_texture_size(max_texture_size) {}
 
+PaintOp::SerializeOptions::SerializeOptions() = default;
 PaintOp::SerializeOptions::SerializeOptions(const SerializeOptions&) = default;
 PaintOp::SerializeOptions& PaintOp::SerializeOptions::operator=(
     const SerializeOptions&) = default;
@@ -392,6 +392,7 @@
                              size_t size,
                              const SerializeOptions& options,
                              const PaintFlags* flags_to_serialize,
+                             const SkM44& current_ctm,
                              const SkM44& original_ctm) {
   auto* op = static_cast<const AnnotateOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
@@ -406,6 +407,7 @@
                              size_t size,
                              const SerializeOptions& options,
                              const PaintFlags* flags_to_serialize,
+                             const SkM44& current_ctm,
                              const SkM44& original_ctm) {
   auto* op = static_cast<const ClipPathOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
@@ -420,6 +422,7 @@
                              size_t size,
                              const SerializeOptions& options,
                              const PaintFlags* flags_to_serialize,
+                             const SkM44& current_ctm,
                              const SkM44& original_ctm) {
   auto* op = static_cast<const ClipRectOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
@@ -434,6 +437,7 @@
                               size_t size,
                               const SerializeOptions& options,
                               const PaintFlags* flags_to_serialize,
+                              const SkM44& current_ctm,
                               const SkM44& original_ctm) {
   auto* op = static_cast<const ClipRRectOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
@@ -448,6 +452,7 @@
                            size_t size,
                            const SerializeOptions& options,
                            const PaintFlags* flags_to_serialize,
+                           const SkM44& current_ctm,
                            const SkM44& original_ctm) {
   auto* op = static_cast<const ConcatOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
@@ -460,6 +465,7 @@
                                size_t size,
                                const SerializeOptions& options,
                                const PaintFlags* flags_to_serialize,
+                               const SkM44& current_ctm,
                                const SkM44& original_ctm) {
   auto* op = static_cast<const CustomDataOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
@@ -472,6 +478,7 @@
                               size_t size,
                               const SerializeOptions& options,
                               const PaintFlags* flags_to_serialize,
+                              const SkM44& current_ctm,
                               const SkM44& original_ctm) {
   auto* op = static_cast<const DrawColorOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
@@ -485,12 +492,13 @@
                                size_t size,
                                const SerializeOptions& options,
                                const PaintFlags* flags_to_serialize,
+                               const SkM44& current_ctm,
                                const SkM44& original_ctm) {
   auto* op = static_cast<const DrawDRRectOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
   if (!flags_to_serialize)
     flags_to_serialize = &op->flags;
-  helper.Write(*flags_to_serialize);
+  helper.Write(*flags_to_serialize, current_ctm);
   helper.Write(op->outer);
   helper.Write(op->inner);
   return helper.size();
@@ -501,17 +509,18 @@
                               size_t size,
                               const SerializeOptions& options,
                               const PaintFlags* flags_to_serialize,
+                              const SkM44& current_ctm,
                               const SkM44& original_ctm) {
   auto* op = static_cast<const DrawImageOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
   if (!flags_to_serialize)
     flags_to_serialize = &op->flags;
-  helper.Write(*flags_to_serialize);
+  helper.Write(*flags_to_serialize, current_ctm);
 
   SkSize scale_adjustment = SkSize::Make(1.f, 1.f);
-  helper.Write(CreateDrawImage(op->image, flags_to_serialize, op->sampling,
-                               options.canvas->getLocalToDevice()),
-               &scale_adjustment);
+  helper.Write(
+      CreateDrawImage(op->image, flags_to_serialize, op->sampling, current_ctm),
+      &scale_adjustment);
   helper.AlignMemory(alignof(SkScalar));
   helper.Write(scale_adjustment.width());
   helper.Write(scale_adjustment.height());
@@ -527,16 +536,16 @@
                                   size_t size,
                                   const SerializeOptions& options,
                                   const PaintFlags* flags_to_serialize,
+                                  const SkM44& current_ctm,
                                   const SkM44& original_ctm) {
   auto* op = static_cast<const DrawImageRectOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
   if (!flags_to_serialize)
     flags_to_serialize = &op->flags;
-  helper.Write(*flags_to_serialize);
+  helper.Write(*flags_to_serialize, current_ctm);
 
   // This adjustment mirrors DiscardableImageMap::GatherDiscardableImage logic.
-  SkM44 matrix = options.canvas->getLocalToDevice() *
-                 SkM44(SkMatrix::RectToRect(op->src, op->dst));
+  SkM44 matrix = current_ctm * SkM44(SkMatrix::RectToRect(op->src, op->dst));
   // Note that we don't request subsets here since the GpuImageCache has no
   // optimizations for using subsets.
   SkSize scale_adjustment = SkSize::Make(1.f, 1.f);
@@ -559,12 +568,13 @@
                               size_t size,
                               const SerializeOptions& options,
                               const PaintFlags* flags_to_serialize,
+                              const SkM44& current_ctm,
                               const SkM44& original_ctm) {
   auto* op = static_cast<const DrawIRectOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
   if (!flags_to_serialize)
     flags_to_serialize = &op->flags;
-  helper.Write(*flags_to_serialize);
+  helper.Write(*flags_to_serialize, current_ctm);
   helper.Write(op->rect);
   return helper.size();
 }
@@ -574,12 +584,13 @@
                              size_t size,
                              const SerializeOptions& options,
                              const PaintFlags* flags_to_serialize,
+                             const SkM44& current_ctm,
                              const SkM44& original_ctm) {
   auto* op = static_cast<const DrawLineOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
   if (!flags_to_serialize)
     flags_to_serialize = &op->flags;
-  helper.Write(*flags_to_serialize);
+  helper.Write(*flags_to_serialize, current_ctm);
   helper.AlignMemory(alignof(SkScalar));
   helper.Write(op->x0);
   helper.Write(op->y0);
@@ -593,12 +604,13 @@
                              size_t size,
                              const SerializeOptions& options,
                              const PaintFlags* flags_to_serialize,
+                             const SkM44& current_ctm,
                              const SkM44& original_ctm) {
   auto* op = static_cast<const DrawOvalOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
   if (!flags_to_serialize)
     flags_to_serialize = &op->flags;
-  helper.Write(*flags_to_serialize);
+  helper.Write(*flags_to_serialize, current_ctm);
   helper.Write(op->oval);
   return helper.size();
 }
@@ -608,12 +620,13 @@
                              size_t size,
                              const SerializeOptions& options,
                              const PaintFlags* flags_to_serialize,
+                             const SkM44& current_ctm,
                              const SkM44& original_ctm) {
   auto* op = static_cast<const DrawPathOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
   if (!flags_to_serialize)
     flags_to_serialize = &op->flags;
-  helper.Write(*flags_to_serialize);
+  helper.Write(*flags_to_serialize, current_ctm);
   helper.Write(op->path);
   helper.Write(op->sk_path_fill_type);
   return helper.size();
@@ -624,6 +637,7 @@
                                size_t size,
                                const SerializeOptions& options,
                                const PaintFlags* flags_to_serialize,
+                               const SkM44& current_ctm,
                                const SkM44& original_ctm) {
   // TODO(enne): these must be flattened.  Serializing this will not do
   // anything.
@@ -636,12 +650,13 @@
                              size_t size,
                              const SerializeOptions& options,
                              const PaintFlags* flags_to_serialize,
+                             const SkM44& current_ctm,
                              const SkM44& original_ctm) {
   auto* op = static_cast<const DrawRectOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
   if (!flags_to_serialize)
     flags_to_serialize = &op->flags;
-  helper.Write(*flags_to_serialize);
+  helper.Write(*flags_to_serialize, current_ctm);
   helper.Write(op->rect);
   return helper.size();
 }
@@ -651,12 +666,13 @@
                               size_t size,
                               const SerializeOptions& options,
                               const PaintFlags* flags_to_serialize,
+                              const SkM44& current_ctm,
                               const SkM44& original_ctm) {
   auto* op = static_cast<const DrawRRectOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
   if (!flags_to_serialize)
     flags_to_serialize = &op->flags;
-  helper.Write(*flags_to_serialize);
+  helper.Write(*flags_to_serialize, current_ctm);
   helper.Write(op->rrect);
   return helper.size();
 }
@@ -666,6 +682,7 @@
                                 size_t size,
                                 const SerializeOptions& options,
                                 const PaintFlags* flags_to_serialize,
+                                const SkM44& current_ctm,
                                 const SkM44& original_ctm) {
 #if defined(OS_ANDROID)
   // Skottie is not used in android, so to keep apk size small it is excluded
@@ -687,12 +704,13 @@
                                  size_t size,
                                  const SerializeOptions& options,
                                  const PaintFlags* flags_to_serialize,
+                                 const SkM44& current_ctm,
                                  const SkM44& original_ctm) {
   auto* op = static_cast<const DrawTextBlobOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
   if (!flags_to_serialize)
     flags_to_serialize = &op->flags;
-  helper.Write(*flags_to_serialize);
+  helper.Write(*flags_to_serialize, current_ctm);
   helper.AlignMemory(alignof(SkScalar));
   helper.Write(op->x);
   helper.Write(op->y);
@@ -705,6 +723,7 @@
                          size_t size,
                          const SerializeOptions& options,
                          const PaintFlags* flags_to_serialize,
+                         const SkM44& current_ctm,
                          const SkM44& original_ctm) {
   PaintOpWriter helper(memory, size, options);
   return helper.size();
@@ -715,6 +734,7 @@
                             size_t size,
                             const SerializeOptions& options,
                             const PaintFlags* flags_to_serialize,
+                            const SkM44& current_ctm,
                             const SkM44& original_ctm) {
   PaintOpWriter helper(memory, size, options);
   return helper.size();
@@ -725,6 +745,7 @@
                            size_t size,
                            const SerializeOptions& options,
                            const PaintFlags* flags_to_serialize,
+                           const SkM44& current_ctm,
                            const SkM44& original_ctm) {
   auto* op = static_cast<const RotateOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
@@ -737,6 +758,7 @@
                          size_t size,
                          const SerializeOptions& options,
                          const PaintFlags* flags_to_serialize,
+                         const SkM44& current_ctm,
                          const SkM44& original_ctm) {
   PaintOpWriter helper(memory, size, options);
   return helper.size();
@@ -747,12 +769,13 @@
                               size_t size,
                               const SerializeOptions& options,
                               const PaintFlags* flags_to_serialize,
+                              const SkM44& current_ctm,
                               const SkM44& original_ctm) {
   auto* op = static_cast<const SaveLayerOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
   if (!flags_to_serialize)
     flags_to_serialize = &op->flags;
-  helper.Write(*flags_to_serialize);
+  helper.Write(*flags_to_serialize, current_ctm);
   helper.Write(op->bounds);
   return helper.size();
 }
@@ -762,6 +785,7 @@
                                    size_t size,
                                    const SerializeOptions& options,
                                    const PaintFlags* flags_to_serialize,
+                                   const SkM44& current_ctm,
                                    const SkM44& original_ctm) {
   auto* op = static_cast<const SaveLayerAlphaOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
@@ -775,6 +799,7 @@
                           size_t size,
                           const SerializeOptions& options,
                           const PaintFlags* flags_to_serialize,
+                          const SkM44& current_ctm,
                           const SkM44& original_ctm) {
   auto* op = static_cast<const ScaleOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
@@ -788,9 +813,11 @@
                               size_t size,
                               const SerializeOptions& options,
                               const PaintFlags* flags_to_serialize,
+                              const SkM44& current_ctm,
                               const SkM44& original_ctm) {
   auto* op = static_cast<const SetMatrixOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
+  // Use original_ctm here because SetMatrixOp replaces current_ctm
   helper.Write(original_ctm * op->matrix);
   return helper.size();
 }
@@ -800,6 +827,7 @@
                               size_t size,
                               const SerializeOptions& options,
                               const PaintFlags* flags_to_serialize,
+                              const SkM44& current_ctm,
                               const SkM44& original_ctm) {
   auto* op = static_cast<const SetNodeIdOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
@@ -812,6 +840,7 @@
                               size_t size,
                               const SerializeOptions& options,
                               const PaintFlags* flags_to_serialize,
+                              const SkM44& current_ctm,
                               const SkM44& original_ctm) {
   auto* op = static_cast<const TranslateOp*>(base_op);
   PaintOpWriter helper(memory, size, options);
@@ -2259,9 +2288,8 @@
                           size_t size,
                           const SerializeOptions& options,
                           const PaintFlags* flags_to_serialize,
+                          const SkM44& current_ctm,
                           const SkM44& original_ctm) const {
-  DCHECK(options.canvas);
-
   // Need at least enough room for a skip/type header.
   if (size < 4)
     return 0u;
@@ -2269,8 +2297,9 @@
   DCHECK_EQ(0u,
             reinterpret_cast<uintptr_t>(memory) % PaintOpBuffer::PaintOpAlign);
 
-  size_t written = g_serialize_functions[type](
-      this, memory, size, options, flags_to_serialize, original_ctm);
+  size_t written = g_serialize_functions[type](this, memory, size, options,
+                                               flags_to_serialize, current_ctm,
+                                               original_ctm);
   DCHECK_LE(written, size);
   if (written < 4)
     return 0u;
diff --git a/cc/paint/paint_op_buffer.h b/cc/paint/paint_op_buffer.h
index b86f8c3..5864c79 100644
--- a/cc/paint/paint_op_buffer.h
+++ b/cc/paint/paint_op_buffer.h
@@ -66,10 +66,10 @@
 // don't write the 4 byte type/skip header because they don't know how much
 // data they will need to write.  PaintOp::Serialize itself must update it.
 #define HAS_SERIALIZATION_FUNCTIONS()                                        \
-  static size_t Serialize(const PaintOp* op, void* memory, size_t size,      \
-                          const SerializeOptions& options,                   \
-                          const PaintFlags* flags_to_serialize,              \
-                          const SkM44& original_ctm);                        \
+  static size_t Serialize(                                                   \
+      const PaintOp* op, void* memory, size_t size,                          \
+      const SerializeOptions& options, const PaintFlags* flags_to_serialize, \
+      const SkM44& current_ctm, const SkM44& original_ctm);                  \
   static PaintOp* Deserialize(const volatile void* input, size_t input_size, \
                               void* output, size_t output_size,              \
                               const DeserializeOptions& options)
@@ -154,10 +154,10 @@
   bool operator!=(const PaintOp& other) const { return !(*this == other); }
 
   struct CC_PAINT_EXPORT SerializeOptions {
+    SerializeOptions();
     SerializeOptions(ImageProvider* image_provider,
                      TransferCacheSerializeHelper* transfer_cache,
                      ClientPaintCache* paint_cache,
-                     SkCanvas* canvas,
                      SkStrikeServer* strike_server,
                      sk_sp<SkColorSpace> color_space,
                      bool can_use_lcd_text,
@@ -171,7 +171,6 @@
     ImageProvider* image_provider = nullptr;
     TransferCacheSerializeHelper* transfer_cache = nullptr;
     ClientPaintCache* paint_cache = nullptr;
-    SkCanvas* canvas = nullptr;
     SkStrikeServer* strike_server = nullptr;
     sk_sp<SkColorSpace> color_space = nullptr;
     bool can_use_lcd_text = false;
@@ -219,11 +218,13 @@
   // If the op can be serialized to |memory| in no more than |size| bytes,
   // then return the number of bytes written.  If it won't fit, return 0.
   // If |flags_to_serialize| is non-null, it overrides any flags within the op.
+  // |current_ctm| is the transform that will affect the op when rasterized.
   // |original_ctm| is the transform that SetMatrixOps must be made relative to.
   size_t Serialize(void* memory,
                    size_t size,
                    const SerializeOptions& options,
                    const PaintFlags* flags_to_serialize,
+                   const SkM44& current_ctm,
                    const SkM44& original_ctm) const;
 
   // Deserializes a PaintOp of this type from a given buffer |input| of
diff --git a/cc/paint/paint_op_buffer_serializer.cc b/cc/paint/paint_op_buffer_serializer.cc
index d8803fb..79750de 100644
--- a/cc/paint/paint_op_buffer_serializer.cc
+++ b/cc/paint/paint_op_buffer_serializer.cc
@@ -26,36 +26,28 @@
   return PlaybackParams(nullptr, canvas->getLocalToDevice());
 }
 
-// Use half of the max int as the extent for the SkNoDrawCanvas. The correct
-// clip is applied to the canvas during serialization.
-const int kMaxExtent = std::numeric_limits<int>::max() >> 1;
+std::unique_ptr<SkCanvas> MakeAnalysisCanvas(
+    const PaintOp::SerializeOptions& options) {
+  // Use half of the max int as the extent for the SkNoDrawCanvas. The correct
+  // clip is applied to the canvas during serialization.
+  const int kMaxExtent = std::numeric_limits<int>::max() >> 1;
+
+  return options.strike_server
+             ? std::make_unique<SkTextBlobCacheDiffCanvas>(
+                   kMaxExtent, kMaxExtent,
+                   skia::LegacyDisplayGlobals::ComputeSurfaceProps(
+                       options.can_use_lcd_text),
+                   options.strike_server, options.color_space,
+                   options.context_supports_distance_field_text)
+             : std::make_unique<SkNoDrawCanvas>(kMaxExtent, kMaxExtent);
+}
 
 }  // namespace
 
 PaintOpBufferSerializer::PaintOpBufferSerializer(
     SerializeCallback serialize_cb,
     const PaintOp::SerializeOptions& options)
-    : serialize_cb_(std::move(serialize_cb)),
-      text_blob_canvas_(
-          options.strike_server
-              ? std::make_unique<SkTextBlobCacheDiffCanvas>(
-                    kMaxExtent,
-                    kMaxExtent,
-                    skia::LegacyDisplayGlobals::ComputeSurfaceProps(
-                        options.can_use_lcd_text),
-                    options.strike_server,
-                    options.color_space,
-                    options.context_supports_distance_field_text)
-              : std::make_unique<SkNoDrawCanvas>(kMaxExtent, kMaxExtent)),
-      options_(options.image_provider,
-               options.transfer_cache,
-               options.paint_cache,
-               text_blob_canvas_.get(),
-               options.strike_server,
-               options.color_space,
-               options.can_use_lcd_text,
-               options.context_supports_distance_field_text,
-               options.max_texture_size) {
+    : serialize_cb_(std::move(serialize_cb)), options_(options) {
   DCHECK(serialize_cb_);
 }
 
@@ -64,26 +56,24 @@
 void PaintOpBufferSerializer::Serialize(const PaintOpBuffer* buffer,
                                         const std::vector<size_t>* offsets,
                                         const Preamble& preamble) {
-  DCHECK(text_blob_canvas_->getTotalMatrix().isIdentity());
-  static const int kInitialSaveCount = 1;
-  DCHECK_EQ(kInitialSaveCount, text_blob_canvas_->getSaveCount());
+  std::unique_ptr<SkCanvas> canvas = MakeAnalysisCanvas(options_);
 
   // These PlaybackParams use the initial (identity) canvas matrix, as they are
   // only used for serializing the preamble and the initial save / final restore
   // SerializeBuffer will create its own PlaybackParams based on the
   // post-preamble canvas.
-  PlaybackParams params = MakeParams(text_blob_canvas_.get());
+  PlaybackParams params = MakeParams(canvas.get());
 
-  Save(params);
-  SerializePreamble(preamble, params);
-  SerializeBuffer(buffer, offsets);
-  RestoreToCount(kInitialSaveCount, params);
+  int saveCount = canvas->getSaveCount();
+  Save(canvas.get(), params);
+  SerializePreamble(canvas.get(), preamble, params);
+  SerializeBuffer(canvas.get(), buffer, offsets);
+  RestoreToCount(canvas.get(), saveCount, params);
 }
 
 void PaintOpBufferSerializer::Serialize(const PaintOpBuffer* buffer) {
-  DCHECK(text_blob_canvas_->getTotalMatrix().isIdentity());
-
-  SerializeBuffer(buffer, nullptr);
+  std::unique_ptr<SkCanvas> canvas = MakeAnalysisCanvas(options_);
+  SerializeBuffer(canvas.get(), buffer, nullptr);
 }
 
 void PaintOpBufferSerializer::Serialize(
@@ -91,29 +81,30 @@
     const gfx::Rect& playback_rect,
     const gfx::SizeF& post_scale,
     const SkMatrix& post_matrix_for_analysis) {
-  DCHECK(text_blob_canvas_->getTotalMatrix().isIdentity());
+  std::unique_ptr<SkCanvas> canvas = MakeAnalysisCanvas(options_);
 
-  PlaybackParams params = MakeParams(text_blob_canvas_.get());
+  PlaybackParams params = MakeParams(canvas.get());
 
   // TODO(khushalsagar): remove this clip rect if it's not needed.
   if (!playback_rect.IsEmpty()) {
     ClipRectOp clip_op(gfx::RectToSkRect(playback_rect), SkClipOp::kIntersect,
                        false);
-    SerializeOp(&clip_op, nullptr, params);
+    SerializeOp(canvas.get(), &clip_op, nullptr, params);
   }
 
   if (post_scale.width() != 1.f || post_scale.height() != 1.f) {
     ScaleOp scale_op(post_scale.width(), post_scale.height());
-    SerializeOp(&scale_op, nullptr, params);
+    SerializeOp(canvas.get(), &scale_op, nullptr, params);
   }
 
-  text_blob_canvas_->concat(post_matrix_for_analysis);
-  SerializeBuffer(buffer, nullptr);
+  canvas->concat(post_matrix_for_analysis);
+  SerializeBuffer(canvas.get(), buffer, nullptr);
 }
 
 // This function needs to have the exact same behavior as
 // RasterSource::ClearForOpaqueRaster.
 void PaintOpBufferSerializer::ClearForOpaqueRaster(
+    SkCanvas* canvas,
     const Preamble& preamble,
     const PlaybackParams& params) {
   gfx::Rect outer_rect;
@@ -124,23 +115,23 @@
           inner_rect))
     return;
 
-  Save(params);
+  Save(canvas, params);
   ClipRectOp outer_clip_op(gfx::RectToSkRect(outer_rect), SkClipOp::kIntersect,
                            false);
-  SerializeOp(&outer_clip_op, nullptr, params);
+  SerializeOp(canvas, &outer_clip_op, nullptr, params);
   if (!inner_rect.IsEmpty()) {
     ClipRectOp inner_clip_op(gfx::RectToSkRect(inner_rect),
                              SkClipOp::kDifference, false);
-    SerializeOp(&inner_clip_op, nullptr, params);
+    SerializeOp(canvas, &inner_clip_op, nullptr, params);
   }
   DrawColorOp clear_op(preamble.background_color, SkBlendMode::kSrc);
-  SerializeOp(&clear_op, nullptr, params);
-  RestoreToCount(1, params);
+  SerializeOp(canvas, &clear_op, nullptr, params);
+  RestoreToCount(canvas, 1, params);
 }
 
-void PaintOpBufferSerializer::SerializePreamble(
-    const Preamble& preamble,
-    const PlaybackParams& params) {
+void PaintOpBufferSerializer::SerializePreamble(SkCanvas* canvas,
+                                                const Preamble& preamble,
+                                                const PlaybackParams& params) {
   DCHECK(preamble.full_raster_rect.Contains(preamble.playback_rect))
       << "full: " << preamble.full_raster_rect.ToString()
       << ", playback: " << preamble.playback_rect.ToString();
@@ -149,7 +140,7 @@
   // RasterSource::PlaybackToCanvas().
   bool is_partial_raster = preamble.full_raster_rect != preamble.playback_rect;
   if (!preamble.requires_clear) {
-    ClearForOpaqueRaster(preamble, params);
+    ClearForOpaqueRaster(canvas, preamble, params);
   } else if (!is_partial_raster) {
     // If rastering the entire tile, clear to transparent pre-clip.  This is so
     // that any external texels outside of the playback rect also get cleared.
@@ -157,30 +148,30 @@
     // being reused from another tile, so the external texels could have been
     // cleared to some wrong value.
     DrawColorOp clear(SK_ColorTRANSPARENT, SkBlendMode::kSrc);
-    SerializeOp(&clear, nullptr, params);
+    SerializeOp(canvas, &clear, nullptr, params);
   }
 
   if (!preamble.full_raster_rect.OffsetFromOrigin().IsZero()) {
     TranslateOp translate_op(-preamble.full_raster_rect.x(),
                              -preamble.full_raster_rect.y());
-    SerializeOp(&translate_op, nullptr, params);
+    SerializeOp(canvas, &translate_op, nullptr, params);
   }
 
   if (!preamble.playback_rect.IsEmpty()) {
     ClipRectOp clip_op(gfx::RectToSkRect(preamble.playback_rect),
                        SkClipOp::kIntersect, false);
-    SerializeOp(&clip_op, nullptr, params);
+    SerializeOp(canvas, &clip_op, nullptr, params);
   }
 
   if (!preamble.post_translation.IsZero()) {
     TranslateOp translate_op(preamble.post_translation.x(),
                              preamble.post_translation.y());
-    SerializeOp(&translate_op, nullptr, params);
+    SerializeOp(canvas, &translate_op, nullptr, params);
   }
 
   if (preamble.post_scale.x() != 1.f || preamble.post_scale.y() != 1.f) {
     ScaleOp scale_op(preamble.post_scale.x(), preamble.post_scale.y());
-    SerializeOp(&scale_op, nullptr, params);
+    SerializeOp(canvas, &scale_op, nullptr, params);
   }
 
   // If tile is transparent and this is partial raster, just clear the
@@ -188,17 +179,18 @@
   // to write all the pixels inside of the full_raster_rect.
   if (preamble.requires_clear && is_partial_raster) {
     DrawColorOp clear_op(SK_ColorTRANSPARENT, SkBlendMode::kSrc);
-    SerializeOp(&clear_op, nullptr, params);
+    SerializeOp(canvas, &clear_op, nullptr, params);
   }
 }
 
 void PaintOpBufferSerializer::SerializeBuffer(
+    SkCanvas* canvas,
     const PaintOpBuffer* buffer,
     const std::vector<size_t>* offsets) {
   DCHECK(buffer);
   // This updates the original_ctm to reflect the canvas transformation at
   // start of this call to SerializeBuffer.
-  PlaybackParams params = MakeParams(text_blob_canvas_.get());
+  PlaybackParams params = MakeParams(canvas);
 
   for (PaintOpBuffer::PlaybackFoldingIterator iter(buffer, offsets); iter;
        ++iter) {
@@ -207,7 +199,7 @@
     // Skip ops outside the current clip if they have images. This saves
     // performing an unnecessary expensive decode.
     bool skip_op = PaintOp::OpHasDiscardableImages(op) &&
-                   PaintOp::QuickRejectDraw(op, text_blob_canvas_.get());
+                   PaintOp::QuickRejectDraw(op, canvas);
     // Skip text ops if there is no SkStrikeServer.
     skip_op |=
         op->GetType() == PaintOpType::DrawTextBlob && !options_.strike_server;
@@ -215,11 +207,11 @@
       continue;
 
     if (op->GetType() == PaintOpType::DrawRecord) {
-      int save_count = text_blob_canvas_->getSaveCount();
-      Save(params);
-      SerializeBuffer(static_cast<const DrawRecordOp*>(op)->record.get(),
-                      nullptr);
-      RestoreToCount(save_count, params);
+      int save_count = canvas->getSaveCount();
+      Save(canvas, params);
+      SerializeBuffer(
+          canvas, static_cast<const DrawRecordOp*>(op)->record.get(), nullptr);
+      RestoreToCount(canvas, save_count, params);
       continue;
     }
 
@@ -232,39 +224,40 @@
       if (!result || !result.paint_record())
         continue;
 
-      int save_count = text_blob_canvas_->getSaveCount();
-      Save(params);
+      int save_count = canvas->getSaveCount();
+      Save(canvas, params);
       // The following ops are copying the canvas's ops from
       // DrawImageRectOp::RasterWithFlags.
       SkM44 trans = SkM44(SkMatrix::RectToRect(draw_op->src, draw_op->dst));
       ConcatOp concat_op(trans);
-      bool success = SerializeOp(&concat_op, nullptr, params);
+      bool success = SerializeOp(canvas, &concat_op, nullptr, params);
       if (!success)
         return;
       ClipRectOp clip_rect_op(draw_op->src, SkClipOp::kIntersect, false);
-      success = SerializeOp(&clip_rect_op, nullptr, params);
+      success = SerializeOp(canvas, &clip_rect_op, nullptr, params);
       if (!success)
         return;
       // In DrawImageRectOp::RasterWithFlags, the save layer uses the
       // flags_to_serialize or default(null) flags. At this point in the
       // serialization, flags_to_serialize is always null as well.
       SaveLayerOp save_layer_op(&draw_op->src, nullptr);
-      success = SerializeOpWithFlags(&save_layer_op, params, 255);
+      success = SerializeOpWithFlags(canvas, &save_layer_op, params, 255);
       if (!success)
         return;
 
-      SerializeBuffer(result.paint_record(), nullptr);
-      RestoreToCount(save_count, params);
+      SerializeBuffer(canvas, result.paint_record(), nullptr);
+      RestoreToCount(canvas, save_count, params);
 
       continue;
     }
 
     bool success = false;
     if (op->IsPaintOpWithFlags()) {
-      success = SerializeOpWithFlags(static_cast<const PaintOpWithFlags*>(op),
-                                     params, iter.alpha());
+      success =
+          SerializeOpWithFlags(canvas, static_cast<const PaintOpWithFlags*>(op),
+                               params, iter.alpha());
     } else {
-      success = SerializeOp(op, nullptr, params);
+      success = SerializeOp(canvas, op, nullptr, params);
     }
 
     if (!success)
@@ -273,22 +266,24 @@
 }
 
 bool PaintOpBufferSerializer::SerializeOpWithFlags(
+    SkCanvas* canvas,
     const PaintOpWithFlags* flags_op,
     const PlaybackParams& params,
     uint8_t alpha) {
   // We use a null |image_provider| here because images are decoded during
   // serialization.
   const ScopedRasterFlags scoped_flags(&flags_op->flags, nullptr,
-                                       options_.canvas->getTotalMatrix(),
+                                       canvas->getTotalMatrix(),
                                        options_.max_texture_size, alpha);
   const PaintFlags* flags_to_serialize = scoped_flags.flags();
   if (!flags_to_serialize)
     return true;
 
-  return SerializeOp(flags_op, flags_to_serialize, params);
+  return SerializeOp(canvas, flags_op, flags_to_serialize, params);
 }
 
-bool PaintOpBufferSerializer::SerializeOp(const PaintOp* op,
+bool PaintOpBufferSerializer::SerializeOp(SkCanvas* canvas,
+                                          const PaintOp* op,
                                           const PaintFlags* flags_to_serialize,
                                           const PlaybackParams& params) {
   TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("cc.debug"),
@@ -299,10 +294,11 @@
 
   // Playback on analysis canvas first to make sure the canvas transform is set
   // correctly for analysis of records in filters.
-  PlaybackOnAnalysisCanvas(op, flags_to_serialize, params);
+  PlaybackOnAnalysisCanvas(canvas, op, flags_to_serialize, params);
 
   size_t bytes =
-      serialize_cb_.Run(op, options_, flags_to_serialize, params.original_ctm);
+      serialize_cb_.Run(op, options_, flags_to_serialize,
+                        canvas->getLocalToDevice(), params.original_ctm);
   if (!bytes) {
     valid_ = false;
     return false;
@@ -314,6 +310,7 @@
 }
 
 void PaintOpBufferSerializer::PlaybackOnAnalysisCanvas(
+    SkCanvas* canvas,
     const PaintOp* op,
     const PaintFlags* flags_to_serialize,
     const PlaybackParams& params) {
@@ -329,23 +326,24 @@
 
   if (op->IsPaintOpWithFlags() && flags_to_serialize) {
     static_cast<const PaintOpWithFlags*>(op)->RasterWithFlags(
-        text_blob_canvas_.get(), flags_to_serialize, params);
+        canvas, flags_to_serialize, params);
   } else {
-    op->Raster(text_blob_canvas_.get(), params);
+    op->Raster(canvas, params);
   }
 }
 
-void PaintOpBufferSerializer::Save(const PlaybackParams& params) {
+void PaintOpBufferSerializer::Save(SkCanvas* canvas,
+                                   const PlaybackParams& params) {
   SaveOp save_op;
-  SerializeOp(&save_op, nullptr, params);
+  SerializeOp(canvas, &save_op, nullptr, params);
 }
 
-void PaintOpBufferSerializer::RestoreToCount(
-    int count,
-    const PlaybackParams& params) {
+void PaintOpBufferSerializer::RestoreToCount(SkCanvas* canvas,
+                                             int count,
+                                             const PlaybackParams& params) {
   RestoreOp restore_op;
-  while (text_blob_canvas_->getSaveCount() > count) {
-    if (!SerializeOp(&restore_op, nullptr, params))
+  while (canvas->getSaveCount() > count) {
+    if (!SerializeOp(canvas, &restore_op, nullptr, params))
       return;
   }
 }
@@ -367,13 +365,14 @@
     const PaintOp* op,
     const PaintOp::SerializeOptions& options,
     const PaintFlags* flags_to_serialize,
+    const SkM44& current_ctm,
     const SkM44& original_ctm) {
   if (written_ == total_)
     return 0u;
 
   size_t bytes =
       op->Serialize(static_cast<char*>(memory_) + written_, total_ - written_,
-                    options, flags_to_serialize, original_ctm);
+                    options, flags_to_serialize, current_ctm, original_ctm);
   if (!bytes)
     return 0u;
 
diff --git a/cc/paint/paint_op_buffer_serializer.h b/cc/paint/paint_op_buffer_serializer.h
index 9cc5ff5..ebd69c1 100644
--- a/cc/paint/paint_op_buffer_serializer.h
+++ b/cc/paint/paint_op_buffer_serializer.h
@@ -21,6 +21,7 @@
       base::RepeatingCallback<size_t(const PaintOp*,
                                      const PaintOp::SerializeOptions&,
                                      const PaintFlags*,
+                                     const SkM44&,
                                      const SkM44&)>;
 
   PaintOpBufferSerializer(SerializeCallback serialize_cb,
@@ -75,30 +76,33 @@
   bool valid() const { return valid_; }
 
  private:
-  void SerializePreamble(const Preamble& preamble,
+  void SerializePreamble(SkCanvas* canvas,
+                         const Preamble& preamble,
                          const PlaybackParams& params);
-  void SerializeBuffer(const PaintOpBuffer* buffer,
+  void SerializeBuffer(SkCanvas* canvas,
+                       const PaintOpBuffer* buffer,
                        const std::vector<size_t>* offsets);
-  bool SerializeOpWithFlags(const PaintOpWithFlags* flags_op,
+  bool SerializeOpWithFlags(SkCanvas* canvas,
+                            const PaintOpWithFlags* flags_op,
                             const PlaybackParams& params,
                             uint8_t alpha);
-  bool SerializeOp(const PaintOp* op,
+  bool SerializeOp(SkCanvas* canvas,
+                   const PaintOp* op,
                    const PaintFlags* flags_to_serialize,
                    const PlaybackParams& params);
-  void Save(const PlaybackParams& params);
-  void RestoreToCount(int count,
+  void Save(SkCanvas* canvas, const PlaybackParams& params);
+  void RestoreToCount(SkCanvas* canvas,
+                      int count,
                       const PlaybackParams& params);
-  void ClearForOpaqueRaster(const Preamble& preamble,
+  void ClearForOpaqueRaster(SkCanvas* canvas,
+                            const Preamble& preamble,
                             const PlaybackParams& params);
-  void PlaybackOnAnalysisCanvas(const PaintOp* op,
+  void PlaybackOnAnalysisCanvas(SkCanvas* canvas,
+                                const PaintOp* op,
                                 const PaintFlags* flags_to_serialize,
                                 const PlaybackParams& params);
 
   SerializeCallback serialize_cb_;
-
-  // This maintains the ownership of options_.canvas
-  std::unique_ptr<SkNoDrawCanvas> text_blob_canvas_;
-
   PaintOp::SerializeOptions options_;
 
   bool valid_ = true;
@@ -118,6 +122,7 @@
   size_t SerializeToMemory(const PaintOp* op,
                            const PaintOp::SerializeOptions& options,
                            const PaintFlags* flags_to_serialize,
+                           const SkM44& current_ctm,
                            const SkM44& original_ctm);
 
   void* memory_;
diff --git a/cc/paint/paint_op_buffer_unittest.cc b/cc/paint/paint_op_buffer_unittest.cc
index ce62ba9..7d477e5 100644
--- a/cc/paint/paint_op_buffer_unittest.cc
+++ b/cc/paint/paint_op_buffer_unittest.cc
@@ -1279,7 +1279,7 @@
     for (const auto* op : PaintOpBuffer::Iterator(&buffer)) {
       size_t bytes_written = op->Serialize(
           current_, remaining_, options_provider_.serialize_options(), nullptr,
-          SkM44());
+          SkM44(), SkM44());
       if (!bytes_written)
         return;
 
@@ -1882,7 +1882,7 @@
       options_provider.ClearPaintCache();
       size_t written_bytes = iter->Serialize(
           output_.get(), i, options_provider.serialize_options(), nullptr,
-          SkM44());
+          SkM44(), SkM44());
       if (i >= expected_bytes) {
         EXPECT_EQ(expected_bytes, written_bytes) << "i: " << i;
       } else {
@@ -2002,9 +2002,9 @@
       static_cast<char*>(
           base::AlignedAlloc(deserialized_size, PaintOpBuffer::PaintOpAlign)));
   for (const auto* op : PaintOpBuffer::Iterator(&buffer_)) {
-    size_t bytes_written =
-        op->Serialize(output_.get(), output_size_,
-                      options_provider.serialize_options(), nullptr, SkM44());
+    size_t bytes_written = op->Serialize(output_.get(), output_size_,
+                                         options_provider.serialize_options(),
+                                         nullptr, SkM44(), SkM44());
     size_t bytes_read = 0u;
     PaintOp* written = PaintOp::Deserialize(
         output_.get(), bytes_written, deserialized.get(), deserialized_size,
@@ -2018,7 +2018,7 @@
     override_flags.setAlpha(override_flags.getAlpha() * 0.5);
     bytes_written = op->Serialize(output_.get(), output_size_,
                                   options_provider.serialize_options(),
-                                  &override_flags, SkM44());
+                                  &override_flags, SkM44(), SkM44());
     written = PaintOp::Deserialize(
         output_.get(), bytes_written, deserialized.get(), deserialized_size,
         &bytes_read, options_provider.deserialize_options());
@@ -2407,7 +2407,7 @@
   TestOptionsProvider options_provider;
   size_t bytes_written =
       op->Serialize(input_.get(), kSize, options_provider.serialize_options(),
-                    nullptr, SkM44());
+                    nullptr, SkM44(), SkM44());
   ASSERT_GT(bytes_written, 0u);
 
   // can deserialize from exactly the right size
@@ -2478,9 +2478,9 @@
   int op_idx = 0;
   for (PaintOpBuffer::Iterator iter(&buffer); iter; ++iter) {
     const PaintOp* op = *iter;
-    size_t bytes_written =
-        op->Serialize(serialized.get(), buffer_size,
-                      options_provider.serialize_options(), nullptr, SkM44());
+    size_t bytes_written = op->Serialize(serialized.get(), buffer_size,
+                                         options_provider.serialize_options(),
+                                         nullptr, SkM44(), SkM44());
     ASSERT_GT(bytes_written, 0u);
     size_t bytes_read = 0;
     PaintOp* written = PaintOp::Deserialize(
@@ -2559,9 +2559,9 @@
   int op_idx = 0;
   for (PaintOpBuffer::Iterator iter(&buffer); iter; ++iter) {
     const PaintOp* op = *iter;
-    size_t bytes_written =
-        op->Serialize(serialized.get(), buffer_size,
-                      options_provider.serialize_options(), nullptr, SkM44());
+    size_t bytes_written = op->Serialize(serialized.get(), buffer_size,
+                                         options_provider.serialize_options(),
+                                         nullptr, SkM44(), SkM44());
     ASSERT_GT(bytes_written, 0u);
     size_t bytes_read = 0;
     PaintOp* written = PaintOp::Deserialize(
@@ -2620,9 +2620,9 @@
   int op_idx = 0;
   for (PaintOpBuffer::Iterator iter(&buffer); iter; ++iter) {
     const PaintOp* op = *iter;
-    size_t bytes_written =
-        op->Serialize(serialized.get(), buffer_size,
-                      options_provider.serialize_options(), nullptr, SkM44());
+    size_t bytes_written = op->Serialize(serialized.get(), buffer_size,
+                                         options_provider.serialize_options(),
+                                         nullptr, SkM44(), SkM44());
     ASSERT_GT(bytes_written, 0u);
     size_t bytes_read = 0;
     PaintOp* written = PaintOp::Deserialize(
@@ -3326,7 +3326,7 @@
 
     PaintOpWriter writer(memory.data(), memory.size(),
                          options_provider.serialize_options(), GetParam());
-    writer.Write(filter.get());
+    writer.Write(filter.get(), SkM44());
     ASSERT_GT(writer.size(), 0u) << PaintFilter::TypeToString(filter->type());
 
     sk_sp<PaintFilter> deserialized_filter;
@@ -3528,7 +3528,7 @@
   PaintOpWriter writer(memory.get(), PaintOpBuffer::kInitialBufferSize,
                        options_provider.serialize_options(),
                        enable_security_constraints);
-  writer.Write(filter.get());
+  writer.Write(filter.get(), SkM44());
 
   sk_sp<PaintFilter> out_filter;
   PaintOpReader reader(memory.get(), writer.size(),
diff --git a/cc/paint/paint_op_writer.cc b/cc/paint/paint_op_writer.cc
index eea159e..ee02e897 100644
--- a/cc/paint/paint_op_writer.cc
+++ b/cc/paint/paint_op_writer.cc
@@ -206,7 +206,7 @@
   remaining_bytes_ -= bytes_written;
 }
 
-void PaintOpWriter::Write(const PaintFlags& flags) {
+void PaintOpWriter::Write(const PaintFlags& flags, const SkM44& current_ctm) {
   WriteSimple(flags.color_);
   Write(flags.width_);
   Write(flags.miter_limit_);
@@ -222,8 +222,8 @@
   else
     WriteFlattenable(flags.draw_looper_.get());
 
-  Write(flags.image_filter_.get());
-  Write(flags.shader_.get(), flags.getFilterQuality());
+  Write(flags.image_filter_.get(), current_ctm);
+  Write(flags.shader_.get(), flags.getFilterQuality(), current_ctm);
 }
 
 void PaintOpWriter::Write(const DrawImage& draw_image,
@@ -422,6 +422,7 @@
 sk_sp<PaintShader> PaintOpWriter::TransformShaderIfNecessary(
     const PaintShader* original,
     SkFilterQuality quality,
+    const SkM44& current_ctm,
     uint32_t* paint_image_transfer_cache_entry_id,
     gfx::SizeF* paint_record_post_scale,
     bool* paint_image_needs_mips,
@@ -429,7 +430,7 @@
   DCHECK(!enable_security_constraints_);
 
   const auto type = original->shader_type();
-  const auto& ctm = options_.canvas->getTotalMatrix();
+  const auto& ctm = current_ctm.asM33();
 
   if (type == PaintShader::Type::kImage) {
     if (!original->paint_image().IsPaintWorklet()) {
@@ -464,7 +465,9 @@
   WriteSimple(matrix);
 }
 
-void PaintOpWriter::Write(const PaintShader* shader, SkFilterQuality quality) {
+void PaintOpWriter::Write(const PaintShader* shader,
+                          SkFilterQuality quality,
+                          const SkM44& current_ctm) {
   sk_sp<PaintShader> transformed_shader;
   uint32_t paint_image_transfer_cache_id = kInvalidImageTransferCacheEntryId;
   gfx::SizeF paint_record_post_scale(1.f, 1.f);
@@ -473,7 +476,7 @@
 
   if (!enable_security_constraints_ && shader) {
     transformed_shader = TransformShaderIfNecessary(
-        shader, quality, &paint_image_transfer_cache_id,
+        shader, quality, current_ctm, &paint_image_transfer_cache_id,
         &paint_record_post_scale, &paint_image_needs_mips, &mailbox);
     shader = transformed_shader.get();
   }
@@ -590,7 +593,7 @@
   remaining_bytes_ -= padding;
 }
 
-void PaintOpWriter::Write(const PaintFilter* filter) {
+void PaintOpWriter::Write(const PaintFilter* filter, const SkM44& current_ctm) {
   if (!filter) {
     WriteEnum(PaintFilter::Type::kNullFilter);
     return;
@@ -611,131 +614,144 @@
       NOTREACHED();
       break;
     case PaintFilter::Type::kColorFilter:
-      Write(static_cast<const ColorFilterPaintFilter&>(*filter));
+      Write(static_cast<const ColorFilterPaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kBlur:
-      Write(static_cast<const BlurPaintFilter&>(*filter));
+      Write(static_cast<const BlurPaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kDropShadow:
-      Write(static_cast<const DropShadowPaintFilter&>(*filter));
+      Write(static_cast<const DropShadowPaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kMagnifier:
-      Write(static_cast<const MagnifierPaintFilter&>(*filter));
+      Write(static_cast<const MagnifierPaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kCompose:
-      Write(static_cast<const ComposePaintFilter&>(*filter));
+      Write(static_cast<const ComposePaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kAlphaThreshold:
-      Write(static_cast<const AlphaThresholdPaintFilter&>(*filter));
+      Write(static_cast<const AlphaThresholdPaintFilter&>(*filter),
+            current_ctm);
       break;
     case PaintFilter::Type::kXfermode:
-      Write(static_cast<const XfermodePaintFilter&>(*filter));
+      Write(static_cast<const XfermodePaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kArithmetic:
-      Write(static_cast<const ArithmeticPaintFilter&>(*filter));
+      Write(static_cast<const ArithmeticPaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kMatrixConvolution:
-      Write(static_cast<const MatrixConvolutionPaintFilter&>(*filter));
+      Write(static_cast<const MatrixConvolutionPaintFilter&>(*filter),
+            current_ctm);
       break;
     case PaintFilter::Type::kDisplacementMapEffect:
-      Write(static_cast<const DisplacementMapEffectPaintFilter&>(*filter));
+      Write(static_cast<const DisplacementMapEffectPaintFilter&>(*filter),
+            current_ctm);
       break;
     case PaintFilter::Type::kImage:
-      Write(static_cast<const ImagePaintFilter&>(*filter));
+      Write(static_cast<const ImagePaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kPaintRecord:
-      Write(static_cast<const RecordPaintFilter&>(*filter));
+      Write(static_cast<const RecordPaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kMerge:
-      Write(static_cast<const MergePaintFilter&>(*filter));
+      Write(static_cast<const MergePaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kMorphology:
-      Write(static_cast<const MorphologyPaintFilter&>(*filter));
+      Write(static_cast<const MorphologyPaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kOffset:
-      Write(static_cast<const OffsetPaintFilter&>(*filter));
+      Write(static_cast<const OffsetPaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kTile:
-      Write(static_cast<const TilePaintFilter&>(*filter));
+      Write(static_cast<const TilePaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kTurbulence:
-      Write(static_cast<const TurbulencePaintFilter&>(*filter));
+      Write(static_cast<const TurbulencePaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kPaintFlags:
-      Write(static_cast<const PaintFlagsPaintFilter&>(*filter));
+      Write(static_cast<const PaintFlagsPaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kMatrix:
-      Write(static_cast<const MatrixPaintFilter&>(*filter));
+      Write(static_cast<const MatrixPaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kLightingDistant:
-      Write(static_cast<const LightingDistantPaintFilter&>(*filter));
+      Write(static_cast<const LightingDistantPaintFilter&>(*filter),
+            current_ctm);
       break;
     case PaintFilter::Type::kLightingPoint:
-      Write(static_cast<const LightingPointPaintFilter&>(*filter));
+      Write(static_cast<const LightingPointPaintFilter&>(*filter), current_ctm);
       break;
     case PaintFilter::Type::kLightingSpot:
-      Write(static_cast<const LightingSpotPaintFilter&>(*filter));
+      Write(static_cast<const LightingSpotPaintFilter&>(*filter), current_ctm);
       break;
   }
 }
 
-void PaintOpWriter::Write(const ColorFilterPaintFilter& filter) {
+void PaintOpWriter::Write(const ColorFilterPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteFlattenable(filter.color_filter().get());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const BlurPaintFilter& filter) {
+void PaintOpWriter::Write(const BlurPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteSimple(filter.sigma_x());
   WriteSimple(filter.sigma_y());
   Write(filter.tile_mode());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const DropShadowPaintFilter& filter) {
+void PaintOpWriter::Write(const DropShadowPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteSimple(filter.dx());
   WriteSimple(filter.dy());
   WriteSimple(filter.sigma_x());
   WriteSimple(filter.sigma_y());
   WriteSimple(filter.color());
   WriteEnum(filter.shadow_mode());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const MagnifierPaintFilter& filter) {
+void PaintOpWriter::Write(const MagnifierPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteSimple(filter.src_rect());
   WriteSimple(filter.inset());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const ComposePaintFilter& filter) {
-  Write(filter.outer().get());
-  Write(filter.inner().get());
+void PaintOpWriter::Write(const ComposePaintFilter& filter,
+                          const SkM44& current_ctm) {
+  Write(filter.outer().get(), current_ctm);
+  Write(filter.inner().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const AlphaThresholdPaintFilter& filter) {
+void PaintOpWriter::Write(const AlphaThresholdPaintFilter& filter,
+                          const SkM44& current_ctm) {
   Write(filter.region());
   WriteSimple(filter.inner_min());
   WriteSimple(filter.outer_max());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const XfermodePaintFilter& filter) {
+void PaintOpWriter::Write(const XfermodePaintFilter& filter,
+                          const SkM44& current_ctm) {
   Write(filter.blend_mode());
-  Write(filter.background().get());
-  Write(filter.foreground().get());
+  Write(filter.background().get(), current_ctm);
+  Write(filter.foreground().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const ArithmeticPaintFilter& filter) {
+void PaintOpWriter::Write(const ArithmeticPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteSimple(filter.k1());
   WriteSimple(filter.k2());
   WriteSimple(filter.k3());
   WriteSimple(filter.k4());
   WriteSimple(filter.enforce_pm_color());
-  Write(filter.background().get());
-  Write(filter.foreground().get());
+  Write(filter.background().get(), current_ctm);
+  Write(filter.foreground().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const MatrixConvolutionPaintFilter& filter) {
+void PaintOpWriter::Write(const MatrixConvolutionPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteSimple(filter.kernel_size());
   auto size = static_cast<size_t>(
       sk_64_mul(filter.kernel_size().width(), filter.kernel_size().height()));
@@ -746,18 +762,20 @@
   WriteSimple(filter.kernel_offset());
   Write(filter.tile_mode());
   WriteSimple(filter.convolve_alpha());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const DisplacementMapEffectPaintFilter& filter) {
+void PaintOpWriter::Write(const DisplacementMapEffectPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteEnum(filter.channel_x());
   WriteEnum(filter.channel_y());
   WriteSimple(filter.scale());
-  Write(filter.displacement().get());
-  Write(filter.color().get());
+  Write(filter.displacement().get(), current_ctm);
+  Write(filter.color().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const ImagePaintFilter& filter) {
+void PaintOpWriter::Write(const ImagePaintFilter& filter,
+                          const SkM44& current_ctm) {
   DrawImage draw_image(
       filter.image(), false,
       SkIRect::MakeWH(filter.image().width(), filter.image().height()),
@@ -772,52 +790,53 @@
   Write(filter.filter_quality());
 }
 
-void PaintOpWriter::Write(const RecordPaintFilter& filter) {
+void PaintOpWriter::Write(const RecordPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteSimple(filter.record_bounds());
-  if (!options_.canvas) {
-    Write(filter.record().get(), gfx::Rect(), gfx::SizeF(1.f, 1.f),
-          SkMatrix::I());
-    return;
-  }
 
   // The logic here to only use the scale component of the matrix during
   // analysis is for consistency with the rasterization of the filter later in
   // pipeline in skia. For every draw with a filter, SkCanvas creates a layer
   // for the draw and modifies the scale for these filters.
   // See SkCanvas::internalSaveLayer.
-  SkMatrix mat = options_.canvas->getTotalMatrix();
+  SkMatrix mat = current_ctm.asM33();
   SkSize scale;
   if (!mat.isScaleTranslate() && mat.decomposeScale(&scale))
     mat = SkMatrix::Scale(scale.width(), scale.height());
   Write(filter.record().get(), gfx::Rect(), gfx::SizeF(1.f, 1.f), mat);
 }
 
-void PaintOpWriter::Write(const MergePaintFilter& filter) {
+void PaintOpWriter::Write(const MergePaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteSize(filter.input_count());
   for (size_t i = 0; i < filter.input_count(); ++i)
-    Write(filter.input_at(i));
+    Write(filter.input_at(i), current_ctm);
 }
 
-void PaintOpWriter::Write(const MorphologyPaintFilter& filter) {
+void PaintOpWriter::Write(const MorphologyPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteEnum(filter.morph_type());
   WriteSimple(filter.radius_x());
   WriteSimple(filter.radius_y());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const OffsetPaintFilter& filter) {
+void PaintOpWriter::Write(const OffsetPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteSimple(filter.dx());
   WriteSimple(filter.dy());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const TilePaintFilter& filter) {
+void PaintOpWriter::Write(const TilePaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteSimple(filter.src());
   WriteSimple(filter.dst());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const TurbulencePaintFilter& filter) {
+void PaintOpWriter::Write(const TurbulencePaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteEnum(filter.turbulence_type());
   WriteSimple(filter.base_frequency_x());
   WriteSimple(filter.base_frequency_y());
@@ -826,37 +845,42 @@
   WriteSimple(filter.tile_size());
 }
 
-void PaintOpWriter::Write(const PaintFlagsPaintFilter& filter) {
-  Write(filter.flags());
+void PaintOpWriter::Write(const PaintFlagsPaintFilter& filter,
+                          const SkM44& current_ctm) {
+  Write(filter.flags(), current_ctm);
 }
 
-void PaintOpWriter::Write(const MatrixPaintFilter& filter) {
+void PaintOpWriter::Write(const MatrixPaintFilter& filter,
+                          const SkM44& current_ctm) {
   Write(filter.matrix());
   Write(filter.filter_quality());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const LightingDistantPaintFilter& filter) {
+void PaintOpWriter::Write(const LightingDistantPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteEnum(filter.lighting_type());
   WriteSimple(filter.direction());
   WriteSimple(filter.light_color());
   WriteSimple(filter.surface_scale());
   WriteSimple(filter.kconstant());
   WriteSimple(filter.shininess());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const LightingPointPaintFilter& filter) {
+void PaintOpWriter::Write(const LightingPointPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteEnum(filter.lighting_type());
   WriteSimple(filter.location());
   WriteSimple(filter.light_color());
   WriteSimple(filter.surface_scale());
   WriteSimple(filter.kconstant());
   WriteSimple(filter.shininess());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
-void PaintOpWriter::Write(const LightingSpotPaintFilter& filter) {
+void PaintOpWriter::Write(const LightingSpotPaintFilter& filter,
+                          const SkM44& current_ctm) {
   WriteEnum(filter.lighting_type());
   WriteSimple(filter.location());
   WriteSimple(filter.target());
@@ -866,7 +890,7 @@
   WriteSimple(filter.surface_scale());
   WriteSimple(filter.kconstant());
   WriteSimple(filter.shininess());
-  Write(filter.input().get());
+  Write(filter.input().get(), current_ctm);
 }
 
 void PaintOpWriter::Write(const PaintRecord* record,
@@ -897,7 +921,7 @@
   // analysis canvas.
   PaintOp::SerializeOptions lcd_disabled_options(
       options_.image_provider, options_.transfer_cache, options_.paint_cache,
-      /*canvas=*/nullptr, options_.strike_server, options_.color_space,
+      options_.strike_server, options_.color_space,
       /*can_use_lcd_text=*/false, options_.context_supports_distance_field_text,
       options_.max_texture_size);
   SimpleBufferSerializer serializer(memory_, remaining_bytes_,
diff --git a/cc/paint/paint_op_writer.h b/cc/paint/paint_op_writer.h
index 682ba1c..30d9b36 100644
--- a/cc/paint/paint_op_writer.h
+++ b/cc/paint/paint_op_writer.h
@@ -63,18 +63,25 @@
   void Write(const SkRRect& rect);
 
   void Write(const SkPath& path);
-  void Write(const PaintFlags& flags);
   void Write(const sk_sp<SkData>& data);
   void Write(const SkColorSpace* data);
   void Write(const SkSamplingOptions&);
-  void Write(const PaintShader* shader, SkFilterQuality quality);
-  void Write(const PaintFilter* filter);
   void Write(const sk_sp<SkTextBlob>& blob);
   void Write(SkYUVColorSpace yuv_color_space);
   void Write(SkYUVAInfo::PlaneConfig plane_config);
   void Write(SkYUVAInfo::Subsampling subsampling);
   void Write(const gpu::Mailbox& mailbox);
 
+  // Shaders and filters need to know the current transform in order to lock in
+  // the scale factor they will be evaluated at after deserialization. This is
+  // critical to ensure that nested PaintRecords are analyzed and rasterized
+  // identically when text is involved.
+  void Write(const PaintFlags& flags, const SkM44& current_ctm);
+  void Write(const PaintShader* shader,
+             SkFilterQuality quality,
+             const SkM44& current_ctm);
+  void Write(const PaintFilter* filter, const SkM44& current_ctm);
+
   void Write(SkClipOp op) { WriteEnum(op); }
   void Write(PaintCanvas::AnnotationType type) { WriteEnum(type); }
   void Write(SkCanvas::SrcRectConstraint constraint) { WriteEnum(constraint); }
@@ -131,28 +138,31 @@
 
   // The main entry point is Write(const PaintFilter* filter) which casts the
   // filter and calls one of the following functions.
-  void Write(const ColorFilterPaintFilter& filter);
-  void Write(const BlurPaintFilter& filter);
-  void Write(const DropShadowPaintFilter& filter);
-  void Write(const MagnifierPaintFilter& filter);
-  void Write(const ComposePaintFilter& filter);
-  void Write(const AlphaThresholdPaintFilter& filter);
-  void Write(const XfermodePaintFilter& filter);
-  void Write(const ArithmeticPaintFilter& filter);
-  void Write(const MatrixConvolutionPaintFilter& filter);
-  void Write(const DisplacementMapEffectPaintFilter& filter);
-  void Write(const ImagePaintFilter& filter);
-  void Write(const RecordPaintFilter& filter);
-  void Write(const MergePaintFilter& filter);
-  void Write(const MorphologyPaintFilter& filter);
-  void Write(const OffsetPaintFilter& filter);
-  void Write(const TilePaintFilter& filter);
-  void Write(const TurbulencePaintFilter& filter);
-  void Write(const PaintFlagsPaintFilter& filter);
-  void Write(const MatrixPaintFilter& filter);
-  void Write(const LightingDistantPaintFilter& filter);
-  void Write(const LightingPointPaintFilter& filter);
-  void Write(const LightingSpotPaintFilter& filter);
+  void Write(const ColorFilterPaintFilter& filter, const SkM44& current_ctm);
+  void Write(const BlurPaintFilter& filter, const SkM44& current_ctm);
+  void Write(const DropShadowPaintFilter& filter, const SkM44& current_ctm);
+  void Write(const MagnifierPaintFilter& filter, const SkM44& current_ctm);
+  void Write(const ComposePaintFilter& filter, const SkM44& current_ctm);
+  void Write(const AlphaThresholdPaintFilter& filter, const SkM44& current_ctm);
+  void Write(const XfermodePaintFilter& filter, const SkM44& current_ctm);
+  void Write(const ArithmeticPaintFilter& filter, const SkM44& current_ctm);
+  void Write(const MatrixConvolutionPaintFilter& filter,
+             const SkM44& current_ctm);
+  void Write(const DisplacementMapEffectPaintFilter& filter,
+             const SkM44& current_ctm);
+  void Write(const ImagePaintFilter& filter, const SkM44& current_ctm);
+  void Write(const RecordPaintFilter& filter, const SkM44& current_ctm);
+  void Write(const MergePaintFilter& filter, const SkM44& current_ctm);
+  void Write(const MorphologyPaintFilter& filter, const SkM44& current_ctm);
+  void Write(const OffsetPaintFilter& filter, const SkM44& current_ctm);
+  void Write(const TilePaintFilter& filter, const SkM44& current_ctm);
+  void Write(const TurbulencePaintFilter& filter, const SkM44& current_ctm);
+  void Write(const PaintFlagsPaintFilter& filter, const SkM44& current_ctm);
+  void Write(const MatrixPaintFilter& filter, const SkM44& current_ctm);
+  void Write(const LightingDistantPaintFilter& filter,
+             const SkM44& current_ctm);
+  void Write(const LightingPointPaintFilter& filter, const SkM44& current_ctm);
+  void Write(const LightingSpotPaintFilter& filter, const SkM44& current_ctm);
 
   void Write(const PaintRecord* record,
              const gfx::Rect& playback_rect,
@@ -167,6 +177,7 @@
   sk_sp<PaintShader> TransformShaderIfNecessary(
       const PaintShader* original,
       SkFilterQuality quality,
+      const SkM44& current_ctm,
       uint32_t* paint_image_transfer_cache_entry_id,
       gfx::SizeF* paint_record_post_scale,
       bool* paint_image_needs_mips,
diff --git a/cc/test/test_options_provider.cc b/cc/test/test_options_provider.cc
index 6a2c3611..d9f07cd 100644
--- a/cc/test/test_options_provider.cc
+++ b/cc/test/test_options_provider.cc
@@ -41,7 +41,6 @@
       serialize_options_(this,
                          this,
                          &client_paint_cache_,
-                         &canvas_,
                          &strike_server_,
                          color_space_,
                          can_use_lcd_text_,
diff --git a/cc/test/test_options_provider.h b/cc/test/test_options_provider.h
index 2b431f2..3031296 100644
--- a/cc/test/test_options_provider.h
+++ b/cc/test/test_options_provider.h
@@ -58,7 +58,6 @@
   ImageProvider::ScopedResult GetRasterContent(
       const DrawImage& draw_image) override;
 
-  testing::StrictMock<MockCanvas> canvas_;
   std::vector<DrawImage> decoded_images_;
 
   sk_sp<DiscardableManager> discardable_manager_;
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni
index e6c1302de..6b4dd14 100644
--- a/chrome/android/chrome_test_java_sources.gni
+++ b/chrome/android/chrome_test_java_sources.gni
@@ -354,7 +354,6 @@
   "javatests/src/org/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandlerTest.java",
   "javatests/src/org/chromium/chrome/browser/page_info/ConnectionInfoViewTest.java",
   "javatests/src/org/chromium/chrome/browser/page_info/CookieControlsViewTest.java",
-  "javatests/src/org/chromium/chrome/browser/page_info/PageInfoControllerTest.java",
   "javatests/src/org/chromium/chrome/browser/page_info/PageInfoDiscoverabilityTest.java",
   "javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewDarkModeTest.java",
   "javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewTest.java",
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantDrawable.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantDrawable.java
index 9871188b..3865867 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantDrawable.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantDrawable.java
@@ -80,7 +80,7 @@
 
     @CalledByNative
     public static AssistantDrawable createFromFavicon(
-            String url, int diameterSizeInPixel, boolean forceMonogram) {
+            GURL url, int diameterSizeInPixel, boolean forceMonogram) {
         return new AssistantFaviconDrawable(url, diameterSizeInPixel, forceMonogram);
     }
 
@@ -231,11 +231,11 @@
     }
 
     private static class AssistantFaviconDrawable extends AssistantDrawable {
-        private final String mUrl;
+        private final GURL mUrl;
         private final int mDiameterSizeInPixel;
         private final Boolean mForceMonogram;
 
-        AssistantFaviconDrawable(String url, int diameterSizeInPixel, boolean forceMonogram) {
+        AssistantFaviconDrawable(GURL url, int diameterSizeInPixel, boolean forceMonogram) {
             mUrl = url;
             mDiameterSizeInPixel = diameterSizeInPixel;
             mForceMonogram = forceMonogram;
@@ -245,7 +245,7 @@
         public void getDrawable(Context context, Callback<Drawable> callback) {
             final LargeIconBridge iconBridge =
                     new LargeIconBridge(AutofillAssistantUiController.getProfile());
-            iconBridge.getLargeIconForUrl(new GURL(mUrl), mDiameterSizeInPixel,
+            iconBridge.getLargeIconForUrl(mUrl, mDiameterSizeInPixel,
                     (Bitmap icon, int fallbackColor, boolean isFallbackColorDefault,
                             int iconType) -> {
                         float fontSize = mDiameterSizeInPixel * 7f / 10f;
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataIntegrationTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataIntegrationTest.java
index f71f813..775643c 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataIntegrationTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataIntegrationTest.java
@@ -81,6 +81,7 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.ProcessedActionStatusProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto.Choice;
+import org.chromium.chrome.browser.autofill_assistant.proto.RequiredFieldProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SelectorProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ShowCastProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ShowDetailsProto;
@@ -90,7 +91,6 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.TextInputProto.InputType;
 import org.chromium.chrome.browser.autofill_assistant.proto.TextInputSectionProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.UseCreditCardProto;
-import org.chromium.chrome.browser.autofill_assistant.proto.UseCreditCardProto.RequiredField;
 import org.chromium.chrome.browser.autofill_assistant.proto.UserFormSectionProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ValueProto;
 import org.chromium.chrome.browser.customtabs.CustomTabActivityTestRule;
@@ -158,8 +158,8 @@
                                                             TermsAndConditionsState.ACCEPTED))
                         .build());
 
-        RequiredField fallbackTextField =
-                (RequiredField) RequiredField.newBuilder()
+        RequiredFieldProto fallbackTextField =
+                RequiredFieldProto.newBuilder()
                         .setForced(true) // Make sure we do actual work.
                         .setValueExpression("${57}")
                         .setElement(SelectorProto.newBuilder().addFilters(
@@ -167,8 +167,8 @@
                                         "#fallback_entry")))
                         .setFillStrategy(KeyboardValueFillStrategy.SIMULATE_KEY_PRESSES)
                         .build();
-        RequiredField fallbackDropdownField =
-                (RequiredField) RequiredField.newBuilder()
+        RequiredFieldProto fallbackDropdownField =
+                RequiredFieldProto.newBuilder()
                         .setForced(true) // Make sure we do actual work.
                         .setValueExpression("${-2}")
                         .setElement(SelectorProto.newBuilder().addFilters(
@@ -176,8 +176,8 @@
                                         "#fallback_dropdown")))
                         .setSelectStrategy(DropdownSelectStrategy.VALUE_MATCH)
                         .build();
-        RequiredField fallbackJsDropdownField =
-                (RequiredField) RequiredField.newBuilder()
+        RequiredFieldProto fallbackJsDropdownField =
+                RequiredFieldProto.newBuilder()
                         .setValueExpression("${55}")
                         .setElement(SelectorProto.newBuilder().addFilters(
                                 SelectorProto.Filter.newBuilder().setCssSelector(
@@ -261,8 +261,8 @@
                                                             TermsAndConditionsState.ACCEPTED))
                         .build());
 
-        RequiredField fallbackTextField =
-                (RequiredField) RequiredField.newBuilder()
+        RequiredFieldProto fallbackTextField =
+                RequiredFieldProto.newBuilder()
                         .setForced(true) // Make sure we fail here while trying to fill the field.
                         .setValueExpression("${-99}") // Use non-existent key to force an error.
                         .setElement(SelectorProto.newBuilder().addFilters(
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPersonalDataManagerTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPersonalDataManagerTest.java
index 35905f5a..83904fe 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPersonalDataManagerTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPersonalDataManagerTest.java
@@ -65,11 +65,11 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.CollectUserDataProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ContactDetailsProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto;
+import org.chromium.chrome.browser.autofill_assistant.proto.RequiredFieldProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SelectorProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto.PresentationProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.UseAddressProto;
-import org.chromium.chrome.browser.autofill_assistant.proto.UseAddressProto.RequiredField;
 import org.chromium.chrome.browser.customtabs.CustomTabActivityTestRule;
 import org.chromium.chrome.browser.customtabs.CustomTabsTestUtils;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
@@ -134,14 +134,14 @@
                                                 SelectorProto.Filter.newBuilder().setCssSelector(
                                                         "#profile_name")))
                                         .addRequiredFields(
-                                                RequiredField.newBuilder()
+                                                RequiredFieldProto.newBuilder()
                                                         .setValueExpression("7")
                                                         .setElement(SelectorProto.newBuilder().addFilters(
                                                                 SelectorProto.Filter.newBuilder()
                                                                         .setCssSelector(
                                                                                 "#profile_name"))))
                                         .addRequiredFields(
-                                                RequiredField.newBuilder()
+                                                RequiredFieldProto.newBuilder()
                                                         .setValueExpression("9")
                                                         .setElement(
                                                                 SelectorProto.newBuilder().addFilters(
diff --git a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/helper/FaviconHelper.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/helper/FaviconHelper.java
index 3bcdd621..3b37c0d7 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/helper/FaviconHelper.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/helper/FaviconHelper.java
@@ -75,8 +75,8 @@
         if (!gurlOrigin.isValid()) return;
         mIconBridge.getLargeIconForUrl(gurlOrigin, mDesiredSize,
                 (icon, fallbackColor, isFallbackColorDefault, iconType) -> {
-                    Drawable drawable = FaviconUtils.getIconDrawableWithoutFilter(
-                            icon, origin, fallbackColor, mIconGenerator, mResources, mDesiredSize);
+                    Drawable drawable = FaviconUtils.getIconDrawableWithoutFilter(icon, gurlOrigin,
+                            fallbackColor, mIconGenerator, mResources, mDesiredSize);
                     setIconCallback.onResult(drawable);
                 });
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/NavigationPopup.java b/chrome/android/java/src/org/chromium/chrome/browser/NavigationPopup.java
index 1de4577..a1ae927 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/NavigationPopup.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/NavigationPopup.java
@@ -206,11 +206,11 @@
         mInitialized = true;
         mFaviconHelper = new FaviconHelper();
 
-        Set<String> requestedUrls = new HashSet<String>();
+        Set<GURL> requestedUrls = new HashSet<>();
         for (int i = 0; i < mHistory.getEntryCount(); i++) {
             NavigationEntry entry = mHistory.getEntryAtIndex(i);
             if (entry.getFavicon() != null) continue;
-            final String pageUrl = entry.getUrl().getSpec();
+            final GURL pageUrl = entry.getUrl();
             if (!requestedUrls.contains(pageUrl)) {
                 FaviconImageCallback imageCallback =
                         (bitmap, iconUrl) -> NavigationPopup.this.onFaviconAvailable(pageUrl,
@@ -227,7 +227,7 @@
      * @param pageUrl the page for which the favicon was retrieved.
      * @param favicon the favicon data.
      */
-    private void onFaviconAvailable(String pageUrl, Bitmap favicon) {
+    private void onFaviconAvailable(GURL pageUrl, Bitmap favicon) {
         if (favicon == null) {
             if (mDefaultFaviconHelper == null) mDefaultFaviconHelper = new DefaultFaviconHelper();
             favicon = mDefaultFaviconHelper.getDefaultFaviconBitmap(
@@ -235,7 +235,7 @@
         }
         for (int i = 0; i < mHistory.getEntryCount(); i++) {
             NavigationEntry entry = mHistory.getEntryAtIndex(i);
-            if (TextUtils.equals(pageUrl, entry.getUrl().getSpec())) entry.updateFavicon(favicon);
+            if (pageUrl.equals(entry.getUrl())) entry.updateFavicon(favicon);
         }
         mAdapter.notifyDataSetChanged();
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRow.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRow.java
index 9c3c40d..dc1e91c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRow.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRow.java
@@ -72,8 +72,8 @@
     @Override
     public void onLargeIconAvailable(Bitmap icon, int fallbackColor, boolean isFallbackColorDefault,
             @IconType int iconType) {
-        Drawable iconDrawable = FaviconUtils.getIconDrawableWithoutFilter(icon, mUrl.getSpec(),
-                fallbackColor, mIconGenerator, getResources(), mDisplayedIconSize);
+        Drawable iconDrawable = FaviconUtils.getIconDrawableWithoutFilter(
+                icon, mUrl, fallbackColor, mIconGenerator, getResources(), mDisplayedIconSize);
         setStartIconDrawable(iconDrawable);
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/LayerTitleCache.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/LayerTitleCache.java
index 41a5129..f5f6e5d8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/LayerTitleCache.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/LayerTitleCache.java
@@ -26,6 +26,7 @@
 import org.chromium.ui.resources.ResourceManager;
 import org.chromium.ui.resources.dynamics.BitmapDynamicResource;
 import org.chromium.ui.resources.dynamics.DynamicResourceLoader;
+import org.chromium.url.GURL;
 
 /**
  * A version of the {@link LayerTitleCache} that builds native cc::Layer objects
@@ -121,7 +122,7 @@
         Bitmap originalFavicon = TabFavicon.getBitmap(tab);
         if (originalFavicon == null) {
             originalFavicon = mDefaultFaviconHelper.getDefaultFaviconBitmap(
-                    mContext.getResources(), tab.getUrlString(), !isDarkTheme);
+                    mContext.getResources(), tab.getUrl(), !isDarkTheme);
         }
 
         TitleBitmapFactory titleBitmapFactory =
@@ -157,9 +158,9 @@
                 ? Profile.getLastUsedRegularProfile()
                 : Profile.getLastUsedRegularProfile().getPrimaryOTRProfile(/*createIfNeeded=*/true);
         mFaviconHelper.getLocalFaviconImageForURL(
-                profile, tab.getUrlString(), mFaviconSize, new FaviconImageCallback() {
+                profile, tab.getUrl(), mFaviconSize, new FaviconImageCallback() {
                     @Override
-                    public void onFaviconAvailable(Bitmap favicon, String iconUrl) {
+                    public void onFaviconAvailable(Bitmap favicon, GURL iconUrl) {
                         updateFaviconFromHistory(tab, favicon);
                     }
                 });
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabCoordinator.java
index 8072e2d..fa1f293b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabCoordinator.java
@@ -333,8 +333,7 @@
                 callback.onResult(drawable);
             };
 
-            mFaviconHelper.getLocalFaviconImageForURL(
-                    profile, url.getSpec(), mFaviconSize, imageCallback);
+            mFaviconHelper.getLocalFaviconImageForURL(profile, url, mFaviconSize, imageCallback);
         }
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabTaskDescriptionHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabTaskDescriptionHelper.java
index 9c9ffe3..972a6e8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabTaskDescriptionHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabTaskDescriptionHelper.java
@@ -272,7 +272,7 @@
 
         final String currentUrl = currentTab.getUrlString();
         mFaviconHelper.getLocalFaviconImageForURL(
-                Profile.fromWebContents(currentTab.getWebContents()), currentTab.getUrlString(), 0,
+                Profile.fromWebContents(currentTab.getWebContents()), currentTab.getUrl(), 0,
                 (image, iconUrl) -> {
                     if (mTabProvider.getTab() == null
                             || !TextUtils.equals(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java
index f244674..41c8aad 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java
@@ -7,6 +7,7 @@
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.url.GURL;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -70,7 +71,7 @@
     }
 
     @CalledByNative
-    public static void createHistoryItemAndAddToList(List<HistoryItem> items, String url,
+    public static void createHistoryItemAndAddToList(List<HistoryItem> items, GURL url,
             String domain, String title, long mostRecentJavaTimestamp, long[] nativeTimestamps,
             boolean blockedVisit) {
         items.add(new HistoryItem(
@@ -116,7 +117,7 @@
         void queryHistoryContinuation(long nativeBrowsingHistoryBridge,
                 BrowsingHistoryBridge caller, List<HistoryItem> historyItems);
         void markItemForRemoval(long nativeBrowsingHistoryBridge, BrowsingHistoryBridge caller,
-                String url, long[] nativeTimestamps);
+                GURL url, long[] nativeTimestamps);
         void removeItems(long nativeBrowsingHistoryBridge, BrowsingHistoryBridge caller);
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java
index bdda7d6..0915c9c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java
@@ -34,6 +34,7 @@
 import org.chromium.components.user_prefs.UserPrefs;
 import org.chromium.ui.text.NoUnderlineClickableSpan;
 import org.chromium.ui.text.SpanApplier;
+import org.chromium.url.GURL;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -372,7 +373,7 @@
      */
     private SpannableString getPrivacyDisclaimerText(Resources resources) {
         NoUnderlineClickableSpan link = new NoUnderlineClickableSpan(resources, (view) -> {
-            mHistoryManager.openUrl(UrlConstants.MY_ACTIVITY_URL_IN_HISTORY, null, true);
+            mHistoryManager.openUrl(new GURL(UrlConstants.MY_ACTIVITY_URL_IN_HISTORY), null, true);
         });
         return SpanApplier.applySpans(
                 resources.getString(R.string.android_history_other_forms_of_history),
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItem.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItem.java
index 7cbdf3a7..747640cd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItem.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItem.java
@@ -9,12 +9,13 @@
 import org.chromium.base.ContextUtils;
 import org.chromium.chrome.R;
 import org.chromium.components.browser_ui.widget.DateDividedAdapter.TimedItem;
+import org.chromium.url.GURL;
 
 import java.util.Arrays;
 
 /** Contains information about a single browsing history item. */
 public class HistoryItem extends TimedItem {
-    private final String mUrl;
+    private final GURL mUrl;
     private final String mDomain;
     private final String mTitle;
     private final boolean mWasBlockedVisit;
@@ -32,20 +33,20 @@
      * @param nativeTimestamps Microsecond resolution navigation times.
      * @param blockedVisit Whether the visit to this item was blocked when it was attempted.
      */
-    public HistoryItem(String url, String domain, String title, long mostRecentJavaTimestamp,
+    public HistoryItem(GURL url, String domain, String title, long mostRecentJavaTimestamp,
             long[] nativeTimestamps, boolean blockedVisit) {
         mUrl = url;
         mDomain = domain;
         mTitle = blockedVisit ? ContextUtils.getApplicationContext().getString(
-                R.string.android_history_blocked_site)
-                : TextUtils.isEmpty(title) ? url : title;
+                         R.string.android_history_blocked_site)
+                              : TextUtils.isEmpty(title) ? url.getSpec() : title;
         mMostRecentJavaTimestamp = mostRecentJavaTimestamp;
         mNativeTimestampList = Arrays.copyOf(nativeTimestamps, nativeTimestamps.length);
         mWasBlockedVisit = blockedVisit;
     }
 
     /** @return The url for this item. */
-    public String getUrl() {
+    public GURL getUrl() {
         return mUrl;
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java
index c97bf1a8..a45d6e9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryItemView.java
@@ -179,7 +179,7 @@
     private void requestIcon() {
         if (mHistoryManager == null || mHistoryManager.getLargeIconBridge() == null) return;
 
-        mHistoryManager.getLargeIconBridge().getLargeIconForStringUrl(
+        mHistoryManager.getLargeIconBridge().getLargeIconForUrl(
                 getItem().getUrl(), mMinIconSize, this);
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
index 826e4b2..47bd8a0 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
@@ -61,6 +61,7 @@
 import org.chromium.content_public.browser.LoadUrlParams;
 import org.chromium.ui.base.Clipboard;
 import org.chromium.ui.base.PageTransition;
+import org.chromium.url.GURL;
 
 import java.util.List;
 
@@ -244,7 +245,7 @@
         } else if (item.getItemId() == R.id.selection_mode_copy_link) {
             recordUserActionWithOptionalSearch("CopyLink");
             Clipboard.getInstance().setText(
-                    mSelectionDelegate.getSelectedItemsAsList().get(0).getUrl());
+                    mSelectionDelegate.getSelectedItemsAsList().get(0).getUrl().getSpec());
             mSelectionDelegate.clearSelection();
             Snackbar snackbar = Snackbar.make(mActivity.getString(R.string.copied), this,
                     Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_HISTORY_LINK_COPIED);
@@ -350,7 +351,7 @@
      * @param createNewTab Whether a new tab should be created. If false, the item will clobber the
      *                     the current tab.
      */
-    public void openUrl(String url, Boolean isIncognito, boolean createNewTab) {
+    public void openUrl(GURL url, Boolean isIncognito, boolean createNewTab) {
         if (isDisplayedInSeparateActivity()) {
             IntentHandler.startActivityForTrustedIntent(
                     getOpenUrlIntent(url, isIncognito, createNewTab));
@@ -380,9 +381,9 @@
     }
 
     @VisibleForTesting
-    Intent getOpenUrlIntent(String url, Boolean isIncognito, boolean createNewTab) {
+    Intent getOpenUrlIntent(GURL url, Boolean isIncognito, boolean createNewTab) {
         // Construct basic intent.
-        Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+        Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url.getSpec()));
         viewIntent.putExtra(Browser.EXTRA_APPLICATION_ID,
                 mActivity.getApplicationContext().getPackageName());
         viewIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/ForeignSessionHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/ForeignSessionHelper.java
index ce6efba..82ffdd6e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/ForeignSessionHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/ForeignSessionHelper.java
@@ -8,6 +8,7 @@
 import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.url.GURL;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -80,12 +81,12 @@
      * Represents synced foreign tab.
      */
     static class ForeignSessionTab {
-        public final String url;
+        public final GURL url;
         public final String title;
         public final long timestamp;
         public final int id;
 
-        private ForeignSessionTab(String url, String title, long timestamp, int id) {
+        private ForeignSessionTab(GURL url, String title, long timestamp, int id) {
             this.url = url;
             this.title = title;
             this.timestamp = timestamp;
@@ -112,7 +113,7 @@
 
     @CalledByNative
     private static void pushTab(
-            ForeignSessionWindow window, String url, String title, long timestamp, int sessionId) {
+            ForeignSessionWindow window, GURL url, String title, long timestamp, int sessionId) {
         ForeignSessionTab tab = new ForeignSessionTab(url, title, timestamp, sessionId);
         window.tabs.add(tab);
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
index 87087a92..b5bd2ee 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
@@ -34,6 +34,7 @@
 import org.chromium.components.signin.identitymanager.ConsentLevel;
 import org.chromium.components.signin.metrics.SigninAccessPoint;
 import org.chromium.content_public.browser.UiThreadTaskTraits;
+import org.chromium.url.GURL;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -257,7 +258,7 @@
      * @return favicon or null if favicon unavailable.
      */
     public boolean getForeignFaviconForUrl(
-            String url, int size, FaviconImageCallback faviconCallback) {
+            GURL url, int size, FaviconImageCallback faviconCallback) {
         return mFaviconHelper.getForeignFaviconImageForURL(mProfile, url, size, faviconCallback);
     }
 
@@ -270,8 +271,7 @@
      *
      * @return may return false if we could not fetch the favicon.
      */
-    public boolean getLocalFaviconForUrl(String url, int size,
-            FaviconImageCallback faviconCallback) {
+    public boolean getLocalFaviconForUrl(GURL url, int size, FaviconImageCallback faviconCallback) {
         return mFaviconHelper.getLocalFaviconImageForURL(mProfile, url, size, faviconCallback);
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsRowAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsRowAdapter.java
index e8189694..862f408 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsRowAdapter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsRowAdapter.java
@@ -39,6 +39,7 @@
 import org.chromium.components.signin.metrics.SigninAccessPoint;
 import org.chromium.ui.base.DeviceFormFactor;
 import org.chromium.ui.mojom.WindowOpenDisposition;
+import org.chromium.url.GURL;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -300,9 +301,10 @@
         @Override
         public void configureChildView(int childPosition, ViewHolder viewHolder) {
             ForeignSessionTab sessionTab = getChild(childPosition);
-            String text = TextUtils.isEmpty(sessionTab.title) ? sessionTab.url : sessionTab.title;
+            String url = sessionTab.url.getSpec();
+            String text = TextUtils.isEmpty(sessionTab.title) ? url : sessionTab.title;
             viewHolder.textView.setText(text);
-            String domain = UrlUtilities.getDomainAndRegistry(sessionTab.url, false);
+            String domain = UrlUtilities.getDomainAndRegistry(url, false);
             if (!TextUtils.isEmpty(domain)) {
                 viewHolder.domainView.setText(domain);
                 viewHolder.domainView.setVisibility(View.VISIBLE);
@@ -567,7 +569,7 @@
                 viewHolder.domainView.setText(domain);
                 viewHolder.domainView.setVisibility(View.VISIBLE);
             }
-            loadFavicon(viewHolder, tab.url.getSpec(), FaviconLocality.LOCAL);
+            loadFavicon(viewHolder, tab.url, FaviconLocality.LOCAL);
         }
 
         @Override
@@ -677,17 +679,17 @@
     }
 
     private static class FaviconCache {
-        private final LruCache<String, Drawable> mMemoryCache;
+        private final LruCache<GURL, Drawable> mMemoryCache;
 
         public FaviconCache(int size) {
             mMemoryCache = new LruCache<>(size);
         }
 
-        Drawable getFaviconImage(String url) {
+        Drawable getFaviconImage(GURL url) {
             return mMemoryCache.get(url);
         }
 
-        public void putFaviconImage(String url, Drawable image) {
+        public void putFaviconImage(GURL url, Drawable image) {
             mMemoryCache.put(url, image);
         }
     }
@@ -730,7 +732,7 @@
     }
 
     private void loadFavicon(
-            final ViewHolder viewHolder, final String url, @FaviconLocality int locality) {
+            final ViewHolder viewHolder, final GURL url, @FaviconLocality int locality) {
         Drawable image;
         if (url == null) {
             // URL is null for print jobs, for example.
@@ -741,7 +743,7 @@
             if (image == null) {
                 FaviconImageCallback imageCallback = new FaviconImageCallback() {
                     @Override
-                    public void onFaviconAvailable(Bitmap bitmap, String iconUrl) {
+                    public void onFaviconAvailable(Bitmap bitmap, GURL iconUrl) {
                         if (this != viewHolder.imageCallback) return;
                         Drawable faviconDrawable = FaviconUtils.getIconDrawableWithFilter(bitmap,
                                 url, mIconGenerator, mDefaultFaviconHelper,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService.java
index fa2e8f6..6e4e950 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService.java
@@ -32,7 +32,6 @@
 import org.chromium.components.browser_ui.styles.ChromeColors;
 import org.chromium.components.externalauth.ExternalAuthUtils;
 import org.chromium.components.search_engines.TemplateUrlService;
-import org.chromium.components.signin.AccountManagerDelegateException;
 import org.chromium.components.signin.AccountManagerFacade;
 import org.chromium.components.signin.AccountManagerFacadeProvider;
 import org.chromium.components.signin.AccountsChangeObserver;
@@ -415,14 +414,10 @@
     /** Wrapped multi-account check to handle the exception. */
     @VisibleForTesting
     boolean doesViolateMultiAccountCheck() {
-        if (!mAccountManagerFacade.isCachePopulated()) return true;
-
-        try {
-            return mAccountManagerFacade.getGoogleAccounts().size() > 1;
-        } catch (AccountManagerDelegateException e) {
-            // In case of an exception -- we can't be sure so default to true.
-            return true;
-        }
+        // In case of the accounts cannot be fetched -- we can't be sure so default to true.
+        return !mExternalAuthUtils.canUseGooglePlayServices()
+                || !mAccountManagerFacade.isCachePopulated()
+                || mAccountManagerFacade.tryGetGoogleAccounts().size() > 1;
     }
 
     // TemplateUrlService.TemplateUrlServiceObserver implementation
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java
index d7425326..88be558 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java
@@ -1267,7 +1267,7 @@
 
         final FaviconHelper faviconHelper = new FaviconHelper();
         faviconHelper.getLocalFaviconImageForURL(Profile.fromWebContents(mWebContents),
-                mWebContents.getLastCommittedUrl().getSpec(),
+                mWebContents.getLastCommittedUrl(),
                 activity.getResources().getDimensionPixelSize(R.dimen.payments_favicon_size),
                 (bitmap, iconUrl) -> {
                     if (bitmap == null) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java
index 36f6453..6e8fd08 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java
@@ -37,6 +37,7 @@
 import org.chromium.components.embedder_support.util.Origin;
 import org.chromium.content_public.browser.ContentFeatureList;
 import org.chromium.content_public.common.ContentSwitches;
+import org.chromium.url.GURL;
 
 import java.util.Set;
 
@@ -121,12 +122,12 @@
             // but it is not safe.
             if (!mFaviconHelper.getLocalFaviconImageForURL(
                         Profile.getLastUsedRegularProfile(), mFaviconUrl, mFaviconSizePx, this)) {
-                onFaviconAvailable(/*image=*/null, mFaviconUrl);
+                onFaviconAvailable(/*image=*/null, null);
             }
         }
 
         @Override
-        public void onFaviconAvailable(Bitmap image, String iconUrl) {
+        public void onFaviconAvailable(Bitmap image, GURL unusedIconUrl) {
             mFaviconHelper.destroy();
 
             if (image == null) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
index a031972..197629d9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
@@ -1756,7 +1756,8 @@
     }
 
     private void updateProgressBarVisibility() {
-        getProgressBar().setVisibility(mTabSwitcherState != STATIC_TAB ? INVISIBLE : VISIBLE);
+        getProgressBar().setVisibility(
+                mIsShowingStartSurface || mTabSwitcherState != STATIC_TAB ? INVISIBLE : VISIBLE);
     }
 
     @Override
@@ -1871,6 +1872,7 @@
         }
 
         getMenuButtonCoordinator().setVisibility(!mIsShowingStartSurface);
+        updateProgressBarVisibility();
 
         // The URL focusing animator set shouldn't be populated before native initialization. It is
         // possible that this function is called before native initialization when Instant Start
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java
index 4e776bae2..235afb57 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java
@@ -163,7 +163,11 @@
 
         if (FirstRunFlowSequencer.launch(this, intent, false /* requiresBroadcast */,
                     shouldPreferLightweightFre(launchData))) {
-            ApiCompatibilityUtils.finishAndRemoveTask(this);
+            // Do not remove the current task. The full FRE reuses the task due to
+            // android:launchMode arguments, while the LWFRE does not. So removing the task would
+            // break the full FRE. The LWFRE will still clean up the task since this is the only
+            // activity in the current task. See https://crbug.com/1201353 for more details.
+            finish();
             return;
         }
 
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 8000a0a..7f11609 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
@@ -1787,7 +1787,7 @@
         List<HistoryItem> history =
                 getHistory(mCustomTabActivityTestRule.getActivity().getActivityTab());
         assertEquals(1, history.size());
-        assertEquals(mTestPage, history.get(0).getUrl());
+        assertEquals(mTestPage, history.get(0).getUrl().getSpec());
     }
 
     /** Tests that calling warmup() is optional without prerendering. */
@@ -2335,8 +2335,8 @@
 
         List<HistoryItem> history = getHistory(tab);
         assertEquals(2, history.size());
-        assertEquals(mTestPage2, history.get(0).getUrl());
-        assertEquals(mTestPage, history.get(1).getUrl());
+        assertEquals(mTestPage2, history.get(0).getUrl().getSpec());
+        assertEquals(mTestPage, history.get(1).getUrl().getSpec());
     }
 
     private int getVisibleEntryTransitionTypeForTab(Tab tab) {
@@ -2898,7 +2898,7 @@
 
         List<HistoryItem> history = getHistory(tab);
         assertEquals(1, history.size());
-        assertEquals(navigationUrl, history.get(0).getUrl());
+        assertEquals(navigationUrl, history.get(0).getUrl().getSpec());
     }
 
     private void mayLaunchUrlWithoutWarmup(boolean useHiddenTab) {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryActivityTest.java
index 4fa0ede..c0373baa 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryActivityTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryActivityTest.java
@@ -8,7 +8,6 @@
 import static androidx.test.espresso.intent.Intents.intending;
 import static androidx.test.espresso.intent.Intents.times;
 import static androidx.test.espresso.intent.matcher.IntentMatchers.hasAction;
-import static androidx.test.espresso.intent.matcher.IntentMatchers.hasData;
 
 import static org.hamcrest.Matchers.allOf;
 import static org.hamcrest.Matchers.equalTo;
@@ -26,9 +25,11 @@
 
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+import androidx.test.espresso.intent.matcher.IntentMatchers;
 import androidx.test.espresso.intent.rule.IntentsTestRule;
 import androidx.test.filters.SmallTest;
 
+import org.hamcrest.Matcher;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Rule;
@@ -64,6 +65,7 @@
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
 import org.chromium.ui.base.PageTransition;
 import org.chromium.ui.test.util.UiRestriction;
+import org.chromium.url.GURL;
 
 import java.util.Date;
 import java.util.concurrent.ExecutionException;
@@ -93,6 +95,10 @@
     private HistoryItem mItem1;
     private HistoryItem mItem2;
 
+    public static Matcher<Intent> hasData(GURL uri) {
+        return IntentMatchers.hasData(uri.getSpec());
+    }
+
     @Before
     public void setUp() throws Exception {
         // Account not signed in by default with AccountManagerTestRule.
@@ -244,14 +250,14 @@
     @SmallTest
     public void testOpenItemIntent() {
         Intent intent = mHistoryManager.getOpenUrlIntent(mItem1.getUrl(), null, false);
-        Assert.assertEquals(mItem1.getUrl(), intent.getDataString());
+        Assert.assertEquals(mItem1.getUrl().getSpec(), intent.getDataString());
         Assert.assertFalse(intent.hasExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB));
         Assert.assertFalse(intent.hasExtra(Browser.EXTRA_CREATE_NEW_TAB));
         Assert.assertEquals(PageTransition.AUTO_BOOKMARK,
                 intent.getIntExtra(IntentHandler.EXTRA_PAGE_TRANSITION_TYPE, -1));
 
         intent = mHistoryManager.getOpenUrlIntent(mItem2.getUrl(), true, true);
-        Assert.assertEquals(mItem2.getUrl(), intent.getDataString());
+        Assert.assertEquals(mItem2.getUrl().getSpec(), intent.getDataString());
         Assert.assertTrue(
                 intent.getBooleanExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, false));
         Assert.assertTrue(intent.getBooleanExtra(Browser.EXTRA_CREATE_NEW_TAB, false));
@@ -512,8 +518,9 @@
                                             .getMenu()
                                             .performIdentifierAction(
                                                     R.id.selection_mode_copy_link, 0)));
-            CriteriaHelper.pollUiThread(
-                    () -> Criteria.checkThat(mItem1.getUrl(), is(clipboardManager.getText())));
+            CriteriaHelper.pollUiThread(()
+                                                -> Criteria.checkThat(mItem1.getUrl().getSpec(),
+                                                        is(clipboardManager.getText())));
 
             // Check that the copy link item is not visible when more than one item is selected.
             toggleItemSelection(2);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryTest.java
index c87b8d87..769e33c 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/history/HistoryTest.java
@@ -22,6 +22,7 @@
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.components.embedder_support.util.UrlConstants;
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.url.GURL;
 
 import java.util.concurrent.TimeoutException;
 
@@ -36,7 +37,7 @@
         private Bitmap mFavicon;
 
         @Override
-        public void onFaviconAvailable(Bitmap image, String iconUrl) {
+        public void onFaviconAvailable(Bitmap image, GURL iconUrl) {
             mFavicon = image;
             notifyCalled();
         }
@@ -61,11 +62,11 @@
 
         FaviconHelper helper = TestThreadUtils.runOnUiThreadBlocking(FaviconHelper::new);
         // If the returned favicons are non-null Bitmap#sameAs() should be used.
-        assertNull(getFavicon(helper, UrlConstants.HISTORY_URL));
-        assertNull(getFavicon(helper, UrlConstants.NATIVE_HISTORY_URL));
+        assertNull(getFavicon(helper, new GURL(UrlConstants.HISTORY_URL)));
+        assertNull(getFavicon(helper, new GURL(UrlConstants.NATIVE_HISTORY_URL)));
     }
 
-    public Bitmap getFavicon(FaviconHelper helper, String pageUrl) throws TimeoutException {
+    public Bitmap getFavicon(FaviconHelper helper, GURL pageUrl) throws TimeoutException {
         FaviconWaiter waiter = new FaviconWaiter();
         TestThreadUtils.runOnUiThreadBlocking(() -> {
             helper.getLocalFaviconImageForURL(
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchServiceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchServiceTest.java
index d8f18f7..acce865 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchServiceTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchServiceTest.java
@@ -69,6 +69,7 @@
 
         doReturn(false).when(mExternalAuthUtils).isGoogleSigned(anyString());
         doReturn(false).when(mExternalAuthUtils).isChromeGoogleSigned();
+        doReturn(true).when(mExternalAuthUtils).canUseGooglePlayServices();
         ExternalAuthUtils.setInstanceForTesting(mExternalAuthUtils);
 
         mActivityTestRule.startMainActivityOnBlankPage();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoControllerTest.java
deleted file mode 100644
index 538dec46..0000000
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoControllerTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2017 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.page_info;
-
-import androidx.test.filters.MediumTest;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.chromium.base.test.util.Batch;
-import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.base.test.util.Feature;
-import org.chromium.chrome.browser.app.ChromeActivity;
-import org.chromium.chrome.browser.flags.ChromeSwitches;
-import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
-import org.chromium.chrome.browser.tab.Tab;
-import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
-import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
-import org.chromium.chrome.test.batch.BlankCTATabInitialStateRule;
-import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
-import org.chromium.components.page_info.PageInfoController;
-import org.chromium.components.page_info.PageInfoController.OpenedFromSource;
-import org.chromium.components.page_info.PageInfoFeatures;
-import org.chromium.components.page_info.PageInfoView;
-import org.chromium.components.security_state.ConnectionSecurityLevel;
-import org.chromium.content_public.browser.test.util.TestThreadUtils;
-import org.chromium.content_public.common.ContentSwitches;
-import org.chromium.net.test.EmbeddedTestServer;
-import org.chromium.ui.base.PageTransition;
-
-/**
- * Tests for PageInfoController.
- */
-@RunWith(ChromeJUnit4ClassRunner.class)
-@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
-        ContentSwitches.HOST_RESOLVER_RULES + "=MAP * 127.0.0.1"})
-@Batch(ConnectionInfoViewTest.PAGE_INFO_BATCH_NAME)
-@Batch.SplitByFeature
-public class PageInfoControllerTest {
-    @ClassRule
-    public static final ChromeTabbedActivityTestRule sActivityTestRule =
-            new ChromeTabbedActivityTestRule();
-
-    @Rule
-    public final BlankCTATabInitialStateRule mInitialStateRule =
-            new BlankCTATabInitialStateRule(sActivityTestRule, false);
-
-    private EmbeddedTestServer mTestServer;
-
-    @Before
-    public void setUp() throws Exception {
-        mTestServer = sActivityTestRule.getTestServer();
-    }
-
-    @After
-    public void tearDown() {
-        mTestServer.stopAndDestroyServer();
-    }
-
-    /**
-     * Tests that PageInfoController can be instantiated and shown.
-     */
-    @Test
-    @MediumTest
-    @Feature({"PageInfoController"})
-    public void testShow() {
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            ChromeActivity activity = sActivityTestRule.getActivity();
-            Tab tab = activity.getActivityTab();
-            new ChromePageInfo(
-                    activity.getModalDialogManagerSupplier(), null, OpenedFromSource.MENU)
-                    .show(tab, PageInfoController.NO_HIGHLIGHTED_PERMISSION);
-        });
-    }
-
-    /**
-     * Tests that PageInfoController converts safe URLs to Unicode.
-     */
-    @Test
-    @MediumTest
-    @Feature({"PageInfoController"})
-    @DisableFeatures(PageInfoFeatures.PAGE_INFO_V2_NAME)
-    public void testPageInfoUrl() {
-        String testUrl = mTestServer.getURLWithHostName("xn--allestrungen-9ib.ch", "/");
-        sActivityTestRule.loadUrlInTab(
-                testUrl, PageTransition.TYPED, sActivityTestRule.getActivity().getActivityTab());
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            ChromeActivity activity = sActivityTestRule.getActivity();
-            Tab tab = activity.getActivityTab();
-            ChromePageInfoControllerDelegate chromePageInfoControllerDelegate =
-                    new ChromePageInfoControllerDelegate(activity, tab.getWebContents(),
-                            activity::getModalDialogManager,
-                            /*offlinePageLoadUrlDelegate=*/
-                            new OfflinePageUtils.TabOfflinePageLoadUrlDelegate(tab));
-            chromePageInfoControllerDelegate.setOfflinePageStateForTesting(
-                    ChromePageInfoControllerDelegate.OfflinePageState.NOT_OFFLINE_PAGE);
-            ChromePermissionParamsListBuilderDelegate chromePermissionParamsListBuilderDelegate =
-                    new ChromePermissionParamsListBuilderDelegate();
-            PageInfoController pageInfo =
-                    new PageInfoController(tab.getWebContents(), ConnectionSecurityLevel.NONE,
-                            /*publisher=*/null, chromePageInfoControllerDelegate,
-                            chromePermissionParamsListBuilderDelegate,
-                            PageInfoController.NO_HIGHLIGHTED_PERMISSION);
-            PageInfoView pageInfoView = (PageInfoView) pageInfo.getPageInfoViewForTesting();
-            // Test that the title contains the Unicode hostname rather than strict equality, as
-            // the test server will be bound to a random port.
-            Assert.assertTrue(
-                    pageInfoView.getUrlTitleForTesting().contains("http://allestörungen.ch"));
-        });
-    }
-}
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewTest.java
index ac36c004..b10ba0c 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/page_info/PageInfoViewTest.java
@@ -256,6 +256,23 @@
     }
 
     /**
+     * Tests that PageInfoController converts safe URLs to Unicode.
+     */
+    @Test
+    @MediumTest
+    @Feature({"PageInfoController"})
+    public void testPageInfoUrl() {
+        String testUrl =
+                mTestServerRule.getServer().getURLWithHostName("xn--allestrungen-9ib.ch", "/");
+        loadUrlAndOpenPageInfo(testUrl);
+        onView(withText(
+                allOf(containsString("allestörungen.ch"), not(containsString("https://")))));
+        // Expand to full URL.
+        onView(withId(R.id.page_info_url_wrapper)).perform(click());
+        onView(withText(allOf(containsString("allestörungen.ch"), containsString("https://"))));
+    }
+
+    /**
      * Tests PageInfo on an insecure website.
      */
     @Test
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/portals/PortalsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/portals/PortalsTest.java
index 42ead648..0108607 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/portals/PortalsTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/portals/PortalsTest.java
@@ -523,7 +523,7 @@
         // user.
         List<HistoryItem> history = getBrowsingHistory(tab);
         Assert.assertEquals(1, history.size());
-        Assert.assertEquals(mainUrl, history.get(0).getUrl());
+        Assert.assertEquals(mainUrl, history.get(0).getUrl().getSpec());
         Assert.assertEquals(mainTitle, history.get(0).getTitle());
 
         executeScriptAndAwaitSwap(tab, "activatePortal();");
@@ -532,9 +532,9 @@
         // as a navigation in the tab, so this should be considered a page visit.
         history = getBrowsingHistory(tab);
         Assert.assertEquals(2, history.size());
-        Assert.assertEquals(portalUrl, history.get(0).getUrl());
+        Assert.assertEquals(portalUrl, history.get(0).getUrl().getSpec());
         Assert.assertEquals(portalTitle, history.get(0).getTitle());
-        Assert.assertEquals(mainUrl, history.get(1).getUrl());
+        Assert.assertEquals(mainUrl, history.get(1).getUrl().getSpec());
         Assert.assertEquals(mainTitle, history.get(1).getTitle());
     }
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/IdentityManagerIntegrationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/IdentityManagerIntegrationTest.java
index efd8804..c3bbb9a2 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/IdentityManagerIntegrationTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/IdentityManagerIntegrationTest.java
@@ -11,11 +11,14 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.BaseJUnit4ClassRunner;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
+import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule;
 import org.chromium.components.signin.base.CoreAccountInfo;
 import org.chromium.components.signin.identitymanager.IdentityManager;
@@ -32,8 +35,12 @@
  * These tests initialize the native part of the service.
  */
 @RunWith(BaseJUnit4ClassRunner.class)
+@Features.DisableFeatures({ChromeFeatureList.DEPRECATE_MENAGERIE_API})
 public class IdentityManagerIntegrationTest {
     @Rule
+    public final TestRule mProcessor = new Features.InstrumentationProcessor();
+
+    @Rule
     public final AccountManagerTestRule mAccountManagerTestRule = new AccountManagerTestRule();
 
     private static final String TEST_ACCOUNT1 = "foo@gmail.com";
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/SearchEngineLogoUtilsUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/SearchEngineLogoUtilsUnitTest.java
index ced5ea2..2c4e871 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/SearchEngineLogoUtilsUnitTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/SearchEngineLogoUtilsUnitTest.java
@@ -8,6 +8,7 @@
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
@@ -50,6 +51,7 @@
 import org.chromium.components.browser_ui.widget.RoundedIconGenerator;
 import org.chromium.components.search_engines.TemplateUrlService;
 import org.chromium.content_public.browser.BrowserStartupController;
+import org.chromium.url.JUnitTestGURLs;
 
 /**
  * Tests for SearchEngineLogoUtils.
@@ -57,7 +59,7 @@
 @RunWith(BaseRobolectricTestRunner.class)
 @Config(manifest = Config.NONE, shadows = {ShadowRecordHistogram.class})
 public class SearchEngineLogoUtilsUnitTest {
-    private static final String LOGO_URL = "http://testlogo.com";
+    private static final String LOGO_URL = JUnitTestGURLs.URL_1;
     private static final String EVENTS_HISTOGRAM = "AndroidSearchEngineLogo.Events";
 
     @Rule
@@ -95,7 +97,7 @@
         doReturn(LOGO_URL).when(mTemplateUrlService).getUrlForSearchQuery(any());
         doReturn(true)
                 .when(mFaviconHelper)
-                .getLocalFaviconImageForURL(any(), any(), anyInt(), any());
+                .getLocalFaviconImageForURL(any(), anyString(), anyInt(), any());
         doReturn(false).when(mLocaleManager).needToCheckForSearchEnginePromo();
         LocaleManager.setInstanceForTest(mLocaleManager);
 
@@ -135,9 +137,10 @@
                 /* inNightMode= */ false, Mockito.mock(Profile.class), mTemplateUrlService,
                 mCallback);
         verify(mFaviconHelper)
-                .getLocalFaviconImageForURL(any(), any(), anyInt(), mCallbackCaptor.capture());
+                .getLocalFaviconImageForURL(
+                        any(), anyString(), anyInt(), mCallbackCaptor.capture());
         FaviconHelper.FaviconImageCallback faviconCallback = mCallbackCaptor.getValue();
-        faviconCallback.onFaviconAvailable(mBitmap, LOGO_URL);
+        faviconCallback.onFaviconAvailable(mBitmap, JUnitTestGURLs.getGURL(LOGO_URL));
 
         verify(mCallback).onResult(expected);
         assertEquals(1,
@@ -180,9 +183,10 @@
                 /* inNightMode= */ false, Mockito.mock(Profile.class), mTemplateUrlService,
                 mCallback);
         verify(mFaviconHelper)
-                .getLocalFaviconImageForURL(any(), any(), anyInt(), mCallbackCaptor.capture());
+                .getLocalFaviconImageForURL(
+                        any(), anyString(), anyInt(), mCallbackCaptor.capture());
         FaviconHelper.FaviconImageCallback faviconCallback = mCallbackCaptor.getValue();
-        faviconCallback.onFaviconAvailable(mBitmap, LOGO_URL);
+        faviconCallback.onFaviconAvailable(mBitmap, JUnitTestGURLs.getGURL(LOGO_URL));
         mSearchEngineLogoUtils.getSearchEngineLogo(Mockito.mock(Resources.class),
                 /* inNightMode= */ false, Mockito.mock(Profile.class), mTemplateUrlService,
                 mCallback);
@@ -224,7 +228,7 @@
                 mSearchEngineLogoUtils.getSearchLoupeResource(/* inNightMode= */ false);
 
         when(mFaviconHelper.getLocalFaviconImageForURL(
-                     any(), any(), anyInt(), mCallbackCaptor.capture()))
+                     any(), anyString(), anyInt(), mCallbackCaptor.capture()))
                 .thenReturn(false);
 
         mSearchEngineLogoUtils.getSearchEngineLogo(Mockito.mock(Resources.class),
@@ -249,9 +253,10 @@
                 /* inNightMode= */ false, Mockito.mock(Profile.class), mTemplateUrlService,
                 mCallback);
         verify(mFaviconHelper)
-                .getLocalFaviconImageForURL(any(), any(), anyInt(), mCallbackCaptor.capture());
+                .getLocalFaviconImageForURL(
+                        any(), anyString(), anyInt(), mCallbackCaptor.capture());
         FaviconHelper.FaviconImageCallback faviconCallback = mCallbackCaptor.getValue();
-        faviconCallback.onFaviconAvailable(null, LOGO_URL);
+        faviconCallback.onFaviconAvailable(null, JUnitTestGURLs.getGURL(LOGO_URL));
 
         verify(mCallback).onResult(expected);
         assertEquals(1,
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchServiceUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchServiceUnitTest.java
index dc53bc2..065b0c2 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchServiceUnitTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchServiceUnitTest.java
@@ -6,11 +6,11 @@
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
 
 import static org.chromium.chrome.browser.preferences.ChromePreferenceKeys.ASSISTANT_VOICE_SEARCH_ENABLED;
 
-import android.accounts.Account;
 import android.app.Activity;
 import android.content.Context;
 import android.content.pm.PackageInfo;
@@ -44,14 +44,14 @@
 import org.chromium.chrome.browser.omnibox.voice.AssistantVoiceSearchService.EligibilityFailureReason;
 import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
 import org.chromium.chrome.test.util.browser.Features;
+import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule;
 import org.chromium.components.externalauth.ExternalAuthUtils;
 import org.chromium.components.search_engines.TemplateUrlService;
-import org.chromium.components.signin.AccountManagerFacade;
-import org.chromium.components.signin.GmsAvailabilityException;
+import org.chromium.components.signin.AccountManagerFacadeProvider;
 import org.chromium.components.signin.identitymanager.IdentityManager;
+import org.chromium.components.signin.test.util.FakeAccountManagerFacade;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -64,13 +64,19 @@
 @CommandLineFlags.Add(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)
 public class AssistantVoiceSearchServiceUnitTest {
     private static final int AGSA_VERSION_NUMBER = 11007;
-    private static final List<Account> FAKE_ACCOUNTS_1 = Arrays.asList(Mockito.mock(Account.class));
-    private static final List<Account> FAKE_ACCOUNTS_2 =
-            Arrays.asList(Mockito.mock(Account.class), Mockito.mock(Account.class));
+    private static final String TEST_ACCOUNT_EMAIL1 = "test1@gmail.com";
+    private static final String TEST_ACCOUNT_EMAIL2 = "test2@gmail.com";
 
     @Rule
     public TestRule mProcessor = new Features.JUnitProcessor();
 
+    private final FakeAccountManagerFacade mFakeAccountManagerFacade =
+            spy(new FakeAccountManagerFacade(null));
+
+    @Rule
+    public final AccountManagerTestRule mAccountManagerTestRule =
+            new AccountManagerTestRule(mFakeAccountManagerFacade);
+
     @Mock
     GSAState mGsaState;
     @Mock
@@ -81,8 +87,6 @@
     ExternalAuthUtils mExternalAuthUtils;
     @Mock
     IdentityManager mIdentityManager;
-    @Mock
-    AccountManagerFacade mAccountManagerFacade;
 
     AssistantVoiceSearchService mAssistantVoiceSearchService;
     SharedPreferencesManager mSharedPreferencesManager;
@@ -97,7 +101,7 @@
     }
 
     @Before
-    public void setUp() throws Exception {
+    public void setUp() {
         ShadowRecordHistogram.reset();
         SysUtils.resetForTesting();
         MockitoAnnotations.initMocks(this);
@@ -109,19 +113,20 @@
         doReturn(mPackageManager).when(mContext).getPackageManager();
         doReturn(true).when(mExternalAuthUtils).isChromeGoogleSigned();
         doReturn(true).when(mExternalAuthUtils).isGoogleSigned(GSAState.PACKAGE_NAME);
+        doReturn(true).when(mExternalAuthUtils).canUseGooglePlayServices();
         doReturn(true).when(mTemplateUrlService).isDefaultSearchEngineGoogle();
         doReturn(true).when(mGsaState).isGsaInstalled();
         doReturn(false).when(mGsaState).isAgsaVersionBelowMinimum(any(), any());
         doReturn(AGSA_VERSION_NUMBER).when(mGsaState).parseAgsaMajorMinorVersionAsInteger(any());
         doReturn(true).when(mGsaState).canAgsaHandleIntent(any());
         doReturn(true).when(mIdentityManager).hasPrimaryAccount();
-        doReturn(FAKE_ACCOUNTS_1).when(mAccountManagerFacade).getGoogleAccounts();
-        doReturn(true).when(mAccountManagerFacade).isCachePopulated();
+
+        mAccountManagerTestRule.addAccount(TEST_ACCOUNT_EMAIL1);
         mSharedPreferencesManager.writeBoolean(ASSISTANT_VOICE_SEARCH_ENABLED, true);
 
         mAssistantVoiceSearchService = new AssistantVoiceSearchService(mContext, mExternalAuthUtils,
                 mTemplateUrlService, mGsaState, null, mSharedPreferencesManager, mIdentityManager,
-                mAccountManagerFacade);
+                AccountManagerFacadeProvider.getInstance());
     }
 
     @After
@@ -245,8 +250,8 @@
 
     @Test
     @Feature("OmniboxAssistantVoiceSearch")
-    public void testAssistantEligibility_MutlipleAccounts() throws Exception {
-        doReturn(FAKE_ACCOUNTS_2).when(mAccountManagerFacade).getGoogleAccounts();
+    public void testAssistantEligibility_MutlipleAccounts() {
+        mAccountManagerTestRule.addAccount(TEST_ACCOUNT_EMAIL2);
 
         List<Integer> reasons = new ArrayList<>();
         boolean eligible = mAssistantVoiceSearchService.isDeviceEligibleForAssistant(
@@ -259,9 +264,9 @@
 
     @Test
     @Feature("OmniboxAssistantVoiceSearch")
-    public void testAssistantEligibility_MutlipleAccounts_CheckDisabled() throws Exception {
+    public void testAssistantEligibility_MutlipleAccounts_CheckDisabled() {
         mAssistantVoiceSearchService.setMultiAccountCheckEnabledForTesting(false);
-        doReturn(FAKE_ACCOUNTS_2).when(mAccountManagerFacade).getGoogleAccounts();
+        mAccountManagerTestRule.addAccount(TEST_ACCOUNT_EMAIL2);
 
         List<Integer> reasons = new ArrayList<>();
         boolean eligible = mAssistantVoiceSearchService.isDeviceEligibleForAssistant(
@@ -272,15 +277,15 @@
 
     @Test
     @Feature("OmniboxAssistantVoiceSearch")
-    public void testAssistantEligibility_MutlipleAccounts_JustAdded() throws Exception {
+    public void testAssistantEligibility_MutlipleAccounts_JustAdded() {
         mAssistantVoiceSearchService.setColorfulMicEnabledForTesting(true);
         mAssistantVoiceSearchService.onAccountsChanged();
 
         // Colorful mic should be returned when only 1 account is present.
         Assert.assertNull(mAssistantVoiceSearchService.getMicButtonColorStateList(0, mContext));
 
-        doReturn(FAKE_ACCOUNTS_2).when(mAccountManagerFacade).getGoogleAccounts();
-        mAssistantVoiceSearchService.onAccountsChanged();
+        // Adding new account would trigger onAccountsChanged() automatically
+        mAccountManagerTestRule.addAccount(TEST_ACCOUNT_EMAIL2);
 
         // Colorful mic should be returned when only 1 account is present.
         Assert.assertNotNull(mAssistantVoiceSearchService.getMicButtonColorStateList(0, mContext));
@@ -288,7 +293,7 @@
 
     @Test
     @Feature("OmniboxAssistantVoiceSearch")
-    public void testAssistantEligibility_AGSA_not_installed() throws Exception {
+    public void testAssistantEligibility_AGSA_not_installed() {
         doReturn(false).when(mGsaState).isGsaInstalled();
 
         List<Integer> reasons = new ArrayList<>();
@@ -349,15 +354,15 @@
 
     @Test
     @Feature("OmniboxAssistantVoiceSearch")
-    public void testDoesViolateMultiAccountCheck_throws() throws Exception {
-        doThrow(GmsAvailabilityException.class).when(mAccountManagerFacade).getGoogleAccounts();
+    public void testDoesViolateMultiAccountCheck_cannotUseGooglePlayService() {
+        when(mExternalAuthUtils.canUseGooglePlayServices()).thenReturn(false);
         Assert.assertTrue(mAssistantVoiceSearchService.doesViolateMultiAccountCheck());
     }
 
     @Test
     @Feature("OmniboxAssistantVoiceSearch")
-    public void testDoesViolateMultiAccountCheck_cacheNotPopuolated() throws Exception {
-        doReturn(false).when(mAccountManagerFacade).isCachePopulated();
+    public void testDoesViolateMultiAccountCheck_cacheNotPopulated() {
+        doReturn(false).when(mFakeAccountManagerFacade).isCachePopulated();
         Assert.assertTrue(mAssistantVoiceSearchService.doesViolateMultiAccountCheck());
     }
 }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/page_info/PermissionParamsListBuilderUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/page_info/PermissionParamsListBuilderUnitTest.java
index 6679217..1c188d42 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/page_info/PermissionParamsListBuilderUnitTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/page_info/PermissionParamsListBuilderUnitTest.java
@@ -38,7 +38,6 @@
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.LocationSettingsTestUtil;
-import org.chromium.components.browser_ui.site_settings.SiteSettingsFeatureList;
 import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
 import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridgeJni;
 import org.chromium.components.content_settings.ContentSettingValues;
@@ -152,52 +151,6 @@
                 R.string.page_info_android_ar_camera_blocked, permissionParams.warningTextResource);
     }
 
-    @Test
-    @Features.EnableFeatures(SiteSettingsFeatureList.APP_NOTIFICATION_STATUS_MESSAGING)
-    public void appNotificationStatusMessagingWhenNotificationsDisabled() {
-        getMutableNotificationManager().setNotificationsEnabled(false);
-
-        mPermissionParamsListBuilder.addPermissionEntry(
-                "", ContentSettingsType.NOTIFICATIONS, ContentSettingValues.ALLOW);
-
-        List<PageInfoView.PermissionRowParams> rows =
-                mPermissionParamsListBuilder.build().permissions;
-
-        assertEquals(1, rows.size());
-        assertEquals(
-                R.string.page_info_android_permission_blocked, rows.get(0).warningTextResource);
-    }
-
-    @Test
-    @Features.EnableFeatures(SiteSettingsFeatureList.APP_NOTIFICATION_STATUS_MESSAGING)
-    public void appNotificationStatusMessagingWhenNotificationsEnabled() {
-        getMutableNotificationManager().setNotificationsEnabled(true);
-
-        mPermissionParamsListBuilder.addPermissionEntry(
-                "", ContentSettingsType.NOTIFICATIONS, ContentSettingValues.ALLOW);
-
-        List<PageInfoView.PermissionRowParams> params =
-                mPermissionParamsListBuilder.build().permissions;
-
-        assertEquals(1, params.size());
-        assertEquals(0, params.get(0).warningTextResource);
-    }
-
-    @Test
-    @Features.DisableFeatures(SiteSettingsFeatureList.APP_NOTIFICATION_STATUS_MESSAGING)
-    public void appNotificationStatusMessagingFlagDisabled() {
-        getMutableNotificationManager().setNotificationsEnabled(false);
-
-        mPermissionParamsListBuilder.addPermissionEntry(
-                "", ContentSettingsType.NOTIFICATIONS, ContentSettingValues.ALLOW);
-
-        List<PageInfoView.PermissionRowParams> params =
-                mPermissionParamsListBuilder.build().permissions;
-
-        assertEquals(1, params.size());
-        assertEquals(0, params.get(0).warningTextResource);
-    }
-
     private static ShadowNotificationManager getMutableNotificationManager() {
         NotificationManager notificationManager =
                 (NotificationManager) RuntimeEnvironment.application.getSystemService(
diff --git a/chrome/app/os_settings_strings.grdp b/chrome/app/os_settings_strings.grdp
index 13605c1..e68e39d 100644
--- a/chrome/app/os_settings_strings.grdp
+++ b/chrome/app/os_settings_strings.grdp
@@ -318,6 +318,12 @@
   <message name="IDS_OS_SETTINGS_LANGUAGES_LANGUAGES_PREFERENCE_DESCRIPTION" desc="Description for section that lets users choose the language for web content. The web content languages will be served in the order of the list.">
     Web content available in multiple languages will use the first supported language from this list. These preferences are synced with your browser settings. <ph name="BEGIN_LINK_LEARN_MORE">&lt;a target="_blank" href="$1"&gt;</ph>Learn more<ph name="END_LINK_LEARN_MORE">&lt;/a&gt;</ph>
   </message>
+  <message name="IDS_OS_SETTINGS_LANGUAGES_WEBSITE_LANGUAGES_TITLE" desc="Title of section that lets users choose a list of languages for websites. The website languages will be given to websites in the order given by the list.">
+    Website languages
+  </message>
+  <message name="IDS_OS_SETTINGS_LANGUAGES_WEBSITE_LANGUAGES_DESCRIPTION" desc="Description for section that lets users choose a list of languages for websites. The website languages will be given to websites in the order given by the list.">
+    Add and rank your preferred languages. Websites will show in your preferred languages, when possible. These preferences are synced with your browser settings. <ph name="BEGIN_LINK_LEARN_MORE">&lt;a target="_blank" href="$1"&gt;</ph>Learn more<ph name="END_LINK_LEARN_MORE">&lt;/a&gt;</ph>
+  </message>
   <message name="IDS_OS_SETTINGS_LANGUAGES_TRANSLATE_TARGET_LABEL" desc="The label of the toggle that enables the prompt to translate a page to users.">
     Language used when translating pages
   </message>
diff --git a/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_LANGUAGES_WEBSITE_LANGUAGES_DESCRIPTION.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_LANGUAGES_WEBSITE_LANGUAGES_DESCRIPTION.png.sha1
new file mode 100644
index 0000000..f98b70f
--- /dev/null
+++ b/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_LANGUAGES_WEBSITE_LANGUAGES_DESCRIPTION.png.sha1
@@ -0,0 +1 @@
+61118980122f1e5d69867f34fe4f58d4fde9c127
\ No newline at end of file
diff --git a/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_LANGUAGES_WEBSITE_LANGUAGES_TITLE.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_LANGUAGES_WEBSITE_LANGUAGES_TITLE.png.sha1
new file mode 100644
index 0000000..f98b70f
--- /dev/null
+++ b/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_LANGUAGES_WEBSITE_LANGUAGES_TITLE.png.sha1
@@ -0,0 +1 @@
+61118980122f1e5d69867f34fe4f58d4fde9c127
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_az.xtb b/chrome/app/resources/chromium_strings_az.xtb
index 4bfd51c..4296e87 100644
--- a/chrome/app/resources/chromium_strings_az.xtb
+++ b/chrome/app/resources/chromium_strings_az.xtb
@@ -141,6 +141,7 @@
 <translation id="5653831366781983928">Chromium'u indi başladın</translation>
 <translation id="5698481217667032250">Chromium'u bu dildə görüntüləyin</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS <ph name="BEGIN_LINK_LINUX_OSS" />Linux tərtibat mühiti<ph name="END_LINK_LINUX_OSS" /> kimi əlavə <ph name="BEGIN_LINK_CROS_OSS" />açıq mənbə proqram təminatı<ph name="END_LINK_CROS_OSS" /> ilə əlçatan edilib.</translation>
 <translation id="5862307444128926510">Chromium'a xoş gəlmisiniz</translation>
 <translation id="5895138241574237353">Yenidən başladın</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Şəbəkəyə Giriş</translation>
diff --git a/chrome/app/resources/chromium_strings_de.xtb b/chrome/app/resources/chromium_strings_de.xtb
index aa8673d..2b7efcd 100644
--- a/chrome/app/resources/chromium_strings_de.xtb
+++ b/chrome/app/resources/chromium_strings_de.xtb
@@ -141,6 +141,7 @@
 <translation id="5653831366781983928">Starten Sie Chromium jetzt neu</translation>
 <translation id="5698481217667032250">Chromium in dieser Sprache anzeigen</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS und die <ph name="BEGIN_LINK_LINUX_OSS" />Linux-Entwicklungsumgebung<ph name="END_LINK_LINUX_OSS" /> werden durch zusätzliche <ph name="BEGIN_LINK_CROS_OSS" />Open-Source-Software<ph name="END_LINK_CROS_OSS" /> ermöglicht.</translation>
 <translation id="5862307444128926510">Willkommen bei Chromium</translation>
 <translation id="5895138241574237353">Neu starten</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Netzwerkanmeldung</translation>
diff --git a/chrome/app/resources/chromium_strings_es-419.xtb b/chrome/app/resources/chromium_strings_es-419.xtb
index 834f4e3ee..c0da86d 100644
--- a/chrome/app/resources/chromium_strings_es-419.xtb
+++ b/chrome/app/resources/chromium_strings_es-419.xtb
@@ -139,6 +139,7 @@
 <translation id="5653831366781983928">Reinicia Chromium ahora</translation>
 <translation id="5698481217667032250">Mostrar Chromium en este idioma</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS funciona gracias a <ph name="BEGIN_LINK_CROS_OSS" />software de código abierto<ph name="END_LINK_CROS_OSS" /> adicional, como <ph name="BEGIN_LINK_LINUX_OSS" />el entorno de desarrollo de Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="5862307444128926510">Bienvenido a Chromium</translation>
 <translation id="5895138241574237353">Reiniciar</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" />: Acceso a la red</translation>
diff --git a/chrome/app/resources/chromium_strings_es.xtb b/chrome/app/resources/chromium_strings_es.xtb
index c6517b2f..8fd969c 100644
--- a/chrome/app/resources/chromium_strings_es.xtb
+++ b/chrome/app/resources/chromium_strings_es.xtb
@@ -143,6 +143,7 @@
 <translation id="5653831366781983928">Reinicia Chromium ahora</translation>
 <translation id="5698481217667032250">Mostrar Chromium en este idioma</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS se ha creado gracias a <ph name="BEGIN_LINK_CROS_OSS" />software libre<ph name="END_LINK_CROS_OSS" /> adicional, como el <ph name="BEGIN_LINK_LINUX_OSS" />entorno de desarrollo de Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="5862307444128926510">Te damos la bienvenida a Chromium</translation>
 <translation id="5895138241574237353">Reiniciar</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" />, inicio de sesión en la red</translation>
diff --git a/chrome/app/resources/chromium_strings_eu.xtb b/chrome/app/resources/chromium_strings_eu.xtb
index a9c5a31..10b82e6 100644
--- a/chrome/app/resources/chromium_strings_eu.xtb
+++ b/chrome/app/resources/chromium_strings_eu.xtb
@@ -68,7 +68,7 @@
 
 <ph name="USER_DATA_DIRECTORY" /></translation>
 <translation id="3283186697780795848">Chromium-en <ph name="PRODUCT_VERSION" /> bertsioa dago instalatuta</translation>
-<translation id="328888136576916638">Google API gakoak falta dira. Chromium-en funtzionalitate batzuk desgaituko dira.</translation>
+<translation id="328888136576916638">Google APIko gakoak falta dira. Chromium-en funtzionalitate batzuk desgaitu egingo dira.</translation>
 <translation id="3296368748942286671">Mantendu atzeko planoko aplikazioak abian Chromium ixten denean</translation>
 <translation id="331951419404882060">Saioa hastean gertatu den errore bat dela-eta, Chromium OS sistemak ezin izan ditu sinkronizatu zure datuak.</translation>
 <translation id="3350761136195634146">Badago kontu honen Chromium-eko profil bat</translation>
diff --git a/chrome/app/resources/chromium_strings_fr.xtb b/chrome/app/resources/chromium_strings_fr.xtb
index cb6554a..827bab7 100644
--- a/chrome/app/resources/chromium_strings_fr.xtb
+++ b/chrome/app/resources/chromium_strings_fr.xtb
@@ -142,6 +142,7 @@
 <translation id="5653831366781983928">Veuillez redémarrer Chromium maintenant</translation>
 <translation id="5698481217667032250">Afficher Chromium dans cette langue</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS fonctionne grâce à d'autres <ph name="BEGIN_LINK_CROS_OSS" />logiciels Open Source<ph name="END_LINK_CROS_OSS" />, tout comme l'<ph name="BEGIN_LINK_LINUX_OSS" />environnement de développement Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="5862307444128926510">Bienvenue dans Chromium</translation>
 <translation id="5895138241574237353">Redémarrer</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Connexion au réseau</translation>
diff --git a/chrome/app/resources/chromium_strings_id.xtb b/chrome/app/resources/chromium_strings_id.xtb
index 1c68c3c..f1dfd4a 100644
--- a/chrome/app/resources/chromium_strings_id.xtb
+++ b/chrome/app/resources/chromium_strings_id.xtb
@@ -141,6 +141,7 @@
 <translation id="5653831366781983928">Mulai ulang Chromium sekarang</translation>
 <translation id="5698481217667032250">Tampilkan Chromium dalam bahasa ini</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS terwujud karena adanya <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> tambahan, seperti <ph name="BEGIN_LINK_LINUX_OSS" />lingkungan pengembangan Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="5862307444128926510">Selamat Datang di Chromium</translation>
 <translation id="5895138241574237353">Mulai Ulang</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Login Jaringan</translation>
diff --git a/chrome/app/resources/chromium_strings_it.xtb b/chrome/app/resources/chromium_strings_it.xtb
index 2c5ddab..23632079 100644
--- a/chrome/app/resources/chromium_strings_it.xtb
+++ b/chrome/app/resources/chromium_strings_it.xtb
@@ -141,6 +141,7 @@
 <translation id="5653831366781983928">Riavvia subito Chromium</translation>
 <translation id="5698481217667032250">Visualizza Chromium in questa lingua</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">La realizzazione di Chromium OS è stata possibile grazie a <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> aggiuntivo, noto come <ph name="BEGIN_LINK_LINUX_OSS" />ambiente di sviluppo Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="5862307444128926510">Benvenuto in Chromium</translation>
 <translation id="5895138241574237353">Riavvia</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Accesso rete</translation>
diff --git a/chrome/app/resources/chromium_strings_ja.xtb b/chrome/app/resources/chromium_strings_ja.xtb
index 2b07e3a..66ed57e 100644
--- a/chrome/app/resources/chromium_strings_ja.xtb
+++ b/chrome/app/resources/chromium_strings_ja.xtb
@@ -141,6 +141,7 @@
 <translation id="5653831366781983928">今すぐ Chromium を再起動してください</translation>
 <translation id="5698481217667032250">Chromium をこの言語で表示</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS も <ph name="BEGIN_LINK_LINUX_OSS" />Linux 開発環境<ph name="END_LINK_LINUX_OSS" />も追加の<ph name="BEGIN_LINK_CROS_OSS" />オープンソース ソフトウェア<ph name="END_LINK_CROS_OSS" />によって実現しました。</translation>
 <translation id="5862307444128926510">Chromium へようこそ</translation>
 <translation id="5895138241574237353">再起動</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - ネットワークにログイン</translation>
diff --git a/chrome/app/resources/chromium_strings_kk.xtb b/chrome/app/resources/chromium_strings_kk.xtb
index c0bab809..b3d5e93 100644
--- a/chrome/app/resources/chromium_strings_kk.xtb
+++ b/chrome/app/resources/chromium_strings_kk.xtb
@@ -143,6 +143,7 @@
 <translation id="5653831366781983928">Chromium браузерін қайта іске қосыңыз</translation>
 <translation id="5698481217667032250">Chromium жүйесін осы тілде көрсету</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS операциялық жүйесі де <ph name="BEGIN_LINK_LINUX_OSS" />Linux әзірлеу ортасы<ph name="END_LINK_LINUX_OSS" /> сияқты<ph name="BEGIN_LINK_CROS_OSS" />ашық кодты бағдарламалық құрал<ph name="END_LINK_CROS_OSS" /> арқасында қолжетімді болды.</translation>
 <translation id="5862307444128926510">Chromium жүйесіне қош келдіңіз</translation>
 <translation id="5895138241574237353">Қайта іске қосу</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Желіге кіру</translation>
diff --git a/chrome/app/resources/chromium_strings_ko.xtb b/chrome/app/resources/chromium_strings_ko.xtb
index 540cd7b4..770d920 100644
--- a/chrome/app/resources/chromium_strings_ko.xtb
+++ b/chrome/app/resources/chromium_strings_ko.xtb
@@ -143,6 +143,7 @@
 <translation id="5653831366781983928">지금 Chromium을 다시 시작하세요</translation>
 <translation id="5698481217667032250">이 언어로 Chromium 표시</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380"><ph name="BEGIN_LINK_LINUX_OSS" />Linux 개발 환경<ph name="END_LINK_LINUX_OSS" />과 마찬가지로, Chromium OS는 추가 <ph name="BEGIN_LINK_CROS_OSS" />오픈소스 소프트웨어<ph name="END_LINK_CROS_OSS" />를 사용하여 개발되었습니다.</translation>
 <translation id="5862307444128926510">Chromium에 오신 것을 환영합니다.</translation>
 <translation id="5895138241574237353">다시 시작</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - 네트워크 로그인</translation>
diff --git a/chrome/app/resources/chromium_strings_ky.xtb b/chrome/app/resources/chromium_strings_ky.xtb
index 3ecd680..b8e4784 100644
--- a/chrome/app/resources/chromium_strings_ky.xtb
+++ b/chrome/app/resources/chromium_strings_ky.xtb
@@ -143,6 +143,7 @@
 <translation id="5653831366781983928">Chromium'ду азыр өчүрүп күйгүзүңүз</translation>
 <translation id="5698481217667032250">Chromium ушул тилде көрүнсүн</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS тутуму, <ph name="BEGIN_LINK_LINUX_OSS" />Linux'ту өнүктүрүү чөйрөсү <ph name="END_LINK_LINUX_OSS" /> сыяктуу, кошумча <ph name="BEGIN_LINK_CROS_OSS" />баштапкы коду ачык программалык камсыздоонун<ph name="END_LINK_CROS_OSS" /> жардамы менен иштейт.</translation>
 <translation id="5862307444128926510">Chromium'га кош келиңиз</translation>
 <translation id="5895138241574237353">Өчүрүп күйгүзүү</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Тармакка кирүү</translation>
diff --git a/chrome/app/resources/chromium_strings_ml.xtb b/chrome/app/resources/chromium_strings_ml.xtb
index cdfef96..0ce1e6ae 100644
--- a/chrome/app/resources/chromium_strings_ml.xtb
+++ b/chrome/app/resources/chromium_strings_ml.xtb
@@ -143,6 +143,7 @@
 <translation id="5653831366781983928">Chromium ഇപ്പോൾ റീസ്‌റ്റാർട്ട് ചെയ്യുക</translation>
 <translation id="5698481217667032250">ഈ ഭാഷയിൽ Chromium പ്രദർശിപ്പിക്കുക</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS സാധ്യമാക്കിയത് <ph name="BEGIN_LINK_LINUX_OSS" />Linux വികസന പരിതസ്ഥിതി<ph name="END_LINK_LINUX_OSS" /> പോലുള്ള അധിക <ph name="BEGIN_LINK_CROS_OSS" />ഓപ്പൺ സോഴ്‌സ് സോഫ്‌റ്റ്‌വെയർ<ph name="END_LINK_CROS_OSS" /> ഉപയോഗിച്ചാണ്.</translation>
 <translation id="5862307444128926510">Chromium-ത്തിലേക്ക് സ്വാഗതം</translation>
 <translation id="5895138241574237353">പുനരാരംഭിക്കുക</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - നെറ്റ്‌വർക്ക് സൈൻ ഇൻ</translation>
diff --git a/chrome/app/resources/chromium_strings_nl.xtb b/chrome/app/resources/chromium_strings_nl.xtb
index 7e7d6aa..897c1bb 100644
--- a/chrome/app/resources/chromium_strings_nl.xtb
+++ b/chrome/app/resources/chromium_strings_nl.xtb
@@ -143,6 +143,7 @@
 <translation id="5653831366781983928">Chromium nu opnieuw opstarten</translation>
 <translation id="5698481217667032250">Chromium weergeven in deze taal</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS wordt mogelijk gemaakt door aanvullende <ph name="BEGIN_LINK_CROS_OSS" />opensource-software<ph name="END_LINK_CROS_OSS" />, net als de <ph name="BEGIN_LINK_LINUX_OSS" />Linux-ontwikkelomgeving<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="5862307444128926510">Welkom bij Chromium</translation>
 <translation id="5895138241574237353">Opnieuw starten</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Inloggen bij netwerk</translation>
diff --git a/chrome/app/resources/chromium_strings_pa.xtb b/chrome/app/resources/chromium_strings_pa.xtb
index b9e8401..93c8892 100644
--- a/chrome/app/resources/chromium_strings_pa.xtb
+++ b/chrome/app/resources/chromium_strings_pa.xtb
@@ -143,6 +143,7 @@
 <translation id="5653831366781983928">ਕਿਰਪਾ ਕਰਕੇ ਹੁਣੇ Chromium ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ</translation>
 <translation id="5698481217667032250">Chromium ਨੂੰ ਇਸ ਭਾਸ਼ਾ ਵਿੱਚ  ਦਿਖਾਓ ।</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS ਨੂੰ ਵਧੀਕ <ph name="BEGIN_LINK_CROS_OSS" />ਖੁੱਲ੍ਹੇ ਸਰੋਤ ਸਾਫ਼ਟਵੇਅਰ<ph name="END_LINK_CROS_OSS" /> ਕਰਕੇ ਸੰਭਵ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਜਿਵੇਂ ਕਿ <ph name="BEGIN_LINK_LINUX_OSS" />Linux ਵਿਕਾਸ ਵਾਤਾਵਰਨ<ph name="END_LINK_LINUX_OSS" />।</translation>
 <translation id="5862307444128926510">Chromium ਵਿੱਚ ਸੁਆਗਤ ਹੈ</translation>
 <translation id="5895138241574237353">ਰੀਸਟਾਰਟ ਕਰੋ</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - ਨੈੱਟਵਰਕ ਸਾਈਨ-ਇਨ</translation>
diff --git a/chrome/app/resources/chromium_strings_ru.xtb b/chrome/app/resources/chromium_strings_ru.xtb
index 3414bf25..06abba1 100644
--- a/chrome/app/resources/chromium_strings_ru.xtb
+++ b/chrome/app/resources/chromium_strings_ru.xtb
@@ -139,6 +139,7 @@
 <translation id="5653831366781983928">Перезапустите Chromium</translation>
 <translation id="5698481217667032250">Отображать Chromium на этом языке</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS, как и <ph name="BEGIN_LINK_LINUX_OSS" />среда разработки Linux<ph name="END_LINK_LINUX_OSS" />, работает благодаря дополнительному <ph name="BEGIN_LINK_CROS_OSS" />программному обеспечению с открытым исходным кодом<ph name="END_LINK_CROS_OSS" />.</translation>
 <translation id="5862307444128926510">Добро пожаловать в Chromium</translation>
 <translation id="5895138241574237353">Перезапустить</translation>
 <translation id="5903106910045431592">"<ph name="PAGE_TITLE" />" – вход в сеть</translation>
diff --git a/chrome/app/resources/chromium_strings_sq.xtb b/chrome/app/resources/chromium_strings_sq.xtb
index adbfb6f..1ccfc8f5 100644
--- a/chrome/app/resources/chromium_strings_sq.xtb
+++ b/chrome/app/resources/chromium_strings_sq.xtb
@@ -143,6 +143,7 @@
 <translation id="5653831366781983928">Rinise Chromium tani</translation>
 <translation id="5698481217667032250">Shfaqe Chromium në këtë gjuhë</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS mundësohet nga <ph name="BEGIN_LINK_CROS_OSS" />softuerë shtesë me burim të hapur<ph name="END_LINK_CROS_OSS" />, si p.sh. <ph name="BEGIN_LINK_LINUX_OSS" />mjedisi i zhvillimit të Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="5862307444128926510">Mirë se vjen në Chromium</translation>
 <translation id="5895138241574237353">Rinis</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - identifikimi në rrjet</translation>
diff --git a/chrome/app/resources/chromium_strings_ta.xtb b/chrome/app/resources/chromium_strings_ta.xtb
index b5c7d339..d23ddd3 100644
--- a/chrome/app/resources/chromium_strings_ta.xtb
+++ b/chrome/app/resources/chromium_strings_ta.xtb
@@ -141,6 +141,7 @@
 <translation id="5653831366781983928">Chromiumமை இப்போது மீண்டும் தொடங்கவும்</translation>
 <translation id="5698481217667032250">Chromiumமை இந்த மொழியில் காட்டு</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380"><ph name="BEGIN_LINK_LINUX_OSS" />Linux டெவெலப்மெண்ட் சூழல்<ph name="END_LINK_LINUX_OSS" /> போலவே, கூடுதல் <ph name="BEGIN_LINK_CROS_OSS" />ஓப்பன் சோர்ஸ் மென்பொருளால்<ph name="END_LINK_CROS_OSS" /> Chromium OS உருவாக்கப்பட்டுள்ளது.</translation>
 <translation id="5862307444128926510">Chromium க்கு வரவேற்கிறோம்</translation>
 <translation id="5895138241574237353">மறுதொடக்கம்</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - நெட்வொர்க் உள்நுழைவு</translation>
diff --git a/chrome/app/resources/chromium_strings_tr.xtb b/chrome/app/resources/chromium_strings_tr.xtb
index bab5459..f46b8b0 100644
--- a/chrome/app/resources/chromium_strings_tr.xtb
+++ b/chrome/app/resources/chromium_strings_tr.xtb
@@ -139,6 +139,7 @@
 <translation id="5653831366781983928">Lütfen Chromium'u şimdi yeniden başlatın</translation>
 <translation id="5698481217667032250">Chromium'u bu dilde görüntüle</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5854740544000584380">Chromium OS, <ph name="BEGIN_LINK_LINUX_OSS" />Linux geliştirme ortamında<ph name="END_LINK_LINUX_OSS" /> olduğu gibi ek <ph name="BEGIN_LINK_CROS_OSS" />açık kaynak yazılımlardan<ph name="END_LINK_CROS_OSS" /> yararlanılarak geliştirilmiştir.</translation>
 <translation id="5862307444128926510">Chromium'a Hoş Geldiniz</translation>
 <translation id="5895138241574237353">Yeniden başlat</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Ağda Oturum Açın</translation>
diff --git a/chrome/app/resources/chromium_strings_uk.xtb b/chrome/app/resources/chromium_strings_uk.xtb
index da9adf2..3bcbeb0 100644
--- a/chrome/app/resources/chromium_strings_uk.xtb
+++ b/chrome/app/resources/chromium_strings_uk.xtb
@@ -141,6 +141,7 @@
 <translation id="5653831366781983928">Перезапустіть Chromium</translation>
 <translation id="5698481217667032250">Вибрати цю мову для Chromium</translation>
 <translation id="5820394555380036790">ОС Chromium</translation>
+<translation id="5854740544000584380">ОС Chromium і <ph name="BEGIN_LINK_LINUX_OSS" />середовище для розробки Linux<ph name="END_LINK_LINUX_OSS" /> працюють завдяки додатковому <ph name="BEGIN_LINK_CROS_OSS" />програмному забезпеченню з відкритим кодом<ph name="END_LINK_CROS_OSS" />.</translation>
 <translation id="5862307444128926510">Вітаємо в Chromium</translation>
 <translation id="5895138241574237353">Перезапустити</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Вхід у мережу</translation>
diff --git a/chrome/app/resources/chromium_strings_vi.xtb b/chrome/app/resources/chromium_strings_vi.xtb
index 1dea86c..78c6511 100644
--- a/chrome/app/resources/chromium_strings_vi.xtb
+++ b/chrome/app/resources/chromium_strings_vi.xtb
@@ -141,6 +141,7 @@
 <translation id="5653831366781983928">Vui lòng khởi động lại Chromium ngay bây giờ</translation>
 <translation id="5698481217667032250">Hiển thị Chromium bằng ngôn ngữ này</translation>
 <translation id="5820394555380036790">Hệ điều hành Chromium</translation>
+<translation id="5854740544000584380">Chromium OS có thể hoạt động được là nhờ <ph name="BEGIN_LINK_CROS_OSS" />phần mềm nguồn mở<ph name="END_LINK_CROS_OSS" /> bổ sung, tương tự như <ph name="BEGIN_LINK_LINUX_OSS" />môi trường phát triển Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="5862307444128926510">Chào mừng bạn đến với Chromium</translation>
 <translation id="5895138241574237353">Khởi động lại</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Đăng nhập vào mạng</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-HK.xtb b/chrome/app/resources/chromium_strings_zh-HK.xtb
index 766f3e6..db61fc3 100644
--- a/chrome/app/resources/chromium_strings_zh-HK.xtb
+++ b/chrome/app/resources/chromium_strings_zh-HK.xtb
@@ -143,6 +143,7 @@
 <translation id="5653831366781983928">請立即重新啟動 Chromium</translation>
 <translation id="5698481217667032250">以此語言顯示 Chromium</translation>
 <translation id="5820394555380036790">Chromium 作業系統</translation>
+<translation id="5854740544000584380">「Chromium 作業系統」的開發全賴其他<ph name="BEGIN_LINK_CROS_OSS" />開放原始碼軟件<ph name="END_LINK_CROS_OSS" />協助才得以面世,<ph name="BEGIN_LINK_LINUX_OSS" />Linux 開發環境<ph name="END_LINK_LINUX_OSS" />也一樣。</translation>
 <translation id="5862307444128926510">歡迎使用 Chromium</translation>
 <translation id="5895138241574237353">重新啟動</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - 網絡登入</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb
index 82a8af3..16de9c07 100644
--- a/chrome/app/resources/chromium_strings_zh-TW.xtb
+++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -141,6 +141,7 @@
 <translation id="5653831366781983928">請立即重新啟動 Chromium</translation>
 <translation id="5698481217667032250">將 Chromium 的介面文字設為這種語言</translation>
 <translation id="5820394555380036790">Chromium 作業系統</translation>
+<translation id="5854740544000584380">Chromium 作業系統藉助了其他<ph name="BEGIN_LINK_CROS_OSS" />開放原始碼軟體<ph name="END_LINK_CROS_OSS" />的相關技術才得以問世,<ph name="BEGIN_LINK_LINUX_OSS" />Linux 開發環境<ph name="END_LINK_LINUX_OSS" />也是如此。</translation>
 <translation id="5862307444128926510">歡迎使用 Chromium</translation>
 <translation id="5895138241574237353">重新啟動</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - 網路登入</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb
index 32f4167..2e6f039 100644
--- a/chrome/app/resources/generated_resources_af.xtb
+++ b/chrome/app/resources/generated_resources_af.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">Vee blaaidata uit …</translation>
 <translation id="3617891479562106823">Agtergronde is nie beskikbaar nie. Probeer later weer.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{'n program}other{# programme}}</translation>
 <translation id="362333465072914957">Wag vir die CA om 'n sertifikaat uit te reik</translation>
 <translation id="3624567683873126087">Ontsluit toestel en meld by Google-rekening aan</translation>
 <translation id="3625481642044239431">Ongeldige lêer is gekies. Probeer weer.</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;Bestuur soekenjins …</translation>
 <translation id="3895090224522145010">Kerberos-gebruikernaam</translation>
 <translation id="389521680295183045">Werwe kan vra om te weet wanneer jy jou toestel aktief gebruik</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{'n prent}other{# prente}}</translation>
 <translation id="3898233949376129212">Toesteltaal</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> wil: <ph name="FIRST_PERMISSION" /> en <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Kies sleutelbord</translation>
@@ -3577,6 +3579,7 @@
 <translation id="4943368462779413526">Voetbal</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" wil aan 'n seriepoort koppel</translation>
 <translation id="4944310289250773232">Hierdie stawingdiens word gehou deur <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{’n lêer}other{# lêers}}</translation>
 <translation id="495170559598752135">Handelinge</translation>
 <translation id="4953808748584563296">Verstek- oranje avatar</translation>
 <translation id="4955710816792587366">Kies jou PIN</translation>
@@ -5077,6 +5080,7 @@
 <translation id="6664237456442406323">Ongelukkig is jou rekenaar opgestel met 'n misvormde hardeware-ID. Dit verhinder die Chrome-bedryfstelsel om met die nuutste sekuriteitsoplossings op te dateer en jou rekenaar <ph name="BEGIN_BOLD" />kan dalk blootgestel word aan kwaadwillige aanvalle<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Iets het verkeerd geloop met die oopmaak van jou profiel. Meld asseblief af en meld dan weer aan.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> is nou beskikbaar</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{'n adres}other{# adresse}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Voer jou wagfrase in om sinkronisering te begin</translation>
 <translation id="6675665718701918026">Wystoestel is gekoppel</translation>
@@ -5773,6 +5777,7 @@
 <translation id="7456142309650173560">ontwikkeling</translation>
 <translation id="7456847797759667638">Maak ligging oop …</translation>
 <translation id="7457384018036134905">Bestuur tale in Chrome-bedryfstelselinstellings</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{'n skakel}other{# skakels}}</translation>
 <translation id="7458168200501453431">Gebruik dieselfde speltoetser wat in Google-soektog gebruik word. Teks wat jy in die blaaier tik, word na Google toe gestuur.</translation>
 <translation id="7460045493116006516">Huidige tema wat jy geïnstalleer het</translation>
 <translation id="7461924472993315131">Pin</translation>
@@ -6173,6 +6178,7 @@
 <translation id="7883792253546618164">Teken enige tyd uit.</translation>
 <translation id="788453346724465748">Laai tans rekeninginligting …</translation>
 <translation id="7885253890047913815">Onlangse bestemmings</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{'n item}other{# items}}</translation>
 <translation id="7886605625338676841">e-SIM</translation>
 <translation id="7887334752153342268">Dupliseer</translation>
 <translation id="7887864092952184874">Bluetooth-muis is saamgebind</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Google Drive-lêers</translation>
 <translation id="8141584439523427891">Maak tans in alternatiewe blaaier oop</translation>
 <translation id="8141725884565838206">Bestuur jou wagwoorde</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{'n video}other{# video's}}</translation>
 <translation id="8143442547342702591">Ongeldige program</translation>
 <translation id="8143951647992294073">Kies <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">As jy reeds op hierdie toestel geregistreer is, kan jy <ph name="LINK2_START" />as 'n bestaande gebruiker aanmeld<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Lesermodus vir webbladsye</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Skuif oortjie na nuwe venster toe}other{Skuif oortjies na nuwe venster toe}}</translation>
 <translation id="8165997195302308593">Crostini-poortaanstuur</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{'n foonnommer}other{# foonnommers}}</translation>
 <translation id="8168435359814927499">Inhoud</translation>
 <translation id="8168943654413034772">Kan nie die enigste skakelaar verwyder wat aan Kies toegewys is nie. Druk enige sleutel om uit te gaan.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Voeg oortjie by leeslys}other{Voeg oortjies by leeslys}}</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index ad094beb..81b8b0cd 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">&amp;የአሰሳ ውሂብ አጽዳ…</translation>
 <translation id="3617891479562106823">ዳራዎች አይገኙም። ቆይተው እንደገና ይሞክሩ።</translation>
 <translation id="3619115746895587757">ካፑቺኖ</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{አንድ መተግበሪያ}one{# መተግበሪያዎች}other{# መተግበሪያዎች}}</translation>
 <translation id="362333465072914957">የእውቅና ማረጋገጫን ለመስጠት CAን በመጠበቅ ላይ</translation>
 <translation id="3624567683873126087">መሣሪያን ይክፈቱ እና ወደ Google በመለያ ይግቡ</translation>
 <translation id="3625481642044239431">ልክ ያልሆነ ፋይል ተመርጧል። እንደገና ይሞክሩ።</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;የፍለጋ ፕሮግራሞችን ያስተዳድሩ...</translation>
 <translation id="3895090224522145010">የKerberos ተጠቃሚ ስም</translation>
 <translation id="389521680295183045">የእርስዎን መሣሪያ በንቃት በሚጠቀሙበት ጊዜ ጣቢያዎች ለማወቅ ጥያቄ ማቅረብ ይችላሉ</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{አንድ ምስል}one{# ምስሎች}other{# ምስሎች}}</translation>
 <translation id="3898233949376129212">የመሣሪያ ቋንቋ</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> የሚከተሉትን ማድረግ ይፈልጋል፦ <ph name="FIRST_PERMISSION" /> እና <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">የቁልፍ ሰሌዳን ይምረጡ</translation>
@@ -3575,6 +3577,7 @@
 <translation id="4943368462779413526">የአሜሪካ እግር ኳስ</translation>
 <translation id="4943691134276646401">«<ph name="CHROME_EXTENSION_NAME" />» ወደ ተከታታይ ወደብ መገናኘት ይፈልጋል</translation>
 <translation id="4944310289250773232">ይህ ማረጋገጫ አገልግሎት የሚስተናገደው በ <ph name="SAML_DOMAIN" /> ነው</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{አንድ ፋይል}one{# ፋይሎች}other{# ፋይሎች}}</translation>
 <translation id="495170559598752135">እርምጃዎች</translation>
 <translation id="4953808748584563296">ነባሪ ብርቱካናማ አምሳያ</translation>
 <translation id="4955710816792587366">የእርስዎን ፒን ይምረጡ</translation>
@@ -5074,6 +5077,7 @@
 <translation id="6664237456442406323">የአጋጣሚ ነገር ሆኖ ኮምፒውተርዎ በተበላሸ የሃርድዌር መታወቂያ ነው የተዋቀረው። ይሄ Chrome ስርዓተ ክወና በቅርብ ጊዜዎቹ የደህንነት ጥገናዎች እንዳይዘመን ያግደዋል፣ እና የእርስዎ ኮምፒውተር <ph name="BEGIN_BOLD" />ለተንኮል-አዘል ጥቃቶች የተጋለጠ ሊሆን ይችላል<ph name="END_BOLD" />።</translation>
 <translation id="6664774537677393800">የእርስዎን መገለጫ በመክፈት ላይ የሆነ ችግር ተፈጥሯል። እባክዎ ዘግተው ይውጡና እንደገና ተመልሰው ይግቡ።</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> አሁን ይገኛል</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{አድራሻ}one{# አድራሻዎች}other{# አድራሻዎች}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (ዩኤስቢ)</translation>
 <translation id="6674571176963658787">ስምረትን ለመጀመር የይለፍ ሐረግዎን ያስገቡ</translation>
 <translation id="6675665718701918026">መጠቆሚያ መሣሪያ ተገናኝቷል</translation>
@@ -5770,6 +5774,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">የተቀመጠበትን ቦታ ክፈት…</translation>
 <translation id="7457384018036134905">ቋንቋዎችን በChrome OS ቅንብሮች ውስጥ ያስተዳድሩ</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{አንድ አገናኝ}one{# አገናኞች}other{# አገናኞች}}</translation>
 <translation id="7458168200501453431">በGoogle ፍለጋ ላይ ስራ ላይ የሚውለው ተመሳሳዩን ፊደል ማረሚያ ይጠቀማል። በአሳሹ ውስጥ የሚተይቡት ጽሑፍ ወደ Google ይላካል።</translation>
 <translation id="7460045493116006516">እርስዎ የጫኑት አሁን ያለ ገጽታ</translation>
 <translation id="7461924472993315131">ሰካ</translation>
@@ -6170,6 +6175,7 @@
 <translation id="7883792253546618164">በማንኛውም ጊዜ ከደንበኝነት ምዝገባ ይውጡ።</translation>
 <translation id="788453346724465748">የመለያ መረጃን በመጫን ላይ...</translation>
 <translation id="7885253890047913815">የቅርብ ጊዜ መድረሻዎች</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{አንድ ንጥል}one{# ንጥሎች}other{# ንጥሎች}}</translation>
 <translation id="7886605625338676841">ኢሲም</translation>
 <translation id="7887334752153342268">አባዛ</translation>
 <translation id="7887864092952184874">የብሉቱዝ መዳፊት ተጣምሯል</translation>
@@ -6414,6 +6420,7 @@
 <translation id="8139447493436036221">የGoogle Drive ፋይሎች</translation>
 <translation id="8141584439523427891">በአማራጭ አሳሽ ውስጥ አሁን በመክፈት ላይ</translation>
 <translation id="8141725884565838206">የይለፍ ቃልዎችዎን ያስተዳድሩ</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{አንድ ቪዲዮ}one{# ቪዲዮዎች}other{# ቪዲዮዎች}}</translation>
 <translation id="8143442547342702591">ልክ ያልሆነ መተግበሪያ</translation>
 <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" />ን ምረጥ</translation>
 <translation id="8146177459103116374">አስቀድመው በዚህ መሣሪያ ላይ ከተመዘገቡ <ph name="LINK2_START" />እንደ ነባር ተጠቃሚ መግባት ይችላሉ<ph name="LINK2_END" />።</translation>
@@ -6433,6 +6440,7 @@
 <translation id="8161293209665121583">ለድረ-ገጾች የአንባቢ ሁነታ</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{ትር ወደ አዲስ መስኮት ውሰድ}one{ትሮችን ወደ አዲስ መስኮት ውሰድ}other{ትሮችን ወደ አዲስ መስኮት ውሰድ}}</translation>
 <translation id="8165997195302308593">የCrostini ወደብ ማስተላለፍ</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{ስልክ ቁጥር}one{# ስልክ ቁጥሮች}other{# ስልክ ቁጥሮች}}</translation>
 <translation id="8168435359814927499">ይዘት</translation>
 <translation id="8168943654413034772">ለምረጥ የተመደበውን ብቸኛውን ማብሪያ/ማጥፊያ ማስወገድ አይቻልም። ለመውጣት ማንኛውንም ቁልፍ ይጫኑ።</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{ትርን ወደ ንባብ ዝርዝር ያክሉ}one{ትሮችን ወደ ንባብ ዝርዝር ያክሉ}other{ትሮችን ወደ ንባብ ዝርዝር ያክሉ}}</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index 8e89f51a..c971521 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -2399,6 +2399,7 @@
 <translation id="3616741288025931835">&amp;محو بيانات التصفح...</translation>
 <translation id="3617891479562106823">الخلفيات غير متاحة. يُرجى إعادة المحاولة لاحقًا.</translation>
 <translation id="3619115746895587757">كابتشينو</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{تطبيق واحد}zero{# تطبيق}two{تطبيقان}few{# تطبيقات}many{# تطبيقًا}other{# تطبيق}}</translation>
 <translation id="362333465072914957">‏في انتظار إصدار شهادة CA</translation>
 <translation id="3624567683873126087">‏فتح قفل الجهاز وتسجيل الدخول إلى حساب Google</translation>
 <translation id="3625481642044239431">تم اختيار ملف غير صالح. يرجى إعادة المحاولة.</translation>
@@ -2670,6 +2671,7 @@
 <translation id="3895076768659607631">&amp;إدارة محركات البحث...</translation>
 <translation id="3895090224522145010">‏اسم مستخدم Kerberos</translation>
 <translation id="389521680295183045">السماح للمواقع الإلكترونية بطلب إذن لمعرفة الأوقات التي تستخدم فيها الجهاز بشكل نشط</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{صورة واحدة}zero{# صورة}two{صورتان}few{# صور}many{# صورة}other{# صورة}}</translation>
 <translation id="3898233949376129212">لغة الجهاز</translation>
 <translation id="3898327728850887246">يحتاج <ph name="SITE_NAME" /> إلى الإذنَين: <ph name="FIRST_PERMISSION" /> و<ph name="SECOND_PERMISSION" />.</translation>
 <translation id="389901847090970821">تحديد لوحة مفاتيح</translation>
@@ -3580,6 +3582,7 @@
 <translation id="4943368462779413526">كرة القدم</translation>
 <translation id="4943691134276646401">يجب ربط "<ph name="CHROME_EXTENSION_NAME" />" بمنفذ تسلسلي</translation>
 <translation id="4944310289250773232">تتم استضافة خدمة المصادقة هذه من قِبل <ph name="SAML_DOMAIN" />.</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{ملفّ واحد}zero{# ملفّ}two{ملفّان}few{# ملفّات}many{# ملفًّا}other{# ملف}}</translation>
 <translation id="495170559598752135">إجراءات</translation>
 <translation id="4953808748584563296">الصورة الرمزية التلقائية البرتقالية</translation>
 <translation id="4955710816792587366">اختيار رقم التعريف الشخصي</translation>
@@ -5079,6 +5082,7 @@
 <translation id="6664237456442406323">‏للأسف، تم إعداد جهاز الكمبيوتر باستخدام معرف جهاز غير صحيح. وهذا يمنع تحديث نظام التشغيل Chrome بأحدث إصلاحات الأمان، وقد يكون جهاز الكمبيوتر <ph name="BEGIN_BOLD" />عرضة للهجمات الضارة<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">حدث خطأ ما أثناء فتح ملفك الشخصي. يُرجى الخروج ثم إعادة تسجيل الدخول.</translation>
 <translation id="6670142487971298264">أصبح تطبيق <ph name="APP_NAME" /> متوفّرًا الآن.</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{عنوان واحد}zero{# عنوان}two{عنوانان}few{# عناوين}many{# عنوانًا}other{# عنوان}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">لبدء المزامنة، يجب إدخال عبارة المرور.</translation>
 <translation id="6675665718701918026">الإشارة إلى الأجهزة المتصلة</translation>
@@ -5775,6 +5779,7 @@
 <translation id="7456142309650173560">مطوري البرامج</translation>
 <translation id="7456847797759667638">فتح موقع...</translation>
 <translation id="7457384018036134905">‏إدارة اللغات في إعدادات "نظام التشغيل Chrome"</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{رابط واحد}zero{# رابط}two{رابطان}few{# روابط}many{# رابطًا}other{# رابط}}</translation>
 <translation id="7458168200501453431">‏يُستخدَم المدقق الإملائي نفسه الذي يتم استخدامه في "بحث Google". يتم إرسال النص الذي تكتبه في المتصفِّح إلى Google.</translation>
 <translation id="7460045493116006516">التصميم الحالي الذي ثبَّتّه</translation>
 <translation id="7461924472993315131">تثبيت</translation>
@@ -6175,6 +6180,7 @@
 <translation id="7883792253546618164">يمكنك إلغاء الاشتراك في أي وقت.</translation>
 <translation id="788453346724465748">جارٍ تحميل معلومات الحساب...</translation>
 <translation id="7885253890047913815">أحدث الوجهات</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{عنصر واحد}zero{# عنصر}two{عنصران}few{# عناصر}many{# عنصرًا}other{# عنصر}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">تكرار</translation>
 <translation id="7887864092952184874">ماوس بلوتوث مقترن</translation>
@@ -6415,6 +6421,7 @@
 <translation id="8139447493436036221">‏ملفات Google Drive</translation>
 <translation id="8141584439523427891">جارٍ الفتح في متصفِّح بديل الآن</translation>
 <translation id="8141725884565838206">إدارة كلمات المرور</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{فيديو واحد}zero{# فيديو}two{فيديوهان}few{# فيديوهات}many{# فيديو}other{# فيديو}}</translation>
 <translation id="8143442547342702591">التطبيق غير صالح</translation>
 <translation id="8143951647992294073">اختيار <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">إذا كنت مسجلاً على هذا الجهاز من قبل، يمكنك <ph name="LINK2_START" />تسجيل الدخول كمستخدم حالي<ph name="LINK2_END" />.</translation>
@@ -6434,6 +6441,7 @@
 <translation id="8161293209665121583">وضع القارئ لصفحات الويب</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{نقل علامة تبويب واحدة إلى نافذة جديدة}zero{نقل علامات تبويب إلى نافذة جديدة}two{نقل علامتَي تبويب إلى نافذة جديدة}few{نقل علامات تبويب إلى نافذة جديدة}many{نقل علامات تبويب إلى نافذة جديدة}other{نقل علامات تبويب إلى نافذة جديدة}}</translation>
 <translation id="8165997195302308593">‏إعادة توجيه منفذ Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{رقم هاتف واحد}zero{# رقم هاتف}two{رقما هاتف}few{# أرقام هاتف}many{# رقم هاتف}other{# رقم هاتف}}</translation>
 <translation id="8168435359814927499">المحتوى</translation>
 <translation id="8168943654413034772">تتعذّر إزالة المفتاح الوحيد المخصَّص للإجراء "اختيار". يُرجى الضغط على أي مفتاح للخروج.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{إضافة علامة التبويب إلى قائمة القراءة}zero{إضافة علامات التبويب إلى قائمة القراءة}two{إضافة علامتَي التبويب إلى قائمة القراءة}few{إضافة علامات التبويب إلى قائمة القراءة}many{إضافة علامات التبويب إلى قائمة القراءة}other{إضافة علامات التبويب إلى قائمة القراءة}}</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb
index 25c7de1..b7fb4365 100644
--- a/chrome/app/resources/generated_resources_as.xtb
+++ b/chrome/app/resources/generated_resources_as.xtb
@@ -2389,6 +2389,7 @@
 <translation id="3616741288025931835">&amp;ব্ৰাউজিং ডেটা মচক...</translation>
 <translation id="3617891479562106823">নেপথ্য উপলব্ধ নহয়। পিছত পুনৰ চেষ্টা কৰক।</translation>
 <translation id="3619115746895587757">কেপ’চিনো</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{এটা এপ্}one{# টা এপ্}other{# টা এপ্}}</translation>
 <translation id="362333465072914957">CAএ এখন প্ৰমাণপত্ৰ জাৰি কৰালৈ অপেক্ষা কৰি থকা হৈছে</translation>
 <translation id="3624567683873126087">ডিভাইচটো আনলক কৰি Google একাউণ্টত ছাইন ইন কৰক</translation>
 <translation id="3625481642044239431">অমান্য ফাইলটো বাছনি কৰা হৈছে। পুনৰ চেষ্টা কৰক।</translation>
@@ -2660,6 +2661,7 @@
 <translation id="3895076768659607631">&amp;সন্ধানৰ ইঞ্জিন পৰিচালনা কৰক...</translation>
 <translation id="3895090224522145010">Kerberos ব্যৱহাৰকাৰীৰ নাম</translation>
 <translation id="389521680295183045">ছাইটে আপুনি নিজৰ ডিভাইচটো কেতিয়া সক্ৰিয়ভাৱে ব্যৱহাৰ কৰি থাকে সেয়া জানিবলৈ বিচাৰিব পাৰে</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{এখন প্ৰতিচ্ছবি}one{# খন প্ৰতিচ্ছবি}other{# খন প্ৰতিচ্ছবি}}</translation>
 <translation id="3898233949376129212">ডিভাইচৰ ভাষা</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" />এ এইকেইটা অনুমতি বিচাৰে: <ph name="FIRST_PERMISSION" /> আৰু <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">কীব’ৰ্ড বাছনি কৰক</translation>
@@ -3569,6 +3571,7 @@
 <translation id="4943368462779413526">ফুটবল</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />"এ এটা ছিৰিয়েল প’ৰ্টৰ সৈতে সংযোগ কৰিব বিচাৰে</translation>
 <translation id="4944310289250773232">এই বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ সেৱা <ph name="SAML_DOMAIN" />এ হ'ষ্ট কৰে</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{এটা ফাইল}one{# টা ফাইল}other{# টা ফাইল}}</translation>
 <translation id="495170559598752135">কাৰ্যসমূহ</translation>
 <translation id="4953808748584563296">ডিফ’ল্ট কমলা অৱতাৰ</translation>
 <translation id="4955710816792587366">আপোনাৰ পিন বাছনি কৰক</translation>
@@ -5063,6 +5066,7 @@
 <translation id="6664237456442406323">দুৰ্ভাগ্যবশতঃ, আপোনাৰ কম্পিউটাৰটো এটা ভুল হাৰ্ডৱেৰ আইডিৰ সৈতে কনফিগাৰ কৰা আছে। ই শেহতীয়া সুৰক্ষা সমাধানসমূহৰ সৈতে আপডে’ট কৰাত Chrome OSক বাধা দিয়ে আৰু আপোনাৰ কম্পিউটাৰটো <ph name="BEGIN_BOLD" />ক্ষতিকাৰক আক্ৰমণৰ বলি হোৱাৰ সম্ভাৱনা থাকিব পাৰে<ph name="END_BOLD" />।</translation>
 <translation id="6664774537677393800">আপোনাৰ প্ৰ’ফাইলটো খুলি থাকোঁতে কিবা ভুল হ’ল। অনুগ্ৰহ কৰি ছাইন আউট কৰি পুনৰ ছাইন ইন কৰক।</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> এতিয়া উপলব্ধ</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{এটা ঠিকনা}one{# টা ঠিকনা}other{# টা ঠিকনা}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (ইউএছবি)</translation>
 <translation id="6674571176963658787">ছিংক আৰম্ভ কৰিবলৈ আপোনাৰ পাছফ্ৰেজ দিয়ক</translation>
 <translation id="6675665718701918026">নির্দেশ কৰা ডিভাইচ সংযোগ কৰা হৈছে</translation>
@@ -5757,6 +5761,7 @@
 <translation id="7456142309650173560">বিকাশকৰ্তা</translation>
 <translation id="7456847797759667638">অৱস্থান খোলক...</translation>
 <translation id="7457384018036134905">Chrome OSৰ ছেটিংসমূহত ভাষাসমূহ পৰিচালনা কৰক</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{এটা লিংক}one{# টা লিংক}other{# টা লিংক}}</translation>
 <translation id="7458168200501453431">Google Searchত ব্যৱহৃত একেটা বানান পৰীক্ষক ব্যৱহাৰ কৰে। আপুনি ব্ৰাউজাৰত টাইপ কৰা পাঠ Googleলৈ পঠিওৱা হয়।</translation>
 <translation id="7460045493116006516">আপুনি বৰ্তমান ইনষ্টল কৰি ৰখা থীম</translation>
 <translation id="7461924472993315131">পিন</translation>
@@ -6155,6 +6160,7 @@
 <translation id="7883792253546618164">যিকোনো সময়তে আনছাবস্ক্ৰাইব কৰক।</translation>
 <translation id="788453346724465748">একাউণ্টৰ তথ্য ল'ড কৰি থকা হৈছে...</translation>
 <translation id="7885253890047913815">শেহতীয়া গন্তব্যস্থানবোৰ</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{এটা বস্তু}one{# টা বস্তু}other{# টা বস্তু}}</translation>
 <translation id="7886605625338676841">ই-ছিম</translation>
 <translation id="7887334752153342268">নকল</translation>
 <translation id="7887864092952184874">ব্লুটুথ মাউচ যোৰা লগোৱা হৈছে</translation>
@@ -6394,6 +6400,7 @@
 <translation id="8139447493436036221">Google Driveৰ ফাইল</translation>
 <translation id="8141584439523427891">এতিয়া বিকল্প ব্ৰাউজাৰত খুলি আছে</translation>
 <translation id="8141725884565838206">আপোনাৰ পাছৱর্ডসমূহ পৰিচালনা কৰক</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{এটা ভিডিঅ’}one{# টা ভিডিঅ’}other{# টা ভিডিঅ’}}</translation>
 <translation id="8143442547342702591">অমান্য এপ্লিকেশ্বন</translation>
 <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> বাছনি কৰক <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">যদি আপুনি যদি ইতিমধ্যে এই ডিভাইচত পঞ্জীয়ন কৰিছে তেন্তে আপুনি <ph name="LINK2_START" />পূর্বে থকা ব্যৱহাৰকাৰী হিচাপে ছাইন ইন কৰিব পাৰিব<ph name="LINK2_END" />।</translation>
@@ -6413,6 +6420,7 @@
 <translation id="8161293209665121583">ৱে’ব পৃষ্ঠাসমূহৰ বাবে ৰীডাৰ ম’ড</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{টেবটো নতুন ৱিণ্ড’লৈ স্থানান্তৰ কৰক}one{টেবসমূহ নতুন ৱিণ্ড’লৈ স্থানান্তৰ কৰক}other{টেবসমূহ নতুন ৱিণ্ড’লৈ স্থানান্তৰ কৰক}}</translation>
 <translation id="8165997195302308593">Crostiniৰ প’ৰ্ট ফৰৱাৰ্ডিং</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{এটা ফ’ন নম্বৰ}one{# টা ফ’ন নম্বৰ}other{# টা ফ’ন নম্বৰ}}</translation>
 <translation id="8168435359814927499">সমল</translation>
 <translation id="8168943654413034772">বাছনি কৰা কাৰ্যৰ বাবে আবণ্টন কৰা একমাত্ৰ ছুইচটো আঁতৰাব নোৱাৰি। বাহিৰ হ’বলৈ যিকোনো কী টিপক।</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{পঢ়াৰ সূচীত টেব যোগ দিয়ক}one{পঢ়াৰ সূচীত টেব যোগ দিয়ক}other{পঢ়াৰ সূচীত টেব যোগ দিয়ক}}</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb
index 83fe52e..63ec8eb 100644
--- a/chrome/app/resources/generated_resources_az.xtb
+++ b/chrome/app/resources/generated_resources_az.xtb
@@ -1326,6 +1326,7 @@
 <translation id="2440604414813129000">Mənbəyə baxın</translation>
 <translation id="244231003699905658">Ünvan yanlışdır. Ünvanı yoxlayın və yenidən cəhd edin.</translation>
 <translation id="2442916515643169563">Mətn kölgəsi</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Daxili kök kataloq tələb olunur.</translation>
 <translation id="2445484935443597917">Yeni Profil Yaradın</translation>
 <translation id="2448312741937722512">Növ</translation>
@@ -4633,6 +4634,7 @@
 <translation id="6184099524311454384">Tabları axtarın</translation>
 <translation id="6185132558746749656">Cihaz Məkanı</translation>
 <translation id="6186394437969115158">Saytlar adətən ödənişsiz məzmun və xidmətlər təklif etmək üçün reklamlar göstərir. Lakin bəzi saytlar inadçı və aldadıcı reklamlar göstərmələri ilə tanınır.</translation>
+<translation id="6195005504600220730">Brauzer, ƏS və cihazınız haqqında məlumatları oxuyun</translation>
 <translation id="6195693561221576702">Bu cihazı oflayn demo rejimində quraşdırmaq mümkün deyil.</translation>
 <translation id="6195724942939841102">Bərpa etməyin</translation>
 <translation id="6196640612572343990">Üçüncü tərəf kukiləri blok edin</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb
index b76fe5b..745126d 100644
--- a/chrome/app/resources/generated_resources_be.xtb
+++ b/chrome/app/resources/generated_resources_be.xtb
@@ -2395,6 +2395,7 @@
 <translation id="3616741288025931835">&amp;Выдаліць гісторыю праглядаў...</translation>
 <translation id="3617891479562106823">Змяненне фону недаступнае. Паўтарыце спробу пазней.</translation>
 <translation id="3619115746895587757">Капучына</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{праграму}one{# праграму}few{# праграмы}many{# праграм}other{# праграмы}}</translation>
 <translation id="362333465072914957">Чакаецца атрыманне сертыфіката ад ЦС</translation>
 <translation id="3624567683873126087">Разблакіраваць прыладу і ўвайсці ва Уліковы запіс Google</translation>
 <translation id="3625481642044239431">Выбраны няправільны файл. Паўтарыце спробу.</translation>
@@ -2666,6 +2667,7 @@
 <translation id="3895076768659607631">&amp;Кіраваць пошукавымі сістэмамі...</translation>
 <translation id="3895090224522145010">Імя карыстальніка Kerberos</translation>
 <translation id="389521680295183045">Сайты могуць запытваць звесткі пра тое, калі вы карыстаецеся прыладай</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{відарыс}one{# відарыс}few{# відарысы}many{# відарысаў}other{# відарыса}}</translation>
 <translation id="3898233949376129212">Мова прылады</translation>
 <translation id="3898327728850887246">Сайт <ph name="SITE_NAME" /> запытвае наступныя дазволы: <ph name="FIRST_PERMISSION" /> і <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Выбар клавіятуры</translation>
@@ -3579,6 +3581,7 @@
 <translation id="4943368462779413526">Мяч для амерыканскага футбола</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" запытвае дазвол на падключэнне да серыйнага порта</translation>
 <translation id="4944310289250773232">Гэты сэрвіс аўтэнтыфікацыі размешчаны на дамене <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{файл}one{# файл}few{# файлы}many{# файлаў}other{# файла}}</translation>
 <translation id="495170559598752135">Дзеянні</translation>
 <translation id="4953808748584563296">Стандартны аранжавы аватар</translation>
 <translation id="4955710816792587366">Набярыце PIN-код</translation>
@@ -5078,6 +5081,7 @@
 <translation id="6664237456442406323">Ваш камп'ютар сканфігураваны з няправільным ідэнтыфікатарам апаратнага забеспячэння. Гэта не дае ўсталяваць апошнія выпраўленні сістэмы бяспекі для Chrome OS. Ваш камп'ютар <ph name="BEGIN_BOLD" />можа быць прыступным для атак зламыснікаў<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Нешта пайшло не так падчас адкрыцця вашага профілю. Выйдзіце і зноў увайдзіце ва ўліковы запіс.</translation>
 <translation id="6670142487971298264">Праграма "<ph name="APP_NAME" />" даступная</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{адрас}one{# адрас}few{# адрасы}many{# адрасоў}other{# адраса}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Каб пачаць сінхранізацыю, увядзіце фразу-пароль</translation>
 <translation id="6675665718701918026">Падключана ўказальная прылада</translation>
@@ -5774,6 +5778,7 @@
 <translation id="7456142309650173560">для распрацоўшчыкаў</translation>
 <translation id="7456847797759667638">Адкрыць размяшчэнне...</translation>
 <translation id="7457384018036134905">Кіраваць моўнымі параметрамі ў наладах Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{спасылку}one{# спасылку}few{# спасылкі}many{# спасылак}other{# спасылкі}}</translation>
 <translation id="7458168200501453431">Выкарыстоўвае тую ж праверку правапісу, што ў Google Пошуку. Уведзены ў браўзер тэкст адпраўляецца ў Google.</translation>
 <translation id="7460045493116006516">Бягучая тэма, якую вы ўсталявалі</translation>
 <translation id="7461924472993315131">PIN-код</translation>
@@ -6174,6 +6179,7 @@
 <translation id="7883792253546618164">Адпісацца можна ў любы час.</translation>
 <translation id="788453346724465748">Ідзе загрузка інфармацыі пра ўліковы запіс...</translation>
 <translation id="7885253890047913815">Нядаўнія аб'екты прызначэння</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{элемент}one{# элемент}few{# элементы}many{# элементаў}other{# элемента}}</translation>
 <translation id="7886605625338676841">eSIM-карта</translation>
 <translation id="7887334752153342268">Дубліраваць</translation>
 <translation id="7887864092952184874">Мыш Bluetooth спалучана</translation>
@@ -6413,6 +6419,7 @@
 <translation id="8139447493436036221">Файлы на Google Дыску</translation>
 <translation id="8141584439523427891">Ідзе адкрыццё ў альтэрнатыўным браўзеры</translation>
 <translation id="8141725884565838206">Кіраванне паролямі</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{відэа}one{# відэа}few{# відэа}many{# відэа}other{# відэа}}</translation>
 <translation id="8143442547342702591">Няправільная праграма</translation>
 <translation id="8143951647992294073">Выбраць <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Калі вы ўжо рэгістраваліся на гэтай прыладзе, вы можаце <ph name="LINK2_START" />ўвайсці як існуючы карыстальнік<ph name="LINK2_END" />.</translation>
@@ -6432,6 +6439,7 @@
 <translation id="8161293209665121583">Рэжым чытання для вэб-старонак</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Перамясціць укладку ў новае акно}one{Перамясціць укладкі ў новае акно}few{Перамясціць укладкі ў новае акно}many{Перамясціць укладкі ў новае акно}other{Перамясціць укладкі ў новае акно}}</translation>
 <translation id="8165997195302308593">Пераадрасацыя партоў у Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{нумар тэлефона}one{# нумар тэлефона}few{# нумары тэлефонаў}many{# нумароў тэлефонаў}other{# нумара тэлефона}}</translation>
 <translation id="8168435359814927499">Змесціва</translation>
 <translation id="8168943654413034772">Прызначэнне адзінага пераключальніка, звязанага з дзеяннем "Выбраць", скасаваць нельга. Каб выйсці, націсніце любую клавішу.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Дадаць укладку ў спіс чытання}one{Дадаць укладкі ў спіс чытання}few{Дадаць укладкі ў спіс чытання}many{Дадаць укладкі ў спіс чытання}other{Дадаць укладкі ў спіс чытання}}</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index d7a5976..ef317ef 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -2390,6 +2390,7 @@
 <translation id="3616741288025931835">&amp;Изчистване на данните за сърфирането...</translation>
 <translation id="3617891479562106823">Фоновете не са налице. Опитайте отново по-късно.</translation>
 <translation id="3619115746895587757">Капучино</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{приложение}other{# приложения}}</translation>
 <translation id="362333465072914957">Изчаква се издаването на сертификат от сертифициращия орган</translation>
 <translation id="3624567683873126087">Отключване на устройството и влизане в профила в Google</translation>
 <translation id="3625481642044239431">Избран е невалиден файл. Опитайте отново.</translation>
@@ -2662,6 +2663,7 @@
 <translation id="3895076768659607631">&amp;Управление на търсещите машини…</translation>
 <translation id="3895090224522145010">Потребителско име за Kerberos</translation>
 <translation id="389521680295183045">Сайтовете могат да извеждат запитване за разпознаване на това кога използвате устройството си активно</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{изображение}other{# изображения}}</translation>
 <translation id="3898233949376129212">Език на устройството</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> иска да <ph name="FIRST_PERMISSION" /> и <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Изберете клавиатура</translation>
@@ -3575,6 +3577,7 @@
 <translation id="4943368462779413526">Футболна топка</translation>
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ иска да се свърже със сериен порт</translation>
 <translation id="4944310289250773232">Тази услуга за удостоверяване се хоства от <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{файл}other{# файла}}</translation>
 <translation id="495170559598752135">Действия</translation>
 <translation id="4953808748584563296">Стандартен оранжев аватар</translation>
 <translation id="4955710816792587366">Изберете ПИН код</translation>
@@ -5075,6 +5078,7 @@
 <translation id="6664237456442406323">За съжаление компютърът ви е конфигуриран с неправилно образуван идентификационен номер на хардуера. Това не позволява на Chrome OS да се актуализира с най-новите корекции за сигурност и машината ви <ph name="BEGIN_BOLD" />може да е уязвима към злонамерени атаки<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Нещо се обърка при отварянето на потребителския ви профил. Моля, излезте от профила си и влезте отново.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> вече е налице</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{адрес}other{# адреса}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">За да стартирате синхронизирането, въведете пропуска си</translation>
 <translation id="6675665718701918026">Свързано е посочващо устройство</translation>
@@ -5771,6 +5775,7 @@
 <translation id="7456142309650173560">за програмисти</translation>
 <translation id="7456847797759667638">Отваряне на местоположение...</translation>
 <translation id="7457384018036134905">Управление на езиците в настройките на Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{връзка}other{# връзки}}</translation>
 <translation id="7458168200501453431">Използва същата система за проверка на правописа като в Google Търсене. Текстът, който въвеждате в браузъра, се изпраща до Google.</translation>
 <translation id="7460045493116006516">Текущата тема, която сте инсталирали</translation>
 <translation id="7461924472993315131">Фиксиране</translation>
@@ -6171,6 +6176,7 @@
 <translation id="7883792253546618164">Можете да се отпишете по всяко време.</translation>
 <translation id="788453346724465748">Информацията за профила се зарежда...</translation>
 <translation id="7885253890047913815">Скорошни местоназначения</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{елемент}other{# елемента}}</translation>
 <translation id="7886605625338676841">Електронна SIM карта</translation>
 <translation id="7887334752153342268">Дублиране</translation>
 <translation id="7887864092952184874">Мишката с Bluetooth е сдвоена</translation>
@@ -6411,6 +6417,7 @@
 <translation id="8139447493436036221">Файлове в Google Диск</translation>
 <translation id="8141584439523427891">Страницата се отваря в алтернативен браузър</translation>
 <translation id="8141725884565838206">Управление на паролите ви</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{видеоклип}other{# видеоклипа}}</translation>
 <translation id="8143442547342702591">Невалидно приложение</translation>
 <translation id="8143951647992294073">Избиране на <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Ако вече сте регистрирани на това устройство, можете <ph name="LINK2_START" />да влезете като съществуващ потребител<ph name="LINK2_END" />.</translation>
@@ -6430,6 +6437,7 @@
 <translation id="8161293209665121583">Режим за четене за уеб страниците</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Преместване на раздела в нов прозорец}other{Преместване на разделите в нов прозорец}}</translation>
 <translation id="8165997195302308593">Пренасочване на портове за Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{телефонен номер}other{# телефонни номера}}</translation>
 <translation id="8168435359814927499">Съдържание</translation>
 <translation id="8168943654413034772">Единственият превключвател за избиране не може да бъде премахнат. Натиснете произволен клавиш, за да излезете.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Добавяне на раздела към списъка за четене}other{Добавяне на разделите към списъка за четене}}</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb
index c9b684e..c7cecda 100644
--- a/chrome/app/resources/generated_resources_bs.xtb
+++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -2394,6 +2394,7 @@
 <translation id="3616741288025931835">&amp;Obriši podatke pregledanja...</translation>
 <translation id="3617891479562106823">Pozadine nisu dostupne. Pokušajte ponovo kasnije.</translation>
 <translation id="3619115746895587757">Kapućino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{aplikaciju}one{# aplikaciju}few{# aplikacije}other{# aplikacija}}</translation>
 <translation id="362333465072914957">Čeka se da CA izda certifikat</translation>
 <translation id="3624567683873126087">Otključajte uređaj i prijavite se na Google račun</translation>
 <translation id="3625481642044239431">Odabran je nevažeći fajl. Pokušajte ponovo.</translation>
@@ -2665,6 +2666,7 @@
 <translation id="3895076768659607631">&amp;Upravljajte pretraživačima...</translation>
 <translation id="3895090224522145010">Kerberos korisničko ime</translation>
 <translation id="389521680295183045">Web lokacije mogu tražiti da znaju kada aktivno koristite uređaj</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{sliku}one{# sliku}few{# slike}other{# slika}}</translation>
 <translation id="3898233949376129212">Jezik uređaja</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> želi: <ph name="FIRST_PERMISSION" /> i <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Odaberite tastaturu</translation>
@@ -3578,6 +3580,7 @@
 <translation id="4943368462779413526">Nogomet</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" želi se povezati sa serijskim priključkom</translation>
 <translation id="4944310289250773232">Ovu uslugu autentifikacije hostira <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{fajl}one{# fajl}few{# fajla}other{# fajlova}}</translation>
 <translation id="495170559598752135">Radnje</translation>
 <translation id="4953808748584563296">Zadani narandžasti avatar</translation>
 <translation id="4955710816792587366">Odaberite PIN</translation>
@@ -5077,6 +5080,7 @@
 <translation id="6664237456442406323">Nažalost, vaš računar je konfiguriran s neispravnim ID-om hardvera. Ovim se sprečava da se Chrome OS ažurira najnovijim sigurnosnim ispravkama i vaš računar <ph name="BEGIN_BOLD" />može biti izložen zlonamjernim napadima<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Došlo je do problema prilikom otvaranja vašeg profila. Odjavite se pa se ponovo prijavite.</translation>
 <translation id="6670142487971298264">Aplikacija <ph name="APP_NAME" /> je sada dostupna</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{adresu}one{# adresu}few{# adrese}other{# adresa}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Da pokrenete sinhronizaciju, unesite pristupni izraz</translation>
 <translation id="6675665718701918026">Uređaj za pokazivanje je povezan</translation>
@@ -5773,6 +5777,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Otvori lokaciju...</translation>
 <translation id="7457384018036134905">Upravljajte jezicima u postavkama Chrome OS-a</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{link}one{# link}few{# linka}other{# linkova}}</translation>
 <translation id="7458168200501453431">Koristi isti alat za provjeru pravopisa koji se koristi u Google Pretraživanju. Tekst koji pišete u pregledniku šalje se Googleu.</translation>
 <translation id="7460045493116006516">Trenutna tema koju ste instalirali</translation>
 <translation id="7461924472993315131">PIN</translation>
@@ -6173,6 +6178,7 @@
 <translation id="7883792253546618164">Otkažite pretplatu bilo kada.</translation>
 <translation id="788453346724465748">Učitavanje informacija o računu...</translation>
 <translation id="7885253890047913815">Nedavna odredišta</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{stavku}one{# stavka}few{# stavke}other{# stavki}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Dupliciraj</translation>
 <translation id="7887864092952184874">Bluetooth miš je uparen</translation>
@@ -6413,6 +6419,7 @@
 <translation id="8139447493436036221">Fajlovi Google Diska</translation>
 <translation id="8141584439523427891">Otvaranje u alternativnom pregledniku</translation>
 <translation id="8141725884565838206">Upravljanje lozinkama</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{videozapis}one{# videozapis}few{# videozapisa}other{# videozapisa}}</translation>
 <translation id="8143442547342702591">Nevažeća aplikacija</translation>
 <translation id="8143951647992294073">Odaberite <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Ako ste već registrirani na ovom uređaju, možete se <ph name="LINK2_START" />prijaviti kao postojeći korisnik<ph name="LINK2_END" />.</translation>
@@ -6432,6 +6439,7 @@
 <translation id="8161293209665121583">Način rada za čitanje za web stranice</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Premjesti karticu u novi prozor}one{Premjesti kartice u novi prozor}few{Premjesti kartice u novi prozor}other{Premjesti kartice u novi prozor}}</translation>
 <translation id="8165997195302308593">Prosljeđivanje priključka Crostinija</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{broj telefona}one{# broj telefona}few{# broja telefona}other{# brojeva telefona}}</translation>
 <translation id="8168435359814927499">Sadržaj</translation>
 <translation id="8168943654413034772">Nije moguće ukloniti jedini prekidač za pristup dodijeljen radnji Odaberi. Pritisnite bilo koju tipku da izađete.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Dodaj karticu na listu za čitanje}one{Dodaj kartice na listu za čitanje}few{Dodaj kartice na listu za čitanje}other{Dodaj kartice na listu za čitanje}}</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index 80ef384..71372eb 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -2392,6 +2392,7 @@
 <translation id="3616741288025931835">&amp;Elimina les dades de navegació...</translation>
 <translation id="3617891479562106823">Els fons de pantalla no estan disponibles. Torna-ho a provar més tard.</translation>
 <translation id="3619115746895587757">Caputxino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{1 aplicació}other{# aplicacions}}</translation>
 <translation id="362333465072914957">S'està esperant que l'entitat emissora de certificats n'emeti un</translation>
 <translation id="3624567683873126087">Desbloqueja el dispositiu i inicia la sessió al Compte de Google</translation>
 <translation id="3625481642044239431">S'ha seleccionat un fitxer no vàlid. Torna-ho a provar.</translation>
@@ -2663,6 +2664,7 @@
 <translation id="3895076768659607631">&amp;Gestiona els motors de cerca...</translation>
 <translation id="3895090224522145010">Nom d'usuari de Kerberos</translation>
 <translation id="389521680295183045">Els llocs web poden demanar permís per saber quan estàs utilitzant el dispositiu de manera activa</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{1 imatge}other{# imatges}}</translation>
 <translation id="3898233949376129212">Idioma del dispositiu</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> vol <ph name="FIRST_PERMISSION" /> i <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Selecciona el teclat</translation>
@@ -3175,7 +3177,7 @@
 <translation id="4501530680793980440">Confirmació de la supressió</translation>
 <translation id="4502423230170890588">Suprimeix d'aquest dispositiu</translation>
 <translation id="4504374760782163539">{COUNT,plural, =0{Les galetes es permeten}=1{Les galetes es permeten, 1 excepció}other{Les galetes es permeten, {COUNT} excepcions}}</translation>
-<translation id="4504940961672722399">Per fer servir aquesta extensió, feu clic en aquesta icona o premeu <ph name="EXTENSION_SHORTCUT" />.</translation>
+<translation id="4504940961672722399">Per fer servir aquesta extensió, fes clic en aquesta icona o prem <ph name="EXTENSION_SHORTCUT" />.</translation>
 <translation id="450552327874992444">Ja s'ha afegit la paraula</translation>
 <translation id="4507128560633489176">Les dades s'han esborrat.</translation>
 <translation id="4508051413094283164">Obre-ho tot en una finestra d'incògnit</translation>
@@ -3575,6 +3577,7 @@
 <translation id="4943368462779413526">Pilota de futbol americà</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" vol connectar-se a un port en sèrie</translation>
 <translation id="4944310289250773232">Aquest servei d'autenticació s'allotja a <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{1 fitxer}other{# fitxers}}</translation>
 <translation id="495170559598752135">Accions</translation>
 <translation id="4953808748584563296">Avatar taronja predeterminat</translation>
 <translation id="4955710816792587366">Tria un PIN</translation>
@@ -3698,7 +3701,7 @@
 <translation id="5111692334209731439">&amp;Gestor d'adreces d'interès</translation>
 <translation id="5112577000029535889">&amp;Eines per a desenvolupadors</translation>
 <translation id="5113533693789703768">Eines per a presentadors</translation>
-<translation id="5113739826273394829">Si feu clic en aquesta icona, bloquejareu aquest dispositiu <ph name="DEVICE_TYPE" />. La propera vegada, haureu d'escriure la contrasenya per accedir-hi.</translation>
+<translation id="5113739826273394829">Si fes clic en aquesta icona, bloquejaràs manualment aquest <ph name="DEVICE_TYPE" />. La propera vegada, hauràs d'escriure la contrasenya per accedir-hi.</translation>
 <translation id="51143538739122961">Insereix la clau de seguretat i toca-la</translation>
 <translation id="5114987907971894280">realitat virtual</translation>
 <translation id="5115309401544567011">Endolla el dispositiu <ph name="DEVICE_TYPE" /> a una font d'alimentació.</translation>
@@ -5076,6 +5079,7 @@
 <translation id="6664237456442406323">L'ordinador està configurat amb un ID de maquinari amb un format incorrecte. Això impedeix a Chrome OS actualitzar-se amb les darreres correccions de seguretat i <ph name="BEGIN_BOLD" />pot ser que l'ordinador sigui vulnerable a atacs maliciosos<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">S'ha produït un error en obrir el teu perfil. Tanca la sessió i torna-la a iniciar.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> ja està disponible</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{1 adreça}other{# adreces}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Per iniciar la sincronització, introdueix la frase de contrasenya</translation>
 <translation id="6675665718701918026">S'ha connectat un dispositiu per apuntar</translation>
@@ -5772,6 +5776,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Obre la ubicació...</translation>
 <translation id="7457384018036134905">Gestiona els idiomes a la configuració de Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{1 enllaç}other{# enllaços}}</translation>
 <translation id="7458168200501453431">Fa servir el mateix corrector ortogràfic que s'utilitza a la Cerca de Google. El text que introdueixes al navegador s'envia a Google.</translation>
 <translation id="7460045493116006516">Tema instal·lat actualment</translation>
 <translation id="7461924472993315131">Fixa</translation>
@@ -6172,6 +6177,7 @@
 <translation id="7883792253546618164">Pots cancel·lar la subscripció en qualsevol moment.</translation>
 <translation id="788453346724465748">S'està carregant informació del compte...</translation>
 <translation id="7885253890047913815">Destinacions recents</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{1 element}other{# elements}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplica</translation>
 <translation id="7887864092952184874">Ratolí Bluetooth vinculat</translation>
@@ -6411,6 +6417,7 @@
 <translation id="8139447493436036221">Fitxers de Google Drive</translation>
 <translation id="8141584439523427891">S'està obrint en un navegador alternatiu</translation>
 <translation id="8141725884565838206">Gestiona les contrasenyes</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{1 vídeo}other{# vídeos}}</translation>
 <translation id="8143442547342702591">Aplicació no vàlida</translation>
 <translation id="8143951647992294073">Selecciona <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Si ja esteu registrat en aquest dispositiu, podeu <ph name="LINK2_START" />iniciar la sessió com a usuari existent<ph name="LINK2_END" />.</translation>
@@ -6430,6 +6437,7 @@
 <translation id="8161293209665121583">Mode de lector a les pàgines web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Mou la pestanya a una finestra nova}other{Mou les pestanyes a una finestra nova}}</translation>
 <translation id="8165997195302308593">Redirecció de ports de Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{1 número de telèfon}other{# números de telèfon}}</translation>
 <translation id="8168435359814927499">Contingut</translation>
 <translation id="8168943654413034772">No es pot suprimir l'únic interruptor assignat a Selecciona. Prem qualsevol tecla per sortir.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Afegeix la pestanya a la llista de lectura}other{Afegeix les pestanyes a la llista de lectura}}</translation>
@@ -6912,7 +6920,7 @@
 <translation id="8731629443331803108"><ph name="SITE_NAME" /> vol <ph name="PERMISSION" /></translation>
 <translation id="8731787661154643562">Número de port</translation>
 <translation id="8731851055419582926">Contrasenyes comprovades</translation>
-<translation id="8732030010853991079">Per fer servir aquesta extensió, feu clic en aquesta icona.</translation>
+<translation id="8732030010853991079">Per fer servir aquesta extensió, fes clic en aquesta icona.</translation>
 <translation id="8732212173949624846">Llegir i canviar l'historial de navegació en tots els dispositius en què tens la sessió iniciada</translation>
 <translation id="8732844209475700754">Més opcions de configuració relacionades amb la privadesa, la seguretat i la recollida de dades</translation>
 <translation id="8734073480934656039">Si s'activa aquesta configuració, les aplicacions de quiosc es podran iniciar automàticament en iniciar el dispositiu.</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index 9cb905e2..08df9e9 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -2390,6 +2390,7 @@
 <translation id="3616741288025931835">&amp;Smazat údaje o prohlížení...</translation>
 <translation id="3617891479562106823">Pozadí nejsou k dispozici. Zkuste to znovu později.</translation>
 <translation id="3619115746895587757">Kapučíno</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{aplikace}few{# aplikace}many{# aplikace}other{# aplikací}}</translation>
 <translation id="362333465072914957">Čeká se, než certifikační autorita vydá certifikát</translation>
 <translation id="3624567683873126087">Odemknout zařízení a přihlásit se k účtu Google</translation>
 <translation id="3625481642044239431">Byl vybrán neplatný soubor. Zkuste to znovu.</translation>
@@ -2661,6 +2662,7 @@
 <translation id="3895076768659607631">&amp;Spravovat vyhledávače…</translation>
 <translation id="3895090224522145010">Uživatelské jméno Kerberos</translation>
 <translation id="389521680295183045">Weby mohou požádat o to, aby mohly zjišťovat, zda aktivně používáte své zařízení</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{obrázek}few{# obrázky}many{# obrázku}other{# obrázků}}</translation>
 <translation id="3898233949376129212">Jazyk zařízení</translation>
 <translation id="3898327728850887246">Web <ph name="SITE_NAME" /> žádá o tato oprávnění: <ph name="FIRST_PERMISSION" /> a <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Vybrat klávesnici</translation>
@@ -3573,6 +3575,7 @@
 <translation id="4943368462779413526">Americký fotbal</translation>
 <translation id="4943691134276646401">Rozšíření <ph name="CHROME_EXTENSION_NAME" /> se chce připojit k sériovému portu</translation>
 <translation id="4944310289250773232">Tato ověřovací služba je hostována v doméně <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{soubor}few{# soubory}many{# souboru}other{# souborů}}</translation>
 <translation id="495170559598752135">Akce</translation>
 <translation id="4953808748584563296">Výchozí oranžový avatar</translation>
 <translation id="4955710816792587366">Zvolte kód PIN</translation>
@@ -5070,6 +5073,7 @@
 <translation id="6664237456442406323">Váš počítač je bohužel nakonfigurován pomocí chybného čísla hardwaru. Systému Chrome OS to zabraňuje získat aktualizace s nejnovějšími bezpečnostními opravami, a počítač tak <ph name="BEGIN_BOLD" />může být zranitelnější vůči škodlivým úrokům<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Při otevírání vašeho profilu se něco pokazilo. Odhlaste se a poté se znovu přihlaste.</translation>
 <translation id="6670142487971298264">Aplikace <ph name="APP_NAME" /> je nyní k dispozici</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{adresa}few{# adresy}many{# adresy}other{# adres}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Pokud chcete spustit synchronizaci, zadejte heslovou frázi</translation>
 <translation id="6675665718701918026">Je připojeno polohovací zařízení</translation>
@@ -5764,6 +5768,7 @@
 <translation id="7456142309650173560">pro vývojáře</translation>
 <translation id="7456847797759667638">Otevřít umístění...</translation>
 <translation id="7457384018036134905">Spravovat jazyky v nastavení Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{odkaz}few{# odkazy}many{# odkazu}other{# odkazů}}</translation>
 <translation id="7458168200501453431">Používá stejnou technologii kontroly pravopisu jako Vyhledávání Google. Text, který v prohlížeči zadáte, se odešle do Googlu</translation>
 <translation id="7460045493116006516">Aktuálně nainstalovaný motiv</translation>
 <translation id="7461924472993315131">Připnout</translation>
@@ -6164,6 +6169,7 @@
 <translation id="7883792253546618164">Můžete se kdykoli odhlásit.</translation>
 <translation id="788453346724465748">Načítání informací o účtu…</translation>
 <translation id="7885253890047913815">Nedávné cíle</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{položka}few{# položky}many{# položky}other{# položek}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplikovat</translation>
 <translation id="7887864092952184874">Myš Bluetooth byla spárována</translation>
@@ -6401,6 +6407,7 @@
 <translation id="813913629614996137">Probíhá inicializace...</translation>
 <translation id="8141584439523427891">Otevírá se alternativní prohlížeč</translation>
 <translation id="8141725884565838206">Správa hesel</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{video}few{# videa}many{# videa}other{# videí}}</translation>
 <translation id="8143442547342702591">Neplatná aplikace</translation>
 <translation id="8143951647992294073">Vybrat možnost <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">V tomto zařízení jste již zaregistrováni. Můžete se <ph name="LINK2_START" />přihlásit jako stávající uživatel<ph name="LINK2_END" />.</translation>
@@ -6420,6 +6427,7 @@
 <translation id="8161293209665121583">Režim čtečky pro webové stránky</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Přesunout kartu do nového okna}few{Přesunout karty do nového okna}many{Přesunout karty do nového okna}other{Přesunout karty do nového okna}}</translation>
 <translation id="8165997195302308593">Přesměrování portů Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{telefonní číslo}few{# telefonní čísla}many{# telefonního čísla}other{# telefonních čísel}}</translation>
 <translation id="8168435359814927499">Obsah</translation>
 <translation id="8168943654413034772">Jediný přepínač přiřazený jako výběr nelze odstranit. Ukončíte stisknutím libovolné klávesy.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Přidat kartu do seznamu četby}few{Přidat karty do seznamu četby}many{Přidat karty do seznamu četby}other{Přidat karty do seznamu četby}}</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 795351b..aa4f6ef 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -2394,6 +2394,7 @@
 <translation id="3616741288025931835">&amp;Slet browserdata...</translation>
 <translation id="3617891479562106823">Baggrunde er utilgængelige. Prøv igen senere.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{en app}one{# app}other{# apps}}</translation>
 <translation id="362333465072914957">Venter på, at certifikatautoriteten udsteder et certifikat</translation>
 <translation id="3624567683873126087">Lås enheden op, og log ind på Google-kontoen</translation>
 <translation id="3625481642044239431">Der er valgt en ugyldig fil. Prøv igen.</translation>
@@ -2665,6 +2666,7 @@
 <translation id="3895076768659607631">&amp;Administrer søgemaskiner...</translation>
 <translation id="3895090224522145010">Kerberos-brugernavn</translation>
 <translation id="389521680295183045">Websites kan anmode om at få at vide, hvornår du aktivt bruger din enhed</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{et billede}one{# billede}other{# billeder}}</translation>
 <translation id="3898233949376129212">Enhedens sprog</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> vil gerne have tilladelse til at: <ph name="FIRST_PERMISSION" /> og <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Vælg tastatur</translation>
@@ -3578,6 +3580,7 @@
 <translation id="4943368462779413526">Amerikansk fodbold</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" anmoder om at oprette forbindelse til en seriel port</translation>
 <translation id="4944310289250773232">Denne godkendelsestjeneste hostes af <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{en fil}one{# fil}other{# filer}}</translation>
 <translation id="495170559598752135">Handlinger</translation>
 <translation id="4953808748584563296">Orange standardavatar</translation>
 <translation id="4955710816792587366">Vælg din pinkode</translation>
@@ -5077,6 +5080,7 @@
 <translation id="6664237456442406323">Din computer er desværre konfigureret med et hardware-id i forkert format. Dette forhindrer Chrome OS i at opdatere med de nyeste sikkerhedsrettelser, og din computer <ph name="BEGIN_BOLD" />kan være sårbar over for ondartede angreb<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Noget gik galt ved åbningen af din profil. Nogle funktioner er muligvis ikke tilgængelige.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> er nu tilgængelig</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{en adresse}one{# adresse}other{# adresser}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Angiv din adgangssætning for at starte synkroniseringen</translation>
 <translation id="6675665718701918026">Pegeredskabet er tilsluttet</translation>
@@ -5773,6 +5777,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Åbn placering...</translation>
 <translation id="7457384018036134905">Administrer sprog i indstillingerne for Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{et link}one{# link}other{# links}}</translation>
 <translation id="7458168200501453431">Bruger samme stavekontrol som Google-søgning. Tekst, som du angiver i browseren, sendes til Google.</translation>
 <translation id="7460045493116006516">Det aktuelle tema, du har installeret</translation>
 <translation id="7461924472993315131">Fastgør</translation>
@@ -6172,6 +6177,7 @@
 <translation id="7883792253546618164">Du kan afmelde dig når som helst.</translation>
 <translation id="788453346724465748">Indlæser kontooplysninger...</translation>
 <translation id="7885253890047913815">Seneste destinationer</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{et element}one{# element}other{# elementer}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Dupliker</translation>
 <translation id="7887864092952184874">Bluetooth-mus er parret</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Google Drev-filer</translation>
 <translation id="8141584439523427891">Åbner i en alternativ browser nu</translation>
 <translation id="8141725884565838206">Administrer dine adgangskoder</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{en video}one{# video}other{# videoer}}</translation>
 <translation id="8143442547342702591">Ugyldig app</translation>
 <translation id="8143951647992294073">Vælg <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Hvis du allerede har registreret dig på denne enhed, kan du <ph name="LINK2_START" />logge ind som eksisterende bruger<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Læser-tilstand for websider</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Flyt fanen til et nyt vindue}one{Flyt fanen til et nyt vindue}other{Flyt fanerne til et nyt vindue}}</translation>
 <translation id="8165997195302308593">Omdirigering af port i Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{et telefonnummer}one{# telefonnummer}other{# telefonnumre}}</translation>
 <translation id="8168435359814927499">Indhold</translation>
 <translation id="8168943654413034772">Dette er den sidste kontakt, der er tildelt Vælg, og den kan derfor ikke fjernes. Tryk på en vilkårlig tast for at afslutte.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Føj fane til Læseliste}one{Føj fane til Læseliste}other{Føj faner til Læseliste}}</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index c5b8ec7..6adb8f0 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -1030,7 +1030,7 @@
 <translation id="2114326799768592691">&amp;Frame neu laden</translation>
 <translation id="2114896190328250491">Foto von <ph name="NAME" /></translation>
 <translation id="2114995631896158695">Keine SIM-Karte eingelegt</translation>
-<translation id="2116619964159595185">Websites verwenden Bluetooth-Geräte normalerweise für Funktionen wie das Einrichten oder Synchronisieren eines LE-Beacons, eines Gesundheits- oder Fitnesstrackers oder einer intelligenten Glühbirne</translation>
+<translation id="2116619964159595185">Websites verwenden Bluetooth-Geräte normalerweise für Funktionen wie das Einrichten oder Synchronisieren eines LE-Beacons, eines Gesundheits- oder Fitnesstrackers oder einer intelligenten Lampe</translation>
 <translation id="2119349053129246860">In <ph name="APP" /> öffnen</translation>
 <translation id="2119461801241504254">Safe Browsing ist aktiviert und schützt Sie vor schädlichen Websites und Downloads</translation>
 <translation id="2120297377148151361">Aktivitäten und Interaktionen</translation>
@@ -1327,6 +1327,7 @@
 <translation id="2440604414813129000">Quelltext an&amp;zeigen</translation>
 <translation id="244231003699905658">Ungültige Adresse. Prüfen Sie die Adresse und versuchen Sie es noch einmal.</translation>
 <translation id="2442916515643169563">Textschatten</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Stammverzeichnis der Erweiterung ist erforderlich.</translation>
 <translation id="2445484935443597917">Neues Profil erstellen</translation>
 <translation id="2448312741937722512">Art</translation>
@@ -2388,6 +2389,7 @@
 <translation id="3616741288025931835">&amp;Browserdaten löschen...</translation>
 <translation id="3617891479562106823">Hintergründe sind nicht verfügbar. Bitte versuchen Sie es später noch einmal.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{eine App}other{# Apps}}</translation>
 <translation id="362333465072914957">Es wird darauf gewartet, dass die Zertifizierungsstelle ein Zertifikat ausstellt</translation>
 <translation id="3624567683873126087">Gerät entsperren und im Google-Konto anmelden</translation>
 <translation id="3625481642044239431">Ungültige Datei ausgewählt. Versuchen Sie es noch einmal.</translation>
@@ -2659,6 +2661,7 @@
 <translation id="3895076768659607631">Suchmaschinen &amp;verwalten…</translation>
 <translation id="3895090224522145010">Kerberos-Nutzername</translation>
 <translation id="389521680295183045">Websites dürfen nachfragen, ob sie Informationen zu meiner aktiven Nutzung dieses Geräts abrufen dürfen</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{ein Bild}other{# Bilder}}</translation>
 <translation id="3898233949376129212">Sprache des Geräts</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> möchte: <ph name="FIRST_PERMISSION" /> und <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Tastatur auswählen</translation>
@@ -3572,6 +3575,7 @@
 <translation id="4943368462779413526">Fußball</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" möchte eine Verbindung mit einem seriellen Port herstellen</translation>
 <translation id="4944310289250773232">Dieser Authentifizierungsdienst wird von <ph name="SAML_DOMAIN" /> gehostet</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{eine Datei}other{# Dateien}}</translation>
 <translation id="495170559598752135">Aktionen</translation>
 <translation id="4953808748584563296">Orangefarbener Standardavatar</translation>
 <translation id="4955710816792587366">PIN wählen</translation>
@@ -4639,6 +4643,7 @@
 <translation id="6184099524311454384">Tabs suchen</translation>
 <translation id="6185132558746749656">Gerätestandort</translation>
 <translation id="6186394437969115158">Websites zeigen normalerweise Werbung an, um Inhalte oder Dienste kostenlos anbieten zu können. Allerdings gibt es auch Websites, auf denen bekanntermaßen aufdringliche oder irreführende Werbung erscheint.</translation>
+<translation id="6195005504600220730">Informationen zu Ihrem Browser, Betriebssystem und Gerät abrufen</translation>
 <translation id="6195693561221576702">Dieses Gerät kann nicht im Offlinedemomodus eingerichtet werden.</translation>
 <translation id="6195724942939841102">Nicht wiederherstellen</translation>
 <translation id="6196640612572343990">Drittanbieter-Cookies blockieren</translation>
@@ -5070,6 +5075,7 @@
 <translation id="6664237456442406323">Ihr Computer wurde mit einer ungültigen Hardware-ID konfiguriert. Daher kann Chrome OS keine aktuellen Sicherheitsupdates installieren und Ihr Computer ist <ph name="BEGIN_BOLD" />möglicherweise anfällig für schädliche Angriffe<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Beim Öffnen Ihres Profils ist ein Fehler aufgetreten. Melden Sie sich bitte ab und dann wieder an.</translation>
 <translation id="6670142487971298264">Die App "<ph name="APP_NAME" />" ist jetzt verfügbar</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{eine Adresse}other{# Adressen}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Geben Sie Ihre Passphrase ein, um die Synchronisierung zu starten</translation>
 <translation id="6675665718701918026">Zeigegerät verbunden</translation>
@@ -5766,6 +5772,7 @@
 <translation id="7456142309650173560">Dev</translation>
 <translation id="7456847797759667638">Adresse öffnen...</translation>
 <translation id="7457384018036134905">Sprachen in den Chrome OS-Einstellungen verwalten</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{einen Link}other{# Links}}</translation>
 <translation id="7458168200501453431">Verwendet dieselbe Rechtschreibprüfung wie die Google Suche. Der in den Browser eingegebene Text wird an Google gesendet.</translation>
 <translation id="7460045493116006516">Derzeit installiertes Design</translation>
 <translation id="7461924472993315131">Anpinnen</translation>
@@ -6166,6 +6173,7 @@
 <translation id="7883792253546618164">Sie können sich jederzeit wieder abmelden.</translation>
 <translation id="788453346724465748">Kontoinformationen werden geladen…</translation>
 <translation id="7885253890047913815">Letzte Ziele</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{einen Artikel}other{# Artikel}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplizieren</translation>
 <translation id="7887864092952184874">Bluetooth-Maus ist gekoppelt</translation>
@@ -6405,6 +6413,7 @@
 <translation id="8139447493436036221">Google Drive-Dateien</translation>
 <translation id="8141584439523427891">Wird in einem alternativen Browser geöffnet</translation>
 <translation id="8141725884565838206">Passwörter verwalten</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{ein Video}other{# Videos}}</translation>
 <translation id="8143442547342702591">Ungültige Anwendung</translation>
 <translation id="8143951647992294073">"<ph name="TOPIC_SOURCE" /> – <ph name="TOPIC_SOURCE_DESC" />" auswählen</translation>
 <translation id="8146177459103116374">Wenn Sie bereits auf diesem Gerät registriert sind, können Sie sich <ph name="LINK2_START" />als vorhandener Nutzer anmelden<ph name="LINK2_END" />.</translation>
@@ -6424,6 +6433,7 @@
 <translation id="8161293209665121583">Lesemodus für Webseiten</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Tab in ein neues Fenster verschieben}other{Tabs in ein neues Fenster verschieben}}</translation>
 <translation id="8165997195302308593">Crostini-Portweiterleitung</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{eine Telefonnummer}other{# Telefonnummern}}</translation>
 <translation id="8168435359814927499">Inhalte</translation>
 <translation id="8168943654413034772">Der einzige Schalter, der „Auswählen“ zugewiesen ist, kann nicht entfernt werden. Drücken Sie zum Beenden eine beliebige Taste.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Tab zur Leseliste hinzufügen}other{Tabs zur Leseliste hinzufügen}}</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 93240289..e57d60c 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">&amp;Διαγραφή δεδομένων περιήγησης...</translation>
 <translation id="3617891479562106823">Τα φόντα δεν είναι διαθέσιμα. Δοκιμάστε ξανά αργότερα.</translation>
 <translation id="3619115746895587757">Καπουτσίνο</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{μια εφαρμογή}other{# εφαρμογές}}</translation>
 <translation id="362333465072914957">Αναμονή για έκδοση πιστοποιητικού από CA</translation>
 <translation id="3624567683873126087">Ξεκλείδωμα συσκευής και σύνδεση σε Λογαριασμό Google</translation>
 <translation id="3625481642044239431">Επιλέχθηκε μη έγκυρο αρχείο. Δοκιμάστε ξανά.</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;Διαχείριση μηχανών αναζήτησης...</translation>
 <translation id="3895090224522145010">Όνομα χρήστη Kerberos</translation>
 <translation id="389521680295183045">Οι ιστότοποι μπορούν να ζητούν να γνωρίζουν πότε χρησιμοποιείτε ενεργά τη συσκευή σας</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{μια εικόνα}other{# εικόνες}}</translation>
 <translation id="3898233949376129212">Γλώσσα συσκευής</translation>
 <translation id="3898327728850887246">Ο ιστότοπος <ph name="SITE_NAME" /> επιθυμεί τις άδειες: <ph name="FIRST_PERMISSION" /> και <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Επιλογή πληκτρολογίου</translation>
@@ -3577,6 +3579,7 @@
 <translation id="4943368462779413526">Αμερικάνικο ποδόσφαιρο</translation>
 <translation id="4943691134276646401">Το "<ph name="CHROME_EXTENSION_NAME" />" θέλει να συνδεθεί σε μια σειριακή θύρα</translation>
 <translation id="4944310289250773232">Αυτή η υπηρεσία ελέγχου ταυτότητας φιλοξενείται από <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{ένα αρχείο}other{# αρχεία}}</translation>
 <translation id="495170559598752135">Ενέργειες</translation>
 <translation id="4953808748584563296">Προεπιλεγμένο πορτοκαλί avatar</translation>
 <translation id="4955710816792587366">Επιλογή PIN</translation>
@@ -5077,6 +5080,7 @@
 <translation id="6664237456442406323">Δυστυχώς, ο υπολογιστής σας έχει διαμορφωθεί με ένα εσφαλμένο αναγνωριστικό υλικού. Αυτό παρεμποδίζει την ενημέρωση του Chrome OS με τις πιο πρόσφατες επιδιορθώσεις ασφαλείας και ο υπολογιστής σας <ph name="BEGIN_BOLD" />ενδέχεται να είναι ευάλωτος σε κακόβουλες επιθέσεις<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Παρουσιάστηκε ένα πρόβλημα κατά το άνοιγμα του προφίλ σας. Αποσυνδεθείτε και συνδεθείτε ξανά.</translation>
 <translation id="6670142487971298264">Η εφαρμογή <ph name="APP_NAME" /> είναι πλέον διαθέσιμη</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{μια διεύθυνση}other{# διευθύνσεις}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Για να ξεκινήσετε τον συγχρονισμό, εισαγάγετε τη φράση πρόσβασης.</translation>
 <translation id="6675665718701918026">Η συσκευή κατάδειξης είναι συνδεδεμένη</translation>
@@ -5773,6 +5777,7 @@
 <translation id="7456142309650173560">προγραμματιστές</translation>
 <translation id="7456847797759667638">Άνοιγμα Τοποθεσίας...</translation>
 <translation id="7457384018036134905">Διαχείριση γλωσσών στις ρυθμίσεις του Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{έναν σύνδεσμο}other{# συνδέσμους}}</translation>
 <translation id="7458168200501453431">Χρησιμοποιεί το ίδιο εργαλείο ορθογραφικού ελέγχου που χρησιμοποιείται στην Αναζήτηση Google. Το κείμενο που πληκτρολογείτε στο πρόγραμμα περιήγησης αποστέλλεται στην Google.</translation>
 <translation id="7460045493116006516">Τρέχον θέμα που έχετε εγκαταστήσει</translation>
 <translation id="7461924472993315131">Καρφίτσωμα</translation>
@@ -6173,6 +6178,7 @@
 <translation id="7883792253546618164">Καταργήστε την εγγραφή σας ανά πάσα στιγμή.</translation>
 <translation id="788453346724465748">Φόρτωση πληροφοριών λογαριασμού…</translation>
 <translation id="7885253890047913815">Πρόσφατοι προορισμοί</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{ένα στοιχείο}other{# στοιχεία}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Αντιγραφή</translation>
 <translation id="7887864092952184874">Έγινε σύζευξη του ποντικιού Bluetooth</translation>
@@ -6413,6 +6419,7 @@
 <translation id="8139447493436036221">Αρχεία Google Drive</translation>
 <translation id="8141584439523427891">Άνοιγμα σε εναλλακτικό πρόγραμμα περιήγησης τώρα</translation>
 <translation id="8141725884565838206">Διαχείριση των κωδικών πρόσβασής σας</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{ένα βίντεο}other{# βίντεο}}</translation>
 <translation id="8143442547342702591">Μη έγκυρη εφαρμογή</translation>
 <translation id="8143951647992294073">Επιλέξτε <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Εάν έχετε ήδη εγγραφεί σε αυτήν τη συσκευή, μπορείτε <ph name="LINK2_START" />να συνδεθείτε ως υπάρχων χρήστης<ph name="LINK2_END" />.</translation>
@@ -6432,6 +6439,7 @@
 <translation id="8161293209665121583">Λειτουργία ανάγνωσης για ιστοσελίδες</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Μετακίνηση καρτέλας σε νέο παράθυρο}other{Μετακίνηση καρτελών σε νέο παράθυρο}}</translation>
 <translation id="8165997195302308593">Προώθηση θύρας Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{έναν αριθμό τηλεφώνου}other{# αριθμούς τηλεφώνου}}</translation>
 <translation id="8168435359814927499">Περιεχόμενο</translation>
 <translation id="8168943654413034772">Δεν είναι δυνατή η κατάργηση του μοναδικού διακόπτη που έχει ανατεθεί στην ενέργεια Επιλογή. Πατήστε οποιοδήποτε πλήκτρο για έξοδο.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Προσθήκη καρτέλας στη λίστα ανάγνωσης}other{Προσθήκη καρτελών στη λίστα ανάγνωσης}}</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index 30acc68..cb702d34b 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">&amp;Clear Browsing Data...</translation>
 <translation id="3617891479562106823">Backgrounds are unavailable. Try again later.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{an app}other{# apps}}</translation>
 <translation id="362333465072914957">Waiting for the CA to issue a certificate</translation>
 <translation id="3624567683873126087">Unlock device and sign in to Google Account</translation>
 <translation id="3625481642044239431">Invalid file selected. Try again.</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;Manage search engines…</translation>
 <translation id="3895090224522145010">Kerberos username</translation>
 <translation id="389521680295183045">Sites can ask to know when you're actively using your device</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{an image}other{# images}}</translation>
 <translation id="3898233949376129212">Device language</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> wants to: <ph name="FIRST_PERMISSION" /> and <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Select keyboard</translation>
@@ -3577,6 +3579,7 @@
 <translation id="4943368462779413526">Football</translation>
 <translation id="4943691134276646401">'<ph name="CHROME_EXTENSION_NAME" />' wants to connect to a serial port</translation>
 <translation id="4944310289250773232">This authentication service is hosted by <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{a file}other{# files}}</translation>
 <translation id="495170559598752135">Actions</translation>
 <translation id="4953808748584563296">Default orange avatar</translation>
 <translation id="4955710816792587366">Choose your PIN</translation>
@@ -5076,6 +5079,7 @@
 <translation id="6664237456442406323">Unfortunately, your computer is configured with a malformed hardware ID. This prevents Chrome OS from updating with the latest security fixes and your computer <ph name="BEGIN_BOLD" />may be vulnerable to malicious attacks<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Something went wrong when opening your profile. Please sign out then sign in again.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> is now available</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{an address}other{# addresses}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">To start sync, enter your passphrase</translation>
 <translation id="6675665718701918026">Pointing device connected</translation>
@@ -5772,6 +5776,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Open Location...</translation>
 <translation id="7457384018036134905">Manage languages in Chrome OS settings</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{a link}other{# links}}</translation>
 <translation id="7458168200501453431">Uses the same spell checker that’s used in Google search. Text that you type in the browser is sent to Google.</translation>
 <translation id="7460045493116006516">Current theme that you have installed</translation>
 <translation id="7461924472993315131">Pin</translation>
@@ -6172,6 +6177,7 @@
 <translation id="7883792253546618164">Unsubscribe at any time.</translation>
 <translation id="788453346724465748">Loading account information…</translation>
 <translation id="7885253890047913815">Recent destinations</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{an item}other{# items}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplicate</translation>
 <translation id="7887864092952184874">Bluetooth mouse paired</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Google Drive files</translation>
 <translation id="8141584439523427891">Opening in alternative browser now</translation>
 <translation id="8141725884565838206">Manage your passwords</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{a video}other{# videos}}</translation>
 <translation id="8143442547342702591">Invalid application</translation>
 <translation id="8143951647992294073">Select <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">If you've already registered on this device, you can <ph name="LINK2_START" />sign in as an existing user<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Reader mode for web pages</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Move tab to new window}other{Move tabs to new window}}</translation>
 <translation id="8165997195302308593">Crostini port forwarding</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{a phone number}other{# phone numbers}}</translation>
 <translation id="8168435359814927499">Content</translation>
 <translation id="8168943654413034772">Can’t remove the only switch assigned to Select. Press any key to exit.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Add tab to reading list}other{Add tabs to reading list}}</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index 2ca024b1..c3e5e00e 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -1328,6 +1328,7 @@
 <translation id="2440604414813129000">Ver códig&amp;o fuente</translation>
 <translation id="244231003699905658">La dirección no es válida. Verifica la dirección y vuelve a intentarlo.</translation>
 <translation id="2442916515643169563">Sombra del texto</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Se requiere un directorio de raíz de la extensión.</translation>
 <translation id="2445484935443597917">Crear un perfil nuevo</translation>
 <translation id="2448312741937722512">Tipo</translation>
@@ -2389,6 +2390,7 @@
 <translation id="3616741288025931835">Eliminar datos de navega&amp;ción...</translation>
 <translation id="3617891479562106823">Los fondos no están disponibles. Vuelve a intentarlo más tarde.</translation>
 <translation id="3619115746895587757">Capuchino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{una app}other{# apps}}</translation>
 <translation id="362333465072914957">Esperando que la CA emita un certificado</translation>
 <translation id="3624567683873126087">Desbloquear el dispositivo y acceder a la cuenta de Google</translation>
 <translation id="3625481642044239431">Seleccionaste un archivo no válido. Vuelve a intentarlo.</translation>
@@ -2660,6 +2662,7 @@
 <translation id="3895076768659607631">Ad&amp;ministrar motores de búsqueda…</translation>
 <translation id="3895090224522145010">Nombre de usuario de Kerberos</translation>
 <translation id="389521680295183045">Los sitios pueden solicitar permiso para saber en qué momento estás usando activamente el dispositivo</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{una imagen}other{# imágenes}}</translation>
 <translation id="3898233949376129212">Idioma del dispositivo</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> desea hacer lo siguiente: <ph name="FIRST_PERMISSION" /> y <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Seleccionar teclado</translation>
@@ -3573,6 +3576,7 @@
 <translation id="4943368462779413526">Fútbol americano</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" quiere conectarse a un puerto en serie</translation>
 <translation id="4944310289250773232"><ph name="SAML_DOMAIN" /> aloja este servicio de autenticación</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{un archivo}other{# archivos}}</translation>
 <translation id="495170559598752135">Acciones</translation>
 <translation id="4953808748584563296">Avatar naranja predeterminado</translation>
 <translation id="4955710816792587366">Elige un PIN</translation>
@@ -4640,6 +4644,7 @@
 <translation id="6184099524311454384">Buscar pestañas</translation>
 <translation id="6185132558746749656">Ubicación del dispositivo</translation>
 <translation id="6186394437969115158">Por lo general los sitios muestran anuncios para poder proporcionar contenido o servicios de forma gratuita. No obstante, algunos sitios son conocidos por mostrar anuncios intrusivos o engañosos.</translation>
+<translation id="6195005504600220730">Leer información acerca de tu navegador, SO y dispositivo</translation>
 <translation id="6195693561221576702">Este dispositivo no puede configurarse en el modo de demostración sin conexión.</translation>
 <translation id="6195724942939841102">No restaurar</translation>
 <translation id="6196640612572343990">Bloquear cookies de terceros</translation>
@@ -5071,6 +5076,7 @@
 <translation id="6664237456442406323">Desafortunadamente, la computadora está configurada con un identificador de hardware incorrecto. Esto impide que Chrome OS se actualice con las últimas correcciones de seguridad, y la computadora <ph name="BEGIN_BOLD" />puede quedar vulnerable a ataques maliciosos<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Se produjo un error al abrir tu perfil. Sal de tu cuenta y vuelve a acceder.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> ya está disponible</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{una dirección}other{# direcciones}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Para iniciar la sincronización, ingresa tu frase de contraseña.</translation>
 <translation id="6675665718701918026">Dispositivo señalador conectado</translation>
@@ -5767,6 +5773,7 @@
 <translation id="7456142309650173560">para programadores</translation>
 <translation id="7456847797759667638">Abrir ubicación...</translation>
 <translation id="7457384018036134905">Administra los idiomas en la configuración del Sistema operativo Chrome</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{un vínculo}other{# vínculos}}</translation>
 <translation id="7458168200501453431">Utiliza el mismo corrector ortográfico que en la Búsqueda de Google. El texto que escribes en el navegador se envía a Google.</translation>
 <translation id="7460045493116006516">Tema actual que tienes instalado</translation>
 <translation id="7461924472993315131">Fijar</translation>
@@ -6167,6 +6174,7 @@
 <translation id="7883792253546618164">Puedes anular la suscripción en cualquier momento.</translation>
 <translation id="788453346724465748">Cargando información de la cuenta…</translation>
 <translation id="7885253890047913815">Destinos recientes</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{un elemento}other{# elementos}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplicar</translation>
 <translation id="7887864092952184874">Mouse Bluetooth sincronizado</translation>
@@ -6407,6 +6415,7 @@
 <translation id="8139447493436036221">Archivos de Google Drive</translation>
 <translation id="8141584439523427891">Abriendo en otro navegador</translation>
 <translation id="8141725884565838206">Administra tus contraseñas.</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{un video}other{# videos}}</translation>
 <translation id="8143442547342702591">La app no es válida</translation>
 <translation id="8143951647992294073">Seleccionar <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Si ya estás registrado en este dispositivo, puedes <ph name="LINK2_START" />acceder como un usuario existente<ph name="LINK2_END" /> .</translation>
@@ -6426,6 +6435,7 @@
 <translation id="8161293209665121583">Modo de lectura para páginas web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Mover la pestaña a una ventana nueva}other{Mover las pestañas a una ventana nueva}}</translation>
 <translation id="8165997195302308593">Redirección de puertos para Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{un número de teléfono}other{# números de teléfono}}</translation>
 <translation id="8168435359814927499">Contenido</translation>
 <translation id="8168943654413034772">No se puede quitar el único interruptor asignado a Seleccionar. Presiona cualquier tecla para salir.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Agregar la pestaña a la lista de lectura}other{Agregar las pestañas a la lista de lectura}}</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index e16d356d..c6079fd 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -1331,6 +1331,7 @@
 <translation id="2440604414813129000">Ver códig&amp;o fuente</translation>
 <translation id="244231003699905658">Dirección no válida. Revisa la dirección y vuelve a intentarlo.</translation>
 <translation id="2442916515643169563">Sombra del texto</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">El directorio raíz de la extensión es obligatorio.</translation>
 <translation id="2445484935443597917">Crear perfil</translation>
 <translation id="2448312741937722512">Tipo</translation>
@@ -2391,6 +2392,7 @@
 <translation id="3616741288025931835">&amp;Borrar datos de navegación...</translation>
 <translation id="3617891479562106823">Los fondos no están disponibles. Inténtalo de nuevo más tarde.</translation>
 <translation id="3619115746895587757">Capuchino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{una aplicación}other{# aplicaciones}}</translation>
 <translation id="362333465072914957">Esperando a que la autoridad de certificación publique un certificado</translation>
 <translation id="3624567683873126087">Desbloquear el dispositivo e iniciar sesión en la cuenta de Google</translation>
 <translation id="3625481642044239431">El archivo seleccionado no es válido. Inténtalo de nuevo.</translation>
@@ -2662,6 +2664,7 @@
 <translation id="3895076768659607631">&amp;Administrar buscadores...</translation>
 <translation id="3895090224522145010">Nombre de usuario de Kerberos</translation>
 <translation id="389521680295183045">Los sitios pueden preguntarte cuándo usas activamente tu dispositivo</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{una imagen}other{# imágenes}}</translation>
 <translation id="3898233949376129212">Idioma del dispositivo</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> quiere: <ph name="FIRST_PERMISSION" /> y <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Seleccionar teclado</translation>
@@ -3574,6 +3577,7 @@
 <translation id="4943368462779413526">Balón de fútbol</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" solicita conectarse a un puerto serie</translation>
 <translation id="4944310289250773232">Este servicio de autenticación está alojado por <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{un archivo}other{# archivos}}</translation>
 <translation id="495170559598752135">Acciones</translation>
 <translation id="4953808748584563296">Avatar naranja predeterminado</translation>
 <translation id="4955710816792587366">Elige un PIN</translation>
@@ -4641,6 +4645,7 @@
 <translation id="6184099524311454384">Buscar pestañas</translation>
 <translation id="6185132558746749656">Ubicación del dispositivo</translation>
 <translation id="6186394437969115158">Los sitios suelen mostrar anuncios para poder ofrecer contenido o servicios de manera gratuita. Sin embargo, algunos sitios se caracterizan por mostrar anuncios invasivos o engañosos.</translation>
+<translation id="6195005504600220730">Leer información sobre tu navegador, tu sistema operativo y tu dispositivo</translation>
 <translation id="6195693561221576702">Este dispositivo no se puede configurar en el modo de demostración sin conexión.</translation>
 <translation id="6195724942939841102">No restaurar</translation>
 <translation id="6196640612572343990">Bloquear cookies de terceros</translation>
@@ -5072,6 +5077,7 @@
 <translation id="6664237456442406323">Lamentablemente, tu ordenador está configurado con un identificador de hardware incorrecto. Esto impide que Chrome OS se actualice con los últimos parches de seguridad y hace que el ordenador <ph name="BEGIN_BOLD" />pueda ser vulnerable a ataques maliciosos<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Se ha producido un error al abrir tu perfil. Cierra sesión y vuelve a iniciarla.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> ya está disponible</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{una dirección}other{# direcciones}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Para iniciar la sincronización, escribe tu frase de contraseña</translation>
 <translation id="6675665718701918026">Dispositivo señalador conectado</translation>
@@ -5768,6 +5774,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Abrir ubicación...</translation>
 <translation id="7457384018036134905">Gestionar idiomas en los ajustes de Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{un enlace}other{# enlaces}}</translation>
 <translation id="7458168200501453431">Usa el mismo corrector ortográfico que se usa en la Búsqueda de Google. El texto que escribas en el navegador se enviará a Google.</translation>
 <translation id="7460045493116006516">Tema instalado actualmente</translation>
 <translation id="7461924472993315131">Fijar</translation>
@@ -6168,6 +6175,7 @@
 <translation id="7883792253546618164">Anula la suscripción cuando quieras.</translation>
 <translation id="788453346724465748">Cargando información de la cuenta...</translation>
 <translation id="7885253890047913815">Destinos recientes</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{un elemento}other{# elementos}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplicar</translation>
 <translation id="7887864092952184874">Ratón Bluetooth vinculado</translation>
@@ -6408,6 +6416,7 @@
 <translation id="8139447493436036221">Archivos de Google Drive</translation>
 <translation id="8141584439523427891">Abriendo en un navegador alternativo</translation>
 <translation id="8141725884565838206">Administra tus contraseñas</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{un vídeo}other{# vídeos}}</translation>
 <translation id="8143442547342702591">La aplicación no es válida</translation>
 <translation id="8143951647992294073">Seleccionar <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Si ya te has registrado en este dispositivo, puedes <ph name="LINK2_START" />iniciar sesión con tu nombre de usuario<ph name="LINK2_END" />.</translation>
@@ -6427,6 +6436,7 @@
 <translation id="8161293209665121583">Modo de lectura en páginas web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Mover pestaña a una nueva ventana}other{Mover pestañas a una nueva ventana}}</translation>
 <translation id="8165997195302308593">Redirección de puertos de Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{un número de teléfono}other{# números de teléfono}}</translation>
 <translation id="8168435359814927499">Contenido</translation>
 <translation id="8168943654413034772">No se puede quitar el único interruptor asignado a la acción "Seleccionar". Pulsa cualquier tecla para salir.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Añadir pestaña a lista de lectura}other{Añadir pestañas a lista de lectura}}</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index 7214b79..a0b5fa1 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">Kustuta sirvi&amp;mise andmed...</translation>
 <translation id="3617891479562106823">Taustad pole saadaval. Proovige hiljem uuesti</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{rakendus}other{# rakendust}}</translation>
 <translation id="362333465072914957">Oodatakse, et CA väljastaks sertifikaadi</translation>
 <translation id="3624567683873126087">Avage seade ja logige oma Google'i kontole sisse</translation>
 <translation id="3625481642044239431">Valiti kehtetu fail. Proovige uuesti.</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;Otsingumootorite haldamine …</translation>
 <translation id="3895090224522145010">Kerberose kasutajanimi</translation>
 <translation id="389521680295183045">Saidid võivad küsida luba selle teadmiseks, millal seadet aktiivselt kasutate</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{pilt}other{# pilti}}</translation>
 <translation id="3898233949376129212">Seadme keel</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> soovib teha järgmist: <ph name="FIRST_PERMISSION" /> ja <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Klaviatuuri valimine</translation>
@@ -3577,6 +3579,7 @@
 <translation id="4943368462779413526">Jalgpall</translation>
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />” soovib järjestikpordiga ühendust luua</translation>
 <translation id="4944310289250773232">Autentimisteenust hostib <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{fail}other{# faili}}</translation>
 <translation id="495170559598752135">Toimingud</translation>
 <translation id="4953808748584563296">Oranž vaikeavatar</translation>
 <translation id="4955710816792587366">Valige PIN-kood</translation>
@@ -5076,6 +5079,7 @@
 <translation id="6664237456442406323">Kahjuks on teie arvuti seadistatud vigase riistvara ID-ga. See ei lase Chrome OS-i värskendada uusimate turvaparandustega ja teie arvuti <ph name="BEGIN_BOLD" />võib pahatahtlike rünnakute osas haavatav olla<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Teie profiili avamisel läks midagi valesti. Logige välja ja seejärel uuesti sisse.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> on nüüd saadaval</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{aadress}other{# aadressi}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Sünkroonimise alustamiseks sisestage oma parool</translation>
 <translation id="6675665718701918026">Ühendati kursoriseade</translation>
@@ -5772,6 +5776,7 @@
 <translation id="7456142309650173560">arendaja</translation>
 <translation id="7456847797759667638">Ava asukoht...</translation>
 <translation id="7457384018036134905">Hallake keeli Chrome OS-i seadetes</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{link}other{# linki}}</translation>
 <translation id="7458168200501453431">Kasutab sama õigekirjakontrolli, mida kasutatakse Google'i otsingus. Brauseris sisestatav tekst saadetakse Google'ile.</translation>
 <translation id="7460045493116006516">Teie installitud praegune teema</translation>
 <translation id="7461924472993315131">Kinnita</translation>
@@ -6172,6 +6177,7 @@
 <translation id="7883792253546618164">Saate tellimuse alati tühistada.</translation>
 <translation id="788453346724465748">Kontoteabe laadimine …</translation>
 <translation id="7885253890047913815">Hiljutised sihtkohad</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{üksus}other{# üksust}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Tee koopia</translation>
 <translation id="7887864092952184874">Bluetoothi hiir on seotud</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Google Drive'i failid</translation>
 <translation id="8141584439523427891">Avatakse kohe alternatiivses brauseris</translation>
 <translation id="8141725884565838206">Paroolide haldamine</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{video}other{# videot}}</translation>
 <translation id="8143442547342702591">Sobimatu rakendus</translation>
 <translation id="8143951647992294073">Vali „<ph name="TOPIC_SOURCE" /> – <ph name="TOPIC_SOURCE_DESC" />”</translation>
 <translation id="8146177459103116374">Kui olete seadmes juba registreeritud, siis võite <ph name="LINK2_START" />logida sisse olemasoleva kasutajana<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Lugeja režiim veebilehtedele</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Teisalda vaheleht uude aknasse}other{Teisalda vahelehed uude aknasse}}</translation>
 <translation id="8165997195302308593">Crostini pordisiire</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{telefoninumber}other{# telefoninumbrit}}</translation>
 <translation id="8168435359814927499">Sisu</translation>
 <translation id="8168943654413034772">Valimistoimingu jaoks määratud ainsat lülitit ei saa eemaldada. Väljumiseks vajutage mis tahes klahvi.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Vahelehe lisamine lugemisloendisse}other{Vahelehtede lisamine lugemisloendisse}}</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb
index 147a72c9..5eb7a4f6 100644
--- a/chrome/app/resources/generated_resources_eu.xtb
+++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -1336,7 +1336,7 @@
 <translation id="2445484935443597917">Sortu profil bat</translation>
 <translation id="2448312741937722512">Mota</translation>
 <translation id="2448810255793562605">Erabilerraztasun-osagarriaren bilaketa automatikoa</translation>
-<translation id="2450223707519584812">Ezin izango dituzu erabiltzaileak gehitu, Google APIaren gakoak falta direlako. Xehetasun gehiago nahi badituzu, ikusi <ph name="DETAILS_URL" />.</translation>
+<translation id="2450223707519584812">Ezin izango dituzu erabiltzaileak gehitu, Google APIko gakoak falta direlako. Xehetasun gehiago nahi badituzu, ikusi <ph name="DETAILS_URL" />.</translation>
 <translation id="2450849356604136918">Ez dago ikuspegi aktiborik</translation>
 <translation id="2451298179137331965">2x</translation>
 <translation id="245322989586167203">Webguneak serieko ataketara konektatu ohi dira datuak transferitzeko eginbideak eskaintzeko, hala nola sare-konfigurazioa</translation>
@@ -2392,6 +2392,7 @@
 <translation id="3616741288025931835">&amp;Garbitu arakatze-datuak...</translation>
 <translation id="3617891479562106823">Atzeko planoak ez daude erabilgarri. Saiatu berriro geroago.</translation>
 <translation id="3619115746895587757">Kaputxinoa</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{aplikazio bat}other{# aplikazio}}</translation>
 <translation id="362333465072914957">Ziurtagiri-emaileak ziurtagiria jaulkitzeko zain</translation>
 <translation id="3624567683873126087">Desblokeatu gailua eta hasi saioa Google-ko kontuan</translation>
 <translation id="3625481642044239431">Balio ez duen fitxategi bat hautatu da. Saiatu berriro.</translation>
@@ -2663,6 +2664,7 @@
 <translation id="3895076768659607631">&amp;Kudeatu bilatzaileak…</translation>
 <translation id="3895090224522145010">Kerberos-eko erabiltzaile-izena</translation>
 <translation id="389521680295183045">Webguneek gailua noiz erabiltzen ari zaren jakitea eska dezakete</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{irudi bat}other{# irudi}}</translation>
 <translation id="3898233949376129212">Gailuaren hizkuntza</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> webguneak hauetarako baimena nahi du: <ph name="FIRST_PERMISSION" /> eta <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Hautatu teklatua</translation>
@@ -3576,6 +3578,7 @@
 <translation id="4943368462779413526">Futboleko baloia</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" luzapenak serieko ataka batera konektatu nahi du</translation>
 <translation id="4944310289250773232"><ph name="SAML_DOMAIN" /> da autentifikazio-zerbitzuaren ostalaria</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{fitxategi bat}other{# fitxategi}}</translation>
 <translation id="495170559598752135">Ekintzak</translation>
 <translation id="4953808748584563296">Abatar laranja lehenetsia</translation>
 <translation id="4955710816792587366">Aukeratu PIN kode bat</translation>
@@ -5075,6 +5078,7 @@
 <translation id="6664237456442406323">Ordenagailua formatu okerreko hardware IDarekin dago konfiguratuta. Ondorioz, Chrome OS ezin da eguneratu azken segurtasun-konponketekin, eta ordenagailuak <ph name="BEGIN_BOLD" />asmo txarreko erasoak jaso ahal izango ditu<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Arazoren bat izan da profila irekitzean. Amaitu saioa eta has ezazu berriro.</translation>
 <translation id="6670142487971298264">Erabilgarri dago <ph name="APP_NAME" /></translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{helbide bat}other{# helbide}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Sinkronizatzen hasteko, idatzi pasaesaldia</translation>
 <translation id="6675665718701918026">Konektatu da gailu erakuslea</translation>
@@ -5771,6 +5775,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Ireki kokapena…</translation>
 <translation id="7457384018036134905">Kudeatu hizkuntzak Chrome OS-en ezarpenetan</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{esteka bat}other{# esteka}}</translation>
 <translation id="7458168200501453431">Google-ren bilaketetan erabiltzen den ortografia-zuzentzaile bera erabiltzen du. Arakatzailean idazten duzun testua Google-ri bidaltzen zaio.</translation>
 <translation id="7460045493116006516">Instalatuta daukazun gaia</translation>
 <translation id="7461924472993315131">Ainguratu</translation>
@@ -6171,6 +6176,7 @@
 <translation id="7883792253546618164">Edonoiz ken dezakezu harpidetza.</translation>
 <translation id="788453346724465748">Kontuaren informazioa kargatzen…</translation>
 <translation id="7885253890047913815">Azken inprimagailuak</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{elementu bat}other{# elementu}}</translation>
 <translation id="7886605625338676841">eSIM sareak</translation>
 <translation id="7887334752153342268">Bikoiztu</translation>
 <translation id="7887864092952184874">Bluetooth sagua parekatuta dago</translation>
@@ -6410,6 +6416,7 @@
 <translation id="8139447493436036221">Google Drive-ko fitxategiak</translation>
 <translation id="8141584439523427891">Beste arakatzaile batean irekitzen</translation>
 <translation id="8141725884565838206">Kudeatu pasahitzak</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{bideo bat}other{# bideo}}</translation>
 <translation id="8143442547342702591">Aplikazioak ez du balio</translation>
 <translation id="8143951647992294073">Hautatu <ph name="TOPIC_SOURCE" /> zerbitzuko <ph name="TOPIC_SOURCE_DESC" /> aukera</translation>
 <translation id="8146177459103116374">Dagoeneko gailu honetan erregistratu bazara, <ph name="LINK2_START" />lehendik zegoen erabiltzaile gisa has dezakezu saioa<ph name="LINK2_END" />.</translation>
@@ -6429,6 +6436,7 @@
 <translation id="8161293209665121583">Web-orrietarako irakurgailu modua</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Eraman fitxa leiho berri batera}other{Eraman fitxak leiho berri batera}}</translation>
 <translation id="8165997195302308593">Crostini-ren ataka-birbideratzea</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{telefono-zenbaki bat}other{# telefono-zenbaki}}</translation>
 <translation id="8168435359814927499">Edukia</translation>
 <translation id="8168943654413034772">Ezin da kendu "Hautatu" ekintzari esleitu zaion etengailu bakarra. Irteteko, sakatu edozein tekla.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Gehitu fitxa irakurketa-zerrendan}other{Gehitu fitxak irakurketa-zerrendan}}</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index ce826fd9..f804863e 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -2391,6 +2391,7 @@
 <translation id="3616741288025931835">&amp;پاک کردن داده‌های مرور...</translation>
 <translation id="3617891479562106823">پس‌زمینه‌ها دردسترس نیست. بعداً دوباره امتحان کنید.</translation>
 <translation id="3619115746895587757">کاپوچینو</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{یک برنامه}one{# برنامه}other{# برنامه}}</translation>
 <translation id="362333465072914957">‏درانتظار CA برای صدور گواهینامه</translation>
 <translation id="3624567683873126087">‏باز کردن قفل دستگاه و ورود به سیستم حساب Google</translation>
 <translation id="3625481642044239431">فایل انتخاب‌شده معتبر نیست. دوباره امتحان کنید.</translation>
@@ -2662,6 +2663,7 @@
 <translation id="3895076768659607631">مدیریت موتورهای جستجو...</translation>
 <translation id="3895090224522145010">‏نام کاربری Kerberos</translation>
 <translation id="389521680295183045">سایت‌ها می‌توانند درخواست کنند که وقتی شما به‌طور فعال از دستگاه استفاده می‌کنید مطلع شوند</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{یک تصویر}one{# تصویر}other{# تصویر}}</translation>
 <translation id="3898233949376129212">زبان دستگاه</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> می‌خواهد: <ph name="FIRST_PERMISSION" /> و <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">انتخاب صفحه‌کلید</translation>
@@ -3575,6 +3577,7 @@
 <translation id="4943368462779413526">فوتبال</translation>
 <translation id="4943691134276646401">«<ph name="CHROME_EXTENSION_NAME" />» می‌خواهد به یک درگاه سریالی متصل شود</translation>
 <translation id="4944310289250773232">این خدمات اصالت‌سنجی توسط <ph name="SAML_DOMAIN" /> میزبانی می‌شود</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{یک فایل}one{# فایل}other{# فایل}}</translation>
 <translation id="495170559598752135">کنش‌ها</translation>
 <translation id="4953808748584563296">چهره‌نمای پیش‌فرض نارنجی</translation>
 <translation id="4955710816792587366">پین خودتان را انتخاب کنید</translation>
@@ -5074,6 +5077,7 @@
 <translation id="6664237456442406323">‏متأسفانه، رایانه شما با یک شناسه سخت‌افزار ناقص پیکربندی شده است. این موضوح Chrome OS را از به‌روزرسانی با جدیدترین اصلاحات امنیتی باز می‌دارد که <ph name="BEGIN_BOLD" />می‌تواند رایانه شما را در برابر حملات مخرب آسیب‌پذیر نماید<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">هنگام باز کردن نمایه‌تان مشکلی پیش آمد. لطفاً از سیستم خارج شوید و دوباره به آن وارد شوید.</translation>
 <translation id="6670142487971298264">‫<ph name="APP_NAME" /> اکنون دردسترس است</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{یک نشانی}one{# نشانی}other{# نشانی}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">برای شروع همگام‌سازی، عبارت عبور را وارد کنید</translation>
 <translation id="6675665718701918026">دستگاه نشانگر متصل شد</translation>
@@ -5770,6 +5774,7 @@
 <translation id="7456142309650173560">‏برنامه‌نویسان (dev)</translation>
 <translation id="7456847797759667638">باز کردن مکان...</translation>
 <translation id="7457384018036134905">‏مدیریت زبان‌ها در تنظیمات Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{یک پیوند}one{# پیوند}other{# پیوند}}</translation>
 <translation id="7458168200501453431">‏از همان غلط‌گیر املایی استفاده می‌کند که در جستجوی Google استفاده می‌شود. نوشتاری که در مرورگر تایپ کرده‌اید برای Google ارسال می‌شود.</translation>
 <translation id="7460045493116006516">طرح زمینه کنونی که نصب کرده‌اید</translation>
 <translation id="7461924472993315131">پین</translation>
@@ -6170,6 +6175,7 @@
 <translation id="7883792253546618164">هرزمان خواستید اشتراک را لغو کنید.</translation>
 <translation id="788453346724465748">درحال بار کردن اطلاعات حساب…</translation>
 <translation id="7885253890047913815">مقصدهای اخیر</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{یک مورد}one{# مورد}other{# مورد}}</translation>
 <translation id="7886605625338676841">سیم‌کارت داخلی</translation>
 <translation id="7887334752153342268">کپی‌برداری</translation>
 <translation id="7887864092952184874">موشواره بلوتوث مرتبط شد</translation>
@@ -6410,6 +6416,7 @@
 <translation id="8139447493436036221">‏فایل‌های Google Drive</translation>
 <translation id="8141584439523427891">اکنون باز کردن در مرورگر جایگزین</translation>
 <translation id="8141725884565838206">مدیریت گذرواژه‌های شما</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{یک ویدیو}one{# ویدیو}other{# ویدیو}}</translation>
 <translation id="8143442547342702591">برنامه نامعتبر است</translation>
 <translation id="8143951647992294073">انتخاب <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">اگر قبلاً در این دستگاه ثبت‌نام کردید، می‌توانید <ph name="LINK2_START" />به‌عنوان یک کاربر موجود، وارد شوید<ph name="LINK2_END" />.</translation>
@@ -6429,6 +6436,7 @@
 <translation id="8161293209665121583">«حالت خواننده» برای صفحه‌های وب</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{انتقال دادن برگه به پنجره جدید}one{انتقال دادن برگه‌ها به پنجره جدید}other{انتقال دادن برگه‌ها به پنجره جدید}}</translation>
 <translation id="8165997195302308593">‏بازارسال درگاه Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{یک شماره تلفن}one{# شماره تلفن}other{# شماره تلفن}}</translation>
 <translation id="8168435359814927499">محتوا</translation>
 <translation id="8168943654413034772">نمی‌توان تنها کلید تخصیص‌یافته برای «انتخاب» را برداشت. برای خروج، کلیدی را فشار دهید.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{افزودن برگه به فهرست خواندن}one{افزودن برگه به فهرست خواندن}other{افزودن برگه‌ها به فهرست خواندن}}</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index df7754a..5fd7248d 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">&amp;Poista selaustiedot...</translation>
 <translation id="3617891479562106823">Taustat eivät ole käytettävissä. Yritä myöhemmin uudelleen.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{sovellus}other{# sovellusta}}</translation>
 <translation id="362333465072914957">Odotetaan varmenteen myöntäjää</translation>
 <translation id="3624567683873126087">Avaa laitteen lukitus ja kirjaudu Google-tilille</translation>
 <translation id="3625481642044239431">Valittu tiedosto on virheellinen. Yritä uudelleen.</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">Ylläpidä (&amp;M) hakukoneita…</translation>
 <translation id="3895090224522145010">Kerberos-käyttäjänimi</translation>
 <translation id="389521680295183045">Sivustot saavat pyytää luvan tietää, milloin käytät laitetta aktiivisesti</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{kuva}other{# kuvaa}}</translation>
 <translation id="3898233949376129212">Laitteen kieli</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> haluaa <ph name="FIRST_PERMISSION" /> ja <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Valitse näppäimistö</translation>
@@ -3574,6 +3576,7 @@
 <translation id="4943368462779413526">Jalkapallo</translation>
 <translation id="4943691134276646401"><ph name="CHROME_EXTENSION_NAME" /> haluaa yhdistää sarjaporttiin</translation>
 <translation id="4944310289250773232">Todennuspalvelun tarjoaa <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{tiedosto}other{# tiedostoa}}</translation>
 <translation id="495170559598752135">Toiminnot</translation>
 <translation id="4953808748584563296">Oranssi oletusavatar</translation>
 <translation id="4955710816792587366">Valitse PIN-koodi</translation>
@@ -5073,6 +5076,7 @@
 <translation id="6664237456442406323">Tietokoneesi on valitettavasti määritetty virheellisellä laitetunnuksella. Siksi Chrome-käyttöjärjestelmä ei voi asentaa uusimpia tietoturvapäivityksiä ja tietokoneesi <ph name="BEGIN_BOLD" />voi altistua hyökkäyksille<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Jotain meni pieleen. profiilisi avaamisessa. Kirjaudu ensin ulos ja sitten uudelleen sisään.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> on nyt saatavilla</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{osoite}other{# osoitetta}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Aloita synkronointi lisäämällä tunnuslause</translation>
 <translation id="6675665718701918026">Osoitinlaite yhdistetty.</translation>
@@ -5769,6 +5773,7 @@
 <translation id="7456142309650173560">kehitys</translation>
 <translation id="7456847797759667638">Avaa sijainti...</translation>
 <translation id="7457384018036134905">Muuta kielivalintoja Chrome-käyttöjärjestelmän asetuksista</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{linkki}other{# linkkiä}}</translation>
 <translation id="7458168200501453431">Käyttää samaa oikolukua kuin Google Haussa. Selaimeen kirjoittamasi teksti lähetetään Googlelle.</translation>
 <translation id="7460045493116006516">Asentamasi nykyinen teema</translation>
 <translation id="7461924472993315131">Kiinnitä</translation>
@@ -6168,6 +6173,7 @@
 <translation id="7883792253546618164">Voit peruuttaa tilauksen milloin tahansa.</translation>
 <translation id="788453346724465748">Ladataan tilitietoja…</translation>
 <translation id="7885253890047913815">Uusimmat kohteet</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{kohde}other{# kohdetta}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Monista</translation>
 <translation id="7887864092952184874">Laitepari muodostettu Bluetooth-hiiren kanssa</translation>
@@ -6408,6 +6414,7 @@
 <translation id="8139447493436036221">Google Drive -tiedostot</translation>
 <translation id="8141584439523427891">Avataan pian toisessa selaimessa</translation>
 <translation id="8141725884565838206">Hallinnoi salasanoja</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{video}other{# videota}}</translation>
 <translation id="8143442547342702591">Virheellinen sovellus</translation>
 <translation id="8143951647992294073">Valitse <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Jos olet jo rekisteröitynyt tällä laitteella, voit <ph name="LINK2_START" />kirjautua sisään olemassa olevana käyttäjänä<ph name="LINK2_END" />.</translation>
@@ -6427,6 +6434,7 @@
 <translation id="8161293209665121583">Verkkosivujen lukijatila</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Siirrä välilehti uuteen ikkunaan}other{Siirrä välilehdet uuteen ikkunaan}}</translation>
 <translation id="8165997195302308593">Crostini-porttiohjaus</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{puhelinnumero}other{# puhelinnumeroa}}</translation>
 <translation id="8168435359814927499">Sisältö</translation>
 <translation id="8168943654413034772">Valinta-toiminnolle määritettyä ainoaa kytkintä ei voi poistaa. Poistu painamalla mitä tahansa näppäintä.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Lisää välilehti lukulistalle}other{Lisää välilehdet lukulistalle}}</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index cf25fe9..f7737be 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -2394,6 +2394,7 @@
 <translation id="3616741288025931835">&amp;I-clear ang Data sa Pag-browse...</translation>
 <translation id="3617891479562106823">Hindi available ang mga background. Subukang muli sa ibang pagkakataon.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{isang app}one{# app}other{# na app}}</translation>
 <translation id="362333465072914957">Hinihintay ang CA na magbigay ng certificate</translation>
 <translation id="3624567683873126087">I-unlock ang device at mag-sign in sa Google Account</translation>
 <translation id="3625481642044239431">Invalid ang file na napili. Subukang muli.</translation>
@@ -2665,6 +2666,7 @@
 <translation id="3895076768659607631">&amp;Pamahalaan ang Mga Search Engine...</translation>
 <translation id="3895090224522145010">Username ng Kerberos</translation>
 <translation id="389521680295183045">Puwedeng hilingin ng mga site na malaman kung aktibo mong ginagamit ang iyong device</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{isang larawan}one{# larawan}other{# na larawan}}</translation>
 <translation id="3898233949376129212">Wika ng device</translation>
 <translation id="3898327728850887246">Gusto ng <ph name="SITE_NAME" /> na: <ph name="FIRST_PERMISSION" /> at <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Pumili ng keyboard</translation>
@@ -3578,6 +3580,7 @@
 <translation id="4943368462779413526">Football</translation>
 <translation id="4943691134276646401">Gustong kumonekta ng "<ph name="CHROME_EXTENSION_NAME" />" sa isang serial port</translation>
 <translation id="4944310289250773232">Hino-host ng <ph name="SAML_DOMAIN" /> ang serbisyo sa pag-authenticate na ito</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{isang file}one{# file}other{# na file}}</translation>
 <translation id="495170559598752135">Mga Pagkilos</translation>
 <translation id="4953808748584563296">Default na orange na avatar</translation>
 <translation id="4955710816792587366">Piliin ang iyong PIN</translation>
@@ -5077,6 +5080,7 @@
 <translation id="6664237456442406323">Sa kasamaang-palad, na-configure ang iyong computer gamit ang isang hardware ID na mali ang pagkakabuo. Pinipigilan nitong mag-update ang Chrome OS upang magkaroon ng mga pinakabagong pag-aayos sa seguridad at <ph name="BEGIN_BOLD" />maaaring mawalan ng proteksyon laban sa mga nakakahamak na pag-atake<ph name="END_BOLD" /> ang iyong computer.</translation>
 <translation id="6664774537677393800">Nagkaproblema sa pagbukas ng iyong profile. Mangyaring mag-sign out at pagkatapos ay muling mag-sign in.</translation>
 <translation id="6670142487971298264">Available na ngayon ang <ph name="APP_NAME" /></translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{isang address}one{# address}other{# na address}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Para simulan ang pag-sync, ilagay ang iyong passphrase</translation>
 <translation id="6675665718701918026">May nakakonektang pointing device</translation>
@@ -5773,6 +5777,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Buksan ang Lokasyon...</translation>
 <translation id="7457384018036134905">Pamahalaan ang mga wika sa mga setting ng Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{isang link}one{# link}other{# na link}}</translation>
 <translation id="7458168200501453431">Ginagamit ang parehong spell checker na ginagamit sa paghahanap sa Google. Ipapadala sa Google ang text na tina-type mo.</translation>
 <translation id="7460045493116006516">Kasalukuyang temang na-install mo</translation>
 <translation id="7461924472993315131">I-pin</translation>
@@ -6173,6 +6178,7 @@
 <translation id="7883792253546618164">Mag-unsubscribe anumang oras.</translation>
 <translation id="788453346724465748">Nilo-load ang impormasyon ng account...</translation>
 <translation id="7885253890047913815">Mga Kamakailang Patutunguhan</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{isang item}one{# item}other{# na item}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Doblehin</translation>
 <translation id="7887864092952184874">Naipares ang bluetooth mouse</translation>
@@ -6413,6 +6419,7 @@
 <translation id="8139447493436036221">Mga file sa Google Drive</translation>
 <translation id="8141584439523427891">Binubuksan ngayon sa alternatibong browser</translation>
 <translation id="8141725884565838206">Pamahalaan ang iyong mga password</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{isang video}one{# video}other{# na video}}</translation>
 <translation id="8143442547342702591">Invalid ang application</translation>
 <translation id="8143951647992294073">Piliin ang <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Kung nakarehistro ka na sa device na ito, maaari kang <ph name="LINK2_START" />mag-sign in bilang isang umiiral nang user<ph name="LINK2_END" />.</translation>
@@ -6432,6 +6439,7 @@
 <translation id="8161293209665121583">Reader mode para sa mga web page</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Ilipat ang Tab sa Bagong Window}one{Maglipat ng Mga Tab sa Bagong Window}other{Maglipat ng Mga Tab sa Bagong Window}}</translation>
 <translation id="8165997195302308593">Pag-forward ng port sa Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{isang numero ng telepono}one{# numero ng telepono}other{# na numero ng telepono}}</translation>
 <translation id="8168435359814927499">Content</translation>
 <translation id="8168943654413034772">Hindi maalis ang tanging switch na nakatalaga sa Piliin. Pumindot ng anumang key para lumabas.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Idagdag ang Tab sa Listahan ng Babasahin}one{Idagdag ang Mga Tab sa Listahan ng Babasahin}other{Idagdag ang Mga Tab sa Listahan ng Babasahin}}</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb
index 5fad805..88dcce5 100644
--- a/chrome/app/resources/generated_resources_fr-CA.xtb
+++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -2394,6 +2394,7 @@
 <translation id="3616741288025931835">Effa&amp;cer les données de navigation…</translation>
 <translation id="3617891479562106823">Les arrière-plans ne sont pas disponibles. Réessayez plus tard.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{une application}one{# application}other{# applications}}</translation>
 <translation id="362333465072914957">En attente de la publication du certificat par l'autorité correspondante</translation>
 <translation id="3624567683873126087">Déverrouiller l'appareil et se connecter au compte Google</translation>
 <translation id="3625481642044239431">Fichier sélectionné non valide. Réessayez.</translation>
@@ -2665,6 +2666,7 @@
 <translation id="3895076768659607631">&amp;Gérer les moteurs de recherche…</translation>
 <translation id="3895090224522145010">Nom d'utilisateur Kerberos</translation>
 <translation id="389521680295183045">Les sites peuvent demander à savoir quand vous utilisez activement votre appareil</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{une image}one{# image}other{# images}}</translation>
 <translation id="3898233949376129212">Langue de l'appareil</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> veut : <ph name="FIRST_PERMISSION" /> et <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Sélectionner un clavier</translation>
@@ -3578,6 +3580,7 @@
 <translation id="4943368462779413526">Football</translation>
 <translation id="4943691134276646401">« <ph name="CHROME_EXTENSION_NAME" /> » veut se connecter à un port de série</translation>
 <translation id="4944310289250773232">Ce service d'authentification est hébergé par <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{un fichier}one{# fichier}other{# fichiers}}</translation>
 <translation id="495170559598752135">Actions</translation>
 <translation id="4953808748584563296">Avatar orange par défaut</translation>
 <translation id="4955710816792587366">Choisir votre NIP</translation>
@@ -5076,6 +5079,7 @@
 <translation id="6664237456442406323">Malheureusement, votre ordinateur est configuré avec un identifiant de matériel invalide, ce qui empêche l'installation des derniers correctifs de sécurité pour Chrome OS. Votre ordinateur <ph name="BEGIN_BOLD" />peut ainsi être vulnérable aux attaques malveillantes<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Un problème est survenu lors de l'ouverture de votre profil. Veuillez vous déconnecter, puis vous reconnecter.</translation>
 <translation id="6670142487971298264">L'application <ph name="APP_NAME" /> est maintenant accessible</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{une adresse}one{# adresse}other{# adresses}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Pour lancer la synchronisation, entrez votre phrase de passe</translation>
 <translation id="6675665718701918026">Appareil de pointage connecté</translation>
@@ -5772,6 +5776,7 @@
 <translation id="7456142309650173560">concepteur</translation>
 <translation id="7456847797759667638">Ouvrir une adresse...</translation>
 <translation id="7457384018036134905">Gérer les langues dans les paramètres de Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{un lien}one{# lien}other{# liens}}</translation>
 <translation id="7458168200501453431">Utilise le même correcteur orthographique que celui utilisé dans la recherche Google. Le texte que vous tapez dans le navigateur sera envoyé à Google.</translation>
 <translation id="7460045493116006516">Le thème actuel que vous avez installé</translation>
 <translation id="7461924472993315131">NIP</translation>
@@ -6172,6 +6177,7 @@
 <translation id="7883792253546618164">Vous pouvez vous désabonner à tout moment.</translation>
 <translation id="788453346724465748">Chargement des renseignements sur le compte en cours…</translation>
 <translation id="7885253890047913815">Destinations récentes</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{un élément}one{# élément}other{# éléments}}</translation>
 <translation id="7886605625338676841">Carte eSIM</translation>
 <translation id="7887334752153342268">Dupliquer</translation>
 <translation id="7887864092952184874">Souris Bluetooth associée</translation>
@@ -6411,6 +6417,7 @@
 <translation id="8139447493436036221">Fichiers Google Disque</translation>
 <translation id="8141584439523427891">Ouverture dans un navigateur secondaire en cours…</translation>
 <translation id="8141725884565838206">Gérer les mots de passe</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{une vidéo}one{# vidéo}other{# vidéos}}</translation>
 <translation id="8143442547342702591">Application non valide</translation>
 <translation id="8143951647992294073">Sélectionner <ph name="TOPIC_SOURCE" /> (<ph name="TOPIC_SOURCE_DESC" />)</translation>
 <translation id="8146177459103116374">Si vous êtes déjà enregistré sur ​​cet appareil, vous pouvez <ph name="LINK2_START" />vous connecter à l'aide de votre compte<ph name="LINK2_END" />.</translation>
@@ -6430,6 +6437,7 @@
 <translation id="8161293209665121583">Mode Lecteur pour pages Web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Déplacer l'onglet vers une nouvelle fenêtre}one{Déplacer l'onglet vers une nouvelle fenêtre}other{Déplacer les onglets vers une nouvelle fenêtre}}</translation>
 <translation id="8165997195302308593">Redirection de port Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{un numéro de téléphone}one{# numéro de téléphone}other{# numéros de téléphone}}</translation>
 <translation id="8168435359814927499">Contenu</translation>
 <translation id="8168943654413034772">Impossible de retirer le seul commutateur auquel l'action Sélectionner est attribuée. Appuyez sur n'importe quelle touche pour quitter.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Ajouter l'onglet à la liste de lecture}one{Ajouter l'onglet à la liste de lecture}other{Ajouter les onglets à la liste de lecture}}</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 42104fb..be3530b 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -1332,6 +1332,7 @@
 <translation id="2440604414813129000">Afficher la s&amp;ource</translation>
 <translation id="244231003699905658">Adresse non valide. Veuillez vérifier l'adresse, puis réessayer.</translation>
 <translation id="2442916515643169563">Ombre du texte</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Le répertoire racine de l'extension doit être indiqué.</translation>
 <translation id="2445484935443597917">Créer un profil</translation>
 <translation id="2448312741937722512">Type</translation>
@@ -2393,6 +2394,7 @@
 <translation id="3616741288025931835">&amp;Effacer les données de navigation...</translation>
 <translation id="3617891479562106823">Les arrière-plans sont indisponibles. Réessayez plus tard.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{une appli}one{# appli}other{# applis}}</translation>
 <translation id="362333465072914957">En attente de l'émission du certificat par l'autorité de certification</translation>
 <translation id="3624567683873126087">Déverrouiller l'appareil et se connecter au compte Google</translation>
 <translation id="3625481642044239431">Le fichier sélectionné n'est pas valide. Veuillez réessayer.</translation>
@@ -2664,6 +2666,7 @@
 <translation id="3895076768659607631">Gérer les &amp;moteurs de recherche</translation>
 <translation id="3895090224522145010">Nom d'utilisateur Kerberos</translation>
 <translation id="389521680295183045">Les sites peuvent demander à savoir quand vous utilisez activement votre appareil</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{une image}one{# image}other{# images}}</translation>
 <translation id="3898233949376129212">Langue de l'appareil</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> souhaite obtenir les autorisations suivantes : <ph name="FIRST_PERMISSION" /> et <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Sélectionner un clavier</translation>
@@ -3577,6 +3580,7 @@
 <translation id="4943368462779413526">Football américain</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" tente de se connecter à un port de série</translation>
 <translation id="4944310289250773232">Ce service d'authentification est hébergé par <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{un fichier}one{# fichier}other{# fichiers}}</translation>
 <translation id="495170559598752135">Actions</translation>
 <translation id="4953808748584563296">Avatar orange par défaut</translation>
 <translation id="4955710816792587366">Configurer un code</translation>
@@ -4645,6 +4649,7 @@
 <translation id="6184099524311454384">Rechercher dans les onglets</translation>
 <translation id="6185132558746749656">Position de l'appareil</translation>
 <translation id="6186394437969115158">Les sites affichent généralement des annonces afin de proposer des contenus ou des services gratuits. Toutefois, certains sites sont connus pour afficher des annonces intrusives ou trompeuses.</translation>
+<translation id="6195005504600220730">Lire des infos concernant votre navigateur, votre OS et votre appareil</translation>
 <translation id="6195693561221576702">Impossible de configurer cet appareil en mode de démonstration hors connexion.</translation>
 <translation id="6195724942939841102">Ne pas restaurer</translation>
 <translation id="6196640612572343990">Bloquer les cookies tiers</translation>
@@ -5076,6 +5081,7 @@
 <translation id="6664237456442406323">Malheureusement, votre ordinateur est configuré avec un ID matériel incorrect. Cette défaillance empêche l'installation des derniers correctifs de sécurité sur Chrome OS et rend votre ordinateur <ph name="BEGIN_BOLD" />potentiellement vulnérable aux attaques malveillantes<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Une erreur s'est produite lors de l'ouverture de votre profil. Veuillez vous déconnecter, puis vous connecter de nouveau.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> désormais disponible</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{une adresse}one{# adresse}other{# adresses}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Pour lancer la synchronisation, saisissez votre phrase secrète</translation>
 <translation id="6675665718701918026">Dispositif de pointage connecté</translation>
@@ -5772,6 +5778,7 @@
 <translation id="7456142309650173560">développeur</translation>
 <translation id="7456847797759667638">Ouvrir une adresse</translation>
 <translation id="7457384018036134905">Gérer les langues dans les paramètres de Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{un lien}one{# lien}other{# liens}}</translation>
 <translation id="7458168200501453431">Utilise le même correcteur orthographique que celui utilisé dans la recherche Google. Le texte que vous saisissez dans le navigateur est envoyé à Google.</translation>
 <translation id="7460045493116006516">Thème actuel que vous avez installé</translation>
 <translation id="7461924472993315131">Épingler</translation>
@@ -6172,6 +6179,7 @@
 <translation id="7883792253546618164">Vous pouvez vous désabonner à tout moment.</translation>
 <translation id="788453346724465748">Chargement des informations de compte…</translation>
 <translation id="7885253890047913815">Emplacements de destination récents</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{un élément}one{# élément}other{# éléments}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Dupliquer</translation>
 <translation id="7887864092952184874">Souris Bluetooth associée.</translation>
@@ -6412,6 +6420,7 @@
 <translation id="8139447493436036221">fichiers Google Drive</translation>
 <translation id="8141584439523427891">Ouverture dans le navigateur secondaire…</translation>
 <translation id="8141725884565838206">Gérer les mots de passe</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{une vidéo}one{# vidéo}other{# vidéos}}</translation>
 <translation id="8143442547342702591">Application non valide</translation>
 <translation id="8143951647992294073">Sélectionnez <ph name="TOPIC_SOURCE" /> - <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Si vous êtes déjà enregistré sur ​​cet appareil, vous pouvez vous <ph name="LINK2_START" />connecter en tant qu'utilisateur existant<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6440,7 @@
 <translation id="8161293209665121583">Mode Lecteur pour les pages Web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Déplacer l'onglet vers une nouvelle fenêtre}one{Déplacer l'onglet vers une nouvelle fenêtre}other{Déplacer les onglets vers une nouvelle fenêtre}}</translation>
 <translation id="8165997195302308593">Transfert de port Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{un numéro de téléphone}one{# numéro de téléphone}other{# numéros de téléphone}}</translation>
 <translation id="8168435359814927499">Contenu</translation>
 <translation id="8168943654413034772">Impossible de supprimer l'unique contacteur attribué à l'action "Sélectionner". Appuyez sur n'importe quelle touche pour quitter.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Ajouter l'onglet à la liste de lecture}one{Ajouter l'onglet à la liste de lecture}other{Ajouter les onglets à la liste de lecture}}</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb
index 01d2883e..f684616 100644
--- a/chrome/app/resources/generated_resources_gl.xtb
+++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -2391,6 +2391,7 @@
 <translation id="3616741288025931835">&amp;Borrar datos de navegación...</translation>
 <translation id="3617891479562106823">Os fondos non están dispoñibles. Téntao de novo máis tarde.</translation>
 <translation id="3619115746895587757">Capuchino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{1 aplicación}other{# aplicacións}}</translation>
 <translation id="362333465072914957">Agardando a que a entidade de certificación emita un certificado</translation>
 <translation id="3624567683873126087">Desbloquea o dispositivo e inicia sesión na Conta de Google</translation>
 <translation id="3625481642044239431">Seleccionouse un ficheiro que non é válido. Téntao de novo.</translation>
@@ -2662,6 +2663,7 @@
 <translation id="3895076768659607631">Xestionar &amp;motores de busca…</translation>
 <translation id="3895090224522145010">Nome de usuario de Kerberos</translation>
 <translation id="389521680295183045">Os sitios poden pedirche permiso para saber cando estás utilizando o dispositivo de maneira activa</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{1 imaxe}other{# imaxes}}</translation>
 <translation id="3898233949376129212">Idioma do dispositivo</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> require permisos para: <ph name="FIRST_PERMISSION" /> e <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Selecciona un teclado</translation>
@@ -3575,6 +3577,7 @@
 <translation id="4943368462779413526">Fútbol</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" quere conectarse a un porto en serie</translation>
 <translation id="4944310289250773232">Este servizo de autenticación está aloxado por <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{1 ficheiro}other{# ficheiros}}</translation>
 <translation id="495170559598752135">Accións</translation>
 <translation id="4953808748584563296">Avatar laranxa predeterminado</translation>
 <translation id="4955710816792587366">Escolle o PIN</translation>
@@ -5074,6 +5077,7 @@
 <translation id="6664237456442406323">Desafortunadamente, o teu ordenador está configurado cun ID de hardware incorrecto. Isto impide que Chrome OS se actualice coas correccións de seguranza máis recentes e é posible que o teu ordenador <ph name="BEGIN_BOLD" />sexa vulnerable a ataques malintencionados<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Produciuse un erro ao abrir o perfil. Pecha sesión e despois iníciaa de novo.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> xa está dispoñible</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{1 enderezo}other{# enderezos}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Para comezar a sincronizar datos, escribe a túa frase de acceso</translation>
 <translation id="6675665718701918026">Conectouse o dispositivo apuntador</translation>
@@ -5770,6 +5774,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Abrir localización...</translation>
 <translation id="7457384018036134905">Xestionar idiomas na configuración de Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{1 ligazón}other{# ligazóns}}</translation>
 <translation id="7458168200501453431">Utiliza o mesmo corrector ortográfico que na Busca de Google. O texto que escribas no navegador enviarase a Google.</translation>
 <translation id="7460045493116006516">Tema que tes instalado actualmente</translation>
 <translation id="7461924472993315131">Marcar cun alfinete</translation>
@@ -6170,6 +6175,7 @@
 <translation id="7883792253546618164">Podes cancelar a subscrición en calquera momento.</translation>
 <translation id="788453346724465748">Cargando información da conta...</translation>
 <translation id="7885253890047913815">Destinos recentes</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{1 elemento}other{# elementos}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplicar</translation>
 <translation id="7887864092952184874">Rato Bluetooth sincronizado</translation>
@@ -6409,6 +6415,7 @@
 <translation id="8139447493436036221">Ficheiros de Google Drive</translation>
 <translation id="8141584439523427891">Abrindo nun navegador alternativo</translation>
 <translation id="8141725884565838206">Xestionar os teus contrasinais</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{1 vídeo}other{# vídeos}}</translation>
 <translation id="8143442547342702591">Aplicación non válida</translation>
 <translation id="8143951647992294073">Seleccionar <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Se xa te rexistraches neste dispositivo, podes <ph name="LINK2_START" />iniciar sesión como usuario existente<ph name="LINK2_END" />.</translation>
@@ -6428,6 +6435,7 @@
 <translation id="8161293209665121583">Modo de lector para páxinas web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Mover pestana a unha ventá nova}other{Mover pestanas a unha ventá nova}}</translation>
 <translation id="8165997195302308593">Encamiñamento de porto de Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{1 número de teléfono}other{# números de teléfono}}</translation>
 <translation id="8168435359814927499">Contido</translation>
 <translation id="8168943654413034772">Non se puido quitar o único interruptor asignado á acción Seleccionar. Preme unha tecla calquera para saír.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Engadir pestana á lista de lectura}other{Engadir pestanas á lista de lectura}}</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index f0bfe22a..c0c5757 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">ब्राउज़िंग डेटा &amp;साफ़ करें...</translation>
 <translation id="3617891479562106823">बैकग्राउंड उपलब्ध नहीं हैं. बाद में फिर से कोशिश करें.</translation>
 <translation id="3619115746895587757">कैपुचिनो</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{एक ऐप्लिकेशन}one{# ऐप्लिकेशन}other{# ऐप्लिकेशन}}</translation>
 <translation id="362333465072914957">प्रमाणपत्र जारी करने के लिए सीए का इंतज़ार</translation>
 <translation id="3624567683873126087">डिवाइस अनलॉक करें और 'Google खाते' में साइन इन करें</translation>
 <translation id="3625481642044239431">गलत फ़ाइल चुनी गई. फिर से कोशिश करें.</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">सर्च इंजन &amp;प्रबंधित करें...</translation>
 <translation id="3895090224522145010">Kerberos टिकट भेजने वाले उपयोगकर्ता का नाम</translation>
 <translation id="389521680295183045">साइटें यह जानकारी मांग सकती हैं कि आप अपने डिवाइस का इस्तेमाल कब करते हैं</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{एक इमेज}one{# इमेज}other{# इमेज}}</translation>
 <translation id="3898233949376129212">डिवाइस की भाषा</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> इनके लिए अनुमति चाहता है: <ph name="FIRST_PERMISSION" /> और <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">कीबोर्ड चुनें</translation>
@@ -3576,6 +3578,7 @@
 <translation id="4943368462779413526">फ़ुटबॉल</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" किसी सीरियल पोर्ट से कनेक्ट करना चाहता है</translation>
 <translation id="4944310289250773232">यह प्रमाणीकरण सेवा <ph name="SAML_DOMAIN" /> की मदद से होस्ट की गई है</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{एक फ़ाइल}one{# फ़ाइल}other{# फ़ाइलें}}</translation>
 <translation id="495170559598752135">क्रियाएं</translation>
 <translation id="4953808748584563296">डिफ़ॉल्ट नारंगी अवतार</translation>
 <translation id="4955710816792587366">अनलॉक करने के लिए अपना पिन चुनें</translation>
@@ -5075,6 +5078,7 @@
 <translation id="6664237456442406323">दुर्भाग्यवश, आपका कंप्यूटर किसी विकृत हार्डवेयर आईडी द्वारा कॉन्फ़िगर किया हुआ है. इससे Chrome OS को नवीनतम सुरक्षा सुधारों से अपडेट होने में बाधा आ रही है और आपका कंप्यूटर <ph name="BEGIN_BOLD" />नुकसान पहुंचाने वाले हमलों की चपेट में आ सकता है<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">आपकी प्रोफ़ाइल खोलते समय कुछ गलत हुआ है. कृपया साइन आउट करके फिर से साइन इन करें.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> अब उपलब्ध है</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{एक पता}one{# पता}other{# पते}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">इसे चालू करने के लिए, अपना लंबा पासवर्ड डालें</translation>
 <translation id="6675665718701918026">सूचक डिवाइस कनेक्ट किया गया</translation>
@@ -5771,6 +5775,7 @@
 <translation id="7456142309650173560">डेव</translation>
 <translation id="7456847797759667638">स्थान खोलें...</translation>
 <translation id="7457384018036134905">Chrome OS सेटिंग में भाषाएं प्रबंधित करें</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{एक लिंक}one{# लिंक}other{# लिंक}}</translation>
 <translation id="7458168200501453431">वर्तनी जांचने के लिए उसी सुविधा का इस्तेमाल करती है जिसका इस्तेमाल 'Google सर्च' में किया जाता है. आप ब्राउज़र में जो कुछ भी लिखते हैं उसे Google को भेजा जाता है.</translation>
 <translation id="7460045493116006516">आपकी इंस्टॉल की हुई मौजूदा थीम</translation>
 <translation id="7461924472993315131">पिन करें</translation>
@@ -6170,6 +6175,7 @@
 <translation id="7883792253546618164">जब चाहें, तब सदस्यता छोड़ें.</translation>
 <translation id="788453346724465748">खाते की जानकारी लोड हो रही है...</translation>
 <translation id="7885253890047913815">हाल ही के गंतव्य</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{एक आइटम}one{# आइटम}other{# आइटम}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">डुप्लीकेट</translation>
 <translation id="7887864092952184874">ब्लूटूथ माउस युग्मित किया गया</translation>
@@ -6410,6 +6416,7 @@
 <translation id="8139447493436036221">Google Drive फ़ाइलें</translation>
 <translation id="8141584439523427891">अब वैकल्पिक ब्राउज़र में खोला जा रहा है</translation>
 <translation id="8141725884565838206">अपने पासवर्ड प्रबंधित करें</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{एक वीडियो}one{# वीडियो}other{# वीडियो}}</translation>
 <translation id="8143442547342702591">अमान्य ऐप्लिकेशन</translation>
 <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> चुनें</translation>
 <translation id="8146177459103116374">अगर आप इस डिवाइस पर पहले से रजिस्टर हैं, तो आप <ph name="LINK2_START" />मौजूदा उपयोगकर्ता के रूप में साइन इन<ph name="LINK2_END" /> कर सकते हैं.</translation>
@@ -6429,6 +6436,7 @@
 <translation id="8161293209665121583">वेब पेजों के लिए रीडर मोड</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{टैब को नई विंडो पर ले जाएं}one{टैब को नई विंडो पर ले जाएं}other{टैब को नई विंडो पर ले जाएं}}</translation>
 <translation id="8165997195302308593">Crostini में पोर्ट फ़ॉरवर्डिंग की सेटिंग</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{एक फ़ोन नंबर}one{# फ़ोन नंबर}other{# फ़ोन नंबर}}</translation>
 <translation id="8168435359814927499">सामग्री</translation>
 <translation id="8168943654413034772">'चुनें' कार्रवाई के लिए असाइन किए गए आखिरी स्विच को नहीं हटाया जा सकता. बाहर निकलने के लिए कोई भी बटन दबाएं.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{पढ़ने की चीज़ों की सूची में टैब जोड़ें}one{पढ़ने की चीज़ों की सूची में टैब जोड़ें}other{पढ़ने की चीज़ों की सूची में टैब जोड़ें}}</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index 4c016c0..e1580bf 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -2394,6 +2394,7 @@
 <translation id="3616741288025931835">&amp;Obriši podatke o pregledavanju...</translation>
 <translation id="3617891479562106823">Pozadine nisu dostupne. Pokušajte ponovo kasnije.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{aplikaciju}one{# aplikaciju}few{# aplikacije}other{# aplikacija}}</translation>
 <translation id="362333465072914957">Čeka se da tijelo za izdavanje certifikata izda certifikat</translation>
 <translation id="3624567683873126087">Otključajte uređaj i prijavite se na Google račun</translation>
 <translation id="3625481642044239431">Odabrana je nevažeća datoteka. Pokušajte ponovo.</translation>
@@ -2665,6 +2666,7 @@
 <translation id="3895076768659607631">&amp;Upravljanje tražilicama...</translation>
 <translation id="3895090224522145010">Korisničko ime za Kerberos</translation>
 <translation id="389521680295183045">Web-lokacije mogu pitati kad aktivno koristite uređaj</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{sliku}one{# sliku}few{# slike}other{# slika}}</translation>
 <translation id="3898233949376129212">Jezik uređaja</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> želi: <ph name="FIRST_PERMISSION" /> i <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Odaberite tipkovnicu</translation>
@@ -3578,6 +3580,7 @@
 <translation id="4943368462779413526">Američki nogomet</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" želi se povezati sa serijskim priključkom</translation>
 <translation id="4944310289250773232">Tu uslugu provjere autentičnosti hostira <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{datoteku}one{# datoteku}few{# datoteke}other{# datoteka}}</translation>
 <translation id="495170559598752135">Radnje</translation>
 <translation id="4953808748584563296">Zadani narančasti avatar</translation>
 <translation id="4955710816792587366">Odaberite PIN</translation>
@@ -5077,6 +5080,7 @@
 <translation id="6664237456442406323">Nažalost, vaše je računalo konfigurirano pogrešno oblikovanim ID-om hardvera. To sprječava ažuriranje OS-a Chrome najnovijim sigurnosnim popravcima pa bi vaše računalo <ph name="BEGIN_BOLD" />moglo biti ranjivo na zlonamjerne napade<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Prilikom otvaranja profila dogodila se pogreška. Odjavite se i ponovo prijavite.</translation>
 <translation id="6670142487971298264">Aplikacija <ph name="APP_NAME" /> sada je dostupna</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{adresu}one{# adresu}few{# adrese}other{# adresa}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Za pokretanje sinkronizacije unesite šifru</translation>
 <translation id="6675665718701918026">Pokazivački je uređaj povezan</translation>
@@ -5773,6 +5777,7 @@
 <translation id="7456142309650173560">razvojni</translation>
 <translation id="7456847797759667638">Otvori lokaciju...</translation>
 <translation id="7457384018036134905">Upravljanje jezicima u postavkama OS-a Chrome</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{vezu}one{# vezu}few{# veze}other{# veza}}</translation>
 <translation id="7458168200501453431">Upotrebljava istu provjeru pravopisa koja se upotrebljava na Google pretraživanju. Tekst koji unesete u preglednik šalje se Googleu.</translation>
 <translation id="7460045493116006516">Trenutačna instalirana tema</translation>
 <translation id="7461924472993315131">Prikvači</translation>
@@ -6173,6 +6178,7 @@
 <translation id="7883792253546618164">Pretplatu otkažite kad god želite.</translation>
 <translation id="788453346724465748">Učitavanje podataka o računu...</translation>
 <translation id="7885253890047913815">Nedavna odredišta</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{stavku}one{# stavku}few{# stavke}other{# stavki}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Udvostruči</translation>
 <translation id="7887864092952184874">Bluetooth miš uparen</translation>
@@ -6413,6 +6419,7 @@
 <translation id="8139447493436036221">Datoteke Google diska</translation>
 <translation id="8141584439523427891">Otvaranje u zamjenskom pregledniku</translation>
 <translation id="8141725884565838206">Upravljanje zaporkama</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{videozapis}one{# videozapis}few{# videozapisa}other{# videozapisa}}</translation>
 <translation id="8143442547342702591">Nevažeća aplikacija</translation>
 <translation id="8143951647992294073">Odaberite <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Ako ste već registrirani na ovom uređaju, možete <ph name="LINK2_START" />se prijaviti kao postojeći korisnik<ph name="LINK2_END" />.</translation>
@@ -6432,6 +6439,7 @@
 <translation id="8161293209665121583">Način čitača za web-stranice</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Premjesti karticu u novi prozor}one{Premjesti kartice u novi prozor}few{Premjesti kartice u novi prozor}other{Premjesti kartice u novi prozor}}</translation>
 <translation id="8165997195302308593">Crostinijevo prosljeđivanje priključka</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{telefonski broj}one{# telefonski broj}few{# telefonska broja}other{# telefonskih brojeva}}</translation>
 <translation id="8168435359814927499">Sadržaj</translation>
 <translation id="8168943654413034772">Nije moguće ukloniti jedini prekidač dodijeljen opciji Odaberi. Pritisnite bilo koju tipku za izlaz.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Dodaj karticu na popis za čitanje}one{Dodaj kartice na popis za čitanje}few{Dodaj kartice na popis za čitanje}other{Dodaj kartice na popis za čitanje}}</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index 32f8b47..c47923d 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -2392,6 +2392,7 @@
 <translation id="3616741288025931835">&amp;Böngészés adatainak törlése...</translation>
 <translation id="3617891479562106823">A hátterek nem állnak rendelkezésre. Próbálja újra később.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{egy alkalmazást}other{# alkalmazást}}</translation>
 <translation id="362333465072914957">Várakozás arra, hogy a tanúsítványkibocsátó kibocsássa a tanúsítványt</translation>
 <translation id="3624567683873126087">Eszköz feloldása, és bejelentkezés Google-fiókba</translation>
 <translation id="3625481642044239431">A kiválasztott fájl érvénytelen. Próbálja újra.</translation>
@@ -2663,6 +2664,7 @@
 <translation id="3895076768659607631">&amp;Keresők beállítása…</translation>
 <translation id="3895090224522145010">Kerberos-felhasználónév</translation>
 <translation id="389521680295183045">A webhelyek engedélyt kérhetnek arra, hogy észleljék, hogy Ön mikor használja aktívan az eszközt</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{egy képet}other{# képet}}</translation>
 <translation id="3898233949376129212">Eszköz nyelve</translation>
 <translation id="3898327728850887246">A(z) <ph name="SITE_NAME" /> a következőkre kér engedélyt: <ph name="FIRST_PERMISSION" /> és <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Billentyűzet kiválasztása</translation>
@@ -3575,6 +3577,7 @@
 <translation id="4943368462779413526">Focilabda</translation>
 <translation id="4943691134276646401">A(z) „<ph name="CHROME_EXTENSION_NAME" />” soros porthoz szeretne csatlakozni</translation>
 <translation id="4944310289250773232">Ezt a hitelesítési szolgáltatást a(z) <ph name="SAML_DOMAIN" /> biztosítja</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{egy fájlt}other{# fájlt}}</translation>
 <translation id="495170559598752135">Műveletek</translation>
 <translation id="4953808748584563296">Alapértelmezett narancssárga avatar</translation>
 <translation id="4955710816792587366">PIN-kód kiválasztása</translation>
@@ -5076,6 +5079,7 @@
 <translation id="6664237456442406323">Sajnos számítógépe nem megfelelő formátumú hardverazonosítóval van konfigurálva. Emiatt a Chrome OS nem tud frissülni a legújabb biztonsági javításokkal, és számítógépét <ph name="BEGIN_BOLD" />rosszindulatú támadások érhetik<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Hiba történt a profil megnyitása során. Jelentkezzen ki, majd jelentkezzen be újra.</translation>
 <translation id="6670142487971298264">A(z) <ph name="APP_NAME" /> már használható</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{egy címet}other{# címet}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">A szinkronizálás megkezdéséhez adja meg összetett jelszavát.</translation>
 <translation id="6675665718701918026">Mutatóeszköz csatlakoztatva</translation>
@@ -5772,6 +5776,7 @@
 <translation id="7456142309650173560">fejlesztői</translation>
 <translation id="7456847797759667638">Hely megnyitása...</translation>
 <translation id="7457384018036134905">Nyelvek kezelése a Chrome OS beállításai között</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{egy linket}other{# linket}}</translation>
 <translation id="7458168200501453431">A Google Kereső által használttal megegyező helyesírás-ellenőrzést használ. A begépelt szöveget a böngésző elküldi a Google-nak.</translation>
 <translation id="7460045493116006516">Jelenleg telepített téma</translation>
 <translation id="7461924472993315131">Rögzítés</translation>
@@ -6172,6 +6177,7 @@
 <translation id="7883792253546618164">Bármikor leiratkozhat.</translation>
 <translation id="788453346724465748">Fiókadatok betöltése…</translation>
 <translation id="7885253890047913815">Legutóbbi célhelyek</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{egy elemet}other{# elemet}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Másodpéldány</translation>
 <translation id="7887864092952184874">Bluetooth-egér párosítva</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Google Drive-fájlok</translation>
 <translation id="8141584439523427891">Megnyitás másik böngészőben most</translation>
 <translation id="8141725884565838206">Jelszavak kezelése</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{egy videót}other{# videót}}</translation>
 <translation id="8143442547342702591">Érvénytelen alkalmazás</translation>
 <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> kiválasztása</translation>
 <translation id="8146177459103116374">Ha már regisztrálva van ezen az eszközön, akkor <ph name="LINK2_START" />bejelentkezhet meglévő felhasználóként<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Olvasási mód weboldalakhoz</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Lap áthelyezése új ablakba}other{Lapok áthelyezése új ablakba}}</translation>
 <translation id="8165997195302308593">Crostinis portátirányítás</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{egy telefonszámot}other{# telefonszámot}}</translation>
 <translation id="8168435359814927499">Tartalom</translation>
 <translation id="8168943654413034772">Nem lehetséges a Kiválasztás művelethez hozzárendelt egyetlen kapcsoló eltávolítása. A kilépéshez nyomja meg bármelyik billentyűt.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Lap hozzáadása olvasási listához}other{Lapok hozzáadása olvasási listához}}</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb
index d8f8d688..41878de4 100644
--- a/chrome/app/resources/generated_resources_hy.xtb
+++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -2394,6 +2394,7 @@
 <translation id="3616741288025931835">&amp;Մաքրել դիտարկումների տվյալները…</translation>
 <translation id="3617891479562106823">Ֆոնային պատկերները հասանելի չեն: Փորձեք ավելի ուշ:</translation>
 <translation id="3619115746895587757">Կապուչինո</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{հավելված}one{# հավելված}other{# հավելված}}</translation>
 <translation id="362333465072914957">Սպասում ենք հավաստագրման կենտրոնի կողմից հավաստագրի տրամադրմանը</translation>
 <translation id="3624567683873126087">Ապակողպել սարքը և մտնել Google հաշիվ</translation>
 <translation id="3625481642044239431">Ընտրված ֆայլն անվավեր է։ Նորից փորձեք։</translation>
@@ -2665,6 +2666,7 @@
 <translation id="3895076768659607631">&amp;Կառավարել որոնողական համակարգերը…</translation>
 <translation id="3895090224522145010">Kerberos-ի օգտանուն</translation>
 <translation id="389521680295183045">Կայքերը կարող են թույլտվություն հայցել՝ տեղեկանալու, երբ դուք ակտիվորեն օգտագործում եք ձեր սարքը</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{պատկեր}one{# պատկեր}other{# պատկեր}}</translation>
 <translation id="3898233949376129212">Սարքի լեզուն</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> կայքն ուզում է <ph name="FIRST_PERMISSION" /> և <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Ընտրեք ստեղնաշարը</translation>
@@ -3579,6 +3581,7 @@
 <translation id="4943368462779413526">Ֆուտբոլ</translation>
 <translation id="4943691134276646401">«<ph name="CHROME_EXTENSION_NAME" />» ընդլայնումն ուզում է միանալ հերթական միացքին</translation>
 <translation id="4944310289250773232">Նույնականացման ծառայությունը տրամադրվում է <ph name="SAML_DOMAIN" />-ի կողմից</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{ֆայլ}one{# ֆայլ}other{# ֆայլ}}</translation>
 <translation id="495170559598752135">Գործողություններ</translation>
 <translation id="4953808748584563296">Կանխադրված նարնջագույն ավատար</translation>
 <translation id="4955710816792587366">Ընտրեք ձեր PIN-ը</translation>
@@ -5080,6 +5083,7 @@
 <translation id="6664237456442406323">Ձեր համակարգիչը կազմաձևված է սարքակազմի սխալ ID-ով: Սա թույլ չի տալիս, որպեսզի Chrome OS-ը թարմացվի անվտանգության վերջին նորացումներով և ձեր համակարգիչը <ph name="BEGIN_BOLD" />կարող է խոցելի դառնալ վնասարար հարձակումների համար<ph name="END_BOLD" />:</translation>
 <translation id="6664774537677393800">Պրոֆիլը բացելիս սխալ առաջացավ: Դուրս եկեք հաշվից ու նորից մուտք գործեք:</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> հավելվածն այժմ հասանելի է</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{հասցե}one{# հասցե}other{# հասցե}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Համաժամացումը սկսելու համար մուտքագրեք ձեր անցաբառը</translation>
 <translation id="6675665718701918026">Ցուցիչ սարքը միացված է</translation>
@@ -5776,6 +5780,7 @@
 <translation id="7456142309650173560">մշակողների</translation>
 <translation id="7456847797759667638">Open Location...</translation>
 <translation id="7457384018036134905">Կառավարել լեզուները Chrome OS-ի կարգավորումներում</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{հղում}one{# հղում}other{# հղում}}</translation>
 <translation id="7458168200501453431">Օգտագործում է ուղղագրության նույն ստուգիչը, որն օգտագործվում է Google Որոնման մեջ: Դիտարկիչում մուտքագրած ձեր տեքստերն ուղարկվում են Google-ին:</translation>
 <translation id="7460045493116006516">Ձեր տեղադրած ընթացիկ թեման</translation>
 <translation id="7461924472993315131">Ամրացնել</translation>
@@ -6175,6 +6180,7 @@
 <translation id="7883792253546618164">Դուք ցանկացած պահի կարող եք չեղարկել բաժանորդագրությունը։</translation>
 <translation id="788453346724465748">Հաշվի տվյալները բեռնվում են...</translation>
 <translation id="7885253890047913815">Վերջին նպատակակետերը</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{տարր}one{# տարր}other{# տարր}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Կրկնօրինակել</translation>
 <translation id="7887864092952184874">Զուգավորվել է Bluetooth մկնիկ</translation>
@@ -6414,6 +6420,7 @@
 <translation id="8139447493436036221">Google Drive-ի ֆայլեր</translation>
 <translation id="8141584439523427891">Բացվում է այլ դիտարկիչում</translation>
 <translation id="8141725884565838206">Գաղտնաբառերի կառավարում</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{տեսանյութ}one{# տեսանյութ}other{# տեսանյութ}}</translation>
 <translation id="8143442547342702591">Հավելվածն անվավեր է</translation>
 <translation id="8143951647992294073">Ընտրել «<ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" />» տարբերակը</translation>
 <translation id="8146177459103116374">Եթե դուք արդեն գրանցված եք այս սարքում, ապա կարող եք <ph name="LINK2_START" />մուտք գործել որպես առկա օգտատեր<ph name="LINK2_END" />:</translation>
@@ -6433,6 +6440,7 @@
 <translation id="8161293209665121583">Ընթերցման ռեժիմ վեբ էջերի համար</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Բացել ներդիրը նոր պատուհանում}one{Բացել ներդիրները նոր պատուհանում}other{Բացել ներդիրները նոր պատուհանում}}</translation>
 <translation id="8165997195302308593">Միացքների փոխանցում Crostini-ում</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{հեռախոսահամար}one{# հեռախոսահամար}other{# հեռախոսահամար}}</translation>
 <translation id="8168435359814927499">Բովանդակություն</translation>
 <translation id="8168943654413034772">Հնարավոր չէ չեղարկել միակ նշանակումը «Ընտրել» փոխանջատիչի համար։ Սեղմեք որևէ ստեղն՝ դուրս գալու համար։</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Ավելացնել ներդիր ընթերցանության ցանկում}one{Ավելացնել ներդիրներ ընթերցանության ցանկում}other{Ավելացնել ներդիրներ ընթերցանության ցանկում}}</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index d2098bd..2dac4628 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -1331,6 +1331,7 @@
 <translation id="2440604414813129000">Lihat s&amp;umber</translation>
 <translation id="244231003699905658">Alamat tidak valid. Periksa alamatnya, lalu coba lagi.</translation>
 <translation id="2442916515643169563">Bayangan teks</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Diperlukan direktori akar ekstensi.</translation>
 <translation id="2445484935443597917">Buat Profil Baru</translation>
 <translation id="2448312741937722512">Jenis</translation>
@@ -2392,6 +2393,7 @@
 <translation id="3616741288025931835">&amp;Hapus Data browsing...</translation>
 <translation id="3617891479562106823">Background tidak tersedia. Coba lagi nanti.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{1 aplikasi}other{# aplikasi}}</translation>
 <translation id="362333465072914957">Menunggu CA menerbitkan sertifikat</translation>
 <translation id="3624567683873126087">Buka kunci perangkat dan login ke Akun Google</translation>
 <translation id="3625481642044239431">File yang dipilih tidak valid. Harap coba lagi.</translation>
@@ -2663,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;Kelola Mesin Telusur ...</translation>
 <translation id="3895090224522145010">Nama pengguna Kerberos</translation>
 <translation id="389521680295183045">Situs dapat meminta untuk mengetahui saat Anda aktif menggunakan perangkat</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{1 gambar}other{# gambar}}</translation>
 <translation id="3898233949376129212">Bahasa perangkat</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> ingin: <ph name="FIRST_PERMISSION" /> dan <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Pilih keyboard</translation>
@@ -3576,6 +3579,7 @@
 <translation id="4943368462779413526">Sepak bola</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ingin terhubung ke port serial</translation>
 <translation id="4944310289250773232">Layanan autentikasi ini dihosting oleh <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{1 file}other{# file}}</translation>
 <translation id="495170559598752135">Tindakan</translation>
 <translation id="4953808748584563296">Avatar oranye default</translation>
 <translation id="4955710816792587366">Pilih PIN Anda</translation>
@@ -4643,6 +4647,7 @@
 <translation id="6184099524311454384">Telusuri Tab</translation>
 <translation id="6185132558746749656">Lokasi Perangkat</translation>
 <translation id="6186394437969115158">Situs biasanya menampilkan iklan agar dapat menyediakan konten atau layanan gratis. Namun, beberapa situs dikenal menampilkan iklan yang mengganggu atau menyesatkan.</translation>
+<translation id="6195005504600220730">Membaca informasi tentang browser, OS, dan perangkat Anda</translation>
 <translation id="6195693561221576702">Perangkat ini tidak dapat disiapkan dalam mode demo offline.</translation>
 <translation id="6195724942939841102">Jangan pulihkan</translation>
 <translation id="6196640612572343990">Blokir cookie pihak ketiga</translation>
@@ -5074,6 +5079,7 @@
 <translation id="6664237456442406323">Sayangnya, komputer Anda dikonfigurasi dengan ID hardware yang rusak. Hal ini mencegah Chrome OS memperbarui dengan perbaikan keamanan terbaru dan komputer Anda <ph name="BEGIN_BOLD" />mungkin rentan terhadap serangan berbahaya<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Terjadi kesalahan saat membuka profil Anda. Harap keluar, lalu masuk lagi.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> kini telah tersedia</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{1 alamat}other{# alamat}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Untuk memulai sinkronisasi, masukkan frasa sandi</translation>
 <translation id="6675665718701918026">Perangkat penunjuk telah tersambung</translation>
@@ -5770,6 +5776,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Buka Lokasi...</translation>
 <translation id="7457384018036134905">Kelola bahasa di setelan Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{1 link}other{# link}}</translation>
 <translation id="7458168200501453431">Menggunakan pemeriksa ejaan yang sama seperti yang digunakan di penelusuran Google. Teks yang Anda ketik di browser akan dikirim ke Google.</translation>
 <translation id="7460045493116006516">Tema saat ini yang telah diinstal</translation>
 <translation id="7461924472993315131">Sematkan</translation>
@@ -6170,6 +6177,7 @@
 <translation id="7883792253546618164">Anda dapat berhenti berlangganan kapan saja.</translation>
 <translation id="788453346724465748">Memuat informasi akun ...</translation>
 <translation id="7885253890047913815">Tujuan Saat Ini</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{1 item}other{# item}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplikasikan</translation>
 <translation id="7887864092952184874">Mouse Bluetooth disandingkan</translation>
@@ -6410,6 +6418,7 @@
 <translation id="8139447493436036221">File Google Drive</translation>
 <translation id="8141584439523427891">Membuka di browser alternatif sekarang</translation>
 <translation id="8141725884565838206">Kelola sandi Anda</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{1 video}other{# video}}</translation>
 <translation id="8143442547342702591">Aplikasi tidak valid</translation>
 <translation id="8143951647992294073">Pilih <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Jika Anda telah terdaftar di perangkat ini, Anda dapat <ph name="LINK2_START" />login sebagai pengguna yang ada<ph name="LINK2_END" />.</translation>
@@ -6429,6 +6438,7 @@
 <translation id="8161293209665121583">Mode pembaca untuk halaman web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Pindahkan Tab ke Jendela Baru}other{Pindahkan beberapa Tab ke Jendela Baru}}</translation>
 <translation id="8165997195302308593">Penerusan port Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{1 nomor telepon}other{# nomor telepon}}</translation>
 <translation id="8168435359814927499">Konten</translation>
 <translation id="8168943654413034772">Tidak dapat menghapus satu-satunya kunci tombol akses yang ditetapkan untuk Pilih. Tekan sembarang kunci untuk keluar.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Tambahkan Tab ke Daftar Bacaan}other{Tambahkan Tab ke Daftar Bacaan}}</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb
index 874ad028..78833c2c 100644
--- a/chrome/app/resources/generated_resources_is.xtb
+++ b/chrome/app/resources/generated_resources_is.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">Hreinsa vafragögn...</translation>
 <translation id="3617891479562106823">Bakgrunnar eru ekki tiltækir. Reyndu aftur síðar.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{forrit}one{# forrit}other{# forrit}}</translation>
 <translation id="362333465072914957">Bíður eftir útgáfu vottorðs frá útgefanda</translation>
 <translation id="3624567683873126087">Opnaðu tækið og skráðu þig inn á Google reikning</translation>
 <translation id="3625481642044239431">Ógild skrá valin. Reyndu aftur.</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;Stjórna leitarvélum...</translation>
 <translation id="3895090224522145010">Kerberos-notandanafn</translation>
 <translation id="389521680295183045">Vefsvæði geta beðið um að fá að vita hvenær þú notar tækið þitt</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{mynd}one{# mynd}other{# myndir}}</translation>
 <translation id="3898233949376129212">Tungumál tækisins</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> vill: <ph name="FIRST_PERMISSION" /> og <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Velja lyklaborð</translation>
@@ -3577,6 +3579,7 @@
 <translation id="4943368462779413526">Amerískur fótbolti</translation>
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ vill tengjast við raðtengi</translation>
 <translation id="4944310289250773232">Þessi auðkenningarþjónusta er hýst af <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{skrá}one{# skrá}other{# skrár}}</translation>
 <translation id="495170559598752135">Aðgerðir</translation>
 <translation id="4953808748584563296">Sjálfgefin appelsínugul notandamynd</translation>
 <translation id="4955710816792587366">Veldu þér PIN-númer</translation>
@@ -5076,6 +5079,7 @@
 <translation id="6664237456442406323">Tölvan er því miður grunnstillt með gölluðu vélbúnaðarauðkenni. Þetta kemur í veg fyrir að Chrome OS geti uppfært í nýjustu öryggisúrræði og tölvan <ph name="BEGIN_BOLD" />kann að vera berskjölduð gagnvart árásum<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Eitthvað fór úrskeiðis við að opna prófílinn þinn. Skráðu þig út og svo inn aftur.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> er nú í boði</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{heimilisfang}one{# heimilisfang}other{# heimilisföng}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Sláðu inn aðgangsorðið þitt til að hefja samstillingu</translation>
 <translation id="6675665718701918026">Benditæki tengt</translation>
@@ -5772,6 +5776,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Opna staðsetningu...</translation>
 <translation id="7457384018036134905">Stjórna tungumálum í stillingum Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{tengill}one{# tengill}other{# tenglar}}</translation>
 <translation id="7458168200501453431">Notar sömu ritvilluleit og Google leitin. Textinn sem þú skrifar í vafranum er sendur til Google.</translation>
 <translation id="7460045493116006516">Núverandi þema sem þú settir upp</translation>
 <translation id="7461924472993315131">Festa</translation>
@@ -6172,6 +6177,7 @@
 <translation id="7883792253546618164">Þú getur hætt áskrift hvenær sem er.</translation>
 <translation id="788453346724465748">Sækir reikningsupplýsingar...</translation>
 <translation id="7885253890047913815">Nýlegir áfangastaðir</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{atriði}one{# atriði}other{# atriði}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Afrita</translation>
 <translation id="7887864092952184874">Bluetooth-mús pöruð</translation>
@@ -6411,6 +6417,7 @@
 <translation id="8139447493436036221">Google Drive skrár</translation>
 <translation id="8141584439523427891">Opnar í öðrum vafra núna</translation>
 <translation id="8141725884565838206">Stjórna aðgangsorðunum þínum</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{myndskeið}one{# myndskeið}other{# myndskeið}}</translation>
 <translation id="8143442547342702591">Ógilt forrit</translation>
 <translation id="8143951647992294073">Velja <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Ef þú hefur þegar skráð þig í þessu tæki geturðu <ph name="LINK2_START" />skráð þig inn sem fyrirliggjandi notandi<ph name="LINK2_END" />.</translation>
@@ -6430,6 +6437,7 @@
 <translation id="8161293209665121583">Lestrarstilling vefsíðna</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Færa flipa í nýjan glugga}one{Færa flipa í nýjan glugga}other{Færa flipa í nýjan glugga}}</translation>
 <translation id="8165997195302308593">Framsending gáttar í Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{símanúmer}one{# símanúmer}other{# símanúmer}}</translation>
 <translation id="8168435359814927499">Efni</translation>
 <translation id="8168943654413034772">Ekki er hægt að fjarlægja eina rofann sem er úthlutað á „Velja“. Ýttu á hvaða lykil sem er til að loka.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Bæta flipa við leslista}one{Bæta flipum við leslista}other{Bæta flipum við leslista}}</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index 3f0774d..14bd732 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -1330,6 +1330,7 @@
 <translation id="2440604414813129000">Visualizza &amp;sorgente</translation>
 <translation id="244231003699905658">Indirizzo non valido. Verifica l'indirizzo e riprova.</translation>
 <translation id="2442916515643169563">Ombreggiatura testo</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">La directory principale dell'estensione è obbligatoria.</translation>
 <translation id="2445484935443597917">Crea un nuovo profilo</translation>
 <translation id="2448312741937722512">Tipo</translation>
@@ -2391,6 +2392,7 @@
 <translation id="3616741288025931835">&amp;Cancella dati di navigazione...</translation>
 <translation id="3617891479562106823">Gli sfondi non sono disponibili. Riprova più tardi.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{un'app}other{# app}}</translation>
 <translation id="362333465072914957">In attesa dell'emissione del certificato da parte della CA</translation>
 <translation id="3624567683873126087">Sblocca il dispositivo e accedi all'Account Google</translation>
 <translation id="3625481642044239431">File non valido selezionato. Riprova.</translation>
@@ -2662,6 +2664,7 @@
 <translation id="3895076768659607631">&amp;Gestisci motori di ricerca…</translation>
 <translation id="3895090224522145010">Nome utente di Kerberos</translation>
 <translation id="389521680295183045">I siti possono chiedere di sapere quando stai utilizzando attivamente il tuo dispositivo</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{un'immagine}other{# immagini}}</translation>
 <translation id="3898233949376129212">Lingua dispositivo</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> richiede le autorizzazioni: <ph name="FIRST_PERMISSION" /> e <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Seleziona la tastiera</translation>
@@ -3575,6 +3578,7 @@
 <translation id="4943368462779413526">Calcio</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" vuole collegarsi a una porta seriale</translation>
 <translation id="4944310289250773232">Questo servizio di autenticazione è in hosting su <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{un file}other{# file}}</translation>
 <translation id="495170559598752135">Azioni</translation>
 <translation id="4953808748584563296">Avatar arancione predefinito</translation>
 <translation id="4955710816792587366">Scegli il PIN</translation>
@@ -4642,6 +4646,7 @@
 <translation id="6184099524311454384">Cerca tra le schede</translation>
 <translation id="6185132558746749656">Posizione del dispositivo</translation>
 <translation id="6186394437969115158">In genere, i siti mostrano annunci per fornire contenuti o servizi gratuitamente. Tuttavia, alcuni siti sono noti per mostrare annunci invasivi o fuorvianti.</translation>
+<translation id="6195005504600220730">Lettura di informazioni sul browser, sul sistema operativo e sul dispositivo in uso</translation>
 <translation id="6195693561221576702">Impossibile configurare il dispositivo in modalità demo offline.</translation>
 <translation id="6195724942939841102">Non ripristinare</translation>
 <translation id="6196640612572343990">Blocca cookie di terze parti</translation>
@@ -5073,6 +5078,7 @@
 <translation id="6664237456442406323">Purtroppo il tuo computer è configurato con un ID hardware non valido. Ciò impedisce a Chrome OS di aggiornarsi con le ultime correzioni relative alla sicurezza e il tuo computer <ph name="BEGIN_BOLD" />potrebbe essere vulnerabile ad attacchi dannosi<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Si è verificato un problema durante l'apertura del profilo. Esci e accedi di nuovo.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> è ora disponibile</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{un indirizzo}other{# indirizzi}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Per avviare la sincronizzazione devi inserire la tua passphrase</translation>
 <translation id="6675665718701918026">Dispositivo di puntamento collegato</translation>
@@ -5769,6 +5775,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Apri percorso...</translation>
 <translation id="7457384018036134905">Gestisci le lingue nelle impostazioni di Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{un link}other{# link}}</translation>
 <translation id="7458168200501453431">Consente di utilizzare lo stesso controllo ortografico utilizzato nella Ricerca Google. Il testo che digiti nel browser viene inviato a Google.</translation>
 <translation id="7460045493116006516">Tema installato attualmente</translation>
 <translation id="7461924472993315131">Blocca</translation>
@@ -6169,6 +6176,7 @@
 <translation id="7883792253546618164">Puoi annullare l'iscrizione in qualsiasi momento.</translation>
 <translation id="788453346724465748">Caricamento dei dati dell'account in corso…</translation>
 <translation id="7885253890047913815">Destinazioni recenti</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{un elemento}other{# elementi}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplica</translation>
 <translation id="7887864092952184874">Mouse Bluetooth accoppiato</translation>
@@ -6408,6 +6416,7 @@
 <translation id="8139447493436036221">File di Google Drive</translation>
 <translation id="8141584439523427891">Apertura browser alternativo</translation>
 <translation id="8141725884565838206">Gestisci le tue password</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{un video}other{# video}}</translation>
 <translation id="8143442547342702591">Applicazione non valida</translation>
 <translation id="8143951647992294073">Seleziona <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Se sei già registrato sul dispositivo in uso, puoi <ph name="LINK2_START" />accedere come utente esistente<ph name="LINK2_END" />.</translation>
@@ -6427,6 +6436,7 @@
 <translation id="8161293209665121583">Modalità Reader per le pagine web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Sposta scheda in una nuova finestra}other{Sposta schede in una nuova finestra}}</translation>
 <translation id="8165997195302308593">Port forwarding su Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{un numero di telefono}other{# numeri di telefono}}</translation>
 <translation id="8168435359814927499">Contenuti</translation>
 <translation id="8168943654413034772">Impossibile rimuovere l'unico sensore assegnato all'azione Seleziona. Premi un tasto qualsiasi per uscire.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Aggiungi scheda all'elenco di lettura}other{Aggiungi schede all'elenco di lettura}}</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index 7cdee80..db8293a 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -1331,6 +1331,7 @@
 <translation id="2440604414813129000">ソースを表示(&amp;O)</translation>
 <translation id="244231003699905658">無効なアドレスです。アドレスを確認してから、もう一度お試しください。</translation>
 <translation id="2442916515643169563">テキストの影</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">拡張機能のルート ディレクトリを指定してください。</translation>
 <translation id="2445484935443597917">新しいプロフィールを作成</translation>
 <translation id="2448312741937722512">種類</translation>
@@ -2392,6 +2393,7 @@
 <translation id="3616741288025931835">閲覧履歴を消去(&amp;C)...</translation>
 <translation id="3617891479562106823">背景を利用できません。しばらくしてからもう一度お試しください。</translation>
 <translation id="3619115746895587757">カプチーノ</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{アプリ}other{# 件のアプリ}}</translation>
 <translation id="362333465072914957">CA による証明書の発行を待機しています</translation>
 <translation id="3624567683873126087">デバイスのロックを解除して Google アカウントにログインする</translation>
 <translation id="3625481642044239431">無効なファイルが選択されています。もう一度お試しください。</translation>
@@ -2663,6 +2665,7 @@
 <translation id="3895076768659607631">検索エンジンを管理(&amp;M)...</translation>
 <translation id="3895090224522145010">Kerberos ユーザー名</translation>
 <translation id="389521680295183045">サイトがデバイスのアクティブ状態の検出を要求できるようにする</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{画像}other{# 件の画像}}</translation>
 <translation id="3898233949376129212">デバイスの言語</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> が次の許可を求めています: <ph name="FIRST_PERMISSION" />、<ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">キーボードを選択</translation>
@@ -3576,6 +3579,7 @@
 <translation id="4943368462779413526">フットボール</translation>
 <translation id="4943691134276646401">「<ph name="CHROME_EXTENSION_NAME" />」がシリアルポートへの接続を要求しています</translation>
 <translation id="4944310289250773232">この認証サービスは <ph name="SAML_DOMAIN" /> でホストされています</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{ファイル}other{# 件のファイル}}</translation>
 <translation id="495170559598752135">操作</translation>
 <translation id="4953808748584563296">デフォルトのオレンジのアバター</translation>
 <translation id="4955710816792587366">PIN の選択</translation>
@@ -4643,6 +4647,7 @@
 <translation id="6184099524311454384">タブを検索</translation>
 <translation id="6185132558746749656">デバイスの位置情報</translation>
 <translation id="6186394437969115158">多くのサイトは、コンテンツやサービスを無料で提供する目的で広告を表示します。ただし、一部のサイトについては、煩わしい広告や誤解を招く広告が表示されることがわかっています。</translation>
+<translation id="6195005504600220730">ブラウザ、OS、デバイスに関する情報の読み取り</translation>
 <translation id="6195693561221576702">このデバイスはオフライン デモモードで設定できません。</translation>
 <translation id="6195724942939841102">復元しない</translation>
 <translation id="6196640612572343990">サードパーティの Cookie をブロックする</translation>
@@ -5074,6 +5079,7 @@
 <translation id="6664237456442406323">パソコンに設定されているハードウェア ID の形式が正しくありません。このため、Chrome OS に最新のセキュリティ修正を適用することができません。お使いのパソコンは、<ph name="BEGIN_BOLD" />悪意のある攻撃を受けやすくなる可能性があります<ph name="END_BOLD" />。</translation>
 <translation id="6664774537677393800">プロフィールを開こうとして問題が発生しました。ログアウトしてから再度ログインしてください。</translation>
 <translation id="6670142487971298264">「<ph name="APP_NAME" />」を利用できます</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{住所}other{# 件の住所}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" />(USB)</translation>
 <translation id="6674571176963658787">同期を開始するには、パスフレーズを入力してください</translation>
 <translation id="6675665718701918026">ポインティング デバイスが接続されました</translation>
@@ -5770,6 +5776,7 @@
 <translation id="7456142309650173560">Dev</translation>
 <translation id="7456847797759667638">場所を開く...</translation>
 <translation id="7457384018036134905">Chrome OS の設定で言語を管理する</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{リンク}other{# 件のリンク}}</translation>
 <translation id="7458168200501453431">Google 検索と同じスペルチェックを使用します。ブラウザに入力したテキストは Google に送信されます。</translation>
 <translation id="7460045493116006516">インストールした現在のテーマ</translation>
 <translation id="7461924472993315131">固定</translation>
@@ -6170,6 +6177,7 @@
 <translation id="7883792253546618164">登録はいつでも解除できます。</translation>
 <translation id="788453346724465748">アカウント情報を読み込んでいます…</translation>
 <translation id="7885253890047913815">最近使用した送信先</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{アイテム}other{# 件のアイテム}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">タブを複製</translation>
 <translation id="7887864092952184874">Bluetooth マウスがペア設定されました</translation>
@@ -6410,6 +6418,7 @@
 <translation id="8139447493436036221">Google ドライブのファイル</translation>
 <translation id="8141584439523427891">まもなく代替ブラウザで開きます</translation>
 <translation id="8141725884565838206">パスワードを管理する</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{動画}other{# 件の動画}}</translation>
 <translation id="8143442547342702591">無効なアプリケーション</translation>
 <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> を選択</translation>
 <translation id="8146177459103116374">このデバイスでの登録が済んでいる場合は<ph name="LINK2_START" />既存のユーザー<ph name="LINK2_END" />としてログインできます。</translation>
@@ -6429,6 +6438,7 @@
 <translation id="8161293209665121583">ウェブページのリーダーモード</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{タブを新しいウィンドウに移動}other{タブを新しいウィンドウに移動}}</translation>
 <translation id="8165997195302308593">Crostini のポート転送</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{電話番号}other{# 件の電話番号}}</translation>
 <translation id="8168435359814927499">コンテンツ</translation>
 <translation id="8168943654413034772">「選択」に割り当てられているスイッチが 1 つしかないため、削除できません。終了するには、どれかキーを押してください。</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{リーディング リストにタブを追加}other{リーディング リストにタブを追加}}</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb
index ed0ffb5..ea04e17e1 100644
--- a/chrome/app/resources/generated_resources_ka.xtb
+++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -2392,6 +2392,7 @@
 <translation id="3616741288025931835">დათვალიერების მონაცემების &amp;გასუფთავება…</translation>
 <translation id="3617891479562106823">ფონები მიუწვდომელია. ცადეთ მოგვიანებით.</translation>
 <translation id="3619115746895587757">კაპუჩინო</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{აპი}other{# აპი}}</translation>
 <translation id="362333465072914957">სერტიფიკატების ცენტრის მიერ სერტიფიკატის გაცემის მოლოდინში</translation>
 <translation id="3624567683873126087">მოწყობილობის განბლოკვა და Google ანგარიშში შესვლა</translation>
 <translation id="3625481642044239431">არჩეულია არასწორი ფაილი. ცადეთ ხელახლა.</translation>
@@ -2663,6 +2664,7 @@
 <translation id="3895076768659607631">საძიებო სისტემების &amp;მართვა...</translation>
 <translation id="3895090224522145010">Kerberos მომხმარებლის სახელი</translation>
 <translation id="389521680295183045">საიტებს შეუძლია ნებართვის მოთხოვნა, რომ გაიგოს, როდის იყენებთ აქტიურად თქვენს მოწყობილობას</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{სურათი}other{# სურათი}}</translation>
 <translation id="3898233949376129212">მოწყობილობის ენა</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" />-ს სურს: <ph name="FIRST_PERMISSION" /> და <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">აირჩიეთ კლავიატურა</translation>
@@ -3576,6 +3578,7 @@
 <translation id="4943368462779413526">ამერიკული ფეხბურთის ბურთი</translation>
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ ითხოვს დაკავშირებას თანმიმდევრულ პორტთან</translation>
 <translation id="4944310289250773232">ავტორიზაციის ამ სერვისის ჰოსტინგს უზრუნველყოფს <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{ფაილი}other{# ფაილი}}</translation>
 <translation id="495170559598752135">ქმედებები</translation>
 <translation id="4953808748584563296">ნაგულისხმევი სტაფილოსფერი ავატარი</translation>
 <translation id="4955710816792587366">აირჩიეთ PIN-კოდი</translation>
@@ -5075,6 +5078,7 @@
 <translation id="6664237456442406323">სამწუხაროდ, თქვენი კომპიუტერი კონფიგურირებულია დეფორმირებული აპარატურის ID-თი. ეს ხელს უშლის Chrome OS-ის განახლებას უსაფრთხოების უახლესი გამოსწორებებით და თქვენი კომპიუტერი <ph name="BEGIN_BOLD" />შეიძლება გახდეს მავნე პროგრამების მიერ განხორციელებული შეტევების ობიექტი<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">თქვენი პროფილის გახსნისას შეფერხება წარმოიქმნა. გთხოვთ, გამოხვიდეთ და ხელახლა შეხვიდეთ სისტემაში.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> ახლა ხელმისაწვდომია</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{მისამართი}other{# მისამართი}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">სინქრონიზაციის დასაწყებად შეიყვანეთ თქვენი საიდუმლო ფრაზა</translation>
 <translation id="6675665718701918026">დაკავშირებულია მიმთითებელი მოწყობილობა</translation>
@@ -5771,6 +5775,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">მდებარეობის გახსნა…</translation>
 <translation id="7457384018036134905">ენების მართვა Chrome OS-ის პარამეტრებიდან</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{ბმული}other{# ბმული}}</translation>
 <translation id="7458168200501453431">იყენებს მართლწერის იმ შემმოწმებელს, რომელიც გამოიყენება Google Search-ში. ბრაუზერში თქვენ მიერ აკრეფილი ტექსტი ეგზავნება Google-ს.</translation>
 <translation id="7460045493116006516">თქვენ მიერ ამჟამად დაინსტალირებული თემა</translation>
 <translation id="7461924472993315131">პინი</translation>
@@ -6171,6 +6176,7 @@
 <translation id="7883792253546618164">გამოწერის გაუქმება ნებისმიერ დროს შეგიძლიათ.</translation>
 <translation id="788453346724465748">მიმდინარეობს ანგარიშის ინფორმაციის ჩატვირთვა...</translation>
 <translation id="7885253890047913815">ბოლო მიმართულებები</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{ერთეული}other{# ერთეული}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">დუბლირება</translation>
 <translation id="7887864092952184874">Bluetooth მაუსი დაწყვილებულია</translation>
@@ -6409,6 +6415,7 @@
 <translation id="8139447493436036221">Google Drive ფაილები</translation>
 <translation id="8141584439523427891">ახლა მიმდინარეობს ალტერნატიულ ბრაუზერში გახსნა</translation>
 <translation id="8141725884565838206">მართეთ თქვენი პაროლები</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{ვიდეო}other{# ვიდეო}}</translation>
 <translation id="8143442547342702591">აპლიკაცია არასწორია</translation>
 <translation id="8143951647992294073">აირჩიეთ <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">თუ თქვენ უკვე რეგისტრირებული ხართ ამ მოწყობილობაზე, თქვენ შეგიძლიათ <ph name="LINK2_START" />შეხვიდეთ როგორც არსებული მომხმარებელი<ph name="LINK2_END" />.</translation>
@@ -6428,6 +6435,7 @@
 <translation id="8161293209665121583">წამკითხველის რეჟიმი ვებგვერდებისთვის</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{ჩანართის ახალ ფანჯარაში გადატანა}other{ჩანართების ახალ ფანჯარაში გადატანა}}</translation>
 <translation id="8165997195302308593">Crostini-ს პორტების გადამისამართება</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{ტელეფონის ნომერი}other{# ტელეფონის ნომერი}}</translation>
 <translation id="8168435359814927499">შიგთავსი</translation>
 <translation id="8168943654413034772">„არჩევისთვის“ მიმაგრებული ერთადერთი გადამრთველის გაუქმება ვერ მოხერხდება. გასასვლელად დააჭირეთ ნებისმიერ კლავიშს.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{ჩანართის დამატება საკითხავ სიაში}other{ჩანართების დამატება საკითხავ სიაში}}</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb
index 9a001f08a..8c85185 100644
--- a/chrome/app/resources/generated_resources_kk.xtb
+++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -1328,6 +1328,7 @@
 <translation id="2440604414813129000">Д&amp;ереккөзді көру</translation>
 <translation id="244231003699905658">Мекенжай дұрыс емес. Оны тексеріп, қайталап көріңіз.</translation>
 <translation id="2442916515643169563">Мәтін көлеңкесі</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Кеңейтімнің түпкі каталогі қажет.</translation>
 <translation id="2445484935443597917">Жаңа профиль жасау</translation>
 <translation id="2448312741937722512">Түрі</translation>
@@ -4639,6 +4640,7 @@
 <translation id="6184099524311454384">Қойындыларды іздеу</translation>
 <translation id="6185132558746749656">Құрылғының орналасқан жері</translation>
 <translation id="6186394437969115158">Сайттар әдетте жарнамаларды көрсетеді, сондықтан олар мазмұнды немесе қызметтерді тегін ұсынады. Бірақ кейбір сайттар мазаны алатын немесе жалған ақпаратты жарнамаларды көрсетеді.</translation>
+<translation id="6195005504600220730">Браузер, операциялық жүйе және құрылғы туралы ақпаратты оқу</translation>
 <translation id="6195693561221576702">Бұл құрылғы офлайн демо режимінде реттелмейді.</translation>
 <translation id="6195724942939841102">Қалпына келтірмеу</translation>
 <translation id="6196640612572343990">Үшінші тарап cookie файлдарын бөгеу</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index a40532c..ae16ad6c 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">ជម្រះទិន្នន័យរុករក...</translation>
 <translation id="3617891479562106823">មិនមាន​ផ្ទៃ​ខាងក្រោយ​ទេ។ សូម​ព្យាយាម​ម្ដងទៀត​នៅពេល​ក្រោយ។</translation>
 <translation id="3619115746895587757">កាពូឈីណូ</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{កម្មវិធីមួយ}other{កម្មវិធី #}}</translation>
 <translation id="362333465072914957">កំពុង​រង់ចាំឱ្យ CA ចេញ​វិញ្ញាបនបត្រ</translation>
 <translation id="3624567683873126087">ដោះសោ​ឧបករណ៍ និង​ចូលគណនី Google</translation>
 <translation id="3625481642044239431">បានជ្រើសរើស​ឯកសារ​មិនត្រឹមត្រូវ។ សូមព្យាយាម​ម្ដងទៀត។</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;គ្រប់គ្រងម៉ាស៊ីន​ស្វែងរក...</translation>
 <translation id="3895090224522145010">ឈ្មោះអ្នកប្រើប្រាស់ Kerberos</translation>
 <translation id="389521680295183045">គេហទំព័រ​អាចសួរដើម្បីដឹងថា នៅពេលណាដែល​អ្នកកំពុងប្រើ​ឧបករណ៍របស់អ្នកយ៉ាងសកម្ម</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{រូបភាព​មួយ}other{រូបភាព #}}</translation>
 <translation id="3898233949376129212">ភាសា​របស់ឧបករណ៍</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> ចង់៖ <ph name="FIRST_PERMISSION" /> និង <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">ជ្រើសរើសក្តារចុច</translation>
@@ -3577,6 +3579,7 @@
 <translation id="4943368462779413526">បាល់ទាត់</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ចង់ភ្ជាប់​ទៅរន្ធស៊េរី</translation>
 <translation id="4944310289250773232">សេវាកម្មផ្ទៀងផ្ទាត់នេះត្រូវបានបង្ហោះ​ដោយ <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{ឯកសារមួយ}other{ឯកសារ #}}</translation>
 <translation id="495170559598752135">សកម្មភាព</translation>
 <translation id="4953808748584563296">រូបតំណាងពណ៌ទឹកក្រូចលំនាំដើម</translation>
 <translation id="4955710816792587366">ជ្រើសរើសកូដ PIN របស់អ្នក</translation>
@@ -5077,6 +5080,7 @@
 <translation id="6664237456442406323">សំណាងមិនល្អ កុំព្យូទ័ររបស់អ្នកត្រូវបានតំឡើងជាមួយលេខសម្គាល់ផ្នែករឹងដែលមិនប្រក្រតី។ វាអាចបង្ការ Chrome OS ពីការធ្វើបច្ចុប្បន្នភាពជាមួយការដោះស្រាយសុវត្ថិភាពចុងក្រោយបំផុត ហើយកុំព្យូទ័ររបស់អ្នក <ph name="BEGIN_BOLD" />អាចរងគ្រោះដោយការវាយប្រហារព្យាបាទ<ph name="END_BOLD" />។</translation>
 <translation id="6664774537677393800">មានអ្វីមួយមិនប្រក្រតី ខណៈពេលបើកកម្រងព័ត៌មានរបស់អ្នក។ សូមចេញពីគណនី ហើយចូលម្តងទៀត។</translation>
 <translation id="6670142487971298264">អាចប្រើ <ph name="APP_NAME" /> បានហើយ​ឥឡូវនេះ</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{អាសយដ្ឋានមួយ}other{អាសយដ្ឋាន #}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">ដើម្បី​ចាប់ផ្ដើម​សមកាលកម្ម សូមបញ្ចូល​ឃ្លាសម្ងាត់​របស់អ្នក</translation>
 <translation id="6675665718701918026">បានភ្ជាប់ឧបករណ៍ចង្អុល</translation>
@@ -5773,6 +5777,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">បើកទីតាំង...</translation>
 <translation id="7457384018036134905">គ្រប់គ្រងភាសានៅក្នុងការកំណត់ Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{តំណមួយ}other{តំណ #}}</translation>
 <translation id="7458168200501453431">ប្រើ​មុខងារ​ពិនិត្យអក្ខរាវិរុទ្ធតែមួយ ដែល​ត្រូវបានប្រើ​ក្នុង​កម្មវិធី​ស្វែងរក​នៅលើ Google ។ អក្សរដែល​អ្នកវាយបញ្ចូល​នៅក្នុង​កម្មវិធីរុករក​តាមអ៊ីនធឺណិត​ត្រូវបានផ្ញើ​ទៅ Google ។</translation>
 <translation id="7460045493116006516">រចនាប័ទ្ម​បច្ចុប្បន្នដែលអ្នក​បានដំឡើង</translation>
 <translation id="7461924472993315131">លេខសម្គាល់</translation>
@@ -6173,6 +6178,7 @@
 <translation id="7883792253546618164">ឈប់ជាវ​ពេលណាក៏បាន។</translation>
 <translation id="788453346724465748">កំពុងផ្ទុក​ព័ត៌មាន​គណនី...</translation>
 <translation id="7885253890047913815">គោលដៅកន្លងទៅថ្មីៗ</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{ធាតុមួយ}other{ធាតុ #}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">ចម្លង</translation>
 <translation id="7887864092952184874">ប៊្លូធូសកណ្តុរត្រូវបានភ្ជាប់</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">ឯកសារ Google ថាស</translation>
 <translation id="8141584439523427891">កំពុងបើក​នៅក្នុង​កម្មវិធីរុករកតាម​អ៊ីនធឺណិត​ផ្សេង​ឥឡូវនេះ</translation>
 <translation id="8141725884565838206">គ្រប់គ្រងពាក្យសម្ងាត់របស់អ្នក</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{វីដេអូ​មួយ}other{វីដេអូ #}}</translation>
 <translation id="8143442547342702591">កម្មវិធីគ្មានសុពលភាព</translation>
 <translation id="8143951647992294073">ជ្រើសរើស <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">ប្រសិនបើអ្នកបានចុះឈ្មោះរួចហើយនៅលើឧបករណ៍នេះ អ្នកអាច <ph name="LINK2_START" />ចូលជាអ្នកប្រើដែលមានស្រាប់<ph name="LINK2_END" />។</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">មុខងារអាន​សម្រាប់​ទំព័របណ្ដាញ</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{ផ្លាស់ទី​ផ្ទាំង​ទៅ​វិនដូ​ថ្មី}other{ផ្លាស់ទី​ផ្ទាំង​ទៅ​វិនដូ​ថ្មី}}</translation>
 <translation id="8165997195302308593">ការបញ្ជូនច្រកបន្តពី Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{លេខទូរសព្ទមួយខ្សែ}other{លេខទូរសព្ទ # ខ្សែ}}</translation>
 <translation id="8168435359814927499">មាតិកា</translation>
 <translation id="8168943654413034772">មិនអាចលុប​ប៊ូតុងបិទបើក​តែមួយ ដែលបានកំណត់​សម្រាប់ការជ្រើសរើស​បានទេ។ ចុចគ្រាប់ចុចណាមួយ ដើម្បីចាកចេញ។</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{បញ្ចូលផ្ទាំងទៅក្នុងបញ្ជីអាន}other{បញ្ចូលផ្ទាំងទៅក្នុងបញ្ជីអាន}}</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index ad630de..53523d5 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು &amp;ತೆರವುಗೊಳಿಸಿ...</translation>
 <translation id="3617891479562106823">ಹಿನ್ನೆಲೆಗಳ ಕಸ್ಟಮೈಸೇಶನ್‌ ಲಭ್ಯವಿಲ್ಲ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="3619115746895587757">ಕ್ಯಾಪಚಿನೊ</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{ಒಂದು ಆ್ಯಪ್}one{# ಆ್ಯಪ್‌ಗಳು}other{# ಆ್ಯಪ್‌ಗಳು}}</translation>
 <translation id="362333465072914957">ಪ್ರಮಾಣಪತ್ರ ಒದಗಿಸಲು CA ಗಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="3624567683873126087">ಸಾಧನವನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡಿ ಮತ್ತು Google ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation>
 <translation id="3625481642044239431">ಅಮಾನ್ಯ ಫೈಲ್ ಆಯ್ಕೆಯಾಗಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
@@ -2665,6 +2666,7 @@
 <translation id="3895076768659607631">ಹುಡುಕಾಟ ಎಂಜಿನ್‌ಗಳನ್ನು &amp;ನಿರ್ವಹಿಸಿ...</translation>
 <translation id="3895090224522145010">Kerberos ಬಳಕೆದಾರರ ಹೆಸರು</translation>
 <translation id="389521680295183045">ನಿಮ್ಮ ಸಾಧನವನ್ನು ನೀವು ಸಕ್ರಿಯವಾಗಿ ಬಳಸುತ್ತಿರುವುದನ್ನು ತಿಳಿದುಕೊಳ್ಳಲು ಸೈಟ್‌ಗಳು ಕೇಳಬಹುದು</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{ಒಂದು ಚಿತ್ರ}one{# ಚಿತ್ರಗಳು}other{# ಚಿತ್ರಗಳು}}</translation>
 <translation id="3898233949376129212">ಸಾಧನದ ಭಾಷೆ</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" />, ಇವುಗಳನ್ನು ಮಾಡಲು ಬಯಸುತ್ತಿದೆ: <ph name="FIRST_PERMISSION" /> ಮತ್ತು <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">ಕೀಬೋರ್ಡ್ ಆಯ್ಕೆ ಮಾಡಿ</translation>
@@ -3579,6 +3581,7 @@
 <translation id="4943368462779413526">ಫುಟ್‌ಬಾಲ್</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ಒಂದು ಸೀರಿಯಲ್ ಪೋರ್ಟ್‌ಗೆ ಸಂಪರ್ಕಿಸಲು ಬಯಸುತ್ತದೆ</translation>
 <translation id="4944310289250773232">ಈ ದೃಢೀಕರಣ ಸೇವೆಯನ್ನು <ph name="SAML_DOMAIN" /> ಮೂಲಕ ಹೋಸ್ಟ್ ಮಾಡಲಾಗಿದೆ</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{ಒಂದು ಫೈಲ್}one{# ಫೈಲ್‌ಗಳು}other{# ಫೈಲ್‌ಗಳು}}</translation>
 <translation id="495170559598752135">ಕ್ರಿಯೆಗಳು</translation>
 <translation id="4953808748584563296">ಡಿಫಾಲ್ಟ್ ಕೇಸರಿ ಅವತಾರ್</translation>
 <translation id="4955710816792587366">ನಿಮ್ಮ ಪಿನ್‌ ಆಯ್ಕೆಮಾಡಿ</translation>
@@ -5079,6 +5082,7 @@
 <translation id="6664237456442406323">ದುರದೃಷ್ಟವಶಾತ್, ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ತಪ್ಪಾಗಿ ರಚಿಸಲಾದ ಹಾರ್ಡ್‌ವೇರ್ ID ಯೊಂದಿಗೆ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ. ಇದು Chrome OS ಅನ್ನು ಇತ್ತೀಚಿನ ಭದ್ರತೆ ಸರಿಪಡಿಸುವಿಕೆಗಳೊಂದಿಗೆ ನವೀಕರಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ ಮತ್ತು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ <ph name="BEGIN_BOLD" />ದುರುದ್ದೇಶದ ದಾಳಿಗಳಿಗೆ ಗುರಿಯಾಗುವ ಸಾಧ್ಯತೆಯಿದೆ<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ತೆರೆಯುವಾಗ ಏನೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ. ದಯವಿಟ್ಟು ಸೈನ್ ಔಟ್ ಮಾಡಿ ನಂತರ ಮತ್ತೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> ಆ್ಯಪ್ ಈಗ ಲಭ್ಯವಿದೆ</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{ಒಂದು ವಿಳಾಸ}one{# ವಿಳಾಸಗಳು}other{# ವಿಳಾಸಗಳು}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು, ನಿಮ್ಮ ಪಾಸ್‌ಫ್ರೇಸ್ ಅನ್ನು ನಮೂದಿಸಿ</translation>
 <translation id="6675665718701918026">ಪಾಯಿಂಟಿಂಗ್ ಸಾಧನ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ</translation>
@@ -5776,6 +5780,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">ಸ್ಥಳವನ್ನು ತೆರೆ...</translation>
 <translation id="7457384018036134905">Chrome OS ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿರುವ ಭಾಷೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{ಒಂದು ಲಿಂಕ್}one{# ಲಿಂಕ್‌ಗಳು}other{# ಲಿಂಕ್‌ಗಳು}}</translation>
 <translation id="7458168200501453431">Google ಹುಡುಕಾಟದಲ್ಲಿ ಬಳಸುವ ಕಾಗುಣಿತ ಪರೀಕ್ಷಕವನ್ನೇ ಬಳಸಿ. ನೀವು ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಟೈಪ್ ಮಾಡುವ ಪಠ್ಯವನ್ನು Google ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="7460045493116006516">ನೀವು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿರುವ ಪ್ರಸ್ತುತ ಥೀಮ್</translation>
 <translation id="7461924472993315131">ಪಿನ್</translation>
@@ -6175,6 +6180,7 @@
 <translation id="7883792253546618164">ಯಾವಾಗ ಬೇಕಾದರೂ ಅನ್‌ಸಬ್‌ಸ್ಕ್ರೈಬ್ ಮಾಡಿ.</translation>
 <translation id="788453346724465748">ಖಾತೆ ಮಾಹಿತಿಯನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="7885253890047913815">ಇತ್ತೀಚಿನ ಗಮ್ಯಸ್ಥಾನಗಳು</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{ಒಂದು ಐಟಂ}one{# ಐಟಂಗಳು}other{# ಐಟಂಗಳು}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">ನಕಲು</translation>
 <translation id="7887864092952184874">ಬ್ಲೂಟೂತ್‌ ಮೌಸ್ ಜೋಡಿಯಾಗಿದೆ</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Google Drive ಫೈಲ್‌ಗಳು</translation>
 <translation id="8141584439523427891">ಇದೀಗ ಪರ್ಯಾಯ ಬ್ರೌಸರ್‌ನಲ್ಲಿ ತೆರೆಯಲಾಗುತ್ತಿದೆ</translation>
 <translation id="8141725884565838206">ನಿನ್ನ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{ಒಂದು ವೀಡಿಯೊ}one{# ವೀಡಿಯೊಗಳು}other{# ವೀಡಿಯೊಗಳು}}</translation>
 <translation id="8143442547342702591">ಅಮಾನ್ಯವಾದ ಅಪ್ಲಿಕೇಶನ್</translation>
 <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> ಆಯ್ಕೆಮಾಡಿ</translation>
 <translation id="8146177459103116374">ಈ ಸಾಧನದಲ್ಲಿ ನೀವು ಈಗಾಗಲೇ ನೋಂದಾಯಿಸಿದ್ದರೆ, ನೀವು <ph name="LINK2_START" />ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಬಳಕೆದಾರನಂತೆ ಸೈನ್ ಇನ್<ph name="LINK2_END" /> ಮಾಡಬಹುದು.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">ವೆಬ್ ಪುಟಗಳಿಗಾಗಿ ರೀಡರ್‌ ಮೋಡ್‌</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{ಟ್ಯಾಬ್ ಅನ್ನು ಹೊಸ ವಿಂಡೋಗೆ ಸರಿಸಿ}one{ಟ್ಯಾಬ್‌ಗಳನ್ನು ಹೊಸ ವಿಂಡೋಗೆ ಸರಿಸಿ}other{ಟ್ಯಾಬ್‌ಗಳನ್ನು ಹೊಸ ವಿಂಡೋಗೆ ಸರಿಸಿ}}</translation>
 <translation id="8165997195302308593">Crostini ಪೋರ್ಟ್ ಫಾರ್ವರ್ಡ್ ಮಾಡುವಿಕೆ</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{ಒಂದು ಫೋನ್ ಸಂಖ್ಯೆ}one{# ಫೋನ್ ಸಂಖ್ಯೆಗಳು}other{# ಫೋನ್ ಸಂಖ್ಯೆಗಳು}}</translation>
 <translation id="8168435359814927499">ವಿಷಯ</translation>
 <translation id="8168943654413034772">ಆಯ್ಕೆಮಾಡಲು ನಿಯೋಜಿಸಲಾದ ಏಕೈಕ ಸ್ವಿಚ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಿರ್ಗಮಿಸಲು ಯಾವುದಾದರೂ ಕೀ ಒತ್ತಿರಿ.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{ಓದುವ ಪಟ್ಟಿಗೆ ಟ್ಯಾಬ್ ಅನ್ನು ಸೇರಿಸಿ}one{ಓದುವ ಪಟ್ಟಿಗೆ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಸೇರಿಸಿ}other{ಓದುವ ಪಟ್ಟಿಗೆ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಸೇರಿಸಿ}}</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index 909b3fa..6be14d8 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -1331,6 +1331,7 @@
 <translation id="2440604414813129000">소스 보기(&amp;O)</translation>
 <translation id="244231003699905658">잘못된 주소입니다. 주소를 확인한 다음 다시 시도해 보세요.</translation>
 <translation id="2442916515643169563">텍스트 음영</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">확장 프로그램 루트 디렉터리가 필요합니다.</translation>
 <translation id="2445484935443597917">새 프로필 만들기</translation>
 <translation id="2448312741937722512">유형</translation>
@@ -4641,6 +4642,7 @@
 <translation id="6184099524311454384">탭 검색</translation>
 <translation id="6185132558746749656">기기 위치</translation>
 <translation id="6186394437969115158">사이트에서는 일반적으로 콘텐츠나 서비스를 무료로 제공하기 위해 광고를 표시합니다. 그러나 일부 사이트는 방해가 되거나 사용자를 현혹하는 광고를 표시하는 것으로 알려져 있습니다.</translation>
+<translation id="6195005504600220730">브라우저, OS, 기기에 관한 정보를 확인합니다.</translation>
 <translation id="6195693561221576702">이 기기는 오프라인 데모 모드에서 설정할 수 없습니다.</translation>
 <translation id="6195724942939841102">복원하지 않음</translation>
 <translation id="6196640612572343990">타사 쿠키 차단</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index 430b646..15c21f7 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -1331,6 +1331,7 @@
 <translation id="2440604414813129000">&amp;Булакты карап көрүү</translation>
 <translation id="244231003699905658">Дарек жараксыз. Даректи текшерип, кайталап көрүңүз.</translation>
 <translation id="2442916515643169563">Текстти көлөкөлөтүү</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Кеңейтүүнүн өзөктүк каталогу талап кылынат.</translation>
 <translation id="2445484935443597917">Жаңы профиль түзүү</translation>
 <translation id="2448312741937722512">Түрү</translation>
@@ -4643,6 +4644,7 @@
 <translation id="6184099524311454384">Издөө өтмөктөрү</translation>
 <translation id="6185132558746749656">Түзмөктүн жайгашкан жери</translation>
 <translation id="6186394437969115158">Сайттар жарнамаларды көрсөтүп, акысыз кызматтар жана материалдар менен камсыздайт. Бирок айрым сайттар тажатма же адаштыруучу жарнамаларды көрсөтөт.</translation>
+<translation id="6195005504600220730">Серепчиңиз, OS жана түзмөгүңүз тууралуу маалыматты окуу</translation>
 <translation id="6195693561221576702">Түзмөктү оффлайн демо режиминде жөндөөгө болбойт.</translation>
 <translation id="6195724942939841102">Калыбына келтирилбесин</translation>
 <translation id="6196640612572343990">Үчүнчү жактын кукилери бөгөттөлсүн</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb
index ea231ddb..8b1969d 100644
--- a/chrome/app/resources/generated_resources_lo.xtb
+++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -2391,6 +2391,7 @@
 <translation id="3616741288025931835">ລຶບຂໍ້​ມູນການທ່ອງ​ເນັດ...</translation>
 <translation id="3617891479562106823">ພື້ນຫຼັງບໍ່ສາມາດໃຊ້ໄດ້. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ.</translation>
 <translation id="3619115746895587757">ຄາປູຊິໂນ</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{ແອັບ}other{# ແອັບ}}</translation>
 <translation id="362333465072914957">ກຳລັງລໍຖ້າໃຫ້ CA ອອກໃບຮັບຮອງ</translation>
 <translation id="3624567683873126087">ປົດລັອກອຸປະກອນ ແລະ ເຂົ້າສູ່ລະບົບບັນຊີ Google</translation>
 <translation id="3625481642044239431">ເລືອກໄຟລ໌ທີ່ບໍ່ຖືກຕ້ອງ. ກະລຸນາລອງອີກຄັ້ງ.</translation>
@@ -2662,6 +2663,7 @@
 <translation id="3895076768659607631">&amp;ຈັດການໂປຣແກຣມຊອກຫາ...</translation>
 <translation id="3895090224522145010">ຊື່ຜູ້ໃຊ້ Kerberos</translation>
 <translation id="389521680295183045">ເວັບໄຊສາມາດຂໍຂໍ້ມູນວ່າທ່ານກຳລັງໃຊ້ອຸປະກອນຂອງທ່ານຢູ່ບໍ່</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{ຮູບ}other{# ຮູບ}}</translation>
 <translation id="3898233949376129212">ພາສາຂອງອຸປະກອນ</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> ຕ້ອງການ: <ph name="FIRST_PERMISSION" /> ແລະ <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">ເລືອກແປ້ນພິມ</translation>
@@ -3575,6 +3577,7 @@
 <translation id="4943368462779413526">ບານເຕະ</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ຕ້ອງການເຊື່ອມຕໍ່ກັບຜອດອະນຸກໍາ</translation>
 <translation id="4944310289250773232"><ph name="SAML_DOMAIN" /> ເປັນແມ່ຂ່າຍການບໍລິການກວດສອບຄວາມຖືກຕ້ອງ.</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{ໄຟລ໌}other{# ໄຟລ໌}}</translation>
 <translation id="495170559598752135">ການກະທໍາ</translation>
 <translation id="4953808748584563296">ຮູບແທນຕົວສີສົ້ມຕາມຄ່າເລີ່ມຕົ້ນ</translation>
 <translation id="4955710816792587366">ເລືອກ PIN ຂອງທ່ານ</translation>
@@ -5074,6 +5077,7 @@
 <translation id="6664237456442406323">ໜ້າເສຍດາຍ, ຄອມພິວເຕີຂອງທ່ານຖືກປັບຕັ້ງຄ່າດ້ວຍ ID ຮາດແວທີ່ຜິດຮູບ​ແບບ. ນີ້ສະກັດ​ກັ້ນບໍ່ໃຫ້ Chrome OS ອັບເດດດ້ວຍຕົວກໍານົດຄວາມປອດໄພຫຼ້າສຸດ ແລະຄອມພິວເຕີຂອງທ່ານ <ph name="BEGIN_BOLD" />ອາດຈະອ່ອນ​ໄຫວຕໍ່ການໂຈມຕີທີ່ປອງຮ້າຍ<ph name="END_BOLD" />ໄດ້.</translation>
 <translation id="6664774537677393800">ມີບາງຢ່າງຜິດພາດໃນເວລາເປີດໂປຣໄຟລ໌ຂອງທ່ານ. ກະລຸນາອອກຈາກລະບົບ ແລ້ວເຂົ້າສູ່ລະບົບຄືນໃໝ່.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> ພ້ອມໃຫ້ນຳໃຊ້ແລ້ວຕອນນີ້</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{ທີ່ຢູ່}other{# ທີ່ຢູ່}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">ເພື່ອເລີ່ມຊິ້ງຂໍ້ມູນ, ໃຫ້ໃສ່ລະຫັດຜ່ານຂອງທ່ານ</translation>
 <translation id="6675665718701918026">ອຸ​ປະ​ກອນ​ຊີ້​ເຊື່ອມ​ຕໍ່​ແລ້ວ</translation>
@@ -5770,6 +5774,7 @@
 <translation id="7456142309650173560">ການພັດທະນາ</translation>
 <translation id="7456847797759667638">ເປີດ​ສະ​ຖານ​ທີ່...</translation>
 <translation id="7457384018036134905">ຈັດການພາສາໃນການຕັ້ງຄ່າ Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{ລິ້ງ}other{# ລິ້ງ}}</translation>
 <translation id="7458168200501453431">ໃຊ້ຕົວກວດການສະກົດຄໍາດຽວກັນກັບທີ່ໃຊ້ໃນ Google ຊອກຫາ. ລະບົບຈະສົ່ງຂໍ້ຄວາມທີ່ທ່ານພິມໃນໂປຣແກຣມທ່ອງເວັບໄປໃຫ້ Google.</translation>
 <translation id="7460045493116006516">ຮູບແບບສີສັນປັດຈຸບັນທີ່ທ່ານໄດ້ຕິດຕັ້ງ</translation>
 <translation id="7461924472993315131">ປັກໝຸດ</translation>
@@ -6169,6 +6174,7 @@
 <translation id="7883792253546618164">ຍົກເລີກການສະໝັກໃຊ້ໄດ້ທຸກເວລາ.</translation>
 <translation id="788453346724465748">ກຳລັງໂຫຼດຂໍ້ມູນບັນຊີ...</translation>
 <translation id="7885253890047913815">ປາຍ​ທາງ​ບໍ່ດົນມານີ້</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{ລາຍການ}other{# ລາຍການ}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">ຈໍາລອງ</translation>
 <translation id="7887864092952184874">ເມົາສ໌ Bluetooth ຈັບຄູ່ແລ້ວ</translation>
@@ -6408,6 +6414,7 @@
 <translation id="8139447493436036221">ໄຟລ໌ Google Drive</translation>
 <translation id="8141584439523427891">ກຳລັງເປີດໃນໂປຣແກຣມທ່ອງເວັບສຳຮອງຕອນນີ້</translation>
 <translation id="8141725884565838206">ຈັດການລະ​ຫັດ​ຜ່ານ​ຂອງ​ທ່ານ</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{ວິດີໂອ}other{# ວິດີໂອ}}</translation>
 <translation id="8143442547342702591">ແອັບພລິເຄຊັນໃຊ້ບໍ່ໄດ້</translation>
 <translation id="8143951647992294073">ເລືອກ <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">ຖ້າ​ທ່ານ​ໄດ້​ລົງ​ທະ​ບຽນ​​ອຸ​ປະ​ກອນ​ນີ້​ແລ້ວ​, ທ່ານ​ສາ​ມາດ <ph name="LINK2_START" />ລົງຊື່ເຂົ້າ​ໃຊ້ເປັນຜູ້ໃຊ້ທີ່ມີຢູ່ໄດ້<ph name="LINK2_END" /> .</translation>
@@ -6427,6 +6434,7 @@
 <translation id="8161293209665121583">ໂໝດຜູ້ອ່ານສຳລັບໜ້າເວັບ</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{ຍ້າຍແຖບໄປໜ້າຈໍໃໝ່}other{ຍ້າຍແຖບໄປໜ້າຈໍໃໝ່}}</translation>
 <translation id="8165997195302308593">ການສົ່ງຕໍ່ຜອດໃນ Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{ເບີໂທລະສັບ}other{# ເບີໂທລະສັບ}}</translation>
 <translation id="8168435359814927499">ເນື້ອ​ໃນ</translation>
 <translation id="8168943654413034772">ບໍ່ສາມາດລຶບປຸ່ມໜຶ່ງດຽວທີ່ກຳນົດໃຫ້ເລືອກໄດ້. ກົດປຸ່ມໃດໆກໍໄດ້ເພື່ອອອກ.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{ເພີ່ມແຖບໃສ່ລາຍການທີ່ຈະອ່ານ}other{ເພີ່ມແຖບໃສ່ລາຍການທີ່ຈະອ່ານ}}</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index 175c8d3..e6e6e8f 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -2396,6 +2396,7 @@
 <translation id="3616741288025931835">&amp;Išvalyti naršymo duomenis...</translation>
 <translation id="3617891479562106823">Fonai nepasiekiami. Vėliau bandykite dar kartą.</translation>
 <translation id="3619115746895587757">Kapučino kava</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{programą}one{# programą}few{# programas}many{# programos}other{# programų}}</translation>
 <translation id="362333465072914957">Laukiama, kol sertifikavimo institucija išduos sertifikatą</translation>
 <translation id="3624567683873126087">Atrakinti įrenginį ir prisijungti prie „Google“ paskyros</translation>
 <translation id="3625481642044239431">Pasirinktas netinkamas failas. Bandykite dar kartą.</translation>
@@ -2667,6 +2668,7 @@
 <translation id="3895076768659607631">&amp;Paieškos variklių tvarkymas...</translation>
 <translation id="3895090224522145010">„Kerberos“ naudotojo vardas</translation>
 <translation id="389521680295183045">Svetainės gali prašyti leisti sužinoti, kada aktyviai naudojate įrenginį</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{vaizdą}one{# vaizdą}few{# vaizdus}many{# vaizdo}other{# vaizdų}}</translation>
 <translation id="3898233949376129212">Įrenginio kalba</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> nori gauti šiuos leidimus: <ph name="FIRST_PERMISSION" /> ir <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Pasirinkti klaviatūrą</translation>
@@ -3580,6 +3582,7 @@
 <translation id="4943368462779413526">Futbolas</translation>
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ nori prisijungti prie nuosekliojo prievado</translation>
 <translation id="4944310289250773232">Ši autentifikavimo paslauga priglobiama <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{failą}one{# failą}few{# failus}many{# failo}other{# failų}}</translation>
 <translation id="495170559598752135">Veiksmai</translation>
 <translation id="4953808748584563296">Numatytasis oranžinis pseudoportretas</translation>
 <translation id="4955710816792587366">PIN kodo pasirinkimas</translation>
@@ -5080,6 +5083,7 @@
 <translation id="6664237456442406323">Deja, jūsų kompiuteris yra sukonfigūruotas naudojant netinkamai suformuotą aparatinės įrangos ID. Tai neleidžia „Chrome“ OS atnaujinti naujausiais saugos pataisymais ir jūsų kompiuteris <ph name="BEGIN_BOLD" />gali būti neatsparus kenkėjiškoms programoms<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Atidarant profilį įvyko klaida. Atsijunkite, tada vėl prisijunkite.</translation>
 <translation id="6670142487971298264">Programa „<ph name="APP_NAME" />“ dabar pasiekiama</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{adresą}one{# adresą}few{# adresus}many{# adreso}other{# adresų}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Jei norite pradėti sinchronizuoti, įveskite slaptafrazę</translation>
 <translation id="6675665718701918026">Manipuliatorius prijungtas</translation>
@@ -5776,6 +5780,7 @@
 <translation id="7456142309650173560">įreng.</translation>
 <translation id="7456847797759667638">Atidaryti vietą...</translation>
 <translation id="7457384018036134905">Tvarkyti kalbas „Chrome“ OS nustatymuose</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{nuorodą}one{# nuorodą}few{# nuorodas}many{# nuorodos}other{# nuorodų}}</translation>
 <translation id="7458168200501453431">Naudojamas tas pats rašybos tikrinimas kaip ir „Google“ paieškoje. Tekstas, kurį įvedate naršyklėje, nusiunčiamas „Google“.</translation>
 <translation id="7460045493116006516">Dabartinė jūsų įdiegta tema</translation>
 <translation id="7461924472993315131">Prisegti</translation>
@@ -6176,6 +6181,7 @@
 <translation id="7883792253546618164">Atsisakyti prenumeratos galėsite bet kuriuo metu.</translation>
 <translation id="788453346724465748">Įkeliama paskyros informacija...</translation>
 <translation id="7885253890047913815">Naujausios paskirties vietos</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{elementą}one{# elementą}few{# elementus}many{# elemento}other{# elementų}}</translation>
 <translation id="7886605625338676841">„eSIM“ kortelė</translation>
 <translation id="7887334752153342268">Dubliuoti</translation>
 <translation id="7887864092952184874">„Bluetooth“ pelė susieta</translation>
@@ -6416,6 +6422,7 @@
 <translation id="8139447493436036221">„Google“ disko failai</translation>
 <translation id="8141584439523427891">Atidaroma alternatyvioje naršyklėje</translation>
 <translation id="8141725884565838206">Tvarkykite slaptažodžius</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{vaizdo įrašą}one{# vaizdo įrašą}few{# vaizdo įrašus}many{# vaizdo įrašo}other{# vaizdo įrašų}}</translation>
 <translation id="8143442547342702591">Netinkama programa</translation>
 <translation id="8143951647992294073">Pasirinkite <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Jei jau esate užsiregistravę šiame įrenginyje, galite <ph name="LINK2_START" />prisijungti kaip esamas naudotojas<ph name="LINK2_END" />.</translation>
@@ -6435,6 +6442,7 @@
 <translation id="8161293209665121583">Tinklalapių skaitytojo režimą</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Skirtuko perkėlimas į naują langą}one{Skirtukų perkėlimas į naują langą}few{Skirtukų perkėlimas į naują langą}many{Skirtukų perkėlimas į naują langą}other{Skirtukų perkėlimas į naują langą}}</translation>
 <translation id="8165997195302308593">„Crostini“ prievado numerio persiuntimas</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{telefono numerį}one{# telefono numerį}few{# telefono numerius}many{# telefono numerio}other{# telefono numerių}}</translation>
 <translation id="8168435359814927499">Turinys</translation>
 <translation id="8168943654413034772">Nepavyko pašalinti vienintelio jungiklio, priskirto pasirinkimo veiksmui. Paspauskite bet kurį klavišą, kad išeitumėte.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Pridėti skirtuką prie skaitomų sąrašo}one{Pridėti skirtuką prie skaitomų sąrašo}few{Pridėti skirtukus prie skaitomų sąrašo}many{Pridėti skirtukus prie skaitomų sąrašo}other{Pridėti skirtukus prie skaitomų sąrašo}}</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index 381d50dc..a2c2395 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -2395,6 +2395,7 @@
 <translation id="3616741288025931835">&amp;Dzēst pārlūkošanas datus...</translation>
 <translation id="3617891479562106823">Fona attēli nav pieejami. Vēlāk mēģiniet vēlreiz.</translation>
 <translation id="3619115746895587757">Kapučīno</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{lietotne}zero{# lietotņu}one{# lietotne}other{# lietotnes}}</translation>
 <translation id="362333465072914957">Tiek gaidīts sertifikāts no sertifikāta izdevējiestādes</translation>
 <translation id="3624567683873126087">Atbloķēt ierīci un pierakstīties Google kontā</translation>
 <translation id="3625481642044239431">Atlasīts nederīgs fails. Mēģiniet vēlreiz.</translation>
@@ -2666,6 +2667,7 @@
 <translation id="3895076768659607631">&amp;Pārvaldīt meklētājprogrammas…</translation>
 <translation id="3895090224522145010">Kerberos lietotājvārds</translation>
 <translation id="389521680295183045">Vietnēs var tikt pieprasīta informācija par to, kad jūs aktīvi lietojat savu ierīci.</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{attēls}zero{# attēlu}one{# attēls}other{# attēli}}</translation>
 <translation id="3898233949376129212">Ierīces valoda</translation>
 <translation id="3898327728850887246">Vietne <ph name="SITE_NAME" /> vēlas saņemt šādas atļaujas: <ph name="FIRST_PERMISSION" /> un <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Tastatūras atlasīšana</translation>
@@ -3579,6 +3581,7 @@
 <translation id="4943368462779413526">Futbols</translation>
 <translation id="4943691134276646401">Paplašinājums “<ph name="CHROME_EXTENSION_NAME" />” vēlas izveidot savienojumu ar seriālo pieslēgvietu</translation>
 <translation id="4944310289250773232">Šo autentifikācijas pakalpojumu mitina <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{fails}zero{# failu}one{# fails}other{# faili}}</translation>
 <translation id="495170559598752135">Darbības</translation>
 <translation id="4953808748584563296">Noklusējuma iemiesojums oranžā krāsā</translation>
 <translation id="4955710816792587366">Izvēlieties PIN</translation>
@@ -5078,6 +5081,7 @@
 <translation id="6664237456442406323">Diemžēl jūsu datora konfigurācijā tika izmantots nepareizi veidots aparatūras ID. Šī iemesla dēļ operētājsistēmu Chrome OS nevarēja atjaunināt, izmantojot jaunākos drošības labojumus, un jūsu dators, iespējams, <ph name="BEGIN_BOLD" />nebūs aizsargāts pret ļaunprātīgiem uzbrukumiem<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Atverot jūsu profilu, radās kļūda. Lūdzu, izrakstieties un vēlreiz pierakstieties.</translation>
 <translation id="6670142487971298264">Lietotne <ph name="APP_NAME" /> tagad ir pieejama</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{adrese}zero{# adrešu}one{# adrese}other{# adreses}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Lai sāktu sinhronizāciju, ievadiet savu ieejas frāzi</translation>
 <translation id="6675665718701918026">Rādītājierīce ir pievienota.</translation>
@@ -5774,6 +5778,7 @@
 <translation id="7456142309650173560">izstr.</translation>
 <translation id="7456847797759667638">Atvērt atrašanās vietu...</translation>
 <translation id="7457384018036134905">Valodu pārvaldība Chrome OS iestatījumos</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{saite}zero{# saišu}one{# saite}other{# saites}}</translation>
 <translation id="7458168200501453431">Tiek izmantots tas pats pareizrakstības pārbaudītājs, kas tiek izmantots Google meklēšanā. Pārlūkā ievadītais teksts tiek nosūtīts Google serveriem.</translation>
 <translation id="7460045493116006516">Pašlaik instalētais motīvs</translation>
 <translation id="7461924472993315131">Piespraust</translation>
@@ -6173,6 +6178,7 @@
 <translation id="7883792253546618164">Varat jebkurā brīdī anulēt abonementu.</translation>
 <translation id="788453346724465748">Notiek konta informācijas ielāde…</translation>
 <translation id="7885253890047913815">Nesenie printeri</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{vienums}zero{# vienumu}one{# vienums}other{# vienumi}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Izveidot dublikātu</translation>
 <translation id="7887864092952184874">Bluetooth pele ir savienota pārī.</translation>
@@ -6413,6 +6419,7 @@
 <translation id="8139447493436036221">Google diska faili</translation>
 <translation id="8141584439523427891">Notiek atvēršana citā pārlūkprogrammā</translation>
 <translation id="8141725884565838206">Pārvaldīt savas paroles</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{videoklips}zero{# videoklipu}one{# videoklips}other{# videoklipi}}</translation>
 <translation id="8143442547342702591">Nederīga lietojumprogramma</translation>
 <translation id="8143951647992294073">Atlasīt <ph name="TOPIC_SOURCE" /> vienumu <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Ja esat jau reģistrējies šajā ierīcē, varat <ph name="LINK2_START" />pierakstīties kā esošs lietotājs<ph name="LINK2_END" />.</translation>
@@ -6432,6 +6439,7 @@
 <translation id="8161293209665121583">Lasītāja režīms tīmekļa lapām</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Cilnes pārvietošana uz jaunu logu}zero{Ciļņu pārvietošana uz jaunu logu}one{Ciļņu pārvietošana uz jaunu logu}other{Ciļņu pārvietošana uz jaunu logu}}</translation>
 <translation id="8165997195302308593">Crostini porta pārsūtīšana</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{tālruņa numurs}zero{# tālruņa numuru}one{# tālruņa numurs}other{# tālruņa numuri}}</translation>
 <translation id="8168435359814927499">Saturs</translation>
 <translation id="8168943654413034772">Nevar noņemt vienīgo slēdzi, kam piešķirta darbība “Atlasīt”. Lai izietu, nospiediet jebkuru taustiņu.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Pievienot cilni lasīšanas sarakstam}zero{Pievienot cilnes lasīšanas sarakstam}one{Pievienot cilnes lasīšanas sarakstam}other{Pievienot cilnes lasīšanas sarakstam}}</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb
index 51f640ed..8d031b2 100644
--- a/chrome/app/resources/generated_resources_mk.xtb
+++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -2394,6 +2394,7 @@
 <translation id="3616741288025931835">&amp;Исчисти податоци од прелистување...</translation>
 <translation id="3617891479562106823">Заднините се недостапни. Обидете се повторно подоцна.</translation>
 <translation id="3619115746895587757">Капучино</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{апликација}one{# апликација}other{# апликации}}</translation>
 <translation id="362333465072914957">Се чека CA да издаде сертификат</translation>
 <translation id="3624567683873126087">Отклучи го уредот и најави се на сметката на Google</translation>
 <translation id="3625481642044239431">Избравте неважечка датотека. Обидете се повторно.</translation>
@@ -2665,6 +2666,7 @@
 <translation id="3895076768659607631">&amp;Управувајте со пребарувачите…</translation>
 <translation id="3895090224522145010">Корисничко име на Kerberos</translation>
 <translation id="389521680295183045">Сајтовите може да прашуваат за да знаат кога активно го користите уредот</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{слика}one{# слика}other{# слики}}</translation>
 <translation id="3898233949376129212">Јазик на уредот</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> сака да: <ph name="FIRST_PERMISSION" /> и <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Изберете тастатура</translation>
@@ -3578,6 +3580,7 @@
 <translation id="4943368462779413526">Фудбал</translation>
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ сака да се поврзе со сериска порта</translation>
 <translation id="4944310289250773232">Оваа услуга за автентикација е хостирана од <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{датотека}one{# датотека}other{# датотеки}}</translation>
 <translation id="495170559598752135">Дејства</translation>
 <translation id="4953808748584563296">Стандарден портокалов аватар</translation>
 <translation id="4955710816792587366">Изберете PIN</translation>
@@ -5077,6 +5080,7 @@
 <translation id="6664237456442406323">За жал, вашиот компјутер е конфигуриран со деформиран ИД на хардвер. Ова го спречува Chrome OS да ги ажурира најновите безбедносни поправки и вашиот компјутер <ph name="BEGIN_BOLD" />може да е ранлив на напади од злонамерен софтвер<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Нешто тргна наопаку при отворањето на профилот. Одјавете се, па најавете се повторно.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> сега е достапна</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{адреса}one{# адреса}other{# адреси}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">За да започне синхронизацијата, внесете ја лозинката</translation>
 <translation id="6675665718701918026">Уредот за покажување е поврзан</translation>
@@ -5773,6 +5777,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Отвори локација...</translation>
 <translation id="7457384018036134905">Управувајте со јазиците во поставките за Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{линк}one{# линк}other{# линка}}</translation>
 <translation id="7458168200501453431">Ја користи истата проверка на правопис што се користи и во „Пребарување на Google“. Текстот што ќе го напишете во прелистувачот се испраќа до Google.</translation>
 <translation id="7460045493116006516">Темата што ви е инсталирана</translation>
 <translation id="7461924472993315131">Закачи</translation>
@@ -6173,6 +6178,7 @@
 <translation id="7883792253546618164">Отпишете се во секое време.</translation>
 <translation id="788453346724465748">Се вчитуваат податоци за сметката…</translation>
 <translation id="7885253890047913815">Неодамнешни дестинации</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{ставка}one{# ставка}other{# ставки}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Направи дупликат</translation>
 <translation id="7887864092952184874">Поврзан глушец со Bluetooth</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Датотеки на Google Drive</translation>
 <translation id="8141584439523427891">Се отвора во алтернативен прелистувач сега</translation>
 <translation id="8141725884565838206">Управувај со своите лозинки</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{видео}one{# видео}other{# видеа}}</translation>
 <translation id="8143442547342702591">Неважечка апликација</translation>
 <translation id="8143951647992294073">Изберете <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Доколку веќе се регистриравте на овој уред, може да се <ph name="LINK2_START" />пријавите како постоечки корисник<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Режим на читач за веб-страници</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Преместете ја картичката во нов прозорец}one{Преместете ги картичките во нов прозорец}other{Преместете ги картичките во нов прозорец}}</translation>
 <translation id="8165997195302308593">Проследување порти на Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{телефонски број}one{# телефонски број}other{# телефонски броја}}</translation>
 <translation id="8168435359814927499">Содржина</translation>
 <translation id="8168943654413034772">Не може да се отстрани единствениот прекинувач назначен за Select. Притиснете го кое било копче за да излезете.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Додај ја картичката во списокот за читање}one{Додај ги картичките во списокот за читање}other{Додај ги картичките во списокот за читање}}</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index 335fc5f..443c18c 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -1328,6 +1328,7 @@
 <translation id="2440604414813129000">ഉറവിടം കാണുക</translation>
 <translation id="244231003699905658">വിലാസം തെറ്റാണ്. വിലാസം പരിശോധിച്ച ശേഷം വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="2442916515643169563">ടെക്‌സ്‌റ്റ് ഷാഡോ</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">വിപുലീകരണ റൂട്ട് ഡയറക്‌റ്ററി ആവശ്യമാണ്.</translation>
 <translation id="2445484935443597917">പുതിയ പ്രൊഫൈൽ സൃഷ്‌ടിക്കുക</translation>
 <translation id="2448312741937722512">തരം</translation>
@@ -4641,6 +4642,7 @@
 <translation id="6184099524311454384">ടാബുകൾ തിരയുക</translation>
 <translation id="6185132558746749656">ഉപകരണ ലൊക്കേഷൻ</translation>
 <translation id="6186394437969115158">ഉള്ളടക്കമോ സേവനങ്ങളോ സൗജന്യമായി നൽകുന്നതിനാണ് സൈറ്റുകൾ സാധാരണയായി പരസ്യങ്ങൾ കാണിക്കുന്നത്. എന്നാൽ ചില സൈറ്റുകൾ അനാവശ്യമോ തെറ്റിദ്ധരിപ്പിക്കുന്നതോ ആയ പരസ്യങ്ങൾ കാണിക്കുന്നു.</translation>
+<translation id="6195005504600220730">നിങ്ങളുടെ ബ്രൗസർ, OS, ഉപകരണം എന്നിവയെ കുറിച്ചുള്ള വിവരങ്ങൾ വായിക്കുക</translation>
 <translation id="6195693561221576702">ഈ ഉപകരണം ഓഫ്‌ലൈൻ ഡെമോ മോഡിൽ സജ്ജീകരിക്കാനാവില്ല.</translation>
 <translation id="6195724942939841102">പുനഃസ്ഥാപിക്കരുത്</translation>
 <translation id="6196640612572343990">മൂന്നാം കക്ഷി കുക്കികള്‍ ബ്ലോക്കുചെയ്യുക</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index 8709cb1a..2def2ba 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -2388,6 +2388,7 @@
 <translation id="3616741288025931835">&amp; Хайлтын өгөгдлийг цэвэрлэ...</translation>
 <translation id="3617891479562106823">Арын дэвсгэр боломжгүй байна. Дараа дахин оролдоно уу.</translation>
 <translation id="3619115746895587757">Капучино</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{1 апп}other{# апп}}</translation>
 <translation id="362333465072914957">Цахим гэрчилгээний газраас гэрчилгээ олгохыг хүлээж байна</translation>
 <translation id="3624567683873126087">Төхөөрөмжийн түгжээг тайлж Google Туслахдаа нэвтрэх</translation>
 <translation id="3625481642044239431">Буруу файл сонгосон байна. Дахин оролдоно уу.</translation>
@@ -2659,6 +2660,7 @@
 <translation id="3895076768659607631">&amp;Хайлтын системийг удирдах...</translation>
 <translation id="3895090224522145010">Kerberos хэрэглэгчийн нэр</translation>
 <translation id="389521680295183045">Сайтууд таныг төхөөрөмжөө хэзээ идэвхтэй ашиглаж буйг мэдэхийг хүсэх боломжтой</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{1 зураг}other{# зураг}}</translation>
 <translation id="3898233949376129212">Төхөөрөмжийн хэл</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> дараах зөвшөөрлүүдийг хүсэж байна: <ph name="FIRST_PERMISSION" /> болон <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Гар сонгох</translation>
@@ -3571,6 +3573,7 @@
 <translation id="4943368462779413526">Хөл бөмбөг</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" цуваа портод холбогдох хүсэлтэй байна</translation>
 <translation id="4944310289250773232">Энэ нотолгооны үйлчилгээг <ph name="SAML_DOMAIN" />-с удирддаг</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{1 файл}other{# файл}}</translation>
 <translation id="495170559598752135">Авах арга хэмжээ</translation>
 <translation id="4953808748584563296">Өгөгдмөл улбар шар аватар</translation>
 <translation id="4955710816792587366">ПИН-ээ сонгох</translation>
@@ -5070,6 +5073,7 @@
 <translation id="6664237456442406323">Харамсалтай нь таны компьютер хорт вирусаар халдварласан  техник хангамжийн ID-аар тохируулагдсан байна. Энэ нь Chrome OS-ийг хамгийн сүүлийн үеийн аюулгүй байдлын засваруудаас шинэчлэлт хийх боломжгүй болгодог бөгөөд таны компьютер <ph name="BEGIN_BOLD" /> хорт халдлагад өртөх магадлалтай байна<ph name="END_BOLD" /> .</translation>
 <translation id="6664774537677393800">Таны профайлыг нээхэд асуудал гарлаа. Бүртгэлээсээ гараад, дахин нэвтэрнэ үү.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> одоо боломжтой боллоо</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{1 хаяг}other{# хаяг}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Синк хийж эхлэхийн тулд нэвтрэх үгээ оруулна уу</translation>
 <translation id="6675665718701918026">Сонгосон төхөөрөмжийг холбосон</translation>
@@ -5766,6 +5770,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Байршлыг нээ...</translation>
 <translation id="7457384018036134905">Хэлнүүдийг Chrome үйлдлийн системийн тохиргоонд удирдах</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{1 холбоос}other{# холбоос}}</translation>
 <translation id="7458168200501453431">Google хайлтад ашигладаг зөв бичгийн ижил алдаа шалгагчийг ашигладаг. Таны хөтчид бичсэн текстийг Google-д илгээдэг.</translation>
 <translation id="7460045493116006516">Таны суулгасан одоогийн загвар</translation>
 <translation id="7461924472993315131">Pin</translation>
@@ -6165,6 +6170,7 @@
 <translation id="7883792253546618164">Хүссэн үедээ захиалгаа цуцална уу.</translation>
 <translation id="788453346724465748">Бүртгэлийн мэдээллийг ачаалж байна...</translation>
 <translation id="7885253890047913815">Хамгийн сүүлд ашигласан</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{1 зүйл}other{# зүйл}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Хувилах</translation>
 <translation id="7887864092952184874">Bluetooth хулганыг тохирууллаа</translation>
@@ -6402,6 +6408,7 @@
 <translation id="8139447493436036221">Google Драйвын файлууд</translation>
 <translation id="8141584439523427891">Одоо өөр хөтчид нээж байна</translation>
 <translation id="8141725884565838206">Нууц үгээ удирдана уу</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{1 видео}other{# видео}}</translation>
 <translation id="8143442547342702591">Хүчингүй апп</translation>
 <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" />-г сонгох</translation>
 <translation id="8146177459103116374">Хэрэв та энэ төхөөрөмжид аль хэдийн бүртгүүлсэн бол та <ph name="LINK2_START" />бүртгэлтэй хэрэглэгчээр нэвтэрч<ph name="LINK2_END" /> болно.</translation>
@@ -6421,6 +6428,7 @@
 <translation id="8161293209665121583">Веб хуудсанд зориулсан уншигчийн горим</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Табыг шинэ цонх руу зөөх}other{Табуудыг шинэ цонх руу зөөх}}</translation>
 <translation id="8165997195302308593">Crostini-н порт дамжуулах</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{1 утасны дугаар}other{# утасны дугаар}}</translation>
 <translation id="8168435359814927499">Агуулга</translation>
 <translation id="8168943654413034772">Сонгоход оноосон цорын ганц сэлгүүрийг хасах боломжгүй. Гарахын тулд дурын товчийг дарна уу.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Унших жагсаалтад Таб нэмэх}other{Унших жагсаалтад Табууд нэмэх}}</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index 37367e6..09a4dac 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">&amp;Kosongkan Data Menyemak Imbas...</translation>
 <translation id="3617891479562106823">Latar belakang tidak tersedia. Cuba lagi nanti.</translation>
 <translation id="3619115746895587757">Kapucino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{satu apl}other{# apl}}</translation>
 <translation id="362333465072914957">Menunggu CA mengeluarkan sijil</translation>
 <translation id="3624567683873126087">Buka kunci peranti dan log masuk ke Akaun Google</translation>
 <translation id="3625481642044239431">Fail tidak sah dipilih. Cuba lagi.</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;Urus Enjin Carian...</translation>
 <translation id="3895090224522145010">Nama pengguna Kerberos</translation>
 <translation id="389521680295183045">Laman boleh meminta untuk mengetahui waktu anda aktif menggunakan peranti</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{satu imej}other{# imej}}</translation>
 <translation id="3898233949376129212">Bahasa peranti</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> ingin: <ph name="FIRST_PERMISSION" /> dan <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Pilih papan kekunci</translation>
@@ -3577,6 +3579,7 @@
 <translation id="4943368462779413526">Bola Sepak</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ingin menyambung ke port siri</translation>
 <translation id="4944310289250773232">Perkhidmatan pengesahan ini dihoskan oleh <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{satu fail}other{# fail}}</translation>
 <translation id="495170559598752135">Tindakan</translation>
 <translation id="4953808748584563296">Avatar jingga lalai</translation>
 <translation id="4955710816792587366">Pilih PIN anda</translation>
@@ -5076,6 +5079,7 @@
 <translation id="6664237456442406323">Malangnya, komputer anda dikonfigurasi dengan ID perkakasan tidak sempurna. Hal ini menghalang OS Chrome daripada mengemas kini kepada pembetulan keselamatan terbaharu dan komputer anda <ph name="BEGIN_BOLD" />mungkin terdedah kepada serangan berniat jahat<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Kesilapan telah berlaku semasa membuka profil anda. Sila log keluar dan log masuk sekali lagi.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> kini tersedia</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{satu alamat}other{# alamat}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Untuk memulakan penyegerakan, masukkan ungkapan laluan anda</translation>
 <translation id="6675665718701918026">Peranti penuding disambung</translation>
@@ -5772,6 +5776,7 @@
 <translation id="7456142309650173560">Pembangunan</translation>
 <translation id="7456847797759667638">Buka Lokasi...</translation>
 <translation id="7457384018036134905">Urus bahasa dalam tetapan OS Chrome</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{satu pautan}other{# pautan}}</translation>
 <translation id="7458168200501453431">Menggunakan penyemak ejaan yang sama seperti yang digunakan dalam Carian Google. Teks yang anda taip dalam penyemak imbas akan dihantar kepada Google.</translation>
 <translation id="7460045493116006516">Tema semasa yang telah dipasang</translation>
 <translation id="7461924472993315131">Pin</translation>
@@ -6172,6 +6177,7 @@
 <translation id="7883792253546618164">Hentikan langganan pada bila-bila masa.</translation>
 <translation id="788453346724465748">Memuatkan maklumat akaun...</translation>
 <translation id="7885253890047913815">Destinasi Baru-baru Ini</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{satu item}other{# item}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Pendua</translation>
 <translation id="7887864092952184874">Tetikus Bluetooth digandingkan</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Fail Google Drive</translation>
 <translation id="8141584439523427891">Membuka dalam penyemak imbas alternatif sekarang</translation>
 <translation id="8141725884565838206">Urus kata laluan anda</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{satu video}other{# video}}</translation>
 <translation id="8143442547342702591">Aplikasi tidak sah</translation>
 <translation id="8143951647992294073">Pilih <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Jika anda telah mendaftar pada peranti ini, anda boleh <ph name="LINK2_START" />log masuk sebagai pengguna sedia ada<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Mod pembaca untuk halaman web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Alihkan Tab ke Tetingkap Baharu}other{Alihkan Tab ke Tetingkap Baharu}}</translation>
 <translation id="8165997195302308593">Kiriman semula port Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{satu nombor telefon}other{# nombor telefon}}</translation>
 <translation id="8168435359814927499">Kandungan</translation>
 <translation id="8168943654413034772">Tidak dapat mengalih keluar satu-satunya suis yang diuntukkan kepada Pilih. Tekan mana-mana kekunci untuk keluar.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Tambahkan Tab pada Senarai Bacaan}other{Tambahkan Tab pada Senarai Bacaan}}</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb
index 876797d..19ae8da 100644
--- a/chrome/app/resources/generated_resources_my.xtb
+++ b/chrome/app/resources/generated_resources_my.xtb
@@ -2394,6 +2394,7 @@
 <translation id="3616741288025931835">ဘရောက်လုပ်ထားသည့် အချက်လက်များ ရှင်းလင်းရန်...</translation>
 <translation id="3617891479562106823">နောက်ခံပုံများ မရရှိနိုင်ပါ။ နောက်မှ ထပ်စမ်းကြည့်ပါ။</translation>
 <translation id="3619115746895587757">ကာပူချီနို</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{အက်ပ်တစ်ခု}other{အက်ပ် # ခု}}</translation>
 <translation id="362333465072914957">အသိအမှတ်ပြုလက်မှတ် ထုတ်ပေးရန် CA ကို စောင့်နေသည်</translation>
 <translation id="3624567683873126087">စက်ကို လော့ခ်ဖွင့်ပြီး Google အကောင့်သို့ လက်မှတ်ထိုးဝင်ပါ</translation>
 <translation id="3625481642044239431">မမှန်ကန်သည့် ဖိုင်ကို ရွေးထားသည်။ ထပ်လုပ်ကြည့်ပါ။</translation>
@@ -2665,6 +2666,7 @@
 <translation id="3895076768659607631">ရှာဖွေရေး အင်ဂျင်များ &amp;စီမံခြင်း...</translation>
 <translation id="3895090224522145010">Kerberos အသုံးပြုသူအမည်</translation>
 <translation id="389521680295183045">သင့်ကိရိယာသုံးနေချိန်ကို သိရန် ဝဘ်ဆိုက်များက ခွင့်တောင်းနိုင်သည်</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{ပုံတစ်ပုံ}other{ပုံ # ပုံ}}</translation>
 <translation id="3898233949376129212">စက်၏ ဘာသာစကား</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> က အောက်ပါတို့ကို ပြုလုပ်လိုသည်- <ph name="FIRST_PERMISSION" /> နှင့် <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">ကီးဘုတ်ကို ရွေးပါ</translation>
@@ -3577,6 +3579,7 @@
 <translation id="4943368462779413526">ဘောလုံး</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" က အမှတ်စဉ်ပို့တ်ကို ချိတ်ဆက်လိုသည်</translation>
 <translation id="4944310289250773232">ဤအထောက်အထားစိစစ်ခြင်း ဝန်ဆောင်မှုကို <ph name="SAML_DOMAIN" /> က လက်ခံဝန်ဆောင်ပေးထားခြင်းဖြစ်သည်</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{ဖိုင်တစ်ဖိုင်}other{ဖိုင် # ဖိုင်}}</translation>
 <translation id="495170559598752135">လုပ်ဆောင်ချက်များ</translation>
 <translation id="4953808748584563296">မူရင်းလိမ္မော်ရောင်ချန်နယ်ပုံ</translation>
 <translation id="4955710816792587366">သင်၏ ပင်နံပါတ်ကို ရွေးချယ်ခြင်း</translation>
@@ -5074,6 +5077,7 @@
 <translation id="6664237456442406323">သင်၏ ကွန်ပျူတာကို အန္တရာယ်ရှိ ဟာ့ဒ်ဝဲ ID ဖြင့် စီစဉ်ဖွဲ့စည်းထားသည်မှာ ကံဆိုးပါသည်။ ၎င်းက Chrome OS ကို နောက်ဆုံး လုံခြုံရေး ပြင်ဆင်ချက်များဖြင့် မွမ်းမံမှုကို ဟန့်တားနေရာ သင်၏ ကွန်ပျူတာမှာ <ph name="BEGIN_BOLD" />အန္တရာယ် တိုက်ခိုက်မှုများ ခံရမှာ စိုးရိမ်ရပါသည်<ph name="END_BOLD" />။</translation>
 <translation id="6664774537677393800">သင့်ပရိုဖိုင်ကို ဖွင့်နေစဉ်တွင် တစ်စုံတစ်ခု မှားယွင်းသွားပါသည်။ ထွက်ပြီး ပြန်လည်၍ လက်မှတ်ထိုးဝင်ကြည့်ပါ။</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> အသုံးပြုနိုင်ပါပြီ</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{လိပ်စာတစ်ခု}other{လိပ်စာ # ခု}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">စင့်ခ်လုပ်ခြင်းစတင်ရန် သင်၏စကားဝှက်စာ ထည့်ပါ</translation>
 <translation id="6675665718701918026">ညွှန်းပြ ကိရိယာကို ချိတ်ဆက်ထားသည်</translation>
@@ -5770,6 +5774,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">တည်နေရာ ဖွင့်ရန်...</translation>
 <translation id="7457384018036134905">Chrome OS ဆက်တင်များတွင် ဘာသာစကားများကို စီမံရန်</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{လင့်ခ်တစ်ခု}other{လင့်ခ် # ခု}}</translation>
 <translation id="7458168200501453431">Google search တွင်အသုံးပြုသည့် စာလုံးပေါင်းစစ်စနစ် တစ်ခုတည်းကို အသုံးပြုသည်။ ဘရောင်ဇာတွင် သင်ရိုက်သည့် စာသားကို Google သို့ပို့ပါသည်။</translation>
 <translation id="7460045493116006516">သင်လက်ရှိထည့်သွင်းထားသည့် အပြင်အဆင်</translation>
 <translation id="7461924472993315131">ပင်နံပါတ်</translation>
@@ -6170,6 +6175,7 @@
 <translation id="7883792253546618164">မှာယူမှုကို အချိန်မရွေး ရပ်ဆိုင်းနိုင်သည်။</translation>
 <translation id="788453346724465748">အကောင့်အချက်အလက်ကို ဖွင့်နေသည်...</translation>
 <translation id="7885253890047913815">မကြာသေးခင်က ဦးတည်ရာများ</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{ဖိုင်တစ်ဖိုင်}other{ဖိုင် # ဖိုင်}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">မူပွားယူရန်</translation>
 <translation id="7887864092952184874">ဘလူးတုသ် မောက်စ် ချိတ်တွဲထားပြီ</translation>
@@ -6409,6 +6415,7 @@
 <translation id="8139447493436036221">Google Drive ဖိုင်များ</translation>
 <translation id="8141584439523427891">အရန် ဘရောင်ဇာတွင် ယခုဖွင့်နေသည်</translation>
 <translation id="8141725884565838206">သင့်လျှို့ဝှက်စကားလုံးများကို စီမံမည်</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{ဗီဒီယိုတစ်ကား}other{ဗီဒီယို # ကား}}</translation>
 <translation id="8143442547342702591">မမှန်ကန်သည့် အပလီကေးရှင်း</translation>
 <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> ကို ရွေးပါ</translation>
 <translation id="8146177459103116374">သင်သည် ဒီကိရိယာမှာ မှတ်ပုံတင်ပြီး ဖြစ်လျှင်၊ သင်သည် <ph name="LINK2_START" />ရှိနေဆဲ အသုံးပြုသူ အဖြစ် လက်မှတ်ထိုး ဝင်နိုင်သည်<ph name="LINK2_END" />။</translation>
@@ -6428,6 +6435,7 @@
 <translation id="8161293209665121583">အင်တာနက်စာမျက်နှာများအတွက် ဖတ်ရှုစနစ်မုဒ်</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{တဘ်ကို ဝင်းဒိုးအသစ်သို့ ရွှေ့ခြင်း}other{တဘ်များကို ဝင်းဒိုးအသစ်သို့ ရွှေ့ခြင်း}}</translation>
 <translation id="8165997195302308593">Crostini ပို့တ် ထပ်ဆင့်ပို့ခြင်း</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{ဖုန်းနံပါတ်တစ်ခု}other{ဖုန်းနံပါတ် # ခု}}</translation>
 <translation id="8168435359814927499">ပါဝင်သောအကြောင်းအရာ</translation>
 <translation id="8168943654413034772">'ရွေးရန်' အတွက် သတ်မှတ်ထားသည့် တစ်ခုတည်းသောခလုတ်ကို ဖယ်ရှား၍မရပါ။ ထွက်ရန် ကီးတစ်ခုခုကို နှိပ်ပါ။</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{တဘ်ကို ဖတ်ရန်စာရင်းသို့ထည့်ရန်}other{တဘ်များကို ဖတ်ရန်စာရင်းသို့ထည့်ရန်}}</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb
index 4ef528b..67088c1 100644
--- a/chrome/app/resources/generated_resources_ne.xtb
+++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -749,6 +749,7 @@
 <translation id="1794791083288629568">हामीलाई यस समस्याको समाधान गर्नमा मद्दत गर्न प्रतिक्रिया पठाउनुहोस्।</translation>
 <translation id="1795214765651529549">क्लासिक प्रयोग गर्नुहोस्</translation>
 <translation id="1799071797295057738">विस्तार "<ph name="EXTENSION_NAME" />" लाई स्वत: असक्षम गरियो।</translation>
+<translation id="1800973090344019061">"<ph name="APP_NAME" />" नामक एक्स्टेन्सन तपाईंको स्क्रिनमा देखिएका सामग्री सेयर गर्न चाहन्छ।</translation>
 <translation id="1802624026913571222">कभर बन्द गरिएको बेला शयन अवस्थामा लानुहोस्</translation>
 <translation id="1802687198411089702">उक्त पृष्ठ चलिरहेको छैन। तपाईं प्रतीक्षा गर्न वा पृष्ठबाट बाहिरिन सक्नुहुन्छ।</translation>
 <translation id="1803531841600994172">अनुवाद गरिनु पर्ने भाषा</translation>
@@ -1347,6 +1348,7 @@
 <translation id="2464089476039395325">HTTP को प्रोक्सी</translation>
 <translation id="2465237718053447668"><ph name="DOMAIN" /> का अनुसार तपाईंले अहिले नै Wi-Fi मा जोडिएर एउटा अद्यावधिक डाउनलोड गर्नु पर्ने हुन्छ। अथवा, डेटाको सीमा भएको इन्टरनेटबाट डाउनलोड गर्नुहोस् (तोकिएको शुल्क लाग्न सक्छ)।</translation>
 <translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> नेटवर्क, निष्क्रिय छ</translation>
+<translation id="2467755475704469005">कुनै डिभाइस भेट्टिएन। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation>
 <translation id="2468178265280335214">टचप्याड स्क्रोल हुने गति बढाउने कार्य</translation>
 <translation id="2468205691404969808">तपाईं ती पृष्ठहरूमा नजानुभए तापनि तपाईंका प्राथमिकताहरू सम्झनका लागि कुकीहरूको प्रयोग गर्छ</translation>
 <translation id="2468402215065996499">तामागोची</translation>
@@ -2377,6 +2379,7 @@
 <translation id="3608576286259426129">प्रयोगकर्ता छवि पूर्वावलोकन</translation>
 <translation id="3610369246614755442">डकको पङ्खा मर्मत गर्न आवश्यक छ</translation>
 <translation id="361106536627977100">फ्ल्यास डाटा</translation>
+<translation id="3611655097742243705">थप एपहरू डाउनलोड गर्न Play स्टोरमा जानुहोस्</translation>
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; द्वारा डाउनलोड गरियो</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> देखाउनुहोस्</translation>
 <translation id="3613422051106148727">नयाँ ट्याबमा &amp;खोल्नुहोस्</translation>
@@ -2710,6 +2713,7 @@
 <translation id="3943494825379372497">एप र पेजहरू रिस्टोर गर्ने हो?</translation>
 <translation id="3943582379552582368">&amp;पछाडि</translation>
 <translation id="3943857333388298514">टाँस्नुहोस्</translation>
+<translation id="3945513714196326460">अझ छोटो नाम राखी हेर्नुहोस्</translation>
 <translation id="3948116654032448504">र छविको लागि <ph name="SEARCH_ENGINE" /> खोज्नुहोस्</translation>
 <translation id="3948507072814225786"><ph name="ORIGIN" /> ले निम्न फोल्डरमा रहेका फाइलहरू सम्पादन गर्न सक्छ</translation>
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
@@ -3096,6 +3100,7 @@
 <translation id="4415245286584082850">कुनै पनि यन्त्र फेला परेन। एउटा नयाँ ट्याबमा मद्दत केन्द्रको लेख खोल्नुहोस्।</translation>
 <translation id="4415276339145661267">आफ्नो Google खाताको व्यवस्थापन गर्नुहोस्</translation>
 <translation id="4415748029120993980">SECG अण्डाकार कर्भ secp384r1 (NIST P-521 पनि भनिन्छ)</translation>
+<translation id="4416450511678320850">यो सामग्रीका लागि कुनै पनि एप उपलब्ध छैन</translation>
 <translation id="4416582610654027550">कुनै मान्य URL टाइप गर्नुहोस्</translation>
 <translation id="4419409365248380979"><ph name="HOST" /> लाई सधैँ कुकीहरू सेट गर्ने अनुमति दिनुहोस्</translation>
 <translation id="4421932782753506458">फ्लफी</translation>
@@ -3387,6 +3392,7 @@
 <translation id="473936925429402449">चयन गरियो, <ph name="TOTAL_ELEMENTS" /> वटा थप सामग्रीमध्ये <ph name="CURRENT_ELEMENT" /> औँ सामग्री</translation>
 <translation id="4739639199548674512">टिकटहरू</translation>
 <translation id="4742334355511750246">फोटोहरू देखाउने अनुमति नदिइएका साइटहरू</translation>
+<translation id="4742970037960872810">हाइलाइट हटाउनुहोस्</translation>
 <translation id="4743260470722568160"><ph name="BEGIN_LINK" />एपहरू अद्यावधिक गर्ने तरिका सिक्नुहोस्‌<ph name="END_LINK" /></translation>
 <translation id="4744981231093950366">{NUM_TABS,plural, =1{साइट अनम्युट गर्नुहोस्}other{साइटहरू अनम्युट गर्नुहोस्}}</translation>
 <translation id="4746351372139058112">सन्देशहरू</translation>
@@ -4593,6 +4599,7 @@
 <translation id="6136114942382973861">डाउनलोडहरूको पट्टी बन्द गर्नुहोस्</translation>
 <translation id="6136287496450963112">तपाईंको सुरक्षा साँचो PIN प्रयोग गरी सुरक्षित गरिएको छैन। फिंगरप्रिन्ट व्यवस्थापन गर्न सर्वप्रथम PIN बनाउनुहोस्।</translation>
 <translation id="6138680304137685902">SHA-384 सहितको X9.62 ECDSA हस्ताक्षर</translation>
+<translation id="6138774640412545950">"<ph name="APP_NAME" />" नामक एक्स्टेन्सन तपाईंको स्क्रिनमा देखिएका सामग्री <ph name="TARGET_NAME" /> सँग सेयर गर्न चाहन्छ।</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, नेटवर्क छैन</translation>
 <translation id="6141988275892716286">डाउनलोड गर्ने पुष्टि गर्नुहोस्</translation>
 <translation id="6143186082490678276">मद्दत प्राप्त गर्नुहोस्</translation>
@@ -5380,6 +5387,7 @@
 <translation id="7009709314043432820"><ph name="APP_NAME" /> ले तपाईंको क्यामेरा प्रयोग गरिरहेको छ</translation>
 <translation id="701080569351381435">स्रोत हेर्नुहोस्</translation>
 <translation id="7014174261166285193">स्थापना असफल भयो।</translation>
+<translation id="7014480873681694324">हाइलाइट हटाउनुहोस्</translation>
 <translation id="7017004637493394352">फेरि "Ok Google" भन्नुहोस्</translation>
 <translation id="7017219178341817193">एउटा नयाँ पृष्ठ थप्नुहोस्</translation>
 <translation id="7017354871202642555">विण्डो कायम भएपछि मोड सेट गर्न सकिँदैन।</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index 91c227d..1d22b29 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -1331,6 +1331,7 @@
 <translation id="2440604414813129000">Br&amp;on bekijken</translation>
 <translation id="244231003699905658">Ongeldig adres. Controleer het adres en probeer het opnieuw.</translation>
 <translation id="2442916515643169563">Tekstschaduw</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Hoofddirectory van extensie is vereist.</translation>
 <translation id="2445484935443597917">Een nieuw profiel maken</translation>
 <translation id="2448312741937722512">Type</translation>
@@ -2391,6 +2392,7 @@
 <translation id="3616741288025931835">&amp;Browsegegevens wissen</translation>
 <translation id="3617891479562106823">Achtergronden zijn niet beschikbaar. Probeer het later opnieuw.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{een app}other{# apps}}</translation>
 <translation id="362333465072914957">Wachten tot de certificeringsinstantie (CA) een certificaat uitgeeft</translation>
 <translation id="3624567683873126087">Apparaat ontgrendelen en inloggen op Google-account</translation>
 <translation id="3625481642044239431">Ongeldig bestand geselecteerd. Probeer het opnieuw.</translation>
@@ -2662,6 +2664,7 @@
 <translation id="3895076768659607631">Zoek&amp;machines beheren…</translation>
 <translation id="3895090224522145010">Kerberos-gebruikersnaam</translation>
 <translation id="389521680295183045">Sites kunnen vragen of ze mogen weten wanneer je je apparaat actief gebruikt</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{een afbeelding}other{# afbeeldingen}}</translation>
 <translation id="3898233949376129212">Taal van apparaat</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> wil het volgende: <ph name="FIRST_PERMISSION" /> en <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Toetsenbord selecteren</translation>
@@ -3575,6 +3578,7 @@
 <translation id="4943368462779413526">Amerikaanse voetbal</translation>
 <translation id="4943691134276646401">'<ph name="CHROME_EXTENSION_NAME" />' wil verbinden met een seriële poort</translation>
 <translation id="4944310289250773232">Deze verificatieservice wordt gehost door <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{een bestand}other{# bestanden}}</translation>
 <translation id="495170559598752135">Acties</translation>
 <translation id="4953808748584563296">Standaard oranje avatar</translation>
 <translation id="4955710816792587366">Je pincode kiezen</translation>
@@ -4642,6 +4646,7 @@
 <translation id="6184099524311454384">Tabbladen doorzoeken</translation>
 <translation id="6185132558746749656">Apparaatlocatie</translation>
 <translation id="6186394437969115158">Sites kiezen er vaak voor advertenties te tonen, zodat ze hun content en services gratis kunnen aanbieden. Het is echter bekend dat bepaalde sites opdringerige of misleidende advertenties tonen.</translation>
+<translation id="6195005504600220730">Informatie over je browser, OS en apparaat lezen</translation>
 <translation id="6195693561221576702">Dit apparaat kan niet worden ingesteld in de offline demomodus.</translation>
 <translation id="6195724942939841102">Niet herstellen</translation>
 <translation id="6196640612572343990">Cookies van derden blokkeren</translation>
@@ -5073,6 +5078,7 @@
 <translation id="6664237456442406323">Je computer is geconfigureerd met een hardware-ID met een onjuiste notatie. Dit zorgt ervoor dat Chrome OS niet kan worden bijgewerkt met de nieuwste beveiligingsoplossingen, waardoor je computer <ph name="BEGIN_BOLD" />kwetsbaar kan zijn voor schadelijke aanvallen<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Er is iets misgegaan bij het openen van je profiel. Log uit en log vervolgens weer in.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> is nu beschikbaar</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{een adres}other{# adressen}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Geef je wachtwoordzin op om de synchronisatie te starten</translation>
 <translation id="6675665718701918026">Aanwijsapparaat verbonden</translation>
@@ -5769,6 +5775,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Open locatie...</translation>
 <translation id="7457384018036134905">Talen beheren in de instellingen van Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{een link}other{# links}}</translation>
 <translation id="7458168200501453431">Gebruikt dezelfde spellingcontrole als voor Google Zoeken. In de browser ingevoerde tekst wordt naar Google gestuurd.</translation>
 <translation id="7460045493116006516">Huidig thema dat je hebt geïnstalleerd</translation>
 <translation id="7461924472993315131">Vastzetten</translation>
@@ -6168,6 +6175,7 @@
 <translation id="7883792253546618164">Je kunt je afmelden wanneer je maar wilt.</translation>
 <translation id="788453346724465748">Accountgegevens laden…</translation>
 <translation id="7885253890047913815">Recente bestemmingen</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{een item}other{# items}}</translation>
 <translation id="7886605625338676841">E-simkaart</translation>
 <translation id="7887334752153342268">Dupliceren</translation>
 <translation id="7887864092952184874">Bluetooth-muis gekoppeld</translation>
@@ -6408,6 +6416,7 @@
 <translation id="8139447493436036221">Google Drive-bestanden</translation>
 <translation id="8141584439523427891">Wordt nu geopend in een alternatieve browser</translation>
 <translation id="8141725884565838206">Je wachtwoorden beheren</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{een video}other{# video's}}</translation>
 <translation id="8143442547342702591">Ongeldige app</translation>
 <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> selecteren</translation>
 <translation id="8146177459103116374">Als je al bent geregistreerd op dit apparaat, kun je <ph name="LINK2_START" />inloggen als een bestaande gebruiker<ph name="LINK2_END" />.</translation>
@@ -6427,6 +6436,7 @@
 <translation id="8161293209665121583">Lezermodus voor webpagina's</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Tabblad verplaatsen naar nieuw venster}other{Tabbladen verplaatsen naar nieuw venster}}</translation>
 <translation id="8165997195302308593">Poortdoorschakeling voor Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{een telefoonnummer}other{# telefoonnummers}}</translation>
 <translation id="8168435359814927499">Content</translation>
 <translation id="8168943654413034772">Kan niet de enige schakelaar verwijderen die is toegewezen aan de actie Selecteren. Druk op een toets om af te sluiten.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Tabblad toevoegen aan leeslijst}other{Tabbladen toevoegen aan leeslijst}}</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 06c2489..f2f5503a 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -2390,6 +2390,7 @@
 <translation id="3616741288025931835">&amp;Fjern nettlesingsdata</translation>
 <translation id="3617891479562106823">Bakgrunner er utilgjengelig. Prøv på nytt senere.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{en app}other{# apper}}</translation>
 <translation id="362333465072914957">Venter på at sertifiseringsinstansen skal utstede et sertifikat</translation>
 <translation id="3624567683873126087">Lås opp enheten og logg på Google-kontoen din</translation>
 <translation id="3625481642044239431">En ugyldig fil er valgt. Prøv på nytt.</translation>
@@ -2661,6 +2662,7 @@
 <translation id="3895076768659607631">Ad&amp;ministrer søkemotorer</translation>
 <translation id="3895090224522145010">Kerberos-brukernavn</translation>
 <translation id="389521680295183045">Nettsteder kan be om å få vite når du bruker enheten aktivt</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{et bilde}other{# bilder}}</translation>
 <translation id="3898233949376129212">Enhetsspråk</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> vil <ph name="FIRST_PERMISSION" /> og <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Velg tastatur</translation>
@@ -3572,6 +3574,7 @@
 <translation id="4943368462779413526">Fotball</translation>
 <translation id="4943691134276646401">«<ph name="CHROME_EXTENSION_NAME" />» vil koble til en seriell port</translation>
 <translation id="4944310289250773232">Verten for denne autentiseringstjenesten er <ph name="SAML_DOMAIN" />.</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{en fil}other{# filer}}</translation>
 <translation id="495170559598752135">Handlinger</translation>
 <translation id="4953808748584563296">Oransje standardbrukerbilde</translation>
 <translation id="4955710816792587366">Velg PIN-koden din</translation>
@@ -5071,6 +5074,7 @@
 <translation id="6664237456442406323">Dessverre er datamaskinen konfigurert med en feilformatert maskinvare-ID. Dette hindrer Chrome OS fra å oppdatere til de siste sikkerhetsoppdateringene, og datamaskinen din <ph name="BEGIN_BOLD" />kan utsettes for skadelige angrep<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Det oppsto en feil ved åpning av profilen din. Logg av og på igjen.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> er tilgjengelig nå</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{en adresse}other{# adresser}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">For å starte synkroniseringen, skriv inn passordfrasen din</translation>
 <translation id="6675665718701918026">En pekeenhet er koblet til</translation>
@@ -5767,6 +5771,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Åpne sted</translation>
 <translation id="7457384018036134905">Administrer språk i innstillingene for Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{en link}other{# linker}}</translation>
 <translation id="7458168200501453431">Bruker samme stavekontroll som i Google Søk. Tekst du skriver inn i nettleseren, sendes til Google.</translation>
 <translation id="7460045493116006516">Tema som er installert akkurat nå</translation>
 <translation id="7461924472993315131">Fest</translation>
@@ -6167,6 +6172,7 @@
 <translation id="7883792253546618164">Du kan avslutte abonnementet når som helst.</translation>
 <translation id="788453346724465748">Laster inn kontoinformasjon …</translation>
 <translation id="7885253890047913815">Nylige destinasjoner</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{et element}other{# elementer}}</translation>
 <translation id="7886605625338676841">e-SIM-kort</translation>
 <translation id="7887334752153342268">Dupliser</translation>
 <translation id="7887864092952184874">En Bluetooth-mus er tilkoblet</translation>
@@ -6407,6 +6413,7 @@
 <translation id="8139447493436036221">Google Disk-filer</translation>
 <translation id="8141584439523427891">Åpnes i alternativ nettleser nå</translation>
 <translation id="8141725884565838206">Administrer passordene dine</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{en video}other{# videoer}}</translation>
 <translation id="8143442547342702591">Ugyldig app</translation>
 <translation id="8143951647992294073">Velg <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Hvis du allerede er registrert på denne enheten, kan du <ph name="LINK2_START" />logge deg på som en eksisterende bruker<ph name="LINK2_END" />.</translation>
@@ -6426,6 +6433,7 @@
 <translation id="8161293209665121583">Lesermodus for nettsider</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Flytt fanen til et nytt vindu}other{Flytt fanene til et nytt vindu}}</translation>
 <translation id="8165997195302308593">Viderekobling av porter for Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{et telefonnummer}other{# telefonnumre}}</translation>
 <translation id="8168435359814927499">Innhold</translation>
 <translation id="8168943654413034772">Kan ikke fjerne den eneste bryteren som er tilordnet Velg. Trykk på en tast for å avslutte.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Legg fanen til på leselisten}other{Legg fanene til på leselisten}}</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb
index 70f9b3e..df37c3d 100644
--- a/chrome/app/resources/generated_resources_pa.xtb
+++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -1331,6 +1331,7 @@
 <translation id="2440604414813129000">ਸ&amp;ਰੋਤ ਦੇਖੋ</translation>
 <translation id="244231003699905658">ਅਵੈਧ ਪਤਾ। ਕਿਰਪਾ ਕਰਕੇ ਪਤੇ ਦੀ ਜਾਂਚ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation>
 <translation id="2442916515643169563">ਲਿਖਤ ਸ਼ੈਡੋ</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">ਐਕਸਟੈਂਸ਼ਨ ਰੂਟ ਡਾਇਰੈਕਟਰੀ ਲੋੜੀਂਦੀ ਹੈ।</translation>
 <translation id="2445484935443597917">ਇੱਕ ਨਵਾਂ ਪ੍ਰੋਫਾਈਲ ਬਣਾਓ</translation>
 <translation id="2448312741937722512">ਟਾਈਪ ਕਰੋ</translation>
@@ -2391,6 +2392,7 @@
 <translation id="3616741288025931835">&amp;ਬ੍ਰਾਊਜ਼ਿੰਗ ਡਾਟਾ ਹਟਾਓ...</translation>
 <translation id="3617891479562106823">ਬੈਕਗ੍ਰਾਊਂਡਾਂ ਉਪਲਬਧ ਨਹੀਂ ਹਨ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation>
 <translation id="3619115746895587757">ਕੈਪੁਚੀਨੋ</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{ਇੱਕ ਐਪ}one{# ਐਪ}other{# ਐਪਾਂ}}</translation>
 <translation id="362333465072914957">CA ਦੇ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਜਾਰੀ ਕਰਨ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ</translation>
 <translation id="3624567683873126087">ਡੀਵਾਈਸ ਅਣਲਾਕ ਕਰਕੇ 'Google ਖਾਤੇ' ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰੋ</translation>
 <translation id="3625481642044239431">ਚੁਣੀ ਗਈ ਫ਼ਾਈਲ ਅਵੈਧ ਹੈ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation>
@@ -2662,6 +2664,7 @@
 <translation id="3895076768659607631">&amp;ਖੋਜ ਇੰਜਣਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ...</translation>
 <translation id="3895090224522145010">Kerberos ਵਰਤੋਂਕਾਰ ਨਾਮ</translation>
 <translation id="389521680295183045">ਸਾਈਟਾਂ ਤੁਹਾਡੇ ਵੱਲੋਂ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੀ ਸਰਗਰਮੀ ਨਾਲ ਕੀਤੀ ਜਾ ਰਹੀ ਵਰਤੋਂ ਬਾਰੇ ਜਾਣਨ ਲਈ ਪੁੱਛ ਸਕਦੀਆਂ ਹਨ</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{ਇੱਕ ਚਿੱਤਰ}one{# ਚਿੱਤਰ}other{# ਚਿੱਤਰ}}</translation>
 <translation id="3898233949376129212">ਡੀਵਾਈਸ ਦੀ ਭਾਸ਼ਾ</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> ਇਹ ਕਰਨਾ ਚਾਹੁੰਦੀ ਹੈ: <ph name="FIRST_PERMISSION" /> ਅਤੇ <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">ਕੀ-ਬੋਰਡ ਚੁਣੋ</translation>
@@ -3575,6 +3578,7 @@
 <translation id="4943368462779413526">ਫੁੱਟਬਾਲ</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ਸੀਰੀਅਲ ਪੋਰਟ ਨਾਲ ਕਨੈਕਟ ਹੋਣਾ ਚਾਹੁੰਦੀ ਹੈ</translation>
 <translation id="4944310289250773232">ਇਹ ਪ੍ਰਮਾਣੀਕਰਨ ਸੇਵਾ <ph name="SAML_DOMAIN" /> ਵੱਲੋਂ ਹੋਸਟ ਕੀਤੀ ਜਾਂਦੀ ਹੈ</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{ਇੱਕ ਫ਼ਾਈਲ}one{# ਫ਼ਾਈਲ}other{# ਫ਼ਾਈਲਾਂ}}</translation>
 <translation id="495170559598752135">ਕਿਰਿਆਵਾਂ</translation>
 <translation id="4953808748584563296">ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸੰਤਰੀ ਅਵਤਾਰ</translation>
 <translation id="4955710816792587366">ਆਪਣਾ ਪਿੰਨ ਚੁਣੋ</translation>
@@ -4642,6 +4646,7 @@
 <translation id="6184099524311454384">ਖੋਜ ਟੈਬਾਂ</translation>
 <translation id="6185132558746749656">ਡੀਵਾਈਸ ਨਿਰਧਾਰਿਤ ਸਥਾਨ</translation>
 <translation id="6186394437969115158">ਸਾਈਟਾਂ ਆਮ ਤੌਰ 'ਤੇ ਵਿਗਿਆਪਨ ਇਸ ਲਈ ਦਿਖਾਉਂਦੀਆਂ ਹਨ ਤਾਂ ਕਿ ਉਹ ਮੁਫ਼ਤ ਵਿੱਚ ਸਮੱਗਰੀ ਜਾਂ ਸੇਵਾਵਾਂ ਮੁਹੱਈਆ ਕਰਵਾ ਸਕਣ। ਪਰ ਕੁਝ ਸਾਈਟਾਂ ਨੂੰ ਦਖਲਅੰਦਾਜ਼ੀ ਅਤੇ ਗੁਮਰਾਹ ਕਰਨ ਵਾਲੇ ਵਿਗਿਆਪਨ ਦਿਖਾਉਣ ਵਾਲੀਆਂ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ।</translation>
+<translation id="6195005504600220730">ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ, OS ਅਤੇ ਡੀਵਾਈਸ ਬਾਰੇ ਜਾਣਕਾਰੀ ਪੜ੍ਹੋ</translation>
 <translation id="6195693561221576702">ਇਹ ਡੀਵਾਈਸ ਆਫ਼ਲਾਈਨ ਡੈਮੋ ਮੋਡ ਵਿੱਚ ਸੈੱਟਅੱਪ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।</translation>
 <translation id="6195724942939841102">ਮੁੜ-ਬਹਾਲ ਨਾ ਕਰੋ</translation>
 <translation id="6196640612572343990">ਤੀਜੀ-ਧਿਰ ਵਾਲੀਆਂ ਕੁੱਕੀਜ਼ ਨੂੰ ਬਲੌਕ ਕਰੋ</translation>
@@ -5073,6 +5078,7 @@
 <translation id="6664237456442406323">ਅਫ਼ਸੋਸ, ਤੁਹਾਡਾ ਕੰਪਿਊਟਰ ਇੱਕ ਨੁਕਸਦਾਰ ਹਾਰਡਵੇਅਰ ਆਈਡੀ ਨਾਲ ਸੰਰੂਪਿਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ Chrome OS ਨੂੰ ਨਵੀਆਂ ਸੁਰੱਖਿਆ ਸੁਧਾਈਆਂ ਨਾਲ ਅੱਪਡੇਟ ਕਰਨ ਤੋਂ ਰੋਕਦਾ ਹੈ ਅਤੇ ਤੁਹਾਡਾ ਕੰਪਿਊਟਰ <ph name="BEGIN_BOLD" />ਖਰਾਬ ਹਮਲਿਆਂ ਲਈ ਕਮਜ਼ੋਰ ਹੋ ਸਕਦਾ ਹੈ<ph name="END_BOLD" />।</translation>
 <translation id="6664774537677393800">ਤੁਹਾਡੇ ਪ੍ਰੋਫ਼ਾਈਲ ਨੂੰ ਖੋਲ੍ਹਣ ਦੌਰਾਨ ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ ਸੀ। ਕਿਰਪਾ ਕਰਕੇ ਸਾਈਨ-ਆਊਟ ਹੋ ਕੇ ਫਿਰ ਦੁਬਾਰਾ ਸਾਈਨ-ਇਨ ਕਰੋ।</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> ਹੁਣ ਉਪਲਬਧ ਹੈ</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{ਇੱਕ ਪਤਾ}one{# ਪਤਾ}other{# ਪਤੇ}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">ਸਮਕਾਲੀਕਰਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ, ਆਪਣਾ ਪਾਸਫਰੇਜ਼ ਦਾਖਲ ਕਰੋ</translation>
 <translation id="6675665718701918026">ਪੁਆਇੰਟਰ ਵਾਲੀ ਡੀਵਾਈਸ ਕੀਤਾ ਗਿਆ</translation>
@@ -5769,6 +5775,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">ਨਿਰਧਾਰਿਤ ਸਥਾਨ ਖੋਲ੍ਹੋ...</translation>
 <translation id="7457384018036134905">Chrome OS ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਭਾਸ਼ਾਵਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{ਇੱਕ ਲਿੰਕ}one{# ਲਿੰਕ}other{# ਲਿੰਕ}}</translation>
 <translation id="7458168200501453431">Google ਖੋਜ ਵੇਲੇ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਸਪੈੱਲ-ਚੈਕਰ ਨੂੰ ਹੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਤੁਹਾਡੇ ਵੱਲੋਂ ਟਾਈਪ ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਲਿਖਤ Google ਨੂੰ ਭੇਜੀ ਜਾਵੇਗੀ।</translation>
 <translation id="7460045493116006516">ਮੌਜੂਦਾ ਥੀਮ ਜੋ ਤੁਸੀਂ ਸਥਾਪਤ ਕੀਤਾ ਹੈ</translation>
 <translation id="7461924472993315131">Pin</translation>
@@ -6168,6 +6175,7 @@
 <translation id="7883792253546618164">ਕਿਸੇ ਵੀ ਵੇਲੇ ਗਾਹਕੀ ਹਟਾਓ।</translation>
 <translation id="788453346724465748">ਖਾਤਾ ਜਾਣਕਾਰੀ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ...</translation>
 <translation id="7885253890047913815">ਹਾਲੀਆ ਨਿਯਤ ਥਾਂਵਾਂ</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{ਇੱਕ ਆਈਟਮ}one{# ਆਈਟਮ}other{# ਆਈਟਮਾਂ}}</translation>
 <translation id="7886605625338676841">ਈ-ਸਿਮ</translation>
 <translation id="7887334752153342268">ਡੁਪਲੀਕੇਟ</translation>
 <translation id="7887864092952184874">ਬਲੂਟੁੱਥ ਮਾਊਸ ਜੋੜਾਬੱਧ ਕੀਤਾ</translation>
@@ -6406,6 +6414,7 @@
 <translation id="8139447493436036221">Google Drive ਫ਼ਾਈਲਾਂ</translation>
 <translation id="8141584439523427891">ਹੁਣ ਵਿਕਲਪਿਕ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ</translation>
 <translation id="8141725884565838206">ਆਪਣੇ ਪਾਸਵਰਡ ਵਿਵਸਥਿਤ ਕਰੋ</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{ਇੱਕ ਵੀਡੀਓ}one{# ਵੀਡੀਓ}other{# ਵੀਡੀਓ}}</translation>
 <translation id="8143442547342702591">ਅਵੈਧ ਐਪਲੀਕੇਸ਼ਨ</translation>
 <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> ਚੁਣੋ</translation>
 <translation id="8146177459103116374">ਜੇਕਰ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਇਸ ਡੀਵਾਈਸ 'ਤੇ ਰਜਿਸਟਰ ਕੀਤਾ ਹੈ, ਤਾਂ ਤੁਸੀਂ <ph name="LINK2_START" />ਇੱਕ ਮੌਜੂਦਾ ਵਰਤੋਂਕਾਰ ਦੇ ਤੌਰ 'ਤੇ ਸਾਈਨ-ਇਨ<ph name="LINK2_END" /> ਕਰ ਸਕਦੇ ਹੋ।</translation>
@@ -6425,6 +6434,7 @@
 <translation id="8161293209665121583">ਵੈੱਬ ਪੰਨਿਆਂ ਲਈ ਰੀਡਰ ਮੋਡ</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{ਟੈਬ ਨੂੰ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਲਿਜਾਓ}one{ਟੈਬ ਨੂੰ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਲਿਜਾਓ}other{ਟੈਬਾਂ ਨੂੰ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਲਿਜਾਓ}}</translation>
 <translation id="8165997195302308593">Crostini ਪੋਰਟ ਫਾਰਵਰਡਿੰਗ</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{ਇੱਕ ਫ਼ੋਨ ਨੰਬਰ}one{# ਫ਼ੋਨ ਨੰਬਰ}other{# ਫ਼ੋਨ ਨੰਬਰ}}</translation>
 <translation id="8168435359814927499">ਸਮੱਗਰੀ</translation>
 <translation id="8168943654413034772">'ਚੁਣੋ' ਲਈ ਜ਼ਿੰਮੇ ਲਗਾਏ ਗਏ ਇੱਕੋ-ਇੱਕ ਸਵਿੱਚ ਨੂੰ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਬਾਹਰ ਜਾਣ ਲਈ ਕਿਸੇ ਵੀ ਕੁੰਜੀ ਨੂੰ ਦਬਾਓ।</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{ਪੜ੍ਹਨ ਸੂਚੀ ਵਿੱਚ ਟੈਬ ਸ਼ਾਮਲ ਕਰੋ}one{ਪੜ੍ਹਨ ਸੂਚੀ ਵਿੱਚ ਟੈਬ ਸ਼ਾਮਲ ਕਰੋ}other{ਪੜ੍ਹਨ ਸੂਚੀ ਵਿੱਚ ਟੈਬਾਂ ਸ਼ਾਮਲ ਕਰੋ}}</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index 5bb8369a..986aac55 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -2390,6 +2390,7 @@
 <translation id="3616741288025931835">&amp;Wyczyść dane przeglądania...</translation>
 <translation id="3617891479562106823">Tła są niedostępne. Spróbuj ponownie później.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{aplikację}few{# aplikacje}many{# aplikacji}other{# aplikacji}}</translation>
 <translation id="362333465072914957">Czekam na wygenerowanie certyfikatu CA</translation>
 <translation id="3624567683873126087">Odblokuj urządzenie i zaloguj się na konto Google</translation>
 <translation id="3625481642044239431">Wybrany plik jest nieprawidłowy. Spróbuj ponownie.</translation>
@@ -2661,6 +2662,7 @@
 <translation id="3895076768659607631">&amp;Zarządzaj wyszukiwarkami…</translation>
 <translation id="3895090224522145010">Nazwa użytkownika Kerberos</translation>
 <translation id="389521680295183045">Witryny mogą prosić o pozwolenie na sprawdzanie, kiedy używasz urządzenia</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{obraz}few{# obrazy}many{# obrazów}other{# obrazu}}</translation>
 <translation id="3898233949376129212">Język urządzenia</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> prosi o uprawnienia: <ph name="FIRST_PERMISSION" /> i <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Wybierz klawiaturę</translation>
@@ -3574,6 +3576,7 @@
 <translation id="4943368462779413526">Piłka futbolowa</translation>
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />” chce się połączyć z portem szeregowym</translation>
 <translation id="4944310289250773232">Ta usługa uwierzytelniania pochodzi z domeny <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{plik}few{# pliki}many{# plików}other{# pliku}}</translation>
 <translation id="495170559598752135">Czynności</translation>
 <translation id="4953808748584563296">Domyślny pomarańczowy awatar</translation>
 <translation id="4955710816792587366">Ustaw kod PIN</translation>
@@ -5073,6 +5076,7 @@
 <translation id="6664237456442406323">Twój komputer jest skonfigurowany przy użyciu błędnie sformatowanego identyfikatora sprzętu. Ta sytuacja uniemożliwia zaktualizowanie systemu operacyjnego Chrome za pomocą najnowszych poprawek zabezpieczeń, a komputer <ph name="BEGIN_BOLD" />może być narażony na złośliwe ataki<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Podczas otwierania Twojego profilu coś poszło nie tak. Wyloguj się i ponownie zaloguj.</translation>
 <translation id="6670142487971298264">Aplikacja <ph name="APP_NAME" /> jest teraz dostępna</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{adres}few{# adresy}many{# adresów}other{# adresu}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Aby rozpocząć synchronizację, wpisz hasło</translation>
 <translation id="6675665718701918026">Podłączono urządzenie wskazujące</translation>
@@ -5769,6 +5773,7 @@
 <translation id="7456142309650173560">deweloperska</translation>
 <translation id="7456847797759667638">Otwórz lokalizację...</translation>
 <translation id="7457384018036134905">Zarządzaj językami w ustawieniach Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{link}few{# linki}many{# linków}other{# linku}}</translation>
 <translation id="7458168200501453431">Korzysta z tego samego mechanizmu sprawdzania pisowni, który jest używany w wyszukiwarce Google. Tekst wpisywany w przeglądarce jest wysyłany do Google.</translation>
 <translation id="7460045493116006516">Zainstalowany motyw</translation>
 <translation id="7461924472993315131">Przypnij</translation>
@@ -6169,6 +6174,7 @@
 <translation id="7883792253546618164">W dowolnej chwili możesz zrezygnować z subskrypcji.</translation>
 <translation id="788453346724465748">Ładuję informacje o koncie…</translation>
 <translation id="7885253890047913815">Ostatnie urządzenia docelowe</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{element}few{# elementy}many{# elementów}other{# elementu}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplikuj</translation>
 <translation id="7887864092952184874">Sparowano mysz Bluetooth</translation>
@@ -6409,6 +6415,7 @@
 <translation id="8139447493436036221">Pliki na Dysku Google</translation>
 <translation id="8141584439523427891">Otwieram teraz w alternatywnej przeglądarce</translation>
 <translation id="8141725884565838206">Zarządzaj hasłami</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{film}few{# filmy}many{# filmów}other{# filmu}}</translation>
 <translation id="8143442547342702591">Nieprawidłowa aplikacja</translation>
 <translation id="8143951647992294073">Wybierz <ph name="TOPIC_SOURCE" /> (<ph name="TOPIC_SOURCE_DESC" />)</translation>
 <translation id="8146177459103116374">Jeśli zarejestrowałeś się już na tym urządzeniu, możesz <ph name="LINK2_START" />zalogować się jako istniejący użytkownik<ph name="LINK2_END" />.</translation>
@@ -6428,6 +6435,7 @@
 <translation id="8161293209665121583">Tryb czytnika stron internetowych</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Przenieś kartę do nowego okna}few{Przenieś karty do nowego okna}many{Przenieś karty do nowego okna}other{Przenieś karty do nowego okna}}</translation>
 <translation id="8165997195302308593">Przekierowanie portów w Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{numer telefonu}few{# numery telefonów}many{# numerów telefonów}other{# numeru telefonu}}</translation>
 <translation id="8168435359814927499">Treść</translation>
 <translation id="8168943654413034772">Nie można usunąć jedynego przełącznika przypisanego do czynności Wybierz. Naciśnij dowolny klawisz, by zakończyć.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Dodaj kartę do listy Do przeczytania}few{Dodaj karty do listy Do przeczytania}many{Dodaj karty do listy Do przeczytania}other{Dodaj karty do listy Do przeczytania}}</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index c549dec..e23a3651 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -2395,6 +2395,7 @@
 <translation id="3616741288025931835">&amp;Limpar dados de navegação...</translation>
 <translation id="3617891479562106823">Os planos de fundo estão indisponíveis. Tente novamente mais tarde.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{um app}one{# app}other{# apps}}</translation>
 <translation id="362333465072914957">Esperando um certificado CA</translation>
 <translation id="3624567683873126087">Desbloquear dispositivo e fazer login na Conta do Google</translation>
 <translation id="3625481642044239431">Arquivo inválido selecionado. Tente novamente.</translation>
@@ -2666,6 +2667,7 @@
 <translation id="3895076768659607631">&amp;Gerenciar mecanismos de pesquisa…</translation>
 <translation id="3895090224522145010">Nome de usuário do Kerberos</translation>
 <translation id="389521680295183045">Os sites podem pedir para saber quando você está usando o dispositivo ativamente</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{uma imagem}one{# imagem}other{# imagens}}</translation>
 <translation id="3898233949376129212">Idioma do dispositivo</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> quer <ph name="FIRST_PERMISSION" /> e <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Selecionar teclado</translation>
@@ -3579,6 +3581,7 @@
 <translation id="4943368462779413526">Futebol americano</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" quer se conectar a uma porta serial</translation>
 <translation id="4944310289250773232">Este serviço de autenticação é hospedado por <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{um arquivo}one{# arquivo}other{# arquivos}}</translation>
 <translation id="495170559598752135">Ações</translation>
 <translation id="4953808748584563296">Avatar laranja padrão</translation>
 <translation id="4955710816792587366">Escolher o PIN</translation>
@@ -5079,6 +5082,7 @@
 <translation id="6664237456442406323">Infelizmente, seu computador está configurado com um ID de hardware mal formado. Isso impede que o Chrome OS seja atualizado com as correções de segurança mais recentes e, por isso, seu computador <ph name="BEGIN_BOLD" />pode ficar vulnerável a ataques maliciosos<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Ocorreu um erro ao abrir seu perfil. Saia da conta e faça login novamente.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> já está disponível</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{um endereço}one{# endereço}other{# endereços}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Para iniciar a sincronização, digite a senha longa</translation>
 <translation id="6675665718701918026">Dispositivo apontador conectado</translation>
@@ -5775,6 +5779,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Abrir local...</translation>
 <translation id="7457384018036134905">Gerenciar idiomas nas configurações do Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{um link}one{# link}other{# links}}</translation>
 <translation id="7458168200501453431">Usa o mesmo corretor ortográfico da Pesquisa Google. O texto que você digita no navegador é enviado para o Google.</translation>
 <translation id="7460045493116006516">Tema instalado atualmente</translation>
 <translation id="7461924472993315131">Fixar</translation>
@@ -6175,6 +6180,7 @@
 <translation id="7883792253546618164">É possível cancelar a inscrição a qualquer momento.</translation>
 <translation id="788453346724465748">Carregando informações da conta…</translation>
 <translation id="7885253890047913815">Destinos recentes</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{um item}one{# item}other{# itens}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplicar</translation>
 <translation id="7887864092952184874">Mouse Bluetooth pareado</translation>
@@ -6415,6 +6421,7 @@
 <translation id="8139447493436036221">Arquivos do Google Drive</translation>
 <translation id="8141584439523427891">Abrindo em navegador alternativo agora</translation>
 <translation id="8141725884565838206">Gerenciar suas senhas</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{um vídeo}one{# vídeo}other{# vídeos}}</translation>
 <translation id="8143442547342702591">Aplicativo inválido</translation>
 <translation id="8143951647992294073">Selecionar <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Se você já se registrou neste dispositivo, pode <ph name="LINK2_START" />fazer login como usuário existente<ph name="LINK2_END" /> .</translation>
@@ -6434,6 +6441,7 @@
 <translation id="8161293209665121583">Modo leitor para páginas da Web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Mover guia para uma nova janela}one{Mover guia para uma nova janela}other{Mover guias para uma nova janela}}</translation>
 <translation id="8165997195302308593">Encaminhamento de portas do Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{um número de telefone}one{# número de telefone}other{# números de telefone}}</translation>
 <translation id="8168435359814927499">Conteúdo</translation>
 <translation id="8168943654413034772">Não é possível remover o único interruptor atribuído à ação "Selecionar". Pressione qualquer tecla para sair.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Adicionar guia à lista de leitura}one{Adicionar guia à lista de leitura}other{Adicionar guias à lista de leitura}}</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index 38b2fde..5f16a5ab 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">&amp;Limpar Dados de Navegação...</translation>
 <translation id="3617891479562106823">Os fundos não estão disponíveis. Tente novamente mais tarde.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{uma app}other{# apps}}</translation>
 <translation id="362333465072914957">A aguardar que a CA emita um certificado</translation>
 <translation id="3624567683873126087">Desbloquear o dispositivo e iniciar sessão na Conta Google</translation>
 <translation id="3625481642044239431">Foi selecionado um ficheiro inválido. Tente novamente.</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;Gerir motores de pesquisa…</translation>
 <translation id="3895090224522145010">Nome de utilizador Kerberos</translation>
 <translation id="389521680295183045">Os sites podem pedir para saber quando está a utilizar ativamente o dispositivo</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{uma imagem}other{# imagens}}</translation>
 <translation id="3898233949376129212">Idioma do dispositivo</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> pretende: <ph name="FIRST_PERMISSION" /> e <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Selecionar teclado</translation>
@@ -3577,6 +3579,7 @@
 <translation id="4943368462779413526">Bola de futebol</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" pretende estabelecer ligação a uma porta de série</translation>
 <translation id="4944310289250773232">Este serviço de autenticação é alojado por <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{um ficheiro}other{# ficheiros}}</translation>
 <translation id="495170559598752135">Ações</translation>
 <translation id="4953808748584563296">Avatar cor de laranja predefinido</translation>
 <translation id="4955710816792587366">Escolher o PIN</translation>
@@ -5077,6 +5080,7 @@
 <translation id="6664237456442406323">Infelizmente, o seu computador está configurado com um ID de hardware formatado incorretamente. Este facto impede que o Chrome OS faça a atualização das últimas correções de segurança e o seu computador <ph name="BEGIN_BOLD" />pode estar vulnerável a ataques maliciosos<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Ocorreu um erro ao abrir o seu perfil. Termine sessão e inicie-a novamente.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> está agora disponível.</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{um endereço}other{# endereços}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Para iniciar a sincronização, introduza a sua frase de acesso</translation>
 <translation id="6675665718701918026">Dispositivo apontador ligado</translation>
@@ -5773,6 +5777,7 @@
 <translation id="7456142309650173560">programador</translation>
 <translation id="7456847797759667638">Abrir localização...</translation>
 <translation id="7457384018036134905">Gerir idiomas nas definições do Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{um link}other{# links}}</translation>
 <translation id="7458168200501453431">Utiliza o mesmo corretor ortográfico que é utilizado na Pesquisa Google. O texto que introduzir no navegador é enviado à Google.</translation>
 <translation id="7460045493116006516">O tema atual que tem instalado.</translation>
 <translation id="7461924472993315131">Fixar</translation>
@@ -6173,6 +6178,7 @@
 <translation id="7883792253546618164">Anule a subscrição em qualquer altura.</translation>
 <translation id="788453346724465748">A carregar informações da conta…</translation>
 <translation id="7885253890047913815">Destinos recentes</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{um item}other{# itens}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplicar</translation>
 <translation id="7887864092952184874">Rato Bluetooth sincronizado</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Ficheiros do Google Drive</translation>
 <translation id="8141584439523427891">A abrir num navegador alternativo agora…</translation>
 <translation id="8141725884565838206">Gerir as palavras-passe</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{um vídeo}other{# vídeos}}</translation>
 <translation id="8143442547342702591">Aplicação inválida</translation>
 <translation id="8143951647992294073">Selecionar <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Se já estiver registado neste aparelho, pode <ph name="LINK2_START" />iniciar sessão como um utilizador existente<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Modo de leitor para páginas Web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Mover separador para nova janela}other{Mover separadores para nova janela}}</translation>
 <translation id="8165997195302308593">Encaminhamento de porta do Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{um número de telefone}other{# números de telefone}}</translation>
 <translation id="8168435359814927499">Conteúdo</translation>
 <translation id="8168943654413034772">Não é possível remover o único comutador atribuído a Selecionar. Prima qualquer tecla para sair.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Adicionar separador à lista de leitura}other{Adicionar separadores à lista de leitura}}</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index 001b4bee..ed5c6b18 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -2394,6 +2394,7 @@
 <translation id="3616741288025931835">&amp;Șterge datele de navigare...</translation>
 <translation id="3617891479562106823">Fundalurile nu sunt disponibile. Încearcă din nou mai târziu.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{o aplicație}few{# aplicații}other{# de aplicații}}</translation>
 <translation id="362333465072914957">Se așteaptă emiterea unui certificat de către CA</translation>
 <translation id="3624567683873126087">Deblochează dispozitivul și conectează-te la Contul Google</translation>
 <translation id="3625481642044239431">A fost selectat un fișier nevalid. Încearcă din nou.</translation>
@@ -2665,6 +2666,7 @@
 <translation id="3895076768659607631">&amp;Gestionează motoarele de căutare...</translation>
 <translation id="3895090224522145010">Numele de utilizator Kerberos</translation>
 <translation id="389521680295183045">Site-urile pot solicita permisiunea de a afla când folosești activ dispozitivul</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{o imagine}few{# imagini}other{# de imagini}}</translation>
 <translation id="3898233949376129212">Limba dispozitivului</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> dorește să <ph name="FIRST_PERMISSION" /> și să <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Selectează tastatura</translation>
@@ -3578,6 +3580,7 @@
 <translation id="4943368462779413526">Minge de fotbal</translation>
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />” dorește să se conecteze la un port serial</translation>
 <translation id="4944310289250773232">Acest serviciu de autentificare este găzduit de <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{un fișier}few{# fișiere}other{# de fișiere}}</translation>
 <translation id="495170559598752135">Acțiuni</translation>
 <translation id="4953808748584563296">Avatar portocaliu prestabilit</translation>
 <translation id="4955710816792587366">Alege codul PIN</translation>
@@ -5077,6 +5080,7 @@
 <translation id="6664237456442406323">Din păcate, computerul dvs. este configurat cu un ID de hardware incorect. Acest lucru împiedică actualizarea sistemului de operare Chrome cu cele mai recente remedieri de securitate. În plus, computerul <ph name="BEGIN_BOLD" />ar putea fi vulnerabil la atacuri ale site-urilor web rău intenționate<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">A apărut o eroare la deschiderea profilului. Deconectează-te și conectează-te din nou.</translation>
 <translation id="6670142487971298264">Aplicația <ph name="APP_NAME" /> este acum disponibilă</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{o adresă}few{# adrese}other{# de adrese}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Pentru a porni sincronizarea, introdu expresia de acces</translation>
 <translation id="6675665718701918026">Dispozitivul de indicat este conectat</translation>
@@ -5773,6 +5777,7 @@
 <translation id="7456142309650173560">dezvoltatori</translation>
 <translation id="7456847797759667638">Deschide o locație...</translation>
 <translation id="7457384018036134905">Gestionează limbile în setările sistemului de operare Chrome</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{un link}few{# linkuri}other{# de linkuri}}</translation>
 <translation id="7458168200501453431">Folosește același verificator ortografic folosit în Căutarea Google. Textul pe care îl introduci în browser este trimis la Google.</translation>
 <translation id="7460045493116006516">Tema actuală pe care ai instalat-o</translation>
 <translation id="7461924472993315131">Fixează</translation>
@@ -6173,6 +6178,7 @@
 <translation id="7883792253546618164">Te poți dezabona în orice moment.</translation>
 <translation id="788453346724465748">Se încarcă informațiile despre cont…</translation>
 <translation id="7885253890047913815">Destinații recente</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{un element}few{# elemente}other{# de elemente}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Dublură</translation>
 <translation id="7887864092952184874">Mouse Bluetooth conectat</translation>
@@ -6413,6 +6419,7 @@
 <translation id="8139447493436036221">Fișiere Google Drive</translation>
 <translation id="8141584439523427891">Se deschide acum în browserul secundar</translation>
 <translation id="8141725884565838206">Gestionați parolele</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{un videoclip}few{# videoclipuri}other{# de videoclipuri}}</translation>
 <translation id="8143442547342702591">Aplicație nevalidă</translation>
 <translation id="8143951647992294073">Selectează <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Dacă v-ați înregistrat deja pe acest dispozitiv, puteți să vă <ph name="LINK2_START" />conectați ca utilizator existent<ph name="LINK2_END" />.</translation>
@@ -6432,6 +6439,7 @@
 <translation id="8161293209665121583">Modul Cititor pentru pagini web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Mută fila în fereastră nouă}few{Mută filele în fereastră nouă}other{Mută filele în fereastră nouă}}</translation>
 <translation id="8165997195302308593">Redirecționarea de port în Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{un număr de telefon}few{# numere de telefon}other{# de numere de telefon}}</translation>
 <translation id="8168435359814927499">Conținut</translation>
 <translation id="8168943654413034772">Nu se poate elimina singura tastă de comutare atribuită acțiunii Selectează. Apasă pe orice tastă pentru a ieși.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Adaugă fila în lista de lectură}few{Adaugă filele în lista de lectură}other{Adaugă filele în lista de lectură}}</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index 5a31d14..870c961 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -1332,6 +1332,7 @@
 <translation id="2440604414813129000">Просмотреть и&amp;сходный код</translation>
 <translation id="244231003699905658">Недопустимый адрес. Проверьте его и повторите попытку.</translation>
 <translation id="2442916515643169563">Тень текста</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Требуется корневой каталог расширения.</translation>
 <translation id="2445484935443597917">Создать профиль</translation>
 <translation id="2448312741937722512">Тип</translation>
@@ -1959,7 +1960,7 @@
 <translation id="3118319026408854581">Справка <ph name="PRODUCT_NAME" /></translation>
 <translation id="3118654181216384296">Попробуйте запустить Linux снова через несколько секунд.</translation>
 <translation id="3120430004221004537">Неполное шифрование операции на устройстве <ph name="DEVICE_NAME" />.</translation>
-<translation id="3122464029669770682">ЦПУ</translation>
+<translation id="3122464029669770682">Процессор</translation>
 <translation id="3122496702278727796">Не удалось создать каталог данных</translation>
 <translation id="3124111068741548686">USER-дескрипторы</translation>
 <translation id="3126026824346185272">Ctrl</translation>
@@ -2392,6 +2393,7 @@
 <translation id="3616741288025931835">Очистить данные просмотров...</translation>
 <translation id="3617891479562106823">Фоновые изображения недоступны. Повторите попытку позже.</translation>
 <translation id="3619115746895587757">Капучино</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{приложение}one{# приложение}few{# приложения}many{# приложений}other{# приложения}}</translation>
 <translation id="362333465072914957">Ожидание выдачи сертификата центром сертификации</translation>
 <translation id="3624567683873126087">Снимать блокировку устройства и входить в аккаунт Google</translation>
 <translation id="3625481642044239431">Выбран недопустимый файл. Повторите попытку.</translation>
@@ -2663,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;Управление поисковыми системами…</translation>
 <translation id="3895090224522145010">Имя пользователя Kerberos</translation>
 <translation id="389521680295183045">Разрешить сайтам запрашивать информацию об использовании устройства</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{изображение}one{# изображение}few{# изображения}many{# изображений}other{# изображения}}</translation>
 <translation id="3898233949376129212">Язык устройства</translation>
 <translation id="3898327728850887246">Сайт <ph name="SITE_NAME" /> запрашивает следующие разрешения: <ph name="FIRST_PERMISSION" /> и <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Выберите раскладку клавиатуры</translation>
@@ -3576,6 +3579,7 @@
 <translation id="4943368462779413526">Футбол</translation>
 <translation id="4943691134276646401">Расширение "<ph name="CHROME_EXTENSION_NAME" />" запрашивает разрешение подключиться к последовательному порту</translation>
 <translation id="4944310289250773232">Сервис аутентификации размещен в домене <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{файл}one{# файл}few{# файла}many{# файлов}other{# файла}}</translation>
 <translation id="495170559598752135">Действия</translation>
 <translation id="4953808748584563296">Аватар по умолчанию (оранжевый)</translation>
 <translation id="4955710816792587366">Установите PIN-код</translation>
@@ -4643,6 +4647,7 @@
 <translation id="6184099524311454384">Поиск по вкладкам</translation>
 <translation id="6185132558746749656">Местоположение устройства</translation>
 <translation id="6186394437969115158">Обычно сайты показывают рекламу, чтобы зарабатывать на ней и иметь возможность бесплатно предоставлять свой контент или сервисы. Однако на некоторых страницах используется навязчивая или вводящая в заблуждение реклама.</translation>
+<translation id="6195005504600220730">Доступ к информации о вашем браузере, ОС и устройстве</translation>
 <translation id="6195693561221576702">Демонстрационный офлайн-режим на этом устройстве недоступен.</translation>
 <translation id="6195724942939841102">Не восстанавливать</translation>
 <translation id="6196640612572343990">Блокировать сторонние файлы cookie</translation>
@@ -4675,7 +4680,7 @@
 <translation id="6229849828796482487">Отключить сеть Wi-Fi</translation>
 <translation id="6231782223312638214">Рекомендуется</translation>
 <translation id="6231881193380278751">Добавьте в URL параметр запроса для автоматического обновления страницы: chrome://device-log/?refresh=&lt;sec&gt;</translation>
-<translation id="6232017090690406397">Аккумулятор</translation>
+<translation id="6232017090690406397">Батарея</translation>
 <translation id="6232116551750539448">Соединение с <ph name="NAME" /> прервано</translation>
 <translation id="6233154960150021497">Использовать голос вместо клавиатуры по умолчанию</translation>
 <translation id="6234108445915742946">Условия использования Chrome будут обновлены 31 марта</translation>
@@ -5074,6 +5079,7 @@
 <translation id="6664237456442406323">К сожалению, в настройках компьютера указан недействительный аппаратный код. Chrome OS не сможет устанавливать обновления для системы безопасности, и ваш компьютер <ph name="BEGIN_BOLD" />может подвергаться атакам вредоносных сайтов<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Не удалось открыть профиль. Попробуйте выйти из аккаунта и войти снова.</translation>
 <translation id="6670142487971298264">Срок блокировки приложения "<ph name="APP_NAME" />" истек.</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{адрес}one{# адрес}few{# адреса}many{# адресов}other{# адреса}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Чтобы начать синхронизацию, введите кодовую фразу.</translation>
 <translation id="6675665718701918026">Подключено дополнительное устройство</translation>
@@ -5770,6 +5776,7 @@
 <translation id="7456142309650173560">для разработчиков</translation>
 <translation id="7456847797759667638">Открыть адрес...</translation>
 <translation id="7457384018036134905">Управление языковыми параметрами в настройках Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{ссылка}one{# ссылка}few{# ссылки}many{# ссылок}other{# ссылки}}</translation>
 <translation id="7458168200501453431">Используется та же технология проверки правописания, что и в Google Поиске. Текст, который вы введете в браузере, будет отправлен в Google.</translation>
 <translation id="7460045493116006516">Тема, которая у вас установлена</translation>
 <translation id="7461924472993315131">Закрепить</translation>
@@ -6170,6 +6177,7 @@
 <translation id="7883792253546618164">Отказаться от рассылки можно в любой момент.</translation>
 <translation id="788453346724465748">Загрузка данных аккаунта…</translation>
 <translation id="7885253890047913815">Недавние места назначения</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{объект}one{# объект}few{# объекта}many{# объектов}other{# объекта}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Дублировать</translation>
 <translation id="7887864092952184874">Bluetooth-мышь подключена</translation>
@@ -6409,6 +6417,7 @@
 <translation id="8139447493436036221">Файлы на Google Диске</translation>
 <translation id="8141584439523427891">Запуск альтернативного браузера…</translation>
 <translation id="8141725884565838206">Управление паролями</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{видео}one{# видео}few{# видео}many{# видео}other{# видео}}</translation>
 <translation id="8143442547342702591">Недействительное приложение</translation>
 <translation id="8143951647992294073">Выбрать вариант "<ph name="TOPIC_SOURCE" />" (<ph name="TOPIC_SOURCE_DESC" />)</translation>
 <translation id="8146177459103116374">Вы уже зарегистрированы на этом устройстве и можете <ph name="LINK2_START" />войти, используя свои регистрационные данные<ph name="LINK2_END" />.</translation>
@@ -6428,6 +6437,7 @@
 <translation id="8161293209665121583">Режим чтения веб-страниц</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Открыть вкладку в новом окне}one{Открыть вкладки в новом окне}few{Открыть вкладки в новом окне}many{Открыть вкладки в новом окне}other{Открыть вкладки в новом окне}}</translation>
 <translation id="8165997195302308593">Переадресация портов в Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{номер телефона}one{# номер телефона}few{# номера телефонов}many{# номеров телефонов}other{# номера телефона}}</translation>
 <translation id="8168435359814927499">Контент</translation>
 <translation id="8168943654413034772">Нельзя снять назначение единственного переключателя, связанного с действием "Выбрать". Нажмите любую клавишу, чтобы выйти.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Добавить вкладку в список для чтения}one{Добавить вкладки в список для чтения}few{Добавить вкладки в список для чтения}many{Добавить вкладки в список для чтения}other{Добавить вкладки в список для чтения}}</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb
index e42e7ea..58c4e67 100644
--- a/chrome/app/resources/generated_resources_si.xtb
+++ b/chrome/app/resources/generated_resources_si.xtb
@@ -2390,6 +2390,7 @@
 <translation id="3616741288025931835">ශවේෂණ දත්ත හිස් කරන්න</translation>
 <translation id="3617891479562106823">පසුබිම් නොතිබේ. පසුව නැවත උත්සාහ කරන්න.</translation>
 <translation id="3619115746895587757">කපුචිනෝ</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{යෙදුමක්}one{යෙදුම් #}other{යෙදුම් #}}</translation>
 <translation id="362333465072914957">CA විසින් සහතිකයක් නිකුත් වීම බලාපොරොත්තු වේ</translation>
 <translation id="3624567683873126087">උපාංගය අගුලු හැර Google ගිණුමට පුරන්න</translation>
 <translation id="3625481642044239431">වලංගු නොවන ගොනුවක් තෝරා ඇත. නැවත උත්සාහ කරන්න.</translation>
@@ -2662,6 +2663,7 @@
 <translation id="3895076768659607631">&amp;සෙවීම් එන්ජින් කළමනාකරණය කරන්න...</translation>
 <translation id="3895090224522145010">Kerberos පරිශීලක නාමය</translation>
 <translation id="389521680295183045">ඔබ ඔබගේ උපාංගය සක්‍රියව භාවිත කරන විට දැන ගැනීමට අඩවි ඉල්ලිය හැකිය</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{රූපයක්}one{රූප #}other{රූප #}}</translation>
 <translation id="3898233949376129212">උපාංග භාෂාව</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> හට අවශ්‍යයි: <ph name="FIRST_PERMISSION" /> සහ <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">යතුරු පුවරුව තෝරන්න</translation>
@@ -3575,6 +3577,7 @@
 <translation id="4943368462779413526">පාපන්දු</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" හට අනුක්‍රම තොටකට සම්බන්ධ වීමට අවශ්‍යයි</translation>
 <translation id="4944310289250773232">මෙම සත්‍යාපන සේවය ධාරන කෙරෙන්නේ <ph name="SAML_DOMAIN" /> විසිනි</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{ගොනුවක්}one{ගොනු #}other{ගොනු #}}</translation>
 <translation id="495170559598752135">ක්‍රියාමාර්ග</translation>
 <translation id="4953808748584563296">පෙරනිමි තැඹිලි නියුරුව</translation>
 <translation id="4955710816792587366">ඔබගේ PIN තෝරන්න</translation>
@@ -5073,6 +5076,7 @@
 <translation id="6664237456442406323">අවාසනාවකට මෙන්, ඔබේ පරිගණකය විකෘති වූ දෘඪාංග ID එකකින් වින්‍යාසගත කර තිබේ. මෙමගින් Chrome OS fනවතම ආරක්ෂණ විසඳුම් මගින් යාවත්කාල වීම වැළකෙන අතර ඔබේ පරිගණකය <ph name="BEGIN_BOLD" />හානිකර ප්‍රහාරවලට ලක් වීමට ඉඩ තිබේ<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">ඔබේ පැතිකඩ විවෘත කරන විට යම් දෙයක් වැරදිණි. වරනය වී නැවත පුරන්න.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> දැන් ලැබේ</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{ලිපිනයක්}one{ලිපින #}other{ලිපින #}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">සමමුහුර්ත කිරීම ආරම්භ කිරීමට, ඔබගේ මුර-වැකිකඩ ඇතුළත් කරන්න</translation>
 <translation id="6675665718701918026">දර්ශක උපාංගය සම්බන්ධ කරන ලදී</translation>
@@ -5769,6 +5773,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">ස්ථානය විවෘත කරන්න ...</translation>
 <translation id="7457384018036134905">Chrome OS සැකසීම් තුළ භාෂා කළමනාකරණය කරන්න</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{සබැඳියක්}one{සබැඳි #}other{සබැඳි #}}</translation>
 <translation id="7458168200501453431">Google සෙවුමේ භාවිත නොවන අක්‍ෂර පරීක්‍ෂකයම භාවිත කරයි. ඔබ බ්‍රවුසරය තුළ ටයිප් කර පාඨය Google වෙත යවනු ලැබේ.</translation>
 <translation id="7460045493116006516">ඔබ ස්ථාපන කර ඇති වත්මන් තේමාව</translation>
 <translation id="7461924472993315131">පින්</translation>
@@ -6168,6 +6173,7 @@
 <translation id="7883792253546618164">ඕනෑම වේලාවකදී දායකත්වයෙන් ඉවත් වන්න.</translation>
 <translation id="788453346724465748">ගිණුම් තොරතුරු පූරණය කරමින්...</translation>
 <translation id="7885253890047913815">මෑත ගමනාන්ත</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{අයිතමයක්}one{අයිතම #}other{අයිතම #}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">ද්විතීයකරණය</translation>
 <translation id="7887864092952184874">Bluetooth මවුසය යුගල කරන ලදි</translation>
@@ -6407,6 +6413,7 @@
 <translation id="8139447493436036221">Google Drive ගොනු</translation>
 <translation id="8141584439523427891">දැන් වෛකල්පික බ්‍රවුසරයේ විවෘත කෙරේ</translation>
 <translation id="8141725884565838206">ඔබේ මුරපද කළමණාකරණය</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{වීඩියෝවක්}one{වීඩියෝ #}other{වීඩියෝ #}}</translation>
 <translation id="8143442547342702591">අවලංගු යෙදුමකි</translation>
 <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> තෝරන්න</translation>
 <translation id="8146177459103116374">නොබ දැනටමත් මෙම උපාංගය මත ලියාපදිංචිව ඇත, ඔබට <ph name="LINK2_START" />පවතින පරිශීලකයකු ලෙස පිවිසිය හැක<ph name="LINK2_END" />.</translation>
@@ -6426,6 +6433,7 @@
 <translation id="8161293209665121583">වෙබ් පිටු සඳහා පාඨක ප්‍රකාරය</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{පටිත්ත නව කවුළුවට ගෙන යන්න}one{පටිති නව කවුළුවට ගෙන යන්න}other{පටිති නව කවුළුවට ගෙන යන්න}}</translation>
 <translation id="8165997195302308593">Crostini තොට යොමු කිරීම</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{දුරකථන අංකයක්}one{දුරකථන අංක #}other{දුරකථන අංක #}}</translation>
 <translation id="8168435359814927499">අන්තර්ගතය</translation>
 <translation id="8168943654413034772">තෝරන්න සඳහා පවරා ඇති එකම ස්විචය ඉවත් කිරීමට නොහැකිය. පිටවීමට ඕනෑම යතුරක් ඔබන්න.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{කියවීම් ලැයිස්තුවට ටැබය එක් කරන්න}one{කියවීම් ලැයිස්තුවට ටැබ එක් කරන්න}other{කියවීම් ලැයිස්තුවට ටැබ එක් කරන්න}}</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 7a174939..3a7814e 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -2394,6 +2394,7 @@
 <translation id="3616741288025931835">&amp;Vymazať dáta prehliadania…</translation>
 <translation id="3617891479562106823">Pozadia nie sú k dispozícii. Skúste to neskôr.</translation>
 <translation id="3619115746895587757">Kapučíno</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{aplikácia}few{# aplikácie}many{# apps}other{# aplikácií}}</translation>
 <translation id="362333465072914957">Čaká sa, kým certifikačná autorita vydá certifikát</translation>
 <translation id="3624567683873126087">Odomknúť zariadenie a prihlásiť sa do účtu Google</translation>
 <translation id="3625481642044239431">Bol vybraný neplatný súbor. Skúste to znova.</translation>
@@ -2665,6 +2666,7 @@
 <translation id="3895076768659607631">Spravovať vyhľadávače…</translation>
 <translation id="3895090224522145010">Používateľské meno Kerberos</translation>
 <translation id="389521680295183045">Weby sa môžu pýtať, keď chcú zistiť, kedy aktívne používate zariadenie</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{obrázok}few{# obrázky}many{# images}other{# obrázkov}}</translation>
 <translation id="3898233949376129212">Jazyk zariadenia</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> vyžaduje povolenia <ph name="FIRST_PERMISSION" /> a <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Výber klávesnice</translation>
@@ -3578,6 +3580,7 @@
 <translation id="4943368462779413526">Futbal</translation>
 <translation id="4943691134276646401"><ph name="CHROME_EXTENSION_NAME" /> sa chce pripojiť k sériovému portu</translation>
 <translation id="4944310289250773232">Túto overovaciu službu hostí <ph name="SAML_DOMAIN" />.</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{súbor}few{# súbory}many{# files}other{# súborov}}</translation>
 <translation id="495170559598752135">Akcie</translation>
 <translation id="4953808748584563296">Predvolený oranžový avatar</translation>
 <translation id="4955710816792587366">Vyberte si PIN</translation>
@@ -5077,6 +5080,7 @@
 <translation id="6664237456442406323">Váš počítač je žiaľ nakonfigurovaný pomocou poškodeného ID hardvéru. Systému Chrome OS to zabraňuje získať aktualizácie s najnovšími opravami zabezpečenia a váš počítač <ph name="BEGIN_BOLD" />môže byť zraniteľný voči škodlivým útokom<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Pri pokuse o otvorenie profilu sa vyskytla chyba. Odhláste sa a potom sa znova prihláste.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> je teraz k dispozícii</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{adresa}few{# adresy}many{# addresses}other{# adries}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Ak chcete spustiť synchronizáciu, zadajte prístupovú frázu</translation>
 <translation id="6675665718701918026">Bolo pripojené ukazovacie zariadenie</translation>
@@ -5773,6 +5777,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Otvoriť umiestnenie...</translation>
 <translation id="7457384018036134905">Správa jazykov v nastaveniach systému Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{odkaz}few{# odkazy}many{# links}other{# odkazov}}</translation>
 <translation id="7458168200501453431">Používa rovnakú kontrolu pravopisu ako Vyhľadávanie Google. Text zadaný do prehliadača sa odošle Googlu.</translation>
 <translation id="7460045493116006516">Aktuálny nainštalovaný motív</translation>
 <translation id="7461924472993315131">Pripnúť</translation>
@@ -6173,6 +6178,7 @@
 <translation id="7883792253546618164">Odber môžete kedykoľvek zrušiť.</translation>
 <translation id="788453346724465748">Načítavajú sa informácie o účte…</translation>
 <translation id="7885253890047913815">Nedávne ciele</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{položka}few{# položky}many{# items}other{# položiek}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplikovať</translation>
 <translation id="7887864092952184874">Myš Bluetooth bola spárovaná</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Súbory na Disku Google</translation>
 <translation id="8141584439523427891">Otvára sa alternatívny prehliadač</translation>
 <translation id="8141725884565838206">Správa hesiel</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{video}few{# videá}many{# videos}other{# videí}}</translation>
 <translation id="8143442547342702591">Neplatná aplikácia</translation>
 <translation id="8143951647992294073">Vyberte <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Ak ste sa na tomto zariadení už zaregistrovali, môžete sa <ph name="LINK2_START" />prihlásiť ako existujúci používateľ<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Režim čítačky pre webové stránky</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Presunúť kartu do nového okna}few{Presunúť karty do nového okna}many{Presunúť karty do nového okna}other{Presunúť karty do nového okna}}</translation>
 <translation id="8165997195302308593">Presmerovanie portov v systéme Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{telefónne číslo}few{# telefónne čísla}many{# phone numbers}other{# telefónnych čísiel}}</translation>
 <translation id="8168435359814927499">Obsah</translation>
 <translation id="8168943654413034772">Jediný prepínač pridelený k akcii Vybrať nie je možné odstrániť. Ukončite stlačením ľubovoľného klávesa.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Pridať kartu do zoznamu na čítanie}few{Pridať karty do zoznamu na čítanie}many{Pridať karty do zoznamu na čítanie}other{Pridať karty do zoznamu na čítanie}}</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index f3ed723..419b545 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -2396,6 +2396,7 @@
 <translation id="3616741288025931835">&amp;Izbriši podatke brskanja ...</translation>
 <translation id="3617891479562106823">Ozadja niso na voljo. Poskusite znova pozneje.</translation>
 <translation id="3619115746895587757">Kapučino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{aplikacijo}one{# aplikacijo}two{# aplikaciji}few{# aplikacije}other{# aplikacij}}</translation>
 <translation id="362333465072914957">Čakanje, da overitelj potrdil izda potrdilo</translation>
 <translation id="3624567683873126087">Odklepanje naprave in prijava v Google Račun</translation>
 <translation id="3625481642044239431">Izbrali ste neveljavno datoteko. Poskusite znova.</translation>
@@ -2667,6 +2668,7 @@
 <translation id="3895076768659607631">&amp;Upravljanje iskalnikov …</translation>
 <translation id="3895090224522145010">Uporabniško ime za Kerberos</translation>
 <translation id="389521680295183045">Spletna mesta lahko zahtevajo, da izvejo, kdaj aktivno uporabljate napravo</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{sliko}one{# sliko}two{# sliki}few{# slike}other{# slik}}</translation>
 <translation id="3898233949376129212">Jezik naprave</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> želi: <ph name="FIRST_PERMISSION" /> in <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Izbira tipkovnice</translation>
@@ -3580,6 +3582,7 @@
 <translation id="4943368462779413526">Žoga</translation>
 <translation id="4943691134276646401">»<ph name="CHROME_EXTENSION_NAME" />« se želi povezati z zaporednimi vrati</translation>
 <translation id="4944310289250773232">Storitev preverjanja pristnosti gosti <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{datoteko}one{# datoteko}two{# datoteki}few{# datoteke}other{# datotek}}</translation>
 <translation id="495170559598752135">Dejanja</translation>
 <translation id="4953808748584563296">Privzeti oranžni avatar</translation>
 <translation id="4955710816792587366">Izberite kodo PIN</translation>
@@ -5081,6 +5084,7 @@
 <translation id="6664237456442406323">Vaš računalnik je konfiguriran s popačenim ID-jem strojne opreme. Zaradi tega Chrome OS ne more namestiti najnovejših varnostnih popravkov in vaš računalnik <ph name="BEGIN_BOLD" />je lahko še bolj izpostavljen zlonamernim napadom<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Pri odpiranju profila je prišlo do težave. Odjavite se in se znova prijavite.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> je zdaj na voljo</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{naslov}one{# naslov}two{# naslova}few{# naslovi}other{# naslovov}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Če želite začeti sinhronizacijo, vnesite geslo.</translation>
 <translation id="6675665718701918026">Priključena je kazalna naprava</translation>
@@ -5777,6 +5781,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Odpri mesto ...</translation>
 <translation id="7457384018036134905">Upravljanje jezikov v nastavitvah sistema Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{povezavo}one{# povezavo}two{# povezavi}few{# povezave}other{# povezav}}</translation>
 <translation id="7458168200501453431">Uporablja isto preverjanje črkovanja, kot se uporablja v Iskanju Google. Besedilo, ki ga vnesete v brskalniku, je poslano Googlu.</translation>
 <translation id="7460045493116006516">Trenutna tema, ki ste jo namestili</translation>
 <translation id="7461924472993315131">Pripni</translation>
@@ -6177,6 +6182,7 @@
 <translation id="7883792253546618164">Odjavite se lahko kadar koli.</translation>
 <translation id="788453346724465748">Nalaganje podatkov o računu …</translation>
 <translation id="7885253890047913815">Nedavni cilji</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{element}one{# element}two{# elementa}few{# elementi}other{# elementov}}</translation>
 <translation id="7886605625338676841">e-SIM</translation>
 <translation id="7887334752153342268">Podvoji</translation>
 <translation id="7887864092952184874">Miška Bluetooth je seznanjena</translation>
@@ -6417,6 +6423,7 @@
 <translation id="8139447493436036221">Datoteke v Googlu Drive</translation>
 <translation id="8141584439523427891">Odpiranje v nadomestnem brskalniku</translation>
 <translation id="8141725884565838206">Upravljanje gesel</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{videoposnetek}one{# videoposnetek}two{# videoposnetka}few{# videoposnetki}other{# videoposnetkov}}</translation>
 <translation id="8143442547342702591">Neveljavna aplikacija</translation>
 <translation id="8143951647992294073">Izberite: <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Če ste se v tej napravi že registrirali, se lahko <ph name="LINK2_START" />prijavite kot obstoječi uporabnik<ph name="LINK2_END" />.</translation>
@@ -6436,6 +6443,7 @@
 <translation id="8161293209665121583">Način bralnika za spletne strani</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Premik zavihka v novo okno}one{Premik zavihka v novo okno}two{Premik zavihkov v novo okno}few{Premik zavihkov v novo okno}other{Premik zavihkov v novo okno}}</translation>
 <translation id="8165997195302308593">Posredovanje vrat v Crostiniju</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{telefonsko številko}one{# telefonsko številko}two{# telefonski številki}few{# telefonske številke}other{# telefonskih številk}}</translation>
 <translation id="8168435359814927499">Vsebina</translation>
 <translation id="8168943654413034772">Edinega stikala, dodeljenega dejanju za izbiro, ni mogoče odstraniti. Pritisnite poljubno tipko, če želite zapreti.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Dodaj zavihek na bralni seznam}one{Dodaj zavihke na bralni seznam}two{Dodaj zavihke na bralni seznam}few{Dodaj zavihke na bralni seznam}other{Dodaj zavihke na bralni seznam}}</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb
index fc413a0..914936b 100644
--- a/chrome/app/resources/generated_resources_sq.xtb
+++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -1328,6 +1328,7 @@
 <translation id="2440604414813129000">Shiko b&amp;urimin</translation>
 <translation id="244231003699905658">Adresë e pavlefshme. Kontrollo adresën dhe provo përsëri.</translation>
 <translation id="2442916515643169563">Hija e tekstit</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Kërkohet direktoria rrënjë e shtesës.</translation>
 <translation id="2445484935443597917">Krijo një profil të ri</translation>
 <translation id="2448312741937722512">Shkruaj</translation>
@@ -2388,6 +2389,7 @@
 <translation id="3616741288025931835">&amp;Pastro të dhënat e shfletimit...</translation>
 <translation id="3617891479562106823">Sfondet nuk disponohen. Provo sërish më vonë.</translation>
 <translation id="3619115746895587757">Kapuçino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{një aplikacion}other{# aplikacione}}</translation>
 <translation id="362333465072914957">Në pritje të lëshimit të certifikatës nga autoriteti i certifikatave</translation>
 <translation id="3624567683873126087">Shkyçe pajisjen dhe identifikohu në "Llogarinë e Google"</translation>
 <translation id="3625481642044239431">Është zgjedhur një skedar i pavlefshëm. Provo përsëri.</translation>
@@ -2659,6 +2661,7 @@
 <translation id="3895076768659607631">&amp;Menaxho motorët e kërkimit...</translation>
 <translation id="3895090224522145010">Emri i përdoruesit i Kerberos</translation>
 <translation id="389521680295183045">Sajtet mund të kërkojnë të dinë kur e përdor pajisjen tënde në mënyrë aktive</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{një imazh}other{# imazhe}}</translation>
 <translation id="3898233949376129212">Gjuha e pajisjes</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> kërkon që: <ph name="FIRST_PERMISSION" /> dhe <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Zgjidh tastierën</translation>
@@ -3572,6 +3575,7 @@
 <translation id="4943368462779413526">Futboll</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" dëshiron të lidhet me një portë serie</translation>
 <translation id="4944310289250773232">Ky shërbim vërtetimi strehohet nga <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{një skedar}other{# skedarë}}</translation>
 <translation id="495170559598752135">Veprimet</translation>
 <translation id="4953808748584563296">Avatari i parazgjedhur portokalli</translation>
 <translation id="4955710816792587366">Zgjidh kodin PIN</translation>
@@ -4639,6 +4643,7 @@
 <translation id="6184099524311454384">Kërko skedat</translation>
 <translation id="6185132558746749656">Vendndodhja e pajisjes</translation>
 <translation id="6186394437969115158">Sajtet shfaqin zakonisht reklama që të mund të ofrojnë përmbajtje ose shërbime falas. Por disa sajte dihet se shfaqin reklama ndërhyrëse ose mashtruese.</translation>
+<translation id="6195005504600220730">Të lexojë informacionet për shfletuesin, sistemin operativ dhe pajisjen tënde</translation>
 <translation id="6195693561221576702">Kjo pajisje nuk mund të konfigurohet në modalitetin e demonstrimit jashtë linje.</translation>
 <translation id="6195724942939841102">Mos restauro</translation>
 <translation id="6196640612572343990">Blloko kukit e palëve të treta</translation>
@@ -5070,6 +5075,7 @@
 <translation id="6664237456442406323">Fatkeqësisht, kompjuteri yt është konfiguruar me një ID hardueri të keqformuar. Kjo parandalon përditësimin e sistemit operaitv Chrome me rregullimet më të fundit të sigurisë dhe kompjuteri yt <ph name="BEGIN_BOLD" />mund të jetë i cenueshëm ndaj sulmeve keqdashëse<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Ndodhi një gabim gjatë hapjes së profilit tënd. Dil dhe më pas identifikohu përsëri.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> ofrohet tani</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{një adresë}other{# adresa}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Për të nisur sinkronizimin, fut frazën e kalimit</translation>
 <translation id="6675665718701918026">Është lidhur pajisja treguese</translation>
@@ -5766,6 +5772,7 @@
 <translation id="7456142309650173560">zhvilluesi</translation>
 <translation id="7456847797759667638">Hap vendndodhjen...</translation>
 <translation id="7457384018036134905">Menaxho gjuhët te cilësimet e Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{një lidhje}other{# lidhje}}</translation>
 <translation id="7458168200501453431">Përdor të njëjtin kontrollues drejtshkrimor që përdoret në kërkimin e Google. Teksti që shkruan në shfletues dërgohet te Google.</translation>
 <translation id="7460045493116006516">Tema aktuale që ke instaluar</translation>
 <translation id="7461924472993315131">Gozhdoje</translation>
@@ -6165,6 +6172,7 @@
 <translation id="7883792253546618164">Çregjistrohu në çdo kohë.</translation>
 <translation id="788453346724465748">Informacionet e llogarisë po ngarkohen...</translation>
 <translation id="7885253890047913815">Destinacionet e fundit</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{një artikull}other{# artikuj}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Dublikatë</translation>
 <translation id="7887864092952184874">Miu me Bluetooth u çiftua</translation>
@@ -6404,6 +6412,7 @@
 <translation id="8139447493436036221">Skedarët e "Diskut të Google"</translation>
 <translation id="8141584439523427891">Po hapet në shfletues alternativ tani</translation>
 <translation id="8141725884565838206">Menaxho fjalëkalimet</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{një video}other{# video}}</translation>
 <translation id="8143442547342702591">Aplikacion i pavlefshëm</translation>
 <translation id="8143951647992294073">Zgjidh "<ph name="TOPIC_SOURCE_DESC" />" nga "<ph name="TOPIC_SOURCE" />"</translation>
 <translation id="8146177459103116374">Nëse je regjistruar tashmë në këtë pajisje, mund <ph name="LINK2_START" />të identifikohesh si përdorues ekzistues<ph name="LINK2_END" />.</translation>
@@ -6423,6 +6432,7 @@
 <translation id="8161293209665121583">Modaliteti i lexuesit për faqet e uebit</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Zhvendose skedën në një dritare të re}other{Zhvendosi skedat në një dritare të re}}</translation>
 <translation id="8165997195302308593">Transferimi i portës së Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{një numër telefoni}other{# numra telefoni}}</translation>
 <translation id="8168435359814927499">Përmbajtja</translation>
 <translation id="8168943654413034772">Nuk mund të hiqet çelësi i vetëm i caktuar për veprimin "Zgjidh". Shtyp çdo tast për të dalë.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Shtoje skedën në listë leximi}other{Shtoji skedat në listë leximi}}</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb
index eb22268..3a12508 100644
--- a/chrome/app/resources/generated_resources_sr-Latn.xtb
+++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -2392,6 +2392,7 @@
 <translation id="3616741288025931835">&amp;Obriši podatke pregledanja...</translation>
 <translation id="3617891479562106823">Pozadine nisu dostupne. Probajte ponovo kasnije.</translation>
 <translation id="3619115746895587757">Kapučino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{aplikacija}one{# aplikacija}few{# aplikacije}other{# aplikacija}}</translation>
 <translation id="362333465072914957">Čeka se da CA izda sertifikat</translation>
 <translation id="3624567683873126087">Otključajte uređaj i prijavite se na Google nalog</translation>
 <translation id="3625481642044239431">Izabrali ste nevažeću datoteku. Probajte ponovo.</translation>
@@ -2663,6 +2664,7 @@
 <translation id="3895076768659607631">&amp;Upravljaj pretraživačima...</translation>
 <translation id="3895090224522145010">Kerberos korisničko ime</translation>
 <translation id="389521680295183045">Sajtovi mogu da zatraže da znaju kada aktivno koristite uređaj</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{slika}one{# slika}few{# slike}other{# slika}}</translation>
 <translation id="3898233949376129212">Jezik uređaja</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> želi da: <ph name="FIRST_PERMISSION" /> i <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Izaberite tastaturu</translation>
@@ -3576,6 +3578,7 @@
 <translation id="4943368462779413526">Fudbalska lopta</translation>
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ želi da se poveže sa serijskim portom</translation>
 <translation id="4944310289250773232">Ovu uslugu potvrde identiteta hostuje <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{fajl}one{# fajl}few{# fajla}other{# fajlova}}</translation>
 <translation id="495170559598752135">Radnje</translation>
 <translation id="4953808748584563296">Podrazumevani narandžasti avatar</translation>
 <translation id="4955710816792587366">Odaberite PIN</translation>
@@ -5076,6 +5079,7 @@
 <translation id="6664237456442406323">Nažalost, računar je konfigurisan pomoću pogrešno napravljenog ID-a hardvera. To sprečava Chrome OS da se ažurira najnovijim bezbednosnim ispravkama i računar je <ph name="BEGIN_BOLD" />možda podložan zlonamernim napadima<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Došlo je do problema pri otvaranju profila. Odjavite se, pa se ponovo prijavite.</translation>
 <translation id="6670142487971298264">Aplikacija <ph name="APP_NAME" /> je sada dostupna</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{adresa}one{# adresa}few{# adrese}other{# adresa}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Da biste pokrenuli sinhronizaciju, unesite pristupnu frazu</translation>
 <translation id="6675665718701918026">Pokazivački uređaj je povezan</translation>
@@ -5772,6 +5776,7 @@
 <translation id="7456142309650173560">programer</translation>
 <translation id="7456847797759667638">Otvori lokaciju...</translation>
 <translation id="7457384018036134905">Upravljajte jezicima u podešavanjima Chrome OS-a</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{link}one{# link}few{# linka}other{# linkova}}</translation>
 <translation id="7458168200501453431">Koristi istu proveru pravopisa kao Google pretraga. Tekst koji unesete u pregledač se šalje Google-u.</translation>
 <translation id="7460045493116006516">Aktuelna tema koju ste instalirali</translation>
 <translation id="7461924472993315131">Zakači</translation>
@@ -6172,6 +6177,7 @@
 <translation id="7883792253546618164">Opozovite prijavu bilo kada.</translation>
 <translation id="788453346724465748">Učitavaju se informacije o nalogu…</translation>
 <translation id="7885253890047913815">Nedavna odredišta</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{stavka}one{# stavka}few{# stavke}other{# stavki}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Napravi duplikat</translation>
 <translation id="7887864092952184874">Bluetooth miš je uparen</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Fajlovi na Google disku</translation>
 <translation id="8141584439523427891">Sada se otvara u alternativnom pregledaču</translation>
 <translation id="8141725884565838206">Upravljajte lozinkama</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{video}one{# video}few{# video snimka}other{# video snimaka}}</translation>
 <translation id="8143442547342702591">Nevažeća aplikacija</translation>
 <translation id="8143951647992294073">Izaberite <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Ako ste se već registrovali na ovom uređaju, možete da <ph name="LINK2_START" />se prijavite kao postojeći korisnik<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Režim čitača za veb-stranice</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Premesti karticu u nov prozor}one{Premesti kartice u nov prozor}few{Premesti kartice u nov prozor}other{Premesti kartice u nov prozor}}</translation>
 <translation id="8165997195302308593">Prosleđivanje porta za Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{broj telefona}one{# broj telefona}few{# broja telefona}other{# brojeva telefona}}</translation>
 <translation id="8168435359814927499">Sadržaj</translation>
 <translation id="8168943654413034772">Uklanjanje jedinog prekidača dodeljnog radnji Izaberi nije moguće. Pritisnite bilo koji taster da biste izašli.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Dodaj karticu na listu za čitanje}one{Dodaj kartice na listu za čitanje}few{Dodaj kartice na listu za čitanje}other{Dodaj kartice na listu za čitanje}}</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index 64e42ee0..8af92cb5 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -2392,6 +2392,7 @@
 <translation id="3616741288025931835">&amp;Обриши податке прегледања...</translation>
 <translation id="3617891479562106823">Позадине нису доступне. Пробајте поново касније.</translation>
 <translation id="3619115746895587757">Капучино</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{апликација}one{# апликација}few{# апликације}other{# апликација}}</translation>
 <translation id="362333465072914957">Чека се да CA изда сертификат</translation>
 <translation id="3624567683873126087">Откључајте уређај и пријавите се на Google налог</translation>
 <translation id="3625481642044239431">Изабрали сте неважећу датотеку. Пробајте поново.</translation>
@@ -2663,6 +2664,7 @@
 <translation id="3895076768659607631">&amp;Управљај претраживачима...</translation>
 <translation id="3895090224522145010">Kerberos корисничко име</translation>
 <translation id="389521680295183045">Сајтови могу да затраже да знају када активно користите уређај</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{слика}one{# слика}few{# слике}other{# слика}}</translation>
 <translation id="3898233949376129212">Језик уређаја</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> жели да: <ph name="FIRST_PERMISSION" /> и <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Изаберите тастатуру</translation>
@@ -3576,6 +3578,7 @@
 <translation id="4943368462779413526">Фудбалска лопта</translation>
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ жели да се повеже са серијским портом</translation>
 <translation id="4944310289250773232">Ову услугу потврде идентитета хостује <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{фајл}one{# фајл}few{# фајла}other{# фајлова}}</translation>
 <translation id="495170559598752135">Радње</translation>
 <translation id="4953808748584563296">Подразумевани наранџасти аватар</translation>
 <translation id="4955710816792587366">Одаберите PIN</translation>
@@ -5076,6 +5079,7 @@
 <translation id="6664237456442406323">Нажалост, рачунар је конфигурисан помоћу погрешно направљеног ИД-а хардвера. То спречава Chrome ОС да се ажурира најновијим безбедносним исправкама и рачунар је <ph name="BEGIN_BOLD" />можда подложан злонамерним нападима<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Дошло је до проблема при отварању профила. Одјавите се, па се поново пријавите.</translation>
 <translation id="6670142487971298264">Апликација <ph name="APP_NAME" /> је сада доступна</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{адреса}one{# адреса}few{# адресе}other{# адреса}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Да бисте покренули синхронизацију, унесите приступну фразу</translation>
 <translation id="6675665718701918026">Показивачки уређај је повезан</translation>
@@ -5772,6 +5776,7 @@
 <translation id="7456142309650173560">програмер</translation>
 <translation id="7456847797759667638">Отвори локацију...</translation>
 <translation id="7457384018036134905">Управљајте језицима у подешавањима Chrome ОС-а</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{линк}one{# линк}few{# линка}other{# линкова}}</translation>
 <translation id="7458168200501453431">Користи исту проверу правописа као Google претрага. Текст који унесете у прегледач се шаље Google-у.</translation>
 <translation id="7460045493116006516">Актуелна тема коју сте инсталирали</translation>
 <translation id="7461924472993315131">Закачи</translation>
@@ -6172,6 +6177,7 @@
 <translation id="7883792253546618164">Опозовите пријаву било када.</translation>
 <translation id="788453346724465748">Учитавају се информације о налогу…</translation>
 <translation id="7885253890047913815">Недавна одредишта</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{ставка}one{# ставка}few{# ставке}other{# ставки}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Направи дупликат</translation>
 <translation id="7887864092952184874">Bluetooth миш је упарен</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Фајлови на Google диску</translation>
 <translation id="8141584439523427891">Сада се отвара у алтернативном прегледачу</translation>
 <translation id="8141725884565838206">Управљајте лозинкама</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{видео}one{# видео}few{# видео снимка}other{# видео снимака}}</translation>
 <translation id="8143442547342702591">Неважећа апликација</translation>
 <translation id="8143951647992294073">Изаберите <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Ако сте се већ регистровали на овом уређају, можете да <ph name="LINK2_START" />се пријавите као постојећи корисник<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Режим читача за веб-странице</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Премести картицу у нов прозор}one{Премести картице у нов прозор}few{Премести картице у нов прозор}other{Премести картице у нов прозор}}</translation>
 <translation id="8165997195302308593">Прослеђивање порта за Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{број телефона}one{# број телефона}few{# броја телефона}other{# бројева телефона}}</translation>
 <translation id="8168435359814927499">Садржај</translation>
 <translation id="8168943654413034772">Уклањање јединог прекидача додељног радњи Изабери није могуће. Притисните било који тастер да бисте изашли.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Додај картицу на листу за читање}one{Додај картице на листу за читање}few{Додај картице на листу за читање}other{Додај картице на листу за читање}}</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index 5396c1c..8418dc4f 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -106,7 +106,7 @@
 <translation id="1119447706177454957">Internt fel</translation>
 <translation id="1122068467107743258">Arbete</translation>
 <translation id="1122198203221319518">&amp;Verktyg</translation>
-<translation id="1122242684574577509">Autentiseringen misslyckades. Klicka här om du vill visa inloggningssidan för Wi-Fi-nätverket du använder (<ph name="NETWORK_ID" />).</translation>
+<translation id="1122242684574577509">Autentiseringen misslyckades. Klicka här om du vill visa inloggningssidan för wifi-nätverket du använder (<ph name="NETWORK_ID" />).</translation>
 <translation id="1122960773616686544">Bokmärkets namn</translation>
 <translation id="1124772482545689468">Användare</translation>
 <translation id="1125550662859510761">Ser ut som <ph name="WIDTH" /> × <ph name="HEIGHT" /> (fast)</translation>
@@ -205,8 +205,8 @@
 <translation id="1217668622537098248">Återgå till att vänsterklicka efter åtgärden</translation>
 <translation id="121783623783282548">Lösenorden matchar inte.</translation>
 <translation id="1218015446623563536">Radera Linux</translation>
-<translation id="1218839827383191197"><ph name="BEGIN_PARAGRAPH1" />Med Googles platstjänst används källor som Wi-Fi, mobilnätverk och sensorer för att avgöra enhetens plats.<ph name="END_PARAGRAPH1" />
-    <ph name="BEGIN_PARAGRAPH2" />Du kan inaktivera tjänsten genom att inaktivera huvudinställningen för Plats på enheten. Du kan även inaktivera användningen av Wi-Fi, mobilnätverk och sensorer för plats i platsinställningarna.<ph name="END_PARAGRAPH2" /></translation>
+<translation id="1218839827383191197"><ph name="BEGIN_PARAGRAPH1" />Med Googles platstjänst används källor som wifi, mobilnätverk och sensorer för att avgöra enhetens plats.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Du kan inaktivera tjänsten genom att inaktivera huvudinställningen för Plats på enheten. Du kan även inaktivera användningen av wifi, mobilnätverk och sensorer för plats i platsinställningarna.<ph name="END_PARAGRAPH2" /></translation>
 <translation id="122082903575839559">Certifikatets signaturalgoritm</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 med RSA-kryptering</translation>
 <translation id="1221825588892235038">Endast markering</translation>
@@ -486,7 +486,7 @@
 <translation id="1523978563989812243">Motorer för text till tal</translation>
 <translation id="1524430321211440688">Tangentbord</translation>
 <translation id="1524563461097350801">Nej tack</translation>
-<translation id="1525740877599838384">Fastställ platsen enbart utifrån Wi-Fi</translation>
+<translation id="1525740877599838384">Fastställ platsen enbart utifrån wifi</translation>
 <translation id="152629053603783244">Starta om Linux</translation>
 <translation id="1526335046150927198">Aktivera scrollningsacceleration för styrplattan</translation>
 <translation id="1526560967942511387">Namnlöst dokument</translation>
@@ -494,7 +494,7 @@
 <translation id="152913213824448541">Kontakter för Närdelning</translation>
 <translation id="1529891865407786369">Strömkälla</translation>
 <translation id="1530838837447122178">Öppna enhetsinställningarna för mus och styrplatta</translation>
-<translation id="1531275250079031713">Visa dialogrutan för att lägga till nytt Wi-Fi</translation>
+<translation id="1531275250079031713">Visa dialogrutan för att lägga till nytt wifi</translation>
 <translation id="1531734061664070992"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /></translation>
 <translation id="1535228823998016251">Hög</translation>
 <translation id="1536754031901697553">Kopplar från …</translation>
@@ -524,7 +524,7 @@
 <translation id="1567993339577891801">JavaScript-konsol</translation>
 <translation id="1568323446248056064">Öppna enhetsinställningarna för skärm</translation>
 <translation id="1572139610531470719"><ph name="WINDOW_TITLE" /> (gäst)</translation>
-<translation id="1572266655485775982">Aktivera Wi-Fi</translation>
+<translation id="1572266655485775982">Aktivera wifi</translation>
 <translation id="1572876035008611720">Ange din e-postadress</translation>
 <translation id="1575741822946219011">Språk och inmatning</translation>
 <translation id="1576594961618857597">Vit standardavatar</translation>
@@ -533,7 +533,7 @@
 <translation id="1580772913177567930">Kontakta administratören</translation>
 <translation id="1581962803218266616">Visa i Finder</translation>
 <translation id="1582955169539260415">radera [<ph name="FINGERPRINT_NAME" />]</translation>
-<translation id="1584990664401018068">Wi-Fi-nätverket du använder (<ph name="NETWORK_ID" />) kanske kräver autentisering.</translation>
+<translation id="1584990664401018068">wifi-nätverket du använder (<ph name="NETWORK_ID" />) kanske kräver autentisering.</translation>
 <translation id="1585717515139318619">Ett annat program i datorn har lagt till ett tema som kan ändra hur Chrome fungerar.
 
 <ph name="EXTENSION_NAME" /></translation>
@@ -576,7 +576,7 @@
 <translation id="1621485112342885423">Dina kundvagnar</translation>
 <translation id="1621729191093924223">Funktioner som kräver en mikrofon slutar fungera</translation>
 <translation id="1621831347985899379">Data på <ph name="DEVICE_TYPE" /> raderas</translation>
-<translation id="1622054403950683339">Glöm det här Wi-Fi-nätverket</translation>
+<translation id="1622054403950683339">Glöm det här wifi-nätverket</translation>
 <translation id="1623132449929929218">Bilderna är inte tillgängliga för närvarande. Samlingarna med bakgrunder visas när du har återfått internetanslutningen.</translation>
 <translation id="1623723619460186680">Reducering av blått ljust</translation>
 <translation id="1624012933569991823">Inställningar</translation>
@@ -603,11 +603,11 @@
 <translation id="1641113438599504367">Säker webbsökning</translation>
 <translation id="1642494467033190216">Borttagning av rootfs-skydd och omstart krävs innan du kan aktivera andra felsökningsfunktioner.</translation>
 <translation id="1643072738649235303">X9.62 ECDSA-signatur med SHA-1</translation>
-<translation id="1643921258693943800">Aktivera Bluetooth och Wi-Fi om du vill använda Närdelning</translation>
+<translation id="1643921258693943800">Aktivera Bluetooth och wifi om du vill använda Närdelning</translation>
 <translation id="1644574205037202324">Historik</translation>
 <translation id="1645516838734033527">Mobilen behöver ha ett skärmlås när du använder Smart Lock så att din <ph name="DEVICE_TYPE" /> förblir skyddad.</translation>
 <translation id="1646982517418478057">Ange ett lösenord om du vill kryptera det här certifikatet</translation>
-<translation id="1648528859488547844">Fastställ platsen utifrån Wi-Fi eller mobilnätverk</translation>
+<translation id="1648528859488547844">Fastställ platsen utifrån wifi eller mobilnätverk</translation>
 <translation id="164936512206786300">Koppla från Bluetooth-enhet</translation>
 <translation id="1650371550981945235">Visa inmatningsalternativ</translation>
 <translation id="1651008383952180276">Du måste ange samma lösenfras två gånger</translation>
@@ -739,7 +739,7 @@
 <translation id="177989070088644880">App (<ph name="ANDROID_PACKAGE_NAME" />)</translation>
 <translation id="1780152987505130652">Stäng grupp</translation>
 <translation id="1781291988450150470">Aktuell pinkod</translation>
-<translation id="1781398670452016618"><ph name="DOMAIN" /> kräver att du ansluter till Wi-Fi och laddar ned en uppdatering nu.</translation>
+<translation id="1781398670452016618"><ph name="DOMAIN" /> kräver att du ansluter till wifi och laddar ned en uppdatering nu.</translation>
 <translation id="1781502536226964113">Öppna sidan Ny flik</translation>
 <translation id="1781771911845953849">Konton och synkronisering</translation>
 <translation id="1782196717298160133">Sök efter din mobil</translation>
@@ -941,7 +941,7 @@
 <translation id="2000419248597011803">Skickar vissa cookies och sökningar från adressfältet och sökrutan till standardsökmotorn</translation>
 <translation id="2002109485265116295">Realtid</translation>
 <translation id="200217416291116199">Vi rekommenderar att du säkerhetskopierar filer ifall det inte skulle gå att slutföra uppgraderingen. Linux avslutas när du startar uppgraderingen. Spara öppna filer innan du fortsätter.</translation>
-<translation id="2003130567827682533">Om du vill aktivera data från <ph name="NAME" /> ansluter du först till ett Wi-Fi-nätverk</translation>
+<translation id="2003130567827682533">Om du vill aktivera data från <ph name="NAME" /> ansluter du först till ett wifi-nätverk</translation>
 <translation id="2005199804247617997">Andra profiler</translation>
 <translation id="2006638907958895361">Öppna länken i <ph name="APP" /></translation>
 <translation id="2007404777272201486">Rapportera ett problem...</translation>
@@ -962,7 +962,7 @@
 <translation id="202918510990975568">Ange lösenordet om du vill konfigurera säkerhet och inloggning</translation>
 <translation id="2030455719695904263">Styrplatta</translation>
 <translation id="2031639749079821948">Ditt lösenord har sparats i Google-kontot</translation>
-<translation id="2034346955588403444">Lägg till ett annat Wi-Fi-nätverk</translation>
+<translation id="2034346955588403444">Lägg till ett annat wifi-nätverk</translation>
 <translation id="203574396658008164">Aktivera anteckningar på låsskärmen</translation>
 <translation id="2037445849770872822">Kontroll har konfigurerats för det här Google-kontot. Välj Fortsätt om du vill konfigurera fler föräldrakontroller.
 
@@ -1087,7 +1087,7 @@
 <translation id="2157875535253991059">Denna sida visas nu i helskärm.</translation>
 <translation id="2158475082070321257">Kopiera länk till markering</translation>
 <translation id="2159488579268505102">USB-C</translation>
-<translation id="216169395504480358">Lägg till Wi-Fi ...</translation>
+<translation id="216169395504480358">Lägg till wifi ...</translation>
 <translation id="2162155940152307086">Synkroniseringen startar när du lämnar synkroniseringsinställningarna</translation>
 <translation id="2163004395084716754">Tangenten känns inte igen. Tryck på valfri tangent för att avsluta.</translation>
 <translation id="2163470535490402084">Anslut till internet om du vill logga in på din <ph name="DEVICE_TYPE" />.</translation>
@@ -1096,7 +1096,7 @@
 <translation id="2166369534954157698">Den snabba röda räven hoppar över den lata hunden</translation>
 <translation id="2167276631610992935">JavaScript</translation>
 <translation id="2169062631698640254">Logga in ändå</translation>
-<translation id="2170054054876170358">Kontrollera att telefonen finns i närheten, att den är olåst och att Bluetooth och Wi-Fi är aktiverat på den.</translation>
+<translation id="2170054054876170358">Kontrollera att telefonen finns i närheten, att den är olåst och att Bluetooth och wifi är aktiverat på den.</translation>
 <translation id="2173302385160625112">Kontrollera internetanslutningen</translation>
 <translation id="2173801458090845390">Lägg till rekvirerings-id på enheten</translation>
 <translation id="2174948148799307353">Kontot hanteras av <ph name="PARENT_EMAIL" />. Klicka på klockan på skärmen om du vill logga ut från det primära kontot på den här enheten. Klicka på Logga ut i menyn som visas.</translation>
@@ -1110,7 +1110,7 @@
 <translation id="2187895286714876935">Fel vid import av servercertifikat</translation>
 <translation id="2187906491731510095">Tillägg har uppdaterats</translation>
 <translation id="2188881192257509750">Öppna <ph name="APPLICATION" /></translation>
-<translation id="2190069059097339078">Hämtningsfunktion för Wi-Fi-användaruppgifter</translation>
+<translation id="2190069059097339078">Hämtningsfunktion för wifi-användaruppgifter</translation>
 <translation id="219008588003277019">Native Client-modul: <ph name="NEXE_NAME" /></translation>
 <translation id="2190355936436201913">(tom)</translation>
 <translation id="2191754378957563929">På</translation>
@@ -1226,7 +1226,7 @@
 <translation id="2319993584768066746">Foton på inloggningsskärmen</translation>
 <translation id="2322193970951063277">Sidhuvuden och sidfötter</translation>
 <translation id="2322318151094136999">Fråga när en webbplats försöker få åtkomst till serieportarna (rekommenderas)</translation>
-<translation id="2323018538045954000">Sparade Wi-Fi-nätverk</translation>
+<translation id="2323018538045954000">Sparade wifi-nätverk</translation>
 <translation id="2325444234681128157">Kom ihåg lösenordet</translation>
 <translation id="2326188115274135041">Bekräfta pinkoden om du vill aktivera automatisk upplåsning</translation>
 <translation id="2326931316514688470">&amp;Läs in appen igen</translation>
@@ -1279,7 +1279,7 @@
 <translation id="23721837607121582">Ladda ned mobilprofil, Nätverk <ph name="NETWORK_INDEX" /> av <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" /></translation>
 <translation id="2373666622366160481">Anpassa till papperets storlek</translation>
 <translation id="2375406435414127095">Anslut till mobilen</translation>
-<translation id="2377588536920405462">Du kan inaktivera plats genom att inaktivera huvudinställningen på enheten. Du kan även inaktivera användningen av Wi-Fi, mobilnätverk och sensorer för plats i platsinställningarna.</translation>
+<translation id="2377588536920405462">Du kan inaktivera plats genom att inaktivera huvudinställningen på enheten. Du kan även inaktivera användningen av wifi, mobilnätverk och sensorer för plats i platsinställningarna.</translation>
 <translation id="2377667304966270281">Sidfel</translation>
 <translation id="237828693408258535">Vill du översätta den här sidan?</translation>
 <translation id="2378982052244864789">Välj tilläggets katalog.</translation>
@@ -1289,7 +1289,7 @@
 <translation id="2387052489799050037">Öppna startskärmen</translation>
 <translation id="2387458720915042159">Proxyanslutningstyp</translation>
 <translation id="2390347491606624519">Det gick inte att ansluta till proxyservern. Logga in igen.</translation>
-<translation id="2390782873446084770">Wi-Fi-synkronisering</translation>
+<translation id="2390782873446084770">wifi-synkronisering</translation>
 <translation id="2391419135980381625">Standardteckensnitt</translation>
 <translation id="2392163307141705938">Du har nått gränsen som din förälder har ställt in för <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="2392369802118427583">Aktivera</translation>
@@ -1315,7 +1315,7 @@
 <translation id="2423578206845792524">S&amp;para bild som...</translation>
 <translation id="2424424966051154874">{0,plural, =1{Gäst}other{Gäst (#)}}</translation>
 <translation id="2428510569851653187">Beskriv vad du höll på med när fliken kraschade</translation>
-<translation id="2428939361789119025">Stäng av Wi-Fi</translation>
+<translation id="2428939361789119025">Stäng av wifi</translation>
 <translation id="2428978615149723410">dessa kundvagnar</translation>
 <translation id="2431027948063157455">Det gick inte att läsa in Google Assistent. Kontrollera nätverksanslutningen och försök igen.</translation>
 <translation id="243179355394256322">Organisationen tillåter endast auktoriserade användare att registrera enheter. Den här användaren har inte behörighet att registrera enheter. Se till att användaren har administratörsbehörigheten Registrera Google Meet-maskinvara i avsnittet Användare i administratörskonsolen.</translation>
@@ -1351,7 +1351,7 @@
 <translation id="2462724976360937186">Nyckel-ID för certifikatutfärdare</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> har lagts till</translation>
 <translation id="2464089476039395325">HTTP-proxy</translation>
-<translation id="2465237718053447668"><ph name="DOMAIN" /> kräver att du ansluter till Wi-Fi och laddar ned en uppdatering nu. Du kan även ladda ned via en anslutning med datapriser (avgifter kan tillkomma).</translation>
+<translation id="2465237718053447668"><ph name="DOMAIN" /> kräver att du ansluter till wifi och laddar ned en uppdatering nu. Du kan även ladda ned via en anslutning med datapriser (avgifter kan tillkomma).</translation>
 <translation id="2467267713099745100">Nätverkstyp: <ph name="NETWORK_TYPE" />, inaktiverat</translation>
 <translation id="2467755475704469005">Ingen enhet upptäcktes. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
 <translation id="2468178265280335214">Scrollningsacceleration för styrplattan</translation>
@@ -1505,7 +1505,7 @@
 <translation id="2627424346328942291">Det går inte att dela</translation>
 <translation id="2628770867680720336">Du måste återställa denna Chromebook till standardinställningarna om du vill aktivera felsökning med ADB. <ph name="BEGIN_LINK_LEARN_MORE" />Läs mer<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="2629227353894235473">Utveckla Android-appar</translation>
-<translation id="2630681426381349926">Anslut till Wi-Fi om du vill börja</translation>
+<translation id="2630681426381349926">Anslut till wifi om du vill börja</translation>
 <translation id="2631498379019108537">Visa inmatningsalternativ på hyllan</translation>
 <translation id="2633212996805280240">Vill du ta bort <ph name="EXTENSION_NAME" />?</translation>
 <translation id="263325223718984101">Installationen av <ph name="PRODUCT_NAME" /> kunde inte slutföras, men programmet kommer att fortsätta köras från diskavbildningen.</translation>
@@ -1534,7 +1534,7 @@
 <translation id="2659381484350128933"><ph name="FOOTNOTE_POINTER" />Funktionerna varierar beroende på enhet</translation>
 <translation id="2659971421398561408">Ändra diskstorlek för Crostini</translation>
 <translation id="2660779039299703961">Event</translation>
-<translation id="266079277508604648">Det gick inte att ansluta till skrivaren. Kontrollera att skrivaren är påslagen och ansluten till Chromebook via Wi-Fi eller USB.</translation>
+<translation id="266079277508604648">Det gick inte att ansluta till skrivaren. Kontrollera att skrivaren är påslagen och ansluten till Chromebook via wifi eller USB.</translation>
 <translation id="2661714428027871023">Surfa snabbare och minska dataförbrukningen med begränsat läge. Klicka för att läsa mer.</translation>
 <translation id="2662876636500006917">Chrome webbshop</translation>
 <translation id="2663302507110284145">Språk</translation>
@@ -1702,7 +1702,7 @@
 <translation id="2824942875887026017"><ph name="IDS_SHORT_PRODUCT_NAME" /> använder proxyinställningar från administratören</translation>
 <translation id="2825758591930162672">Mottagarens publika nyckel</translation>
 <translation id="2828375943530438449">Tillbaka från inloggningssidan</translation>
-<translation id="2828650939514476812">Anslut till ett Wi-Fi-nätverk</translation>
+<translation id="2828650939514476812">Anslut till ett wifi-nätverk</translation>
 <translation id="2835547721736623118">Tjänst för taligenkänning</translation>
 <translation id="2836269494620652131">Krasch</translation>
 <translation id="2836635946302913370">Inloggningar med detta användarnamn har inaktiverats av administratören.</translation>
@@ -1825,7 +1825,7 @@
 <translation id="2961695502793809356">Klicka för att fortsätta, håll ned för att se historik</translation>
 <translation id="2962131322798295505">Bakgrundsväljare</translation>
 <translation id="2963151496262057773">Följande pluginprogram svarar inte: <ph name="PLUGIN_NAME" />. Vill du stoppa det?</translation>
-<translation id="2964193600955408481">Inaktivera Wi-Fi</translation>
+<translation id="2964193600955408481">Inaktivera wifi</translation>
 <translation id="2964245677645334031">Synlighet för Närdelning</translation>
 <translation id="2966216232069818096">Tillåt att assistenten använder informationen på skärmen för att hjälpa till</translation>
 <translation id="2966937470348689686">Hantera Android-inställningar</translation>
@@ -1859,13 +1859,13 @@
 <translation id="3003189754374775221">Nätverk <ph name="NETWORK_INDEX" /> av <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" />, signalstyrka <ph name="SIGNAL_STRENGTH" /> %, anslut</translation>
 <translation id="3003623123441819449">CSS-cacheminne</translation>
 <translation id="3003828226041301643">Det gick inte att ansluta enheten till domänen. Kontrollera att du använder ett konto med behörighet att lägga till enheter.</translation>
-<translation id="3003967365858406397">En privat Wi-Fi-anslutning skapas i <ph name="PHONE_NAME" />.</translation>
+<translation id="3003967365858406397">En privat wifi-anslutning skapas i <ph name="PHONE_NAME" />.</translation>
 <translation id="3004391367407090544">Kom tillbaka senare</translation>
 <translation id="3006881078666935414">Ingen användningsdata tillgänglig</translation>
 <translation id="3007771295016901659">Duplicera flik</translation>
 <translation id="3008232374986381779">Kör verktyg, redigerare och IDE:er för Linux på <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Återställ behörigheter</translation>
-<translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> kräver att du ansluter till Wi-Fi och laddar ned en uppdatering i dag. Du kan även ladda ned via en anslutning med datapriser (avgifter kan tillkomma).}other{<ph name="MANAGER" /> kräver att du ansluter till Wi-Fi laddar ned en uppdatering före deadline. Du kan även ladda ned via en anslutning med datapriser (avgifter kan tillkomma).}}</translation>
+<translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> kräver att du ansluter till wifi och laddar ned en uppdatering i dag. Du kan även ladda ned via en anslutning med datapriser (avgifter kan tillkomma).}other{<ph name="MANAGER" /> kräver att du ansluter till wifi laddar ned en uppdatering före deadline. Du kan även ladda ned via en anslutning med datapriser (avgifter kan tillkomma).}}</translation>
 <translation id="3009300415590184725">Är du säker på att du vill avbryta konfigurationen av den mobila datatjänsten?</translation>
 <translation id="3009779501245596802">Indexerade databaser</translation>
 <translation id="3010279545267083280">Lösenordet har tagits bort</translation>
@@ -1912,7 +1912,7 @@
 <translation id="3058498974290601450">Du kan när som helst inaktivera synkroniseringen i inställningarna</translation>
 <translation id="3060379269883947824">Aktivera Textuppläsning</translation>
 <translation id="3060952009917586498">Byt språk på enheten. Just nu används <ph name="LANGUAGE" />.</translation>
-<translation id="3060987956645097882">Det gick inte att upprätta en anslutning till telefonen. Kontrollera att telefonen finns i närheten, att den är olåst och att Bluetooth och Wi-Fi är aktiverat på den.</translation>
+<translation id="3060987956645097882">Det gick inte att upprätta en anslutning till telefonen. Kontrollera att telefonen finns i närheten, att den är olåst och att Bluetooth och wifi är aktiverat på den.</translation>
 <translation id="3065041951436100775">Feedback vid stängd flik.</translation>
 <translation id="3065522099314259755">Fördröjning vid upprepning på tangentbordet</translation>
 <translation id="3067198179881736288">Vill du installera appen?</translation>
@@ -1972,7 +1972,7 @@
 <translation id="3129215702932019810">Det gick inte att starta programmet</translation>
 <translation id="3130528281680948470">Enheten kommer att återställas och alla användarkonton och lokala uppgifter tas bort. Det går inte att ångra åtgärden.</translation>
 <translation id="313205617302240621">Glömt lösenordet?</translation>
-<translation id="3132277757485842847">Det gick inte att upprätthålla en anslutning till telefonen. Kontrollera att telefonen finns i närheten, att den är olåst och att Bluetooth och Wi-Fi är aktiverat på den.</translation>
+<translation id="3132277757485842847">Det gick inte att upprätthålla en anslutning till telefonen. Kontrollera att telefonen finns i närheten, att den är olåst och att Bluetooth och wifi är aktiverat på den.</translation>
 <translation id="3132996321662585180">Uppdatera dagligen</translation>
 <translation id="3134393957315651797">Välj experimentstatus för experimentet <ph name="EXPERIMENT_NAME" />. Beskrivning av experimentet: <ph name="EXPERIMENT_DESCRIPTION" /></translation>
 <translation id="3138624403379688522">Ogiltig pinkod. Du har <ph name="RETRIES" /> försök kvar.</translation>
@@ -2094,7 +2094,7 @@
 <translation id="328571385944182268">Vill du spara lösenorden?</translation>
 <translation id="3288047731229977326">Tillägg som körs i utvecklarläge kan skada datorn. Om du inte är en utvecklare bör du inaktivera tillägg som körs i utvecklarläge för att skydda dig.</translation>
 <translation id="3289668031376215426">Automatiska versaler</translation>
-<translation id="3289856944988573801">Använd Ethernet eller Wi-Fi om du vill söka efter uppdateringar.</translation>
+<translation id="3289856944988573801">Använd Ethernet eller wifi om du vill söka efter uppdateringar.</translation>
 <translation id="3290356915286466215">Inte skyddat</translation>
 <translation id="3291218047831493686">Anslut till det här nätverket för att ändra låsinställning för SIM-kortet</translation>
 <translation id="3293644607209440645">Skicka sidan</translation>
@@ -2341,7 +2341,7 @@
 <translation id="3562423906127931518">Detta kan ta några minuter. Linux-containern konfigureras.</translation>
 <translation id="3562655211539199254">Se de senaste flikarna som du har öppna i Chrome på telefonen</translation>
 <translation id="3563432852173030730">Det gick inte att ladda ned kioskappen.</translation>
-<translation id="3564334271939054422">Wi-Fi-nätverket du använder (<ph name="NETWORK_ID" />) kanske kräver att du besöker dess inloggningssida.</translation>
+<translation id="3564334271939054422">wifi-nätverket du använder (<ph name="NETWORK_ID" />) kanske kräver att du besöker dess inloggningssida.</translation>
 <translation id="3564848315152754834">USB-säkerhetsnyckel</translation>
 <translation id="3566325075220776093">Från denna enhet</translation>
 <translation id="3566721612727112615">Inga webbplatser har lagts till</translation>
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">&amp;Rensa webbinformation...</translation>
 <translation id="3617891479562106823">Inga bakgrunder är tillgängliga. Försök igen senare.</translation>
 <translation id="3619115746895587757">Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{en app}other{# appar}}</translation>
 <translation id="362333465072914957">Väntar på att CA ska utfärda ett certifikat</translation>
 <translation id="3624567683873126087">Lås upp enheten och logga in på Google-kontot</translation>
 <translation id="3625481642044239431">Du har valt en ogiltig fil. Försök igen.</translation>
@@ -2423,7 +2424,7 @@
 <translation id="3650753875413052677">Registreringsfel</translation>
 <translation id="3650845953328929506">Uppladdning av loggfil väntar.</translation>
 <translation id="3650952250015018111">Ge ”<ph name="APP_NAME" />” åtkomstbehörighet till:</translation>
-<translation id="3651488188562686558">Enheten kopplas från Wi-Fi</translation>
+<translation id="3651488188562686558">Enheten kopplas från wifi</translation>
 <translation id="3652817283076144888">Initierar</translation>
 <translation id="3653160965917900914">Filresurser i nätverk</translation>
 <translation id="3653999333232393305">Fortsätt tillåta <ph name="HOST" /> att använda din mikrofon</translation>
@@ -2476,7 +2477,7 @@
 <translation id="3704331259350077894">Upphörande av verksamhet</translation>
 <translation id="3705722231355495246">-</translation>
 <translation id="3706463572498736864">Sidor per arbetsblad</translation>
-<translation id="370649949373421643">Aktivera Wi-Fi</translation>
+<translation id="370649949373421643">Aktivera wifi</translation>
 <translation id="370665806235115550">Läser in...</translation>
 <translation id="3707163604290651814">För närvarande inloggad som <ph name="NAME" /></translation>
 <translation id="3708684582558000260">Tillåt inte att stängda webbplatser fortsätter skicka eller ta emot data</translation>
@@ -2653,7 +2654,7 @@
 <translation id="3886446263141354045">Din begäran om att få tillgång till denna webbplats har skickats till <ph name="NAME" /></translation>
 <translation id="3888550877729210209">Anteckna med <ph name="LOCK_SCREEN_APP_NAME" /></translation>
 <translation id="3888586133700543064">Med den här informationen blir det lättare för oss att förstå problemet med assistenten. Informationen lagras i upp till 90 dagar och endast behöriga utvecklar- och feedbackteam har åtkomst till den.</translation>
-<translation id="3890064827463908288">Aktivera Chrome Sync om du vill använda Wi-Fi-synkronisering</translation>
+<translation id="3890064827463908288">Aktivera Chrome Sync om du vill använda wifi-synkronisering</translation>
 <translation id="3892414795099177503">Lägg till OpenVPN/L2TP …</translation>
 <translation id="3893536212201235195">Läsa och ändra tillgänglighetsinställningarna</translation>
 <translation id="3893630138897523026">ChromeVox (talad feedback)</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;Hantera sökmotorer …</translation>
 <translation id="3895090224522145010">Användarnamn för Kerberos</translation>
 <translation id="389521680295183045">Webbplatser kan begära tillstånd att få veta om du använder enheten aktivt</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{en bild}other{# bilder}}</translation>
 <translation id="3898233949376129212">Enhetens språk</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> vill <ph name="FIRST_PERMISSION" /> och <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Välj tangentbord</translation>
@@ -2972,7 +2974,7 @@
 <translation id="4259388776256904261">Det här kan ta en stund</translation>
 <translation id="4260182282978351200"><ph name="FILE_NAME" /> kan vara farlig. Vill du skicka den till Avancerat skydd från Google för genomsökning? Stega till nedladdningsfältet med Skift + F6.</translation>
 <translation id="4263223596040212967">Kontrollera tangentbordslayouten och försök igen.</translation>
-<translation id="426564820080660648">Använd Ethernet, Wi-Fi eller mobildata om du vill söka efter uppdateringar.</translation>
+<translation id="426564820080660648">Använd Ethernet, wifi eller mobildata om du vill söka efter uppdateringar.</translation>
 <translation id="4266679478228765574">Om mappar tas bort avbryts delningen, men inga filer raderas.</translation>
 <translation id="4267455501101322486">Be en förälder om behörighet att lägga till ett konto för skolans resurser</translation>
 <translation id="4267924571297947682">Be en förälder om tillstånd</translation>
@@ -3272,7 +3274,7 @@
 <translation id="4595560905247879544">Appar och tillägg kan bara ändras av den ansvariga (<ph name="CUSTODIAN_NAME" />).</translation>
 <translation id="4596295440756783523">Du har sparade certifikat som identifierar dessa servrar</translation>
 <translation id="4598556348158889687">Lagringshantering</translation>
-<translation id="4598776695426288251">Wi-Fi är tillgängligt via flera enheter</translation>
+<translation id="4598776695426288251">wifi är tillgängligt via flera enheter</translation>
 <translation id="4602466770786743961">Tillåt alltid att <ph name="HOST" /> använder kameran och mikrofonen</translation>
 <translation id="4606551464649945562">Tillåt inte att webbplatser skapar en 3D-karta över dina omgivningar eller registrera kamerans position</translation>
 <translation id="4608500690299898628">&amp;Sök...</translation>
@@ -3577,6 +3579,7 @@
 <translation id="4943368462779413526">Amerikansk fotboll</translation>
 <translation id="4943691134276646401"><ph name="CHROME_EXTENSION_NAME" /> vill ansluta till en serieport</translation>
 <translation id="4944310289250773232">Den här autentiseringstjänsten tillhandahålls av <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{en fil}other{# filer}}</translation>
 <translation id="495170559598752135">Åtgärder</translation>
 <translation id="4953808748584563296">Orange standardavatar</translation>
 <translation id="4955710816792587366">Välj en pinkod</translation>
@@ -3585,7 +3588,7 @@
 <translation id="4961361269522589229">receptförslag</translation>
 <translation id="496185450405387901">Den här appen har installerats av administratören.</translation>
 <translation id="4964455510556214366">Ordning</translation>
-<translation id="496446150016900060">Synkronisera Wi-Fi-nätverk med telefonen</translation>
+<translation id="496446150016900060">Synkronisera wifi-nätverk med telefonen</translation>
 <translation id="4965808351167763748">Vill du konfigurera den här enheten för Hangouts Meet?</translation>
 <translation id="496888482094675990">Med appen Filer kommer du snabbt åt filer som du har sparat på Google Drive, externa lagringsenheter eller din Chrome OS-enhet.</translation>
 <translation id="4971412780836297815">Öppna när nedladdningen är klar</translation>
@@ -3626,7 +3629,7 @@
 <translation id="5018526990965779848">Skicka diagnostik- och användningsdata. Hjälp till att göra Android bättre genom att skicka diagnostikdata, enhetsdata och data om appanvändning till Google automatiskt. Denna data används till att förbättra systemets och apparnas stabilitet med mera. Viss samlad data används även till att förbättra appar från Google och Googles partner, till exempel Android-utvecklare. Om ytterligare webb- och appaktivitet har aktiverats kan denna data sparas i Google-kontot.</translation>
 <translation id="5021750053540820849">Har inte uppdaterats ännu</translation>
 <translation id="5026492829171796515">Logga in för att lägga till ett Google-konto</translation>
-<translation id="5026806129670917316">Aktivera Wi-Fi</translation>
+<translation id="5026806129670917316">Aktivera wifi</translation>
 <translation id="5026874946691314267">Visa inte detta igen</translation>
 <translation id="5027550639139316293">E-postcertifikat</translation>
 <translation id="5027562294707732951">Lägg till tillägg</translation>
@@ -3735,7 +3738,7 @@
 <translation id="5143712164865402236">Visa i helskärm</translation>
 <translation id="514575469079499857">Fastställ platsen utifrån IP-adressen (standard)</translation>
 <translation id="5147103632304200977">Fråga när en webbplats försöker få åtkomst till HID-enheter (rekommenderas)</translation>
-<translation id="5148277445782867161">Med Googles platstjänst används källor som Wi-Fi, mobila nätverk och sensorer för att avgöra enhetens plats.</translation>
+<translation id="5148277445782867161">Med Googles platstjänst används källor som wifi, mobila nätverk och sensorer för att avgöra enhetens plats.</translation>
 <translation id="5150070631291639005">Sekretessinställningar</translation>
 <translation id="5150254825601720210">SSL-servernamn för Netscape-certifikat</translation>
 <translation id="5151354047782775295">Frigör diskutrymme, annars tas en del data bort automatiskt.</translation>
@@ -4142,7 +4145,7 @@
 <translation id="5602765853043467355">Rensa bokmärken, historik , lösenord med mera från den här enheten</translation>
 <translation id="5605623530403479164">Andra sökmotorer</translation>
 <translation id="5605758115928394442">En avisering har skickats till din mobil för att bekräfta att det är du.</translation>
-<translation id="560834977503641186">Wi-Fi-synkronisering, läs mer</translation>
+<translation id="560834977503641186">wifi-synkronisering, läs mer</translation>
 <translation id="5608580678041221894">Tryck på följande knappar för att justera eller flytta beskärningsområdet</translation>
 <translation id="5609231933459083978">Appen ser ut att vara ogiltig.</translation>
 <translation id="5610038042047936818">Byt till kameraläget</translation>
@@ -4210,7 +4213,7 @@
 <translation id="5678955352098267522">Läsa din data på <ph name="WEBSITE_1" /></translation>
 <translation id="5680050361008726776">Vill du ta bort <ph name="ESIM_PROFILE_NAME" />?</translation>
 <translation id="5683806393796685434">Ange aktiveringskoden</translation>
-<translation id="5684181005476681636">Information om Wi-Fi</translation>
+<translation id="5684181005476681636">Information om wifi</translation>
 <translation id="5684661240348539843">Tillgångsidentifierare</translation>
 <translation id="5687326903064479980">Tidszon</translation>
 <translation id="5689516760719285838">Plats</translation>
@@ -4350,7 +4353,7 @@
 <translation id="5852112051279473187">Hoppsan! Något gick verkligen fel när enheten skulle registreras. Försök igen eller kontakta support.</translation>
 <translation id="5852137567692933493">Starta om och gör en Powerwash</translation>
 <translation id="5854912040170951372">Pizzaslajs</translation>
-<translation id="5855267860608268405">Kända Wi-Fi-nätverk</translation>
+<translation id="5855267860608268405">Kända wifi-nätverk</translation>
 <translation id="5855643921295613558">0,6 sekunder</translation>
 <translation id="5856721540245522153">Aktivera felsökningsfunktioner</translation>
 <translation id="5857090052475505287">Ny mapp</translation>
@@ -4385,7 +4388,7 @@
 <translation id="5884474295213649357">Den här fliken är ansluten till en USB-enhet.</translation>
 <translation id="5886009770935151472">Finger 1</translation>
 <translation id="5889282057229379085">Maximalt antal mellanliggande CU: <ph name="NUM_INTERMEDIATE_CA" /></translation>
-<translation id="5891688036610113830">Föredragna Wi-Fi-nätverk</translation>
+<translation id="5891688036610113830">Föredragna wifi-nätverk</translation>
 <translation id="5895138241574237353">Starta om</translation>
 <translation id="5900302528761731119">Profilbild i Google Profiler</translation>
 <translation id="5901069264981746702">Fingeravtrycksdata lagras på ett säkert sätt och lämnar aldrig din <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation>
@@ -4408,7 +4411,7 @@
 <translation id="59174027418879706">Aktiverad</translation>
 <translation id="5920543303088087579">Administratören har inaktiverat möjligheten att ansluta till det här nätverket</translation>
 <translation id="5920835625712313205">Systemavbildningsskrivare för Chrome OS</translation>
-<translation id="5921257443092182237">Med Googles platstjänst används källor som Wi-Fi, mobila nätverk och sensorer för att avgöra enhetens plats.</translation>
+<translation id="5921257443092182237">Med Googles platstjänst används källor som wifi, mobila nätverk och sensorer för att avgöra enhetens plats.</translation>
 <translation id="5923205773724721589">Tangenterna matchar inte. Tryck på valfri tangent för att avsluta.</translation>
 <translation id="5924047253200400718">Få hjälp <ph name="SCANNING_STATUS" /></translation>
 <translation id="5924527146239595929">Ta ett nytt foto eller välj ett foto eller en ikon som redan finns.
@@ -4474,7 +4477,7 @@
 <translation id="598472838394900788">{0,plural, =1{Inkognito}other{Inkognito (#)}}</translation>
 <translation id="5985458664595100876">Ogiltigt webbadressformat. Följande format stöds: \\server\share och smb://server/share.</translation>
 <translation id="598810097218913399">Ta bort tilldelning</translation>
-<translation id="5990266201903445068">Endast Wi-Fi</translation>
+<translation id="5990266201903445068">Endast wifi</translation>
 <translation id="5990386583461751448">Översatt</translation>
 <translation id="599131315899248751">{NUM_APPLICATIONS,plural, =1{Be administratören att ta bort den här appen så att du kan fortsätta att surfa på internet.}other{Be administratören att ta bort de här apparna så att du kan fortsätta att surfa på internet.}}</translation>
 <translation id="5997337190805127100">Läs mer om webbplatsåtkomst</translation>
@@ -4509,8 +4512,8 @@
 <translation id="6038929619733116134">Blockera om påträngande eller vilseledande annonser visas på webbplatsen</translation>
 <translation id="6039651071822577588">Ordboken för nätverksegenskaper har felaktigt format</translation>
 <translation id="6040143037577758943">Stäng</translation>
-<translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Med Googles platstjänst används källor som Wi-Fi, mobilnätverk och sensorer för att avgöra enhetens plats.<ph name="END_PARAGRAPH1" />
-    <ph name="BEGIN_PARAGRAPH2" />Du kan inaktivera tjänsten genom att inaktivera huvudinställningen för Plats på enheten. Du kan även inaktivera användningen av Wi-Fi, mobilnätverk och sensorer för plats i platsinställningarna.<ph name="END_PARAGRAPH2" /></translation>
+<translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Med Googles platstjänst används källor som wifi, mobilnätverk och sensorer för att avgöra enhetens plats.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Du kan inaktivera tjänsten genom att inaktivera huvudinställningen för Plats på enheten. Du kan även inaktivera användningen av wifi, mobilnätverk och sensorer för plats i platsinställningarna.<ph name="END_PARAGRAPH2" /></translation>
 <translation id="6041155700700864984">Avsluta helskärmsläget</translation>
 <translation id="6042308850641462728">Mer</translation>
 <translation id="6043317578411397101"><ph name="APP_NAME" /> delar en Chrome-flik med <ph name="TAB_NAME" />.</translation>
@@ -4601,7 +4604,7 @@
 <translation id="6129691635767514872">Den data som markerades har tagits bort från Chrome och från synkroniserade enheter. Det kan finnas webbhistorik av annat slag i Google-kontot på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />, t.ex. sökningar och aktivitet på andra tjänster från Google.</translation>
 <translation id="6129938384427316298">Kommentar för Netscape-certifikat</translation>
 <translation id="6129953537138746214">Blanksteg</translation>
-<translation id="6130692320435119637">Lägg till Wi-Fi-nätverk</translation>
+<translation id="6130692320435119637">Lägg till wifi-nätverk</translation>
 <translation id="6136114942382973861">Stäng nedladdningsfältet</translation>
 <translation id="6136287496450963112">Säkerhetsnyckeln skyddas inte av en pinkod. Skapa en pinkod först om du vill använda fingeravtryck.</translation>
 <translation id="6138680304137685902">X9.62 ECDSA-signatur med SHA-384</translation>
@@ -4674,7 +4677,7 @@
 <translation id="6225475702458870625">En dataanslutning är tillgänglig via din <ph name="PHONE_NAME" /></translation>
 <translation id="6226777517901268232">Privat nyckelfil (valfritt)</translation>
 <translation id="6227280783235722609">tillägg</translation>
-<translation id="6229849828796482487">Koppla från Wi-Fi-nätverk</translation>
+<translation id="6229849828796482487">Koppla från wifi-nätverk</translation>
 <translation id="6231782223312638214">Förslag</translation>
 <translation id="6231881193380278751">Lägg till en frågeparameter i webbadressen för att automatiskt uppdatera sidan: chrome://device-log/?refresh=&lt;sec&gt;</translation>
 <translation id="6232017090690406397">Batteri</translation>
@@ -5060,7 +5063,7 @@
 <translation id="6650234781371031356">Ditt lösenord på <ph name="WEBSITE" /> har sparats på den här enheten och i Google-kontot. Vilket vill du radera?</translation>
 <translation id="665061930738760572">Öppna i &amp;nytt fönster</translation>
 <translation id="6651237644330755633">Lita på detta certifikat för identifiering av webbplatser</translation>
-<translation id="6651495917527016072">Synkronisera Wi-Fi-nätverk med telefonen. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation>
+<translation id="6651495917527016072">Synkronisera wifi-nätverk med telefonen. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Integrering med <ph name="MS_AD_NAME" /> i Chrome stöds bara på x86_64-plattformar. Chromebook-enheter som bygger på ARM- eller x86-plattformen saknar stöd för denna funktion.</translation>
 <translation id="66537479323396140">Historik och autoslutföranden i sökrutan rensas. Det kan finnas andra former av webbhistorik i Google-kontot på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6654509035557065241">Föredraget nätverk</translation>
@@ -5076,6 +5079,7 @@
 <translation id="6664237456442406323">Tyvärr är din dator konfigurerad med ett felaktigt maskinvaru-ID. Detta förhindrar att Chrome OS uppdateras med de senaste säkerhetskorrigeringarna och datorn <ph name="BEGIN_BOLD" />kan vara utsatt för skadlig programvara<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Något gick snett när profilen skulle öppnas. Logga ut och sedan in igen.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> är tillgängligt</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{en adress}other{# adresser}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Ange din lösenfras för att starta synkroniseringen</translation>
 <translation id="6675665718701918026">Pekdon har anslutits</translation>
@@ -5286,7 +5290,7 @@
 <translation id="6910211073230771657">Borttagen</translation>
 <translation id="691024665142758461">Hämta flera filer</translation>
 <translation id="691106080621596509">All data och alla cookies som har sparats av <ph name="SITE_GROUP_NAME" />, alla underordnade webbplatser och den tillhörande installerade appen raderas</translation>
-<translation id="6911324888870229398">Nätverksanslutningen avbröts. Kontrollera anslutningen eller testa ett annat Wi-Fi-nätverk.</translation>
+<translation id="6911324888870229398">Nätverksanslutningen avbröts. Kontrollera anslutningen eller testa ett annat wifi-nätverk.</translation>
 <translation id="6911734910326569517">Minnesanvändning</translation>
 <translation id="6912007319859991306">Pinkod för SIM-kort</translation>
 <translation id="691289340230098384">Inställningar för textning</translation>
@@ -5602,7 +5606,7 @@
 <translation id="7256069762010468647">Webbplatsen använder kameran</translation>
 <translation id="7256405249507348194">Okänt fel: <ph name="DESC" /></translation>
 <translation id="7256710573727326513">Öppna i en flik</translation>
-<translation id="7257173066616499747">Wi-Fi-nätverk</translation>
+<translation id="7257173066616499747">wifi-nätverk</translation>
 <translation id="725758059478686223">Utskriftstjänst</translation>
 <translation id="7257666756905341374">Läsa data som du kopierar och klistrar in</translation>
 <translation id="7258225044283673131">Appen svarar inte. Stäng appen med Tvångsavsluta.</translation>
@@ -5694,7 +5698,7 @@
 <translation id="736877393389250337">Det gick inte att öppna <ph name="URL" /> i <ph name="ALTERNATIVE_BROWSER_NAME" />. Kontakta systemadministratören.</translation>
 <translation id="7370592524170198497">Ethernet EAP:</translation>
 <translation id="7371006317849674875">Starttid</translation>
-<translation id="7371490947952970241">Du kan inaktivera plats genom att inaktivera huvudinställningen på enheten. Du kan även inaktivera användningen av Wi-Fi, mobilnätverk och sensorer för plats i platsinställningarna.</translation>
+<translation id="7371490947952970241">Du kan inaktivera plats genom att inaktivera huvudinställningen på enheten. Du kan även inaktivera användningen av wifi, mobilnätverk och sensorer för plats i platsinställningarna.</translation>
 <translation id="7371917887111892735">Flikar förminskas till samma bredd som fästa flikar</translation>
 <translation id="7374376573160927383">Hantera USB-enheter</translation>
 <translation id="7375235221357833624">{0,plural, =1{Uppdatera enheten inom en timme}other{Uppdatera enheten inom # timmar}}</translation>
@@ -5772,6 +5776,7 @@
 <translation id="7456142309650173560">utvecklare</translation>
 <translation id="7456847797759667638">Öppna plats...</translation>
 <translation id="7457384018036134905">Hantera språk i inställningarna för Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{en länk}other{# länkar}}</translation>
 <translation id="7458168200501453431">Använder samma stavningskontroll som Google Sök. Text som du anger i webbläsaren skickas till Google.</translation>
 <translation id="7460045493116006516">Aktuellt tema som du har installerat</translation>
 <translation id="7461924472993315131">Fäst</translation>
@@ -5941,7 +5946,7 @@
 <translation id="7650178491875594325">Återställ lokal data</translation>
 <translation id="7650511557061837441"><ph name="TRIGGERING_EXTENSION_NAME" /> vill ta bort <ph name="EXTENSION_NAME" />.</translation>
 <translation id="7650582458329409456">{COUNT,plural, =1{1 fingeravtryck har konfigurerats}other{{COUNT} fingeravtryck har konfigurerats}}</translation>
-<translation id="7650677314924139716">Den aktuella inställningen för dataanvändning är Endast Wi-Fi</translation>
+<translation id="7650677314924139716">Den aktuella inställningen för dataanvändning är Endast wifi</translation>
 <translation id="765293928828334535">Appar, tillägg och användarskript kan inte läggas till från webbplatsen</translation>
 <translation id="7652954539215530680">Skapa en pinkod</translation>
 <translation id="7654941827281939388">Kontot används redan på den här datorn.</translation>
@@ -6046,7 +6051,7 @@
 <translation id="7764225426217299476">Lägg till adress</translation>
 <translation id="7764256770584298012"><ph name="DOWNLOAD_RECEIVED" /> från <ph name="DOWNLOAD_DOMAIN" /></translation>
 <translation id="7765158879357617694">Flytta</translation>
-<translation id="7765507180157272835">Bluetooth och Wi-Fi krävs</translation>
+<translation id="7765507180157272835">Bluetooth och wifi krävs</translation>
 <translation id="7766082757934713382">Du kan minska användningen av nätverksdata genom att pausa automatiska app- och systemuppdateringar</translation>
 <translation id="7766807826975222231">Ta en rundtur</translation>
 <translation id="7766838926148951335">Godkänn behörigheterna</translation>
@@ -6172,6 +6177,7 @@
 <translation id="7883792253546618164">Du kan avsluta prenumerationen när du vill.</translation>
 <translation id="788453346724465748">Läser in kontouppgifter …</translation>
 <translation id="7885253890047913815">Senaste platserna</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{ett objekt}other{# objekt}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Duplicera</translation>
 <translation id="7887864092952184874">Bluetooth-musen har kopplats</translation>
@@ -6214,7 +6220,7 @@
 <translation id="7928175190925744466">Har du redan ändrat det här lösenordet?</translation>
 <translation id="7930294771522048157">Sparade betalningsmetoder visas här</translation>
 <translation id="79312157130859720"><ph name="APP_NAME" /> delar skärmen och ljudet.</translation>
-<translation id="793293630927785390">Dialogruta för nytt Wi-Fi-nätverk</translation>
+<translation id="793293630927785390">Dialogruta för nytt wifi-nätverk</translation>
 <translation id="7932969338829957666">Delade mappar finns i <ph name="BASE_DIR" /> i Linux.</translation>
 <translation id="7933314993013528982">{NUM_TABS,plural, =1{Sätt på webbplatsens ljud}other{Sätt på webbplatsernas ljud}}</translation>
 <translation id="7933518760693751884">Klicka på bokmärkesikonen om du vill spara en sida till senare</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Google Drive-filer</translation>
 <translation id="8141584439523427891">Öppnas i en annan webbläsare nu</translation>
 <translation id="8141725884565838206">Hantera dina lösenord</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{en video}other{# videor}}</translation>
 <translation id="8143442547342702591">Ogiltig app</translation>
 <translation id="8143951647992294073">Välj <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Om du redan är registrerad på den här enheten kan du <ph name="LINK2_START" />logga in som en befintlig användare<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Läsläge för webbsidor</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Flytta fliken till ett nytt fönster}other{Flytta flikarna till ett nytt fönster}}</translation>
 <translation id="8165997195302308593">Portvidarebefordran i Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{ett telefonnummer}other{# telefonnummer}}</translation>
 <translation id="8168435359814927499">Innehåll</translation>
 <translation id="8168943654413034772">Det går inte att ta bort den enda brytaren som tilldelats Välj. Tryck på valfri tangent för att avsluta.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Lägg till fliken i läslistan}other{Lägg till flikarna i läslistan}}</translation>
@@ -6548,7 +6556,7 @@
 <translation id="8293206222192510085">Lägg till bokmärke</translation>
 <translation id="829335040383910391">ljud</translation>
 <translation id="8294431847097064396">Källa</translation>
-<translation id="8298429963694909221">Du får nu aviseringar från telefonen på din <ph name="DEVICE_TYPE" />. Om du ignorerar aviseringar på din <ph name="DEVICE_TYPE" /> ignoreras de även på telefonen. Kontrollera att telefonen finns i närheten och att Bluetooth och Wi-Fi är aktiverat på den.</translation>
+<translation id="8298429963694909221">Du får nu aviseringar från telefonen på din <ph name="DEVICE_TYPE" />. Om du ignorerar aviseringar på din <ph name="DEVICE_TYPE" /> ignoreras de även på telefonen. Kontrollera att telefonen finns i närheten och att Bluetooth och wifi är aktiverat på den.</translation>
 <translation id="8299319456683969623">Du är offline för närvarande.</translation>
 <translation id="8300011035382349091">Redigera bokmärket för den här fliken</translation>
 <translation id="8300374739238450534">Midnattsblå</translation>
@@ -6883,7 +6891,7 @@
 <translation id="8702825062053163569">Din <ph name="DEVICE_TYPE" /> har låsts.</translation>
 <translation id="8703346390800944767">Hoppa över annons</translation>
 <translation id="8705331520020532516">Serienummer</translation>
-<translation id="8705580154597116082">Wi-Fi är tillgängligt via mobilen</translation>
+<translation id="8705580154597116082">wifi är tillgängligt via mobilen</translation>
 <translation id="8705629851992224300">Det gick inte att läsa från säkerhetsnyckeln</translation>
 <translation id="8708000541097332489">Rensa vid avslut</translation>
 <translation id="870805141700401153">Microsofts individuella kodsignering</translation>
@@ -6997,7 +7005,7 @@
 <translation id="8813698869395535039">Det gick inte att logga in på <ph name="USERNAME" /></translation>
 <translation id="8813872945700551674">Be att en förälder godkänner <ph name="EXTENSION_NAME" /></translation>
 <translation id="8813969267212093033">Systemtext visas på det här språket</translation>
-<translation id="8814190375133053267">Wi-Fi</translation>
+<translation id="8814190375133053267">wifi</translation>
 <translation id="8814319344131658221">Listan med språk som kan stavningskontrolleras bygger på språkinställningarna</translation>
 <translation id="8814644416678422095">Hårddisk</translation>
 <translation id="8814687660896548945">Arkivet genomsöks. Vänta …</translation>
@@ -7323,7 +7331,7 @@
 <translation id="9159643062839240276">Testa att
     <ph name="BEGIN_LIST" />
       <ph name="LIST_ITEM" />kontrollera nätverkskablar, modem och router
-      <ph name="LIST_ITEM" />återansluta till Wi-Fi
+      <ph name="LIST_ITEM" />återansluta till wifi
       <ph name="LIST_ITEM" />köra diagnostiseringsverktyget för Chrome-anslutningar.
     <ph name="END_LIST" /></translation>
 <translation id="916607977885256133">Bild-i-bild</translation>
@@ -7439,6 +7447,6 @@
 <translation id="994289308992179865">&amp;Repetera</translation>
 <translation id="995782501881226248">YouTube</translation>
 <translation id="996250603853062861">Upprättar en säker anslutning...</translation>
-<translation id="99731366405731005">Aktivera <ph name="LINK1_BEGIN" />Chrome Sync<ph name="LINK1_END" /> om du vill använda Wi-Fi-synkronisering. <ph name="LINK2_BEGIN" />Läs mer<ph name="LINK2_END" /></translation>
+<translation id="99731366405731005">Aktivera <ph name="LINK1_BEGIN" />Chrome Sync<ph name="LINK1_END" /> om du vill använda wifi-synkronisering. <ph name="LINK2_BEGIN" />Läs mer<ph name="LINK2_END" /></translation>
 <translation id="998747458861718449">I&amp;nspektera</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index 3f6eb5ce..70d9784 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -2390,6 +2390,7 @@
 <translation id="3616741288025931835">&amp;Futa Data ya Kuvinjari</translation>
 <translation id="3617891479562106823">Mandhari hayapatikani. Jaribu tena baadaye.</translation>
 <translation id="3619115746895587757">Kapuchino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{programu}other{Programu #}}</translation>
 <translation id="362333465072914957">Inasubiri CA itoe cheti</translation>
 <translation id="3624567683873126087">Fungua kifaa na uingie katika Akaunti ya Google</translation>
 <translation id="3625481642044239431">Umechagua faili ambayo si sahihi. Jaribu tena.</translation>
@@ -2661,6 +2662,7 @@
 <translation id="3895076768659607631">&amp;Dhibiti Mitambo ya Kutafuta...</translation>
 <translation id="3895090224522145010">Jina la mtumiaji wa Kerberos</translation>
 <translation id="389521680295183045">Tovuti zinaweza kuomba ruhusa ya kujua wakati unatumia kifaa chako</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{picha}other{Picha #}}</translation>
 <translation id="3898233949376129212">Lugha inayotumika kwenye kifaa</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> inataka: <ph name="FIRST_PERMISSION" /> na <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Chagua kibodi</translation>
@@ -3572,6 +3574,7 @@
 <translation id="4943368462779413526">Kandanda</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" inataka kuunganisha kwenye mlango wa kuwekea vifaa</translation>
 <translation id="4944310289250773232">Huduma hii ya uthibitishaji imepangishwa na <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{faili}other{Faili #}}</translation>
 <translation id="495170559598752135">Vitendo</translation>
 <translation id="4953808748584563296">Ishara chaguomsingi ya rangi ya machungwa</translation>
 <translation id="4955710816792587366">Chagua PIN yako</translation>
@@ -5071,6 +5074,7 @@
 <translation id="6664237456442406323">Kwa bahati mbaya, kompyuta yako imesanidiwa na kitambulisho cha maunzi kilichoharibika. Hii inazuia Chrome OS isisasishe na sasisho za usalama za hivi karibuni na kompyuta yako <ph name="BEGIN_BOLD" />inaweza ikawa hatarini kutokana na mashambulizi hasidi<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Hitilafu imetokea wakati wa kufungua wasifu wako. Tafadhali ondoka na uingie katika akaunti tena.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> sasa inapatikana</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{anwani}other{Anwani #}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Ili uanze kusawazisha, weka kauli yako ya siri</translation>
 <translation id="6675665718701918026">Kifaa cha kuonyeshea kimeunganishwa</translation>
@@ -5767,6 +5771,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Fungua Mahali...</translation>
 <translation id="7457384018036134905">Dhibiti lugha katika mipangilio ya Mfumo wa Uendeshaji wa Chrome</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{kiungo}other{Viungo #}}</translation>
 <translation id="7458168200501453431">Hutumia kikagua tahajia kinachotumiwa katika Huduma ya Tafuta na Google. Maandishi unayochapisha katika kivinjari yanatumwa kwa Google.</translation>
 <translation id="7460045493116006516">Mandhari ya sasa uliyosakinisha</translation>
 <translation id="7461924472993315131">Bana</translation>
@@ -6169,6 +6174,7 @@
 <translation id="7883792253546618164">Jiondoe wakati wowote.</translation>
 <translation id="788453346724465748">Inapakia maelezo ya akaunti...</translation>
 <translation id="7885253890047913815">Printa ulizotumia hivi karibuni</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{kipengee}other{Vipengee #}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Maradufu</translation>
 <translation id="7887864092952184874">Kipanya cha Bluetooth kimeoanishwa</translation>
@@ -6409,6 +6415,7 @@
 <translation id="8139447493436036221">Faili za Hifadhi ya Google</translation>
 <translation id="8141584439523427891">Inafungua katika kivinjari mbadala sasa</translation>
 <translation id="8141725884565838206">Simamia manenosiri yako</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{video}other{Video #}}</translation>
 <translation id="8143442547342702591">Programu si sahihi</translation>
 <translation id="8143951647992294073">Chagua <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Ikiwa tayari umeingia kwenye kifaa hiki, unaweza <ph name="LINK2_START" /> kuingia kama mtumiaji aliyepo<ph name="LINK2_END" />.</translation>
@@ -6428,6 +6435,7 @@
 <translation id="8161293209665121583">Hali ya kisomaji kwenye kurasa za wavuti</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Hamishia Kichupo kwenye Dirisha Jipya}other{Hamishia Vichupo kwenye Dirisha Jipya}}</translation>
 <translation id="8165997195302308593">Kusambaza mlango kwingine kwenye Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{nambari ya simu}other{Nambari # za simu}}</translation>
 <translation id="8168435359814927499">Maudhui</translation>
 <translation id="8168943654413034772">Huwezi kuondoa swichi pekee iliyokabidhiwa kwenye kitendo cha 'Chagua'. Bonyeza kitufe chochote ili ufunge.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Ongeza Kichupo kwenye Orodha ya Kusoma}other{Ongeza Vichupo kwenye Orodha ya Kusoma}}</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index f2007dc..3ad1c4a 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -1331,6 +1331,7 @@
 <translation id="2440604414813129000">ஆ&amp;தாரத்தைக் காண்பி</translation>
 <translation id="244231003699905658">தவறான முகவரி. முகவரியைச் சரிபார்த்துவிட்டு மீண்டும் முயலவும்.</translation>
 <translation id="2442916515643169563">டெக்ஸ்ட் ஷேடோ</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">நீட்டிப்பு மூல கோப்பகம் தேவை.</translation>
 <translation id="2445484935443597917">ஒரு புதிய சுயவிவரத்தை உருவாக்கு</translation>
 <translation id="2448312741937722512">வகை</translation>
@@ -4644,6 +4645,7 @@
 <translation id="6184099524311454384">தாவல்களைத் தேடுக</translation>
 <translation id="6185132558746749656">சாதன இருப்பிடம்</translation>
 <translation id="6186394437969115158">வழக்கமாக உள்ளடக்கத்தையோ சேவைகளையோ இலவசமாக வழங்குவதற்காக விளம்பரங்களைத் தளங்கள் காட்டும். ஆனால் குறுக்கிடும் அல்லது தவறாக வழிநடத்தும் விளம்பரங்களைச் சில தளங்கள் காட்டும்.</translation>
+<translation id="6195005504600220730">உங்கள் உலாவி, OS, சாதனம் ஆகியவை குறித்த தகவல்களைப் படிப்பது</translation>
 <translation id="6195693561221576702">இந்தச் சாதனத்தை ஆஃப்லைன் டெமோ பயன்முறையில் அமைக்க முடியாது.</translation>
 <translation id="6195724942939841102">மீட்டெடுக்க வேண்டாம்</translation>
 <translation id="6196640612572343990">மூன்றாம் தரப்புக் குக்கீகளைத் தடு</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index e732d1d..3d59fee5 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -2393,6 +2393,7 @@
 <translation id="3616741288025931835">&amp;ล้างข้อมูลการท่องเว็บ...</translation>
 <translation id="3617891479562106823">พื้นหลังไม่พร้อมใช้งาน โปรดลองอีกครั้งภายหลัง</translation>
 <translation id="3619115746895587757">คาปูชิโน</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{1 แอป}other{# แอป}}</translation>
 <translation id="362333465072914957">กำลังรอให้ CA ออกใบรับรอง</translation>
 <translation id="3624567683873126087">ปลดล็อกอุปกรณ์และลงชื่อเข้าใช้บัญชี Google</translation>
 <translation id="3625481642044239431">เลือกไฟล์ไม่ถูกต้อง โปรดลองอีกครั้ง</translation>
@@ -2664,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;จัดการเครื่องมือค้นหา...</translation>
 <translation id="3895090224522145010">ชื่อผู้ใช้ Kerberos</translation>
 <translation id="389521680295183045">เว็บไซต์สามารถขอทราบเวลาที่คุณใช้งานอุปกรณ์อยู่ได้</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{1 รูปภาพ}other{# รูปภาพ}}</translation>
 <translation id="3898233949376129212">ภาษาของอุปกรณ์</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> ต้องการ<ph name="FIRST_PERMISSION" />และ<ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">เลือกแป้นพิมพ์</translation>
@@ -3577,6 +3579,7 @@
 <translation id="4943368462779413526">ฟุตบอล</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ต้องการเชื่อมต่อกับพอร์ตอนุกรม</translation>
 <translation id="4944310289250773232">บริการการตรวจสอบสิทธิ์นี้โฮสต์โดย <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{1 ไฟล์}other{# ไฟล์}}</translation>
 <translation id="495170559598752135">การทำงาน</translation>
 <translation id="4953808748584563296">รูปโปรไฟล์เริ่มต้นสีส้ม</translation>
 <translation id="4955710816792587366">เลือก PIN ของคุณ</translation>
@@ -5076,6 +5079,7 @@
 <translation id="6664237456442406323">น่าเสียดายที่คอมพิวเตอร์ของคุณถูกกำหนดค่าด้วย ID ฮาร์ดแวร์ที่มีรูปแบบที่ไม่ถูกต้อง ซึ่งจะป้องกันไม่ให้ Chrome OS อัปเดตการแก้ใขปัญหาความปลอดภัยล่าสุดได้ และคอมพิวเตอร์ของคุณ <ph name="BEGIN_BOLD" />อาจเสี่ยงต่อการโจมตีที่เป็นอันตราย<ph name="END_BOLD" /></translation>
 <translation id="6664774537677393800">เกิดข้อผิดพลาดขณะเปิดโปรไฟล์ของคุณ โปรดออกจากระบบแล้วลงชื่อเข้าใช้อีกครั้ง</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> พร้อมใช้งานแล้ว</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{1 ที่อยู่}other{# ที่อยู่}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">หากต้องการเริ่มต้นการซิงค์ ให้ป้อนรหัสผ่านของคุณ</translation>
 <translation id="6675665718701918026">เชื่อมต่ออุปกรณ์ชี้ตำแหน่งแล้ว</translation>
@@ -5772,6 +5776,7 @@
 <translation id="7456142309650173560">การพัฒนา</translation>
 <translation id="7456847797759667638">เปิดตำแหน่ง...</translation>
 <translation id="7457384018036134905">จัดการภาษาในการตั้งค่า Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{1 ลิงก์}other{# ลิงก์}}</translation>
 <translation id="7458168200501453431">ใช้โปรแกรมตรวจตัวสะกดแบบเดียวกับ Google Search ข้อความที่คุณพิมพ์ในเบราว์เซอร์จะส่งไปยัง Google</translation>
 <translation id="7460045493116006516">ธีมที่คุณติดตั้งอยู่ตอนนี้</translation>
 <translation id="7461924472993315131">ตรึง</translation>
@@ -6172,6 +6177,7 @@
 <translation id="7883792253546618164">ยกเลิกการรับข่าวสารได้ทุกเมื่อ</translation>
 <translation id="788453346724465748">กำลังโหลดข้อมูลบัญชี...</translation>
 <translation id="7885253890047913815">ปลายทางล่าสุด</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{1 รายการ}other{# รายการ}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">ทำซ้ำ</translation>
 <translation id="7887864092952184874">จับคู่เมาส์บลูทูธแล้ว</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">ไฟล์ใน Google ไดรฟ์</translation>
 <translation id="8141584439523427891">กำลังเปิดเบราว์เซอร์สำรองอยู่ในขณะนี้</translation>
 <translation id="8141725884565838206">จัดการรหัสผ่านของคุณ</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{1 วิดีโอ}other{# วิดีโอ}}</translation>
 <translation id="8143442547342702591">แอปพลิเคชันไม่ถูกต้อง</translation>
 <translation id="8143951647992294073">เลือก <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">หากคุณได้ลงทะเบียนในอุปกรณ์นี้แล้ว คุณสามารถ<ph name="LINK2_START" />ลงชื่อเข้าใช้ในฐานะผู้ใช้ที่มีอยู่แล้ว<ph name="LINK2_END" />ได้</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">โหมดผู้อ่านสำหรับหน้าเว็บ</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{ย้ายแท็บไปที่หน้าต่างใหม่}other{ย้ายแท็บไปที่หน้าต่างใหม่}}</translation>
 <translation id="8165997195302308593">การส่งต่อพอร์ตใน Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{1 หมายเลขโทรศัพท์}other{# หมายเลขโทรศัพท์}}</translation>
 <translation id="8168435359814927499">เนื้อหา</translation>
 <translation id="8168943654413034772">นำสวิตช์ที่กำหนดให้กับ "เลือก" ซึ่งเหลือเพียงสวิตช์เดียวออกไม่ได้ กดแป้นใดก็ได้เพื่อออก</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{เพิ่มแท็บไปยังเรื่องรออ่าน}other{เพิ่มหลายแท็บไปยังเรื่องรออ่าน}}</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index 7d5e767..febde05a 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -1331,6 +1331,7 @@
 <translation id="2440604414813129000">Ka&amp;ynağı görüntüle</translation>
 <translation id="244231003699905658">Geçersiz adres. Lütfen adresi kontrol edip tekrar deneyin.</translation>
 <translation id="2442916515643169563">Metin gölgesi</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Uzantı kök dizini gerekiyor.</translation>
 <translation id="2445484935443597917">Yeni Profil Oluştur</translation>
 <translation id="2448312741937722512">Tür</translation>
@@ -2391,6 +2392,7 @@
 <translation id="3616741288025931835">Tarama Verilerini &amp;Temizle...</translation>
 <translation id="3617891479562106823">Arka planlar kullanılamıyor. Daha sonra tekrar deneyin.</translation>
 <translation id="3619115746895587757">Kapuçino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{bir uygulama}other{# uygulama}}</translation>
 <translation id="362333465072914957">CA'nın sertifika yayınlaması bekleniyor</translation>
 <translation id="3624567683873126087">Cihazın kilidini aç ve Google Hesabı'nda oturum aç</translation>
 <translation id="3625481642044239431">Geçersiz dosya seçildi. Tekrar deneyin.</translation>
@@ -2662,6 +2664,7 @@
 <translation id="3895076768659607631">Arama Motorlarını &amp;Yönet...</translation>
 <translation id="3895090224522145010">Kerberos kullanıcı adı</translation>
 <translation id="389521680295183045">Siteler, cihazımı etkin olarak kullandığımda bilmek isteyebilir</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{bir resim}other{# resim}}</translation>
 <translation id="3898233949376129212">Cihazın dili</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> şunu yapmak istiyor: <ph name="FIRST_PERMISSION" /> ve <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Klavye seçin</translation>
@@ -3575,6 +3578,7 @@
 <translation id="4943368462779413526">Futbol</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" bir seri bağlantı noktasına bağlanmak istiyor</translation>
 <translation id="4944310289250773232">Bu kimlik doğrulama hizmeti <ph name="SAML_DOMAIN" /> tarafından barındırılıyor.</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{bir dosya}other{# dosya}}</translation>
 <translation id="495170559598752135">İşlemler</translation>
 <translation id="4953808748584563296">Varsayılan turuncu avatar</translation>
 <translation id="4955710816792587366">PIN'inizi seçin</translation>
@@ -4643,6 +4647,7 @@
 <translation id="6184099524311454384">Sekme Ara</translation>
 <translation id="6185132558746749656">Cihaz Konumu</translation>
 <translation id="6186394437969115158">Siteler ücretsiz içerik ve hizmet sunabilmek için genellikle reklam gösterir. Ancak araya giren veya yanıltıcı reklamlar gösterdiği bilinen bazı siteler vardır.</translation>
+<translation id="6195005504600220730">Tarayıcınız, işletim sisteminiz ve cihazınız hakkında bilgileri okuma</translation>
 <translation id="6195693561221576702">Bu cihaz çevrimdışı demo modunda kurulamıyor.</translation>
 <translation id="6195724942939841102">Geri yükleme</translation>
 <translation id="6196640612572343990">Üçüncü taraf çerezlerini engelle</translation>
@@ -5074,6 +5079,7 @@
 <translation id="6664237456442406323">Maalesef bilgisayarınız, hatalı oluşturulmuş bir donanım kimliğiyle yapılandırılmış. Bu durum Chrome OS'nin en son güvenlik düzeltmeleriyle güncellenmesini engeller ve bilgisayarınız <ph name="BEGIN_BOLD" />kötü niyetli saldırılara<ph name="END_BOLD" /> açık duruma gelebilir.</translation>
 <translation id="6664774537677393800">Profiliniz açılırken bir sorun oluştu. Lütfen oturumu kapatıp sonra tekrar oturum açın.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> artık kullanılabilir</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{bir adres}other{# adres}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Senkronizasyonu başlatmak için parolanızı girin</translation>
 <translation id="6675665718701918026">İşaretleme cihazı bağlı</translation>
@@ -5770,6 +5776,7 @@
 <translation id="7456142309650173560">geliştirici</translation>
 <translation id="7456847797759667638">Konumu Aç...</translation>
 <translation id="7457384018036134905">Chrome OS ayarlarındaki dilleri yönet</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{bir bağlantı}other{# bağlantı}}</translation>
 <translation id="7458168200501453431">Google Arama'da kullanılan yazım denetleyiciyi kullanır. Tarayıcıda yazdığınız metin Google'a gönderilir.</translation>
 <translation id="7460045493116006516">Yüklediğiniz mevcut tema</translation>
 <translation id="7461924472993315131">Sabitle</translation>
@@ -6169,6 +6176,7 @@
 <translation id="7883792253546618164">İstediğiniz zaman aboneliğinizi iptal edebilirsiniz.</translation>
 <translation id="788453346724465748">Hesap bilgileri yükleniyor...</translation>
 <translation id="7885253890047913815">En Son Hedefler</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{bir öğe}other{# öğe}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Yinele</translation>
 <translation id="7887864092952184874">Bluetooth fare eşlendi</translation>
@@ -6409,6 +6417,7 @@
 <translation id="8139447493436036221">Google Drive dosyaları</translation>
 <translation id="8141584439523427891">Şu anda alternatif tarayıcıda açılıyor</translation>
 <translation id="8141725884565838206">Şifrelerinizi yönetin</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{bir video}other{# video}}</translation>
 <translation id="8143442547342702591">Geçersiz uygulama</translation>
 <translation id="8143951647992294073">Seç: <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Zaten bu cihazda kayıtlıysanız, <ph name="LINK2_START" />varolan kullanıcı olarak oturum açabilirsiniz<ph name="LINK2_END" />.</translation>
@@ -6428,6 +6437,7 @@
 <translation id="8161293209665121583">Web sayfaları için okuyucu modu</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Sekmeyi Yeni Pencereye Taşı}other{Sekmeleri Yeni Pencereye Taşı}}</translation>
 <translation id="8165997195302308593">Crostini bağlantı noktasını yönlendir</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{bir telefon numarası}other{# telefon numarası}}</translation>
 <translation id="8168435359814927499">İçerik</translation>
 <translation id="8168943654413034772">Seç'e atanmış tek anahtar kaldırılamaz. Çıkmak için herhangi bir tuşa basın.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Okuma Listesine Sekme Ekle}other{Okuma Listesine Sekme Ekle}}</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index 3d5baca6..bc8781d 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -1334,6 +1334,7 @@
 <translation id="2440604414813129000">Див. д&amp;жерело</translation>
 <translation id="244231003699905658">Недійсна адреса. Перевірте адресу та повторіть спробу.</translation>
 <translation id="2442916515643169563">Тінь тексту</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Потрібен кореневий каталог розширення.</translation>
 <translation id="2445484935443597917">Створити новий профіль</translation>
 <translation id="2448312741937722512">Тип</translation>
@@ -2395,6 +2396,7 @@
 <translation id="3616741288025931835">&amp;Очистити дані веб-перегляду...</translation>
 <translation id="3617891479562106823">Фони недоступні. Повторіть спробу пізніше.</translation>
 <translation id="3619115746895587757">Капучино</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{додаток}one{# додаток}few{# додатки}many{# додатків}other{# додатка}}</translation>
 <translation id="362333465072914957">Очікуємо на сертифікат від центру сертифікації</translation>
 <translation id="3624567683873126087">Розблоковуйте пристрій і входьте в обліковий запис Google</translation>
 <translation id="3625481642044239431">Вибрано недійсний файл. Повторіть спробу.</translation>
@@ -2666,6 +2668,7 @@
 <translation id="3895076768659607631">&amp;Керувати пошуковими системами…</translation>
 <translation id="3895090224522145010">Ім'я користувача Kerberos</translation>
 <translation id="389521680295183045">Сайти можуть запитувати, чи ви активно використовуєте пристрій</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{зображення}one{# зображення}few{# зображення}many{# зображень}other{# зображення}}</translation>
 <translation id="3898233949376129212">Мова пристрою</translation>
 <translation id="3898327728850887246">Сайту <ph name="SITE_NAME" /> потрібен дозвіл, щоб <ph name="FIRST_PERMISSION" /> та <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Виберіть клавіатуру</translation>
@@ -3579,6 +3582,7 @@
 <translation id="4943368462779413526">Футбольний м’яч</translation>
 <translation id="4943691134276646401"><ph name="CHROME_EXTENSION_NAME" /> хоче під’єднатися до послідовного порту</translation>
 <translation id="4944310289250773232">Цей сервіс автентифікації розміщує <ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{файл}one{# файл}few{# файли}many{# файлів}other{# файлу}}</translation>
 <translation id="495170559598752135">Дії</translation>
 <translation id="4953808748584563296">Стандартний оранжевий аватар</translation>
 <translation id="4955710816792587366">Придумайте PIN-код</translation>
@@ -4646,6 +4650,7 @@
 <translation id="6184099524311454384">Шукати вкладки</translation>
 <translation id="6185132558746749656">Місцезнаходження пристрою</translation>
 <translation id="6186394437969115158">Сайти зазвичай показують рекламу, щоб безкоштовно пропонувати контент або послуги. Однак деякі сайти показують нав'язливі чи оманливі оголошення.</translation>
+<translation id="6195005504600220730">Перегляд інформації про ваш веб-переглядач, ОС і пристрій</translation>
 <translation id="6195693561221576702">Не вдається налаштувати пристрій у демо-режимі офлайн.</translation>
 <translation id="6195724942939841102">Не відновлювати</translation>
 <translation id="6196640612572343990">Блокувати сторонні файли cookie</translation>
@@ -5077,6 +5082,7 @@
 <translation id="6664237456442406323">На жаль, ваш комп’ютер налаштовано за допомогою ідентифікатора апаратного забезпечення з невірною структурою. Це перешкоджає оновленню ОС Chrome найновішими виправленнями системи безпеки, а тому ваш комп’ютер <ph name="BEGIN_BOLD" />може бути вразливим до зловмисних атак<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Не вдалося відкрити профіль. Вийдіть і знову ввійдіть.</translation>
 <translation id="6670142487971298264">Додаток <ph name="APP_NAME" /> уже доступний</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{адресу}one{# адресу}few{# адреси}many{# адрес}other{# адреси}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Щоб почати синхронізацію, введіть парольну фразу</translation>
 <translation id="6675665718701918026">Маніпулятор підключено</translation>
@@ -5773,6 +5779,7 @@
 <translation id="7456142309650173560">версія для розробників</translation>
 <translation id="7456847797759667638">Відкрити розташування...</translation>
 <translation id="7457384018036134905">Керувати мовами в налаштуваннях ОС Chrome</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{посилання}one{# посилання}few{# посилання}many{# посилань}other{# посилання}}</translation>
 <translation id="7458168200501453431">Використовує ту саму технологію перевірки правопису, що й Пошук Google. Текст, який ви вводите у веб-переглядачі, надсилається в Google.</translation>
 <translation id="7460045493116006516">Поточна встановлена тема</translation>
 <translation id="7461924472993315131">Закріпити</translation>
@@ -6173,6 +6180,7 @@
 <translation id="7883792253546618164">Ви можете будь-коли скасувати підписку.</translation>
 <translation id="788453346724465748">Завантаження даних облікового запису…</translation>
 <translation id="7885253890047913815">Останні місця призначення</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{елемент}one{# елемент}few{# елементи}many{# елементів}other{# елемента}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Створити копію</translation>
 <translation id="7887864092952184874">Підключено мишу Bluetooth</translation>
@@ -6413,6 +6421,7 @@
 <translation id="8139447493436036221">Файли з Google Диска</translation>
 <translation id="8141584439523427891">Відкривання в альтернативному веб-переглядачі</translation>
 <translation id="8141725884565838206">Керування паролями</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{відео}one{# відео}few{# відео}many{# відео}other{# відео}}</translation>
 <translation id="8143442547342702591">Недійсний додаток</translation>
 <translation id="8143951647992294073">Вибрати тему "<ph name="TOPIC_SOURCE" />" з описом "<ph name="TOPIC_SOURCE_DESC" />"</translation>
 <translation id="8146177459103116374">Якщо ви вже зареєструвалися на цьому пристрої, можна <ph name="LINK2_START" />ввійти як існуючий користувач<ph name="LINK2_END" /> .</translation>
@@ -6432,6 +6441,7 @@
 <translation id="8161293209665121583">Режим читання для веб-сторінок</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Перемістити вкладку в нове вікно}one{Перемістити вкладки в нове вікно}few{Перемістити вкладки в нове вікно}many{Перемістити вкладки в нове вікно}other{Перемістити вкладки в нове вікно}}</translation>
 <translation id="8165997195302308593">Переадресація порту в Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{номер телефону}one{# номер телефону}few{# номери телефонів}many{# номерів телефонів}other{# номера телефону}}</translation>
 <translation id="8168435359814927499">Вміст</translation>
 <translation id="8168943654413034772">Не можна видалити призначення єдиного перемикача, пов'язаного з дією "Вибрати". Щоб вийти, натисніть будь-яку клавішу.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Додати вкладку в список читання}one{Додати вкладки в список читання}few{Додати вкладки в список читання}many{Додати вкладки в список читання}other{Додати вкладки в список читання}}</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb
index c66ac4f..3640bcc 100644
--- a/chrome/app/resources/generated_resources_uz.xtb
+++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -2391,6 +2391,7 @@
 <translation id="3616741288025931835">Brauzer tarixini &amp;tozalash...</translation>
 <translation id="3617891479562106823">Fon rasmlari mavjud emas. Keyinroq qaytadan urining.</translation>
 <translation id="3619115746895587757">Kappuchino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{ilova}other{# ta ilova}}</translation>
 <translation id="362333465072914957">Sertikatlash markazi sertifikatni tasdiqlashi kutilmoqda</translation>
 <translation id="3624567683873126087">Qurilmani qulfdan chiqarish va Google hisobiga kirish</translation>
 <translation id="3625481642044239431">Yaroqsiz fayl tanlandi. Qaytadan urining.</translation>
@@ -2662,6 +2663,7 @@
 <translation id="3895076768659607631">Qidiruv tizimlarini &amp;boshqarish...</translation>
 <translation id="3895090224522145010">Kerberos uchun foydalanuvchi nomi</translation>
 <translation id="389521680295183045">Saytlarga qurilmadan foydalanishga oid axborotlarni soʻrashga ruxsat berish</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{rasm}other{# ta rasm}}</translation>
 <translation id="3898233949376129212">Qurilmagi til</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> quyidagi ruxsatlarni olmoqchi: <ph name="FIRST_PERMISSION" /> va <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Klaviaturani tanlang</translation>
@@ -3575,6 +3577,7 @@
 <translation id="4943368462779413526">Futbol</translation>
 <translation id="4943691134276646401">“<ph name="CHROME_EXTENSION_NAME" />” seriyali portga ulanmoqchi</translation>
 <translation id="4944310289250773232">Bu autentifikatsiya xizmati <ph name="SAML_DOMAIN" /> domenida joylashgan.</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{fayl}other{# ta fayl}}</translation>
 <translation id="495170559598752135">Harakatlar</translation>
 <translation id="4953808748584563296">Standart to‘q sariq avatar</translation>
 <translation id="4955710816792587366">PIN kod tanlang</translation>
@@ -5074,6 +5077,7 @@
 <translation id="6664237456442406323">Afsuski, kompyuteringiz noto‘g‘ri tuzilgan apparat identifikatori bilan sozlangan. Buning natijasida Chrome OS xavfsizlikka oid so‘nggi tuzatishlar bilan yangilanmaydi va kompyuteringiz <ph name="BEGIN_BOLD" />zararli hujumlarga ochiq qolishi mumkin<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Profilni ochib bo‘lmadi. Tizimdan chiqing va qaytadan kiring.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> hozirda mavjud</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{manzil}other{# ta manzil}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Sinxronlashni boshlash uchun kodli iborani kiriting</translation>
 <translation id="6675665718701918026">Qo‘shimcha qurilma ulandi</translation>
@@ -5770,6 +5774,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Manzilni ochish...</translation>
 <translation id="7457384018036134905">Tillarni Chrome OS sozlamalaridan boshqaring</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{havola}other{# ta havola}}</translation>
 <translation id="7458168200501453431">Google qidiruvida ishlatiladigan imlo tekshiruvi vositasidan foydalanadi. Brauzerda kiritiladigan matn Google serverlariga yuboriladi.</translation>
 <translation id="7460045493116006516">Siz oʻrnatgan joriy mavzu</translation>
 <translation id="7461924472993315131">Qadab qo‘yish</translation>
@@ -6169,6 +6174,7 @@
 <translation id="7883792253546618164">Istalgan vaqt obunani bekor qilish mumkin.</translation>
 <translation id="788453346724465748">Hisob axboroti yuklanmoqda...</translation>
 <translation id="7885253890047913815">Oxirgi ishlatilgan</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{element}other{# ta element}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Nusxalash</translation>
 <translation id="7887864092952184874">Bluetooth sichqonchasi ulandi</translation>
@@ -6408,6 +6414,7 @@
 <translation id="8139447493436036221">Google Drive fayllari</translation>
 <translation id="8141584439523427891">Hozir muqobil brauzerda ochiladi</translation>
 <translation id="8141725884565838206">Parollarni boshqarish</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{video}other{# ta video}}</translation>
 <translation id="8143442547342702591">Yaroqsiz dastur</translation>
 <translation id="8143951647992294073">Tanlash: <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Bu qurilmada ro‘yxatdan o‘tgan bo‘lsangiz, <ph name="LINK2_START" />mavjud foydalanuvchi sifatida tizimga kirishingiz<ph name="LINK2_END" /> mumkin.</translation>
@@ -6427,6 +6434,7 @@
 <translation id="8161293209665121583">Veb sahifalar uchun mutolaa rejimi</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Varaqni yangi oynaga olish}other{Varaqlarni yangi oynaga olish}}</translation>
 <translation id="8165997195302308593">Crostini tizimida portlarni uzatish</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{telefon raqami}other{# ta telefon raqami}}</translation>
 <translation id="8168435359814927499">Kontent</translation>
 <translation id="8168943654413034772">Tanlash amaliga faqat bir tugma belgilangani uchun bekor qilinmadi. Chiqish uchun istalgan tugmani bosing.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Varaqni mutolaa roʻyxatiga kiritish}other{Varaqlarni mutolaa roʻyxatiga kiritish}}</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index 5f26843..86948330 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -1331,6 +1331,7 @@
 <translation id="2440604414813129000">Xem &amp;nguồn</translation>
 <translation id="244231003699905658">Địa chỉ không hợp lệ. Vui lòng kiểm tra địa chỉ rồi thử lại.</translation>
 <translation id="2442916515643169563">Đổ bóng văn bản</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> – <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">Thư mục gốc của tiện ích là bắt buộc.</translation>
 <translation id="2445484935443597917">Tạo hồ sơ mới</translation>
 <translation id="2448312741937722512">Loại</translation>
@@ -2392,6 +2393,7 @@
 <translation id="3616741288025931835">&amp;Xoá Dữ liệu Duyệt web...</translation>
 <translation id="3617891479562106823">Không có nền. Hãy thử lại sau.</translation>
 <translation id="3619115746895587757">Cà phê cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{một ứng dụng}other{# ứng dụng}}</translation>
 <translation id="362333465072914957">Đang đợi tổ chức phát hành chứng chỉ (CA) cấp chứng chỉ</translation>
 <translation id="3624567683873126087">Mở khóa thiết bị và đăng nhập vào Tài khoản Google</translation>
 <translation id="3625481642044239431">Bạn đã chọn tệp không hợp lệ. Hãy thử lại.</translation>
@@ -2663,6 +2665,7 @@
 <translation id="3895076768659607631">&amp;Quản lý công cụ tìm kiếm...</translation>
 <translation id="3895090224522145010">Tên người dùng Kerberos</translation>
 <translation id="389521680295183045">Trang web có thể xin phép phát hiện khi bạn đang dùng thiết bị của mình</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{một hình ảnh}other{# hình ảnh}}</translation>
 <translation id="3898233949376129212">Ngôn ngữ của thiết bị</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> muốn: <ph name="FIRST_PERMISSION" /> và <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Chọn bàn phím</translation>
@@ -3576,6 +3579,7 @@
 <translation id="4943368462779413526">Bóng đá</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" muốn kết nối với một cổng nối tiếp</translation>
 <translation id="4944310289250773232">Dịch vụ xác thực này do <ph name="SAML_DOMAIN" /> lưu trữ</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{một tệp}other{# tệp}}</translation>
 <translation id="495170559598752135">Tác vụ</translation>
 <translation id="4953808748584563296">Hình đại diện màu cam mặc định</translation>
 <translation id="4955710816792587366">Chọn mã PIN</translation>
@@ -4643,6 +4647,7 @@
 <translation id="6184099524311454384">Tìm kiếm thẻ</translation>
 <translation id="6185132558746749656">Vị trí thiết bị</translation>
 <translation id="6186394437969115158">Các trang web thường hiển thị quảng cáo để cung cấp miễn phí nội dung hoặc dịch vụ. Tuy nhiên, một số trang web được xác định là hiển thị quảng cáo xâm nhập hoặc quảng cáo gây hiểu nhầm.</translation>
+<translation id="6195005504600220730">Đọc thông tin về trình duyệt, hệ điều hành và thiết bị của bạn</translation>
 <translation id="6195693561221576702">Không thể thiết lập thiết bị này ở chế độ minh họa ngoại tuyến.</translation>
 <translation id="6195724942939841102">Không khôi phục</translation>
 <translation id="6196640612572343990">Chặn cookie của bên thứ ba</translation>
@@ -5074,6 +5079,7 @@
 <translation id="6664237456442406323">Rất tiếc, máy tính của bạn được định cấu hình bằng ID phần cứng không đúng định dạng. Điều này ngăn Chrome OS cập nhật các bản vá bảo mật mới nhất và máy tính của bạn <ph name="BEGIN_BOLD" />có thể bị các cuộc tấn công làm hại<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Đã xảy ra sự cố khi mở hồ sơ của bạn. Vui lòng đăng xuất rồi đăng nhập lại.</translation>
 <translation id="6670142487971298264">Bạn hiện có thể dùng <ph name="APP_NAME" /></translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{một địa chỉ}other{# địa chỉ}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Để bắt đầu đồng bộ hóa, hãy nhập cụm mật khẩu của bạn</translation>
 <translation id="6675665718701918026">Đã kết nối thiết bị trỏ</translation>
@@ -5770,6 +5776,7 @@
 <translation id="7456142309650173560">nhà phát triển</translation>
 <translation id="7456847797759667638">Mở Vị trí...</translation>
 <translation id="7457384018036134905">Quản lý ngôn ngữ trong phần cài đặt của Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{một đường liên kết}other{# đường liên kết}}</translation>
 <translation id="7458168200501453431">Sử dụng chính trình kiểm tra chính tả được dùng trong tính năng tìm kiếm của Google. Thông tin bạn nhập vào trình duyệt sẽ được gửi tới Google.</translation>
 <translation id="7460045493116006516">Giao diện hiện tại mà bạn đã cài đặt</translation>
 <translation id="7461924472993315131">Ghim</translation>
@@ -6170,6 +6177,7 @@
 <translation id="7883792253546618164">Bạn có thể hủy đăng ký bất kỳ lúc nào.</translation>
 <translation id="788453346724465748">Đang tải thông tin tài khoản...</translation>
 <translation id="7885253890047913815">Máy in đích gần đây</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{một mục}other{# mục}}</translation>
 <translation id="7886605625338676841">eSIM</translation>
 <translation id="7887334752153342268">Nhân đôi</translation>
 <translation id="7887864092952184874">Đã ghép nối chuột Bluetooth</translation>
@@ -6410,6 +6418,7 @@
 <translation id="8139447493436036221">Tệp trên Google Drive</translation>
 <translation id="8141584439523427891">Đang mở trong trình duyệt thay thế</translation>
 <translation id="8141725884565838206">Quản lý mật khẩu của bạn</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{một video}other{# video}}</translation>
 <translation id="8143442547342702591">Ứng dụng không hợp lệ</translation>
 <translation id="8143951647992294073">Chọn <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Nếu bạn đã đăng ký trên thiết bị này, bạn có thể <ph name="LINK2_START" />đăng nhập với tư cách là người dùng hiện tại<ph name="LINK2_END" />.</translation>
@@ -6429,6 +6438,7 @@
 <translation id="8161293209665121583">Chế độ đọc dành cho trang web</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Di chuyển thẻ sang cửa sổ mới}other{Di chuyển các thẻ sang cửa sổ mới}}</translation>
 <translation id="8165997195302308593">Chuyển tiếp cổng Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{một số điện thoại}other{# số điện thoại}}</translation>
 <translation id="8168435359814927499">Nội dung</translation>
 <translation id="8168943654413034772">Không thể xóa công tắc duy nhất được gán cho thao tác Chọn. Hãy nhấn phím bất kỳ để thoát.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Thêm thẻ vào danh sách đọc}other{Thêm các thẻ vào danh sách đọc}}</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index b5381ee6..404b4dc3 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -2387,6 +2387,7 @@
 <translation id="3616741288025931835">清除浏览数据(&amp;C)...</translation>
 <translation id="3617891479562106823">背景不可用。请稍后重试。</translation>
 <translation id="3619115746895587757">卡布奇诺</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{1 款应用}other{# 款应用}}</translation>
 <translation id="362333465072914957">正在等待 CA 颁发证书</translation>
 <translation id="3624567683873126087">解锁设备并登录 Google 帐号</translation>
 <translation id="3625481642044239431">所选的文件无效。请重试。</translation>
@@ -2658,6 +2659,7 @@
 <translation id="3895076768659607631">管理搜索引擎(&amp;M)…</translation>
 <translation id="3895090224522145010">Kerberos 用户名</translation>
 <translation id="389521680295183045">网站可以询问能否了解您何时在主动使用自己的设备</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{1 张图片}other{# 张图片}}</translation>
 <translation id="3898233949376129212">设备语言</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> 想获得以下权限:<ph name="FIRST_PERMISSION" />和<ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">选择键盘</translation>
@@ -3570,6 +3572,7 @@
 <translation id="4943368462779413526">美式足球</translation>
 <translation id="4943691134276646401">“<ph name="CHROME_EXTENSION_NAME" />”想连接到串行端口</translation>
 <translation id="4944310289250773232">此项身份验证服务由 <ph name="SAML_DOMAIN" /> 托管</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{1 个文件}other{# 个文件}}</translation>
 <translation id="495170559598752135">操作</translation>
 <translation id="4953808748584563296">默认的橙色头像</translation>
 <translation id="4955710816792587366">选择 PIN 码</translation>
@@ -5068,6 +5071,7 @@
 <translation id="6664237456442406323">很遗憾,您的计算机配置了格式错误的硬件 ID。这导致 Chrome 操作系统无法使用最新的安全修正程序进行更新,以致您的计算机<ph name="BEGIN_BOLD" />很容易遭到恶意攻击<ph name="END_BOLD" />。</translation>
 <translation id="6664774537677393800">打开您的个人资料时出了点问题。请先退出,然后重新登录。</translation>
 <translation id="6670142487971298264">现在可以使用“<ph name="APP_NAME" />”了</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{1 个地址}other{# 个地址}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">若要开始同步,请输入您的密码</translation>
 <translation id="6675665718701918026">已连接指针设备</translation>
@@ -5764,6 +5768,7 @@
 <translation id="7456142309650173560">开发者版本</translation>
 <translation id="7456847797759667638">打开位置...</translation>
 <translation id="7457384018036134905">在 Chrome 操作系统设置中管理语言</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{1 个链接}other{# 个链接}}</translation>
 <translation id="7458168200501453431">使用 Google 搜索所用的拼写检查工具。您在浏览器中输入的文字会被发送给 Google。</translation>
 <translation id="7460045493116006516">您已安装的当前主题背景</translation>
 <translation id="7461924472993315131">固定</translation>
@@ -6164,6 +6169,7 @@
 <translation id="7883792253546618164">可随时退订。</translation>
 <translation id="788453346724465748">正在加载帐号信息…</translation>
 <translation id="7885253890047913815">近期使用过的目标打印机</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{1 项内容}other{# 项内容}}</translation>
 <translation id="7886605625338676841">eSIM 卡</translation>
 <translation id="7887334752153342268">复制</translation>
 <translation id="7887864092952184874">蓝牙鼠标已配对</translation>
@@ -6403,6 +6409,7 @@
 <translation id="8139447493436036221">Google 云端硬盘文件</translation>
 <translation id="8141584439523427891">目前正在替代浏览器中打开</translation>
 <translation id="8141725884565838206">管理您的密码</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{1 个视频}other{# 个视频}}</translation>
 <translation id="8143442547342702591">无效的应用</translation>
 <translation id="8143951647992294073">选择 <ph name="TOPIC_SOURCE" /> - <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">如果您已在此设备上注册,就能<ph name="LINK2_START" />以现有用户的身份登录<ph name="LINK2_END" />。</translation>
@@ -6422,6 +6429,7 @@
 <translation id="8161293209665121583">使用阅读器模式显示网页</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{将标签页移至新窗口}other{将标签页移至新窗口}}</translation>
 <translation id="8165997195302308593">Crostini 端口转发</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{1 个电话号码}other{# 个电话号码}}</translation>
 <translation id="8168435359814927499">内容</translation>
 <translation id="8168943654413034772">这是为“选择”操作分配的唯一开关,因此无法移除。按任意键即可退出。</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{向阅读清单中添加 1 个标签页}other{向阅读清单中添加多个标签页}}</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb
index 1b659fb..0c1195cb 100644
--- a/chrome/app/resources/generated_resources_zh-HK.xtb
+++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -1330,6 +1330,7 @@
 <translation id="2440604414813129000">檢視原始碼(&amp;O)</translation>
 <translation id="244231003699905658">地址無效。請檢查地址,然後再試一次。</translation>
 <translation id="2442916515643169563">文字陰影</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">請指定擴充功能根目錄。</translation>
 <translation id="2445484935443597917">建立新的設定檔</translation>
 <translation id="2448312741937722512">類型</translation>
@@ -2391,6 +2392,7 @@
 <translation id="3616741288025931835">清除瀏覽數據(&amp;C)…</translation>
 <translation id="3617891479562106823">無法自訂背景,請稍候再試。</translation>
 <translation id="3619115746895587757">泡沫咖啡</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{1 個應用程式}other{# 個應用程式}}</translation>
 <translation id="362333465072914957">正在等待 CA 發出憑證</translation>
 <translation id="3624567683873126087">解鎖裝置和登入 Google 帳戶</translation>
 <translation id="3625481642044239431">所選的檔案無效,請再試一次。</translation>
@@ -2662,6 +2664,7 @@
 <translation id="3895076768659607631">管理搜尋引擎…(&amp;M)</translation>
 <translation id="3895090224522145010">Kerberos 使用者名稱</translation>
 <translation id="389521680295183045">網站可以要求偵測您使用裝置的時間</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{1 張圖片}other{# 張圖片}}</translation>
 <translation id="3898233949376129212">裝置語言</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> 需要你批准:<ph name="FIRST_PERMISSION" />同埋<ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">選取鍵盤</translation>
@@ -3575,6 +3578,7 @@
 <translation id="4943368462779413526">美式足球</translation>
 <translation id="4943691134276646401">「<ph name="CHROME_EXTENSION_NAME" />」要求與序列連接埠連線</translation>
 <translation id="4944310289250773232">此驗證服務由 <ph name="SAML_DOMAIN" /> 代管</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{1 個檔案}other{# 個檔案}}</translation>
 <translation id="495170559598752135">動作</translation>
 <translation id="4953808748584563296">預設橙色圖片</translation>
 <translation id="4955710816792587366">選擇 PIN</translation>
@@ -4642,6 +4646,7 @@
 <translation id="6184099524311454384">搜尋分頁</translation>
 <translation id="6185132558746749656">裝置位置</translation>
 <translation id="6186394437969115158">網站通常要顯示廣告,才能免費提供內容或服務。不過,部分網站會顯示滋擾性或誤導廣告。</translation>
+<translation id="6195005504600220730">讀取您的瀏覽器、作業系統和裝置相關資料</translation>
 <translation id="6195693561221576702">無法在此裝置上設定離線示範模式。</translation>
 <translation id="6195724942939841102">不要還原</translation>
 <translation id="6196640612572343990">封鎖第三方 Cookie</translation>
@@ -5073,6 +5078,7 @@
 <translation id="6664237456442406323">抱歉,您的電腦是由格式錯誤的硬件 ID 所設定。這樣會防止 Chrome 作業系統更新最新的安全性修復,您的電腦也可能<ph name="BEGIN_BOLD" />容易被惡意攻擊<ph name="END_BOLD" />。</translation>
 <translation id="6664774537677393800">開啟您的設定檔時發生錯誤,請先登出,然後再次登入。</translation>
 <translation id="6670142487971298264">「<ph name="APP_NAME" />」現已推出</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{1 個地址}other{# 個地址}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">如要開始同步處理,請輸入密碼短語</translation>
 <translation id="6675665718701918026">已連接指標裝置</translation>
@@ -5769,6 +5775,7 @@
 <translation id="7456142309650173560">開發人員版</translation>
 <translation id="7456847797759667638">開啟位置…</translation>
 <translation id="7457384018036134905">管理 Chrome 作業系統中的語言</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{1 個連結}other{# 個連結}}</translation>
 <translation id="7458168200501453431">系統會使用與「Google 搜尋」相同的的拼字檢查工具。您在瀏覽器輸入的文字將會傳送給 Google。</translation>
 <translation id="7460045493116006516">您目前安裝的主題</translation>
 <translation id="7461924472993315131">Pin</translation>
@@ -6169,6 +6176,7 @@
 <translation id="7883792253546618164">您可隨時取消訂閱。</translation>
 <translation id="788453346724465748">正在載入帳戶資料…</translation>
 <translation id="7885253890047913815">最近的目的地</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{1 個項目}other{# 個項目}}</translation>
 <translation id="7886605625338676841">eSIM 卡</translation>
 <translation id="7887334752153342268">複製</translation>
 <translation id="7887864092952184874">已配對藍牙滑鼠</translation>
@@ -6408,6 +6416,7 @@
 <translation id="8139447493436036221">「Google 雲端硬碟」檔案</translation>
 <translation id="8141584439523427891">正在替代瀏覽器中開啟</translation>
 <translation id="8141725884565838206">管理您的密碼</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{1 部影片}other{# 部影片}}</translation>
 <translation id="8143442547342702591">無效的應用程式</translation>
 <translation id="8143951647992294073">揀「<ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" />」</translation>
 <translation id="8146177459103116374">如果您已在這部裝置上註冊,您可以<ph name="LINK2_START" />用現有的使用者身分登入<ph name="LINK2_END" />。</translation>
@@ -6427,6 +6436,7 @@
 <translation id="8161293209665121583">使用閱讀器模式查看網頁</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{將分頁移至新視窗}other{將分頁移至新視窗}}</translation>
 <translation id="8165997195302308593">Crostini 連接埠轉送</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{1 個電話號碼}other{# 個電話號碼}}</translation>
 <translation id="8168435359814927499">內容</translation>
 <translation id="8168943654413034772">這是為「選取」動作指派的唯一按鍵,因此無法移除。請按任何按鍵以離開。</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{將分頁新增至閱讀清單}other{將分頁新增至閱讀清單}}</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 645b6ec1..4dc84e0 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -1330,6 +1330,7 @@
 <translation id="2440604414813129000">檢視原始碼(&amp;O)</translation>
 <translation id="244231003699905658">位址無效。請檢查位址是否正確,然後再試一次。</translation>
 <translation id="2442916515643169563">文字陰影</translation>
+<translation id="24437238714184182"><ph name="SPAN_1_START" /><ph name="NETWORK_NAME" /><ph name="SPAN_1_END" /> - <ph name="SPAN_2_START" /><ph name="CARRIER_NAME" /><ph name="SPAN_2_END" /></translation>
 <translation id="2445081178310039857">請指定擴充功能根目錄。</translation>
 <translation id="2445484935443597917">建立新的個人資料</translation>
 <translation id="2448312741937722512">類型</translation>
@@ -2391,6 +2392,7 @@
 <translation id="3616741288025931835">清除瀏覽資料(&amp;C)...</translation>
 <translation id="3617891479562106823">目前無法存取背景,請稍後再試。</translation>
 <translation id="3619115746895587757">卡布奇諾</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{1 個應用程式}other{# 個應用程式}}</translation>
 <translation id="362333465072914957">正在等待 CA 核發憑證</translation>
 <translation id="3624567683873126087">解鎖裝置並登入 Google 帳戶</translation>
 <translation id="3625481642044239431">選取的檔案無效,請再試一次。</translation>
@@ -2662,6 +2664,7 @@
 <translation id="3895076768659607631">管理搜尋引擎...(&amp;M)</translation>
 <translation id="3895090224522145010">Kerberos 使用者名稱</translation>
 <translation id="389521680295183045">網站可以要求偵測你使用裝置的時間</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{1 張圖片}other{# 張圖片}}</translation>
 <translation id="3898233949376129212">裝置語言</translation>
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> 要求<ph name="FIRST_PERMISSION" />以及<ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">選取鍵盤</translation>
@@ -3574,6 +3577,7 @@
 <translation id="4943368462779413526">足球</translation>
 <translation id="4943691134276646401">「<ph name="CHROME_EXTENSION_NAME" />」要求與序列埠連線</translation>
 <translation id="4944310289250773232">這是由 <ph name="SAML_DOMAIN" /> 代管的驗證服務</translation>
+<translation id="495164417696120157">{COUNT,plural, =1{1 個檔案}other{# 個檔案}}</translation>
 <translation id="495170559598752135">動作</translation>
 <translation id="4953808748584563296">預設的橘色顯示圖片</translation>
 <translation id="4955710816792587366">選擇 PIN 碼</translation>
@@ -4641,6 +4645,7 @@
 <translation id="6184099524311454384">搜尋分頁</translation>
 <translation id="6185132558746749656">裝置位置</translation>
 <translation id="6186394437969115158">網站通常會顯示廣告,以便提供免費的內容或服務。不過,某些網站會顯示干擾性或誤導性的廣告。</translation>
+<translation id="6195005504600220730">讀取瀏覽器、OS 和裝置相關資訊</translation>
 <translation id="6195693561221576702">這個裝置無法設為離線示範模式。</translation>
 <translation id="6195724942939841102">不要還原</translation>
 <translation id="6196640612572343990">封鎖第三方 Cookie</translation>
@@ -5072,6 +5077,7 @@
 <translation id="6664237456442406323">抱歉,你的電腦是由格式錯誤的硬體 ID 所設定。這樣會防止 Chrome 作業系統更新最新的安全性修復,你的電腦也可能<ph name="BEGIN_BOLD" />容易遭受惡意攻擊<ph name="END_BOLD" />。</translation>
 <translation id="6664774537677393800">開啟你的設定檔時發生錯誤。請先登出,然後再次登入。</translation>
 <translation id="6670142487971298264">現在可以使用「<ph name="APP_NAME" />」了</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{1 個地址}other{# 個地址}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">如要開始同步處理,請輸入通關密語</translation>
 <translation id="6675665718701918026">已連上指標裝置</translation>
@@ -5768,6 +5774,7 @@
 <translation id="7456142309650173560">開發人員版</translation>
 <translation id="7456847797759667638">開啟位置...</translation>
 <translation id="7457384018036134905">在 Chrome 作業系統設定中管理語言</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{1 個連結}other{# 個連結}}</translation>
 <translation id="7458168200501453431">系統會使用與 Google 搜尋相同的拼字檢查技術,將你在瀏覽器中輸入的文字傳送給 Google。</translation>
 <translation id="7460045493116006516">你目前安裝的主題</translation>
 <translation id="7461924472993315131">固定</translation>
@@ -6168,6 +6175,7 @@
 <translation id="7883792253546618164">你隨時可以取消訂閱。</translation>
 <translation id="788453346724465748">正在載入帳戶資訊...</translation>
 <translation id="7885253890047913815">最近用過的印表機</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{1 個項目}other{# 個項目}}</translation>
 <translation id="7886605625338676841">eSIM 卡</translation>
 <translation id="7887334752153342268">複製</translation>
 <translation id="7887864092952184874">已配對藍牙滑鼠</translation>
@@ -6407,6 +6415,7 @@
 <translation id="8139447493436036221">Google 雲端硬碟檔案</translation>
 <translation id="8141584439523427891">正在替代瀏覽器中開啟</translation>
 <translation id="8141725884565838206">管理你的密碼</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{1 部影片}other{# 部影片}}</translation>
 <translation id="8143442547342702591">應用程式無效</translation>
 <translation id="8143951647992294073">選取「<ph name="TOPIC_SOURCE" /><ph name="TOPIC_SOURCE_DESC" />」</translation>
 <translation id="8146177459103116374">如果你已在這部裝置上註冊,你可以<ph name="LINK2_START" />用現有的使用者身分登入<ph name="LINK2_END" />。</translation>
@@ -6426,6 +6435,7 @@
 <translation id="8161293209665121583">使用閱讀器模式查看網頁</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{將分頁移到新視窗}other{將分頁移到新視窗}}</translation>
 <translation id="8165997195302308593">Crostini 連接埠轉送</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{1 組電話號碼}other{# 組電話號碼}}</translation>
 <translation id="8168435359814927499">內容</translation>
 <translation id="8168943654413034772">這是為「選取」動作指派的唯一切換按鍵,因此無法移除。按下任何按鍵即可結束作業。</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{將分頁新增至閱讀清單}other{將分頁新增至閱讀清單}}</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb
index 2f2dbbd..9bc4096 100644
--- a/chrome/app/resources/generated_resources_zu.xtb
+++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -2392,6 +2392,7 @@
 <translation id="3616741288025931835">Sula idatha yokudlulisa amehlo...</translation>
 <translation id="3617891479562106823">Ingemuva alitholakali. Zama futhi kamuva.</translation>
 <translation id="3619115746895587757">I-Cappuccino</translation>
+<translation id="362266093274784978">{COUNT,plural, =1{i-app}one{ama-app angu-#}other{ama-app angu-#}}</translation>
 <translation id="362333465072914957">Kulindelwe i-CA ukuba ikhiphe isitifiketi</translation>
 <translation id="3624567683873126087">Vula idivayisi bese ungene ngemvume ku-akhawunti ye-Google</translation>
 <translation id="3625481642044239431">Ifayela elingavumelekile likhethiwe. Zama futhi.</translation>
@@ -2663,6 +2664,7 @@
 <translation id="3895076768659607631">&amp;Phatha Izinjini Zokusesha...</translation>
 <translation id="3895090224522145010">Igama lomsebenzisi le-Kerberos</translation>
 <translation id="389521680295183045">Amasayithi angabuza ukuze azi ukuthi uyisebenzisa nini idivayisi yakho</translation>
+<translation id="3897298432557662720">{COUNT,plural, =1{isithombe}one{izithombe ezingu-#}other{izithombe ezingu-#}}</translation>
 <translation id="3898233949376129212">Ulimi lwedivayisi</translation>
 <translation id="3898327728850887246">I-<ph name="SITE_NAME" /> ifuna: <ph name="FIRST_PERMISSION" /> ne-<ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Khetha ikhibhodi</translation>
@@ -3575,6 +3577,7 @@
 <translation id="4943368462779413526">Ibhola lezinyawo</translation>
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ifuna ukuxhuma embobeni yesiriyeli</translation>
 <translation id="4944310289250773232">Le sevisi yokufakazela ubuqiniso isingethwe i-<ph name="SAML_DOMAIN" /></translation>
+<translation id="495164417696120157">{COUNT,plural, =1{ifayela}one{amafayela angu-#}other{amafayela angu-#}}</translation>
 <translation id="495170559598752135">Izenzo</translation>
 <translation id="4953808748584563296">Isithombe esizenzakalelayo esiwolintshi</translation>
 <translation id="4955710816792587366">Khetha i-PIN yakho</translation>
@@ -5077,6 +5080,7 @@
 <translation id="6664237456442406323">Ngeshwa, ikhompyutha yakho ilungiselelwe nge-ID yezingxenyekazi zekhompyutha ezingekho kahle. Lokhu kuvimbela i-Chrome OS kusukela ekubuyekezeni ngokulungiswa kwakamuva kwezokuvikela futhi ikhompyutha yakho <ph name="BEGIN_BOLD" />ingaba sengcupheni yokuhlaselwa okuyingozo<ph name="END_BOLD" />.</translation>
 <translation id="6664774537677393800">Kukhona okungahambanga kahle ngenkathi kuvulwa iphrofayela yakho. Sicela uphume ngemvume bese uphinda ungena ngemvume.</translation>
 <translation id="6670142487971298264">I-<ph name="APP_NAME" /> manje seyiyatholakala</translation>
+<translation id="6671320560732140690">{COUNT,plural, =1{ikheli}one{amakheli angu-#}other{amakheli angu-#}}</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Ukuze uqale ukuvumelanisa, faka umushwana wakho wokungena</translation>
 <translation id="6675665718701918026">Ikhomba idivayisi exhunyiwe</translation>
@@ -5773,6 +5777,7 @@
 <translation id="7456142309650173560">i-dev</translation>
 <translation id="7456847797759667638">Vula indawo...</translation>
 <translation id="7457384018036134905">Phatha izilimi kumasethingi e-Chrome OS</translation>
+<translation id="7457831169406914076">{COUNT,plural, =1{isixhumanisi}one{izixhumanisi ezingu-#}other{izixhumanisi ezingu-#}}</translation>
 <translation id="7458168200501453431">Isebenzisa isihloli sokupela esifanayo esisetshenziswe kusesho lwe-Google. Umbhalo owuthayipha kusiphequluli uthunyelwe ku-Google.</translation>
 <translation id="7460045493116006516">Itimu yamanje oyifakile</translation>
 <translation id="7461924472993315131">Phina</translation>
@@ -6173,6 +6178,7 @@
 <translation id="7883792253546618164">Zikhiphe ohlwini noma nini.</translation>
 <translation id="788453346724465748">Ilayisha ulwazi lwe-akhawunti...</translation>
 <translation id="7885253890047913815">Izindawo zakamuva</translation>
+<translation id="7886279613512920452">{COUNT,plural, =1{into}one{izinto ezingu-#}other{izinto ezingu-#}}</translation>
 <translation id="7886605625338676841">I-eSIM</translation>
 <translation id="7887334752153342268">Impinda</translation>
 <translation id="7887864092952184874">Igundane le-Bluetooth libhanqiwe</translation>
@@ -6412,6 +6418,7 @@
 <translation id="8139447493436036221">Amafayela we-Google Drive</translation>
 <translation id="8141584439523427891">Ivula kwesinye isiphequluli manje</translation>
 <translation id="8141725884565838206">Phatha amaphasiwedi wakho</translation>
+<translation id="814204052173971714">{COUNT,plural, =1{ividiyo}one{amavidiyo angu-#}other{amavidiyo angu-#}}</translation>
 <translation id="8143442547342702591">Uhlelo lokusebenza olungavumelekile</translation>
 <translation id="8143951647992294073">Khetha i-<ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation>
 <translation id="8146177459103116374">Uma ngabe usuvele ubhalisile kule divayisi, <ph name="LINK2_START" />ungangena ngemvume njengomsebenzisi okhona<ph name="LINK2_END" />.</translation>
@@ -6431,6 +6438,7 @@
 <translation id="8161293209665121583">Imodi yomfundi yamakhasi ewebhu</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Hambisa ithebhu kuwindi elisha}one{Hambisa amathebhu kuwindi elisha}other{Hambisa amathebhu kuwindi elisha}}</translation>
 <translation id="8165997195302308593">Ukudlulisela ngembobo ye-Crostini</translation>
+<translation id="816704878106051517">{COUNT,plural, =1{inombolo yefoni}one{izinombolo zefoni ezingu-#}other{izinombolo zefoni ezingu-#}}</translation>
 <translation id="8168435359814927499">Okuqukethwe</translation>
 <translation id="8168943654413034772">Ayikwazi ukususa iswishi okuyiyo kuphela enikezwe Ukukhetha. Cindezela noma yimuphi ukhiye ukuze uphume.</translation>
 <translation id="8169165065843881617">{NUM_TABS,plural, =1{Engeza Ithebhu Kuhlu Lokufunda}one{Engeza Amathebhu Kuhlu Lokufunda}other{Engeza Amathebhu Kuhlu Lokufunda}}</translation>
diff --git a/chrome/app/resources/google_chrome_strings_az.xtb b/chrome/app/resources/google_chrome_strings_az.xtb
index c1b8c99..a11eecab 100644
--- a/chrome/app/resources/google_chrome_strings_az.xtb
+++ b/chrome/app/resources/google_chrome_strings_az.xtb
@@ -252,6 +252,7 @@
 <translation id="7905891027772979035">Chrome artırmalarınızı yoxlaya bilmir. Sonra yenidən cəhd edin.</translation>
 <translation id="7930071585467473040">Google Chrome parolları kopyalamağa çalışır.</translation>
 <translation id="7962410387636238736">Windows XP və Windows Vista artıq dəstəklənmədiyi üçün bu kompüter Google Chrome güncəlləmələrini qəbul etməyəcək</translation>
+<translation id="79947657522496226">Chrome OS <ph name="BEGIN_LINK_LINUX_OSS" />Linux tərtibat mühiti<ph name="END_LINK_LINUX_OSS" /> kimi əlavə <ph name="BEGIN_LINK_CROS_OSS" />açıq mənbə proqram təminatı<ph name="END_LINK_CROS_OSS" /> ilə əlçatan edilib.</translation>
 <translation id="8008534537613507642">Chrome'u yenidən quraşdırın</translation>
 <translation id="8013993649590906847">Şəklin təsviri faydalı deyilsə, Chrome Sizin üçün təsviri təmin etməyə çalışacaq. Təsvir yaratmaq üçün şəkillər Google'a göndərilir.</translation>
 <translation id="8129812357326543296">Google Chrome haqqında</translation>
diff --git a/chrome/app/resources/google_chrome_strings_de.xtb b/chrome/app/resources/google_chrome_strings_de.xtb
index 11c0b38..6daf67f 100644
--- a/chrome/app/resources/google_chrome_strings_de.xtb
+++ b/chrome/app/resources/google_chrome_strings_de.xtb
@@ -248,6 +248,7 @@
 <translation id="7905891027772979035">Chrome kann Ihre Erweiterungen nicht prüfen. Versuchen Sie es später noch einmal.</translation>
 <translation id="7930071585467473040">Google Chrome versucht, Passwörter zu kopieren.</translation>
 <translation id="7962410387636238736">Dieser Computer erhält keine Google Chrome-Updates mehr, da Windows XP und Windows Vista nicht mehr unterstützt werden</translation>
+<translation id="79947657522496226">Chrome OS und die <ph name="BEGIN_LINK_LINUX_OSS" />Linux-Entwicklungsumgebung<ph name="END_LINK_LINUX_OSS" /> werden durch zusätzliche <ph name="BEGIN_LINK_CROS_OSS" />Open-Source-Software<ph name="END_LINK_CROS_OSS" /> ermöglicht.</translation>
 <translation id="8008534537613507642">Chrome erneut installieren</translation>
 <translation id="8013993649590906847">Wenn ein Bild keine brauchbare Beschreibung hat, versucht Chrome, eine für Sie zu finden. Damit entsprechende Beschreibungen erstellt werden können, werden die Bilder an Google gesendet.</translation>
 <translation id="8129812357326543296">Über &amp;Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es-419.xtb b/chrome/app/resources/google_chrome_strings_es-419.xtb
index 7767650..1ae697d 100644
--- a/chrome/app/resources/google_chrome_strings_es-419.xtb
+++ b/chrome/app/resources/google_chrome_strings_es-419.xtb
@@ -249,6 +249,7 @@
 <translation id="7905891027772979035">Chrome no puede revisar las extensiones. Vuelve a intentarlo más tarde.</translation>
 <translation id="7930071585467473040">Google Chrome está intentando copiar contraseñas.</translation>
 <translation id="7962410387636238736">Esta computadora dejará de recibir actualizaciones de Google Chrome porque Windows XP y Windows Vista ya no son compatibles</translation>
+<translation id="79947657522496226">Chrome OS funciona gracias a <ph name="BEGIN_LINK_CROS_OSS" />software de código abierto<ph name="END_LINK_CROS_OSS" /> adicional, como <ph name="BEGIN_LINK_LINUX_OSS" />el entorno de desarrollo de Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="8008534537613507642">Reinstalar Chrome</translation>
 <translation id="8013993649590906847">Si una imagen no tiene una descripción útil, Chrome intentará proporcionarte una. Para crear descripciones, se envían las imágenes a Google.</translation>
 <translation id="8129812357326543296">Acerca de &amp;Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es.xtb b/chrome/app/resources/google_chrome_strings_es.xtb
index 878f7062..aa57572 100644
--- a/chrome/app/resources/google_chrome_strings_es.xtb
+++ b/chrome/app/resources/google_chrome_strings_es.xtb
@@ -257,6 +257,7 @@
 <translation id="7905891027772979035">Chrome no puede comprobar tus extensiones. Vuelve a intentarlo más tarde.</translation>
 <translation id="7930071585467473040">Google Chrome está intentando copiar contraseñas.</translation>
 <translation id="7962410387636238736">Este ordenador dejará de recibir actualizaciones de Google Chrome porque ya no es compatible con Windows XP ni Windows Vista.</translation>
+<translation id="79947657522496226">Chrome OS se ha creado gracias a <ph name="BEGIN_LINK_CROS_OSS" />software libre<ph name="END_LINK_CROS_OSS" /> adicional, como el <ph name="BEGIN_LINK_LINUX_OSS" />entorno de desarrollo de Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="8008534537613507642">Reinstalar Chrome</translation>
 <translation id="8013993649590906847">Si una imagen no tiene ninguna descripción útil, Chrome intentará proporcionártela. Para crear las descripciones, las imágenes se envían a Google.</translation>
 <translation id="8129812357326543296">Información de &amp;Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_eu.xtb b/chrome/app/resources/google_chrome_strings_eu.xtb
index 51272d57..c7c10742 100644
--- a/chrome/app/resources/google_chrome_strings_eu.xtb
+++ b/chrome/app/resources/google_chrome_strings_eu.xtb
@@ -52,7 +52,7 @@
 <translation id="2123055963409958220">Lagundu Chrome hobetzen <ph name="BEGIN_LINK" />oraingo ezarpenen<ph name="END_LINK" /> berri emanda</translation>
 <translation id="2151406531797534936">Berrabiarazi Chrome</translation>
 <translation id="2246246234298806438">Google Chrome-k ezin du erakutsi inprimatze-aurrebista PDF dokumentuen ikustaile inkorporatua falta bada.</translation>
-<translation id="2290014774651636340">Google APIaren gakoak falta dira. Agian Google Chrome-ren funtzio batzuk desgaituta egongo dira.</translation>
+<translation id="2290014774651636340">Google APIko gakoak falta dira. Agian Google Chrome-ren funtzio batzuk desgaituta egongo dira.</translation>
 <translation id="2290095356545025170">Ziur Google Chrome desinstalatu nahi duzula?</translation>
 <translation id="2309047409763057870">Google Chrome-ren bigarren mailako instalazio bat da hau; beraz, ezin duzu ezarri arakatzaile lehenetsi gisa.</translation>
 <translation id="2348335408836342058">Chrome-k webgune honen izenean kamera eta mikrofonoa atzitzeko baimena behar du</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr.xtb b/chrome/app/resources/google_chrome_strings_fr.xtb
index 6f2f2ce..61d4f15 100644
--- a/chrome/app/resources/google_chrome_strings_fr.xtb
+++ b/chrome/app/resources/google_chrome_strings_fr.xtb
@@ -255,6 +255,7 @@
 <translation id="7905891027772979035">Chrome ne parvient pas à vérifier vos extensions. Réessayez plus tard.</translation>
 <translation id="7930071585467473040">Google Chrome tente de copier les mots de passe.</translation>
 <translation id="7962410387636238736">Cet ordinateur ne recevra plus les mises à jour de Google Chrome, car la compatibilité n'est plus assurée sur Windows XP et Windows Vista</translation>
+<translation id="79947657522496226">Chrome OS fonctionne grâce à d'autres <ph name="BEGIN_LINK_CROS_OSS" />logiciels Open Source<ph name="END_LINK_CROS_OSS" />, tout comme l'<ph name="BEGIN_LINK_LINUX_OSS" />environnement de développement Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="8008534537613507642">Réinstaller Chrome</translation>
 <translation id="8013993649590906847">Si une image n'est pas accompagnée d'une description utile, Chrome essaiera de vous en proposer une. Pour nous permettre de créer des descriptions, les images sont envoyées à Google.</translation>
 <translation id="8129812357326543296">À propos de &amp;Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_id.xtb b/chrome/app/resources/google_chrome_strings_id.xtb
index 42c047dc..da6ff2a 100644
--- a/chrome/app/resources/google_chrome_strings_id.xtb
+++ b/chrome/app/resources/google_chrome_strings_id.xtb
@@ -249,6 +249,7 @@
 <translation id="7905891027772979035">Chrome tidak dapat memeriksa ekstensi Anda. Coba lagi nanti.</translation>
 <translation id="7930071585467473040">Google Chrome mencoba menyalin sandi.</translation>
 <translation id="7962410387636238736">Komputer ini tidak akan menerima update Google Chrome lagi karena Windows XP dan Windows Vista sudah tidak didukung</translation>
+<translation id="79947657522496226">Chrome OS terwujud karena adanya <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> tambahan, seperti <ph name="BEGIN_LINK_LINUX_OSS" />lingkungan pengembangan Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="8008534537613507642">Instal Ulang Chrome</translation>
 <translation id="8013993649590906847">Jika gambar tidak memiliki deskripsi yang berguna, Chrome akan mencoba memberikan deskripsi untuk Anda. Untuk membuat deskripsi, gambar akan dikirim ke Google.</translation>
 <translation id="8129812357326543296">Tentang &amp;Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_it.xtb b/chrome/app/resources/google_chrome_strings_it.xtb
index defbfe2..a442c85e 100644
--- a/chrome/app/resources/google_chrome_strings_it.xtb
+++ b/chrome/app/resources/google_chrome_strings_it.xtb
@@ -247,6 +247,7 @@
 <translation id="7905891027772979035">Chrome non può controllare le tue estensioni. Riprova più tardi.</translation>
 <translation id="7930071585467473040">Google Chrome sta cercando di copiare le password.</translation>
 <translation id="7962410387636238736">Questo computer non riceverà più gli aggiornamenti di Google Chrome perché Windows XP e Windows Vista non sono più supportati.</translation>
+<translation id="79947657522496226">La realizzazione di Chrome OS è stata possibile grazie a <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> aggiuntivo, noto come <ph name="BEGIN_LINK_LINUX_OSS" />ambiente di sviluppo Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="8008534537613507642">Reinstalla Chrome</translation>
 <translation id="8013993649590906847">Se un'immagine è senza descrizione utile, Chrome proverà a fornirne una. Per la creazione delle descrizioni, le immagini vengono inviate a Google.</translation>
 <translation id="8129812357326543296">Informazioni su &amp;Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ja.xtb b/chrome/app/resources/google_chrome_strings_ja.xtb
index 62f8166..122c137b 100644
--- a/chrome/app/resources/google_chrome_strings_ja.xtb
+++ b/chrome/app/resources/google_chrome_strings_ja.xtb
@@ -248,6 +248,7 @@
 <translation id="7905891027772979035">Chrome で拡張機能を確認できません。しばらくしてからもう一度お試しください。</translation>
 <translation id="7930071585467473040">Google Chrome がパスワードをコピーしようとしています。</translation>
 <translation id="7962410387636238736">Windows XP と Windows Vista はサポートされなくなったため、このパソコンでは今後 Google Chrome のアップデートは受信されません</translation>
+<translation id="79947657522496226">Chrome OS も <ph name="BEGIN_LINK_LINUX_OSS" />Linux 開発環境<ph name="END_LINK_LINUX_OSS" />も追加の<ph name="BEGIN_LINK_CROS_OSS" />オープンソース ソフトウェア<ph name="END_LINK_CROS_OSS" />によって実現しました。</translation>
 <translation id="8008534537613507642">Chrome を再インストール</translation>
 <translation id="8013993649590906847">画像に有効な説明が設定されていない場合に、Chrome で説明を自動的に生成できるよう Google に画像が送信されます。</translation>
 <translation id="8129812357326543296">Google Chrome について(&amp;G)</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kk.xtb b/chrome/app/resources/google_chrome_strings_kk.xtb
index 938ae3a..264bede7 100644
--- a/chrome/app/resources/google_chrome_strings_kk.xtb
+++ b/chrome/app/resources/google_chrome_strings_kk.xtb
@@ -256,6 +256,7 @@
 <translation id="7905891027772979035">Chrome браузері кеңейтімдеріңізді тексере алмайды. Кейінірек қайталап көріңіз.</translation>
 <translation id="7930071585467473040">Google Chrome құпия сөздерді көшіргісі келеді.</translation>
 <translation id="7962410387636238736">Windows XP және Windows Vista жүйелеріне қолдау көрсетілмейтіндіктен, бұл компьютер енді Google Chrome жаңартылған нұсқаларын қабылдамайды</translation>
+<translation id="79947657522496226">Chrome OS операциялық жүйесі де <ph name="BEGIN_LINK_LINUX_OSS" />Linux әзірлеу ортасы<ph name="END_LINK_LINUX_OSS" /> сияқты<ph name="BEGIN_LINK_CROS_OSS" />ашық кодты бағдарламалық құрал<ph name="END_LINK_CROS_OSS" /> арқасында қолжетімді болды.</translation>
 <translation id="8008534537613507642">Chrome қайта орнату</translation>
 <translation id="8013993649590906847">Егер суреттің пайдалы сипаттамасы болмаса, Chrome оны өзі ұсынып көреді. Сипаттамалар жасау үшін суреттер Google-ға жіберіледі.</translation>
 <translation id="8129812357326543296">Google Chrome туралы ақпарат</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ko.xtb b/chrome/app/resources/google_chrome_strings_ko.xtb
index 62cf1b7..2a35cc9 100644
--- a/chrome/app/resources/google_chrome_strings_ko.xtb
+++ b/chrome/app/resources/google_chrome_strings_ko.xtb
@@ -257,6 +257,7 @@
 <translation id="7905891027772979035">Chrome에서 확장 프로그램을 확인할 수 없습니다. 나중에 다시 시도하세요.</translation>
 <translation id="7930071585467473040">Chrome에서 비밀번호를 복사하려고 합니다.</translation>
 <translation id="7962410387636238736">Windows XP와 Windows Vista가 더 이상 지원되지 않으므로 이 컴퓨터에서 Chrome 업데이트를 받을 수 없게 됩니다</translation>
+<translation id="79947657522496226"><ph name="BEGIN_LINK_LINUX_OSS" />Linux 개발 환경<ph name="END_LINK_LINUX_OSS" />과 마찬가지로, Chrome OS는 추가 <ph name="BEGIN_LINK_CROS_OSS" />오픈소스 소프트웨어<ph name="END_LINK_CROS_OSS" />를 사용하여 개발되었습니다.</translation>
 <translation id="8008534537613507642">Chrome 재설치</translation>
 <translation id="8013993649590906847">이미지에 유용한 설명이 없으면 Chrome에서 자동으로 설명을 제공하려고 시도합니다. 설명을 생성하기 위해 이미지가 Google로 전송됩니다.</translation>
 <translation id="8129812357326543296">Chrome 정보(&amp;G)</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ky.xtb b/chrome/app/resources/google_chrome_strings_ky.xtb
index fdfb793..2a8db36 100644
--- a/chrome/app/resources/google_chrome_strings_ky.xtb
+++ b/chrome/app/resources/google_chrome_strings_ky.xtb
@@ -257,6 +257,7 @@
 <translation id="7905891027772979035">Chrome кеңейтүүлөрүңүздү текшере албай жатат. Кийинчерээк кайталаңыз.</translation>
 <translation id="7930071585467473040">Google Chrome сырсөздөрдү көчүрүүгө аракет кылып жатат.</translation>
 <translation id="7962410387636238736">Бул компьютер мындан ары Google Chrome жаңыртууларын албайт, себеби Windows XP жана Windows Vista мындан ары колдоого алынбайт</translation>
+<translation id="79947657522496226">Chrome OS тутуму, <ph name="BEGIN_LINK_LINUX_OSS" />Linux'ту өнүктүрүү чөйрөсү <ph name="END_LINK_LINUX_OSS" /> сыяктуу, кошумча <ph name="BEGIN_LINK_CROS_OSS" />баштапкы коду ачык программалык камсыздоонун<ph name="END_LINK_CROS_OSS" /> жардамы менен иштейт.</translation>
 <translation id="8008534537613507642">Chrome'ду кайра орнотуу</translation>
 <translation id="8013993649590906847">Эгер сүрөттөрдүн түшүндүрмөсү жок болсо, Chrome аны түшүндүрүп берүүгө аракет кылат. Түшүндүрмөлөрдү даярдоо үчүн, сүрөттөр Google'га жөнөтүлөт.</translation>
 <translation id="8129812357326543296">&amp;Google Chrome жөнүндө</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ml.xtb b/chrome/app/resources/google_chrome_strings_ml.xtb
index 7c0d7c67..ebe156d7 100644
--- a/chrome/app/resources/google_chrome_strings_ml.xtb
+++ b/chrome/app/resources/google_chrome_strings_ml.xtb
@@ -257,6 +257,7 @@
 <translation id="7905891027772979035">Chrome-ന് നിങ്ങളുടെ വിപുലീകരണങ്ങൾ പരിശോധിക്കാനാവുന്നില്ല. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="7930071585467473040">പാസ്‌വേഡുകൾ Google Chrome പകർത്താൻ ശ്രമിക്കുന്നു.</translation>
 <translation id="7962410387636238736">Windows XP-ക്കും Windows Vista-യ്‌ക്കും ഇനിയങ്ങോട്ട് പിന്തുണ ഇല്ലാത്തതിനാൽ ഈ കമ്പ്യൂട്ടറിന് ഇനി Google Chrome അപ്‌ഡേറ്റുകൾ സ്വീകരിക്കാനാകില്ല</translation>
+<translation id="79947657522496226">Chrome OS സാധ്യമാക്കിയത് <ph name="BEGIN_LINK_LINUX_OSS" />Linux വികസന പരിതസ്ഥിതി<ph name="END_LINK_LINUX_OSS" /> പോലുള്ള അധിക <ph name="BEGIN_LINK_CROS_OSS" />ഓപ്പൺ സോഴ്‌സ് സോഫ്‌റ്റ്‌വെയർ<ph name="END_LINK_CROS_OSS" /> ഉപയോഗിച്ചാണ്.</translation>
 <translation id="8008534537613507642">Chrome വീണ്ടും ഇൻസ്റ്റാളുചെയ്യുക</translation>
 <translation id="8013993649590906847">ചിത്രത്തിൽ ഉപകാരപ്രദമായ വിവരണമില്ലെങ്കിൽ നിങ്ങൾക്കായി ഒരു വിവരണം നൽകാൻ Chrome ശ്രമിക്കും. വിവരണങ്ങൾ സൃഷ്‌ടിക്കാൻ, ചിത്രങ്ങൾ Google-ലേക്ക് അയയ്ക്കുന്നു.</translation>
 <translation id="8129812357326543296">&amp;Google Chrome-നെക്കുറിച്ച്</translation>
diff --git a/chrome/app/resources/google_chrome_strings_nl.xtb b/chrome/app/resources/google_chrome_strings_nl.xtb
index f81421a..52ce09c4a 100644
--- a/chrome/app/resources/google_chrome_strings_nl.xtb
+++ b/chrome/app/resources/google_chrome_strings_nl.xtb
@@ -253,6 +253,7 @@
 <translation id="7905891027772979035">Chrome kan je extensies niet checken. Probeer het later opnieuw.</translation>
 <translation id="7930071585467473040">Google Chrome probeert wachtwoorden te kopiëren.</translation>
 <translation id="7962410387636238736">Deze computer ontvangt geen Google Chrome-updates meer, omdat Windows XP en Windows Vista niet meer worden ondersteund</translation>
+<translation id="79947657522496226">Chrome OS wordt mogelijk gemaakt door aanvullende <ph name="BEGIN_LINK_CROS_OSS" />opensource-software<ph name="END_LINK_CROS_OSS" />, net als de <ph name="BEGIN_LINK_LINUX_OSS" />Linux-ontwikkelomgeving<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="8008534537613507642">Chrome opnieuw installeren</translation>
 <translation id="8013993649590906847">Als een afbeelding geen nuttige beschrijving bevat, probeert Chrome je er een te geven. Afbeeldingen worden naar Google verzonden om beschrijvingen te maken.</translation>
 <translation id="8129812357326543296">Over &amp;Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pa.xtb b/chrome/app/resources/google_chrome_strings_pa.xtb
index 42f1a35..a0913eb 100644
--- a/chrome/app/resources/google_chrome_strings_pa.xtb
+++ b/chrome/app/resources/google_chrome_strings_pa.xtb
@@ -257,6 +257,7 @@
 <translation id="7905891027772979035">Chrome ਤੁਹਾਡੀਆਂ ਐਕਸਟੈਂਸ਼ਨਾਂ ਦੀ ਜਾਂਚ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation>
 <translation id="7930071585467473040">Google Chrome ਪਾਸਵਰਡਾਂ ਨੂੰ ਕਾਪੀ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ।</translation>
 <translation id="7962410387636238736">ਹੁਣ Windows XP ਅਤੇ Windows Vista ਸਮਰਥਿਤ ਨਾ ਹੋਣ ਕਰਕੇ ਇਸ ਕੰਪਿਊਟਰ ਨੂੰ Google Chrome ਅੱਪਡੇਟ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋਣਗੇ</translation>
+<translation id="79947657522496226">Chrome OS ਨੂੰ ਵਧੀਕ <ph name="BEGIN_LINK_CROS_OSS" />ਖੁੱਲ੍ਹੇ ਸਰੋਤ ਸਾਫ਼ਟਵੇਅਰ<ph name="END_LINK_CROS_OSS" /> ਕਰਕੇ ਸੰਭਵ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਜਿਵੇਂ ਕਿ <ph name="BEGIN_LINK_LINUX_OSS" />Linux ਵਿਕਾਸ ਵਾਤਾਵਰਨ<ph name="END_LINK_LINUX_OSS" />।</translation>
 <translation id="8008534537613507642">Chrome ਨੂੰ ਮੁੜ-ਸਥਾਪਤ ਕਰੋ</translation>
 <translation id="8013993649590906847">ਜੇ ਕਿਸੇ ਚਿੱਤਰ ਦਾ ਲਾਭਕਾਰੀ ਵਰਣਨ ਨਹੀਂ ਹੈ, ਤਾਂ Chrome ਤੁਹਾਡੇ ਲਈ ਇੱਕ ਵਰਣਨ ਮੁਹੱਈਆ ਕਰਵਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੇਗਾ। ਵਰਣਨ ਬਣਾਉਣ ਲਈ, ਚਿੱਤਰ Google ਨੂੰ ਭੇਜੇ ਜਾਂਦੇ ਹਨ।</translation>
 <translation id="8129812357326543296">&amp;Google Chrome ਬਾਰੇ</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ru.xtb b/chrome/app/resources/google_chrome_strings_ru.xtb
index d961762..4df44ba 100644
--- a/chrome/app/resources/google_chrome_strings_ru.xtb
+++ b/chrome/app/resources/google_chrome_strings_ru.xtb
@@ -247,6 +247,7 @@
 <translation id="7905891027772979035">Не удается запустить проверку расширений в Chrome. Повторите попытку позже.</translation>
 <translation id="7930071585467473040">Google Chrome пытается скопировать пароли</translation>
 <translation id="7962410387636238736">Google Chrome больше не будет обновляться на этом компьютере, так как поддержка Windows XP и Windows Vista прекращена.</translation>
+<translation id="79947657522496226">Chrome OS, как и <ph name="BEGIN_LINK_LINUX_OSS" />среда разработки Linux<ph name="END_LINK_LINUX_OSS" />, работает благодаря дополнительному <ph name="BEGIN_LINK_CROS_OSS" />программному обеспечению с открытым исходным кодом<ph name="END_LINK_CROS_OSS" />.</translation>
 <translation id="8008534537613507642">Переустановить Chrome</translation>
 <translation id="8013993649590906847">Если у изображения нет понятного описания, Chrome попытается его найти. Для создания описаний изображения отправляются в Google.</translation>
 <translation id="8129812357326543296">О браузере &amp;Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sq.xtb b/chrome/app/resources/google_chrome_strings_sq.xtb
index e8d3224..93d7f9c 100644
--- a/chrome/app/resources/google_chrome_strings_sq.xtb
+++ b/chrome/app/resources/google_chrome_strings_sq.xtb
@@ -256,6 +256,7 @@
 <translation id="7905891027772979035">Chrome nuk mund t'i kontrollojë shtesat e tua. Provo përsëri më vonë.</translation>
 <translation id="7930071585467473040">Google Chrome po përpiqet të kopjojë fjalëkalimet.</translation>
 <translation id="7962410387636238736">Ky kompjuter nuk do të marrë më përditësime të Google Chrome sepse Windows XP dhe Windows Vista nuk mbështeten më</translation>
+<translation id="79947657522496226">Chrome OS mundësohet nga <ph name="BEGIN_LINK_CROS_OSS" />softuerë shtesë me burim të hapur<ph name="END_LINK_CROS_OSS" />, si p.sh. <ph name="BEGIN_LINK_LINUX_OSS" />mjedisi i zhvillimit të Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="8008534537613507642">Instalo përsëri Chrome</translation>
 <translation id="8013993649590906847">Nëse një imazh nuk ka një përshkrim të dobishëm, Chrome do të përpiqet të të japë një përshkrim. Për të krijuar përshkrime, imazhet dërgohen te Google.</translation>
 <translation id="8129812357326543296">Informacion rreth &amp;Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ta.xtb b/chrome/app/resources/google_chrome_strings_ta.xtb
index 493819d..e290f30 100644
--- a/chrome/app/resources/google_chrome_strings_ta.xtb
+++ b/chrome/app/resources/google_chrome_strings_ta.xtb
@@ -249,6 +249,7 @@
 <translation id="7905891027772979035">Chromeமால் உங்கள் நீட்டிப்புகளைச் சரிபார்க்க முடியவில்லை. பிறகு முயலவும்.</translation>
 <translation id="7930071585467473040">Google Chrome கடவுச்சொற்களை நகலெடுக்க முயல்கிறது.</translation>
 <translation id="7962410387636238736">Windows XP மற்றும் Windows Vista ஆகியவை இனி ஆதரிக்கப்படாது என்பதால் இந்தக் கம்ப்யூட்டர் இனி Google Chrome புதுப்பிப்புகளைப் பெறாது</translation>
+<translation id="79947657522496226"><ph name="BEGIN_LINK_LINUX_OSS" />Linux டெவெலப்மெண்ட் சூழல்<ph name="END_LINK_LINUX_OSS" /> போலவே, கூடுதல் <ph name="BEGIN_LINK_CROS_OSS" />ஓப்பன் சோர்ஸ் மென்பொருளால்<ph name="END_LINK_CROS_OSS" /> Chrome OS உருவாக்கப்பட்டுள்ளது.</translation>
 <translation id="8008534537613507642">Chrome ஐ மீண்டும்நிறுவு</translation>
 <translation id="8013993649590906847">ஒரு படத்திற்குப் பயனுள்ள விளக்கம் இல்லாதபட்சத்தில் Chrome உங்களுக்காக அதை வழங்க முயலும். விளக்கங்களை உருவாக்குவதற்காக படங்கள் Googleளுக்கு அனுப்பப்படும்.</translation>
 <translation id="8129812357326543296">&amp;Google Chrome அறிமுகம்</translation>
diff --git a/chrome/app/resources/google_chrome_strings_tr.xtb b/chrome/app/resources/google_chrome_strings_tr.xtb
index 3eaf746..502cc2e 100644
--- a/chrome/app/resources/google_chrome_strings_tr.xtb
+++ b/chrome/app/resources/google_chrome_strings_tr.xtb
@@ -250,6 +250,7 @@
 <translation id="7905891027772979035">Chrome, uzantılarınızı kontrol edemiyor. Daha sonra tekrar deneyin.</translation>
 <translation id="7930071585467473040">Google Chrome şifreleri kopyalamayı deniyor.</translation>
 <translation id="7962410387636238736">Windows XP ve Windows Vista artık desteklenmediğinden, bu bilgisayar bundan böyle Google Chrome güncellemelerini almayacaktır</translation>
+<translation id="79947657522496226">Chrome OS, <ph name="BEGIN_LINK_LINUX_OSS" />Linux geliştirme ortamında<ph name="END_LINK_LINUX_OSS" /> olduğu gibi ek <ph name="BEGIN_LINK_CROS_OSS" />açık kaynak yazılımlardan<ph name="END_LINK_CROS_OSS" /> yararlanılarak geliştirilmiştir.</translation>
 <translation id="8008534537613507642">Chrome'u yeniden yükle</translation>
 <translation id="8013993649590906847">Bir resmin işe yarar bir açıklaması yoksa, Chrome sizin için bir açıklama sağlamaya çalışır. Açıklama oluşturmak için resimler Google'a gönderilir.</translation>
 <translation id="8129812357326543296">&amp;Google Chrome hakkında</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uk.xtb b/chrome/app/resources/google_chrome_strings_uk.xtb
index f97dbe97..43e53ab 100644
--- a/chrome/app/resources/google_chrome_strings_uk.xtb
+++ b/chrome/app/resources/google_chrome_strings_uk.xtb
@@ -249,6 +249,7 @@
 <translation id="7905891027772979035">Chrome не може перевірити розширення. Повторіть спробу пізніше.</translation>
 <translation id="7930071585467473040">Google Chrome намагається скопіювати паролі.</translation>
 <translation id="7962410387636238736">На цей комп’ютер не надходитимуть оновлення Google Chrome, оскільки Windows XP та Windows Vista більше не підтримуються</translation>
+<translation id="79947657522496226">ОС Chrome і <ph name="BEGIN_LINK_LINUX_OSS" />середовище для розробки Linux<ph name="END_LINK_LINUX_OSS" /> працюють завдяки додатковому <ph name="BEGIN_LINK_CROS_OSS" />програмному забезпеченню з відкритим кодом<ph name="END_LINK_CROS_OSS" />.</translation>
 <translation id="8008534537613507642">Перевстановити Chrome</translation>
 <translation id="8013993649590906847">Якщо зображення не має корисного опису, Chrome спробує додати його. Для цього зображення надсилаються в Google.</translation>
 <translation id="8129812357326543296">Про &amp;Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_vi.xtb b/chrome/app/resources/google_chrome_strings_vi.xtb
index a3bf14f1..fe6495c 100644
--- a/chrome/app/resources/google_chrome_strings_vi.xtb
+++ b/chrome/app/resources/google_chrome_strings_vi.xtb
@@ -253,6 +253,7 @@
 <translation id="7905891027772979035">Chrome không thể kiểm tra các tiện ích của bạn. Hãy thử lại sau.</translation>
 <translation id="7930071585467473040">Google Chrome đang cố gắng sao chép mật khẩu.</translation>
 <translation id="7962410387636238736">Máy tính này sẽ không còn nhận được bản cập nhật Google Chrome do Windows XP và Windows Vista không còn được hỗ trợ</translation>
+<translation id="79947657522496226">Chrome OS có thể hoạt động được là nhờ <ph name="BEGIN_LINK_CROS_OSS" />phần mềm nguồn mở<ph name="END_LINK_CROS_OSS" /> bổ sung, tương tự như <ph name="BEGIN_LINK_LINUX_OSS" />môi trường phát triển Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="8008534537613507642">Cài đặt lại Chrome</translation>
 <translation id="8013993649590906847">Chrome sẽ cố gắng mô tả cho bạn những hình ảnh không có nội dung mô tả hữu ích. Để tạo nội dung mô tả, các hình ảnh sẽ được gửi đến Google.</translation>
 <translation id="8129812357326543296">Giới thiệu về &amp;Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-HK.xtb b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
index 08b429f..3567eb5 100644
--- a/chrome/app/resources/google_chrome_strings_zh-HK.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
@@ -255,6 +255,7 @@
 <translation id="7905891027772979035">Chrome 無法檢查擴充程式,請稍後再試。</translation>
 <translation id="7930071585467473040">Google Chrome 正在嘗試複製密碼。</translation>
 <translation id="7962410387636238736">由於 Google Chrome 將停止支援 Windows XP 和 Windows Vista,因此這部電腦不會再收到 Google Chrome 更新。</translation>
+<translation id="79947657522496226">「Chrome 作業系統」的開發全賴其他<ph name="BEGIN_LINK_CROS_OSS" />開放原始碼軟件<ph name="END_LINK_CROS_OSS" />協助才得以面世,<ph name="BEGIN_LINK_LINUX_OSS" />Linux 開發環境<ph name="END_LINK_LINUX_OSS" />也一樣。</translation>
 <translation id="8008534537613507642">重新安裝 Chrome</translation>
 <translation id="8013993649590906847">如果圖片並無有用的說明,Chrome 會嘗試為您提供說明。因此,圖片將傳送至 Google 以建立說明。</translation>
 <translation id="8129812357326543296">關於 Google Chrome(&amp;G)</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-TW.xtb b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
index 90fbfba..1a2a903 100644
--- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -250,6 +250,7 @@
 <translation id="7905891027772979035">Chrome 無法檢查你的擴充功能,請稍後再試。</translation>
 <translation id="7930071585467473040">Google Chrome 正在嘗試複製密碼。</translation>
 <translation id="7962410387636238736">Google Chrome 已停止支援 Windows XP 和 Windows Vista,因此這部電腦不會再收到 Google Chrome 更新</translation>
+<translation id="79947657522496226">Chrome 作業系統藉助了其他<ph name="BEGIN_LINK_CROS_OSS" />開放原始碼軟體<ph name="END_LINK_CROS_OSS" />的相關技術才得以問世,<ph name="BEGIN_LINK_LINUX_OSS" />Linux 開發環境<ph name="END_LINK_LINUX_OSS" />也是如此。</translation>
 <translation id="8008534537613507642">重新安裝 Chrome</translation>
 <translation id="8013993649590906847">如果圖片缺少有用的說明,Chrome 會嘗試為你提供說明。系統會將圖片傳送給 Google,以便產生說明。</translation>
 <translation id="8129812357326543296">關於 Google Chrome(&amp;G)</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 708422e..9f82c255 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -593,6 +593,8 @@
     "infobars/infobar_responder.h",
     "infobars/infobar_service.cc",
     "infobars/infobar_service.h",
+    "infobars/simple_alert_infobar_creator.cc",
+    "infobars/simple_alert_infobar_creator.h",
     "installable/installable_utils.cc",
     "installable/installable_utils.h",
     "internal_auth.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 5ccb93a..1b7c8f1 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2820,12 +2820,6 @@
      flag_descriptions::kExperimentalWebPlatformFeaturesName,
      flag_descriptions::kExperimentalWebPlatformFeaturesDescription, kOsAll,
      SINGLE_VALUE_TYPE(switches::kEnableExperimentalWebPlatformFeatures)},
-#if defined(OS_ANDROID)
-    {"enable-app-notification-status-messaging",
-     flag_descriptions::kAppNotificationStatusMessagingName,
-     flag_descriptions::kAppNotificationStatusMessagingDescription, kOsAndroid,
-     FEATURE_VALUE_TYPE(browser_ui::kAppNotificationStatusMessaging)},
-#endif  // OS_ANDROID
     {"silent-debugger-extension-api",
      flag_descriptions::kSilentDebuggerExtensionApiName,
      flag_descriptions::kSilentDebuggerExtensionApiDescription, kOsDesktop,
@@ -7273,7 +7267,15 @@
     {"enable-penetrating-image-selection",
      flag_descriptions::kEnablePenetratingImageSelectionName,
      flag_descriptions::kEnablePenetratingImageSelectionDescription, kOsAll,
-     FEATURE_VALUE_TYPE(blink::features::kEnablePenetratingImageSelection)}
+     FEATURE_VALUE_TYPE(blink::features::kEnablePenetratingImageSelection)},
+
+#if defined(OS_ANDROID)
+    {"biometric-reauth-password-filling",
+     flag_descriptions::kBiometricReauthForPasswordFillingName,
+     flag_descriptions::kBiometricReauthForPasswordFillingDescription,
+     kOsAndroid,
+     FEATURE_VALUE_TYPE(password_manager::features::kBiometricTouchToFill)},
+#endif
 
     // NOTE: Adding a new flag requires adding a corresponding entry to enum
     // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android_utils.cc b/chrome/browser/android/autofill_assistant/ui_controller_android_utils.cc
index 1f58d37..d6bb2d2 100644
--- a/chrome/browser/android/autofill_assistant/ui_controller_android_utils.cc
+++ b/chrome/browser/android/autofill_assistant/ui_controller_android_utils.cc
@@ -18,6 +18,7 @@
 #include "components/autofill_assistant/browser/generic_ui_java_generated_enums.h"
 #include "components/strings/grit/components_strings.h"
 #include "ui/base/l10n/l10n_util.h"
+#include "url/android/gurl_android.h"
 
 namespace autofill_assistant {
 namespace ui_controller_android_utils {
@@ -200,11 +201,11 @@
       int diameter_size_in_pixel =
           ui_controller_android_utils::GetPixelSizeOrDefault(
               env, jcontext, proto.favicon().diameter_size(), 0);
-      std::string url = proto.favicon().has_website_url()
-                            ? proto.favicon().website_url()
-                            : user_model->GetCurrentURL().spec();
+      GURL url = proto.favicon().has_website_url()
+                     ? GURL(proto.favicon().website_url())
+                     : user_model->GetCurrentURL();
       return Java_AssistantDrawable_createFromFavicon(
-          env, base::android::ConvertUTF8ToJavaString(env, url),
+          env, url::GURLAndroid::FromNativeGURL(env, url),
           diameter_size_in_pixel, proto.favicon().force_monogram());
     }
     case DrawableProto::DRAWABLE_NOT_SET:
diff --git a/chrome/browser/android/favicon_helper.cc b/chrome/browser/android/favicon_helper.cc
index f60077b6..ce6c271 100644
--- a/chrome/browser/android/favicon_helper.cc
+++ b/chrome/browser/android/favicon_helper.cc
@@ -34,6 +34,7 @@
 #include "ui/gfx/color_utils.h"
 #include "ui/gfx/image/image_skia.h"
 #include "ui/gfx/image/image_skia_rep.h"
+#include "url/android/gurl_android.h"
 
 using base::android::JavaParamRef;
 using base::android::JavaRef;
@@ -45,18 +46,6 @@
 using base::android::ConvertUTF8ToJavaString;
 using JobFinishedCallback = base::OnceCallback<void(void)>;
 
-namespace {
-
-void OnEnsureIconIsAvailableFinished(
-    const ScopedJavaGlobalRef<jobject>& j_availability_callback,
-    bool newly_available) {
-  JNIEnv* env = AttachCurrentThread();
-  Java_IconAvailabilityCallback_onIconAvailabilityChecked(
-      env, j_availability_callback, newly_available);
-}
-
-}  // namespace
-
 static jlong JNI_FaviconHelper_Init(JNIEnv* env) {
   return reinterpret_cast<intptr_t>(new FaviconHelper());
 }
@@ -285,14 +274,15 @@
 jboolean FaviconHelper::GetForeignFaviconImageForURL(
     JNIEnv* env,
     const JavaParamRef<jobject>& jprofile,
-    const JavaParamRef<jstring>& j_page_url,
+    const JavaParamRef<jobject>& j_page_url,
     jint j_desired_size_in_pixel,
     const base::android::JavaParamRef<jobject>& j_favicon_image_callback) {
   Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile);
   if (!profile)
     return false;
 
-  GURL page_url(ConvertJavaStringToUTF8(env, j_page_url));
+  std::unique_ptr<GURL> page_url =
+      url::GURLAndroid::ToNativeGURL(env, j_page_url);
 
   favicon::HistoryUiFaviconRequestHandler* history_ui_favicon_request_handler =
       HistoryUiFaviconRequestHandlerFactory::GetForBrowserContext(profile);
@@ -300,7 +290,7 @@
   if (!history_ui_favicon_request_handler)
     return false;
   history_ui_favicon_request_handler->GetRawFaviconForPageURL(
-      page_url, static_cast<int>(j_desired_size_in_pixel),
+      *page_url, static_cast<int>(j_desired_size_in_pixel),
       base::BindOnce(&FaviconHelper::OnFaviconBitmapResultAvailable,
                      weak_ptr_factory_.GetWeakPtr(),
                      ScopedJavaGlobalRef<jobject>(j_favicon_image_callback)),
@@ -308,51 +298,6 @@
   return true;
 }
 
-void FaviconHelper::EnsureIconIsAvailable(
-    JNIEnv* env,
-    const JavaParamRef<jobject>& j_profile,
-    const JavaParamRef<jobject>& j_web_contents,
-    const JavaParamRef<jstring>& j_page_url,
-    const JavaParamRef<jstring>& j_icon_url,
-    jboolean j_is_large_icon,
-    const JavaParamRef<jobject>& j_availability_callback) {
-  Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile);
-  DCHECK(profile);
-  content::WebContents* web_contents =
-      content::WebContents::FromJavaWebContents(j_web_contents);
-  DCHECK(web_contents);
-  GURL page_url(ConvertJavaStringToUTF8(env, j_page_url));
-  GURL icon_url(ConvertJavaStringToUTF8(env, j_icon_url));
-  favicon_base::IconType icon_type = j_is_large_icon
-                                         ? favicon_base::IconType::kTouchIcon
-                                         : favicon_base::IconType::kFavicon;
-
-  // TODO(treib): Optimize this by creating a FaviconService::HasFavicon method
-  // so that we don't have to actually get the image.
-  ScopedJavaGlobalRef<jobject> j_scoped_callback(env, j_availability_callback);
-  favicon_base::FaviconImageCallback callback_runner = base::BindOnce(
-      &FaviconHelper::OnFaviconImageResultAvailable, j_scoped_callback, profile,
-      web_contents, page_url, icon_url, icon_type);
-  favicon::FaviconService* service = FaviconServiceFactory::GetForProfile(
-      profile, ServiceAccessType::IMPLICIT_ACCESS);
-  favicon::GetFaviconImageForPageURL(service, page_url, icon_type,
-                                     std::move(callback_runner),
-                                     cancelable_task_tracker_.get());
-}
-
-void FaviconHelper::TouchOnDemandFavicon(
-    JNIEnv* env,
-    const JavaParamRef<jobject>& j_profile,
-    const JavaParamRef<jstring>& j_icon_url) {
-  Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile);
-  DCHECK(profile);
-  GURL icon_url(ConvertJavaStringToUTF8(env, j_icon_url));
-
-  favicon::FaviconService* service = FaviconServiceFactory::GetForProfile(
-      profile, ServiceAccessType::IMPLICIT_ACCESS);
-  service->TouchOnDemandFavicon(icon_url);
-}
-
 FaviconHelper::~FaviconHelper() {}
 
 // Return the index of |sizes| whose area is largest but not exceeds int type
@@ -379,68 +324,14 @@
   return ret;
 }
 
-// static
-void FaviconHelper::OnFaviconDownloaded(
-    const ScopedJavaGlobalRef<jobject>& j_availability_callback,
-    Profile* profile,
-    const GURL& page_url,
-    favicon_base::IconType icon_type,
-    int download_request_id,
-    int http_status_code,
-    const GURL& image_url,
-    const std::vector<SkBitmap>& bitmaps,
-    const std::vector<gfx::Size>& original_sizes) {
-  if (bitmaps.empty()) {
-    OnEnsureIconIsAvailableFinished(j_availability_callback,
-                                    /*newly_available=*/false);
-    return;
-  }
-
-  // Only keep the largest icon available.
-  gfx::Image image = gfx::Image(gfx::ImageSkia(
-      gfx::ImageSkiaRep(bitmaps[GetLargestSizeIndex(original_sizes)], 0)));
-  favicon_base::SetFaviconColorSpace(&image);
-  favicon::FaviconService* service = FaviconServiceFactory::GetForProfile(
-      profile, ServiceAccessType::IMPLICIT_ACCESS);
-
-  service->SetOnDemandFavicons(page_url, image_url, icon_type, image,
-                               base::BindOnce(&OnEnsureIconIsAvailableFinished,
-                                              j_availability_callback));
-}
-
-// static
-void FaviconHelper::OnFaviconImageResultAvailable(
-    const ScopedJavaGlobalRef<jobject>& j_availability_callback,
-    Profile* profile,
-    content::WebContents* web_contents,
-    const GURL& page_url,
-    const GURL& icon_url,
-    favicon_base::IconType icon_type,
-    const favicon_base::FaviconImageResult& result) {
-  // If there already is a favicon, return immediately.
-  // Can |web_contents| be null here? crbug.com/688249
-  if (!result.image.IsEmpty() || !web_contents) {
-    // Either the image already exists in the FaviconService, or it doesn't and
-    // we can't download it. Either way, it's not *newly* available.
-    OnEnsureIconIsAvailableFinished(j_availability_callback,
-                                    /*newly_available=*/false);
-    return;
-  }
-
-  web_contents->DownloadImage(
-      icon_url, true, 0, 0, false,
-      base::BindOnce(&FaviconHelper::OnFaviconDownloaded,
-                     j_availability_callback, profile, page_url, icon_type));
-}
-
 void FaviconHelper::OnFaviconBitmapResultAvailable(
     const JavaRef<jobject>& j_favicon_image_callback,
     const favicon_base::FaviconRawBitmapResult& result) {
   JNIEnv* env = AttachCurrentThread();
 
   // Convert favicon_image_result to java objects.
-  ScopedJavaLocalRef<jstring> j_icon_url =
-      ConvertUTF8ToJavaString(env, result.icon_url.spec());
+  ScopedJavaLocalRef<jobject> j_icon_url =
+      url::GURLAndroid::FromNativeGURL(env, result.icon_url);
   ScopedJavaLocalRef<jobject> j_favicon_bitmap;
   if (result.is_valid()) {
     SkBitmap favicon_bitmap;
diff --git a/chrome/browser/android/favicon_helper.h b/chrome/browser/android/favicon_helper.h
index 40281f1..cf3b992 100644
--- a/chrome/browser/android/favicon_helper.h
+++ b/chrome/browser/android/favicon_helper.h
@@ -18,12 +18,6 @@
 #include "components/favicon_base/favicon_types.h"
 #include "url/gurl.h"
 
-namespace content {
-class  WebContents;
-}
-
-class Profile;
-
 class FaviconHelper {
  public:
   FaviconHelper();
@@ -43,22 +37,10 @@
   jboolean GetForeignFaviconImageForURL(
       JNIEnv* env,
       const base::android::JavaParamRef<jobject>& jprofile,
-      const base::android::JavaParamRef<jstring>& j_page_url,
+      const base::android::JavaParamRef<jobject>& j_page_url,
       jint j_desired_size_in_pixel,
       const base::android::JavaParamRef<jobject>& j_favicon_image_callback);
 
-  void EnsureIconIsAvailable(
-      JNIEnv* env,
-      const base::android::JavaParamRef<jobject>& j_profile,
-      const base::android::JavaParamRef<jobject>& j_web_contents,
-      const base::android::JavaParamRef<jstring>& j_page_url,
-      const base::android::JavaParamRef<jstring>& j_icon_url,
-      jboolean j_is_large_icon,
-      const base::android::JavaParamRef<jobject>& j_availability_callback);
-  void TouchOnDemandFavicon(
-      JNIEnv* env,
-      const base::android::JavaParamRef<jobject>& j_profile,
-      const base::android::JavaParamRef<jstring>& j_icon_url);
   void GetLocalFaviconImageForURLInternal(
       favicon::FaviconService* favicon_service,
       GURL url,
@@ -78,28 +60,6 @@
 
   class Job;
 
-  static void OnFaviconImageResultAvailable(
-      const base::android::ScopedJavaGlobalRef<jobject>&
-          j_availability_callback,
-      Profile* profile,
-      content::WebContents* web_contents,
-      const GURL& page_url,
-      const GURL& icon_url,
-      favicon_base::IconType icon_type,
-      const favicon_base::FaviconImageResult& result);
-
-  static void OnFaviconDownloaded(
-      const base::android::ScopedJavaGlobalRef<jobject>&
-          j_availability_callback,
-      Profile* profile,
-      const GURL& page_url,
-      favicon_base::IconType icon_type,
-      int download_request_id,
-      int http_status_code,
-      const GURL& image_url,
-      const std::vector<SkBitmap>& bitmaps,
-      const std::vector<gfx::Size>& original_sizes);
-
   static size_t GetLargestSizeIndex(const std::vector<gfx::Size>& sizes);
 
   // This function is expected to be bound to a WeakPtr<FaviconHelper>, so that
diff --git a/chrome/browser/android/foreign_session_helper.cc b/chrome/browser/android/foreign_session_helper.cc
index 8d69b6d..1ef48c4 100644
--- a/chrome/browser/android/foreign_session_helper.cc
+++ b/chrome/browser/android/foreign_session_helper.cc
@@ -29,6 +29,7 @@
 #include "content/public/browser/notification_service.h"
 #include "content/public/browser/notification_source.h"
 #include "content/public/browser/web_contents.h"
+#include "url/android/gurl_android.h"
 
 using base::android::JavaParamRef;
 using base::android::ScopedJavaGlobalRef;
@@ -99,7 +100,7 @@
   GURL tab_url = current_navigation.virtual_url();
 
   Java_ForeignSessionHelper_pushTab(
-      env, j_window, ConvertUTF8ToJavaString(env, tab_url.spec()),
+      env, j_window, url::GURLAndroid::FromNativeGURL(env, tab_url),
       ConvertUTF16ToJavaString(env, current_navigation.title()),
       tab.timestamp.ToJavaTime(), tab.tab_id.id());
 }
diff --git a/chrome/browser/android/history/browsing_history_bridge.cc b/chrome/browser/android/history/browsing_history_bridge.cc
index 0edff915..eef5b783 100644
--- a/chrome/browser/android/history/browsing_history_bridge.cc
+++ b/chrome/browser/android/history/browsing_history_bridge.cc
@@ -20,6 +20,7 @@
 #include "components/history/core/browser/browsing_history_service.h"
 #include "components/keyed_service/core/service_access_type.h"
 #include "components/url_formatter/url_formatter.h"
+#include "url/android/gurl_android.h"
 
 using history::BrowsingHistoryService;
 
@@ -97,7 +98,7 @@
 
     Java_BrowsingHistoryBridge_createHistoryItemAndAddToList(
         env, j_query_result_obj_,
-        base::android::ConvertUTF8ToJavaString(env, entry.url.spec()),
+        url::GURLAndroid::FromNativeGURL(env, entry.url),
         base::android::ConvertUTF16ToJavaString(env, domain),
         base::android::ConvertUTF16ToJavaString(env, entry.title),
         most_recent_java_timestamp,
@@ -113,10 +114,10 @@
 void BrowsingHistoryBridge::MarkItemForRemoval(
     JNIEnv* env,
     const JavaParamRef<jobject>& obj,
-    jstring j_url,
+    const JavaParamRef<jobject>& j_url,
     const JavaParamRef<jlongArray>& j_native_timestamps) {
   BrowsingHistoryService::HistoryEntry entry;
-  entry.url = GURL(base::android::ConvertJavaStringToUTF16(env, j_url));
+  entry.url = *url::GURLAndroid::ToNativeGURL(env, j_url);
 
   std::vector<int64_t> timestamps;
   base::android::JavaLongArrayToInt64Vector(env, j_native_timestamps,
diff --git a/chrome/browser/android/history/browsing_history_bridge.h b/chrome/browser/android/history/browsing_history_bridge.h
index a8cd6f5..80656a2 100644
--- a/chrome/browser/android/history/browsing_history_bridge.h
+++ b/chrome/browser/android/history/browsing_history_bridge.h
@@ -39,7 +39,7 @@
   // ::removeItems() is called.
   void MarkItemForRemoval(JNIEnv* env,
                           const JavaParamRef<jobject>& obj,
-                          jstring j_url,
+                          const JavaParamRef<jobject>& j_url,
                           const JavaParamRef<jlongArray>& j_native_timestamps);
 
   // Removes all items that have been marked for removal through
diff --git a/chrome/browser/android/hung_renderer_infobar_delegate.cc b/chrome/browser/android/hung_renderer_infobar_delegate.cc
index 372c59c..02a69be4 100644
--- a/chrome/browser/android/hung_renderer_infobar_delegate.cc
+++ b/chrome/browser/android/hung_renderer_infobar_delegate.cc
@@ -9,6 +9,7 @@
 #include "chrome/browser/android/android_theme_resources.h"
 #include "chrome/browser/infobars/infobar_service.h"
 #include "chrome/grit/generated_resources.h"
+#include "components/infobars/android/confirm_infobar.h"
 #include "components/infobars/core/infobar.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/common/result_codes.h"
@@ -19,7 +20,7 @@
     InfoBarService* infobar_service,
     content::RenderProcessHost* render_process_host) {
   DCHECK(render_process_host);
-  infobar_service->AddInfoBar(infobar_service->CreateConfirmInfoBar(
+  infobar_service->AddInfoBar(std::make_unique<infobars::ConfirmInfoBar>(
       std::unique_ptr<ConfirmInfoBarDelegate>(
           new HungRendererInfoBarDelegate(render_process_host))));
 }
diff --git a/chrome/browser/apps/app_service/publishers/remote_apps.h b/chrome/browser/apps/app_service/publishers/remote_apps.h
index d196709..aa1390d 100644
--- a/chrome/browser/apps/app_service/publishers/remote_apps.h
+++ b/chrome/browser/apps/app_service/publishers/remote_apps.h
@@ -10,7 +10,7 @@
 #include <vector>
 
 #include "chrome/browser/apps/app_service/icon_key_util.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_model.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_model.h"
 #include "components/services/app_service/public/cpp/publisher_base.h"
 #include "components/services/app_service/public/mojom/app_service.mojom.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
diff --git a/chrome/browser/ash/crosapi/keystore_service_ash.cc b/chrome/browser/ash/crosapi/keystore_service_ash.cc
index 48f80aca..eeac649 100644
--- a/chrome/browser/ash/crosapi/keystore_service_ash.cc
+++ b/chrome/browser/ash/crosapi/keystore_service_ash.cc
@@ -99,6 +99,8 @@
   receivers_.Add(this, std::move(receiver));
 }
 
+//------------------------------------------------------------------------------
+
 void KeystoreServiceAsh::ChallengeAttestationOnlyKeystore(
     const std::string& challenge,
     mojom::KeystoreType type,
@@ -142,14 +144,75 @@
       /*register_key=*/migrate, key_name_for_spkac);
 }
 
+void KeystoreServiceAsh::DidChallengeAttestationOnlyKeystore(
+    ChallengeAttestationOnlyKeystoreCallback callback,
+    void* challenge_key_ptr,
+    const ash::attestation::TpmChallengeKeyResult& result) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  crosapi::mojom::KeystoreStringResultPtr result_ptr =
+      mojom::KeystoreStringResult::New();
+  if (result.IsSuccess()) {
+    result_ptr->set_challenge_response(result.challenge_response);
+  } else {
+    result_ptr->set_error_message(result.GetErrorMessage());
+  }
+  std::move(callback).Run(std::move(result_ptr));
+
+  // Remove the outstanding challenge_key object.
+  bool found = false;
+  for (auto it = outstanding_challenges_.begin();
+       it != outstanding_challenges_.end(); ++it) {
+    if (it->get() == challenge_key_ptr) {
+      outstanding_challenges_.erase(it);
+      found = true;
+      break;
+    }
+  }
+  DCHECK(found);
+}
+
+//------------------------------------------------------------------------------
+
 void KeystoreServiceAsh::GetKeyStores(GetKeyStoresCallback callback) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   PlatformKeysService* platform_keys_service = GetPlatformKeys();
 
-  platform_keys_service->GetTokens(
-      base::BindOnce(&KeystoreServiceAsh::OnGetTokens, std::move(callback)));
+  platform_keys_service->GetTokens(base::BindOnce(
+      &KeystoreServiceAsh::DidGetKeyStores, std::move(callback)));
 }
 
+// static
+void KeystoreServiceAsh::DidGetKeyStores(
+    GetKeyStoresCallback callback,
+    std::unique_ptr<std::vector<TokenId>> platform_keys_token_ids,
+    chromeos::platform_keys::Status status) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+  mojom::GetKeyStoresResultPtr result_ptr = mojom::GetKeyStoresResult::New();
+
+  if (status == chromeos::platform_keys::Status::kSuccess) {
+    std::vector<mojom::KeystoreType> key_stores;
+    for (auto token_id : *platform_keys_token_ids) {
+      switch (token_id) {
+        case TokenId::kUser:
+          key_stores.push_back(mojom::KeystoreType::kUser);
+          break;
+        case TokenId::kSystem:
+          key_stores.push_back(mojom::KeystoreType::kDevice);
+          break;
+      }
+    }
+    result_ptr->set_key_stores(std::move(key_stores));
+  } else {
+    result_ptr->set_error_message(
+        chromeos::platform_keys::StatusToString(status));
+  }
+
+  std::move(callback).Run(std::move(result_ptr));
+}
+
+//------------------------------------------------------------------------------
+
 void KeystoreServiceAsh::GetCertificates(mojom::KeystoreType keystore,
                                          GetCertificatesCallback callback) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -162,57 +225,40 @@
   }
 
   platform_keys_service->GetCertificates(
-      token_id.value(), base::BindOnce(&KeystoreServiceAsh::OnGetCertificates,
+      token_id.value(), base::BindOnce(&KeystoreServiceAsh::DidGetCertificates,
                                        std::move(callback)));
 }
 
-void KeystoreServiceAsh::GenerateKey(
-    mojom::KeystoreType keystore,
-    mojom::KeystoreSigningAlgorithmPtr algorithm,
-    const base::Optional<std::string>& extension_id,
-    GenerateKeyCallback callback) {
+// static
+void KeystoreServiceAsh::DidGetCertificates(
+    GetCertificatesCallback callback,
+    std::unique_ptr<net::CertificateList> certs,
+    chromeos::platform_keys::Status status) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  if (!extension_id) {
-    std::move(callback).Run(mojom::KeystoreBinaryResult::NewErrorMessage(
-        kUnsupportedLacrosVersion));
-    return;
+
+  mojom::GetCertificatesResultPtr result_ptr =
+      mojom::GetCertificatesResult::New();
+
+  if (status == chromeos::platform_keys::Status::kSuccess) {
+    std::vector<std::vector<uint8_t>> output;
+    for (scoped_refptr<net::X509Certificate> cert : *certs) {
+      CRYPTO_BUFFER* der_buffer = cert->cert_buffer();
+      const uint8_t* data = CRYPTO_BUFFER_data(der_buffer);
+      std::vector<uint8_t> der_x509_certificate(
+          data, data + CRYPTO_BUFFER_len(der_buffer));
+      output.push_back(std::move(der_x509_certificate));
+    }
+    result_ptr->set_certificates(std::move(output));
+  } else {
+    result_ptr->set_error_message(
+        chromeos::platform_keys::StatusToString(status));
   }
 
-  ExtensionPlatformKeysService* ext_platform_keys_service =
-      GetExtensionPlatformKeys();
-  base::Optional<TokenId> token_id = KeystoreToToken(keystore);
-  if (!token_id) {
-    std::move(callback).Run(
-        mojom::KeystoreBinaryResult::NewErrorMessage(kUnsupportedKeystoreType));
-    return;
-  }
-
-  switch (algorithm->which()) {
-    case mojom::KeystoreSigningAlgorithm::Tag::PKCS115: {
-      auto c = base::BindOnce(&KeystoreServiceAsh::OnGenerateKey,
-                              std::move(callback));
-      ext_platform_keys_service->GenerateRSAKey(
-          token_id.value(), algorithm->get_pkcs115()->modulus_length,
-          *extension_id, std::move(c));
-      break;
-    }
-    case mojom::KeystoreSigningAlgorithm::Tag::ECDSA: {
-      auto c = base::BindOnce(&KeystoreServiceAsh::OnGenerateKey,
-                              std::move(callback));
-      ext_platform_keys_service->GenerateECKey(
-          token_id.value(), algorithm->get_ecdsa()->named_curve, *extension_id,
-          std::move(c));
-      break;
-    }
-    default: {
-      std::move(callback).Run(mojom::KeystoreBinaryResult::NewErrorMessage(
-          chromeos::platform_keys::StatusToString(
-              chromeos::platform_keys::Status::kErrorAlgorithmNotSupported)));
-      break;
-    }
-  }
+  std::move(callback).Run(std::move(result_ptr));
 }
 
+//------------------------------------------------------------------------------
+
 void KeystoreServiceAsh::AddCertificate(mojom::KeystoreType keystore,
                                         const std::vector<uint8_t>& certificate,
                                         AddCertificateCallback callback) {
@@ -231,10 +277,22 @@
   PlatformKeysService* platform_keys_service = GetPlatformKeys();
   platform_keys_service->ImportCertificate(
       token_id.value(), cert_x509,
-      base::BindOnce(&KeystoreServiceAsh::OnImportCertificate,
+      base::BindOnce(&KeystoreServiceAsh::DidImportCertificate,
                      std::move(callback)));
 }
 
+void KeystoreServiceAsh::DidImportCertificate(
+    AddCertificateCallback callback,
+    chromeos::platform_keys::Status status) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  if (status == chromeos::platform_keys::Status::kSuccess)
+    std::move(callback).Run(/*error=*/"");
+  else
+    std::move(callback).Run(chromeos::platform_keys::StatusToString(status));
+}
+
+//------------------------------------------------------------------------------
+
 void KeystoreServiceAsh::RemoveCertificate(
     mojom::KeystoreType keystore,
     const std::vector<uint8_t>& certificate,
@@ -254,10 +312,22 @@
   PlatformKeysService* platform_keys_service = GetPlatformKeys();
   platform_keys_service->RemoveCertificate(
       token_id.value(), cert_x509,
-      base::BindOnce(&KeystoreServiceAsh::OnRemoveCertificate,
+      base::BindOnce(&KeystoreServiceAsh::DidRemoveCertificate,
                      std::move(callback)));
 }
 
+void KeystoreServiceAsh::DidRemoveCertificate(
+    RemoveCertificateCallback callback,
+    chromeos::platform_keys::Status status) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  if (status == chromeos::platform_keys::Status::kSuccess)
+    std::move(callback).Run(/*error=*/"");
+  else
+    std::move(callback).Run(chromeos::platform_keys::StatusToString(status));
+}
+
+//------------------------------------------------------------------------------
+
 void KeystoreServiceAsh::GetPublicKey(
     const std::vector<uint8_t>& certificate,
     mojom::KeystoreSigningAlgorithmName algorithm_name,
@@ -300,12 +370,81 @@
   std::move(callback).Run(std::move(result_ptr));
 }
 
-void KeystoreServiceAsh::Sign(KeystoreType keystore,
-                              const std::vector<uint8_t>& public_key,
-                              SigningScheme scheme,
-                              const std::vector<uint8_t>& data,
-                              const std::string& extension_id,
-                              SignCallback callback) {
+//------------------------------------------------------------------------------
+
+void KeystoreServiceAsh::ExtensionGenerateKey(
+    mojom::KeystoreType keystore,
+    mojom::KeystoreSigningAlgorithmPtr algorithm,
+    const base::Optional<std::string>& extension_id,
+    ExtensionGenerateKeyCallback callback) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  if (!extension_id) {
+    std::move(callback).Run(mojom::KeystoreBinaryResult::NewErrorMessage(
+        kUnsupportedLacrosVersion));
+    return;
+  }
+
+  ExtensionPlatformKeysService* ext_platform_keys_service =
+      GetExtensionPlatformKeys();
+  base::Optional<TokenId> token_id = KeystoreToToken(keystore);
+  if (!token_id) {
+    std::move(callback).Run(
+        mojom::KeystoreBinaryResult::NewErrorMessage(kUnsupportedKeystoreType));
+    return;
+  }
+
+  switch (algorithm->which()) {
+    case mojom::KeystoreSigningAlgorithm::Tag::PKCS115: {
+      auto c = base::BindOnce(&KeystoreServiceAsh::DidExtensionGenerateKey,
+                              std::move(callback));
+      ext_platform_keys_service->GenerateRSAKey(
+          token_id.value(), algorithm->get_pkcs115()->modulus_length,
+          *extension_id, std::move(c));
+      break;
+    }
+    case mojom::KeystoreSigningAlgorithm::Tag::ECDSA: {
+      auto c = base::BindOnce(&KeystoreServiceAsh::DidExtensionGenerateKey,
+                              std::move(callback));
+      ext_platform_keys_service->GenerateECKey(
+          token_id.value(), algorithm->get_ecdsa()->named_curve, *extension_id,
+          std::move(c));
+      break;
+    }
+    default: {
+      std::move(callback).Run(mojom::KeystoreBinaryResult::NewErrorMessage(
+          chromeos::platform_keys::StatusToString(
+              chromeos::platform_keys::Status::kErrorAlgorithmNotSupported)));
+      break;
+    }
+  }
+}
+
+// static
+void KeystoreServiceAsh::DidExtensionGenerateKey(
+    ExtensionGenerateKeyCallback callback,
+    const std::string& public_key,
+    chromeos::platform_keys::Status status) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  crosapi::mojom::KeystoreBinaryResultPtr result_ptr =
+      mojom::KeystoreBinaryResult::New();
+  if (status == chromeos::platform_keys::Status::kSuccess) {
+    result_ptr->set_blob(
+        std::vector<uint8_t>(public_key.begin(), public_key.end()));
+  } else {
+    result_ptr->set_error_message(
+        chromeos::platform_keys::StatusToString(status));
+  }
+  std::move(callback).Run(std::move(result_ptr));
+}
+
+//------------------------------------------------------------------------------
+
+void KeystoreServiceAsh::ExtensionSign(KeystoreType keystore,
+                                       const std::vector<uint8_t>& public_key,
+                                       SigningScheme scheme,
+                                       const std::vector<uint8_t>& data,
+                                       const std::string& extension_id,
+                                       ExtensionSignCallback callback) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   base::Optional<TokenId> token_id = KeystoreToToken(keystore);
   if (!token_id) {
@@ -326,7 +465,8 @@
       service->SignRSAPKCS1Raw(
           token_id, std::string(data.begin(), data.end()),
           std::string(public_key.begin(), public_key.end()), extension_id,
-          base::BindOnce(&KeystoreServiceAsh::OnDidSign, std::move(callback)));
+          base::BindOnce(&KeystoreServiceAsh::DidExtensionSign,
+                         std::move(callback)));
       return;
     case SigningScheme::kRsassaPkcs1V15Sha1:
       key_type = chromeos::platform_keys::KeyType::kRsassaPkcs1V15;
@@ -362,114 +502,20 @@
       break;
   }
 
-  service->SignDigest(
-      token_id, std::string(data.begin(), data.end()),
-      std::string(public_key.begin(), public_key.end()), key_type,
-      hash_algorithm, extension_id,
-      base::BindOnce(&KeystoreServiceAsh::OnDidSign, std::move(callback)));
+  service->SignDigest(token_id, std::string(data.begin(), data.end()),
+                      std::string(public_key.begin(), public_key.end()),
+                      key_type, hash_algorithm, extension_id,
+                      base::BindOnce(&KeystoreServiceAsh::DidExtensionSign,
+                                     std::move(callback)));
 }
 
 // static
-void KeystoreServiceAsh::OnGetTokens(
-    GetKeyStoresCallback callback,
-    std::unique_ptr<std::vector<TokenId>> platform_keys_token_ids,
+void KeystoreServiceAsh::DidExtensionSign(
+    ExtensionSignCallback callback,
+    const std::string& signature,
     chromeos::platform_keys::Status status) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
-  mojom::GetKeyStoresResultPtr result_ptr = mojom::GetKeyStoresResult::New();
-
-  if (status == chromeos::platform_keys::Status::kSuccess) {
-    std::vector<mojom::KeystoreType> key_stores;
-    for (auto token_id : *platform_keys_token_ids) {
-      switch (token_id) {
-        case TokenId::kUser:
-          key_stores.push_back(mojom::KeystoreType::kUser);
-          break;
-        case TokenId::kSystem:
-          key_stores.push_back(mojom::KeystoreType::kDevice);
-          break;
-      }
-    }
-    result_ptr->set_key_stores(std::move(key_stores));
-  } else {
-    result_ptr->set_error_message(
-        chromeos::platform_keys::StatusToString(status));
-  }
-
-  std::move(callback).Run(std::move(result_ptr));
-}
-
-// static
-void KeystoreServiceAsh::OnGetCertificates(
-    GetCertificatesCallback callback,
-    std::unique_ptr<net::CertificateList> certs,
-    chromeos::platform_keys::Status status) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
-  mojom::GetCertificatesResultPtr result_ptr =
-      mojom::GetCertificatesResult::New();
-
-  if (status == chromeos::platform_keys::Status::kSuccess) {
-    std::vector<std::vector<uint8_t>> output;
-    for (scoped_refptr<net::X509Certificate> cert : *certs) {
-      CRYPTO_BUFFER* der_buffer = cert->cert_buffer();
-      const uint8_t* data = CRYPTO_BUFFER_data(der_buffer);
-      std::vector<uint8_t> der_x509_certificate(
-          data, data + CRYPTO_BUFFER_len(der_buffer));
-      output.push_back(std::move(der_x509_certificate));
-    }
-    result_ptr->set_certificates(std::move(output));
-  } else {
-    result_ptr->set_error_message(
-        chromeos::platform_keys::StatusToString(status));
-  }
-
-  std::move(callback).Run(std::move(result_ptr));
-}
-
-// static
-void KeystoreServiceAsh::OnGenerateKey(GenerateKeyCallback callback,
-                                       const std::string& public_key,
-                                       chromeos::platform_keys::Status status) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  crosapi::mojom::KeystoreBinaryResultPtr result_ptr =
-      mojom::KeystoreBinaryResult::New();
-  if (status == chromeos::platform_keys::Status::kSuccess) {
-    result_ptr->set_blob(
-        std::vector<uint8_t>(public_key.begin(), public_key.end()));
-  } else {
-    result_ptr->set_error_message(
-        chromeos::platform_keys::StatusToString(status));
-  }
-  std::move(callback).Run(std::move(result_ptr));
-}
-
-void KeystoreServiceAsh::OnImportCertificate(
-    AddCertificateCallback callback,
-    chromeos::platform_keys::Status status) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  if (status == chromeos::platform_keys::Status::kSuccess)
-    std::move(callback).Run(/*error=*/"");
-  else
-    std::move(callback).Run(chromeos::platform_keys::StatusToString(status));
-}
-
-void KeystoreServiceAsh::OnRemoveCertificate(
-    RemoveCertificateCallback callback,
-    chromeos::platform_keys::Status status) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  if (status == chromeos::platform_keys::Status::kSuccess)
-    std::move(callback).Run(/*error=*/"");
-  else
-    std::move(callback).Run(chromeos::platform_keys::StatusToString(status));
-}
-
-// static
-void KeystoreServiceAsh::OnDidSign(SignCallback callback,
-                                   const std::string& signature,
-                                   chromeos::platform_keys::Status status) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
   if (status == chromeos::platform_keys::Status::kSuccess) {
     std::move(callback).Run(mojom::KeystoreBinaryResult::NewBlob(
         std::vector<uint8_t>(signature.begin(), signature.end())));
@@ -479,31 +525,4 @@
   }
 }
 
-void KeystoreServiceAsh::DidChallengeAttestationOnlyKeystore(
-    ChallengeAttestationOnlyKeystoreCallback callback,
-    void* challenge_key_ptr,
-    const ash::attestation::TpmChallengeKeyResult& result) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  crosapi::mojom::KeystoreStringResultPtr result_ptr =
-      mojom::KeystoreStringResult::New();
-  if (result.IsSuccess()) {
-    result_ptr->set_challenge_response(result.challenge_response);
-  } else {
-    result_ptr->set_error_message(result.GetErrorMessage());
-  }
-  std::move(callback).Run(std::move(result_ptr));
-
-  // Remove the outstanding challenge_key object.
-  bool found = false;
-  for (auto it = outstanding_challenges_.begin();
-       it != outstanding_challenges_.end(); ++it) {
-    if (it->get() == challenge_key_ptr) {
-      outstanding_challenges_.erase(it);
-      found = true;
-      break;
-    }
-  }
-  DCHECK(found);
-}
-
 }  // namespace crosapi
diff --git a/chrome/browser/ash/crosapi/keystore_service_ash.h b/chrome/browser/ash/crosapi/keystore_service_ash.h
index 7c978dd..ef684529 100644
--- a/chrome/browser/ash/crosapi/keystore_service_ash.h
+++ b/chrome/browser/ash/crosapi/keystore_service_ash.h
@@ -28,6 +28,9 @@
 // system keystores. This class is affine to the UI thread.
 class KeystoreServiceAsh : public mojom::KeystoreService {
  public:
+  using KeystoreType = mojom::KeystoreType;
+  using SigningScheme = mojom::KeystoreSigningScheme;
+
   KeystoreServiceAsh();
   KeystoreServiceAsh(const KeystoreServiceAsh&) = delete;
   KeystoreServiceAsh& operator=(const KeystoreServiceAsh&) = delete;
@@ -36,8 +39,6 @@
   void BindReceiver(mojo::PendingReceiver<mojom::KeystoreService> receiver);
 
   // mojom::KeystoreService:
-  using KeystoreType = mojom::KeystoreType;
-  using SigningScheme = mojom::KeystoreSigningScheme;
   void ChallengeAttestationOnlyKeystore(
       const std::string& challenge,
       mojom::KeystoreType type,
@@ -46,10 +47,6 @@
   void GetKeyStores(GetKeyStoresCallback callback) override;
   void GetCertificates(mojom::KeystoreType keystore,
                        GetCertificatesCallback callback) override;
-  void GenerateKey(mojom::KeystoreType keystore,
-                   mojom::KeystoreSigningAlgorithmPtr algorithm,
-                   const base::Optional<std::string>& extension_id,
-                   GenerateKeyCallback callback) override;
   void AddCertificate(mojom::KeystoreType keystore,
                       const std::vector<uint8_t>& certificate,
                       AddCertificateCallback callback) override;
@@ -59,39 +56,42 @@
   void GetPublicKey(const std::vector<uint8_t>& certificate,
                     mojom::KeystoreSigningAlgorithmName algorithm_name,
                     GetPublicKeyCallback callback) override;
-  void Sign(KeystoreType keystore,
-            const std::vector<uint8_t>& public_key,
-            SigningScheme scheme,
-            const std::vector<uint8_t>& data,
-            const std::string& extension_id,
-            SignCallback callback) override;
+  void ExtensionGenerateKey(mojom::KeystoreType keystore,
+                            mojom::KeystoreSigningAlgorithmPtr algorithm,
+                            const base::Optional<std::string>& extension_id,
+                            ExtensionGenerateKeyCallback callback) override;
+  void ExtensionSign(KeystoreType keystore,
+                     const std::vector<uint8_t>& public_key,
+                     SigningScheme scheme,
+                     const std::vector<uint8_t>& data,
+                     const std::string& extension_id,
+                     ExtensionSignCallback callback) override;
 
  private:
-  static void OnGetTokens(
-      GetKeyStoresCallback callback,
-      std::unique_ptr<std::vector<chromeos::platform_keys::TokenId>>
-          platform_keys_token_ids,
-      chromeos::platform_keys::Status status);
-  static void OnGetCertificates(GetCertificatesCallback callback,
-                                std::unique_ptr<net::CertificateList> certs,
-                                chromeos::platform_keys::Status status);
-  static void OnGenerateKey(GenerateKeyCallback callback,
-                            const std::string& public_key,
-                            chromeos::platform_keys::Status status);
-  static void OnImportCertificate(AddCertificateCallback callback,
-                                  chromeos::platform_keys::Status status);
-  static void OnRemoveCertificate(RemoveCertificateCallback callback,
-                                  chromeos::platform_keys::Status status);
-  static void OnDidSign(SignCallback callback,
-                        const std::string& signature,
-                        chromeos::platform_keys::Status status);
-
   // |challenge| is used as a opaque identifier to match against the unique_ptr
   // in outstanding_challenges_. It should not be dereferenced.
   void DidChallengeAttestationOnlyKeystore(
       ChallengeAttestationOnlyKeystoreCallback callback,
       void* challenge,
       const ash::attestation::TpmChallengeKeyResult& result);
+  static void DidGetKeyStores(
+      GetKeyStoresCallback callback,
+      std::unique_ptr<std::vector<chromeos::platform_keys::TokenId>>
+          platform_keys_token_ids,
+      chromeos::platform_keys::Status status);
+  static void DidGetCertificates(GetCertificatesCallback callback,
+                                 std::unique_ptr<net::CertificateList> certs,
+                                 chromeos::platform_keys::Status status);
+  static void DidImportCertificate(AddCertificateCallback callback,
+                                   chromeos::platform_keys::Status status);
+  static void DidRemoveCertificate(RemoveCertificateCallback callback,
+                                   chromeos::platform_keys::Status status);
+  static void DidExtensionGenerateKey(ExtensionGenerateKeyCallback callback,
+                                      const std::string& public_key,
+                                      chromeos::platform_keys::Status status);
+  static void DidExtensionSign(ExtensionSignCallback callback,
+                               const std::string& signature,
+                               chromeos::platform_keys::Status status);
 
   // Container to keep outstanding challenges alive.
   std::vector<std::unique_ptr<ash::attestation::TpmChallengeKey>>
diff --git a/chrome/browser/chromeos/remote_apps/id_generator.cc b/chrome/browser/ash/remote_apps/id_generator.cc
similarity index 89%
rename from chrome/browser/chromeos/remote_apps/id_generator.cc
rename to chrome/browser/ash/remote_apps/id_generator.cc
index f9e570a4..e20cd8e 100644
--- a/chrome/browser/chromeos/remote_apps/id_generator.cc
+++ b/chrome/browser/ash/remote_apps/id_generator.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/chromeos/remote_apps/id_generator.h"
+#include "chrome/browser/ash/remote_apps/id_generator.h"
 
 #include "base/guid.h"
 
diff --git a/chrome/browser/chromeos/remote_apps/id_generator.h b/chrome/browser/ash/remote_apps/id_generator.h
similarity index 85%
rename from chrome/browser/chromeos/remote_apps/id_generator.h
rename to chrome/browser/ash/remote_apps/id_generator.h
index 1279e43..cddd2e06 100644
--- a/chrome/browser/chromeos/remote_apps/id_generator.h
+++ b/chrome/browser/ash/remote_apps/id_generator.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_CHROMEOS_REMOTE_APPS_ID_GENERATOR_H_
-#define CHROME_BROWSER_CHROMEOS_REMOTE_APPS_ID_GENERATOR_H_
+#ifndef CHROME_BROWSER_ASH_REMOTE_APPS_ID_GENERATOR_H_
+#define CHROME_BROWSER_ASH_REMOTE_APPS_ID_GENERATOR_H_
 
 #include <string>
 #include <vector>
@@ -47,4 +47,4 @@
 
 }  // namespace chromeos
 
-#endif  // CHROME_BROWSER_CHROMEOS_REMOTE_APPS_ID_GENERATOR_H_
+#endif  // CHROME_BROWSER_ASH_REMOTE_APPS_ID_GENERATOR_H_
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_impl.cc b/chrome/browser/ash/remote_apps/remote_apps_impl.cc
similarity index 94%
rename from chrome/browser/chromeos/remote_apps/remote_apps_impl.cc
rename to chrome/browser/ash/remote_apps/remote_apps_impl.cc
index 4c6b8992..b0f482d 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_impl.cc
+++ b/chrome/browser/ash/remote_apps/remote_apps_impl.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/chromeos/remote_apps/remote_apps_impl.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_impl.h"
 
 #include <utility>
 
@@ -10,8 +10,8 @@
 #include "base/callback.h"
 #include "base/containers/contains.h"
 #include "base/optional.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager_factory.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "content/public/browser/render_frame_host.h"
 #include "extensions/common/extension.h"
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_impl.h b/chrome/browser/ash/remote_apps/remote_apps_impl.h
similarity index 89%
rename from chrome/browser/chromeos/remote_apps/remote_apps_impl.h
rename to chrome/browser/ash/remote_apps/remote_apps_impl.h
index 8fb85e8..80fb7db 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_impl.h
+++ b/chrome/browser/ash/remote_apps/remote_apps_impl.h
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_IMPL_H_
-#define CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_IMPL_H_
+#ifndef CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_IMPL_H_
+#define CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_IMPL_H_
 
 #include <set>
 #include <string>
 
 #include "base/memory/weak_ptr.h"
 #include "base/scoped_observer.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_types.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_types.h"
 #include "chromeos/components/remote_apps/mojom/remote_apps.mojom.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
 #include "mojo/public/cpp/bindings/receiver_set.h"
@@ -76,4 +76,4 @@
 
 }  // namespace chromeos
 
-#endif  // CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_IMPL_H_
+#endif  // CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_IMPL_H_
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_impl_browsertest.cc b/chrome/browser/ash/remote_apps/remote_apps_impl_browsertest.cc
similarity index 95%
rename from chrome/browser/chromeos/remote_apps/remote_apps_impl_browsertest.cc
rename to chrome/browser/ash/remote_apps/remote_apps_impl_browsertest.cc
index a5afe99..3bd3c5cc 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_impl_browsertest.cc
+++ b/chrome/browser/ash/remote_apps/remote_apps_impl_browsertest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/chromeos/remote_apps/remote_apps_impl.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_impl.h"
 
 #include <string>
 #include <vector>
@@ -20,11 +20,11 @@
 #include "chrome/browser/ash/login/test/session_manager_state_waiter.h"
 #include "chrome/browser/ash/login/wizard_controller.h"
 #include "chrome/browser/ash/profiles/profile_helper.h"
+#include "chrome/browser/ash/remote_apps/id_generator.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager_factory.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_model.h"
 #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h"
-#include "chrome/browser/chromeos/remote_apps/id_generator.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager_factory.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_model.h"
 #include "chrome/browser/extensions/chrome_test_extension_loader.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h"
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_manager.cc b/chrome/browser/ash/remote_apps/remote_apps_manager.cc
similarity index 98%
rename from chrome/browser/chromeos/remote_apps/remote_apps_manager.cc
rename to chrome/browser/ash/remote_apps/remote_apps_manager.cc
index 588c5d4..efac39d 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_manager.cc
+++ b/chrome/browser/ash/remote_apps/remote_apps_manager.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager.h"
 
 #include <utility>
 
@@ -13,14 +13,13 @@
 #include "base/strings/utf_string_conversions.h"
 #include "cc/paint/paint_flags.h"
 #include "chrome/browser/apps/app_service/menu_util.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_impl.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_impl.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/app_list/app_list_model_updater.h"
 #include "chrome/browser/ui/app_list/app_list_syncable_service.h"
 #include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h"
 #include "chrome/browser/ui/app_list/chrome_app_list_item.h"
 #include "chrome/grit/generated_resources.h"
-#include "components/services/app_service/public/cpp/app_update.h"
 #include "net/traffic_annotation/network_traffic_annotation.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/gfx/canvas.h"
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_manager.h b/chrome/browser/ash/remote_apps/remote_apps_manager.h
similarity index 93%
rename from chrome/browser/chromeos/remote_apps/remote_apps_manager.h
rename to chrome/browser/ash/remote_apps/remote_apps_manager.h
index f5fcaf7..18f9602 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_manager.h
+++ b/chrome/browser/ash/remote_apps/remote_apps_manager.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_MANAGER_H_
-#define CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_MANAGER_H_
+#ifndef CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_MANAGER_H_
+#define CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_MANAGER_H_
 
 #include <map>
 #include <vector>
@@ -13,9 +13,9 @@
 #include "base/observer_list.h"
 #include "base/scoped_observation.h"
 #include "chrome/browser/apps/app_service/publishers/remote_apps.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_impl.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_model.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_types.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_impl.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_model.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_types.h"
 #include "chrome/browser/ui/app_list/app_list_model_updater_observer.h"
 #include "chrome/browser/ui/app_list/app_list_syncable_service.h"
 #include "chrome/browser/ui/app_list/chrome_app_list_model_updater.h"
@@ -28,10 +28,6 @@
 class ChromeAppListItem;
 class Profile;
 
-namespace apps {
-class AppUpdate;
-}  // namespace apps
-
 namespace gfx {
 class ImageSkia;
 }  // namespace gfx
@@ -186,4 +182,4 @@
 
 }  // namespace chromeos
 
-#endif  // CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_MANAGER_H_
+#endif  // CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_MANAGER_H_
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_manager_browsertest.cc b/chrome/browser/ash/remote_apps/remote_apps_manager_browsertest.cc
similarity index 98%
rename from chrome/browser/chromeos/remote_apps/remote_apps_manager_browsertest.cc
rename to chrome/browser/ash/remote_apps/remote_apps_manager_browsertest.cc
index 6d04145e..55fd0f4 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_manager_browsertest.cc
+++ b/chrome/browser/ash/remote_apps/remote_apps_manager_browsertest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager.h"
 
 #include "ash/app_list/app_list_controller_impl.h"
 #include "ash/app_list/model/app_list_item.h"
@@ -24,10 +24,10 @@
 #include "chrome/browser/ash/login/test/session_manager_state_waiter.h"
 #include "chrome/browser/ash/login/wizard_controller.h"
 #include "chrome/browser/ash/profiles/profile_helper.h"
+#include "chrome/browser/ash/remote_apps/id_generator.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager_factory.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_model.h"
 #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h"
-#include "chrome/browser/chromeos/remote_apps/id_generator.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager_factory.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_model.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h"
 #include "chrome/browser/ui/ash/launcher/chrome_shelf_controller.h"
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_manager_factory.cc b/chrome/browser/ash/remote_apps/remote_apps_manager_factory.cc
similarity index 96%
rename from chrome/browser/chromeos/remote_apps/remote_apps_manager_factory.cc
rename to chrome/browser/ash/remote_apps/remote_apps_manager_factory.cc
index f6657fc..d0b604d4 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_manager_factory.cc
+++ b/chrome/browser/ash/remote_apps/remote_apps_manager_factory.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager_factory.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager_factory.h"
 
 #include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
 #include "chrome/browser/ash/profiles/profile_helper.h"
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_manager_factory.h b/chrome/browser/ash/remote_apps/remote_apps_manager_factory.h
similarity index 81%
rename from chrome/browser/chromeos/remote_apps/remote_apps_manager_factory.h
rename to chrome/browser/ash/remote_apps/remote_apps_manager_factory.h
index 00bdc45..818b0a1 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_manager_factory.h
+++ b/chrome/browser/ash/remote_apps/remote_apps_manager_factory.h
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_MANAGER_FACTORY_H_
-#define CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_MANAGER_FACTORY_H_
+#ifndef CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_MANAGER_FACTORY_H_
+#define CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_MANAGER_FACTORY_H_
 
 #include "base/no_destructor.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager.h"
 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
 
 class KeyedService;
@@ -44,4 +44,4 @@
 
 }  // namespace chromeos
 
-#endif  // CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_MANAGER_FACTORY_H_
+#endif  // CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_MANAGER_FACTORY_H_
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_model.cc b/chrome/browser/ash/remote_apps/remote_apps_model.cc
similarity index 97%
rename from chrome/browser/chromeos/remote_apps/remote_apps_model.cc
rename to chrome/browser/ash/remote_apps/remote_apps_model.cc
index f6e710c..10406e1d 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_model.cc
+++ b/chrome/browser/ash/remote_apps/remote_apps_model.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/chromeos/remote_apps/remote_apps_model.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_model.h"
 
 namespace chromeos {
 
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_model.h b/chrome/browser/ash/remote_apps/remote_apps_model.h
similarity index 92%
rename from chrome/browser/chromeos/remote_apps/remote_apps_model.h
rename to chrome/browser/ash/remote_apps/remote_apps_model.h
index 02eeb22..8d0c658 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_model.h
+++ b/chrome/browser/ash/remote_apps/remote_apps_model.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_CHROMEOS_REMOTE_APPS_REMOTE_APPS_MODEL_H_
-#define CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_MODEL_H_
+#ifndef CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_MODEL_H_
+#define CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_MODEL_H_
 
 #include <map>
 #include <memory>
@@ -13,7 +13,7 @@
 #include <vector>
 
 #include "base/callback.h"
-#include "chrome/browser/chromeos/remote_apps/id_generator.h"
+#include "chrome/browser/ash/remote_apps/id_generator.h"
 #include "ui/gfx/image/image_skia.h"
 #include "url/gurl.h"
 
@@ -108,4 +108,4 @@
 
 }  // namespace chromeos
 
-#endif  // CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_MODEL_H_
+#endif  // CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_MODEL_H_
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_model_unittest.cc b/chrome/browser/ash/remote_apps/remote_apps_model_unittest.cc
similarity index 98%
rename from chrome/browser/chromeos/remote_apps/remote_apps_model_unittest.cc
rename to chrome/browser/ash/remote_apps/remote_apps_model_unittest.cc
index af3bdcc..45109fa 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_model_unittest.cc
+++ b/chrome/browser/ash/remote_apps/remote_apps_model_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/chromeos/remote_apps/remote_apps_model.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_model.h"
 
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_types.h b/chrome/browser/ash/remote_apps/remote_apps_types.h
similarity index 64%
rename from chrome/browser/chromeos/remote_apps/remote_apps_types.h
rename to chrome/browser/ash/remote_apps/remote_apps_types.h
index e3d9f00..f4dc6115 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_types.h
+++ b/chrome/browser/ash/remote_apps/remote_apps_types.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_CHROMEOS_REMOTE_APPS_REMOTE_APPS_TYPES_H_
-#define CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_TYPES_H_
+#ifndef CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_TYPES_H_
+#define CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_TYPES_H_
 
 namespace chromeos {
 
@@ -17,4 +17,4 @@
 
 }  // namespace chromeos
 
-#endif  // CHROME_BROWSER_CHROMEOS_REMOTE_APPS_REMOTE_APPS_TYPES_H_
+#endif  // CHROME_BROWSER_ASH_REMOTE_APPS_REMOTE_APPS_TYPES_H_
diff --git a/chrome/browser/ash/settings/device_settings_provider.cc b/chrome/browser/ash/settings/device_settings_provider.cc
index 660bd29..2e7663c 100644
--- a/chrome/browser/ash/settings/device_settings_provider.cc
+++ b/chrome/browser/ash/settings/device_settings_provider.cc
@@ -1208,42 +1208,45 @@
   // in this case, as during normal operation, the contents of the cache should
   // never overwrite actual device settings.
   if (new_ownership_status == DeviceSettingsService::OWNERSHIP_TAKEN &&
-      ownership_status_ == DeviceSettingsService::OWNERSHIP_NONE &&
-      device_settings_service_->HasPrivateOwnerKey()) {
-    // There shouldn't be any pending writes, since the cache writes are all
-    // immediate.
-    DCHECK(!store_callback_factory_.HasWeakPtrs());
+      ownership_status_ == DeviceSettingsService::OWNERSHIP_NONE) {
+    if (device_settings_service_->HasPrivateOwnerKey()) {
+      // There shouldn't be any pending writes, since the cache writes are all
+      // immediate.
+      DCHECK(!store_callback_factory_.HasWeakPtrs());
 
-    trusted_status_ = TEMPORARILY_UNTRUSTED;
-    // Apply the locally-accumulated device settings on top of the initial
-    // settings from the service and write back the result.
-    if (device_settings_service_->device_settings()) {
-      em::ChromeDeviceSettingsProto new_settings(
-          *device_settings_service_->device_settings());
-      new_settings.MergeFrom(device_settings_);
-      device_settings_.Swap(&new_settings);
+      trusted_status_ = TEMPORARILY_UNTRUSTED;
+      // Apply the locally-accumulated device settings on top of the initial
+      // settings from the service and write back the result.
+      if (device_settings_service_->device_settings()) {
+        em::ChromeDeviceSettingsProto new_settings(
+            *device_settings_service_->device_settings());
+        new_settings.MergeFrom(device_settings_);
+        device_settings_.Swap(&new_settings);
+      }
+
+      std::unique_ptr<em::PolicyData> policy(new em::PolicyData());
+      policy->set_username(device_settings_service_->GetUsername());
+      CHECK(device_settings_.SerializeToString(policy->mutable_policy_value()));
+      if (!device_settings_service_->GetOwnerSettingsService()
+               ->CommitTentativeDeviceSettings(std::move(policy))) {
+        LOG(ERROR) << "Can't store policy";
+      }
+
+      // TODO(https://crbug.com/433840): Some of the above code can be
+      // simplified or removed, once the DoSet function is removed - then there
+      // will be no pending writes. This is because the only value that needs to
+      // be written as a pending write is kStatsReportingPref, and this is now
+      // handled by the StatsReportingController - see below. Once DoSet is
+      // removed and there are no pending writes that are being maintained by
+      // DeviceSettingsProvider, this code for updating the signed settings for
+      // the new owner should probably be moved outside of
+      // DeviceSettingsProvider.
+
+      StatsReportingController::Get()->OnOwnershipTaken(
+          device_settings_service_->GetOwnerSettingsService());
+    } else if (chromeos::InstallAttributes::Get()->IsEnterpriseManaged()) {
+      StatsReportingController::Get()->ClearPendingValue();
     }
-
-    std::unique_ptr<em::PolicyData> policy(new em::PolicyData());
-    policy->set_username(device_settings_service_->GetUsername());
-    CHECK(device_settings_.SerializeToString(policy->mutable_policy_value()));
-    if (!device_settings_service_->GetOwnerSettingsService()
-             ->CommitTentativeDeviceSettings(std::move(policy))) {
-      LOG(ERROR) << "Can't store policy";
-    }
-
-    // TODO(https://crbug.com/433840): Some of the above code can be simplified
-    // or removed, once the DoSet function is removed - then there will be no
-    // pending writes. This is because the only value that needs to be written
-    // as a pending write is kStatsReportingPref, and this is now handled by the
-    // StatsReportingController - see below.
-    // Once DoSet is removed and there are no pending writes that are being
-    // maintained by DeviceSettingsProvider, this code for updating the signed
-    // settings for the new owner should probably be moved outside of
-    // DeviceSettingsProvider.
-
-    StatsReportingController::Get()->OnOwnershipTaken(
-        device_settings_service_->GetOwnerSettingsService());
   }
 
   ownership_status_ = new_ownership_status;
diff --git a/chrome/browser/ash/settings/stats_reporting_controller.cc b/chrome/browser/ash/settings/stats_reporting_controller.cc
index 46336bd..2fc2104 100644
--- a/chrome/browser/ash/settings/stats_reporting_controller.cc
+++ b/chrome/browser/ash/settings/stats_reporting_controller.cc
@@ -86,7 +86,6 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   bool value = false;
   if ((GetOwnershipStatus() == DeviceSettingsService::OWNERSHIP_NONE ||
-       GetOwnershipStatus() == DeviceSettingsService::OWNERSHIP_UNKNOWN ||
        is_value_being_set_with_service_) &&
       GetPendingValue(&value)) {
     // Return the pending value if it exists and we are sure there is no owner
diff --git a/chrome/browser/ash/settings/stats_reporting_controller.h b/chrome/browser/ash/settings/stats_reporting_controller.h
index a811cd0..541a28b 100644
--- a/chrome/browser/ash/settings/stats_reporting_controller.h
+++ b/chrome/browser/ash/settings/stats_reporting_controller.h
@@ -82,6 +82,9 @@
   // setting.
   void SetOnDeviceSettingsStoredCallBack(base::OnceClosure callback);
 
+  // Clears any value waiting to be written (from storage in local state).
+  void ClearPendingValue();
+
  private:
   friend class StatsReportingControllerTest;
 
@@ -125,9 +128,6 @@
   // exists. Returns false if there is no such value.
   bool GetSignedStoredValue(bool* value);
 
-  // Clears any value waiting to be written (from storage in local state).
-  void ClearPendingValue();
-
   base::WeakPtr<StatsReportingController> as_weak_ptr() {
     return weak_factory_.GetWeakPtr();
   }
diff --git a/chrome/browser/ash/settings/stats_reporting_controller_unittest.cc b/chrome/browser/ash/settings/stats_reporting_controller_unittest.cc
index 91d1d40..c5cd815 100644
--- a/chrome/browser/ash/settings/stats_reporting_controller_unittest.cc
+++ b/chrome/browser/ash/settings/stats_reporting_controller_unittest.cc
@@ -122,8 +122,10 @@
 
   std::unique_ptr<TestingProfile> user = CreateUser(no_keys);
   StatsReportingController::Get()->SetEnabled(user.get(), true);
-  // Read from the pending value when ownership is not taken.
-  EXPECT_TRUE(StatsReportingController::Get()->IsEnabled());
+  // A pending value is written in case there is no owner, in which case it will
+  // be written properly when ownership is taken - but we don't read the
+  // pending value, in case there actually is an owner already.
+  EXPECT_FALSE(StatsReportingController::Get()->IsEnabled());
   ExpectThatPendingValueIs(true);
   ExpectThatSignedStoredValueIs(false);
 
@@ -230,8 +232,8 @@
   // Before device is owned, setting the value means writing a pending value:
   std::unique_ptr<TestingProfile> pre_ownership_user = CreateUser(no_keys);
   StatsReportingController::Get()->SetEnabled(pre_ownership_user.get(), true);
-  EXPECT_TRUE(StatsReportingController::Get()->IsEnabled());
-  EXPECT_TRUE(value_at_last_notification_);
+  EXPECT_FALSE(StatsReportingController::Get()->IsEnabled());
+  EXPECT_FALSE(value_at_last_notification_);
   ExpectThatPendingValueIs(true);
   ExpectThatSignedStoredValueIs(false);
 
diff --git a/chrome/browser/autofill/autofill_interactive_uitest.cc b/chrome/browser/autofill/autofill_interactive_uitest.cc
index 540cbce..b325812 100644
--- a/chrome/browser/autofill/autofill_interactive_uitest.cc
+++ b/chrome/browser/autofill/autofill_interactive_uitest.cc
@@ -339,6 +339,70 @@
     return std::move(response);
   }
 
+  const translate::LanguageState& GetLanguageState() {
+    auto* const client = ChromeTranslateClient::FromWebContents(
+        browser()->tab_strip_model()->GetActiveWebContents());
+    CHECK(client);
+
+    return client->GetLanguageState();
+  }
+
+  // This is largely a copy of CheckForTranslateUI() from Translate's
+  // translate_language_browsertest.cc.
+  void NavigateToContentAndWaitForLanguageDetection(const char* content) {
+    ASSERT_TRUE(browser());
+
+    auto waiter = CreateTranslateWaiter(
+        browser()->tab_strip_model()->GetActiveWebContents(),
+        translate::TranslateWaiter::WaitEvent::kLanguageDetermined);
+
+    SetTestUrlResponse(content);
+    ASSERT_NO_FATAL_FAILURE(
+        ui_test_utils::NavigateToURL(browser(), GetTestUrl()));
+    waiter->Wait();
+
+    // Language detection sometimes fires early with an "und" (= undetermined)
+    // detected code.
+    size_t wait_counter = 0;
+    constexpr size_t kMaxWaits = 2;
+    while (GetLanguageState().source_language() == "und" ||
+           GetLanguageState().source_language().empty()) {
+      ++wait_counter;
+      ASSERT_LE(wait_counter, kMaxWaits)
+          << "Translate reported no/undetermined language " << wait_counter
+          << " times";
+      CreateTranslateWaiter(
+          browser()->tab_strip_model()->GetActiveWebContents(),
+          translate::TranslateWaiter::WaitEvent::kLanguageDetermined)
+          ->Wait();
+    }
+
+    const TranslateBubbleModel* model =
+        translate::test_utils::GetCurrentModel(browser());
+    ASSERT_NE(nullptr, model);
+  }
+
+  // This is largely a copy of Translate() from Translate's
+  // translate_language_browsertest.cc.
+  void Translate(const bool first_translate) {
+    auto waiter = CreateTranslateWaiter(
+        browser()->tab_strip_model()->GetActiveWebContents(),
+        translate::TranslateWaiter::WaitEvent::kPageTranslated);
+
+    EXPECT_EQ(
+        TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
+        translate::test_utils::GetCurrentModel(browser())->GetViewState());
+
+    translate::test_utils::PressTranslate(browser());
+    if (first_translate)
+      SimulateURLFetch();
+
+    waiter->Wait();
+    EXPECT_EQ(
+        TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE,
+        translate::test_utils::GetCurrentModel(browser())->GetViewState());
+  }
+
   void CreateTestProfile() {
     AutofillProfile profile;
     test::SetProfileInfo(&profile, "Milton", "C.", "Waddams",
@@ -1924,18 +1988,9 @@
   EXPECT_TRUE(select_blur_triggered);
 }
 
-// Test fails on Linux ASAN and flakes on Windows, see http://crbug.com/532737
-// and http://crbug.com/1203410.
-#if defined(ADDRESS_SANITIZER) || defined(OS_WIN)
-#define MAYBE_AutofillAfterTranslate DISABLED_AutofillAfterTranslate
-#else
-#define MAYBE_AutofillAfterTranslate AutofillAfterTranslate
-#endif  // defined(ADDRESS_SANITIZER) || defined(OS_WIN)
-IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, MAYBE_AutofillAfterTranslate) {
+IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, AutofillAfterTranslate) {
   ASSERT_TRUE(TranslateService::IsTranslateBubbleEnabled());
-
   translate::TranslateManager::SetIgnoreMissingKeyForTesting(true);
-
   CreateTestProfile();
 
   static const char kForm[] =
@@ -1975,36 +2030,11 @@
       "彼にいくつかの素晴らしいを調達することができます。それから、いくつかの"
       "利";
 
-  // Set up an observer to be able to wait for the bubble to be shown.
-  auto language_waiter = translate::CreateTranslateWaiter(
-      GetWebContents(),
-      translate::TranslateWaiter::WaitEvent::kLanguageDetermined);
-
-  SetTestUrlResponse(kForm);
-  ASSERT_NO_FATAL_FAILURE(
-      ui_test_utils::NavigateToURL(browser(), GetTestUrl()));
-
-  language_waiter->Wait();
-
-  // Verify current translate step.
-  const TranslateBubbleModel* model =
-      translate::test_utils::GetCurrentModel(browser());
-  ASSERT_NE(nullptr, model);
-  EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
-            model->GetViewState());
-
-  translate::test_utils::PressTranslate(browser());
-
-  // Wait for translation.
-  auto translate_waiter = translate::CreateTranslateWaiter(
-      GetWebContents(), translate::TranslateWaiter::WaitEvent::kPageTranslated);
-
-  // Simulate the translate script being retrieved.
-  // Pass fake google.translate lib as the translate script.
-  SimulateURLFetch();
-
-  translate_waiter->Wait();
-
+  NavigateToContentAndWaitForLanguageDetection(kForm);
+  ASSERT_EQ("ja", GetLanguageState().current_language());
+  ASSERT_NO_FATAL_FAILURE(Translate(true));
+  ASSERT_EQ("ja", GetLanguageState().source_language());
+  ASSERT_EQ("en", GetLanguageState().current_language());
   TryBasicFormFill();
 }
 
diff --git a/chrome/browser/browsing_data/navigation_entry_remover.cc b/chrome/browser/browsing_data/navigation_entry_remover.cc
index a4e25fd..9d07adc 100644
--- a/chrome/browser/browsing_data/navigation_entry_remover.cc
+++ b/chrome/browser/browsing_data/navigation_entry_remover.cc
@@ -215,7 +215,7 @@
 
 void RemoveNavigationEntries(Profile* profile,
                              const history::DeletionInfo& deletion_info) {
-  DCHECK(profile->IsRegularProfile());
+  DCHECK(!profile->IsOffTheRecord());
   DCHECK(!deletion_info.is_from_expiration());
 
   base::flat_set<GURL> url_set;
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 617afd3..808e3d2e 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -1687,6 +1687,17 @@
     "../ash/release_notes/release_notes_notification.h",
     "../ash/release_notes/release_notes_storage.cc",
     "../ash/release_notes/release_notes_storage.h",
+    "../ash/remote_apps/id_generator.cc",
+    "../ash/remote_apps/id_generator.h",
+    "../ash/remote_apps/remote_apps_impl.cc",
+    "../ash/remote_apps/remote_apps_impl.h",
+    "../ash/remote_apps/remote_apps_manager.cc",
+    "../ash/remote_apps/remote_apps_manager.h",
+    "../ash/remote_apps/remote_apps_manager_factory.cc",
+    "../ash/remote_apps/remote_apps_manager_factory.h",
+    "../ash/remote_apps/remote_apps_model.cc",
+    "../ash/remote_apps/remote_apps_model.h",
+    "../ash/remote_apps/remote_apps_types.h",
     "../ash/reset/metrics.h",
     "../ash/scanning/chrome_scanning_app_delegate.cc",
     "../ash/scanning/chrome_scanning_app_delegate.h",
@@ -3010,17 +3021,6 @@
     "printing/zeroconf_printer_detector.h",
     "process_snapshot_server.cc",
     "process_snapshot_server.h",
-    "remote_apps/id_generator.cc",
-    "remote_apps/id_generator.h",
-    "remote_apps/remote_apps_impl.cc",
-    "remote_apps/remote_apps_impl.h",
-    "remote_apps/remote_apps_manager.cc",
-    "remote_apps/remote_apps_manager.h",
-    "remote_apps/remote_apps_manager_factory.cc",
-    "remote_apps/remote_apps_manager_factory.h",
-    "remote_apps/remote_apps_model.cc",
-    "remote_apps/remote_apps_model.h",
-    "remote_apps/remote_apps_types.h",
     "scheduler_configuration_manager.cc",
     "scheduler_configuration_manager.h",
     "secure_channel/nearby_connection_broker.cc",
@@ -3821,6 +3821,7 @@
     "../ash/plugin_vm/plugin_vm_util_unittest.cc",
     "../ash/release_notes/release_notes_notification_unittest.cc",
     "../ash/release_notes/release_notes_storage_unittest.cc",
+    "../ash/remote_apps/remote_apps_model_unittest.cc",
     "../ash/scanning/chrome_scanning_app_delegate_unittest.cc",
     "../ash/scanning/fake_lorgnette_scanner_manager.cc",
     "../ash/scanning/fake_lorgnette_scanner_manager.h",
@@ -4224,7 +4225,6 @@
     "printing/zeroconf_printer_detector_unittest.cc",
     "process_snapshot_server_unittest.cc",
     "proxy_config_service_impl_unittest.cc",
-    "remote_apps/remote_apps_model_unittest.cc",
     "scheduler_configuration_manager_unittest.cc",
     "secure_channel/nearby_connection_broker_impl_unittest.cc",
     "secure_channel/nearby_connector_impl_unittest.cc",
diff --git a/chrome/browser/component_updater/zxcvbn_data_component_installer.cc b/chrome/browser/component_updater/zxcvbn_data_component_installer.cc
index 47822d9..a7c92e25 100644
--- a/chrome/browser/component_updater/zxcvbn_data_component_installer.cc
+++ b/chrome/browser/component_updater/zxcvbn_data_component_installer.cc
@@ -20,6 +20,7 @@
 #include "base/logging.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/ranges/algorithm.h"
+#include "base/strings/string_piece.h"
 #include "base/strings/string_split.h"
 #include "base/task/post_task.h"
 #include "base/task/thread_pool.h"
@@ -31,7 +32,6 @@
 #include "components/update_client/update_client_errors.h"
 #include "components/update_client/utils.h"
 #include "third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists.hpp"
-#include "third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists_common.hpp"
 
 namespace component_updater {
 
@@ -50,46 +50,39 @@
 
 namespace {
 
-// Small struct linking a dictionary tag with the corresponding filename.
-struct TagAndFileName {
-  zxcvbn::DictionaryTag tag;
-  base::FilePath::StringPieceType file_name;
-};
-
-constexpr std::array<TagAndFileName, 6> kTagAndFileNamePairs = {{
-    {zxcvbn::DictionaryTag::ENGLISH_WIKIPEDIA,
-     ZxcvbnDataComponentInstallerPolicy::kEnglishWikipediaTxtFileName},
-    {zxcvbn::DictionaryTag::FEMALE_NAMES,
-     ZxcvbnDataComponentInstallerPolicy::kFemaleNamesTxtFileName},
-    {zxcvbn::DictionaryTag::MALE_NAMES,
-     ZxcvbnDataComponentInstallerPolicy::kMaleNamesTxtFileName},
-    {zxcvbn::DictionaryTag::PASSWORDS,
-     ZxcvbnDataComponentInstallerPolicy::kPasswordsTxtFileName},
-    {zxcvbn::DictionaryTag::SURNAMES,
-     ZxcvbnDataComponentInstallerPolicy::kSurnamesTxtFileName},
-    {zxcvbn::DictionaryTag::US_TV_AND_FILM,
-     ZxcvbnDataComponentInstallerPolicy::kUsTvAndFilmTxtFileName},
+constexpr std::array<base::FilePath::StringPieceType, 6> kFileNames = {{
+    ZxcvbnDataComponentInstallerPolicy::kEnglishWikipediaTxtFileName,
+    ZxcvbnDataComponentInstallerPolicy::kFemaleNamesTxtFileName,
+    ZxcvbnDataComponentInstallerPolicy::kMaleNamesTxtFileName,
+    ZxcvbnDataComponentInstallerPolicy::kPasswordsTxtFileName,
+    ZxcvbnDataComponentInstallerPolicy::kSurnamesTxtFileName,
+    ZxcvbnDataComponentInstallerPolicy::kUsTvAndFilmTxtFileName,
 }};
 
-using RankedDictionaries =
-    base::flat_map<zxcvbn::DictionaryTag, zxcvbn::RankedDict>;
-RankedDictionaries ParseRankedDictionaries(const base::FilePath& install_dir) {
-  RankedDictionaries result;
-  for (const auto& pair : kTagAndFileNamePairs) {
-    base::FilePath dictionary_path = install_dir.Append(pair.file_name);
+zxcvbn::RankedDicts ParseRankedDictionaries(const base::FilePath& install_dir) {
+  std::vector<std::string> raw_dicts;
+  for (const auto& file_name : kFileNames) {
+    base::FilePath dictionary_path = install_dir.Append(file_name);
     DVLOG(1) << "Reading Dictionary from file: " << dictionary_path;
 
     std::string dictionary;
     if (base::ReadFileToString(dictionary_path, &dictionary)) {
-      result.emplace(pair.tag, zxcvbn::build_ranked_dict(base::SplitStringPiece(
-                                   dictionary, "\r\n", base::TRIM_WHITESPACE,
-                                   base::SPLIT_WANT_NONEMPTY)));
+      raw_dicts.push_back(std::move(dictionary));
     } else {
       VLOG(1) << "Failed reading from " << dictionary_path;
     }
   }
 
-  return result;
+  // The contained StringPieces hold references to the strings in raw_dicts.
+  std::vector<std::vector<base::StringPiece>> dicts;
+  for (const auto& raw_dict : raw_dicts) {
+    dicts.push_back(base::SplitStringPiece(
+        raw_dict, "\r\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY));
+  }
+
+  // This copies the words; after this call, the original strings can be
+  // discarded.
+  return zxcvbn::RankedDicts(dicts);
 }
 
 // The SHA256 of the SubjectPublicKeyInfo used to sign the extension.
@@ -105,8 +98,8 @@
 bool ZxcvbnDataComponentInstallerPolicy::VerifyInstallation(
     const base::DictionaryValue& manifest,
     const base::FilePath& install_dir) const {
-  return base::ranges::all_of(kTagAndFileNamePairs, [&](const auto& pair) {
-    return base::PathExists(install_dir.Append(pair.file_name));
+  return base::ranges::all_of(kFileNames, [&](const auto& file_name) {
+    return base::PathExists(install_dir.Append(file_name));
   });
 }
 
diff --git a/chrome/browser/component_updater/zxcvbn_data_component_installer_unittest.cc b/chrome/browser/component_updater/zxcvbn_data_component_installer_unittest.cc
index 2f9600a..3689a5f 100644
--- a/chrome/browser/component_updater/zxcvbn_data_component_installer_unittest.cc
+++ b/chrome/browser/component_updater/zxcvbn_data_component_installer_unittest.cc
@@ -7,6 +7,7 @@
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
+#include "base/optional.h"
 #include "base/test/task_environment.h"
 #include "base/values.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -97,7 +98,6 @@
   // Empty / non-existent files should result in empty dictionaries.
   policy().ComponentReady(version(), GetPath(), nullptr);
   task_env().RunUntilIdle();
-  EXPECT_THAT(zxcvbn::default_ranked_dicts(), ::testing::IsEmpty());
 
   // Populated files should be read and fed to the correct ranked zxcvbn
   // dictionary.
@@ -108,11 +108,11 @@
   base::WriteFile(
       GetPath().Append(
           ZxcvbnDataComponentInstallerPolicy::kFemaleNamesTxtFileName),
-      "female\nnames");
+      "female\nfnames");
   base::WriteFile(
       GetPath().Append(
           ZxcvbnDataComponentInstallerPolicy::kMaleNamesTxtFileName),
-      "male\nnames");
+      "male\nmnames");
   base::WriteFile(
       GetPath().Append(
           ZxcvbnDataComponentInstallerPolicy::kPasswordsTxtFileName),
@@ -128,27 +128,19 @@
   policy().ComponentReady(version(), GetPath(), nullptr);
   task_env().RunUntilIdle();
 
-  zxcvbn::RankedDicts ranked_dicts = zxcvbn::default_ranked_dicts();
-  EXPECT_THAT(
-      zxcvbn::default_ranked_dicts(),
-      UnorderedElementsAre(
-          Pair(zxcvbn::DictionaryTag::ENGLISH_WIKIPEDIA,
-               Pointee(UnorderedElementsAre(Pair("english", 1),
-                                            Pair("wikipedia", 2)))),
-          Pair(zxcvbn::DictionaryTag::FEMALE_NAMES,
-               Pointee(
-                   UnorderedElementsAre(Pair("female", 1), Pair("names", 2)))),
-          Pair(
-              zxcvbn::DictionaryTag::MALE_NAMES,
-              Pointee(UnorderedElementsAre(Pair("male", 1), Pair("names", 2)))),
-          Pair(zxcvbn::DictionaryTag::PASSWORDS,
-               Pointee(UnorderedElementsAre(Pair("passwords", 1)))),
-          Pair(zxcvbn::DictionaryTag::SURNAMES,
-               Pointee(UnorderedElementsAre(Pair("surnames", 1)))),
-          Pair(
-              zxcvbn::DictionaryTag::US_TV_AND_FILM,
-              Pointee(UnorderedElementsAre(Pair("us", 1), Pair("tv", 2),
-                                           Pair("and", 3), Pair("film", 4))))));
+  zxcvbn::RankedDicts& ranked_dicts = zxcvbn::default_ranked_dicts();
+  EXPECT_EQ(ranked_dicts.Find("english"), 1UL);
+  EXPECT_EQ(ranked_dicts.Find("wikipedia"), 2UL);
+  EXPECT_EQ(ranked_dicts.Find("female"), 1UL);
+  EXPECT_EQ(ranked_dicts.Find("fnames"), 2UL);
+  EXPECT_EQ(ranked_dicts.Find("male"), 1UL);
+  EXPECT_EQ(ranked_dicts.Find("mnames"), 2UL);
+  EXPECT_EQ(ranked_dicts.Find("passwords"), 1UL);
+  EXPECT_EQ(ranked_dicts.Find("surnames"), 1UL);
+  EXPECT_EQ(ranked_dicts.Find("us"), 1UL);
+  EXPECT_EQ(ranked_dicts.Find("tv"), 2UL);
+  EXPECT_EQ(ranked_dicts.Find("and"), 3UL);
+  EXPECT_EQ(ranked_dicts.Find("film"), 4UL);
 }
 
 }  // namespace component_updater
diff --git a/chrome/browser/download/android/dangerous_download_infobar_delegate.cc b/chrome/browser/download/android/dangerous_download_infobar_delegate.cc
index 8deb0ed..861884f 100644
--- a/chrome/browser/download/android/dangerous_download_infobar_delegate.cc
+++ b/chrome/browser/download/android/dangerous_download_infobar_delegate.cc
@@ -11,6 +11,7 @@
 #include "chrome/browser/android/android_theme_resources.h"
 #include "chrome/browser/infobars/infobar_service.h"
 #include "chrome/grit/generated_resources.h"
+#include "components/infobars/android/confirm_infobar.h"
 #include "components/infobars/core/infobar.h"
 #include "ui/base/l10n/l10n_util.h"
 
@@ -18,8 +19,8 @@
 void DangerousDownloadInfoBarDelegate::Create(
     InfoBarService* infobar_service,
     download::DownloadItem* download_item) {
-  infobar_service->AddInfoBar(infobar_service->CreateConfirmInfoBar(
-    base::WrapUnique(new DangerousDownloadInfoBarDelegate(download_item))));
+  infobar_service->AddInfoBar(std::make_unique<infobars::ConfirmInfoBar>(
+      base::WrapUnique(new DangerousDownloadInfoBarDelegate(download_item))));
 }
 
 DangerousDownloadInfoBarDelegate::DangerousDownloadInfoBarDelegate(
diff --git a/chrome/browser/download/android/mixed_content_download_infobar_delegate.cc b/chrome/browser/download/android/mixed_content_download_infobar_delegate.cc
index 04b58fd..f5160e13 100644
--- a/chrome/browser/download/android/mixed_content_download_infobar_delegate.cc
+++ b/chrome/browser/download/android/mixed_content_download_infobar_delegate.cc
@@ -13,6 +13,7 @@
 #include "chrome/browser/infobars/infobar_service.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/download/public/common/download_item.h"
+#include "components/infobars/android/confirm_infobar.h"
 #include "components/infobars/core/infobar.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/strings/grit/ui_strings.h"
@@ -25,7 +26,7 @@
     const base::FilePath& basename,
     download::DownloadItem::MixedContentStatus mixed_content_status,
     ResultCallback callback) {
-  infobar_service->AddInfoBar(infobar_service->CreateConfirmInfoBar(
+  infobar_service->AddInfoBar(std::make_unique<infobars::ConfirmInfoBar>(
       base::WrapUnique(new MixedContentDownloadInfoBarDelegate(
           basename, mixed_content_status, std::move(callback)))));
 }
diff --git a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api_lacros.cc b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api_lacros.cc
index 20fac37..5adddc9 100644
--- a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api_lacros.cc
+++ b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api_lacros.cc
@@ -144,8 +144,8 @@
       api_epki::GenerateKey::Params::Create(*args_));
   EXTENSION_FUNCTION_VALIDATE(params);
 
-  std::string error = ValidateCrosapi(KeystoreService::kGenerateKeyMinVersion,
-                                      browser_context());
+  std::string error = ValidateCrosapi(
+      KeystoreService::kExtensionGenerateKeyMinVersion, browser_context());
   if (!error.empty()) {
     return RespondNow(Error(error));
   }
@@ -160,7 +160,8 @@
       &EnterprisePlatformKeysInternalGenerateKeyFunction::OnGenerateKey, this);
   chromeos::LacrosService::Get()
       ->GetRemote<crosapi::mojom::KeystoreService>()
-      ->GenerateKey(keystore, std::move(signing), extension_id(), std::move(c));
+      ->ExtensionGenerateKey(keystore, std::move(signing), extension_id(),
+                             std::move(c));
   return RespondLater();
 }
 
diff --git a/chrome/browser/extensions/api/platform_keys/platform_keys_api_lacros.cc b/chrome/browser/extensions/api/platform_keys/platform_keys_api_lacros.cc
index 4fdaefa..834eb12 100644
--- a/chrome/browser/extensions/api/platform_keys/platform_keys_api_lacros.cc
+++ b/chrome/browser/extensions/api/platform_keys/platform_keys_api_lacros.cc
@@ -172,7 +172,7 @@
 
   if (chromeos::LacrosService::Get()->GetInterfaceVersion(
           KeystoreService::Uuid_) <
-      static_cast<int>(KeystoreService::kSignMinVersion)) {
+      static_cast<int>(KeystoreService::kExtensionSignMinVersion)) {
     return RespondNow(Error(kUnsupportedByAsh));
   }
 
@@ -198,8 +198,8 @@
   auto cb = base::BindOnce(&PlatformKeysInternalSignFunction::OnSign, this);
   chromeos::LacrosService::Get()
       ->GetRemote<crosapi::mojom::KeystoreService>()
-      ->Sign(keystore_type.value(), params->public_key, scheme.value(),
-             params->data, extension_id(), std::move(cb));
+      ->ExtensionSign(keystore_type.value(), params->public_key, scheme.value(),
+                      params->data, extension_id(), std::move(cb));
   return RespondLater();
 }
 
diff --git a/chrome/browser/extensions/chrome_extensions_browser_interface_binders.cc b/chrome/browser/extensions/chrome_extensions_browser_interface_binders.cc
index eeda1f0..d8c50369 100644
--- a/chrome/browser/extensions/chrome_extensions_browser_interface_binders.cc
+++ b/chrome/browser/extensions/chrome_extensions_browser_interface_binders.cc
@@ -19,9 +19,9 @@
 #include "extensions/common/permissions/permissions_data.h"
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
-#include "chrome/browser/chromeos/remote_apps/remote_apps_impl.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager_factory.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_impl.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/speech/extension_api/tts_engine_extension_observer_chromeos.h"
 #include "chrome/common/extensions/extension_constants.h"
diff --git a/chrome/browser/extensions/forced_extensions/force_installed_metrics.cc b/chrome/browser/extensions/forced_extensions/force_installed_metrics.cc
index 696a73d..ecd07e4 100644
--- a/chrome/browser/extensions/forced_extensions/force_installed_metrics.cc
+++ b/chrome/browser/extensions/forced_extensions/force_installed_metrics.cc
@@ -35,23 +35,6 @@
 constexpr base::TimeDelta kInstallationTimeout =
     base::TimeDelta::FromMinutes(5);
 
-constexpr char kManifestFetchFailedNetworkErrorCode[] =
-    "Extensions.ForceInstalledManifestFetchFailedNetworkErrorCode";
-constexpr char kManifestFetchFailedFetchTries[] =
-    "Extensions.ForceInstalledManifestFetchFailedFetchTries";
-constexpr char kCrxFetchFailedNetworkErrorCode[] =
-    "Extensions.ForceInstalledNetworkErrorCode";
-constexpr char kCrxFetchFailedFetchTries[] =
-    "Extensions.ForceInstalledFetchTries";
-
-// This is used to construct histograms for the form
-// `Extensions.*ForceInstalledManifestFetchFailedHttpErrorCode2`.
-constexpr char kManifestFetchFailedHttpErrorCode[] =
-    "ForceInstalledManifestFetchFailedHttpErrorCode2";
-// This is used to construct histograms for the form
-// `Extensions.*ForceInstalledHttpErrorCode2`.
-constexpr char kCrxFetchFailedHttpErrorCode[] = "ForceInstalledHttpErrorCode2";
-
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 // Helper method to convert user_manager::UserType to
 // InstallStageTracker::UserType for histogram purposes.
@@ -149,30 +132,55 @@
 }
 
 // Reports the network error code, HTTP error code and number of fetch tries
-// made when extension fails to install with MANIFEST_FETCH_FAILED or
-// CRX_FETCH_FAILED.
-void ReportErrorCodes(const InstallStageTracker::InstallationData& installation,
-                      const std::string& network_error_code_histogram,
-                      const std::string& http_error_code_histogram_suffix,
-                      const std::string& fetch_tries_histogram,
-                      bool is_from_store) {
-  base::UmaHistogramSparse(network_error_code_histogram,
+// made when extension fails to install with MANIFEST_FETCH_FAILED.
+void ReportManifestFetchFailedErrorCodes(
+    const InstallStageTracker::InstallationData& installation,
+    bool is_from_store) {
+  base::UmaHistogramSparse(
+      "Extensions.ForceInstalledManifestFetchFailedNetworkErrorCode",
+      installation.network_error_code.value());
+
+  if (installation.response_code) {
+    if (is_from_store) {
+      base::UmaHistogramSparse(
+          "Extensions.WebStore_ForceInstalledManifestFetchFailedHttpErrorCode2",
+          installation.response_code.value());
+    } else {
+      base::UmaHistogramSparse(
+          "Extensions.OffStore_ForceInstalledManifestFetchFailedHttpErrorCode2",
+          installation.response_code.value());
+    }
+    base::UmaHistogramSparse(
+        "Extensions.ForceInstalledManifestFetchFailedHttpErrorCode2",
+        installation.response_code.value());
+  }
+  base::UmaHistogramExactLinear(
+      "Extensions.ForceInstalledManifestFetchFailedFetchTries",
+      installation.fetch_tries.value(), ExtensionDownloader::kMaxRetries);
+}
+
+// Reports the network error code, HTTP error code and number of fetch tries
+// made when extension fails to install with CRX_FETCH_FAILED.
+void ReportCrxFetchFailedErrorCodes(
+    const InstallStageTracker::InstallationData& installation,
+    bool is_from_store) {
+  base::UmaHistogramSparse("Extensions.ForceInstalledNetworkErrorCode",
                            installation.network_error_code.value());
 
   if (installation.response_code) {
     if (is_from_store) {
       base::UmaHistogramSparse(
-          "Extensions.WebStore_" + http_error_code_histogram_suffix,
+          "Extensions.WebStore_ForceInstalledHttpErrorCode2",
           installation.response_code.value());
     } else {
       base::UmaHistogramSparse(
-          "Extensions.OffStore_" + http_error_code_histogram_suffix,
+          "Extensions.OffStore_ForceInstalledHttpErrorCode2",
           installation.response_code.value());
     }
-    base::UmaHistogramSparse("Extensions." + http_error_code_histogram_suffix,
+    base::UmaHistogramSparse("Extensions.ForceInstalledHttpErrorCode2",
                              installation.response_code.value());
   }
-  base::UmaHistogramExactLinear(fetch_tries_histogram,
+  base::UmaHistogramExactLinear("Extensions.ForceInstalledFetchTries",
                                 installation.fetch_tries.value(),
                                 ExtensionDownloader::kMaxRetries);
 }
@@ -212,16 +220,12 @@
   // In case of CRX_FETCH_FAILURE, report the network error code, HTTP
   // error code and number of fetch tries made.
   if (failure_reason == FailureReason::CRX_FETCH_FAILED)
-    ReportErrorCodes(installation, kCrxFetchFailedNetworkErrorCode,
-                     kCrxFetchFailedHttpErrorCode, kCrxFetchFailedFetchTries,
-                     is_from_store);
+    ReportCrxFetchFailedErrorCodes(installation, is_from_store);
 
   // In case of MANIFEST_FETCH_FAILURE, report the network error code,
   // HTTP error code and number of fetch tries made.
   if (failure_reason == FailureReason::MANIFEST_FETCH_FAILED)
-    ReportErrorCodes(installation, kManifestFetchFailedNetworkErrorCode,
-                     kManifestFetchFailedHttpErrorCode,
-                     kManifestFetchFailedFetchTries, is_from_store);
+    ReportManifestFetchFailedErrorCodes(installation, is_from_store);
 
   if (installation.install_error_detail) {
     CrxInstallErrorDetail detail = installation.install_error_detail.value();
@@ -285,6 +289,22 @@
   }
 }
 
+// Returns false if the extension status corresponds to a missing extension
+// which is not yet installed or loaded.
+bool IsStatusGood(ExtensionStatus status) {
+  switch (status) {
+    case ExtensionStatus::kPending:
+      return false;
+    case ExtensionStatus::kLoaded:
+      return true;
+    case ExtensionStatus::kReady:
+      return true;
+    case ExtensionStatus::kFailed:
+      return false;
+  }
+  NOTREACHED();
+}
+
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 // Report type of user in case Force Installed Extensions fail to
 // install only if there is a user corresponding to given profile.
@@ -332,22 +352,6 @@
 
 ForceInstalledMetrics::~ForceInstalledMetrics() = default;
 
-bool ForceInstalledMetrics::IsStatusGood(ExtensionStatus status) {
-  switch (status) {
-    case ExtensionStatus::kPending:
-      return false;
-    case ExtensionStatus::kLoaded:
-      return true;
-    case ExtensionStatus::kReady:
-      return true;
-    case ExtensionStatus::kFailed:
-      return false;
-    default:
-      NOTREACHED();
-  }
-  return false;
-}
-
 void ForceInstalledMetrics::ReportDisableReason(
     const ExtensionId& extension_id) {
   int disable_reasons =
diff --git a/chrome/browser/extensions/forced_extensions/force_installed_metrics.h b/chrome/browser/extensions/forced_extensions/force_installed_metrics.h
index be3343a..2ff692f9 100644
--- a/chrome/browser/extensions/forced_extensions/force_installed_metrics.h
+++ b/chrome/browser/extensions/forced_extensions/force_installed_metrics.h
@@ -73,9 +73,6 @@
       ExtensionDownloaderDelegate::CacheStatus cache_status) override;
 
  private:
-  // Returns false if the extension status corresponds to a missing extension
-  // which is not yet installed or loaded.
-  bool IsStatusGood(ForceInstalledTracker::ExtensionStatus status);
 
   // Reports disable reasons for the extensions which are installed but not
   // loaded.
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index b7dadb7..e45f162 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -448,6 +448,11 @@
     "expiry_milestone": 89
   },
   {
+    "name": "biometric-reauth-password-filling",
+    "owners": [ "ioanap" ],
+    "expiry_milestone": 93
+  },
+  {
     "name": "block-external-form-redirects-no-gesture",
     "owners": [ "jochen", "tedchoc" ],
     "expiry_milestone": 89
@@ -1311,11 +1316,6 @@
     "expiry_milestone": 75
   },
   {
-    "name": "enable-app-notification-status-messaging",
-    "owners": [ "knollr", "peter" ],
-    "expiry_milestone": 74
-  },
-  {
     "name": "enable-arc-unified-audio-focus",
     "owners": [ "beccahughes", "media-dev" ],
     "expiry_milestone": 82
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 17e2742..40440572 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -366,6 +366,12 @@
     "To enable caching pages on same-site navigations too, choose 'enabled "
     "same-site support'.";
 
+const char kBiometricReauthForPasswordFillingName[] =
+    "Biometric reauth for password filling";
+const char kBiometricReauthForPasswordFillingDescription[] =
+    "Enables biometric"
+    "re-authentication before password filling";
+
 const char kBypassAppBannerEngagementChecksName[] =
     "Bypass user engagement checks";
 const char kBypassAppBannerEngagementChecksDescription[] =
@@ -2786,12 +2792,6 @@
     " DisplayCompositor on Android. This feature is only available on "
     " android Q+ devices";
 
-const char kAppNotificationStatusMessagingName[] =
-    "App notification status messaging";
-const char kAppNotificationStatusMessagingDescription[] =
-    "Enables messaging in site permissions UI informing user when "
-    "notifications are disabled for the entire app.";
-
 const char kAssistantIntentPageUrlName[] =
     "Include page URL in Assistant intent";
 const char kAssistantIntentPageUrlDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index e3b8422..c737a3c4 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -221,6 +221,9 @@
 extern const char kBackForwardCacheName[];
 extern const char kBackForwardCacheDescription[];
 
+extern const char kBiometricReauthForPasswordFillingName[];
+extern const char kBiometricReauthForPasswordFillingDescription[];
+
 extern const char kBypassAppBannerEngagementChecksName[];
 extern const char kBypassAppBannerEngagementChecksDescription[];
 
@@ -1620,9 +1623,6 @@
 extern const char kAndroidSurfaceControlName[];
 extern const char kAndroidSurfaceControlDescription[];
 
-extern const char kAppNotificationStatusMessagingName[];
-extern const char kAppNotificationStatusMessagingDescription[];
-
 extern const char kAssistantIntentPageUrlName[];
 extern const char kAssistantIntentPageUrlDescription[];
 
diff --git a/chrome/browser/infobars/infobar_service.h b/chrome/browser/infobars/infobar_service.h
index e3ca638..56b2ab2 100644
--- a/chrome/browser/infobars/infobar_service.h
+++ b/chrome/browser/infobars/infobar_service.h
@@ -29,11 +29,11 @@
  public:
   ~InfoBarService() override;
 
-  // InfoBarManager:
-  // TODO(sdefresne): Change clients to invoke this on infobars::InfoBarManager
-  // and turn the method override private.
-  std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate> delegate) override;
+  // Cross-platform method for creating a confirm infobar.
+  // TODO(crbug.com/1199686): Move this to a static helper function as part of
+  // eliminating the //chrome-level InfoBarService.
+  virtual std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar(
+      std::unique_ptr<ConfirmInfoBarDelegate> delegate);
 
  protected:
   explicit InfoBarService(content::WebContents* web_contents);
diff --git a/chrome/browser/infobars/simple_alert_infobar_creator.cc b/chrome/browser/infobars/simple_alert_infobar_creator.cc
new file mode 100644
index 0000000..ec06ab3
--- /dev/null
+++ b/chrome/browser/infobars/simple_alert_infobar_creator.cc
@@ -0,0 +1,25 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/infobars/simple_alert_infobar_creator.h"
+
+#include <memory>
+
+#include "chrome/browser/infobars/infobar_service.h"
+#include "components/infobars/core/infobar.h"
+#include "components/infobars/core/simple_alert_infobar_delegate.h"
+#include "third_party/skia/include/core/SkBitmap.h"
+
+void CreateSimpleAlertInfoBar(
+    InfoBarService* infobar_service,
+    infobars::InfoBarDelegate::InfoBarIdentifier infobar_identifier,
+    const gfx::VectorIcon* vector_icon,
+    const std::u16string& message,
+    bool auto_expire,
+    bool should_animate) {
+  infobar_service->AddInfoBar(infobar_service->CreateConfirmInfoBar(
+      std::make_unique<SimpleAlertInfoBarDelegate>(
+          infobar_identifier, vector_icon, message, auto_expire,
+          should_animate)));
+}
diff --git a/chrome/browser/infobars/simple_alert_infobar_creator.h b/chrome/browser/infobars/simple_alert_infobar_creator.h
new file mode 100644
index 0000000..097c30b0
--- /dev/null
+++ b/chrome/browser/infobars/simple_alert_infobar_creator.h
@@ -0,0 +1,29 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_INFOBARS_SIMPLE_ALERT_INFOBAR_CREATOR_H_
+#define CHROME_BROWSER_INFOBARS_SIMPLE_ALERT_INFOBAR_CREATOR_H_
+
+#include <string>
+
+#include "components/infobars/core/infobar_delegate.h"
+
+namespace gfx {
+struct VectorIcon;
+}
+
+class InfoBarService;
+
+// Creates a simple alert infobar and delegate and adds the infobar to
+// |infobar_manager|. If |vector_icon| is not null, it will be shown.
+// |infobar_identifier| names what class triggered the infobar for metrics.
+void CreateSimpleAlertInfoBar(
+    InfoBarService* infobar_service,
+    infobars::InfoBarDelegate::InfoBarIdentifier infobar_identifier,
+    const gfx::VectorIcon* vector_icon,
+    const std::u16string& message,
+    bool auto_expire = true,
+    bool should_animate = true);
+
+#endif  // CHROME_BROWSER_INFOBARS_SIMPLE_ALERT_INFOBAR_CREATOR_H_
diff --git a/chrome/browser/lacros/keystore_service_lacros_browsertest.cc b/chrome/browser/lacros/keystore_service_lacros_browsertest.cc
index 1207412..71cf9953 100644
--- a/chrome/browser/lacros/keystore_service_lacros_browsertest.cc
+++ b/chrome/browser/lacros/keystore_service_lacros_browsertest.cc
@@ -65,7 +65,8 @@
 }
 
 // Tests that generate key works.
-IN_PROC_BROWSER_TEST_F(KeystoreServiceLacrosBrowserTest, GenerateKeyPKCS) {
+IN_PROC_BROWSER_TEST_F(KeystoreServiceLacrosBrowserTest,
+                       ExtensionGenerateKeyPKCS) {
   crosapi::mojom::KeystoreBinaryResultPtr result;
   crosapi::mojom::KeystoreServiceAsyncWaiter async_waiter(
       keystore_service_remote().get());
@@ -75,8 +76,9 @@
       crosapi::mojom::KeystorePKCS115Params::New();
   params->modulus_length = 1024;
   algo->set_pkcs115(std::move(params));
-  async_waiter.GenerateKey(crosapi::mojom::KeystoreType::kUser, std::move(algo),
-                           /*extension_id=*/"123", &result);
+  async_waiter.ExtensionGenerateKey(crosapi::mojom::KeystoreType::kUser,
+                                    std::move(algo),
+                                    /*extension_id=*/"123", &result);
   // Errors out because Ash-Chrome is not running on ChromeOS.
   ASSERT_TRUE(result->is_error_message());
   EXPECT_EQ(result->get_error_message(), kFailedToSetAttribute);
@@ -89,7 +91,7 @@
 // generate/modify keys in non-test NSS database on builders. But there's no
 // simple way to prevent this at the moment.
 IN_PROC_BROWSER_TEST_F(KeystoreServiceLacrosBrowserTest,
-                       DISABLED_GenerateKeyECDSA) {
+                       DISABLED_ExtensionGenerateKeyECDSA) {
   crosapi::mojom::KeystoreBinaryResultPtr result;
   crosapi::mojom::KeystoreServiceAsyncWaiter async_waiter(
       keystore_service_remote().get());
@@ -99,8 +101,9 @@
       crosapi::mojom::KeystoreECDSAParams::New();
   params->named_curve = "P-256";
   algo->set_ecdsa(std::move(params));
-  async_waiter.GenerateKey(crosapi::mojom::KeystoreType::kUser, std::move(algo),
-                           /*extension_id=*/"123", &result);
+  async_waiter.ExtensionGenerateKey(crosapi::mojom::KeystoreType::kUser,
+                                    std::move(algo),
+                                    /*extension_id=*/"123", &result);
   // Errors out because Ash-Chrome is not running on ChromeOS.
   ASSERT_TRUE(result->is_error_message());
   EXPECT_EQ(result->get_error_message(), kFailedToSetAttribute);
diff --git a/chrome/browser/media/webrtc/screen_capture_infobar_delegate_android.cc b/chrome/browser/media/webrtc/screen_capture_infobar_delegate_android.cc
index 3aac819..f60391ca 100644
--- a/chrome/browser/media/webrtc/screen_capture_infobar_delegate_android.cc
+++ b/chrome/browser/media/webrtc/screen_capture_infobar_delegate_android.cc
@@ -10,6 +10,7 @@
 #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
 #include "chrome/browser/media/webrtc/media_stream_capture_indicator.h"
 #include "chrome/grit/generated_resources.h"
+#include "components/infobars/android/confirm_infobar.h"
 #include "components/infobars/core/infobar.h"
 #include "components/strings/grit/components_strings.h"
 #include "components/url_formatter/elide_url.h"
@@ -27,7 +28,7 @@
   InfoBarService* infobar_service =
       InfoBarService::FromWebContents(web_contents);
 
-  infobar_service->AddInfoBar(infobar_service->CreateConfirmInfoBar(
+  infobar_service->AddInfoBar(std::make_unique<infobars::ConfirmInfoBar>(
       std::unique_ptr<ConfirmInfoBarDelegate>(
           new ScreenCaptureInfoBarDelegateAndroid(web_contents, request,
                                                   std::move(callback)))));
diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc
index 8d7ad4b..4bea404 100644
--- a/chrome/browser/net/profile_network_context_service.cc
+++ b/chrome/browser/net/profile_network_context_service.cc
@@ -139,7 +139,7 @@
 // Tests allowing ambient authentication with default credentials based on the
 // profile type.
 bool IsAmbientAuthAllowedForProfile(Profile* profile) {
-  if (profile->IsRegularProfile() && !profile->IsEphemeralGuestProfile())
+  if (profile->IsRegularProfile())
     return true;
 
   // Non-primary OTR profiles are not used to create browser windows and are
diff --git a/chrome/browser/password_manager/password_store_factory.cc b/chrome/browser/password_manager/password_store_factory.cc
index 5852420..614504c 100644
--- a/chrome/browser/password_manager/password_store_factory.cc
+++ b/chrome/browser/password_manager/password_store_factory.cc
@@ -27,6 +27,7 @@
 #include "components/password_manager/core/browser/password_store_factory_util.h"
 #include "components/password_manager/core/browser/password_store_impl.h"
 #include "components/password_manager/core/browser/password_store_signin_notifier_impl.h"
+#include "components/password_manager/core/common/password_manager_features.h"
 #include "components/password_manager/core/common/password_manager_pref_names.h"
 #include "components/pref_registry/pref_registry_syncable.h"
 #include "components/prefs/pref_service.h"
@@ -173,6 +174,18 @@
   ps->SetPasswordStoreSigninNotifier(std::move(notifier));
 #endif
 
+  if (base::FeatureList::IsEnabled(
+          password_manager::features::kFillingAcrossAffiliatedWebsites)) {
+    // Try to create affiliation service without awaiting synced state changes.
+    // TODO(http://crbug.com/1202699): Remove sync service completely after
+    // launching HashAffiliationLookup.
+    password_manager::ToggleAffiliationBasedMatchingBasedOnPasswordSyncedState(
+        ps.get(), /*sync_service=*/nullptr,
+        content::BrowserContext::GetDefaultStoragePartition(profile)
+            ->GetURLLoaderFactoryForBrowserProcess(),
+        content::GetNetworkConnectionTracker(), profile->GetPath());
+  }
+
   return ps;
 }
 
diff --git a/chrome/browser/permissions/permission_prompt_android_unittest.cc b/chrome/browser/permissions/permission_prompt_android_unittest.cc
index bc161ca4..3d96f9f 100644
--- a/chrome/browser/permissions/permission_prompt_android_unittest.cc
+++ b/chrome/browser/permissions/permission_prompt_android_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "base/run_loop.h"
 #include "base/test/scoped_feature_list.h"
-#include "chrome/browser/infobars/mock_infobar_service.h"
+#include "chrome/browser/infobars/infobar_service.h"
 #include "chrome/common/chrome_features.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "components/content_settings/core/common/pref_names.h"
@@ -30,7 +30,7 @@
 
     NavigateAndCommit(GURL("http://example.com"));
 
-    MockInfoBarService::CreateForWebContents(web_contents());
+    InfoBarService::CreateForWebContents(web_contents());
 
     permissions::PermissionRequestManager::CreateForWebContents(web_contents());
     permission_request_manager_ =
diff --git a/chrome/browser/permissions/permission_update_infobar_delegate_android.cc b/chrome/browser/permissions/permission_update_infobar_delegate_android.cc
index d27e737..a593caa86 100644
--- a/chrome/browser/permissions/permission_update_infobar_delegate_android.cc
+++ b/chrome/browser/permissions/permission_update_infobar_delegate_android.cc
@@ -14,6 +14,7 @@
 #include "chrome/browser/infobars/infobar_service.h"
 #include "chrome/grit/chromium_strings.h"
 #include "chrome/grit/generated_resources.h"
+#include "components/infobars/android/confirm_infobar.h"
 #include "components/infobars/core/infobar.h"
 #include "components/permissions/android/android_permission_util.h"
 #include "components/permissions/permission_uma_util.h"
@@ -120,7 +121,7 @@
     return nullptr;
   }
 
-  return infobar_service->AddInfoBar(infobar_service->CreateConfirmInfoBar(
+  return infobar_service->AddInfoBar(std::make_unique<infobars::ConfirmInfoBar>(
       // Using WrapUnique as the PermissionUpdateInfoBarDelegate ctor is
       // private.
       base::WrapUnique<ConfirmInfoBarDelegate>(
diff --git a/chrome/browser/plugins/plugin_infobar_delegates.cc b/chrome/browser/plugins/plugin_infobar_delegates.cc
index 4467886..3c40c42b 100644
--- a/chrome/browser/plugins/plugin_infobar_delegates.cc
+++ b/chrome/browser/plugins/plugin_infobar_delegates.cc
@@ -185,6 +185,6 @@
   delegate_ptr.reset(new OutdatedPluginInfoBarDelegate(
       installer(), std::move(plugin_metadata_), message));
   infobar()->owner()->ReplaceInfoBar(
-      infobar(),
-      infobar()->owner()->CreateConfirmInfoBar(std::move(delegate_ptr)));
+      infobar(), static_cast<InfoBarService*>(infobar()->owner())
+                     ->CreateConfirmInfoBar(std::move(delegate_ptr)));
 }
diff --git a/chrome/browser/plugins/plugin_observer.cc b/chrome/browser/plugins/plugin_observer.cc
index 2e12cbe..4bbae83 100644
--- a/chrome/browser/plugins/plugin_observer.cc
+++ b/chrome/browser/plugins/plugin_observer.cc
@@ -14,6 +14,7 @@
 #include "chrome/app/vector_icons/vector_icons.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/infobars/infobar_service.h"
+#include "chrome/browser/infobars/simple_alert_infobar_creator.h"
 #include "chrome/browser/lifetime/application_lifetime.h"
 #include "chrome/browser/plugins/plugin_finder.h"
 #include "chrome/browser/plugins/plugin_infobar_delegates.h"
@@ -27,7 +28,6 @@
 #include "chrome/grit/generated_resources.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/download/public/common/download_url_parameters.h"
-#include "components/infobars/core/simple_alert_infobar_delegate.h"
 #include "components/metrics_services_manager/metrics_services_manager.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/child_process_security_policy.h"
@@ -136,7 +136,7 @@
 void PluginObserver::CreatePluginObserverInfoBar(
     InfoBarService* infobar_service,
     const std::u16string& plugin_name) {
-  SimpleAlertInfoBarDelegate::Create(
+  CreateSimpleAlertInfoBar(
       infobar_service,
       infobars::InfoBarDelegate::PLUGIN_OBSERVER_INFOBAR_DELEGATE,
       &kExtensionCrashedIcon,
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
index 4b7a512..3e973b4b 100644
--- a/chrome/browser/profiles/profile.cc
+++ b/chrome/browser/profiles/profile.cc
@@ -368,9 +368,8 @@
 }
 
 bool Profile::IsRegularProfile() const {
-  // TODO(https://crbug.com/1142370): Update to return false for the non-otr
-  // profile of Guest and System profiles.
-  return !IsOffTheRecord();
+  return profile_metrics::GetBrowserProfileType(this) ==
+         profile_metrics::BrowserProfileType::kRegular;
 }
 
 bool Profile::IsIncognitoProfile() const {
diff --git a/chrome/browser/profiles/profile.h b/chrome/browser/profiles/profile.h
index 9350115..4107fad 100644
--- a/chrome/browser/profiles/profile.h
+++ b/chrome/browser/profiles/profile.h
@@ -408,7 +408,9 @@
 
   std::string GetDebugName() const;
 
-  // IsRegularProfile() and IsIncognitoProfile() are mutually exclusive.
+  // IsRegularProfile(), IsSystemProfile(), IsIncognitoProfile(),
+  // IsGuestSession(), and IsEphemeralGuestProfile are mutually exclusive.
+  //
   // IsSystemProfile() returns true for both regular and off-the-record profile
   //   of the system profile.
   // IsOffTheRecord() is true for the off the record profile of Incognito mode,
diff --git a/chrome/browser/profiles/profile_browsertest.cc b/chrome/browser/profiles/profile_browsertest.cc
index f5ad262..2d3691e2 100644
--- a/chrome/browser/profiles/profile_browsertest.cc
+++ b/chrome/browser/profiles/profile_browsertest.cc
@@ -1042,7 +1042,7 @@
 IN_PROC_BROWSER_TEST_F(EphemeralGuestProfileBrowserTest, TestProfileType) {
   Profile* guest_profile = CreateGuestBrowser()->profile();
 
-  EXPECT_TRUE(guest_profile->IsRegularProfile());
+  EXPECT_FALSE(guest_profile->IsRegularProfile());
   EXPECT_FALSE(guest_profile->IsOffTheRecord());
   EXPECT_FALSE(guest_profile->IsGuestSession());
   EXPECT_TRUE(guest_profile->IsEphemeralGuestProfile());
diff --git a/chrome/browser/profiles/profile_destroyer.cc b/chrome/browser/profiles/profile_destroyer.cc
index c3862828..9b18bb6 100644
--- a/chrome/browser/profiles/profile_destroyer.cc
+++ b/chrome/browser/profiles/profile_destroyer.cc
@@ -58,7 +58,7 @@
   profile->MaybeSendDestroyedNotification();
 
   if (!profile->IsOffTheRecord()) {
-    DestroyRegularProfileNow(profile);
+    DestroyOriginalProfileNow(profile);
     return;
   }
 
@@ -101,10 +101,10 @@
 }
 
 // static
-void ProfileDestroyer::DestroyRegularProfileNow(Profile* const profile) {
+void ProfileDestroyer::DestroyOriginalProfileNow(Profile* const profile) {
   DCHECK(profile);
-  DCHECK(profile->IsRegularProfile());
-  TRACE_EVENT("shutdown", "ProfileDestroyer::DestroyRegularProfileNow",
+  DCHECK(!profile->IsOffTheRecord());
+  TRACE_EVENT("shutdown", "ProfileDestroyer::DestroyOriginalProfileNow",
               [&](perfetto::EventContext ctx) {
                 auto* proto =
                     ctx.event<perfetto::protos::pbzero::ChromeTrackEvent>()
diff --git a/chrome/browser/profiles/profile_destroyer.h b/chrome/browser/profiles/profile_destroyer.h
index 0c42525..a66f2c5 100644
--- a/chrome/browser/profiles/profile_destroyer.h
+++ b/chrome/browser/profiles/profile_destroyer.h
@@ -51,8 +51,8 @@
   // pointer comparison is allowed, it will never be dereferenced as a Profile.
   static HostSet GetHostsForProfile(void* const profile_ptr);
 
-  // Destroys a regular profile immediately.
-  static void DestroyRegularProfileNow(Profile* const profile);
+  // Destroys an Original (non-off-the-record) profile immediately.
+  static void DestroyOriginalProfileNow(Profile* const profile);
 
   // Destroys an OffTheRecord profile immediately and removes it from all
   // pending destroyers.
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.html b/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.html
index 556faa5..7347d3f10 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.html
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.html
@@ -113,10 +113,12 @@
       </div>
 
       <div class="hr bottom-margin">
-        <h2 aria-hidden="true">$i18n{languagesPreferenceTitle}</h2>
+        <h2 aria-hidden="true">
+          [[getLanguagePreferenceTitle_(languageSettingsV2Update2Enabled_)]]
+        </h2>
         <settings-localized-link class="cr-row first bottom-margin"
-            localized-string="[[i18nAdvanced(
-              'languagesPreferenceDescription')]]">
+            localized-string="[[getLanguagePreferenceDescription_(
+                languageSettingsV2Update2Enabled_)]]">
         </settings-localized-link>
         <div class="list-frame vertical-list" id="languagesList">
           <template is="dom-repeat" items="[[languages.enabled]]">
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.js b/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.js
index 5cd11a8..bed7de81 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/os_languages_page_v2.js
@@ -363,6 +363,7 @@
 
   /**
    * @param {boolean} update2Enabled
+   * @return {string}
    * @private
    */
   getOfferTranslationLabel_(update2Enabled) {
@@ -372,12 +373,34 @@
 
   /**
    * @param {boolean} update2Enabled
+   * @return {string}
    * @private
    */
   getOfferTranslationSublabel_(update2Enabled) {
     return update2Enabled ? '' : this.i18n('offerTranslationSublabel');
   },
 
+  /**
+   * @param {boolean} update2Enabled
+   * @return {string}
+   * @private
+   */
+  getLanguagePreferenceTitle_(update2Enabled) {
+    return this.i18n(
+        update2Enabled ? 'websiteLanguagesTitle' : 'languagesPreferenceTitle');
+  },
+
+  /**
+   * @param {boolean} update2Enabled
+   * @return {string}
+   * @private
+   */
+  getLanguagePreferenceDescription_(update2Enabled) {
+    return this.i18nAdvanced(
+        update2Enabled ? 'websiteLanguagesDescription' :
+                         'languagesPreferenceDescription');
+  },
+
   /** @private */
   openManageGoogleAccountLanguage_() {
     window.open(loadTimeData.getString('googleAccountLanguagesURL'));
diff --git a/chrome/browser/resources/signin/profile_customization/DIR_METADATA b/chrome/browser/resources/signin/DIR_METADATA
similarity index 100%
rename from chrome/browser/resources/signin/profile_customization/DIR_METADATA
rename to chrome/browser/resources/signin/DIR_METADATA
diff --git a/chrome/browser/resources/signin/profile_customization/OWNERS b/chrome/browser/resources/signin/OWNERS
similarity index 100%
rename from chrome/browser/resources/signin/profile_customization/OWNERS
rename to chrome/browser/resources/signin/OWNERS
diff --git a/chrome/browser/resources/signin/dice_web_signin_intercept/DIR_METADATA b/chrome/browser/resources/signin/dice_web_signin_intercept/DIR_METADATA
deleted file mode 100644
index 781bdd95..0000000
--- a/chrome/browser/resources/signin/dice_web_signin_intercept/DIR_METADATA
+++ /dev/null
@@ -1,3 +0,0 @@
-monorail: {
-  component: "Services>SignIn"
-}
diff --git a/chrome/browser/resources/signin/dice_web_signin_intercept/OWNERS b/chrome/browser/resources/signin/dice_web_signin_intercept/OWNERS
deleted file mode 100644
index abcdb8d0..0000000
--- a/chrome/browser/resources/signin/dice_web_signin_intercept/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-file://components/signin/OWNERS
diff --git a/chrome/browser/resources/signin/enterprise_profile_welcome/DIR_METADATA b/chrome/browser/resources/signin/enterprise_profile_welcome/DIR_METADATA
deleted file mode 100644
index 3f72231..0000000
--- a/chrome/browser/resources/signin/enterprise_profile_welcome/DIR_METADATA
+++ /dev/null
@@ -1,11 +0,0 @@
-# Metadata information for this directory.
-#
-# For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
-#
-# For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
-
-monorail {
-  component: "Services>SignIn"
-}
\ No newline at end of file
diff --git a/chrome/browser/resources/signin/profile_picker/OWNERS b/chrome/browser/resources/signin/profile_picker/OWNERS
deleted file mode 100644
index 19d8d690..0000000
--- a/chrome/browser/resources/signin/profile_picker/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# https://crbug.com/1063856
-
-msalama@chromium.org
diff --git a/chrome/browser/signin/account_consistency_mode_manager.cc b/chrome/browser/signin/account_consistency_mode_manager.cc
index b1d5ee2..853a4e2 100644
--- a/chrome/browser/signin/account_consistency_mode_manager.cc
+++ b/chrome/browser/signin/account_consistency_mode_manager.cc
@@ -171,12 +171,7 @@
 // static
 bool AccountConsistencyModeManager::ShouldBuildServiceForProfile(
     Profile* profile) {
-  // IsGuestSession() returns true for the ProfileImpl associated with Guest
-  // profiles. This profile manually sets the kSigninAllowed preference, which
-  // causes crashes if the AccountConsistencyModeManager is instantiated. See
-  // https://crbug.com/940026
-  return profile->IsRegularProfile() && !profile->IsGuestSession() &&
-         !profile->IsSystemProfile();
+  return profile->IsRegularProfile() || profile->IsEphemeralGuestProfile();
 }
 
 AccountConsistencyMethod
diff --git a/chrome/browser/signin/remove_local_account_browsertest.cc b/chrome/browser/signin/remove_local_account_browsertest.cc
new file mode 100644
index 0000000..7ded833
--- /dev/null
+++ b/chrome/browser/signin/remove_local_account_browsertest.cc
@@ -0,0 +1,142 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <memory>
+
+#include "base/run_loop.h"
+#include "base/test/bind.h"
+#include "build/build_config.h"
+#include "chrome/browser/signin/identity_manager_factory.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_tabstrip.h"
+#include "chrome/test/base/mixin_based_in_process_browser_test.h"
+#include "components/signin/public/identity_manager/accounts_in_cookie_jar_info.h"
+#include "components/signin/public/identity_manager/identity_manager.h"
+#include "components/signin/public/identity_manager/identity_test_utils.h"
+#include "components/signin/public/identity_manager/test_identity_manager_observer.h"
+#include "content/public/test/browser_test.h"
+#include "google_apis/gaia/fake_gaia.h"
+#include "google_apis/gaia/gaia_switches.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
+#include "net/test/embedded_test_server/http_response.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+#include "chrome/browser/ash/login/test/network_portal_detector_mixin.h"
+#endif
+
+namespace {
+
+using testing::Contains;
+using testing::Not;
+
+MATCHER_P(ListedAccountMatchesGaiaId, gaia_id, "") {
+  return arg.gaia_id == std::string(gaia_id);
+}
+
+const char kTestGaiaId[] = "123";
+
+class RemoveLocalAccountTest : public MixinBasedInProcessBrowserTest {
+ protected:
+  RemoveLocalAccountTest()
+      : embedded_test_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
+    embedded_test_server_.RegisterRequestHandler(base::BindRepeating(
+        &FakeGaia::HandleRequest, base::Unretained(&fake_gaia_)));
+  }
+
+  ~RemoveLocalAccountTest() override = default;
+
+  signin::IdentityManager* identity_manager() {
+    return IdentityManagerFactory::GetForProfile(browser()->profile());
+  }
+
+  signin::AccountsInCookieJarInfo WaitUntilAccountsInCookieUpdated() {
+    signin::TestIdentityManagerObserver observer(identity_manager());
+    base::RunLoop run_loop;
+    observer.SetOnAccountsInCookieUpdatedCallback(run_loop.QuitClosure());
+    run_loop.Run();
+    return observer.AccountsInfoFromAccountsInCookieUpdatedCallback();
+  }
+
+  // MixinBasedInProcessBrowserTest:
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    MixinBasedInProcessBrowserTest::SetUpCommandLine(command_line);
+    ASSERT_TRUE(embedded_test_server_.InitializeAndListen());
+    const GURL base_url = embedded_test_server_.base_url();
+    command_line->AppendSwitchASCII(switches::kGaiaUrl, base_url.spec());
+  }
+
+  void SetUpOnMainThread() override {
+    MixinBasedInProcessBrowserTest::SetUpOnMainThread();
+    fake_gaia_.Initialize();
+
+    FakeGaia::MergeSessionParams params;
+    params.signed_out_gaia_ids.push_back(kTestGaiaId);
+    fake_gaia_.UpdateMergeSessionParams(params);
+
+    embedded_test_server_.StartAcceptingConnections();
+
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+    // ChromeSigninClient uses chromeos::DelayNetworkCall() which requires
+    // simulating being online.
+    network_portal_detector_.SimulateDefaultNetworkState(
+        ash::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE);
+#endif
+  }
+
+  FakeGaia fake_gaia_;
+  net::EmbeddedTestServer embedded_test_server_;
+
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  ash::NetworkPortalDetectorMixin network_portal_detector_{&mixin_host_};
+#endif
+};
+
+IN_PROC_BROWSER_TEST_F(RemoveLocalAccountTest, ShouldNotifyObservers) {
+  // To enforce an initial ListAccounts fetch and the corresponding notification
+  // to observers, make the current list as stale. This is done for the purpose
+  // of documenting assertions on the AccountsInCookieJarInfo passed to
+  // observers during notification.
+  signin::SetFreshnessOfAccountsInGaiaCookie(identity_manager(),
+                                             /*accounts_are_fresh=*/false);
+
+  ASSERT_FALSE(identity_manager()->GetAccountsInCookieJar().accounts_are_fresh);
+  const signin::AccountsInCookieJarInfo
+      cookie_jar_info_in_initial_notification =
+          WaitUntilAccountsInCookieUpdated();
+  ASSERT_TRUE(cookie_jar_info_in_initial_notification.accounts_are_fresh);
+  ASSERT_THAT(cookie_jar_info_in_initial_notification.signed_out_accounts,
+              Contains(ListedAccountMatchesGaiaId(kTestGaiaId)));
+
+  const signin::AccountsInCookieJarInfo initial_cookie_jar_info =
+      identity_manager()->GetAccountsInCookieJar();
+  ASSERT_TRUE(initial_cookie_jar_info.accounts_are_fresh);
+  ASSERT_THAT(initial_cookie_jar_info.signed_out_accounts,
+              Contains(ListedAccountMatchesGaiaId(kTestGaiaId)));
+
+  // Open a FakeGaia page that issues the desired HTTP response header with
+  // Google-Accounts-RemoveLocalAccount.
+  chrome::AddTabAt(browser(),
+                   fake_gaia_.GetDummyRemoveLocalAccountURL(kTestGaiaId),
+                   /*index=*/0,
+                   /*foreground=*/true);
+
+  // Wait until observers are notified with OnAccountsInCookieUpdated().
+  const signin::AccountsInCookieJarInfo
+      cookie_jar_info_in_updated_notification =
+          WaitUntilAccountsInCookieUpdated();
+
+  EXPECT_TRUE(cookie_jar_info_in_updated_notification.accounts_are_fresh);
+  EXPECT_THAT(cookie_jar_info_in_updated_notification.signed_out_accounts,
+              Not(Contains(ListedAccountMatchesGaiaId(kTestGaiaId))));
+
+  const signin::AccountsInCookieJarInfo updated_cookie_jar_info =
+      identity_manager()->GetAccountsInCookieJar();
+  EXPECT_TRUE(updated_cookie_jar_info.accounts_are_fresh);
+  EXPECT_THAT(updated_cookie_jar_info.signed_out_accounts,
+              Not(Contains(ListedAccountMatchesGaiaId(kTestGaiaId))));
+}
+
+}  // namespace
diff --git a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninCheckerTest.java b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninCheckerTest.java
index 80f4dc0..db5c7773 100644
--- a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninCheckerTest.java
+++ b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninCheckerTest.java
@@ -23,11 +23,13 @@
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.CriteriaHelper;
 import org.chromium.base.test.util.DisableIf;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
+import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule;
 import org.chromium.components.signin.AccountRenameChecker;
 import org.chromium.components.signin.base.CoreAccountInfo;
@@ -38,6 +40,7 @@
  */
 @RunWith(ChromeJUnit4ClassRunner.class)
 @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
+@Features.DisableFeatures({ChromeFeatureList.DEPRECATE_MENAGERIE_API})
 @DisableIf.Build(sdk_is_less_than = VERSION_CODES.LOLLIPOP_MR1)
 public class SigninCheckerTest {
     @Rule
diff --git a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/account_picker/AccountPickerBottomSheetTest.java b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/account_picker/AccountPickerBottomSheetTest.java
index 0090622d..169d6b4a 100644
--- a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/account_picker/AccountPickerBottomSheetTest.java
+++ b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/account_picker/AccountPickerBottomSheetTest.java
@@ -84,6 +84,7 @@
 @RunWith(ChromeJUnit4ClassRunner.class)
 @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
 @Features.EnableFeatures({ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY})
+@Features.DisableFeatures({ChromeFeatureList.DEPRECATE_MENAGERIE_API})
 @Batch(Batch.PER_CLASS)
 public class AccountPickerBottomSheetTest {
     private static class CustomFakeProfileDataSource extends FakeProfileDataSource {
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 631c8d5..aa3e892 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -2939,6 +2939,8 @@
       "views/profiles/profile_picker_force_signin_dialog_delegate.h",
       "views/profiles/profile_picker_force_signin_dialog_host.cc",
       "views/profiles/profile_picker_force_signin_dialog_host.h",
+      "views/profiles/profile_picker_sign_in_flow_controller.cc",
+      "views/profiles/profile_picker_sign_in_flow_controller.h",
       "views/profiles/profile_picker_view.cc",
       "views/profiles/profile_picker_view.h",
       "views/profiles/profile_picker_view_sync_delegate.cc",
diff --git a/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/browser/ui/favicon/FaviconHelper.java b/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/browser/ui/favicon/FaviconHelper.java
index e4120b2..f43b21b 100644
--- a/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/browser/ui/favicon/FaviconHelper.java
+++ b/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/browser/ui/favicon/FaviconHelper.java
@@ -22,8 +22,6 @@
 import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.components.embedder_support.util.UrlUtilities;
-import org.chromium.components.url_formatter.UrlFormatter;
-import org.chromium.content_public.browser.WebContents;
 import org.chromium.url.GURL;
 
 import java.util.List;
@@ -49,20 +47,7 @@
          * @param iconUrl Favicon image's icon url.
          */
         @CalledByNative("FaviconImageCallback")
-        public void onFaviconAvailable(Bitmap image, String iconUrl);
-    }
-
-    /**
-     * Callback interface for the result of the ensureIconIsAvailable method.
-     */
-    public interface IconAvailabilityCallback {
-        /**
-         * This method will be called when the availability of the icon has been checked.
-         * @param newlyAvailable true if the icon was downloaded and is now available, false if the
-         *         favicon was already there or the download failed.
-         */
-        @CalledByNative("IconAvailabilityCallback")
-        public void onIconAvailabilityChecked(boolean newlyAvailable);
+        public void onFaviconAvailable(Bitmap image, GURL iconUrl);
     }
 
     /**
@@ -74,11 +59,12 @@
         private Bitmap mDefaultDarkBitmap;
         private Bitmap mDefaultLightBitmap;
 
-        private int getResourceId(String url) {
-            return isInternalScheme(url) ? R.drawable.chromelogo16 : R.drawable.default_favicon;
+        private int getResourceId(GURL url) {
+            return UrlUtilities.isInternalScheme(url) ? R.drawable.chromelogo16
+                                                      : R.drawable.default_favicon;
         }
 
-        private Bitmap createBitmap(Resources resources, String url, boolean useDarkIcon) {
+        private Bitmap createBitmap(Resources resources, GURL url, boolean useDarkIcon) {
             Bitmap origBitmap = BitmapFactory.decodeResource(resources, getResourceId(url));
             Bitmap tintedBitmap = Bitmap.createBitmap(
                     origBitmap.getWidth(), origBitmap.getHeight(), Bitmap.Config.ARGB_8888);
@@ -99,9 +85,8 @@
          * @param useDarkIcon Whether a dark icon should be used.
          * @return The favicon.
          */
-        public Bitmap getDefaultFaviconBitmap(
-                Resources resources, String url, boolean useDarkIcon) {
-            boolean isInternal = isInternalScheme(url);
+        public Bitmap getDefaultFaviconBitmap(Resources resources, GURL url, boolean useDarkIcon) {
+            boolean isInternal = UrlUtilities.isInternalScheme(url);
             Bitmap bitmap = isInternal ? (useDarkIcon ? mChromeDarkBitmap : mChromeLightBitmap)
                                        : (useDarkIcon ? mDefaultDarkBitmap : mDefaultLightBitmap);
             if (bitmap != null) return bitmap;
@@ -126,7 +111,7 @@
          * @return The favicon.
          */
         public Drawable getDefaultFaviconDrawable(
-                Resources resources, String url, boolean useDarkIcon) {
+                Resources resources, GURL url, boolean useDarkIcon) {
             return new BitmapDrawable(
                     resources, getDefaultFaviconBitmap(resources, url, useDarkIcon));
         }
@@ -166,9 +151,17 @@
      *         that this callback is not called if this method returns false.
      * @return True if GetLocalFaviconImageForURL is successfully called.
      */
+    public boolean getLocalFaviconImageForURL(Profile profile, GURL pageUrl, int desiredSizeInPixel,
+            FaviconImageCallback faviconImageCallback) {
+        return getLocalFaviconImageForURL(
+                profile, pageUrl.getSpec(), desiredSizeInPixel, faviconImageCallback);
+    }
+
+    @Deprecated // Use GURL version instead.
     public boolean getLocalFaviconImageForURL(Profile profile, String pageUrl,
             int desiredSizeInPixel, FaviconImageCallback faviconImageCallback) {
         assert mNativeFaviconHelper != 0;
+        // TODO(crbug/783819): Convert to GURL.
         return FaviconHelperJni.get().getLocalFaviconImageForURL(
                 mNativeFaviconHelper, profile, pageUrl, desiredSizeInPixel, faviconImageCallback);
     }
@@ -182,41 +175,13 @@
      *         that this callback is not called if this method returns false.
      * @return favicon Bitmap corresponding to the pageUrl.
      */
-    public boolean getForeignFaviconImageForURL(Profile profile, String pageUrl,
+    public boolean getForeignFaviconImageForURL(Profile profile, GURL pageUrl,
             int desiredSizeInPixel, FaviconImageCallback faviconImageCallback) {
         assert mNativeFaviconHelper != 0;
         return FaviconHelperJni.get().getForeignFaviconImageForURL(
                 mNativeFaviconHelper, profile, pageUrl, desiredSizeInPixel, faviconImageCallback);
     }
 
-    // TODO(jkrcal): Remove these two methods when FaviconHelper is not used any more by
-    // org.chromium.chrome.browser.suggestions.ImageFetcher. https://crbug.com/751628
-    /**
-     * Tries to make sure that the specified icon is available in the cache of the provided profile.
-     * The icon will we cached as an on-demand favicon.
-     * @param profile Profile used for the FaviconService construction.
-     * @param webContents The object used to download the icon.
-     * @param pageUrl The target Page URL to get the favicon for.
-     * @param iconUrl The URL of the icon to retrieve.
-     * @param isLargeIcon Specifies whether the type is kTouchIcon (true) or kFavicon (false).
-     * @param callback Called when completed (download not needed, finished or failed).
-     */
-    public void ensureIconIsAvailable(Profile profile, WebContents webContents, String pageUrl,
-            String iconUrl, boolean isLargeIcon, IconAvailabilityCallback callback) {
-        FaviconHelperJni.get().ensureIconIsAvailable(mNativeFaviconHelper, profile, webContents,
-                pageUrl, iconUrl, isLargeIcon, callback);
-    }
-
-    /**
-     * Mark that the specified on-demand favicon was requested now. This postpones the automatic
-     * eviction of the favicon from the database.
-     * @param profile Profile used for the FaviconService construction.
-     * @param iconUrl The URL of the icon to touch.
-     */
-    public void touchOnDemandFavicon(Profile profile, String iconUrl) {
-        FaviconHelperJni.get().touchOnDemandFavicon(mNativeFaviconHelper, profile, iconUrl);
-    }
-
     /**
      * Get a composed, up to 4, Favicon bitmap for the requested arguments.
      * @param profile Profile used for the FaviconService construction.
@@ -239,12 +204,6 @@
                 urls.toArray(new String[0]), desiredSizeInPixel, faviconImageCallback);
     }
 
-    private static boolean isInternalScheme(String url) {
-        GURL gurl = UrlFormatter.fixupUrl(url);
-        if (!gurl.isValid()) return false;
-        return UrlUtilities.isInternalScheme(gurl);
-    }
-
     @NativeMethods
     interface Natives {
         long init();
@@ -254,10 +213,6 @@
         boolean getLocalFaviconImageForURL(long nativeFaviconHelper, Profile profile,
                 String pageUrl, int desiredSizeInDip, FaviconImageCallback faviconImageCallback);
         boolean getForeignFaviconImageForURL(long nativeFaviconHelper, Profile profile,
-                String pageUrl, int desiredSizeInDip, FaviconImageCallback faviconImageCallback);
-        void ensureIconIsAvailable(long nativeFaviconHelper, Profile profile,
-                WebContents webContents, String pageUrl, String iconUrl, boolean isLargeIcon,
-                IconAvailabilityCallback callback);
-        void touchOnDemandFavicon(long nativeFaviconHelper, Profile profile, String iconUrl);
+                GURL pageUrl, int desiredSizeInDip, FaviconImageCallback faviconImageCallback);
     }
 }
diff --git a/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/browser/ui/favicon/FaviconUtils.java b/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/browser/ui/favicon/FaviconUtils.java
index 54dedad..f6a8a508 100644
--- a/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/browser/ui/favicon/FaviconUtils.java
+++ b/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/browser/ui/favicon/FaviconUtils.java
@@ -15,6 +15,7 @@
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.components.browser_ui.widget.RoundedIconGenerator;
 import org.chromium.ui.base.ViewUtils;
+import org.chromium.url.GURL;
 
 /**
  * Utilities to deal with favicons.
@@ -78,6 +79,14 @@
      * @param iconSize Width and height of the returned icon in px.
      * @return A {@link Drawable} to be displayed as the favicon.
      */
+    public static Drawable getIconDrawableWithoutFilter(@Nullable Bitmap icon, GURL url,
+            int fallbackColor, RoundedIconGenerator iconGenerator, Resources resources,
+            int iconSize) {
+        return getIconDrawableWithoutFilter(
+                icon, url.getSpec(), fallbackColor, iconGenerator, resources, iconSize);
+    }
+
+    @Deprecated // Use GURL variant instead.
     public static Drawable getIconDrawableWithoutFilter(@Nullable Bitmap icon, String url,
             int fallbackColor, RoundedIconGenerator iconGenerator, Resources resources,
             int iconSize) {
@@ -104,7 +113,7 @@
      * @param iconSize Width and height of the returned icon.
      * @return A {@link Drawable} to be displayed as the favicon.
      */
-    public static Drawable getIconDrawableWithFilter(@Nullable Bitmap icon, @Nullable String url,
+    public static Drawable getIconDrawableWithFilter(@Nullable Bitmap icon, @Nullable GURL url,
             RoundedIconGenerator iconGenerator,
             FaviconHelper.DefaultFaviconHelper defaultFaviconHelper, Resources resources,
             int iconSize) {
@@ -112,7 +121,8 @@
             return defaultFaviconHelper.getDefaultFaviconDrawable(resources, url, true);
         }
         if (icon == null) {
-            icon = iconGenerator.generateIconForUrl(url);
+            // TODO(crbug/783819): Migrate RoundedIconGenerator to GURL.
+            icon = iconGenerator.generateIconForUrl(url.getSpec());
             return new BitmapDrawable(
                     resources, Bitmap.createScaledBitmap(icon, iconSize, iconSize, true));
         }
diff --git a/chrome/browser/ui/android/infobars/simple_confirm_infobar_builder.cc b/chrome/browser/ui/android/infobars/simple_confirm_infobar_builder.cc
index d1086608..24821fdd 100644
--- a/chrome/browser/ui/android/infobars/simple_confirm_infobar_builder.cc
+++ b/chrome/browser/ui/android/infobars/simple_confirm_infobar_builder.cc
@@ -10,6 +10,7 @@
 #include "base/macros.h"
 #include "chrome/browser/infobars/infobar_service.h"
 #include "chrome/browser/ui/messages/android/jni_headers/SimpleConfirmInfoBarBuilder_jni.h"
+#include "components/infobars/android/confirm_infobar.h"
 #include "components/infobars/core/confirm_infobar_delegate.h"
 #include "components/infobars/core/infobar.h"
 #include "content/public/browser/web_contents.h"
@@ -180,7 +181,7 @@
 
   InfoBarService* service = InfoBarService::FromWebContents(
       content::WebContents::FromJavaWebContents(j_web_contents));
-  service->AddInfoBar(service->CreateConfirmInfoBar(
+  service->AddInfoBar(std::make_unique<infobars::ConfirmInfoBar>(
       std::make_unique<SimpleConfirmInfoBarDelegate>(
           j_listener, infobar_identifier, icon_bitmap, message_str, primary_str,
           secondary_str, link_text_str, auto_expire)));
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 83733ef2..999297d 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">"Bu gün hava necədir?" əmrini sınayın</translation>
 <translation id="1477626028522505441"><ph name="FILE_NAME" /> faylının endirilməsi server problemləri səbəbindən alınmadı.</translation>
 <translation id="1492417797159476138">Hazırda bu istifadəçi adını bu sayt üçün yadda saxlamısınız</translation>
+<translation id="1493287004536771723"><ph name="SITE_NAME" /> saytını izləyirsiniz</translation>
 <translation id="1506061864768559482">Axtarış mühərriki</translation>
 <translation id="1513352483775369820">Əlfəcin və veb tarixçəsi</translation>
 <translation id="1513858653616922153">Parolu silin</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009"><ph name="BEGIN_LINK" />Google Hesabınızda<ph name="END_LINK" /> yadda saxlanılmış parollara baxın və idarə edin</translation>
 <translation id="2818669890320396765">Bütün cihazlarda əlfəcinləri əldə etmək üçün daxil olun və sinxronizasiyanı aktiv edin</translation>
 <translation id="2827278682606527653">Təchizat kartı menyusu yarı hündürlükdədir</translation>
+<translation id="2830783625999891985">Mübadilə buferindəki kontent gizlədilib</translation>
 <translation id="2839327205551510876"><ph name="SITE_NAME" /> izləmədən çıxarıldı</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{1 gün əvvəl yoxlanılıb}other{# gün əvvəl yoxlanılıb}}</translation>
 <translation id="2842985007712546952">Ana qovluq</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB əlçatandır</translation>
 <translation id="3549657413697417275">Tarixçənizdə axtarın</translation>
 <translation id="3557336313807607643">Kontakta əlavə edin</translation>
+<translation id="3563767357928833671">Mübadilə buferindəki kontent göstərilir</translation>
 <translation id="3566923219790363270">Chrome VR üçün hələ də hazırlanır. Chrome'u sonra yenidən başladın.</translation>
 <translation id="3568688522516854065">Tabları digər cihazlarınızdan əldə etmək üçün daxil olun və sinxronizasiyanı aktiv edin</translation>
 <translation id="3587482841069643663">Hamısı</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Hər şeyi sinxronlaşdırın</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 və <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> digəri}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 və <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> digəri}}</translation>
 <translation id="4696983787092045100">Mətni Cihazlarınıza göndərin</translation>
+<translation id="4697543623252708062">Tezliklə yeni tab açdığınız zaman <ph name="SITE_NAME" /> saytından hekayələri görəcəksiniz. İzlədiyiniz saytları İzləmələri İdarəetmə bölməsində idarə edə bilərsiniz.</translation>
 <translation id="4699172675775169585">Keşlənmiş şəkillər və fayllar</translation>
 <translation id="4714588616299687897">60% data istifadəsinə qənaət edin</translation>
 <translation id="4716066120200945007">İZLƏNİLİR</translation>
@@ -1212,6 +1216,7 @@
 <translation id="8993760627012879038">Incognito rejimində yeni panel açın</translation>
 <translation id="8996847606757455498">Başqa provayder seçin</translation>
 <translation id="8998729206196772491"><ph name="MANAGED_DOMAIN" /> tərəfindən idarə olunan hesab ilə daxil olursunuz və onun administratoruna Chrome datanız üzərində nəzarəti verirsiniz. Datanız həmişəlik bu hesab ilə əlaqələndiriləcək. Chrome'dan çıxmaq datanızı bu cihazdan siləcək, lakin data Google Hesabında qalacaq.</translation>
+<translation id="9000233047676755924">İndi yeni tab açdığınız zaman <ph name="SITE_NAME" /> saytından hekayələri görəcəksiniz. İzlədiyiniz saytları İzləmələri İdarəetmə bölməsində idarə edə bilərsiniz.</translation>
 <translation id="9022774213089566801">Tez-tez ziyarət edilənlər</translation>
 <translation id="9028914725102941583">Cihazlar arasında paylaşım etmək üçün sinxronizasiyanı aktiv edin</translation>
 <translation id="9040142327097499898">Bildirişlərə icazə verilib. Bu cihazın məkanı deaktivdir.</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 90880f359..6109faf 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">Sagen Sie zum Beispiel „Wie ist das Wetter heute?“</translation>
 <translation id="1477626028522505441"><ph name="FILE_NAME" /> konnte aufgrund von Serverproblemen nicht heruntergeladen werden.</translation>
 <translation id="1492417797159476138">Sie haben diesen Nutzernamen für diese Website bereits gespeichert</translation>
+<translation id="1493287004536771723">Sie folgen <ph name="SITE_NAME" /></translation>
 <translation id="1506061864768559482">Suchmaschine</translation>
 <translation id="1513352483775369820">Lesezeichen und Webprotokoll</translation>
 <translation id="1513858653616922153">Passwort löschen</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">Gespeicherte Passwörter in meinem <ph name="BEGIN_LINK" />Google-Konto<ph name="END_LINK" /> ansehen und verwalten</translation>
 <translation id="2818669890320396765">Melden Sie sich an und aktivieren Sie die Synchronisierung, um Ihre Lesezeichen auf allen Ihren Geräten zu sehen</translation>
 <translation id="2827278682606527653">Feedkartenmenü halb geöffnet</translation>
+<translation id="2830783625999891985">Inhalte der Zwischenablage werden nicht angezeigt</translation>
 <translation id="2839327205551510876">Sie folgen <ph name="SITE_NAME" /> nicht mehr</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{Zuletzt geprüft: vor 1 Tag}other{Zuletzt geprüft: vor # Tagen}}</translation>
 <translation id="2842985007712546952">Übergeordneter Ordner</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB verfügbar</translation>
 <translation id="3549657413697417275">Im Verlauf suchen</translation>
 <translation id="3557336313807607643">Zu Kontakten hinzufügen</translation>
+<translation id="3563767357928833671">Inhalte in der Zwischenablage werden angezeigt</translation>
 <translation id="3566923219790363270">VR ist noch nicht bereit. Starten Sie Chrome später neu.</translation>
 <translation id="3568688522516854065">Melden Sie sich an und aktivieren Sie die Synchronisierung, um Ihre Tabs von Ihren anderen Geräten abzurufen</translation>
 <translation id="3587482841069643663">Alle</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Alles synchronisieren</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 und <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> weitere}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 und <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> weitere}}</translation>
 <translation id="4696983787092045100">SMS an meine Geräte senden</translation>
+<translation id="4697543623252708062">Bald werden Sie <ph name="SITE_NAME" />-Artikel sehen, wenn Sie einen neuen Tab öffnen. Unter „Gefolgte Websites verwalten“ können Sie festlegen, welchen Websites Sie folgen.</translation>
 <translation id="4699172675775169585">Bilder und Dateien im Cache</translation>
 <translation id="4714588616299687897">Reduzieren Sie Ihre Daten um bis zu 60 %</translation>
 <translation id="4716066120200945007">FOLGE ICH</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Neuen Tab im Inkognitomodus öffnen</translation>
 <translation id="8996847606757455498">Anderen Anbieter auswählen</translation>
 <translation id="8998729206196772491">Sie melden sich mit einem von <ph name="MANAGED_DOMAIN" /> verwalteten Konto an und geben dem Administrator der Domain Kontrolle über Ihre Chrome-Daten. Die Daten werden diesem Konto dauerhaft zugeordnet. Wenn Sie sich von Chrome abmelden, werden Ihre Daten auf dem Gerät gelöscht, bleiben jedoch in Ihrem Google-Konto erhalten.</translation>
+<translation id="9000233047676755924">Ab jetzt werden Sie <ph name="SITE_NAME" />-Artikel sehen, wenn Sie einen neuen Tab öffnen. Unter „Gefolgte Websites verwalten“ können Sie festlegen, welchen Websites Sie folgen.</translation>
 <translation id="9022774213089566801">Häufig besucht</translation>
 <translation id="9028914725102941583">Synchronisierung aktivieren, um geräteübergreifend zu teilen</translation>
 <translation id="9040142327097499898">Benachrichtigungen sind erlaubt. Der Standortzugriff ist für dieses Gerät deaktiviert.</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 d8d862c1..a3add843 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">Intenta con "¿Cómo está el clima hoy?".</translation>
 <translation id="1477626028522505441"><ph name="FILE_NAME" /> no se pudo descargar debido a problemas del servidor.</translation>
 <translation id="1492417797159476138">Ya guardaste este nombre de usuario en este sitio</translation>
+<translation id="1493287004536771723">Sigues a <ph name="SITE_NAME" /></translation>
 <translation id="1506061864768559482">Motor de búsqueda</translation>
 <translation id="1513352483775369820">Favoritos e historial web</translation>
 <translation id="1513858653616922153">Borrar contraseña</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">Ver y administrar las contraseñas guardadas en tu <ph name="BEGIN_LINK" />cuenta de Google<ph name="END_LINK" /></translation>
 <translation id="2818669890320396765">Para que tus favoritos estén en todos tus dispositivos, accede a tu cuenta y activa la sincronización</translation>
 <translation id="2827278682606527653">Feed card menu half height</translation>
+<translation id="2830783625999891985">Se ocultó el contenido del Portapapeles</translation>
 <translation id="2839327205551510876">Dejaste de seguir el sitio <ph name="SITE_NAME" /></translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{Se verificó hace 1 día}other{Se verificó hace # días}}</translation>
 <translation id="2842985007712546952">Carpeta principal</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775">KB disponibles: <ph name="KILOBYTES" /></translation>
 <translation id="3549657413697417275">Buscar en el historial</translation>
 <translation id="3557336313807607643">Agregar a contactos</translation>
+<translation id="3563767357928833671">Se muestra el contenido del Portapapeles</translation>
 <translation id="3566923219790363270">Chrome todavía se está preparando para la RV. Reinicia Chrome más tarde.</translation>
 <translation id="3568688522516854065">Para obtener las pestañas de tus otros dispositivos, accede a tu cuenta y activa la sincronización</translation>
 <translation id="3587482841069643663">Todos</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Sincronizar todo</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" /> y <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> más}other{<ph name="SHIPPING_OPTION_PREVIEW" /> y <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> más}}</translation>
 <translation id="4696983787092045100">Enviar texto a tus dispositivos</translation>
+<translation id="4697543623252708062">Pronto, cuando abras una nueva pestaña, verás historias de <ph name="SITE_NAME" />. Puedes controlar lo que se te muestra en Administrar sitios que sigues.</translation>
 <translation id="4699172675775169585">Imágenes y archivos almacenados en caché</translation>
 <translation id="4714588616299687897">Ahorra hasta un 60% de tus datos</translation>
 <translation id="4716066120200945007">SIGUIENDO</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Abrir ventana nueva en modo de navegación incógnito</translation>
 <translation id="8996847606757455498">Elegir otro proveedor</translation>
 <translation id="8998729206196772491">Estás accediendo con una cuenta administrada por <ph name="MANAGED_DOMAIN" /> y dándole permiso a su administrador para que controle tus datos de Chrome. Tus datos se vincularán de forma permanente a esta cuenta. Si sales de Chrome, tus datos se borrarán en este dispositivo, pero quedarán guardados en tu cuenta de Google.</translation>
+<translation id="9000233047676755924">Ahora, cuando abras una nueva pestaña, verás historias de <ph name="SITE_NAME" />. Puedes controlar lo que se te muestra en Administrar sitios que sigues.</translation>
 <translation id="9022774213089566801">Visitados con frecuencia</translation>
 <translation id="9028914725102941583">Activa la sincronización para compartir contenido entre dispositivos</translation>
 <translation id="9040142327097499898">Las notificaciones están habilitadas. La ubicación está desactivada en este dispositivo.</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 3f2d231..16712b6 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">Di "¿Qué tiempo hace hoy?"</translation>
 <translation id="1477626028522505441">No se ha podido descargar <ph name="FILE_NAME" /> debido a problemas con el servidor.</translation>
 <translation id="1492417797159476138">Ya has guardado ese nombre de usuario en este sitio web</translation>
+<translation id="1493287004536771723">Estás siguiendo a <ph name="SITE_NAME" /></translation>
 <translation id="1506061864768559482">Buscador</translation>
 <translation id="1513352483775369820">Historial web y marcadores</translation>
 <translation id="1513858653616922153">Eliminar contraseña</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">Consulta y gestiona las contraseñas guardadas en tu <ph name="BEGIN_LINK" />cuenta de Google<ph name="END_LINK" /></translation>
 <translation id="2818669890320396765">Inicia sesión y activa la sincronización para ver tus marcadores en todos tus dispositivos</translation>
 <translation id="2827278682606527653">Feed card menu half height</translation>
+<translation id="2830783625999891985">Contenido del portapapeles ocultado</translation>
 <translation id="2839327205551510876">Has dejado de seguir a <ph name="SITE_NAME" /></translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{Comprobado hace 1 día}other{Comprobado hace # días}}</translation>
 <translation id="2842985007712546952">Carpeta principal</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775">kB disponibles: <ph name="KILOBYTES" /></translation>
 <translation id="3549657413697417275">Buscar en el historial</translation>
 <translation id="3557336313807607643">Añadir a contactos</translation>
+<translation id="3563767357928833671">Contenido del portapapeles mostrado</translation>
 <translation id="3566923219790363270">Chrome todavía se está preparando para la realidad virtual. Reinicia Chrome más tarde.</translation>
 <translation id="3568688522516854065">Inicia sesión y activa la sincronización para ver las pestañas de tus otros dispositivos</translation>
 <translation id="3587482841069643663">Todo</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Sincronizar todo</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 y <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> más}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 y <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> más}}</translation>
 <translation id="4696983787092045100">Enviar mensaje de texto a tus dispositivos</translation>
+<translation id="4697543623252708062">Pronto verás historias de <ph name="SITE_NAME" /> cuando abras una pestaña nueva. Puedes gestionar los sitios que sigues en Gestionar sitios seguidos.</translation>
 <translation id="4699172675775169585">Archivos e imágenes almacenados en caché</translation>
 <translation id="4714588616299687897">Ahorra hasta un 60% de tus datos</translation>
 <translation id="4716066120200945007">SIGUIENDO</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Abre una nueva pestaña en modo de incógnito</translation>
 <translation id="8996847606757455498">Elegir otro proveedor</translation>
 <translation id="8998729206196772491">Estás iniciando sesión con una cuenta gestionada por <ph name="MANAGED_DOMAIN" />, lo que significa que vas a proporcionar a su administrador el control sobre tus datos de Chrome. Los datos se vincularán de forma permanente a esta cuenta. Si cierras sesión en Chrome, se eliminarán los datos de este dispositivo, pero permanecerán almacenados en tu cuenta de Google.</translation>
+<translation id="9000233047676755924">Ahora verás historias de <ph name="SITE_NAME" /> cuando abras una pestaña nueva. Puedes gestionar los sitios que sigues en Gestionar sitios seguidos.</translation>
 <translation id="9022774213089566801">Visitados con frecuencia</translation>
 <translation id="9028914725102941583">Activar la sincronización para compartir con otros dispositivos</translation>
 <translation id="9040142327097499898">Las notificaciones están permitidas. La ubicación está desactivada en este dispositivo.</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 54a1974..25269ee 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">Essayez "Quel temps fait-il aujourd'hui ?"</translation>
 <translation id="1477626028522505441">Échec du téléchargement du fichier "<ph name="FILE_NAME" />" en raison de problèmes liés au serveur.</translation>
 <translation id="1492417797159476138">Vous avez déjà enregistré ce nom d'utilisateur pour ce site</translation>
+<translation id="1493287004536771723">Vous suivez <ph name="SITE_NAME" /></translation>
 <translation id="1506061864768559482">Moteur de recherche</translation>
 <translation id="1513352483775369820">Favoris et historique Web</translation>
 <translation id="1513858653616922153">Supprimer le mot de passe</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">Afficher et gérer les mots de passe enregistrés dans votre <ph name="BEGIN_LINK" />compte Google<ph name="END_LINK" /></translation>
 <translation id="2818669890320396765">Connectez-vous et activez la synchronisation pour accéder à vos favoris sur tous vos appareils</translation>
 <translation id="2827278682606527653">Le menu de la carte de flux est ouvert à mi-hauteur</translation>
+<translation id="2830783625999891985">Contenu du presse-papiers masqué</translation>
 <translation id="2839327205551510876">Désabonné de <ph name="SITE_NAME" /></translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{Vérification effectuée il y a 1 jour}one{Vérification effectuée il y a # jour}other{Vérification effectuée il y a # jours}}</translation>
 <translation id="2842985007712546952">Dossier parent</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> Ko disponibles</translation>
 <translation id="3549657413697417275">Recherchez dans l'historique</translation>
 <translation id="3557336313807607643">Ajouter aux contacts</translation>
+<translation id="3563767357928833671">Contenu du presse-papiers affiché</translation>
 <translation id="3566923219790363270">Le mode de réalité virtuelle n'est pas encore prêt. Redémarrez Chrome plus tard.</translation>
 <translation id="3568688522516854065">Connectez-vous et activez la synchronisation pour accéder à vos onglets sur vos autres appareils</translation>
 <translation id="3587482841069643663">Tous</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Tout synchroniser</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 et <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> de plus}one{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 et <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> de plus}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 et <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> de plus}}</translation>
 <translation id="4696983787092045100">Envoyer le SMS à vos appareils</translation>
+<translation id="4697543623252708062">Vous verrez bientôt les stories de <ph name="SITE_NAME" /> en ouvrant un nouvel onglet. Pour contrôler les sites que vous suivez, accédez à "Gérer les abonnements".</translation>
 <translation id="4699172675775169585">Images et fichiers en cache</translation>
 <translation id="4714588616299687897">Économisez jusqu'à 60 % de vos données</translation>
 <translation id="4716066120200945007">SUIVI</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Ouvrir un nouvel onglet en mode navigation privée</translation>
 <translation id="8996847606757455498">Sélectionner un autre fournisseur</translation>
 <translation id="8998729206196772491">Vous vous connectez avec un compte géré par <ph name="MANAGED_DOMAIN" />, ce qui permettra à son administrateur de contrôler vos données Chrome. Celles-ci seront définitivement associées à ce compte. Si vous vous déconnectez de Chrome, vos données seront supprimées de cet appareil, mais elles seront conservées dans votre compte Google.</translation>
+<translation id="9000233047676755924">Vous verrez désormais les stories de <ph name="SITE_NAME" /> en ouvrant un nouvel onglet. Pour contrôler les sites que vous suivez, accédez à "Gérer les abonnements".</translation>
 <translation id="9022774213089566801">Consultés régulièrement</translation>
 <translation id="9028914725102941583">Activer la synchronisation pour partager des contenus entre des appareils</translation>
 <translation id="9040142327097499898">Les notifications sont autorisées. La localisation est désactivée pour cet appareil.</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 cc032cb..66f1474f 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">Coba “Bagaimana cuaca hari ini?”</translation>
 <translation id="1477626028522505441">Download <ph name="FILE_NAME" /> gagal karena masalah server.</translation>
 <translation id="1492417797159476138">Anda telah menyimpan nama pengguna ini untuk situs ini</translation>
+<translation id="1493287004536771723">Anda mengikuti <ph name="SITE_NAME" /></translation>
 <translation id="1506061864768559482">Mesin telusur</translation>
 <translation id="1513352483775369820">Bookmark dan histori web</translation>
 <translation id="1513858653616922153">Hapus sandi</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">Lihat dan kelola sandi tersimpan di <ph name="BEGIN_LINK" />Akun Google<ph name="END_LINK" /></translation>
 <translation id="2818669890320396765">Untuk dapat mengakses bookmark Anda di semua perangkat, login dan aktifkan sinkronisasi</translation>
 <translation id="2827278682606527653">Feed card menu half height</translation>
+<translation id="2830783625999891985">Konten papan klip disembunyikan</translation>
 <translation id="2839327205551510876">Berhenti mengikuti <ph name="SITE_NAME" /></translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{Diperiksa 1 hari yang lalu}other{Diperiksa # hari yang lalu}}</translation>
 <translation id="2842985007712546952">Folder induk</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB tersedia</translation>
 <translation id="3549657413697417275">Telusuri histori penggunaan</translation>
 <translation id="3557336313807607643">Tambahkan ke kontak</translation>
+<translation id="3563767357928833671">Konten papan klip ditampilkan</translation>
 <translation id="3566923219790363270">Chrome masih bersiap untuk menggunakan VR. Mulai ulang Chrome nanti.</translation>
 <translation id="3568688522516854065">Untuk membuka tab dari perangkat Anda yang lain, login dan aktifkan sinkronisasi</translation>
 <translation id="3587482841069643663">Semua</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Sinkronkan semua</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 dan <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> lainnya}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 dan <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> lainnya}}</translation>
 <translation id="4696983787092045100">Kirim pesan teks ke Perangkat Anda</translation>
+<translation id="4697543623252708062">Sebentar lagi, Anda akan melihat artikel dari <ph name="SITE_NAME" /> saat membuka tab baru. Anda dapat mengontrol situs yang Anda ikuti di bagian Kelola Mengikuti.</translation>
 <translation id="4699172675775169585">Gambar dan file dalam cache</translation>
 <translation id="4714588616299687897">Hemat kuota hingga 60%</translation>
 <translation id="4716066120200945007">MENGIKUTI</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Membuka tab baru dalam mode Samaran</translation>
 <translation id="8996847606757455498">Pilih penyedia lain</translation>
 <translation id="8998729206196772491">Anda akan login dengan akun yang dikelola oleh <ph name="MANAGED_DOMAIN" /> dan memberikan kontrol data Chrome kepada administratornya. Data akan terikat dengan akun ini secara permanen. Bila Anda logout dari Chrome, data akan dihapus dari perangkat ini, tetapi data tetap tersimpan di Akun Google.</translation>
+<translation id="9000233047676755924">Anda sekarang akan melihat artikel dari <ph name="SITE_NAME" /> saat membuka tab baru. Anda dapat mengontrol situs yang Anda ikuti di bagian Kelola Mengikuti.</translation>
 <translation id="9022774213089566801">Sering dikunjungi</translation>
 <translation id="9028914725102941583">Aktifkan sinkronisasi untuk berbagi ke seluruh perangkat</translation>
 <translation id="9040142327097499898">Notifikasi diizinkan. Lokasi dinonaktifkan untuk perangkat ini.</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 059cf9e2..438192c 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">Prova "Che tempo fa oggi?"</translation>
 <translation id="1477626028522505441">Download di <ph name="FILE_NAME" /> non riuscito a causa di problemi del server.</translation>
 <translation id="1492417797159476138">Hai già salvato questo nome utente per questo sito</translation>
+<translation id="1493287004536771723">Stai seguendo <ph name="SITE_NAME" /></translation>
 <translation id="1506061864768559482">Motore di ricerca</translation>
 <translation id="1513352483775369820">Preferiti e cronologia web</translation>
 <translation id="1513858653616922153">Elimina la password</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">Visualizza e gestisci le password salvate nel tuo <ph name="BEGIN_LINK" />Account Google<ph name="END_LINK" /></translation>
 <translation id="2818669890320396765">Accedi e attiva la sincronizzazione per trovare i tuoi preferiti su tutti i dispositivi</translation>
 <translation id="2827278682606527653">Menu scheda feed aperto nella metà inferiore dello schermo</translation>
+<translation id="2830783625999891985">Contenuti degli Appunti nascosti</translation>
 <translation id="2839327205551510876">Non segui più <ph name="SITE_NAME" /></translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{Eseguito 1 giorno fa}other{Eseguito # giorni fa}}</translation>
 <translation id="2842985007712546952">Cartella principale</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> kB disponibili</translation>
 <translation id="3549657413697417275">Cerca nella cronologia</translation>
 <translation id="3557336313807607643">Aggiungi ai contatti</translation>
+<translation id="3563767357928833671">Contenuti degli Appunti visualizzati</translation>
 <translation id="3566923219790363270">La modalità VR è ancora nella fase preparatoria in Chrome. Riavvia Chrome più tardi.</translation>
 <translation id="3568688522516854065">Accedi e attiva la sincronizzazione per trovare le tue schede degli altri dispositivi</translation>
 <translation id="3587482841069643663">Tutti</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Sincronizza tutto</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 e altre <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 e altre <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation>
 <translation id="4696983787092045100">Invia testo ai tuoi dispositivi</translation>
+<translation id="4697543623252708062">A breve vedrai articoli di <ph name="SITE_NAME" /> quando aprirai una nuova scheda. Puoi controllare i siti che segui nella sezione Gestisci contenuti seguiti.</translation>
 <translation id="4699172675775169585">Immagini e file memorizzati nella cache</translation>
 <translation id="4714588616299687897">Riduci l'utilizzo di dati fino al 60%</translation>
 <translation id="4716066120200945007">STAI SEGUENDO</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Apri nuova scheda in mod. di navigaz. in incognito</translation>
 <translation id="8996847606757455498">Scegli un altro fornitore</translation>
 <translation id="8998729206196772491">Stai per eseguire l'accesso con un account gestito da <ph name="MANAGED_DOMAIN" /> e consentire al relativo amministratore di avere il controllo dei tuoi dati di Chrome. I tuoi dati verranno associati definitivamente a questo account. Se esci da Chrome, i dati verranno eliminati da questo dispositivo, ma rimarranno memorizzati nel tuo Account Google.</translation>
+<translation id="9000233047676755924">Quando aprirai una nuova scheda vedrai gli articoli di <ph name="SITE_NAME" />. Puoi controllare i siti che segui nella sezione Gestisci contenuti seguiti.</translation>
 <translation id="9022774213089566801">Più visitati</translation>
 <translation id="9028914725102941583">Attiva la sincronizzazione per la condivisione tra dispositivi</translation>
 <translation id="9040142327097499898">Le notifiche sono consentite. La geolocalizzazione non è attiva per questo dispositivo.</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 0f89e77..25fe14c 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">「今日の天気は?」と聞いてみましょう</translation>
 <translation id="1477626028522505441">サーバーで問題が発生したため、<ph name="FILE_NAME" /> をダウンロードできませんでした。</translation>
 <translation id="1492417797159476138">このユーザー名はこのサイトですでに保存されています</translation>
+<translation id="1493287004536771723"><ph name="SITE_NAME" /> をフォローしています</translation>
 <translation id="1506061864768559482">検索エンジン</translation>
 <translation id="1513352483775369820">ブックマークとウェブ履歴</translation>
 <translation id="1513858653616922153">パスワードを削除</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009"><ph name="BEGIN_LINK" />Google アカウント<ph name="END_LINK" />での保存パスワードの表示と管理</translation>
 <translation id="2818669890320396765">お使いのどのデバイスでも同じブックマークを使用するには、ログインして同期を有効にします</translation>
 <translation id="2827278682606527653">フィードカード メニューが画面の下半分に開いています</translation>
+<translation id="2830783625999891985">クリップボードの内容は非表示になっています</translation>
 <translation id="2839327205551510876"><ph name="SITE_NAME" /> のフォローを解除しました</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{前回の確認: 1 日前}other{前回の確認: # 日前}}</translation>
 <translation id="2842985007712546952">親フォルダ</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB の空き</translation>
 <translation id="3549657413697417275">履歴を検索</translation>
 <translation id="3557336313807607643">連絡先に追加</translation>
+<translation id="3563767357928833671">クリップボードの内容が表示されています</translation>
 <translation id="3566923219790363270">Chrome はまだ VR の準備中です。しばらく待ってから Chrome を再起動してください。</translation>
 <translation id="3568688522516854065">他のデバイスと同じタブを使用するには、ログインして同期を有効にします</translation>
 <translation id="3587482841069643663">すべて</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">すべてを同期する</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 他 <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> 件}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 他 <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> 件}}</translation>
 <translation id="4696983787092045100">デバイスにテキストを送信</translation>
+<translation id="4697543623252708062">まもなく、新しいタブを開くと、<ph name="SITE_NAME" /> のストーリーが表示されるようになります。[フォローを管理] でフォローするサイトを管理できます。</translation>
 <translation id="4699172675775169585">キャッシュされた画像とファイル</translation>
 <translation id="4714588616299687897">データを最大 60% 削減できます</translation>
 <translation id="4716066120200945007">フォロー中</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">新しいタブをシークレット モードで開く</translation>
 <translation id="8996847606757455498">別のプロバイダを選択</translation>
 <translation id="8998729206196772491"><ph name="MANAGED_DOMAIN" /> で管理されているアカウントでログインして、Chrome データの管理を管理者に委ねようとしています。この操作を行うと、データはこのアカウントに恒久的に関連付けられます。Chrome からログアウトすると、データはこのデバイスから削除されますが、Google アカウントには残ります。</translation>
+<translation id="9000233047676755924">新しいタブを開くと、<ph name="SITE_NAME" /> のストーリーが表示されるようになります。[フォローを管理] でフォローするサイトを管理できます。</translation>
 <translation id="9022774213089566801">よく使用するサイト</translation>
 <translation id="9028914725102941583">デバイス間で共有するには同期をオンにします</translation>
 <translation id="9040142327097499898">通知が許可されていますが、位置情報がデバイスでオフになっています。</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 240e706..53c72a1c 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">"Бүгінгі ауа райы" деп сұрап көріңіз.</translation>
 <translation id="1477626028522505441">Сервердегі ақаулықтар себебінен <ph name="FILE_NAME" /> жүктелмеді.</translation>
 <translation id="1492417797159476138">Бұл сайт үшін осы пайдаланушы аты сақтап қойылған.</translation>
+<translation id="1493287004536771723">Сіз <ph name="SITE_NAME" /> сайтына жазылғансыз</translation>
 <translation id="1506061864768559482">Іздеу жүйесі</translation>
 <translation id="1513352483775369820">Бетбелгілер мен веб-журнал</translation>
 <translation id="1513858653616922153">Құпия сөзді жою</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009"><ph name="BEGIN_LINK" />Google есептік жазбаңызда<ph name="END_LINK" /> сақталған құпия сөздерді көру және басқару</translation>
 <translation id="2818669890320396765">Бетбелгілерді барлық құрылғылардан пайдалану үшін есептік жазбаға кіріп, синхрондау функциясын қосыңыз</translation>
 <translation id="2827278682606527653">Фид картасының мәзірі жартылай ашылды.</translation>
+<translation id="2830783625999891985">Буфердегі мазмұн жасырулы</translation>
 <translation id="2839327205551510876"><ph name="SITE_NAME" /> сайтына жазылудан бас тарттыңыз.</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{1 күн бұрын тексерілді.}other{# күн бұрын тексерілді.}}</translation>
 <translation id="2842985007712546952">Түпкі қалта</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> КБ бос орын бар</translation>
 <translation id="3549657413697417275">Тарихтан іздеу</translation>
 <translation id="3557336313807607643">Контактілерге енгізу</translation>
+<translation id="3563767357928833671">Буфердегі мазмұн көрсетіледі</translation>
 <translation id="3566923219790363270">Chrome виртуалды шындықты әлі дайындап жатыр. Chrome браузерін кейінірек қайта қосыңыз.</translation>
 <translation id="3568688522516854065">Қойындыларды барлық құрылғылардан пайдалану үшін есептік жазбаға кіріп, синхрондау функциясын қосыңыз</translation>
 <translation id="3587482841069643663">Барлығы</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Барлығын синхрондау</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 және тағы <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 және тағы <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation>
 <translation id="4696983787092045100">Мәтінді құрылғыларға жіберу</translation>
+<translation id="4697543623252708062">Жаңа қойындыны ашқан кезде, жаңалықтарды <ph name="SITE_NAME" /> сайтынан көре аласыз. Жазылған сайттарыңызды "Жазылымдарды басқару" бөлімінде басқара аласыз.</translation>
 <translation id="4699172675775169585">Кэштелген кескіндер мен файлдар</translation>
 <translation id="4714588616299687897">Трафикті 60%-ға дейін үнемдеңіз</translation>
 <translation id="4716066120200945007">ЖАЗЫЛЫМДАР</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Жаңа қойындыны инкогнито режимінде ашу</translation>
 <translation id="8996847606757455498">Басқа провайдер таңдау</translation>
 <translation id="8998729206196772491"><ph name="MANAGED_DOMAIN" /> басқаратын есептік жазбамен кірудесіз және оның әкімшісіне Chrome деректерін басқару құқығы берілуде. Деректер бұл есептік жазбаға біржола байланыстырылады. Chrome жүйесінен шыққанда, деректер бұл құрылғыдан жойылады, бірақ Google есептік жазбасында сақталады.</translation>
+<translation id="9000233047676755924">Жаңа қойындыны ашқан кезде, жаңалықтарды <ph name="SITE_NAME" /> сайтынан көресіз. Жазылған сайттарыңызды "Жазылымдарды басқару" бөлімінде басқара аласыз.</translation>
 <translation id="9022774213089566801">Жиі пайдаланатындар</translation>
 <translation id="9028914725102941583">Барлық құрылғылармен бөлісу үшін синхрондауды іске қосыңыз.</translation>
 <translation id="9040142327097499898">Хабарландыруларға рұқсат етілген. Орынды анықтау қызметі бұл құрылғыда өшірулі.</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 249a71ce..c9565a3 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">"오늘 날씨 어때?"라고 말해 보세요.</translation>
 <translation id="1477626028522505441">서버 문제로 인해 <ph name="FILE_NAME" />을(를) 다운로드할 수 없습니다.</translation>
 <translation id="1492417797159476138">이미 사이트에 사용 중인 사용자 이름입니다.</translation>
+<translation id="1493287004536771723"><ph name="SITE_NAME" /> 사이트를 팔로우 중입니다.</translation>
 <translation id="1506061864768559482">검색엔진</translation>
 <translation id="1513352483775369820">북마크 및 방문 기록</translation>
 <translation id="1513858653616922153">비밀번호 삭제</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009"><ph name="BEGIN_LINK" />Google 계정<ph name="END_LINK" />에서 저장된 비밀번호 보기 및 관리</translation>
 <translation id="2818669890320396765">어느 기기에서나 내 북마크를 사용하려면 로그인하고 동기화를 사용 설정하세요.</translation>
 <translation id="2827278682606527653">피드 카드 메뉴 절반 높이</translation>
+<translation id="2830783625999891985">클립보드 콘텐츠 숨김</translation>
 <translation id="2839327205551510876"><ph name="SITE_NAME" /> 팔로우 해제함</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{1일 전에 확인됨}other{#일 전에 확인됨}}</translation>
 <translation id="2842985007712546952">상위 폴더</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" />KB 사용 가능</translation>
 <translation id="3549657413697417275">방문 기록 검색</translation>
 <translation id="3557336313807607643">주소록에 추가</translation>
+<translation id="3563767357928833671">클립보드 콘텐츠 표시됨</translation>
 <translation id="3566923219790363270">Chrome에서 아직 VR을 준비하고 있습니다. 나중에 Chrome을 다시 시작하세요.</translation>
 <translation id="3568688522516854065">다른 기기에서 탭을 가져오려면 로그인하고 동기화를 사용 설정하세요.</translation>
 <translation id="3587482841069643663">전체</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">모두 동기화</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" /> 외 <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />개}other{<ph name="SHIPPING_OPTION_PREVIEW" /> 외 <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />개}}</translation>
 <translation id="4696983787092045100">기기로 SMS 전송</translation>
+<translation id="4697543623252708062">곧 새 탭을 열 때 <ph name="SITE_NAME" /> 스토리가 표시됩니다. 팔로우 관리에서 팔로우 중인 사이트를 관리할 수 있습니다.</translation>
 <translation id="4699172675775169585">캐시된 이미지 및 파일</translation>
 <translation id="4714588616299687897">데이터 최대 60% 절약</translation>
 <translation id="4716066120200945007">팔로우 중</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">시크릿 모드로 새 탭 열기</translation>
 <translation id="8996847606757455498">다른 제공업체 선택</translation>
 <translation id="8998729206196772491"><ph name="MANAGED_DOMAIN" />에서 관리하는 계정으로 로그인합니다. 계정 관리자가 내 Chrome 데이터를 관리하게 되며 데이터는 이 계정에 영구적으로 연결됩니다. Chrome에서 로그아웃하면 데이터가 이 기기에서 삭제되지만 Google 계정에는 그대로 유지됩니다.</translation>
+<translation id="9000233047676755924">이제 새 탭을 열 때 <ph name="SITE_NAME" /> 스토리가 표시됩니다. 팔로우 관리에서 팔로우 중인 사이트를 관리할 수 있습니다.</translation>
 <translation id="9022774213089566801">자주 방문한 웹사이트</translation>
 <translation id="9028914725102941583">동기화를 사용 설정하여 기기간 공유하기</translation>
 <translation id="9040142327097499898">알림이 허용되었습니다. 이 기기에서 위치가 사용 중지되었습니다.</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 3383f92..c49d5af 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">“Бүгүн аба ырайы кандай?” деп айтып көрүңүз</translation>
 <translation id="1477626028522505441">Сервердеги маселелерден улам <ph name="FILE_NAME" /> жүктөлүп алынган жок.</translation>
 <translation id="1492417797159476138">Бул сайт үчүн ушул колдонуучунун атын сактап койгонсуз</translation>
+<translation id="1493287004536771723"><ph name="SITE_NAME" /> жаңылыктарына жазылдыңыз</translation>
 <translation id="1506061864768559482">Издөө каражаты</translation>
 <translation id="1513352483775369820">Кыстармалар жана издөө таржымалы</translation>
 <translation id="1513858653616922153">Сырсөздү жок кылуу</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009"><ph name="BEGIN_LINK" />Google аккаунтуңузда<ph name="END_LINK" /> сакталган сырсөздөрдү көрүп, башкарыңыз</translation>
 <translation id="2818669890320396765">Кыстармаларыңызды бардык түзмөктөрүңүздө колдонуу үчүн аккаунтуңузга кирип, шайкештирүүнү күйгүзүңүз</translation>
 <translation id="2827278682606527653">Түрмөктөгү меню экрандын жарымына чейин ачылды</translation>
+<translation id="2830783625999891985">Алмашуу буфериндеги мазмундар жашырылган</translation>
 <translation id="2839327205551510876">Төмөнкүгө көз салуу токтотулду: <ph name="SITE_NAME" /></translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{1 күн мурда текшерилди}other{# күн мурда текшерилди}}</translation>
 <translation id="2842985007712546952">Түпкү куржун</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" />Кб жеткиликтүү</translation>
 <translation id="3549657413697417275">Серептөө таржымалынан издеңиз</translation>
 <translation id="3557336313807607643">Байланыштарга кошуу</translation>
+<translation id="3563767357928833671">Алмашуу буфериндеги мазмундар көрсөтүлдү</translation>
 <translation id="3566923219790363270">Chrome VR'га дагы деле даярданууда. Chrome'ду кийинчерээк өчүрүп күйгүзүү.</translation>
 <translation id="3568688522516854065">Өтмөктөрүңүздү башка түзмөктөрүңүздөн алуу үчүн аккаунтуңузга кирип, шайкештирүүнү күйгүзүңүз</translation>
 <translation id="3587482841069643663">Баары</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Баарын шайкештештирүү</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 жана дагы <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 жана дагы <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation>
 <translation id="4696983787092045100">Түзмөктөрүңүзгө билдирүү жөнөтүңүз</translation>
+<translation id="4697543623252708062">Жакында жаңы өтмөктү ачкан сайын, <ph name="SITE_NAME" /> окуяларын көрүп турасыз. Жазылган сайттарды Жазылууларды башкаруу бөлүмүнөн көзөмөлдөй аласыз.</translation>
 <translation id="4699172675775169585">Кештелген сүрөттөр жана файлдар</translation>
 <translation id="4714588616299687897">Трафигиңизди 60% чейин үнөмдөңүз</translation>
 <translation id="4716066120200945007">ЖАЗЫЛГАНСЫЗ</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Жаңы өтмөктү жашыруун режимде ачуу</translation>
 <translation id="8996847606757455498">Башка провайдерди тандоо</translation>
 <translation id="8998729206196772491">Сиз <ph name="MANAGED_DOMAIN" /> доменинин администратору тарабынан башкарылган аккаунтка кирип жатасыз. Ал мындан тарта сиздин аккаунтуңузга байланган Chrome дайын-даректериңизды башкарып калат. Chrome аккаунткан чыксаңыз, бул түзмөктөн дайын-даректериңиз жок кылынып, бирок Google Каттоо эсебинде сакталып кала берет.</translation>
+<translation id="9000233047676755924">Эми жаңы өтмөктү ачканда, <ph name="SITE_NAME" /> окуяларын көрүп турасыз. Жазылган сайттарды Жазылууларды башкаруу бөлүмүнөн көзөмөлдөй аласыз.</translation>
 <translation id="9022774213089566801">Көп каралгандар</translation>
 <translation id="9028914725102941583">Бардык түзмөктөр менен бөлүшүү үчүн шайкештирүүнү күйгүзүңүз</translation>
 <translation id="9040142327097499898">Билдирүүлөргө уруксат берилди. Жайгашкан жерди аныктоо жөндөөсү бул түзмөктө өчүрүлгөн.</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 57dd48e..f13b261 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">“ഇന്നത്തെ കാലാവസ്ഥ എന്താണ്?” എന്ന് പറഞ്ഞ് ശ്രമിക്കുക</translation>
 <translation id="1477626028522505441">സെർവർ പ്രശ്‌നങ്ങൾ കാരണം <ph name="FILE_NAME" /> ഡൗൺലോഡ് ചെയ്യാനായില്ല.</translation>
 <translation id="1492417797159476138">ഈ സൈറ്റിനായി നിങ്ങൾ ഇതിനകം തന്നെ ഈ ഉപയോക്തൃനാമം സംരക്ഷിച്ചു</translation>
+<translation id="1493287004536771723"><ph name="SITE_NAME" /> എന്നതിനെ നിങ്ങൾ പിന്തുടരുന്നു</translation>
 <translation id="1506061864768559482">തിരയൽ യന്ത്രം</translation>
 <translation id="1513352483775369820">ബുക്ക്‌മാർക്കുകളും വെബ് ചരിത്രവും</translation>
 <translation id="1513858653616922153">പാസ്‌വേഡ് ഇല്ലാതാക്കുക</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">നിങ്ങളുടെ <ph name="BEGIN_LINK" />Google അക്കൗണ്ടിൽ<ph name="END_LINK" /> സംരക്ഷിച്ച പാസ്‌വേഡുകൾ കാണുക, മാനേജ് ചെയ്യുക</translation>
 <translation id="2818669890320396765">നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങളിലും ബുക്ക്‌മാർക്കുകൾ ലഭിക്കാൻ, സൈൻ ഇൻ ചെയ്‌ത് സമന്വയിപ്പിക്കൽ ഓണാക്കുക</translation>
 <translation id="2827278682606527653">പകുതി ഉയരത്തിലുള്ള ഫീഡ് കാർഡ് മെനു</translation>
+<translation id="2830783625999891985">ക്ലിപ്പ്ബോർഡ് ഉള്ളടക്കം മറച്ചിരിക്കുന്നു</translation>
 <translation id="2839327205551510876"><ph name="SITE_NAME" /> പിന്തുടരുന്നത് ഒഴിവാക്കി</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{ഒരു ദിവസം മുമ്പ് പരിശോധിച്ചു}other{# ദിവസം മുമ്പ് പരിശോധിച്ചു}}</translation>
 <translation id="2842985007712546952">പാരന്റ് ഫോൾഡർ</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB ലഭ്യമാണ്</translation>
 <translation id="3549657413697417275">ചരിത്രം തിരയുക</translation>
 <translation id="3557336313807607643">കോൺടാക്‌റ്റുകളിലേക്ക് ചേർക്കുക</translation>
+<translation id="3563767357928833671">ക്ലിപ്പ്ബോർഡ് ഉള്ളടക്കം കാണിച്ചിരിക്കുന്നു</translation>
 <translation id="3566923219790363270">Chrome ഇപ്പോഴും VR-നായി തയ്യാറെടുത്തുകൊണ്ടിരിക്കുകയാണ്. Chrome പിന്നീട് റീസ്‌റ്റാർട്ട് ചെയ്യുക.</translation>
 <translation id="3568688522516854065">നിങ്ങളുടെ മറ്റ് ഉപകരണങ്ങളിൽ നിന്നുള്ള ടാബുകൾ ലഭിക്കാൻ, സൈൻ ഇൻ ചെയ്‌ത് സമന്വയിപ്പിക്കൽ ഓണാക്കുക</translation>
 <translation id="3587482841069643663">എല്ലാം</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">എല്ലാം സമന്വയിപ്പിക്കുക</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 എന്നതും ‌മറ്റ് <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> പേയ്‌മെന്റ് രീതികളും}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 എന്നതും ‌മറ്റ് <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> പേയ്‌മെന്റ് രീതികളും}}</translation>
 <translation id="4696983787092045100">ഉപകരണങ്ങളിലേക്ക് അയയ്ക്കൂ</translation>
+<translation id="4697543623252708062">ഉടൻ, പുതിയൊരു ടാബ് തുറക്കുമ്പോൾ, നിങ്ങൾക്ക് <ph name="SITE_NAME" /> എന്നതിൽ നിന്നുള്ള സ്റ്റോറികൾ കാണാനാകും. പിന്തുടരുന്നവ മാനേജ് ചെയ്യുക എന്നതിൽ, നിങ്ങൾ പിന്തുടരുന്ന സൈറ്റുകൾ നിയന്ത്രിക്കാം.</translation>
 <translation id="4699172675775169585">കാഷെ ചെയ്‌ത ചിത്രങ്ങളും ഫയലുകളും</translation>
 <translation id="4714588616299687897">നിങ്ങളുടെ ഡാറ്റ 60% വരെ ലാഭിക്കൂ</translation>
 <translation id="4716066120200945007">പിന്തുടരുന്നു</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">അദൃശ്യ മോഡിൽ പുതിയൊരു വിൻഡോ തുറക്കുക</translation>
 <translation id="8996847606757455498">മറ്റൊരു ദാതാവിനെ തിരഞ്ഞെടുക്കുക</translation>
 <translation id="8998729206196772491"><ph name="MANAGED_DOMAIN" /> മാനേജ് ചെയ്യുന്ന ഒരു അക്കൗണ്ട് ഉപയോഗിച്ച് നിങ്ങൾ സൈൻ ഇൻ ചെയ്യുകയും ഇതിന്റെ അഡ്‌മിനിസ്‌ട്രേറ്റർക്ക് നിങ്ങളുടെ Chrome വിവരങ്ങളിന്മേൽ നിയന്ത്രണം നൽകുകയും ചെയ്യുന്നു. വിവരങ്ങളെ ഈ അക്കൗണ്ടുമായി ശാശ്വതമായി ബന്ധിപ്പിക്കും. Chrome-ൽ നിന്ന് സൈൻ ഔട്ട് ചെയ്യുന്നത് ഈ ഉപകരണത്തിൽ നിന്ന് നിങ്ങളുടെ വിവരങ്ങളെ ഇല്ലാതാക്കുമെങ്കിലും, Google അക്കൗണ്ടിൽ തുടർന്നും അവയെ സൂക്ഷിക്കുന്നതാണ്.</translation>
+<translation id="9000233047676755924">പുതിയൊരു ടാബ് തുറക്കുമ്പോൾ നിങ്ങൾക്ക് ഇപ്പോൾ <ph name="SITE_NAME" /> എന്നതിൽ നിന്നുള്ള സ്റ്റോറികൾ കാണാം. പിന്തുടരുന്നവ മാനേജ് ചെയ്യുക എന്നതിൽ, നിങ്ങൾ പിന്തുടരുന്ന സൈറ്റുകൾ നിയന്ത്രിക്കാം.</translation>
 <translation id="9022774213089566801">പതിവായി സന്ദർശിക്കുന്നവ</translation>
 <translation id="9028914725102941583">ഉപകരണങ്ങളിലുടനീളം പങ്കിടാൻ സമന്വയിപ്പിക്കൽ ഓണാക്കുക</translation>
 <translation id="9040142327097499898">അറിയിപ്പുകൾ അനുവദിക്കപ്പെട്ടിരിക്കുന്നു. ഈ ഉപകരണത്തിന്‍റെ ലൊക്കേഷൻ ഓഫാണ്.</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 07c78113..22a88dea 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
@@ -248,6 +248,7 @@
 <translation id="2612676031748830579">कार्ड नम्बर</translation>
 <translation id="2625189173221582860">पासवर्ड प्रतिलिपि गरियो</translation>
 <translation id="2631006050119455616">बचत गरिएको डेटा</translation>
+<translation id="2645657967708199252">तपाईंले अहिले <ph name="CONNECTION_TYPE" /> नेटवर्क चलाइरहनुभएको हुनाले डाउनलोडको गति सुस्त हुन सक्छ</translation>
 <translation id="2647434099613338025">भाषा थप्नुहोस्</translation>
 <translation id="2650751991977523696">फाइल पुनः डाउनलोड गर्ने हो?</translation>
 <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# अडियो फाइल}other{# अडियो फाइलहरू}}</translation>
@@ -260,6 +261,7 @@
 <translation id="2718846868787000099">तपाईंले चाहेको भाषामा सामग्री देखाउन तपाईंले प्रयोग गर्ने साइटहरूले तपाईंका प्राथमिकताहरू देख्न सक्छन्</translation>
 <translation id="2723001399770238859">अडियो</translation>
 <translation id="2728754400939377704">साइटद्वारा क्रमबद्ध गर्नुहोस्</translation>
+<translation id="2739256783402597439">2G</translation>
 <translation id="2744248271121720757">तत्कालै खोज्नका लागि कुनै शब्दमा ट्याप गर्नुहोस् वा सम्बन्धित कारबाहीहरू हेर्नुहोस्</translation>
 <translation id="2760989362628427051">तपाईंको डिभाइसमा अँध्यारो थिम वा ब्याट्री सेभर मोड सक्रिय हुँदा अँध्यारो थिम सक्रिय गर्नुहोस्</translation>
 <translation id="2762000892062317888">भर्खरै</translation>
@@ -436,6 +438,7 @@
 <translation id="393697183122708255">कुनैपनि सक्षम गरिएको आवाज खोजी उपलब्ध छैन</translation>
 <translation id="3943557322767080599">मैले आफ्नो Google खातामा साइन इन गर्दा Chrome मा साइन इन गर्ने सुझाव दिइयोस्</translation>
 <translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{यन्त्र तयार भएपछि Chrome ले तपाईंको पृष्ठ लोड गर्ने छ}other{यन्त्र तयार भएपछि Chrome ले तपाईंका पृष्ठहरू लोड गर्ने छ}}</translation>
+<translation id="3962957115499249330">Wi-Fi मा कनेक्ट भई यो डाउनलोड सुरु हुँदा तपाईं एउटा सूचना देख्नु हुने छ।</translation>
 <translation id="3963007978381181125">पासफ्रेजमार्फत इन्क्रिप्सन गर्ने कार्यअन्तर्गत Google Pay का भुक्तानी विधि र ठेगानाहरू समावेश हुँदैनन्। तपाईंको पासफ्रेज थाहा हुने व्यक्तिले मात्र तपाईंको इन्क्रिप्ट गरिएको डेटा पढ्न सक्छ। उक्त पासफ्रेज Google मा पठाइँदैन वा त्यहाँ भण्डारण गरिँदैन। तपाईंले आफ्नो पासफ्रेज बिर्सनुभयो वा तपाईं यो सेटिङ परिवर्तन गर्न चाहनुहुन्छ भने तपाईंले सिंक रिसेट गर्नु पर्ने हुन्छ। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation>
 <translation id="3969142555815019568">Chrome ले तपाईंका पासवर्डहरू जाँच्न सकेन</translation>
 <translation id="3974987681202239636"><ph name="APP_NAME" /> Chrome मा खुल्ने छ। जारी राखेर तपाईं <ph name="BEGIN_LINK1" />Google का सेवाका सर्तहरू<ph name="END_LINK1" /> र <ph name="BEGIN_LINK2" />Google Chrome र Chrome OS का सेवाका अतिरिक्त सर्तहरू<ph name="END_LINK2" />मा सहमति जनाउनुहुन्छ। <ph name="BEGIN_LINK3" />Family Link मार्फत व्यवस्थापन गरिएका Google खाताहरूको गोपनीयता सूचना<ph name="END_LINK3" /> पनि लागू हुन्छ।</translation>
@@ -479,6 +482,7 @@
 <translation id="4256782883801055595">स्रोत इजाजतपत्रहरू खोल्नुहोस्</translation>
 <translation id="4263656433980196874">सहायकको प्रयोग गरी भ्वाइस सर्च गर्ने कुराको सहमति लिने UI पूर्ण उचाइमा खोलिएको छ</translation>
 <translation id="4269820728363426813">लिङ्क ठेगाना कपी गर्नुहोस्</translation>
+<translation id="4290281343757112331">बरु पछि डाउनलोड गर्ने हो?</translation>
 <translation id="4298388696830689168">लिंक गरिएका साइटहरू</translation>
 <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation>
 <translation id="4307992518367153382">आधारभूत</translation>
@@ -539,6 +543,7 @@
 <translation id="4696983787092045100">आफ्ना यन्त्रहरूमा टेक्स्ट म्यासेज पठाउनुहोस्</translation>
 <translation id="4699172675775169585">क्यास गरिएका छविहरू र फाइलहरू</translation>
 <translation id="4714588616299687897">आफ्नो डेटाको ६०% सम्म जोगाउनुहोस्</translation>
+<translation id="4716066120200945007">फलो गरिरहेको</translation>
 <translation id="4719927025381752090">अनुवादको गर्न प्रस्ताव गर्नुहोस्</translation>
 <translation id="4720023427747327413"><ph name="PRODUCT_NAME" />मा खोल्नुहोस्</translation>
 <translation id="4720982865791209136">Chrome लाई सुधार्न मद्दत गर्नुहोस्। <ph name="BEGIN_LINK" />सर्वेक्षणमा भाग लिनुहोस्।<ph name="END_LINK" /></translation>
@@ -619,6 +624,7 @@
 <translation id="5191251636205085390">तेस्रो पक्षीय कुकीहरूलाई प्रतिस्थापन गर्ने प्रविधिका बारेमा जानकारी प्राप्त गर्नुहोस् र तिनलाई नियन्त्रण गर्ने तरिका सिक्नुहोस्</translation>
 <translation id="5193988420012215838">तपाईंको क्लिपबोर्डमा प्रतिलिपि गरियो</translation>
 <translation id="5199929503336119739">कार्य प्रोफाइल</translation>
+<translation id="5201464744567315552"><ph name="TIME" /> बजे यो डाउनलोड सुरु हुँदा तपाईं एउटा सूचना देख्नु हुने छ।</translation>
 <translation id="5204967432542742771">पासवर्ड प्रविष्टि गर्नुहोस्</translation>
 <translation id="5210286577605176222">अघिल्लो ट्याबमा जानुहोस्</translation>
 <translation id="5210365745912300556">ट्याब बन्द गर्नुहोस्</translation>
@@ -629,6 +635,7 @@
 <translation id="5230560987958996918"><ph name="SITE" /> वरपरका ब्लुटुथ यन्त्रहरू खोज्न स्क्यान गर्न चाहन्छ। निम्न यन्त्रहरू फेला परेका छन्:</translation>
 <translation id="5233638681132016545">नयाँ ट्याब</translation>
 <translation id="5250483651202458397">स्क्रिनसट। बन्द गर्न ट्याप गर्नुहोस्।</translation>
+<translation id="5262378156578470238"><ph name="DATE" /> मा यो डाउनलोड सुरु हुँदा तपाईं एउटा सूचना देख्नु हुने छ।</translation>
 <translation id="526421993248218238">यो पृष्ठ लोड गर्न सकिएन</translation>
 <translation id="5271967389191913893">यन्त्रले डाउनलोड गर्नको लागि सामग्रीलाई खोल्न सक्दैन।</translation>
 <translation id="5292796745632149097">निम्न यन्त्रमा पठाउनुहोस्</translation>
@@ -909,6 +916,7 @@
 <translation id="6981982820502123353">पहुँच</translation>
 <translation id="6989267951144302301">डाउनलोड गर्न सकिएन</translation>
 <translation id="6995899638241819463">डेटा चोरीको घटनामा पासवर्डको खुलासा हुँदा तपाईंलाई चेतावनी दिइन्छ</translation>
+<translation id="7001056293070445572">यो फाइल ठुलो (<ph name="FILE_SIZE" />) छ</translation>
 <translation id="7015203776128479407">सिंकसम्बन्धी प्रारम्भिक सेटअप पूरा भएन। सिंक सुविधा निष्क्रिय छ</translation>
 <translation id="7022756207310403729">ब्राउजरमा खाेल्नुहाेस्</translation>
 <translation id="702463548815491781">TalkBack वा पहुँच स्विच गर्नुहोस् नामक सुविधा सक्रिय हुँदा मात्र सिफारिस गरिन्छ</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 e589d8c..02f8b0ee 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">Probeer 'Wat voor weer wordt het vandaag?'</translation>
 <translation id="1477626028522505441">Downloaden van <ph name="FILE_NAME" /> is mislukt door serverproblemen.</translation>
 <translation id="1492417797159476138">Je hebt deze gebruikersnaam al opgeslagen voor deze site</translation>
+<translation id="1493287004536771723">Je volgt <ph name="SITE_NAME" /></translation>
 <translation id="1506061864768559482">Zoekmachine</translation>
 <translation id="1513352483775369820">Bookmarks en webgeschiedenis</translation>
 <translation id="1513858653616922153">Wachtwoord verwijderen</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">Bekijk en beheer opgeslagen wachtwoorden in je <ph name="BEGIN_LINK" />Google-account<ph name="END_LINK" /></translation>
 <translation id="2818669890320396765">Log in en zet de synchronisatie aan om op al je apparaten toegang tot je bookmarks te hebben</translation>
 <translation id="2827278682606527653">Feedkaartmenu halve hoogte</translation>
+<translation id="2830783625999891985">Content van klembord verborgen</translation>
 <translation id="2839327205551510876"><ph name="SITE_NAME" /> wordt niet meer gevolgd</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{1 dag geleden gecheckt}other{# dagen geleden gecheckt}}</translation>
 <translation id="2842985007712546952">Bovenliggende map</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB beschikbaar</translation>
 <translation id="3549657413697417275">Zoek in je geschiedenis</translation>
 <translation id="3557336313807607643">Toevoegen aan contacten</translation>
+<translation id="3563767357928833671">Content van klembord weergegeven</translation>
 <translation id="3566923219790363270">Chrome wordt nog voorbereid voor VR. Start Chrome later opnieuw op.</translation>
 <translation id="3568688522516854065">Log in en zet de synchronisatie aan om de tabbladen van je andere apparaten te bekijken</translation>
 <translation id="3587482841069643663">Alles</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Alles synchroniseren</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 en nog <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> andere}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 en nog <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> andere}}</translation>
 <translation id="4696983787092045100">Tekst naar je apparaten verzenden</translation>
+<translation id="4697543623252708062">Binnenkort zie je artikelen van <ph name="SITE_NAME" /> als je een nieuw tabblad opent. Je kunt de sites die je volgt, beheren via Gevolgde items beheren.</translation>
 <translation id="4699172675775169585">Gecachte afbeeldingen en bestanden</translation>
 <translation id="4714588616299687897">Bespaar tot 60% van je gegevens</translation>
 <translation id="4716066120200945007">JE VOLGT</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Een nieuw venster openen in de incognitomodus</translation>
 <translation id="8996847606757455498">Een andere provider kiezen</translation>
 <translation id="8998729206196772491">Je logt in met een account dat wordt beheerd door <ph name="MANAGED_DOMAIN" /> waarmee je de eigenaar beheer geeft over je Chrome-gegevens. Je gegevens worden permanent gekoppeld aan dit account. Als je uitlogt van Chrome, worden je gegevens van dit apparaat verwijderd. Ze blijven echter opgeslagen in je Google-account.</translation>
+<translation id="9000233047676755924">Je ziet nu artikelen van <ph name="SITE_NAME" /> als je een nieuw tabblad opent. Je kunt de sites die je volgt, beheren via Gevolgde items beheren.</translation>
 <translation id="9022774213089566801">Veelbezocht</translation>
 <translation id="9028914725102941583">Zet de synchronisatie aan om content op apparaten te delen</translation>
 <translation id="9040142327097499898">Meldingen zijn toegestaan. Locatie staat uit voor dit apparaat.</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 f5fd6b2..468ff49 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">“ਅੱਜ ਮੌਸਮ ਕਿਹੋ ਜਿਹਾ ਹੈ?” ਕਹਿ ਕੇ ਦੇਖੋ</translation>
 <translation id="1477626028522505441">ਸਰਵਰ ਸਮੱਸਿਆਵਾਂ ਦੇ ਕਾਰਨ <ph name="FILE_NAME" /> ਡਾਊਨਲੋਡ ਅਸਫ਼ਲ ਰਿਹਾ।</translation>
 <translation id="1492417797159476138">ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਇਸ ਸਾਈਟ ਲਈ ਇਹ ਵਰਤੋਂਕਾਰ ਨਾਮ ਰੱਖਿਅਤ ਕਰ ਚੁੱਕੇ ਹੋ</translation>
+<translation id="1493287004536771723">ਤੁਸੀਂ <ph name="SITE_NAME" /> ਦਾ ਅਨੁਸਰਣ ਕਰ ਰਹੇ ਹੋ</translation>
 <translation id="1506061864768559482">ਖੋਜ ਇੰਜਣ</translation>
 <translation id="1513352483775369820">ਬੁੱਕਮਾਰਕ ਅਤੇ ਵੈੱਬ ਇਤਿਹਾਸ</translation>
 <translation id="1513858653616922153">ਪਾਸਵਰਡ ਮਿਟਾਓ</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">ਆਪਣੇ <ph name="BEGIN_LINK" />Google ਖਾਤੇ<ph name="END_LINK" /> ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡ ਦੇਖੋ ਅਤੇ ਉਹਨਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation>
 <translation id="2818669890320396765">ਆਪਣੇ ਸਾਰੇ ਡੀਵਾਈਸਾਂ 'ਤੇ ਆਪਣੇ ਬੁੱਕਮਾਰਕ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਸਾਈਨ-ਇਨ ਕਰਕੇ ਸਮਕਾਲੀਕਰਨ ਚਾਲੂ ਕਰੋ</translation>
 <translation id="2827278682606527653">ਫ਼ੀਡ ਕਾਰਡ ਮੀਨੂ ਅੱਧਾ ਖੁੱਲ੍ਹਾ ਹੈ</translation>
+<translation id="2830783625999891985">ਕਲਿੱਪਬੋਰਡ ਦੀਆਂ ਸਮੱਗਰੀਆਂ ਲੁਕਾਈਆਂ ਗਈਆਂ</translation>
 <translation id="2839327205551510876"><ph name="SITE_NAME" /> ਦਾ ਅਨੁਸਰਣ ਬੰਦ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{1 ਦਿਨ ਪਹਿਲਾਂ ਜਾਂਚ ਕੀਤੀ ਗਈ}one{# ਦਿਨ ਪਹਿਲਾਂ ਜਾਂਚ ਕੀਤੀ ਗਈ}other{# ਦਿਨ ਪਹਿਲਾਂ ਜਾਂਚ ਕੀਤੀ ਗਈ}}</translation>
 <translation id="2842985007712546952">ਪੇਰੈਂਟ ਫੋਲਡਰ</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB ਉਪਲਬਧ ਹੈ</translation>
 <translation id="3549657413697417275">ਆਪਣਾ ਬ੍ਰਾਊਜ਼ਿੰਗ ਇਤਿਹਾਸ ਖੋਜੋ</translation>
 <translation id="3557336313807607643">ਸੰਪਰਕਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ</translation>
+<translation id="3563767357928833671">ਕਲਿੱਪਬੋਰਡ ਦੀਆਂ ਸਮੱਗਰੀਆਂ ਦਿਖਾਈਆਂ ਗਈਆਂ</translation>
 <translation id="3566923219790363270">Chrome ਹਾਲੇ ਵੀ VR ਲਈ ਤਿਆਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ। ਬਾਅਦ ਵਿੱਚ Chrome ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ</translation>
 <translation id="3568688522516854065">ਆਪਣੇ ਹੋਰ ਡੀਵਾਈਸਾਂ ਤੋਂ ਆਪਣੀਆਂ ਟੈਬਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਸਾਈਨ-ਇਨ ਕਰਕੇ ਸਮਕਾਲੀਕਰਨ ਚਾਲੂ ਕਰੋ</translation>
 <translation id="3587482841069643663">ਸਾਰੇ</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">ਸਭ ਕੁਝ ਸਿੰਕ ਕਰੋ</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 ਅਤੇ <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ਹੋਰ}one{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 ਅਤੇ <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ਹੋਰ}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 ਅਤੇ <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ਹੋਰ}}</translation>
 <translation id="4696983787092045100">ਲਿਖਤ ਨੂੰ ਆਪਣੇ ਡੀਵਾਈਸਾਂ 'ਤੇ ਭੇਜੋ</translation>
+<translation id="4697543623252708062">ਜਲਦ ਹੀ, ਤੁਹਾਨੂੰ ਨਵੀਂ ਟੈਬ ਖੋਲ੍ਹਣ 'ਤੇ <ph name="SITE_NAME" /> ਦੀਆਂ ਕਹਾਣੀਆਂ ਦਿਖਾਈ ਦੇਣਗੀਆਂ। ਤੁਸੀਂ 'ਅਨੁਸਰਣ ਕੀਤੀਆਂ ਸਾਈਟਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ' ਵਿੱਚ ਜਾ ਕੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਅਨੁਸਰਣ ਕੀਤੀਆਂ ਜਾ ਰਹੀਆਂ ਸਾਈਟਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰ ਸਕਦੇ ਹੋ।</translation>
 <translation id="4699172675775169585">ਕੈਚ ਕੀਤੇ ਚਿੱਤਰ ਅਤੇ ਫਾਈਲਾਂ</translation>
 <translation id="4714588616299687897">ਆਪਣੇ ਤਕਰੀਬਨ 60% ਡਾਟੇ ਦੀ ਬੱਚਤ ਕਰੋ</translation>
 <translation id="4716066120200945007">ਅਨੁਸਰਣ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">ਇਨਕੋਗਨਿਟੋ ਮੋਡ ਵਿੱਚ ਇੱਕ ਨਵੀਂ ਟੈਬ ਖੋਲ੍ਹੋ</translation>
 <translation id="8996847606757455498">ਕੋਈ ਹੋਰ ਪ੍ਰਦਾਨਕ ਚੁਣੋ</translation>
 <translation id="8998729206196772491">ਤੁਸੀਂ <ph name="MANAGED_DOMAIN" /> ਵੱਲੋਂ ਪ੍ਰਬੰਧਿਤ ਕੀਤੇ ਖਾਤੇ ਨਾਲ ਸਾਈਨ-ਇਨ ਕਰ ਰਹੇ ਹੋ ਅਤੇ ਉਸਦੇ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਆਪਣੇ Chrome ਡਾਟੇ ਦਾ ਕੰਟਰੋਲ ਦੇ ਰਹੇ ਹੋ। ਤੁਹਾਡਾ ਡਾਟਾ ਸਥਾਈ ਤੌਰ 'ਤੇ ਇਸ ਖਾਤੇ ਨਾਲ ਜੋੜ ਦਿੱਤਾ ਜਾਵੇਗਾ। Chrome ਤੋਂ ਸਾਈਨ-ਆਊਟ ਹੋਣ ਨਾਲ ਤੁਹਾਡਾ ਡਾਟਾ ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਪਰ ਇਹ ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਸਟੋਰ ਰਹੇਗਾ।</translation>
+<translation id="9000233047676755924">ਹੁਣ ਤੁਹਾਨੂੰ ਨਵੀਂ ਟੈਬ ਖੋਲ੍ਹਣ 'ਤੇ <ph name="SITE_NAME" /> ਦੀਆਂ ਕਹਾਣੀਆਂ ਦਿਖਾਈ ਦੇਣਗੀਆਂ। ਤੁਸੀਂ 'ਅਨੁਸਰਣ ਕੀਤੀਆਂ ਸਾਈਟਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ' ਵਿੱਚ ਜਾ ਕੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਅਨੁਸਰਣ ਕੀਤੀਆਂ ਜਾ ਰਹੀਆਂ ਸਾਈਟਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰ ਸਕਦੇ ਹੋ।</translation>
 <translation id="9022774213089566801">ਅਕਸਰ ਦੇਖੀਆਂ ਜਾਣ ਵਾਲੀਆਂ</translation>
 <translation id="9028914725102941583">ਡੀਵਾਈਸਾਂ ਵਿਚਾਲੇ ਸਾਂਝਾ ਕਰਨ ਲਈ ਸਮਕਾਲੀਕਰਨ ਚਾਲੂ ਕਰੋ</translation>
 <translation id="9040142327097499898">ਸੂਚਨਾਵਾਂ ਦਿਖਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ। ਇਸ ਡੀਵਾਈਸ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾ ਬੰਦ ਹੈ।</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 50f2978..685117d 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">Скажите, например, "Какая сейчас погода?"</translation>
 <translation id="1477626028522505441">Не удалось скачать файл <ph name="FILE_NAME" /> из-за неполадок на сервере.</translation>
 <translation id="1492417797159476138">Вы уже сохранили это имя пользователя для данного сайта.</translation>
+<translation id="1493287004536771723">Вы подписались на сайт "<ph name="SITE_NAME" />"</translation>
 <translation id="1506061864768559482">Поисковая система</translation>
 <translation id="1513352483775369820">Закладки и история поиска</translation>
 <translation id="1513858653616922153">Удалить пароль</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">Просматривать сохраненные пароли и управлять ими можно на странице <ph name="BEGIN_LINK" />Аккаунт Google<ph name="END_LINK" />.</translation>
 <translation id="2818669890320396765">Чтобы получить доступ к закладкам на всех устройствах, войдите в аккаунт и включите синхронизацию.</translation>
 <translation id="2827278682606527653">Меню карточки из ленты открыто наполовину</translation>
+<translation id="2830783625999891985">Содержимое буфера обмена скрыто</translation>
 <translation id="2839327205551510876">Подписка на "<ph name="SITE_NAME" />" отменена.</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{Проверено 1 день назад.}one{Проверено # день назад.}few{Проверено # дня назад.}many{Проверено # дней назад.}other{Проверено # дня назад.}}</translation>
 <translation id="2842985007712546952">Родительская папка</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775">Доступно <ph name="KILOBYTES" /> КБ</translation>
 <translation id="3549657413697417275">Поиск в истории</translation>
 <translation id="3557336313807607643">Добавить в контакты</translation>
+<translation id="3563767357928833671">Содержимое буфера обмена показано</translation>
 <translation id="3566923219790363270">Подготовка для VR ещё не завершена. Перезапустите Chrome позже.</translation>
 <translation id="3568688522516854065">Чтобы получить доступ к вкладкам на всех устройствах, войдите в аккаунт и включите синхронизацию.</translation>
 <translation id="3587482841069643663">Все</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Синхронизировать все</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> способ доставки}one{<ph name="SHIPPING_OPTION_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> способ доставки}few{<ph name="SHIPPING_OPTION_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> способа доставки}many{<ph name="SHIPPING_OPTION_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> способов доставки}other{<ph name="SHIPPING_OPTION_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> способа доставки}}</translation>
 <translation id="4696983787092045100">Отправить сообщения на свои устройства</translation>
+<translation id="4697543623252708062">Скоро, открывая новую вкладку, вы будете видеть статьи с сайта "<ph name="SITE_NAME" />". Вы можете настроить подписки по своему усмотрению в разделе "Управление подписками".</translation>
 <translation id="4699172675775169585">Изображения и другие файлы, сохраненные в кеше</translation>
 <translation id="4714588616299687897">Экономьте до 60% трафика</translation>
 <translation id="4716066120200945007">ВАШИ ПОДПИСКИ</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Открыть новое окно в режиме инкогнито</translation>
 <translation id="8996847606757455498">Выбрать другого поставщика</translation>
 <translation id="8998729206196772491">Вы входите в аккаунт, которым управляет администратор домена <ph name="MANAGED_DOMAIN" />. Он может контролировать ваши данные Chrome, которые теперь будут связаны с управляемым аккаунтом. При выходе из системы все данные Chrome, хранящиеся на этом устройстве, будут удалены, но останутся в вашем аккаунте Google.</translation>
+<translation id="9000233047676755924">Открыв новую вкладку, вы увидите статьи с сайта "<ph name="SITE_NAME" />". Вы можете настроить подписки по своему усмотрению в разделе "Управление подписками".</translation>
 <translation id="9022774213089566801">Часто посещаемые</translation>
 <translation id="9028914725102941583">Включите синхронизацию</translation>
 <translation id="9040142327097499898">Отправка уведомлений разрешена, но определение местоположения отключено.</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 4993a7b..9c87a702 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">Provo "Si është moti sot?"</translation>
 <translation id="1477626028522505441">Shkarkimi i <ph name="FILE_NAME" /> dështoi për shkak të problemeve të serverit.</translation>
 <translation id="1492417797159476138">E ke ruajtur tashmë këtë emër përdoruesi për këtë sajt</translation>
+<translation id="1493287004536771723">Po ndjek <ph name="SITE_NAME" /></translation>
 <translation id="1506061864768559482">Motori i kërkimit</translation>
 <translation id="1513352483775369820">Faqeshënuesit dhe historiku i uebit</translation>
 <translation id="1513858653616922153">Fshi fjalëkalimin</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">Shfaq dhe menaxho fjalëkalimet e ruajtura në <ph name="BEGIN_LINK" />llogarinë tënde të Google<ph name="END_LINK" /></translation>
 <translation id="2818669890320396765">Për të marrë faqeshënuesit në të gjitha pajisjet e tua, identifikohu dhe aktivizo sinkronizimin</translation>
 <translation id="2827278682606527653">Menyja e kartave të furnizimit në gjysmë lartësi</translation>
+<translation id="2830783625999891985">Përmbajtjet e kujtesës së fragmenteve janë fshehur</translation>
 <translation id="2839327205551510876">Ndjekja e <ph name="SITE_NAME" /> u anulua</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{Kontrolluar 1 ditë më parë}other{Kontrolluar # ditë më parë}}</translation>
 <translation id="2842985007712546952">Dosja mëmë</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB në dispozicion</translation>
 <translation id="3549657413697417275">Kërko në historikun tënd</translation>
 <translation id="3557336313807607643">Shto te kontaktet</translation>
+<translation id="3563767357928833671">Përmbajtjet e kujtesës së fragmenteve janë shfaqur</translation>
 <translation id="3566923219790363270">Chrome po përgatitet akoma për VR. Rinise Chrome më vonë.</translation>
 <translation id="3568688522516854065">Për të marrë skedat nga pajisjet e tjera të tua, identifikohu dhe aktivizo sinkronizimin</translation>
 <translation id="3587482841069643663">Të gjitha</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Sinkronizo gjithçka</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 dhe <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> tjetër}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 dhe <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> të tjera}}</translation>
 <translation id="4696983787092045100">Dërgo tekstin te pajisjet e tua</translation>
+<translation id="4697543623252708062">Së shpejti do të shikosh histori nga <ph name="SITE_NAME" /> kur të hapësh një skedë të re. Mund t'i kontrollosh sajtet që ndjek te "Menaxho ndjekjet".</translation>
 <translation id="4699172675775169585">Imazhet dhe skedarët në memorien specifike</translation>
 <translation id="4714588616299687897">Kurse deri në 60% të të dhënave të tua</translation>
 <translation id="4716066120200945007">PO NDJEK</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Hap një skedë të re në "Modalitetin e fshehtë"</translation>
 <translation id="8996847606757455498">Zgjidh një ofrues tjetër</translation>
 <translation id="8998729206196772491">Po identifikohesh me një llogari të menaxhuar nga <ph name="MANAGED_DOMAIN" /> dhe po i jep administratorit të saj kontroll mbi të dhënat e tua të Chrome. Duke dalë nga Chrome do të fshihen të dhënat e tua nga kjo pajisje, por do të mbeten të ruajtura në llogarinë tënde të Google.</translation>
+<translation id="9000233047676755924">Tani do të shikosh histori nga <ph name="SITE_NAME" /> kur të hapësh një skedë të re. Mund t'i kontrollosh sajtet që ndjek te "Menaxho ndjekjet".</translation>
 <translation id="9022774213089566801">Të vizituara shpesh</translation>
 <translation id="9028914725102941583">Aktivizo sinkronizimin për të ndarë mes pajisjeve</translation>
 <translation id="9040142327097499898">Njoftimet janë të lejuara. Vendndodhja është joaktive për këtë pajisje.</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 2bc9d4a..425652d 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
@@ -258,7 +258,7 @@
 <translation id="2704606927547763573">Kopierat</translation>
 <translation id="2707726405694321444">Uppdatera sidan</translation>
 <translation id="271033894570825754">Ny</translation>
-<translation id="2718352093833049315">Endast på Wi-Fi</translation>
+<translation id="2718352093833049315">Endast på wifi</translation>
 <translation id="2718846868787000099">Webbplatserna du besöker kan se dina inställningar, så att innehållet visas på önskat språk</translation>
 <translation id="2723001399770238859">ljud</translation>
 <translation id="2728754400939377704">Sortera efter webbplats</translation>
@@ -337,7 +337,7 @@
 <translation id="3232754137068452469">Webbapp</translation>
 <translation id="3236059992281584593">1 minut kvar</translation>
 <translation id="3244271242291266297">MM</translation>
-<translation id="3250563604907490871">Hämtningen av bildbeskrivningar fortsätter när enheten är ansluten till Wi-Fi</translation>
+<translation id="3250563604907490871">Hämtningen av bildbeskrivningar fortsätter när enheten är ansluten till wifi</translation>
 <translation id="3254409185687681395">Bokmärk sidan</translation>
 <translation id="3259831549858767975">Gör allt på sidan mindre</translation>
 <translation id="3264124641674805320">Så här laddar du ned innehåll att spara till senare</translation>
@@ -441,7 +441,7 @@
 <translation id="393697183122708255">Röstsökning är inte tillgängligt</translation>
 <translation id="3943557322767080599">Visa inloggningsmeddelanden i Chrome när du loggar in på ditt Google-konto</translation>
 <translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Sidan läses in i Chrome när den blir tillgänglig}other{Sidorna läses in i Chrome när de blir tillgängliga}}</translation>
-<translation id="3962957115499249330">Du får en avisering när nedladdningen startas via Wi-Fi.</translation>
+<translation id="3962957115499249330">Du får en avisering när nedladdningen startas via wifi.</translation>
 <translation id="3963007978381181125">Betalningsmetoder och adresser från Google Pay omfattas inte av kryptering med lösenfras. Endast personer som har ditt lösenord kan läsa dina krypterade uppgifter. Lösenfrasen skickas inte till och sparas inte av Google. Om du glömmer lösenfrasen måste du återställa synkroniseringen. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
 <translation id="3969142555815019568">Chrome kan inte kontrollera dina lösenord</translation>
 <translation id="3974987681202239636"><ph name="APP_NAME" /> öppnas i Chrome. Genom att fortsätta godkänner du <ph name="BEGIN_LINK1" />Googles användarvillkor<ph name="END_LINK1" /> och <ph name="BEGIN_LINK2" />de ytterligare användarvillkoren för Google Chrome och Chrome OS<ph name="END_LINK2" />. <ph name="BEGIN_LINK3" />Sekretessmeddelandet för Google-konton som hanteras med Family Link<ph name="END_LINK3" /> gäller också.</translation>
@@ -510,7 +510,7 @@
 <translation id="4487967297491345095">All appdata i Chrome raderas permanent. Detta omfattar alla filer, inställningar, konton, databaser osv.</translation>
 <translation id="449126573531210296">Kryptera synkroniserade lösenord med ditt Google-konto</translation>
 <translation id="4493497663118223949">Begränsat läge har aktiverats</translation>
-<translation id="4504667196171871375">Via Wi-Fi och mobildata</translation>
+<translation id="4504667196171871375">Via wifi och mobildata</translation>
 <translation id="4508528996305412043">Menyn med flödeskort är öppen</translation>
 <translation id="4508642716788467538">Välj språk</translation>
 <translation id="4513387527876475750">{DAYS,plural, =1{för # dag sedan}other{för # dagar sedan}}</translation>
@@ -853,7 +853,7 @@
 <translation id="6545017243486555795">Rensa all data</translation>
 <translation id="6560414384669816528">Sök med Sogou</translation>
 <translation id="656065428026159829">Visa fler</translation>
-<translation id="6565959834589222080">Wi-Fi används när det är tillgängligt</translation>
+<translation id="6565959834589222080">wifi används när det är tillgängligt</translation>
 <translation id="6566259936974865419">Du har sparat <ph name="GIGABYTES" /> GB med Chrome</translation>
 <translation id="6573096386450695060">Tillåt alltid</translation>
 <translation id="6573431926118603307">Här visas flikar som du har öppnat i Chrome på andra enheter.</translation>
@@ -1110,7 +1110,7 @@
 <translation id="8218052821161047641">Snabb sida</translation>
 <translation id="8218622182176210845">Hantera kontot</translation>
 <translation id="8223642481677794647">Menyn med flödeskort</translation>
-<translation id="8224471946457685718">Ladda ned artiklar för dig via Wi-Fi</translation>
+<translation id="8224471946457685718">Ladda ned artiklar för dig via wifi</translation>
 <translation id="8233540874193135768">Du behöver en enhet med kamera för att skanna en QR-kod.</translation>
 <translation id="8250920743982581267">Dokument</translation>
 <translation id="825412236959742607">Den här sidan använder för mycket minne, så en del innehåll har tagits bort.</translation>
@@ -1155,7 +1155,7 @@
 <translation id="8523928698583292556">Radera sparat lösenord</translation>
 <translation id="8540136935098276800">Ange en webbadress i rätt format</translation>
 <translation id="854522910157234410">Öppna sidan</translation>
-<translation id="8555836665334561807">På Wi-Fi</translation>
+<translation id="8555836665334561807">På wifi</translation>
 <translation id="8559990750235505898">Erbjud översättning av sidor till andra språk</translation>
 <translation id="8560602726703398413">Du hittar läslistan under Bokmärken</translation>
 <translation id="8562452229998620586">Sparade lösenord visas här.</translation>
@@ -1189,7 +1189,7 @@
 <translation id="8788968922598763114">Öppna den senast stängda fliken igen</translation>
 <translation id="8798449543960971550">Lästa</translation>
 <translation id="8812260976093120287">På vissa webbplatser kan du betala med ovanstående betalningsappar som stöds på enheten.</translation>
-<translation id="8814190375133053267">Wi-Fi</translation>
+<translation id="8814190375133053267">wifi</translation>
 <translation id="881688628773363275">Det går inte att förhandsgranska innehållet.</translation>
 <translation id="8820817407110198400">Bokmärken</translation>
 <translation id="883806473910249246">Ett fel uppstod när innehållet skulle laddas ned.</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 12051d1..0eee1b67 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">“இன்றைய வானிலை என்ன?” எனக் கூறுங்கள்</translation>
 <translation id="1477626028522505441">சேவையகச் சிக்கல்களால் <ph name="FILE_NAME" />ஐப் பதிவிறக்க முடியவில்லை.</translation>
 <translation id="1492417797159476138">இந்தத் தளத்தில் இந்தப் பயனர்பெயரை ஏற்கெனவே சேமித்துள்ளீர்கள்</translation>
+<translation id="1493287004536771723"><ph name="SITE_NAME" /> தளத்தைப் பின்தொடர்கிறீர்கள்</translation>
 <translation id="1506061864768559482">தேடல் இன்ஜின்</translation>
 <translation id="1513352483775369820">புத்தகக்குறிகளும் இணைய வரலாறும்</translation>
 <translation id="1513858653616922153">கடவுச்சொல்லை நீக்கு</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">உங்கள் <ph name="BEGIN_LINK" />Google கணக்கில்<ph name="END_LINK" /> சேமிக்கப்பட்ட கடவுச்சொற்களைப் பார்த்து, நிர்வகிக்கவும்</translation>
 <translation id="2818669890320396765">உங்கள் அனைத்துச் சாதனங்களிலும் புத்தகக்குறிகளைப் பெற, உள்நுழைந்து, ஒத்திசைவை இயக்கவும்</translation>
 <translation id="2827278682606527653">ஃபீட் கார்டு மெனு பாதி அளவிற்குத் திறக்கப்பட்டுள்ளது</translation>
+<translation id="2830783625999891985">கிளிப்போர்டில் உள்ளவை மறைக்கப்பட்டது</translation>
 <translation id="2839327205551510876"><ph name="SITE_NAME" /> தளத்தைப் பின்தொடர்வதை நிறுத்திவிட்டீர்கள்</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{சரிபார்த்தது: 1 நாளுக்கு முன்பு}other{சரிபார்த்தது: # நாட்களுக்கு முன்பு}}</translation>
 <translation id="2842985007712546952">மூலக் கோப்புறை</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> கி.பை. உள்ளது</translation>
 <translation id="3549657413697417275">உங்கள் வரலாற்றைத் தேடுக</translation>
 <translation id="3557336313807607643">தொடர்புகளில் சேர்</translation>
+<translation id="3563767357928833671">கிளிப்போர்டில் உள்ளவை காட்டப்படுகிறது</translation>
 <translation id="3566923219790363270">VRருக்காக Chrome இன்னமும் தயார்செய்கிறது. Chromeமைப் பின்னர் மீண்டும் தொடங்கவும்.</translation>
 <translation id="3568688522516854065">உங்கள் பிற சாதனங்களிலிருந்து தாவல்களைப் பெற, உள்நுழைந்து, ஒத்திசைவை இயக்கவும்</translation>
 <translation id="3587482841069643663">அனைத்தும்</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">அனைத்தையும் ஒத்திசை</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 மற்றும் <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> விருப்பம்}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 மற்றும் <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> விருப்பங்கள்}}</translation>
 <translation id="4696983787092045100">எனது சாதனங்களுக்கு உரைச் செய்தியை அனுப்பு</translation>
+<translation id="4697543623252708062">விரைவில், புதிய தாவலைத் திறக்கும்போது <ph name="SITE_NAME" /> தளத்தில் உள்ள கதைகள் காட்டப்படும். ‘பின்தொடர்பவற்றை நிர்வகியுங்கள்’ என்பதில் நீங்கள் பின்தொடரும் தளங்களைக் கட்டுப்படுத்தலாம்.</translation>
 <translation id="4699172675775169585">தற்காலிகமாகச் சேமிக்கப்பட்ட படங்கள் மற்றும் கோப்புகள்</translation>
 <translation id="4714588616299687897">தரவில் 60% வரை சேமியுங்கள்</translation>
 <translation id="4716066120200945007">பின்தொடர்பவை</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">புதிய தாவலை மறைநிலையில் திறக்கும்</translation>
 <translation id="8996847606757455498">மற்றொரு வழங்குநரைத் தேர்வுசெய்க</translation>
 <translation id="8998729206196772491"><ph name="MANAGED_DOMAIN" /> நிர்வகிக்கும் கணக்கில் உள்நுழைந்து, உங்கள் Chrome தரவு மீதான கட்டுப்பாட்டை அதன் நிர்வாகிக்கு வழங்குகிறீர்கள். இந்தக் கணக்குடன் தரவு நிரந்தரமாக இணைக்கப்படும். Chromeமிலிருந்து வெளியேறினால், இந்தச் சாதனத்திலிருந்து தரவு நீக்கப்படும், எனினும் உங்கள் Google கணக்கில் தரவு தொடர்ந்து இருக்கும்.</translation>
+<translation id="9000233047676755924">புதிய தாவலைத் திறக்கும்போது <ph name="SITE_NAME" /> தளத்தில் உள்ள கதைகள் இனி காட்டப்படும். ‘பின்தொடர்பவற்றை நிர்வகியுங்கள்’ என்பதில் நீங்கள் பின்தொடரும் தளங்களைக் கட்டுப்படுத்தலாம்.</translation>
 <translation id="9022774213089566801">அடிக்கடி பார்வையிட்டவை</translation>
 <translation id="9028914725102941583">பல சாதனங்களுக்கிடையில் பகிர ஒத்திசைவை ஆன் செய்யவும்</translation>
 <translation id="9040142327097499898">அறிவிப்புகள் அனுமதிக்கப்படுகின்றன. இந்தச் சாதனத்திற்கான இருப்பிடம் முடக்கப்பட்டுள்ளது.</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 45f1432..d7b05ec 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">"Bugün hava nasıl?" diye sormayı deneyin</translation>
 <translation id="1477626028522505441">Sunucu sorunları nedeniyle <ph name="FILE_NAME" /> dosyası indirilemedi.</translation>
 <translation id="1492417797159476138">Bu site için bu kullanıcı adını zaten kaydettiniz</translation>
+<translation id="1493287004536771723"><ph name="SITE_NAME" /> kaynağını takip ediyorsunuz</translation>
 <translation id="1506061864768559482">Arama motoru</translation>
 <translation id="1513352483775369820">Yer işaretleri ve web geçmişi</translation>
 <translation id="1513858653616922153">Şifreyi sil</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009"><ph name="BEGIN_LINK" />Google Hesabınızdaki<ph name="END_LINK" /> kayıtlı şifrelerinizi görüntüleyin ve yönetin.</translation>
 <translation id="2818669890320396765">Yer işaretlerinizi tüm cihazlarınızda almak için oturum açın ve senkronizasyonu etkinleştirin</translation>
 <translation id="2827278682606527653">Akış kartı menüsü yarıya kadar açık</translation>
+<translation id="2830783625999891985">Pano içerikleri gizlendi</translation>
 <translation id="2839327205551510876"><ph name="SITE_NAME" /> takibi bırakıldı</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{1 gün önce kontrol edildi}other{# gün önce kontrol edildi}}</translation>
 <translation id="2842985007712546952">Ana klasör</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB kullanılabilir</translation>
 <translation id="3549657413697417275">Geçmişinizde arayın</translation>
 <translation id="3557336313807607643">Kişilere ekle</translation>
+<translation id="3563767357928833671">Pano içerikleri gösteriliyor</translation>
 <translation id="3566923219790363270">Chrome hâlâ VR için hazırlanıyor. Chrome'u daha sonra yeniden başlatın.</translation>
 <translation id="3568688522516854065">Diğer cihazlarınızdaki sekmelerinize ulaşmak için oturum açın ve senkronizasyonu etkinleştirin</translation>
 <translation id="3587482841069643663">Tümü</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Her şeyi senkronize et</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 ve <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> seçenek daha}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 ve <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> seçenek daha}}</translation>
 <translation id="4696983787092045100">Cihazlarınıza mesaj gönderin</translation>
+<translation id="4697543623252708062">Yakında yeni sekme açtığınızda <ph name="SITE_NAME" /> kaynağından haberler göreceksiniz. Takipleri Yönet bölümünde, takip ettiğiniz siteleri kontrol edebilirsiniz.</translation>
 <translation id="4699172675775169585">Önbelleğe alınan resimler ve dosyalar</translation>
 <translation id="4714588616299687897">%60'a kadar veri tasarrufu sağlayın</translation>
 <translation id="4716066120200945007">TAKİP EDİLİYOR</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Gizli modda yeni bir sekme açar</translation>
 <translation id="8996847606757455498">Başka bir sağlayıcı seçin:</translation>
 <translation id="8998729206196772491"><ph name="MANAGED_DOMAIN" /> tarafından yönetilen bir hesapla oturum açıyorsunuz ve yöneticiye tüm Chrome verileriniz üzerinde denetim olanağı veriyorsunuz. Verileriniz kalıcı olarak bu hesaba bağlanacaktır. Chrome'da oturumu kapattığınızda verileriniz bu cihazdan silinir, ancak Google Hesabınızda kalmaya devam eder.</translation>
+<translation id="9000233047676755924">Artık yeni sekme açtığınızda <ph name="SITE_NAME" /> kaynağından haberler göreceksiniz. Takipleri Yönet bölümünde, takip ettiğiniz siteleri kontrol edebilirsiniz.</translation>
 <translation id="9022774213089566801">Sık ziyaret edilenler</translation>
 <translation id="9028914725102941583">Cihazlar arasında senkronizasyonu açın</translation>
 <translation id="9040142327097499898">Bildirimlere izin veriliyor. Konum özelliği bu cihazda kapalı.</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 d560f9cf..db6835f 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">Спробуйте запитати "Яка сьогодні погода?"</translation>
 <translation id="1477626028522505441">Файл <ph name="FILE_NAME" /> не завантажено через проблеми із сервером.</translation>
 <translation id="1492417797159476138">Ви вже зберегли це ім'я користувача для цього сайту</translation>
+<translation id="1493287004536771723">Ви підписалися на сайт <ph name="SITE_NAME" /></translation>
 <translation id="1506061864768559482">Пошукова система</translation>
 <translation id="1513352483775369820">Закладки й історія веб-пошуку</translation>
 <translation id="1513858653616922153">Видалити пароль</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">Переглядайте збережені паролі й керуйте ними в <ph name="BEGIN_LINK" />обліковому записі Google<ph name="END_LINK" /></translation>
 <translation id="2818669890320396765">Щоб мати доступ до закладок на всіх своїх пристроях, увійдіть в обліковий запис і ввімкніть синхронізацію</translation>
 <translation id="2827278682606527653">Меню картки зі стрічки відкрито на половину висоти</translation>
+<translation id="2830783625999891985">Вміст буфера обміну сховано</translation>
 <translation id="2839327205551510876">Підписку на сайт "<ph name="SITE_NAME" />" скасовано</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{Перевірено 1 день тому}one{Перевірено # день тому}few{Перевірено # дні тому}many{Перевірено # днів тому}other{Перевірено # дня тому}}</translation>
 <translation id="2842985007712546952">Батьківська папка</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775">Доступно <ph name="KILOBYTES" /> КБ</translation>
 <translation id="3549657413697417275">Пошук в історії</translation>
 <translation id="3557336313807607643">Додати до контактів</translation>
+<translation id="3563767357928833671">Показано вміст буфера обміну</translation>
 <translation id="3566923219790363270">Chrome готується до запуску VR. Перезапустіть Chrome пізніше.</translation>
 <translation id="3568688522516854065">Щоб мати доступ до вкладок з інших пристроїв, увійдіть в обліковий запис і ввімкніть синхронізацію</translation>
 <translation id="3587482841069643663">Все</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Синхронізувати все</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 і ще <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}one{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 і ще <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}few{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 і ще <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}many{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 і ще <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 і ще <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation>
 <translation id="4696983787092045100">Надіслати SMS на пристрої</translation>
+<translation id="4697543623252708062">Незабаром, відкривши нову вкладку, ви будете бачити історії із сайту <ph name="SITE_NAME" />. Сайти, на які ви підписалися, можна контролювати в розділі "Керувати підписками".</translation>
 <translation id="4699172675775169585">Кешовані зображення та файли</translation>
 <translation id="4714588616299687897">Заощаджуйте до 60% трафіку</translation>
 <translation id="4716066120200945007">ПІДПИСКИ</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Відкрити нове вікно в режимі анонімного перегляду</translation>
 <translation id="8996847606757455498">Вибрати іншого постачальника</translation>
 <translation id="8998729206196772491">Ви входите в обліковий запис, зареєстрований у домені <ph name="MANAGED_DOMAIN" />, і надаєте його адміністратору доступ до своїх даних Chrome. Ваші дані буде назавжди зв’язано з цим обліковим записом. Якщо ви вийдете з облікового запису в Chrome, дані буде видалено з цього пристрою, але вони залишаться у вашому обліковому записі Google.</translation>
+<translation id="9000233047676755924">Тепер, відкривши нову вкладку, ви будете бачити історії із сайту <ph name="SITE_NAME" />. Сайти, на які ви підписалися, можна контролювати в розділі "Керувати підписками".</translation>
 <translation id="9022774213089566801">Часто відвідувані</translation>
 <translation id="9028914725102941583">Увімкніть синхронізацію, щоб файли були доступними на всіх ваших пристроях</translation>
 <translation id="9040142327097499898">На цьому пристрої вимкнено геодані. Сповіщення дозволено.</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 de0dadf..bb722916 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">Hãy thử nói “Thời tiết hôm nay thế nào?”</translation>
 <translation id="1477626028522505441">Tải xuống <ph name="FILE_NAME" /> không thành công do sự cố máy chủ.</translation>
 <translation id="1492417797159476138">Bạn đã lưu tên người dùng này cho trang web này</translation>
+<translation id="1493287004536771723">Bạn đang theo dõi <ph name="SITE_NAME" /></translation>
 <translation id="1506061864768559482">Công cụ tìm kiếm</translation>
 <translation id="1513352483775369820">Dấu trang và lịch sử web</translation>
 <translation id="1513858653616922153">Xóa mật khẩu</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">Xem và quản lý các mật khẩu đã lưu trong <ph name="BEGIN_LINK" />Tài khoản Google<ph name="END_LINK" /> của bạn</translation>
 <translation id="2818669890320396765">Để sử dụng dấu trang trên tất cả các thiết bị, hãy đăng nhập và bật tính năng đồng bộ hóa</translation>
 <translation id="2827278682606527653">Trình đơn thẻ nguồn cấp dữ liệu mở ở nửa dưới của màn hình</translation>
+<translation id="2830783625999891985">Đã ẩn nội dung của bảng nhớ tạm</translation>
 <translation id="2839327205551510876">Đã ngừng theo dõi <ph name="SITE_NAME" /></translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{Đã kiểm tra 1 ngày trước}other{Đã kiểm tra # ngày trước}}</translation>
 <translation id="2842985007712546952">Thư mục mẹ</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775">Còn <ph name="KILOBYTES" /> KB</translation>
 <translation id="3549657413697417275">Tìm kiếm trong lịch sử duyệt web</translation>
 <translation id="3557336313807607643">Thêm vào danh bạ</translation>
+<translation id="3563767357928833671">Đã hiện nội dung của bảng nhớ tạm</translation>
 <translation id="3566923219790363270">Chrome vẫn đang chuẩn bị mô-đun Thực tế ảo. Hãy khởi động lại Chrome sau.</translation>
 <translation id="3568688522516854065">Để sử dụng các thẻ từ những thiết bị khác, hãy đăng nhập và bật tính năng đồng bộ hóa</translation>
 <translation id="3587482841069643663">Tất cả</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">Đồng bộ hóa mọi thứ</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 và <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> tùy chọn khác}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 và <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> tùy chọn khác}}</translation>
 <translation id="4696983787092045100">Gửi văn bản đến các thiết bị của bạn</translation>
+<translation id="4697543623252708062">Bạn sẽ sớm thấy các tin bài của <ph name="SITE_NAME" /> khi mở một thẻ mới. Bạn có thể kiểm soát các trang web mà mình theo dõi trong phần Quản lý lượt theo dõi.</translation>
 <translation id="4699172675775169585">Tệp và hình ảnh được lưu trong bộ nhớ đệm</translation>
 <translation id="4714588616299687897">Tiết kiệm tới 60% dữ liệu</translation>
 <translation id="4716066120200945007">ĐANG THEO DÕI</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">Mở thẻ mới trong chế độ Ẩn danh</translation>
 <translation id="8996847606757455498">Chọn nhà cung cấp khác</translation>
 <translation id="8998729206196772491">Bạn đang đăng nhập bằng tài khoản do <ph name="MANAGED_DOMAIN" /> quản lý và cấp cho quản trị viên quyền kiểm soát dữ liệu Chrome của bạn. Dữ liệu của bạn sẽ được liên kết vĩnh viễn với tài khoản này. Việc đăng xuất khỏi Chrome sẽ xóa dữ liệu của bạn khỏi thiết bị này nhưng dữ liệu sẽ vẫn được lưu trữ trong Tài khoản Google.</translation>
+<translation id="9000233047676755924">Giờ đây, bạn sẽ thấy các tin bài của <ph name="SITE_NAME" /> khi mở một thẻ mới. Bạn có thể kiểm soát các trang web mà mình theo dõi trong phần Quản lý lượt theo dõi.</translation>
 <translation id="9022774213089566801">Truy cập thường xuyên</translation>
 <translation id="9028914725102941583">Bật tính năng đồng bộ hóa để chia sẻ giữa các thiết bị</translation>
 <translation id="9040142327097499898">Cho phép thông báo. Đã tắt vị trí đối với thiết bị này.</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 ce4873912..386ef70 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">嘗試說「今日天氣點呀?」</translation>
 <translation id="1477626028522505441">伺服器發生問題,因此無法下載 <ph name="FILE_NAME" />。</translation>
 <translation id="1492417797159476138">您已為此網站儲存此使用者名稱</translation>
+<translation id="1493287004536771723">您正在追蹤「<ph name="SITE_NAME" />」</translation>
 <translation id="1506061864768559482">搜尋引擎</translation>
 <translation id="1513352483775369820">書籤和網頁記錄</translation>
 <translation id="1513858653616922153">刪除密碼</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">查看和管理儲存在 <ph name="BEGIN_LINK" />Google 帳戶<ph name="END_LINK" />中的密碼</translation>
 <translation id="2818669890320396765">如要將書籤同步到所有裝置,請登入並開啟同步處理功能</translation>
 <translation id="2827278682606527653">Feed card menu half height</translation>
+<translation id="2830783625999891985">隱藏咗剪貼簿嘅內容</translation>
 <translation id="2839327205551510876">已取消追蹤 <ph name="SITE_NAME" /></translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{曾在 1 天前檢查}other{曾在 # 天前檢查}}</translation>
 <translation id="2842985007712546952">上層資料夾</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775">可用空間:<ph name="KILOBYTES" /> KB</translation>
 <translation id="3549657413697417275">搜尋你的記錄</translation>
 <translation id="3557336313807607643">新增至通訊錄</translation>
+<translation id="3563767357928833671">顯示咗剪貼簿嘅內容</translation>
 <translation id="3566923219790363270">Chrome 仍在準備 VR。請稍後再重新啟動 Chrome。</translation>
 <translation id="3568688522516854065">如要取得其他裝置上的分頁,請登入並開啟同步處理功能</translation>
 <translation id="3587482841069643663">全部</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">同步處理所有資料</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 和另外 <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> 種運送方式}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 和另外 <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> 種運送方式}}</translation>
 <translation id="4696983787092045100">將文字傳送至您的裝置</translation>
+<translation id="4697543623252708062">不久後,您將會在開啟新分頁時看到 <ph name="SITE_NAME" /> 的內容。您可在「管理追蹤」中管理目前追蹤的網站。</translation>
 <translation id="4699172675775169585">快取圖片和檔案</translation>
 <translation id="4714588616299687897">節省高達 60% 數據用量</translation>
 <translation id="4716066120200945007">正在追蹤</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">在無痕模式中開啟新分頁</translation>
 <translation id="8996847606757455498">選擇其他供應商</translation>
 <translation id="8998729206196772491">您即將登入由 <ph name="MANAGED_DOMAIN" /> 管理的帳戶,並讓帳戶管理員控制您的 Chrome 資料。您的資料將與這個帳戶建立永久連結。如果您登出 Chrome,系統將刪除此裝置上的資料,但這些資料仍會保留在您的 Google 帳戶中。</translation>
+<translation id="9000233047676755924">您將會在開啟新分頁時看到 <ph name="SITE_NAME" /> 的內容。您可在「管理追蹤」中管理目前追蹤的網站。</translation>
 <translation id="9022774213089566801">經常瀏覽</translation>
 <translation id="9028914725102941583">開啟同步功能,即可在所有裝置上分享內容</translation>
 <translation id="9040142327097499898">允許顯示通知。此裝置的位置資訊功能已關閉。</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 528ed10..741597ac 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
@@ -76,6 +76,7 @@
 <translation id="147113415845704694">試著說出「今天天氣如何?」</translation>
 <translation id="1477626028522505441">伺服器發生問題,因此無法下載 <ph name="FILE_NAME" />。</translation>
 <translation id="1492417797159476138">你已在這個網站上儲存此使用者名稱</translation>
+<translation id="1493287004536771723">你正在追蹤「<ph name="SITE_NAME" />」</translation>
 <translation id="1506061864768559482">搜尋引擎</translation>
 <translation id="1513352483775369820">書籤與網頁記錄</translation>
 <translation id="1513858653616922153">刪除密碼</translation>
@@ -275,6 +276,7 @@
 <translation id="281504910091592009">你可以查看及管理 <ph name="BEGIN_LINK" />Google 帳戶<ph name="END_LINK" />中儲存的密碼</translation>
 <translation id="2818669890320396765">如要將書籤同步到所有裝置,請登入並開啟同步處理功能</translation>
 <translation id="2827278682606527653">Feed card menu half height</translation>
+<translation id="2830783625999891985">已隱藏剪貼簿內容</translation>
 <translation id="2839327205551510876">已取消追蹤「<ph name="SITE_NAME" />」</translation>
 <translation id="2841216154655874070">{NUM_DAYS,plural, =1{已在 1 天前檢查}other{已在 # 天前檢查}}</translation>
 <translation id="2842985007712546952">上層資料夾</translation>
@@ -390,6 +392,7 @@
 <translation id="3542235761944717775">可用空間:<ph name="KILOBYTES" /> KB</translation>
 <translation id="3549657413697417275">搜尋你的記錄</translation>
 <translation id="3557336313807607643">新增為聯絡人</translation>
+<translation id="3563767357928833671">已顯示剪貼簿內容</translation>
 <translation id="3566923219790363270">Chrome 仍在準備 VR 模組。請稍後再重新啟動 Chrome。</translation>
 <translation id="3568688522516854065">如要存取你在其他裝置上開啟的分頁,請登入並開啟同步處理功能</translation>
 <translation id="3587482841069643663">全部</translation>
@@ -542,6 +545,7 @@
 <translation id="4684427112815847243">同步處理所有資料</translation>
 <translation id="4695891336199304370">{SHIPPING_OPTIONS,plural, =1{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 和另外 <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> 種運送方式}other{<ph name="SHIPPING_OPTION_PREVIEW" />\u2026 和另外 <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> 種運送方式}}</translation>
 <translation id="4696983787092045100">將文字傳送到你的裝置</translation>
+<translation id="4697543623252708062">不久後,你就會在開啟新分頁時看到「<ph name="SITE_NAME" />」的內容。你可以在「管理追蹤項目」中管理目前追蹤的網站。</translation>
 <translation id="4699172675775169585">快取圖片和檔案</translation>
 <translation id="4714588616299687897">最多可減少 60% 的數據流量</translation>
 <translation id="4716066120200945007">追蹤中</translation>
@@ -1214,6 +1218,7 @@
 <translation id="8993760627012879038">在無痕模式下開啟新分頁</translation>
 <translation id="8996847606757455498">選擇其他供應商</translation>
 <translation id="8998729206196772491">您即將使用由 <ph name="MANAGED_DOMAIN" /> 所管理的帳戶登入,並授權該網域的管理員控管您的 Chrome 資料。您的資料會與這個帳戶建立永久連結。登出 Chrome 後,系統會將您的資料從這個裝置上刪除,但繼續保留在您的 Google 帳戶中。</translation>
+<translation id="9000233047676755924">往後開啟新分頁時,你就會看到「<ph name="SITE_NAME" />」的內容。你可以在「管理追蹤項目」中管理目前追蹤的網站。</translation>
 <translation id="9022774213089566801">經常造訪</translation>
 <translation id="9028914725102941583">開啟同步功能即可將內容分享至其他裝置</translation>
 <translation id="9040142327097499898">允許顯示通知。這部裝置的定位功能已關閉。</translation>
diff --git a/chrome/browser/ui/app_list/app_service/app_service_app_item.cc b/chrome/browser/ui/app_list/app_service/app_service_app_item.cc
index f26d2b4..4084a3b 100644
--- a/chrome/browser/ui/app_list/app_service/app_service_app_item.cc
+++ b/chrome/browser/ui/app_list/app_service/app_service_app_item.cc
@@ -14,9 +14,9 @@
 #include "chrome/browser/apps/app_service/app_service_proxy.h"
 #include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
 #include "chrome/browser/apps/app_service/launch_utils.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager.h"
+#include "chrome/browser/ash/remote_apps/remote_apps_manager_factory.h"
 #include "chrome/browser/chromeos/crostini/crostini_util.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager.h"
-#include "chrome/browser/chromeos/remote_apps/remote_apps_manager_factory.h"
 #include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
 #include "chrome/browser/ui/app_list/app_service/app_service_context_menu.h"
 #include "chrome/browser/ui/ash/launcher/chrome_shelf_controller.h"
diff --git a/chrome/browser/ui/chrome_select_file_policy.cc b/chrome/browser/ui/chrome_select_file_policy.cc
index 23e2f5ca..7ad731d 100644
--- a/chrome/browser/ui/chrome_select_file_policy.cc
+++ b/chrome/browser/ui/chrome_select_file_policy.cc
@@ -9,10 +9,10 @@
 #include "base/logging.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/infobars/infobar_service.h"
+#include "chrome/browser/infobars/simple_alert_infobar_creator.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/infobars/core/infobar_delegate.h"
-#include "components/infobars/core/simple_alert_infobar_delegate.h"
 #include "components/prefs/pref_service.h"
 #include "ui/base/l10n/l10n_util.h"
 
@@ -33,7 +33,7 @@
     InfoBarService* infobar_service =
         InfoBarService::FromWebContents(source_contents_);
     if (infobar_service) {
-      SimpleAlertInfoBarDelegate::Create(
+      CreateSimpleAlertInfoBar(
           infobar_service,
           infobars::InfoBarDelegate::FILE_ACCESS_DISABLED_INFOBAR_DELEGATE,
           nullptr,
diff --git a/chrome/browser/ui/page_info/chrome_page_info_ui_delegate.cc b/chrome/browser/ui/page_info/chrome_page_info_ui_delegate.cc
index 3582510..a464e077 100644
--- a/chrome/browser/ui/page_info/chrome_page_info_ui_delegate.cc
+++ b/chrome/browser/ui/page_info/chrome_page_info_ui_delegate.cc
@@ -30,6 +30,10 @@
 bool ChromePageInfoUiDelegate::IsBlockAutoPlayEnabled() {
   return profile_->GetPrefs()->GetBoolean(prefs::kBlockAutoplayEnabled);
 }
+
+bool ChromePageInfoUiDelegate::ShouldShowSiteSettings() {
+  return !profile_->IsGuestSession();
+}
 #endif
 
 bool ChromePageInfoUiDelegate::ShouldShowAllow(ContentSettingsType type) {
diff --git a/chrome/browser/ui/page_info/chrome_page_info_ui_delegate.h b/chrome/browser/ui/page_info/chrome_page_info_ui_delegate.h
index 2f2cad08..c03301c 100644
--- a/chrome/browser/ui/page_info/chrome_page_info_ui_delegate.h
+++ b/chrome/browser/ui/page_info/chrome_page_info_ui_delegate.h
@@ -18,6 +18,7 @@
   // PageInfoUiDelegate implementation
 #if !defined(OS_ANDROID)
   bool IsBlockAutoPlayEnabled() override;
+  bool ShouldShowSiteSettings() override;
 #endif
   permissions::PermissionResult GetPermissionStatus(
       ContentSettingsType type) override;
diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/startup/bad_flags_prompt.cc
index 49e94378..c8d18ff 100644
--- a/chrome/browser/ui/startup/bad_flags_prompt.cc
+++ b/chrome/browser/ui/startup/bad_flags_prompt.cc
@@ -16,6 +16,7 @@
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/infobars/infobar_service.h"
+#include "chrome/browser/infobars/simple_alert_infobar_creator.h"
 #include "chrome/browser/ui/simple_message_box.h"
 #include "chrome/common/chrome_paths.h"
 #include "chrome/common/chrome_switches.h"
@@ -24,7 +25,6 @@
 #include "components/autofill/core/common/autofill_switches.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_switches.h"
 #include "components/infobars/core/infobar_delegate.h"
-#include "components/infobars/core/simple_alert_infobar_delegate.h"
 #include "components/nacl/common/buildflags.h"
 #include "components/nacl/common/nacl_switches.h"
 #include "components/network_session_configurator/common/network_switches.h"
@@ -168,7 +168,7 @@
   // animate the infobar to reduce noise in perf benchmarks because they pass
   // --ignore-certificate-errors-spki-list.  This infobar only appears at
   // startup so the animation isn't visible to users anyway.
-  SimpleAlertInfoBarDelegate::Create(
+  CreateSimpleAlertInfoBar(
       InfoBarService::FromWebContents(web_contents),
       infobars::InfoBarDelegate::BAD_FLAGS_INFOBAR_DELEGATE, nullptr,
       l10n_util::GetStringFUTF16(message_id, base::UTF8ToUTF16(flag)),
diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
index 5d76ed5..1c4e80b 100644
--- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
@@ -27,6 +27,7 @@
 #include "chrome/browser/defaults.h"
 #include "chrome/browser/extensions/extension_checkup.h"
 #include "chrome/browser/infobars/infobar_service.h"
+#include "chrome/browser/infobars/simple_alert_infobar_creator.h"
 #include "chrome/browser/obsolete_system/obsolete_system.h"
 #include "chrome/browser/prefs/session_startup_pref.h"
 #include "chrome/browser/profiles/profile.h"
@@ -644,7 +645,7 @@
         // Show the experimental lacros info bar. auto_expire must be set to
         // false, since otherwise an automated navigation [which can happen at
         // launch] will cause the info bar to disappear.
-        SimpleAlertInfoBarDelegate::Create(
+        CreateSimpleAlertInfoBar(
             infobar_service,
             infobars::InfoBarDelegate::EXPERIMENTAL_INFOBAR_DELEGATE_LACROS,
             /*vector_icon=*/nullptr,
diff --git a/chrome/browser/ui/views/accessibility/caption_bubble_controller_views.cc b/chrome/browser/ui/views/accessibility/caption_bubble_controller_views.cc
index abebbf7e..a1d9d0e4 100644
--- a/chrome/browser/ui/views/accessibility/caption_bubble_controller_views.cc
+++ b/chrome/browser/ui/views/accessibility/caption_bubble_controller_views.cc
@@ -7,9 +7,13 @@
 #include <memory>
 #include <string>
 
+#include "base/bind.h"
 #include "chrome/browser/accessibility/caption_controller.h"
 #include "chrome/browser/accessibility/caption_controller_factory.h"
 #include "chrome/browser/accessibility/caption_host_impl.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "components/live_caption/views/caption_bubble.h"
 #include "components/live_caption/views/caption_bubble_model.h"
 #include "content/public/browser/web_contents.h"
@@ -97,18 +101,19 @@
     CaptionHostImpl* caption_host_impl) {
   if (!caption_bubble_models_.count(caption_host_impl)) {
     content::WebContents* web_contents = caption_host_impl->GetWebContents();
-    views::Widget* context =
+    views::Widget* context_widget =
         web_contents ? views::Widget::GetTopLevelWidgetForNativeView(
                            web_contents->GetNativeView())
                      : nullptr;
-
     base::Optional<gfx::Rect> context_bounds = base::nullopt;
-    if (context)
-      context_bounds = context->GetClientAreaBoundsInScreen();
-
+    if (context_widget)
+      context_bounds = context_widget->GetClientAreaBoundsInScreen();
     caption_bubble_models_.emplace(
         caption_host_impl,
-        std::make_unique<CaptionBubbleModel>(context_bounds));
+        std::make_unique<CaptionBubbleModel>(
+            context_bounds,
+            base::BindRepeating(&CaptionBubbleControllerViews::ActivateContext,
+                                base::Unretained(this), web_contents)));
   }
 
   CaptionBubbleModel* caption_bubble_model =
@@ -119,6 +124,23 @@
   }
 }
 
+void CaptionBubbleControllerViews::ActivateContext(
+    content::WebContents* web_contents) {
+  if (!web_contents)
+    return;
+  // Activate the web contents and the browser window that the web contents is
+  // in. Order matters: web contents needs to be active in order for the widget
+  // getter to work.
+  Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
+  TabStripModel* tab_strip_model = browser->tab_strip_model();
+  int index = tab_strip_model->GetIndexOfWebContents(web_contents);
+  tab_strip_model->ActivateTabAt(index);
+  views::Widget* context_widget = views::Widget::GetTopLevelWidgetForNativeView(
+      web_contents->GetNativeView());
+  if (context_widget)
+    context_widget->Activate();
+}
+
 bool CaptionBubbleControllerViews::IsWidgetVisibleForTesting() {
   return caption_widget_ && caption_widget_->IsVisible();
 }
diff --git a/chrome/browser/ui/views/accessibility/caption_bubble_controller_views.h b/chrome/browser/ui/views/accessibility/caption_bubble_controller_views.h
index de4b448c..7f917c4 100644
--- a/chrome/browser/ui/views/accessibility/caption_bubble_controller_views.h
+++ b/chrome/browser/ui/views/accessibility/caption_bubble_controller_views.h
@@ -11,6 +11,10 @@
 
 #include "chrome/browser/ui/caption_bubble_controller.h"
 
+namespace content {
+class WebContents;
+}
+
 namespace views {
 class Widget;
 }
@@ -62,6 +66,10 @@
   // already exist.
   void SetActiveModel(CaptionHostImpl* caption_host_impl);
 
+  // A callback passed to the CaptionBubbleModel which is called when the
+  // BackToTab button is clicked in the CaptionBubble.
+  void ActivateContext(content::WebContents* web_contents);
+
   bool IsWidgetVisibleForTesting() override;
   std::string GetBubbleLabelTextForTesting() override;
 
diff --git a/chrome/browser/ui/views/accessibility/caption_bubble_controller_views_browsertest.cc b/chrome/browser/ui/views/accessibility/caption_bubble_controller_views_browsertest.cc
index 047e5e2..8e7f4deee 100644
--- a/chrome/browser/ui/views/accessibility/caption_bubble_controller_views_browsertest.cc
+++ b/chrome/browser/ui/views/accessibility/caption_bubble_controller_views_browsertest.cc
@@ -13,6 +13,7 @@
 #include "chrome/browser/accessibility/caption_host_impl.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_commands.h"
+#include "chrome/browser/ui/browser_tabstrip.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/common/caption.mojom.h"
 #include "chrome/test/base/in_process_browser_test.h"
@@ -77,6 +78,11 @@
                : "";
   }
 
+  views::Button* GetBackToTabButton() {
+    return controller_ ? controller_->caption_bubble_->back_to_tab_button_
+                       : nullptr;
+  }
+
   views::Button* GetCloseButton() {
     return controller_ ? controller_->caption_bubble_->close_button_ : nullptr;
   }
@@ -1027,4 +1033,16 @@
             base::UTF16ToUTF8(GetTitle()->GetText()));
 }
 
+IN_PROC_BROWSER_TEST_F(CaptionBubbleControllerViewsTest,
+                       BackToTabButtonActivatesTab) {
+  OnPartialTranscription("Whale sharks are the world's largest fish.");
+  chrome::AddTabAt(browser(), GURL(), -1, true);
+  browser()->tab_strip_model()->ActivateTabAt(1);
+  EXPECT_EQ(1, browser()->tab_strip_model()->active_index());
+  ClickButton(GetBackToTabButton());
+  EXPECT_EQ(0, browser()->tab_strip_model()->active_index());
+  // TODO(crbug.com/1055150): Test that browser window is active. It works in
+  // app but the tests aren't working.
+}
+
 }  // namespace captions
diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/browser/ui/views/page_info/page_info_main_view.cc
index af10fd1c..8249e04 100644
--- a/chrome/browser/ui/views/page_info/page_info_main_view.cc
+++ b/chrome/browser/ui/views/page_info/page_info_main_view.cc
@@ -6,7 +6,6 @@
 
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
-#include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/reputation/safety_tip_ui_helper.h"
 #include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/views/accessibility/non_accessible_image_view.h"
@@ -15,6 +14,7 @@
 #include "chrome/browser/ui/views/page_info/chosen_object_view.h"
 #include "chrome/browser/vr/vr_tab_helper.h"
 #include "chrome/common/url_constants.h"
+#include "components/page_info/page_info_ui_delegate.h"
 #include "components/strings/grit/components_chromium_strings.h"
 #include "components/strings/grit/components_strings.h"
 #include "content/public/browser/browser_task_traits.h"
@@ -55,8 +55,7 @@
 }  // namespace
 
 PageInfoMainView::PageInfoMainView(PageInfo* presenter,
-                                   PageInfoUiDelegate* ui_delegate,
-                                   Profile* profile)
+                                   PageInfoUiDelegate* ui_delegate)
     : presenter_(presenter), ui_delegate_(ui_delegate) {
   ChromeLayoutProvider* layout_provider = ChromeLayoutProvider::Get();
 
@@ -87,16 +86,14 @@
   layout->StartRow(views::GridLayout::kFixedSize, kColumnId);
   site_settings_view_ = layout->AddView(CreateContainerView());
 
-  if (!profile->IsGuestSession()) {
-    layout->StartRowWithPadding(views::GridLayout::kFixedSize, kColumnId,
-                                views::GridLayout::kFixedSize, 0);
-
+  if (ui_delegate_->ShouldShowSiteSettings()) {
+    layout->StartRow(views::GridLayout::kFixedSize, kColumnId);
     const std::u16string& tooltip =
         l10n_util::GetStringUTF16(IDS_PAGE_INFO_SITE_SETTINGS_TOOLTIP);
-    site_settings_link = layout->AddView(std::make_unique<PageInfoHoverButton>(
+    site_settings_link_ = layout->AddView(std::make_unique<PageInfoHoverButton>(
         base::BindRepeating(
             [](PageInfoMainView* view) {
-              view->HandleMoreInfoRequest(view->site_settings_link);
+              view->HandleMoreInfoRequest(view->site_settings_link_);
             },
             this),
         PageInfoUI::GetSiteSettingsIcon(), IDS_PAGE_INFO_SITE_SETTINGS_LINK,
diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.h b/chrome/browser/ui/views/page_info/page_info_main_view.h
index dc2e4e8..7c6e0ee0 100644
--- a/chrome/browser/ui/views/page_info/page_info_main_view.h
+++ b/chrome/browser/ui/views/page_info/page_info_main_view.h
@@ -15,8 +15,6 @@
 #include "content/public/browser/web_contents_observer.h"
 #include "ui/views/view.h"
 
-class Profile;
-
 // The main view of the page info, contains security information, permissions
 // and  site-related settings. This is used in the experimental
 // PageInfoNewBubbleView (under a flag PageInfoV2Desktop).
@@ -28,9 +26,7 @@
   // The width of the column size for permissions and chosen object icons.
   static constexpr int kIconColumnWidth = 16;
 
-  PageInfoMainView(PageInfo* presenter,
-                   PageInfoUiDelegate* ui_delegate,
-                   Profile* profile);
+  PageInfoMainView(PageInfo* presenter, PageInfoUiDelegate* ui_delegate);
   ~PageInfoMainView() override;
 
   enum PageInfoBubbleViewID {
@@ -119,7 +115,7 @@
   PageInfoHoverButton* certificate_button_ = nullptr;
 
   // The button that opens up "Site Settings".
-  views::View* site_settings_link = nullptr;
+  views::View* site_settings_link_ = nullptr;
 
   // The view that contains the "Permissions" table of the bubble.
   views::View* permissions_view_ = nullptr;
diff --git a/chrome/browser/ui/views/page_info/page_info_new_bubble_view.cc b/chrome/browser/ui/views/page_info/page_info_new_bubble_view.cc
index 8f45fbc..8b9678f0 100644
--- a/chrome/browser/ui/views/page_info/page_info_new_bubble_view.cc
+++ b/chrome/browser/ui/views/page_info/page_info_new_bubble_view.cc
@@ -64,8 +64,8 @@
   SetLayoutManager(std::make_unique<views::BoxLayout>(
       views::BoxLayout::Orientation::kVertical));
   page_container_ = AddChildView(std::make_unique<PageSwitcherView>());
-  page_container_->SwitchToPage(std::make_unique<PageInfoMainView>(
-      presenter_.get(), ui_delegate_.get(), profile));
+  page_container_->SwitchToPage(
+      std::make_unique<PageInfoMainView>(presenter_.get(), ui_delegate_.get()));
   SizeToContents();
 }
 
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view_base.cc b/chrome/browser/ui/views/profiles/profile_menu_view_base.cc
index 2586ff9..b4f56811 100644
--- a/chrome/browser/ui/views/profiles/profile_menu_view_base.cc
+++ b/chrome/browser/ui/views/profiles/profile_menu_view_base.cc
@@ -385,11 +385,10 @@
 void BuildProfileBackgroundContainer(
     views::View* parent,
     std::unique_ptr<views::View> heading_label,
-    base::Optional<SkColor> background_color,
+    SkColor background_color,
     std::unique_ptr<views::View> avatar_image_view,
     std::unique_ptr<views::View> edit_button,
     const ui::ThemedVectorIcon& avatar_header_art) {
-
   views::View* profile_background_container =
       parent->AddChildView(std::make_unique<views::View>());
 
@@ -405,7 +404,9 @@
       ->SetOrientation(views::LayoutOrientation::kHorizontal)
       .SetCrossAxisAlignment(views::LayoutAlignment::kEnd)
       .SetInteriorMargin(background_container_insets);
-  if (background_color.has_value()) {
+
+  // Show a colored background iff there is no art.
+  if (avatar_header_art.empty()) {
     // The bottom background edge should match the center of the identity image.
     gfx::Insets background_insets(0, 0, /*bottom=*/kHalfOfAvatarImageViewSize,
                                   0);
@@ -413,8 +414,9 @@
     profile_background_container->SetBackground(
         views::CreateBackgroundFromPainter(
             views::Painter::CreateSolidRoundRectPainter(
-                background_color.value(), /*radius=*/0, background_insets)));
+                background_color, /*radius=*/0, background_insets)));
   } else {
+    DCHECK_EQ(SK_ColorTRANSPARENT, background_color);
     profile_background_container->SetBackground(
         views::CreateThemedVectorIconBackground(profile_background_container,
                                                 avatar_header_art));
@@ -633,13 +635,6 @@
     return;
   }
 
-  base::Optional<SkColor> background_color;
-  // Only show a colored background when there is an edit button (this
-  // coincides with the profile being a real profile that can be edited).
-  if (edit_button_params.has_value()) {
-    background_color = profile_background_color;
-  }
-
   std::unique_ptr<views::Label> heading_label;
   if (!profile_name.empty()) {
     views::Label::CustomFont font = {
@@ -653,10 +648,10 @@
         views::kFlexBehaviorKey,
         views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToZero,
                                  views::MaximumFlexSizeRule::kUnbounded));
-    if (background_color) {
+    if (avatar_header_art.empty()) {
       heading_label->SetAutoColorReadabilityEnabled(false);
       heading_label->SetEnabledColor(
-          GetProfileForegroundTextColor(*background_color));
+          GetProfileForegroundTextColor(profile_background_color));
     }
   }
 
@@ -667,13 +662,14 @@
                             base::Unretained(this),
                             std::move(edit_button_params->edit_action)),
         *edit_button_params->edit_icon, edit_button_params->edit_tooltip_text,
-        background_color.value_or(SK_ColorTRANSPARENT));
+        avatar_header_art.empty() ? profile_background_color
+                                  : SK_ColorTRANSPARENT);
   }
 
   BuildProfileBackgroundContainer(
       /*parent=*/identity_info_container_, std::move(heading_label),
-      background_color,
-      std::move(avatar_image_view), std::move(edit_button), avatar_header_art);
+      profile_background_color, std::move(avatar_image_view),
+      std::move(edit_button), avatar_header_art);
   BuildProfileTitleAndSubtitle(/*parent=*/identity_info_container_, title,
                                subtitle);
 }
diff --git a/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc
new file mode 100644
index 0000000..5b68fcb
--- /dev/null
+++ b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc
@@ -0,0 +1,481 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h"
+
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/profiles/profile_attributes_entry.h"
+#include "chrome/browser/profiles/profile_attributes_storage.h"
+#include "chrome/browser/profiles/profile_manager.h"
+#include "chrome/browser/profiles/profile_window.h"
+#include "chrome/browser/profiles/profiles_state.h"
+#include "chrome/browser/signin/dice_tab_helper.h"
+#include "chrome/browser/signin/identity_manager_factory.h"
+#include "chrome/browser/themes/theme_properties.h"
+#include "chrome/browser/themes/theme_service.h"
+#include "chrome/browser/themes/theme_service_factory.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
+#include "chrome/browser/ui/views/frame/toolbar_button_provider.h"
+#include "chrome/browser/ui/views/profiles/avatar_toolbar_button.h"
+#include "chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller.h"
+#include "chrome/browser/ui/views/profiles/profile_customization_bubble_view.h"
+#include "chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.h"
+#include "chrome/browser/ui/webui/signin/dice_turn_sync_on_helper.h"
+#include "chrome/browser/ui/webui/signin/sync_confirmation_ui.h"
+#include "chrome/common/pref_names.h"
+#include "chrome/common/webui_url_constants.h"
+#include "components/signin/public/identity_manager/account_info.h"
+#include "components/web_modal/web_contents_modal_dialog_manager.h"
+#include "content/public/browser/context_menu_params.h"
+#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/web_contents.h"
+#include "google_apis/gaia/gaia_auth_util.h"
+#include "google_apis/gaia/gaia_urls.h"
+#include "ui/base/theme_provider.h"
+#include "ui/views/controls/webview/web_contents_set_background_color.h"
+
+namespace {
+
+// Shows the customization bubble if possible. The bubble won't be shown if the
+// color is enforced by policy or downloaded through Sync. An IPH is shown after
+// the bubble, or right away if the bubble cannot be shown.
+void ShowCustomizationBubble(SkColor new_profile_color, Browser* browser) {
+  BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
+  views::View* anchor_view =
+      browser_view->toolbar_button_provider()->GetAvatarToolbarButton();
+  DCHECK(anchor_view);
+
+  // Don't show the customization bubble if a valid policy theme is set.
+  if (ThemeServiceFactory::GetForProfile(browser->profile())
+          ->UsingPolicyTheme()) {
+    browser_view->MaybeShowProfileSwitchIPH();
+    return;
+  }
+
+  if (ProfileCustomizationBubbleSyncController::CanThemeSyncStart(
+          browser->profile())) {
+    // For sync users, their profile color has not been applied yet. Call a
+    // helper class that applies the color and shows the bubble only if there is
+    // no conflict with a synced theme / color.
+    ProfileCustomizationBubbleSyncController::
+        ApplyColorAndShowBubbleWhenNoValueSynced(
+            browser->profile(), anchor_view,
+            /*suggested_profile_color=*/new_profile_color);
+  } else {
+    // For non syncing users, simply show the bubble.
+    ProfileCustomizationBubbleView::CreateBubble(browser->profile(),
+                                                 anchor_view);
+  }
+}
+
+GURL GetSigninURL(bool dark_mode) {
+  GURL signin_url = GaiaUrls::GetInstance()->signin_chrome_sync_dice();
+  if (dark_mode)
+    signin_url = net::AppendQueryParameter(signin_url, "color_scheme", "dark");
+  return signin_url;
+}
+
+GURL GetSyncConfirmationLoadingURL() {
+  return GURL(chrome::kChromeUISyncConfirmationURL)
+      .Resolve(chrome::kChromeUISyncConfirmationLoadingPath);
+}
+
+bool IsExternalURL(const GURL& url) {
+  // Empty URL is used initially, about:blank is used to stop navigation after
+  // sign-in succeeds.
+  if (url.is_empty() || url == GURL(url::kAboutBlankURL))
+    return false;
+  if (gaia::IsGaiaSignonRealm(url.GetOrigin()))
+    return false;
+  return true;
+}
+
+void ContinueSAMLSignin(std::unique_ptr<content::WebContents> saml_wc,
+                        Browser* browser) {
+  DCHECK(browser);
+
+  BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
+  // Attach DiceTabHelper to `saml_wc` so that sync consent dialog appears after
+  // a successful sign-in.
+  DiceTabHelper::CreateForWebContents(saml_wc.get());
+  DiceTabHelper* tab_helper = DiceTabHelper::FromWebContents(saml_wc.get());
+  // Use |redirect_url| and not |continue_url|, so that the DiceTabHelper can
+  // redirect to chrome:// URLs such as the NTP.
+  tab_helper->InitializeSigninFlow(
+      GetSigninURL(browser_view->GetNativeTheme()->ShouldUseDarkColors()),
+      signin_metrics::AccessPoint::ACCESS_POINT_USER_MANAGER,
+      signin_metrics::Reason::kSigninPrimaryAccount,
+      signin_metrics::PromoAction::PROMO_ACTION_NO_SIGNIN_PROMO,
+      GURL(chrome::kChromeUINewTabURL));
+
+  browser->tab_strip_model()->ReplaceWebContentsAt(0, std::move(saml_wc));
+
+  ProfileMetrics::LogProfileAddSignInFlowOutcome(
+      ProfileMetrics::ProfileAddSignInFlowOutcome::kSAML);
+}
+
+}  // namespace
+
+ProfilePickerSignInFlowController::ProfilePickerSignInFlowController(
+    ProfilePickerView* view,
+    Profile* profile,
+    SkColor profile_color,
+    base::TimeDelta extended_account_info_timeout)
+    : view_(view),
+      contents_(content::WebContents::Create(
+          content::WebContents::CreateParams(profile))),
+      profile_(profile),
+      profile_color_(profile_color),
+      extended_account_info_timeout_(extended_account_info_timeout) {}
+
+ProfilePickerSignInFlowController::~ProfilePickerSignInFlowController() {
+  if (contents())
+    contents()->SetDelegate(nullptr);
+
+  // Abort unfinished signed-in profile creation.
+  if (!is_finished_) {
+    // TODO(crbug.com/1196290): Schedule the profile for deletion here, it's not
+    // needed any more. This triggers a crash if the browser is shutting down
+    // completely. Figure a way how to delete the profile only if that does not
+    // compete with a shutdown.
+
+    // Log profile creation flow abortion.
+    if (IsSigningIn()) {
+      ProfileMetrics::LogProfileAddSignInFlowOutcome(
+          ProfileMetrics::ProfileAddSignInFlowOutcome::kAbortedBeforeSignIn);
+    } else {
+      ProfileMetrics::LogProfileAddSignInFlowOutcome(
+          ProfileMetrics::ProfileAddSignInFlowOutcome::kAbortedAfterSignIn);
+    }
+  }
+}
+
+void ProfilePickerSignInFlowController::Init() {
+  contents()->SetDelegate(this);
+
+  // Create a manager that supports modal dialogs, such as for webauthn.
+  web_modal::WebContentsModalDialogManager::CreateForWebContents(contents());
+  web_modal::WebContentsModalDialogManager::FromWebContents(contents())
+      ->SetDelegate(this);
+
+  // Listen for sign-in getting completed.
+  identity_manager_observation_.Observe(
+      IdentityManagerFactory::GetForProfile(profile()));
+
+  ProfileAttributesEntry* entry =
+      g_browser_process->profile_manager()
+          ->GetProfileAttributesStorage()
+          .GetProfileAttributesWithPath(profile()->GetPath());
+  if (!entry) {
+    NOTREACHED();
+    return;
+  }
+
+  // Mark this profile ephemeral so that it is deleted upon next startup if the
+  // browser crashes before finishing the flow.
+  entry->SetIsEphemeral(true);
+  // Mark this profile as omitted so that it is not displayed in the list of
+  // profiles.
+  entry->SetIsOmitted(true);
+
+  // Record that the sign in process starts (its end is recorded automatically
+  // by the instance of DiceTurnSyncOnHelper constructed later on).
+  signin_metrics::RecordSigninUserActionForAccessPoint(
+      signin_metrics::AccessPoint::ACCESS_POINT_USER_MANAGER,
+      signin_metrics::PromoAction::PROMO_ACTION_NO_SIGNIN_PROMO);
+  signin_metrics::LogSigninAccessPointStarted(
+      signin_metrics::AccessPoint::ACCESS_POINT_USER_MANAGER,
+      signin_metrics::PromoAction::PROMO_ACTION_NO_SIGNIN_PROMO);
+
+  // Apply the default theme to get consistent colors for toolbars (this matters
+  // for linux where the 'system' theme is used for new profiles).
+  auto* theme_service = ThemeServiceFactory::GetForProfile(profile());
+  theme_service->UseDefaultTheme();
+
+  // Make sure the web contents used for sign-in has proper background to match
+  // the toolbar (for dark mode).
+  SkColor background_color =
+      GetThemeProvider()->GetColor(ThemeProperties::COLOR_TOOLBAR);
+  views::WebContentsSetBackgroundColor::CreateForWebContentsWithColor(
+      contents(), background_color);
+  // On Mac, the WebContents is initially transparent. Set the color for the
+  // main view as well.
+  view_->SetBackground(views::CreateSolidBackground(background_color));
+
+  // The back button cannot be created from the constructor as ProfilePickerView
+  // needs to access the ThemeProvider of `this` in the process.
+  view_->CreateToolbarBackButton();
+
+  view_->ShowScreen(
+      contents(), GetSigninURL(view_->GetNativeTheme()->ShouldUseDarkColors()),
+      /*show_toolbar=*/true);
+}
+
+void ProfilePickerSignInFlowController::Cancel() {
+  // Finished here, avoid aborting the flow in the destructor later on.
+  is_finished_ = true;
+}
+
+void ProfilePickerSignInFlowController::SetProfileColor(SkColor color) {
+  profile_color_ = color;
+}
+
+SkColor ProfilePickerSignInFlowController::GetProfileColor() const {
+  // The new profile theme may be overridden by an existing policy theme. This
+  // check ensures the correct theme is applied to the sync confirmation window.
+  auto* theme_service = ThemeServiceFactory::GetForProfile(profile_);
+  if (theme_service->UsingPolicyTheme())
+    return theme_service->GetPolicyThemeColor();
+  return profile_color_;
+}
+
+bool ProfilePickerSignInFlowController::IsSigningIn() const {
+  // We are in the sign-in flow if the email is not yet determined.
+  return email_.empty();
+}
+
+const ui::ThemeProvider* ProfilePickerSignInFlowController::GetThemeProvider()
+    const {
+  return &ThemeService::GetThemeProviderForProfile(profile());
+}
+
+std::string ProfilePickerSignInFlowController::GetUserDomain() const {
+  return gaia::ExtractDomainName(email_);
+}
+
+bool ProfilePickerSignInFlowController::HandleContextMenu(
+    content::RenderFrameHost* render_frame_host,
+    const content::ContextMenuParams& params) {
+  // Ignores context menu.
+  return true;
+}
+
+void ProfilePickerSignInFlowController::AddNewContents(
+    content::WebContents* source,
+    std::unique_ptr<content::WebContents> new_contents,
+    const GURL& target_url,
+    WindowOpenDisposition disposition,
+    const gfx::Rect& initial_rect,
+    bool user_gesture,
+    bool* was_blocked) {
+  NavigateParams params(profile_, target_url, ui::PAGE_TRANSITION_LINK);
+  // Open all links as new popups.
+  params.disposition = WindowOpenDisposition::NEW_POPUP;
+  params.contents_to_insert = std::move(new_contents);
+  params.window_bounds = initial_rect;
+  Navigate(&params);
+}
+
+bool ProfilePickerSignInFlowController::HandleKeyboardEvent(
+    content::WebContents* source,
+    const content::NativeWebKeyboardEvent& event) {
+  return view_->HandleKeyboardEvent(source, event);
+}
+
+void ProfilePickerSignInFlowController::NavigationStateChanged(
+    content::WebContents* source,
+    content::InvalidateTypes changed_flags) {
+  if (IsSigningIn() && source == contents_.get() &&
+      IsExternalURL(contents_->GetVisibleURL())) {
+    FinishSignedInCreationFlowForSAML();
+  }
+}
+
+web_modal::WebContentsModalDialogHost*
+ProfilePickerSignInFlowController::GetWebContentsModalDialogHost() {
+  return view_;
+}
+
+void ProfilePickerSignInFlowController::OnRefreshTokenUpdatedForAccount(
+    const CoreAccountInfo& account_info) {
+  DCHECK(!account_info.IsEmpty());
+  email_ = account_info.email;
+
+  base::OnceClosure sync_consent_completed_closure = base::BindOnce(
+      &ProfilePickerSignInFlowController::FinishSignedInCreationFlow,
+      weak_ptr_factory_.GetWeakPtr(),
+      base::BindOnce(&ShowCustomizationBubble, profile_color_),
+      /*enterprise_sync_consent_needed=*/false);
+
+  // Stop with the sign-in navigation and show a spinner instead. The spinner
+  // will be shown until DiceTurnSyncOnHelper (below) figures out whether it's a
+  // managed account and whether sync is disabled by policies (which in some
+  // cases involves fetching policies and can take a couple of seconds).
+  view_->ShowScreen(contents(), GetSyncConfirmationLoadingURL(),
+                    /*show_toolbar=*/false, /*enable_navigating_back=*/false);
+
+  // Set up a timeout for extended account info (which cancels any existing
+  // timeout closure).
+  extended_account_info_timeout_closure_.Reset(base::BindOnce(
+      &ProfilePickerSignInFlowController::OnExtendedAccountInfoTimeout,
+      weak_ptr_factory_.GetWeakPtr(), account_info));
+  base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
+      FROM_HERE, extended_account_info_timeout_closure_.callback(),
+      extended_account_info_timeout_);
+
+  // DiceTurnSyncOnHelper deletes itself once done.
+  new DiceTurnSyncOnHelper(
+      profile(), signin_metrics::AccessPoint::ACCESS_POINT_USER_MANAGER,
+      signin_metrics::PromoAction::PROMO_ACTION_NO_SIGNIN_PROMO,
+      signin_metrics::Reason::kSigninPrimaryAccount, account_info.account_id,
+      DiceTurnSyncOnHelper::SigninAbortedMode::KEEP_ACCOUNT,
+      std::make_unique<ProfilePickerViewSyncDelegate>(
+          profile(),
+          base::BindOnce(
+              &ProfilePickerSignInFlowController::FinishSignedInCreationFlow,
+              weak_ptr_factory_.GetWeakPtr())),
+      std::move(sync_consent_completed_closure));
+}
+
+void ProfilePickerSignInFlowController::OnExtendedAccountInfoUpdated(
+    const AccountInfo& account_info) {
+  if (!account_info.IsValid())
+    return;
+  name_for_signed_in_profile_ =
+      profiles::GetDefaultNameForNewSignedInProfile(account_info);
+  OnProfileNameAvailable();
+  // Extended info arrived on time, no need for the timeout callback any more.
+  extended_account_info_timeout_closure_.Cancel();
+}
+
+void ProfilePickerSignInFlowController::OnExtendedAccountInfoTimeout(
+    const CoreAccountInfo& account) {
+  name_for_signed_in_profile_ =
+      profiles::GetDefaultNameForNewSignedInProfileWithIncompleteInfo(account);
+  OnProfileNameAvailable();
+}
+
+void ProfilePickerSignInFlowController::OnProfileNameAvailable() {
+  // Stop listening to further changes.
+  DCHECK(identity_manager_observation_.IsObservingSource(
+      IdentityManagerFactory::GetForProfile(profile())));
+  identity_manager_observation_.Reset();
+
+  if (on_profile_name_available_)
+    std::move(on_profile_name_available_).Run();
+}
+
+void ProfilePickerSignInFlowController::FinishSignedInCreationFlow(
+    BrowserOpenedCallback callback,
+    bool enterprise_sync_consent_needed) {
+  // Do nothing if the sign-in flow is aborted or if this has already been
+  // called. Note that this can get called first time from a special case
+  // handling (such as the Settings link) and than second time when the
+  // DiceTurnSyncOnHelper finishes.
+  if (is_finished_)
+    return;
+  is_finished_ = true;
+
+  if (name_for_signed_in_profile_.empty()) {
+    on_profile_name_available_ = base::BindOnce(
+        &ProfilePickerSignInFlowController::FinishSignedInCreationFlowImpl,
+        weak_ptr_factory_.GetWeakPtr(), std::move(callback),
+        enterprise_sync_consent_needed);
+    return;
+  }
+
+  FinishSignedInCreationFlowImpl(std::move(callback),
+                                 enterprise_sync_consent_needed);
+}
+
+void ProfilePickerSignInFlowController::FinishSignedInCreationFlowImpl(
+    BrowserOpenedCallback callback,
+    bool enterprise_sync_consent_needed) {
+  DCHECK(!name_for_signed_in_profile_.empty());
+
+  ProfileAttributesEntry* entry =
+      g_browser_process->profile_manager()
+          ->GetProfileAttributesStorage()
+          .GetProfileAttributesWithPath(profile()->GetPath());
+  if (!entry) {
+    NOTREACHED();
+    return;
+  }
+
+  entry->SetIsOmitted(false);
+  if (!profile()->GetPrefs()->GetBoolean(prefs::kForceEphemeralProfiles)) {
+    // Unmark this profile ephemeral so that it isn't deleted upon next startup.
+    // Profiles should never be made non-ephemeral if ephemeral mode is forced
+    // by policy.
+    entry->SetIsEphemeral(false);
+  }
+  entry->SetLocalProfileName(name_for_signed_in_profile_,
+                             /*is_default_name=*/false);
+  ProfileMetrics::LogProfileAddNewUser(
+      ProfileMetrics::ADD_NEW_PROFILE_PICKER_SIGNED_IN);
+
+  // If sync is not enabled (and will not likely be enabled with an enterprise
+  // consent), apply a new color to the profile (otherwise, a more complicated
+  // logic gets triggered in ShowCustomizationBubble()).
+  if (!enterprise_sync_consent_needed &&
+      !ProfileCustomizationBubbleSyncController::CanThemeSyncStart(profile())) {
+    auto* theme_service = ThemeServiceFactory::GetForProfile(profile());
+    theme_service->BuildAutogeneratedThemeFromColor(profile_color_);
+  }
+
+  // Skip the FRE for this profile as it's replaced by profile creation flow.
+  profile()->GetPrefs()->SetBoolean(prefs::kHasSeenWelcomePage, true);
+
+  // TODO(crbug.com/1126913): Change the callback of
+  // profiles::OpenBrowserWindowForProfile() to be a OnceCallback as it is only
+  // called once.
+  profiles::OpenBrowserWindowForProfile(
+      base::AdaptCallbackForRepeating(
+          base::BindOnce(&ProfilePickerSignInFlowController::OnBrowserOpened,
+                         weak_ptr_factory_.GetWeakPtr(), std::move(callback))),
+      /*always_create=*/false,   // Don't create a window if one already exists.
+      /*is_new_profile=*/false,  // Don't create a first run window.
+      /*unblock_extensions=*/false,  // There is no need to unblock all
+                                     // extensions because we only open browser
+                                     // window if the Profile is not locked.
+                                     // Hence there is no extension blocked.
+      profile(), Profile::CREATE_STATUS_INITIALIZED);
+}
+
+void ProfilePickerSignInFlowController::FinishSignedInCreationFlowForSAML() {
+  // First, free up `contents()` to be moved to a new browser window.
+  view_->ShowScreenInSystemContents(
+      GURL(url::kAboutBlankURL),
+      /*show_toolbar=*/false, /*enable_navigating_back=*/false,
+      /*navigation_finished_closure=*/
+      base::BindOnce(
+          &ProfilePickerSignInFlowController::OnSignInContentsFreedUp,
+          // Unretained is enough as the callback is called by a
+          // member of `view_` that outlives `this`.
+          base::Unretained(this)));
+}
+
+void ProfilePickerSignInFlowController::OnSignInContentsFreedUp() {
+  DCHECK(!is_finished_);
+  is_finished_ = true;
+
+  DCHECK(name_for_signed_in_profile_.empty());
+  name_for_signed_in_profile_ =
+      profiles::GetDefaultNameForNewEnterpriseProfile();
+  contents_->SetDelegate(nullptr);
+  FinishSignedInCreationFlowImpl(
+      base::BindOnce(&ContinueSAMLSignin, std::move(contents_)),
+      /*enterprise_sync_consent_needed=*/true);
+}
+
+void ProfilePickerSignInFlowController::OnBrowserOpened(
+    BrowserOpenedCallback finish_flow_callback,
+    Profile* profile,
+    Profile::CreateStatus profile_create_status) {
+  DCHECK_EQ(profile, profile_);
+
+  // Hide the flow window. This posts a task on the message loop to destroy the
+  // window incl. this view.
+  view_->Clear();
+
+  if (!finish_flow_callback)
+    return;
+
+  Browser* browser = chrome::FindLastActiveWithProfile(profile);
+  DCHECK(browser);
+  std::move(finish_flow_callback).Run(browser);
+}
diff --git a/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h
new file mode 100644
index 0000000..7d9962b
--- /dev/null
+++ b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h
@@ -0,0 +1,167 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_VIEWS_PROFILES_PROFILE_PICKER_SIGN_IN_FLOW_CONTROLLER_H_
+#define CHROME_BROWSER_UI_VIEWS_PROFILES_PROFILE_PICKER_SIGN_IN_FLOW_CONTROLLER_H_
+
+#include "base/callback.h"
+#include "base/files/file_path.h"
+#include "base/memory/weak_ptr.h"
+#include "base/time/time.h"
+#include "chrome/browser/ui/chrome_web_modal_dialog_manager_delegate.h"
+#include "chrome/browser/ui/views/profiles/profile_picker_view.h"
+#include "chrome/browser/ui/webui/signin/enterprise_profile_welcome_ui.h"
+#include "components/signin/public/identity_manager/identity_manager.h"
+#include "content/public/browser/web_contents_delegate.h"
+#include "third_party/skia/include/core/SkColor.h"
+
+struct AccountInfo;
+struct CoreAccountInfo;
+class Browser;
+class Profile;
+
+namespace content {
+struct ContextMenuParams;
+class RenderFrameHost;
+class WebContents;
+}  // namespace content
+
+namespace ui {
+class ThemeProvider;
+}  // namespace ui
+
+// Class responsible for the sign-in profile creation flow (within
+// ProfilePickerView).
+class ProfilePickerSignInFlowController
+    : public content::WebContentsDelegate,
+      public ChromeWebModalDialogManagerDelegate,
+      public signin::IdentityManager::Observer {
+ public:
+  using BrowserOpenedCallback = base::OnceCallback<void(Browser*)>;
+
+  ProfilePickerSignInFlowController(
+      ProfilePickerView* view,
+      Profile* profile,
+      SkColor profile_color,
+      base::TimeDelta extended_account_info_timeout);
+  ~ProfilePickerSignInFlowController() override;
+  ProfilePickerSignInFlowController(const ProfilePickerSignInFlowController&) =
+      delete;
+  ProfilePickerSignInFlowController& operator=(
+      const ProfilePickerSignInFlowController&) = delete;
+
+  // Must be called after constructor.
+  void Init();
+
+  // Cancels the flow explicitly. This does not log any metrics, the caller
+  // must take care of logging the outcome of the flow on its own.
+  void Cancel();
+
+  content::WebContents* contents() const { return contents_.get(); }
+
+  // Updates the profile color provided in the constructor.
+  void SetProfileColor(SkColor color);
+  // Returns the profile color, taking into account current policies.
+  SkColor GetProfileColor() const;
+
+  bool IsSigningIn() const;
+
+  // Returns theme provider based on `profile_`.
+  const ui::ThemeProvider* GetThemeProvider() const;
+
+  // Returns the domain of the email of the signed-in user or an empty string
+  // if the user is not signed-in.
+  std::string GetUserDomain() const;
+
+  Profile* profile() const { return profile_; }
+
+ private:
+  // content::WebContentsDelegate:
+  bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
+                         const content::ContextMenuParams& params) override;
+  void AddNewContents(content::WebContents* source,
+                      std::unique_ptr<content::WebContents> new_contents,
+                      const GURL& target_url,
+                      WindowOpenDisposition disposition,
+                      const gfx::Rect& initial_rect,
+                      bool user_gesture,
+                      bool* was_blocked) override;
+  bool HandleKeyboardEvent(
+      content::WebContents* source,
+      const content::NativeWebKeyboardEvent& event) override;
+  void NavigationStateChanged(content::WebContents* source,
+                              content::InvalidateTypes changed_flags) override;
+
+  // ChromeWebModalDialogManagerDelegate:
+  web_modal::WebContentsModalDialogHost* GetWebContentsModalDialogHost()
+      override;
+
+  // IdentityManager::Observer:
+  void OnRefreshTokenUpdatedForAccount(
+      const CoreAccountInfo& account_info) override;
+  void OnExtendedAccountInfoUpdated(const AccountInfo& account_info) override;
+
+  // Helper functions to deal with the lack of extended account info.
+  void OnExtendedAccountInfoTimeout(const CoreAccountInfo& account);
+  void OnProfileNameAvailable();
+
+  // Finishes the creation flow by marking `profile_being_created_` as fully
+  // created, opening a browser window for this profile and calling
+  // `callback`.
+  void FinishSignedInCreationFlow(BrowserOpenedCallback callback,
+                                  bool enterprise_sync_consent_needed);
+  void FinishSignedInCreationFlowImpl(BrowserOpenedCallback callback,
+                                      bool enterprise_sync_consent_needed);
+
+  // Finishes the flow by finalizing the profile and continuing the SAML
+  // sign-in in a browser window.
+  void FinishSignedInCreationFlowForSAML();
+  void OnSignInContentsFreedUp();
+
+  // Internal callback to finish the last steps of the signed-in creation
+  // flow.
+  void OnBrowserOpened(BrowserOpenedCallback finish_flow_callback,
+                       Profile* profile,
+                       Profile::CreateStatus profile_create_status);
+
+  // The parent view element, must outlive this object.
+  ProfilePickerView* view_;
+
+  // The web contents backed by `profile`. This is used for displaying the
+  // sign-in flow.
+  std::unique_ptr<content::WebContents> contents_;
+
+  Profile* profile_ = nullptr;
+
+  // Set for the profile at the very end to avoid coloring the simple toolbar
+  // for GAIA sign-in (that uses the ThemeProvider of the current profile).
+  SkColor profile_color_;
+
+  // For finishing the profile creation flow, the extended account info is
+  // needed (for properly naming the new profile). After a timeout, a fallback
+  // name is used, instead, to unblock the flow.
+  base::TimeDelta extended_account_info_timeout_;
+
+  // Controls whether the flow still needs to finalize (which includes showing
+  // `profile` browser window at the end of the sign-in flow).
+  bool is_finished_ = false;
+
+  // Email of the signed-in account. It is set after the user finishes the
+  // sign-in flow on GAIA and Chrome receives the account info.
+  std::string email_;
+
+  std::u16string name_for_signed_in_profile_;
+  base::OnceClosure on_profile_name_available_;
+
+  base::CancelableOnceClosure extended_account_info_timeout_closure_;
+
+  base::ScopedObservation<signin::IdentityManager,
+                          signin::IdentityManager::Observer>
+      identity_manager_observation_{this};
+
+  base::WeakPtrFactory<ProfilePickerSignInFlowController> weak_ptr_factory_{
+      this};
+};
+
+#endif  // CHROME_BROWSER_UI_VIEWS_PROFILES_PROFILE_PICKER_SIGN_IN_FLOW_CONTROLLER_H_
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.cc b/chrome/browser/ui/views/profiles/profile_picker_view.cc
index 12c954d4..59ae9c76 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_view.cc
+++ b/chrome/browser/ui/views/profiles/profile_picker_view.cc
@@ -16,32 +16,18 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
 #include "chrome/browser/lifetime/application_lifetime.h"
-#include "chrome/browser/profiles/profile_attributes_entry.h"
 #include "chrome/browser/profiles/profile_attributes_storage.h"
 #include "chrome/browser/profiles/profile_avatar_icon_util.h"
 #include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/profiles/profile_window.h"
-#include "chrome/browser/profiles/profiles_state.h"
-#include "chrome/browser/signin/dice_tab_helper.h"
-#include "chrome/browser/signin/identity_manager_factory.h"
 #include "chrome/browser/signin/signin_promo.h"
 #include "chrome/browser/signin/signin_util.h"
 #include "chrome/browser/themes/theme_properties.h"
-#include "chrome/browser/themes/theme_service.h"
-#include "chrome/browser/themes/theme_service_factory.h"
-#include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/browser_navigator.h"
 #include "chrome/browser/ui/browser_navigator_params.h"
 #include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/views/accelerator_table.h"
-#include "chrome/browser/ui/views/frame/browser_view.h"
-#include "chrome/browser/ui/views/frame/toolbar_button_provider.h"
-#include "chrome/browser/ui/views/profiles/avatar_toolbar_button.h"
-#include "chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller.h"
-#include "chrome/browser/ui/views/profiles/profile_customization_bubble_view.h"
-#include "chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.h"
+#include "chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_button.h"
-#include "chrome/browser/ui/webui/signin/dice_turn_sync_on_helper.h"
 #include "chrome/browser/ui/webui/signin/profile_picker_ui.h"
 #include "chrome/browser/ui/webui/signin/signin_web_dialog_ui.h"
 #include "chrome/browser/ui/webui/signin/sync_confirmation_ui.h"
@@ -52,23 +38,19 @@
 #include "chrome/grit/google_chrome_strings.h"
 #include "components/keep_alive_registry/keep_alive_types.h"
 #include "components/prefs/pref_service.h"
-#include "components/signin/public/identity_manager/account_info.h"
 #include "components/startup_metric_utils/browser/startup_metric_utils.h"
 #include "components/vector_icons/vector_icons.h"
-#include "components/web_modal/web_contents_modal_dialog_manager.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/context_menu_params.h"
 #include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_widget_host_view.h"
 #include "content/public/browser/web_contents.h"
-#include "google_apis/gaia/gaia_auth_util.h"
-#include "google_apis/gaia/gaia_urls.h"
 #include "net/base/url_util.h"
 #include "ui/base/l10n/l10n_util.h"
+#include "ui/base/theme_provider.h"
 #include "ui/views/accessibility/view_accessibility.h"
 #include "ui/views/background.h"
-#include "ui/views/controls/webview/web_contents_set_background_color.h"
 #include "ui/views/controls/webview/webview.h"
 #include "ui/views/layout/fill_layout.h"
 #include "ui/views/layout/flex_layout.h"
@@ -108,38 +90,6 @@
     IDC_CLOSE_TAB,       IDC_CLOSE_WINDOW, IDC_EXIT,  IDC_FULLSCREEN,
     IDC_MINIMIZE_WINDOW, IDC_BACK,         IDC_RELOAD};
 
-// Shows the customization bubble if possible. The bubble won't be shown if the
-// color is enforced by policy or downloaded through Sync. An IPH is shown after
-// the bubble, or right away if the bubble cannot be shown.
-void ShowCustomizationBubble(SkColor new_profile_color, Browser* browser) {
-  BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
-  views::View* anchor_view =
-      browser_view->toolbar_button_provider()->GetAvatarToolbarButton();
-  DCHECK(anchor_view);
-
-  // Don't show the customization bubble if a valid policy theme is set.
-  if (ThemeServiceFactory::GetForProfile(browser->profile())
-          ->UsingPolicyTheme()) {
-    browser_view->MaybeShowProfileSwitchIPH();
-    return;
-  }
-
-  if (ProfileCustomizationBubbleSyncController::CanThemeSyncStart(
-          browser->profile())) {
-    // For sync users, their profile color has not been applied yet. Call a
-    // helper class that applies the color and shows the bubble only if there is
-    // no conflict with a synced theme / color.
-    ProfileCustomizationBubbleSyncController::
-        ApplyColorAndShowBubbleWhenNoValueSynced(
-            browser->profile(), anchor_view,
-            /*suggested_profile_color=*/new_profile_color);
-  } else {
-    // For non syncing users, simply show the bubble.
-    ProfileCustomizationBubbleView::CreateBubble(browser->profile(),
-                                                 anchor_view);
-  }
-}
-
 GURL CreateURLForEntryPoint(ProfilePicker::EntryPoint entry_point) {
   GURL base_url = GURL(chrome::kChromeUIProfilePickerUrl);
   switch (entry_point) {
@@ -160,52 +110,6 @@
   }
 }
 
-GURL GetSigninURL(bool dark_mode) {
-  GURL signin_url = GaiaUrls::GetInstance()->signin_chrome_sync_dice();
-  if (dark_mode)
-    signin_url = net::AppendQueryParameter(signin_url, "color_scheme", "dark");
-  return signin_url;
-}
-
-GURL GetSyncConfirmationLoadingURL() {
-  return GURL(chrome::kChromeUISyncConfirmationURL)
-      .Resolve(chrome::kChromeUISyncConfirmationLoadingPath);
-}
-
-bool IsExternalURL(const GURL& url) {
-  // Empty URL is used initially, about:blank is used to stop navigation after
-  // sign-in succeeds.
-  if (url.is_empty() || url == GURL(url::kAboutBlankURL))
-    return false;
-  if (gaia::IsGaiaSignonRealm(url.GetOrigin()))
-    return false;
-  return true;
-}
-
-void ContinueSAMLSignin(std::unique_ptr<content::WebContents> saml_wc,
-                        Browser* browser) {
-  DCHECK(browser);
-
-  BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
-  // Attach DiceTabHelper to `saml_wc` so that sync consent dialog appears after
-  // a successful sign-in.
-  DiceTabHelper::CreateForWebContents(saml_wc.get());
-  DiceTabHelper* tab_helper = DiceTabHelper::FromWebContents(saml_wc.get());
-  // Use |redirect_url| and not |continue_url|, so that the DiceTabHelper can
-  // redirect to chrome:// URLs such as the NTP.
-  tab_helper->InitializeSigninFlow(
-      GetSigninURL(browser_view->GetNativeTheme()->ShouldUseDarkColors()),
-      signin_metrics::AccessPoint::ACCESS_POINT_USER_MANAGER,
-      signin_metrics::Reason::kSigninPrimaryAccount,
-      signin_metrics::PromoAction::PROMO_ACTION_NO_SIGNIN_PROMO,
-      GURL(chrome::kChromeUINewTabURL));
-
-  browser->tab_strip_model()->ReplaceWebContentsAt(0, std::move(saml_wc));
-
-  ProfileMetrics::LogProfileAddSignInFlowOutcome(
-      ProfileMetrics::ProfileAddSignInFlowOutcome::kSAML);
-}
-
 class ProfilePickerWidget : public views::Widget {
  public:
   explicit ProfilePickerWidget(ProfilePickerView* profile_picker_view)
@@ -466,6 +370,86 @@
   return sign_in_->GetThemeProvider();
 }
 
+void ProfilePickerView::DisplayErrorMessage() {
+  dialog_host_.DisplayErrorMessage();
+}
+
+void ProfilePickerView::ShowScreen(
+    content::WebContents* contents,
+    const GURL& url,
+    bool show_toolbar,
+    bool enable_navigating_back,
+    base::OnceClosure navigation_finished_closure) {
+  if (url.is_empty()) {
+    DCHECK(!navigation_finished_closure);
+    ShowScreenFinished(contents, show_toolbar, enable_navigating_back);
+    return;
+  }
+
+  // Make sure to load the url as the last step so that the UI state is
+  // coherent upon the NavigationStateChanged notification.
+  contents->GetController().LoadURL(url, content::Referrer(),
+                                    ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
+                                    std::string());
+  // Binding as Unretained as `this` outlives member
+  // `show_screen_finished_observer_`. If ShowScreen gets called twice in a
+  // short period of time, the first callback may never get called as the first
+  // observer gets destroyed here or later in ShowScreenFinished(). This is okay
+  // as all the previous values get replaced by the new values.
+  show_screen_finished_observer_ = std::make_unique<NavigationFinishedObserver>(
+      url,
+      base::BindOnce(&ProfilePickerView::ShowScreenFinished,
+                     base::Unretained(this), contents, show_toolbar,
+                     enable_navigating_back,
+                     std::move(navigation_finished_closure)),
+      contents);
+}
+
+void ProfilePickerView::ShowScreenInSystemContents(
+    const GURL& url,
+    bool show_toolbar,
+    bool enable_navigating_back,
+    base::OnceClosure navigation_finished_closure) {
+  ShowScreen(system_profile_contents_.get(), url, show_toolbar,
+             enable_navigating_back, std::move(navigation_finished_closure));
+}
+
+void ProfilePickerView::CreateToolbarBackButton() {
+  // The sign-in profile is needed to obtain the ThemeProvider which is needed
+  // by ToolbarButton on construction.
+  DCHECK(sign_in_->profile());
+  auto back_button = std::make_unique<SimpleBackButton>(base::BindRepeating(
+      &ProfilePickerView::BackButtonPressed, base::Unretained(this)));
+  toolbar_->AddChildView(std::move(back_button));
+  UpdateToolbarColor();
+}
+
+void ProfilePickerView::Clear() {
+  if (state_ == kReady) {
+    GetWidget()->Close();
+    return;
+  }
+
+  WindowClosing();
+  DeleteDelegate();
+}
+
+bool ProfilePickerView::HandleKeyboardEvent(
+    content::WebContents* source,
+    const content::NativeWebKeyboardEvent& event) {
+  // Forward the keyboard event to AcceleratorPressed() through the
+  // FocusManager.
+  return unhandled_keyboard_event_handler_.HandleKeyboardEvent(
+      event, GetFocusManager());
+}
+
+bool ProfilePickerView::HandleContextMenu(
+    content::RenderFrameHost* render_frame_host,
+    const content::ContextMenuParams& params) {
+  // Ignores context menu.
+  return true;
+}
+
 ProfilePickerView::ProfilePickerView(const GURL& on_select_profile_target_url)
     : keep_alive_(KeepAliveOrigin::USER_MANAGER_VIEW,
                   KeepAliveRestartOption::DISABLED),
@@ -484,146 +468,6 @@
     system_profile_contents_->SetDelegate(nullptr);
 }
 
-ProfilePickerView::SignInFlow::SignInFlow(
-    ProfilePickerView* view,
-    Profile* profile,
-    SkColor profile_color,
-    base::TimeDelta extended_account_info_timeout)
-    : view_(view),
-      contents_(content::WebContents::Create(
-          content::WebContents::CreateParams(profile))),
-      profile_(profile),
-      profile_color_(profile_color),
-      extended_account_info_timeout_(extended_account_info_timeout) {}
-
-ProfilePickerView::SignInFlow::~SignInFlow() {
-  if (contents())
-    contents()->SetDelegate(nullptr);
-
-  // Abort unfinished signed-in profile creation.
-  if (!is_finished_) {
-    // TODO(crbug.com/1196290): Schedule the profile for deletion here, it's not
-    // needed any more. This triggers a crash if the browser is shutting down
-    // completely. Figure a way how to delete the profile only if that does not
-    // compete with a shutdown.
-
-    // Log profile creation flow abortion.
-    if (IsSigningIn()) {
-      ProfileMetrics::LogProfileAddSignInFlowOutcome(
-          ProfileMetrics::ProfileAddSignInFlowOutcome::kAbortedBeforeSignIn);
-    } else {
-      ProfileMetrics::LogProfileAddSignInFlowOutcome(
-          ProfileMetrics::ProfileAddSignInFlowOutcome::kAbortedAfterSignIn);
-    }
-  }
-}
-
-void ProfilePickerView::SignInFlow::Init() {
-  contents()->SetDelegate(this);
-
-  // Create a manager that supports modal dialogs, such as for webauthn.
-  web_modal::WebContentsModalDialogManager::CreateForWebContents(contents());
-  web_modal::WebContentsModalDialogManager::FromWebContents(contents())
-      ->SetDelegate(this);
-
-  // Listen for sign-in getting completed.
-  identity_manager_observation_.Observe(
-      IdentityManagerFactory::GetForProfile(profile()));
-
-  ProfileAttributesEntry* entry =
-      g_browser_process->profile_manager()
-          ->GetProfileAttributesStorage()
-          .GetProfileAttributesWithPath(profile()->GetPath());
-  if (!entry) {
-    NOTREACHED();
-    return;
-  }
-
-  // Mark this profile ephemeral so that it is deleted upon next startup if the
-  // browser crashes before finishing the flow.
-  entry->SetIsEphemeral(true);
-  // Mark this profile as omitted so that it is not displayed in the list of
-  // profiles.
-  entry->SetIsOmitted(true);
-
-  // Record that the sign in process starts (its end is recorded automatically
-  // by the instance of DiceTurnSyncOnHelper constructed later on).
-  signin_metrics::RecordSigninUserActionForAccessPoint(
-      signin_metrics::AccessPoint::ACCESS_POINT_USER_MANAGER,
-      signin_metrics::PromoAction::PROMO_ACTION_NO_SIGNIN_PROMO);
-  signin_metrics::LogSigninAccessPointStarted(
-      signin_metrics::AccessPoint::ACCESS_POINT_USER_MANAGER,
-      signin_metrics::PromoAction::PROMO_ACTION_NO_SIGNIN_PROMO);
-
-  // Apply the default theme to get consistent colors for toolbars (this matters
-  // for linux where the 'system' theme is used for new profiles).
-  auto* theme_service = ThemeServiceFactory::GetForProfile(profile());
-  theme_service->UseDefaultTheme();
-
-  // Make sure the web contents used for sign-in has proper background to match
-  // the toolbar (for dark mode).
-  SkColor background_color =
-      GetThemeProvider()->GetColor(ThemeProperties::COLOR_TOOLBAR);
-  views::WebContentsSetBackgroundColor::CreateForWebContentsWithColor(
-      contents(), background_color);
-  // On Mac, the WebContents is initially transparent. Set the color for the
-  // main view as well.
-  view_->SetBackground(views::CreateSolidBackground(background_color));
-
-  // The back button cannot be created from the constructor as ProfilePickerView
-  // needs to access the ThemeProvider of `this` in the process.
-  view_->CreateToolbarBackButton();
-
-  view_->ShowScreen(
-      contents(), GetSigninURL(view_->GetNativeTheme()->ShouldUseDarkColors()),
-      /*show_toolbar=*/true);
-}
-
-void ProfilePickerView::SignInFlow::Cancel() {
-  // Finished here, avoid aborting the flow in the destructor later on.
-  is_finished_ = true;
-}
-
-void ProfilePickerView::SignInFlow::SetProfileColor(SkColor color) {
-  profile_color_ = color;
-}
-
-SkColor ProfilePickerView::SignInFlow::GetProfileColor() const {
-  // The new profile theme may be overridden by an existing policy theme. This
-  // check ensures the correct theme is applied to the sync confirmation window.
-  auto* theme_service = ThemeServiceFactory::GetForProfile(profile_);
-  if (theme_service->UsingPolicyTheme())
-    return theme_service->GetPolicyThemeColor();
-  return profile_color_;
-}
-
-bool ProfilePickerView::SignInFlow::IsSigningIn() const {
-  // We are in the sign-in flow if the email is not yet determined.
-  return email_.empty();
-}
-
-const ui::ThemeProvider* ProfilePickerView::SignInFlow::GetThemeProvider()
-    const {
-  return &ThemeService::GetThemeProviderForProfile(profile());
-}
-
-std::string ProfilePickerView::SignInFlow::GetUserDomain() const {
-  return gaia::ExtractDomainName(email_);
-}
-
-bool ProfilePickerView::SignInFlow::HandleContextMenu(
-    content::RenderFrameHost* render_frame_host,
-    const content::ContextMenuParams& params) {
-  // Ignores context menu.
-  return true;
-}
-
-bool ProfilePickerView::SignInFlow::HandleKeyboardEvent(
-    content::WebContents* source,
-    const content::NativeWebKeyboardEvent& event) {
-  return view_->HandleKeyboardEvent(source, event);
-}
-
 void ProfilePickerView::Display(ProfilePicker::EntryPoint entry_point) {
   // Record creation metrics.
   base::UmaHistogramEnumeration("ProfilePicker.Shown", entry_point);
@@ -656,16 +500,6 @@
   GetWidget()->Activate();
 }
 
-void ProfilePickerView::Clear() {
-  if (state_ == kReady) {
-    GetWidget()->Close();
-    return;
-  }
-
-  WindowClosing();
-  DeleteDelegate();
-}
-
 void ProfilePickerView::OnSystemProfileCreated(Profile* system_profile,
                                                Profile::CreateStatus status) {
   DCHECK_NE(status, Profile::CREATE_STATUS_LOCAL_FAIL);
@@ -802,8 +636,8 @@
     return;
   }
 
-  sign_in_ = std::make_unique<SignInFlow>(this, profile, profile_color,
-                                          extended_account_info_timeout_);
+  sign_in_ = std::make_unique<ProfilePickerSignInFlowController>(
+      this, profile, profile_color, extended_account_info_timeout_);
   sign_in_->Init();
 }
 
@@ -972,46 +806,24 @@
   UpdateToolbarColor();
 }
 
-bool ProfilePickerView::HandleContextMenu(
-    content::RenderFrameHost* render_frame_host,
-    const content::ContextMenuParams& params) {
-  // Ignores context menu.
-  return true;
+gfx::NativeView ProfilePickerView::GetHostView() const {
+  return GetWidget()->GetNativeView();
 }
 
-bool ProfilePickerView::HandleKeyboardEvent(
-    content::WebContents* source,
-    const content::NativeWebKeyboardEvent& event) {
-  // Forward the keyboard event to AcceleratorPressed() through the
-  // FocusManager.
-  return unhandled_keyboard_event_handler_.HandleKeyboardEvent(
-      event, GetFocusManager());
+gfx::Point ProfilePickerView::GetDialogPosition(const gfx::Size& size) {
+  gfx::Size widget_size = GetWidget()->GetWindowBoundsInScreen().size();
+  return gfx::Point(std::max(0, (widget_size.width() - size.width()) / 2), 0);
 }
 
-void ProfilePickerView::SignInFlow::AddNewContents(
-    content::WebContents* source,
-    std::unique_ptr<content::WebContents> new_contents,
-    const GURL& target_url,
-    WindowOpenDisposition disposition,
-    const gfx::Rect& initial_rect,
-    bool user_gesture,
-    bool* was_blocked) {
-  NavigateParams params(profile_, target_url, ui::PAGE_TRANSITION_LINK);
-  // Open all links as new popups.
-  params.disposition = WindowOpenDisposition::NEW_POPUP;
-  params.contents_to_insert = std::move(new_contents);
-  params.window_bounds = initial_rect;
-  Navigate(&params);
+gfx::Size ProfilePickerView::GetMaximumDialogSize() {
+  return GetWidget()->GetWindowBoundsInScreen().size();
 }
 
-void ProfilePickerView::SignInFlow::NavigationStateChanged(
-    content::WebContents* source,
-    content::InvalidateTypes changed_flags) {
-  if (IsSigningIn() && source == contents_.get() &&
-      IsExternalURL(contents_->GetVisibleURL())) {
-    FinishSignedInCreationFlowForSAML();
-  }
-}
+void ProfilePickerView::AddObserver(
+    web_modal::ModalDialogHostObserver* observer) {}
+
+void ProfilePickerView::RemoveObserver(
+    web_modal::ModalDialogHostObserver* observer) {}
 
 void ProfilePickerView::BuildLayout() {
   SetLayoutManager(std::make_unique<views::FlexLayout>())
@@ -1048,56 +860,6 @@
       GetThemeProvider()->GetColor(ThemeProperties::COLOR_TOOLBAR)));
 }
 
-void ProfilePickerView::ShowScreen(
-    content::WebContents* contents,
-    const GURL& url,
-    bool show_toolbar,
-    bool enable_navigating_back,
-    base::OnceClosure navigation_finished_closure) {
-  if (url.is_empty()) {
-    DCHECK(!navigation_finished_closure);
-    ShowScreenFinished(contents, show_toolbar, enable_navigating_back);
-    return;
-  }
-
-  // Make sure to load the url as the last step so that the UI state is
-  // coherent upon the NavigationStateChanged notification.
-  contents->GetController().LoadURL(url, content::Referrer(),
-                                    ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
-                                    std::string());
-  // Binding as Unretained as `this` outlives member
-  // `show_screen_finished_observer_`. If ShowScreen gets called twice in a
-  // short period of time, the first callback may never get called as the first
-  // observer gets destroyed here or later in ShowScreenFinished(). This is okay
-  // as all the previous values get replaced by the new values.
-  show_screen_finished_observer_ = std::make_unique<NavigationFinishedObserver>(
-      url,
-      base::BindOnce(&ProfilePickerView::ShowScreenFinished,
-                     base::Unretained(this), contents, show_toolbar,
-                     enable_navigating_back,
-                     std::move(navigation_finished_closure)),
-      contents);
-}
-
-void ProfilePickerView::ShowScreenInSystemContents(
-    const GURL& url,
-    bool show_toolbar,
-    bool enable_navigating_back,
-    base::OnceClosure navigation_finished_closure) {
-  ShowScreen(system_profile_contents_.get(), url, show_toolbar,
-             enable_navigating_back, std::move(navigation_finished_closure));
-}
-
-void ProfilePickerView::CreateToolbarBackButton() {
-  // The sign-in profile is needed to obtain the ThemeProvider which is needed
-  // by ToolbarButton on construction.
-  DCHECK(sign_in_->profile());
-  auto back_button = std::make_unique<SimpleBackButton>(base::BindRepeating(
-      &ProfilePickerView::BackButtonPressed, base::Unretained(this)));
-  toolbar_->AddChildView(std::move(back_button));
-  UpdateToolbarColor();
-}
-
 void ProfilePickerView::ShowScreenFinished(
     content::WebContents* contents,
     bool show_toolbar,
@@ -1145,224 +907,11 @@
   return sign_in_ && sign_in_->IsSigningIn();
 }
 
-void ProfilePickerView::SignInFlow::OnRefreshTokenUpdatedForAccount(
-    const CoreAccountInfo& account_info) {
-  DCHECK(!account_info.IsEmpty());
-  email_ = account_info.email;
-
-  base::OnceClosure sync_consent_completed_closure =
-      base::BindOnce(&ProfilePickerView::SignInFlow::FinishSignedInCreationFlow,
-                     weak_ptr_factory_.GetWeakPtr(),
-                     base::BindOnce(&ShowCustomizationBubble, profile_color_),
-                     /*enterprise_sync_consent_needed=*/false);
-
-  // Stop with the sign-in navigation and show a spinner instead. The spinner
-  // will be shown until DiceTurnSyncOnHelper (below) figures out whether it's a
-  // managed account and whether sync is disabled by policies (which in some
-  // cases involves fetching policies and can take a couple of seconds).
-  view_->ShowScreen(contents(), GetSyncConfirmationLoadingURL(),
-                    /*show_toolbar=*/false, /*enable_navigating_back=*/false);
-
-  // Set up a timeout for extended account info (which cancels any existing
-  // timeout closure).
-  extended_account_info_timeout_closure_.Reset(base::BindOnce(
-      &ProfilePickerView::SignInFlow::OnExtendedAccountInfoTimeout,
-      weak_ptr_factory_.GetWeakPtr(), account_info));
-  base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-      FROM_HERE, extended_account_info_timeout_closure_.callback(),
-      extended_account_info_timeout_);
-
-  // DiceTurnSyncOnHelper deletes itself once done.
-  new DiceTurnSyncOnHelper(
-      profile(), signin_metrics::AccessPoint::ACCESS_POINT_USER_MANAGER,
-      signin_metrics::PromoAction::PROMO_ACTION_NO_SIGNIN_PROMO,
-      signin_metrics::Reason::kSigninPrimaryAccount, account_info.account_id,
-      DiceTurnSyncOnHelper::SigninAbortedMode::KEEP_ACCOUNT,
-      std::make_unique<ProfilePickerViewSyncDelegate>(
-          profile(),
-          base::BindOnce(
-              &ProfilePickerView::SignInFlow::FinishSignedInCreationFlow,
-              weak_ptr_factory_.GetWeakPtr())),
-      std::move(sync_consent_completed_closure));
-}
-
-void ProfilePickerView::SignInFlow::OnExtendedAccountInfoUpdated(
-    const AccountInfo& account_info) {
-  if (!account_info.IsValid())
-    return;
-  name_for_signed_in_profile_ =
-      profiles::GetDefaultNameForNewSignedInProfile(account_info);
-  OnProfileNameAvailable();
-  // Extended info arrived on time, no need for the timeout callback any more.
-  extended_account_info_timeout_closure_.Cancel();
-}
-
-web_modal::WebContentsModalDialogHost*
-ProfilePickerView::SignInFlow::GetWebContentsModalDialogHost() {
-  return view_;
-}
-
-gfx::NativeView ProfilePickerView::GetHostView() const {
-  return GetWidget()->GetNativeView();
-}
-
-gfx::Point ProfilePickerView::GetDialogPosition(const gfx::Size& size) {
-  gfx::Size widget_size = GetWidget()->GetWindowBoundsInScreen().size();
-  return gfx::Point(std::max(0, (widget_size.width() - size.width()) / 2), 0);
-}
-
-gfx::Size ProfilePickerView::GetMaximumDialogSize() {
-  return GetWidget()->GetWindowBoundsInScreen().size();
-}
-
-void ProfilePickerView::AddObserver(
-    web_modal::ModalDialogHostObserver* observer) {}
-
-void ProfilePickerView::RemoveObserver(
-    web_modal::ModalDialogHostObserver* observer) {}
-
 void ProfilePickerView::SetExtendedAccountInfoTimeoutForTesting(
     base::TimeDelta timeout) {
   extended_account_info_timeout_ = timeout;
 }
 
-void ProfilePickerView::SignInFlow::OnExtendedAccountInfoTimeout(
-    const CoreAccountInfo& account) {
-  name_for_signed_in_profile_ =
-      profiles::GetDefaultNameForNewSignedInProfileWithIncompleteInfo(account);
-  OnProfileNameAvailable();
-}
-
-void ProfilePickerView::SignInFlow::OnProfileNameAvailable() {
-  // Stop listening to further changes.
-  DCHECK(identity_manager_observation_.IsObservingSource(
-      IdentityManagerFactory::GetForProfile(profile())));
-  identity_manager_observation_.Reset();
-
-  if (on_profile_name_available_)
-    std::move(on_profile_name_available_).Run();
-}
-
-void ProfilePickerView::SignInFlow::FinishSignedInCreationFlow(
-    BrowserOpenedCallback callback,
-    bool enterprise_sync_consent_needed) {
-  // Do nothing if the sign-in flow is aborted or if this has already been
-  // called. Note that this can get called first time from a special case
-  // handling (such as the Settings link) and than second time when the
-  // DiceTurnSyncOnHelper finishes.
-  if (is_finished_)
-    return;
-  is_finished_ = true;
-
-  if (name_for_signed_in_profile_.empty()) {
-    on_profile_name_available_ = base::BindOnce(
-        &ProfilePickerView::SignInFlow::FinishSignedInCreationFlowImpl,
-        weak_ptr_factory_.GetWeakPtr(), std::move(callback),
-        enterprise_sync_consent_needed);
-    return;
-  }
-
-  FinishSignedInCreationFlowImpl(std::move(callback),
-                                 enterprise_sync_consent_needed);
-}
-
-void ProfilePickerView::SignInFlow::FinishSignedInCreationFlowForSAML() {
-  // First, free up `contents()` to be moved to a new browser window.
-  view_->ShowScreenInSystemContents(
-      GURL(url::kAboutBlankURL),
-      /*show_toolbar=*/false, /*enable_navigating_back=*/false,
-      /*navigation_finished_closure=*/
-      base::BindOnce(&ProfilePickerView::SignInFlow::OnSignInContentsFreedUp,
-                     // Unretained is enough as the callback is called by a
-                     // member of `view_` that outlives `this`.
-                     base::Unretained(this)));
-}
-
-void ProfilePickerView::SignInFlow::OnSignInContentsFreedUp() {
-  DCHECK(!is_finished_);
-  is_finished_ = true;
-
-  DCHECK(name_for_signed_in_profile_.empty());
-  name_for_signed_in_profile_ =
-      profiles::GetDefaultNameForNewEnterpriseProfile();
-  contents_->SetDelegate(nullptr);
-  FinishSignedInCreationFlowImpl(
-      base::BindOnce(&ContinueSAMLSignin, std::move(contents_)),
-      /*enterprise_sync_consent_needed=*/true);
-}
-
-void ProfilePickerView::SignInFlow::FinishSignedInCreationFlowImpl(
-    BrowserOpenedCallback callback,
-    bool enterprise_sync_consent_needed) {
-  DCHECK(!name_for_signed_in_profile_.empty());
-
-  ProfileAttributesEntry* entry =
-      g_browser_process->profile_manager()
-          ->GetProfileAttributesStorage()
-          .GetProfileAttributesWithPath(profile()->GetPath());
-  if (!entry) {
-    NOTREACHED();
-    return;
-  }
-
-  entry->SetIsOmitted(false);
-  if (!profile()->GetPrefs()->GetBoolean(prefs::kForceEphemeralProfiles)) {
-    // Unmark this profile ephemeral so that it isn't deleted upon next startup.
-    // Profiles should never be made non-ephemeral if ephemeral mode is forced
-    // by policy.
-    entry->SetIsEphemeral(false);
-  }
-  entry->SetLocalProfileName(name_for_signed_in_profile_,
-                             /*is_default_name=*/false);
-  ProfileMetrics::LogProfileAddNewUser(
-      ProfileMetrics::ADD_NEW_PROFILE_PICKER_SIGNED_IN);
-
-  // If sync is not enabled (and will not likely be enabled with an enterprise
-  // consent), apply a new color to the profile (otherwise, a more complicated
-  // logic gets triggered in ShowCustomizationBubble()).
-  if (!enterprise_sync_consent_needed &&
-      !ProfileCustomizationBubbleSyncController::CanThemeSyncStart(profile())) {
-    auto* theme_service = ThemeServiceFactory::GetForProfile(profile());
-    theme_service->BuildAutogeneratedThemeFromColor(profile_color_);
-  }
-
-  // Skip the FRE for this profile as it's replaced by profile creation flow.
-  profile()->GetPrefs()->SetBoolean(prefs::kHasSeenWelcomePage, true);
-
-  // TODO(crbug.com/1126913): Change the callback of
-  // profiles::OpenBrowserWindowForProfile() to be a OnceCallback as it is only
-  // called once.
-  profiles::OpenBrowserWindowForProfile(
-      base::AdaptCallbackForRepeating(
-          base::BindOnce(&ProfilePickerView::SignInFlow::OnBrowserOpened,
-                         weak_ptr_factory_.GetWeakPtr(), std::move(callback))),
-      /*always_create=*/false,   // Don't create a window if one already exists.
-      /*is_new_profile=*/false,  // Don't create a first run window.
-      /*unblock_extensions=*/false,  // There is no need to unblock all
-                                     // extensions because we only open browser
-                                     // window if the Profile is not locked.
-                                     // Hence there is no extension blocked.
-      profile(), Profile::CREATE_STATUS_INITIALIZED);
-}
-
-void ProfilePickerView::SignInFlow::OnBrowserOpened(
-    BrowserOpenedCallback finish_flow_callback,
-    Profile* profile,
-    Profile::CreateStatus profile_create_status) {
-  DCHECK_EQ(profile, profile_);
-
-  // Hide the flow window. This posts a task on the message loop to destroy the
-  // window incl. this view.
-  view_->Clear();
-
-  if (!finish_flow_callback)
-    return;
-
-  Browser* browser = chrome::FindLastActiveWithProfile(profile);
-  DCHECK(browser);
-  std::move(finish_flow_callback).Run(browser);
-}
-
 void ProfilePickerView::ConfigureAccelerators() {
   // By default, dialog views close when pressing escape. Override this
   // behavior as the profile picker should not close in that case.
@@ -1404,10 +953,6 @@
   dialog_host_.HideDialog();
 }
 
-void ProfilePickerView::DisplayErrorMessage() {
-  dialog_host_.DisplayErrorMessage();
-}
-
 base::FilePath ProfilePickerView::GetForceSigninProfilePath() const {
   return dialog_host_.GetForceSigninProfilePath();
 }
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.h b/chrome/browser/ui/views/profiles/profile_picker_view.h
index 84e847cf..72069c5 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_view.h
+++ b/chrome/browser/ui/views/profiles/profile_picker_view.h
@@ -6,6 +6,7 @@
 #define CHROME_BROWSER_UI_VIEWS_PROFILES_PROFILE_PICKER_VIEW_H_
 
 #include "base/cancelable_callback.h"
+#include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/chrome_web_modal_dialog_manager_delegate.h"
@@ -22,8 +23,7 @@
 #include "ui/views/view.h"
 #include "ui/views/widget/widget_delegate.h"
 
-struct AccountInfo;
-class Browser;
+class ProfilePickerSignInFlowController;
 
 namespace base {
 class FilePath;
@@ -36,6 +36,10 @@
 class WebContents;
 }  // namespace content
 
+namespace ui {
+class ThemeProvider;
+}  // namespace ui
+
 // Dialog widget that contains the Desktop Profile picker webui.
 class ProfilePickerView : public views::WidgetDelegateView,
                           public content::WebContentsDelegate,
@@ -74,6 +78,16 @@
   // Creates a simple back button and adds it to the toolbar.
   void CreateToolbarBackButton();
 
+  // Hides the profile picker.
+  void Clear();
+
+  // content::WebContentsDelegate:
+  bool HandleKeyboardEvent(
+      content::WebContents* source,
+      const content::NativeWebKeyboardEvent& event) override;
+  bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
+                         const content::ContextMenuParams& params) override;
+
  private:
   friend class ProfilePicker;
 
@@ -102,141 +116,8 @@
     base::OnceClosure closure_;
   };
 
-  // Class responsible for the sign-in profile creation flow (within
-  // ProfilePickerView).
-  // TODO(crbug.com/1180654): Move into a separate unit and rename to, e.g.,
-  // ProfilePickerSignInFlowController.
-  class SignInFlow : public content::WebContentsDelegate,
-                     public ChromeWebModalDialogManagerDelegate,
-                     public signin::IdentityManager::Observer {
-   public:
-    using BrowserOpenedCallback = base::OnceCallback<void(Browser*)>;
-
-    SignInFlow(ProfilePickerView* view,
-               Profile* profile,
-               SkColor profile_color,
-               base::TimeDelta extended_account_info_timeout);
-    ~SignInFlow() override;
-    SignInFlow(const SignInFlow&) = delete;
-    SignInFlow& operator=(const SignInFlow&) = delete;
-
-    // Must be called after constructor.
-    void Init();
-
-    // Cancels the flow explicitly. This does not log any metrics, the caller
-    // must take care of logging the outcome of the flow on its own.
-    void Cancel();
-
-    content::WebContents* contents() const { return contents_.get(); }
-
-    // Updates the profile color provided in the constructor.
-    void SetProfileColor(SkColor color);
-    // Returns the profile color, taking into account current policies.
-    SkColor GetProfileColor() const;
-
-    bool IsSigningIn() const;
-
-    // Returns theme provider based on `profile_`.
-    const ui::ThemeProvider* GetThemeProvider() const;
-
-    // Returns the domain of the email of the signed-in user or an empty string
-    // if the user is not signed-in.
-    std::string GetUserDomain() const;
-
-    Profile* profile() const { return profile_; }
-
-   private:
-    // content::WebContentsDelegate:
-    bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
-                           const content::ContextMenuParams& params) override;
-    void AddNewContents(content::WebContents* source,
-                        std::unique_ptr<content::WebContents> new_contents,
-                        const GURL& target_url,
-                        WindowOpenDisposition disposition,
-                        const gfx::Rect& initial_rect,
-                        bool user_gesture,
-                        bool* was_blocked) override;
-    bool HandleKeyboardEvent(
-        content::WebContents* source,
-        const content::NativeWebKeyboardEvent& event) override;
-    void NavigationStateChanged(
-        content::WebContents* source,
-        content::InvalidateTypes changed_flags) override;
-
-    // ChromeWebModalDialogManagerDelegate:
-    web_modal::WebContentsModalDialogHost* GetWebContentsModalDialogHost()
-        override;
-
-    // IdentityManager::Observer:
-    void OnRefreshTokenUpdatedForAccount(
-        const CoreAccountInfo& account_info) override;
-    void OnExtendedAccountInfoUpdated(const AccountInfo& account_info) override;
-
-    // Helper functions to deal with the lack of extended account info.
-    void OnExtendedAccountInfoTimeout(const CoreAccountInfo& account);
-    void OnProfileNameAvailable();
-
-    // Finishes the creation flow by marking `profile_being_created_` as fully
-    // created, opening a browser window for this profile and calling
-    // `callback`.
-    void FinishSignedInCreationFlow(BrowserOpenedCallback callback,
-                                    bool enterprise_sync_consent_needed);
-    void FinishSignedInCreationFlowImpl(BrowserOpenedCallback callback,
-                                        bool enterprise_sync_consent_needed);
-
-    // Finishes the flow by finalizing the profile and continuing the SAML
-    // sign-in in a browser window.
-    void FinishSignedInCreationFlowForSAML();
-    void OnSignInContentsFreedUp();
-
-    // Internal callback to finish the last steps of the signed-in creation
-    // flow.
-    void OnBrowserOpened(BrowserOpenedCallback finish_flow_callback,
-                         Profile* profile,
-                         Profile::CreateStatus profile_create_status);
-
-    // The parent view element, must outlive this object.
-    ProfilePickerView* view_;
-
-    // The web contents backed by `profile`. This is used for displaying the
-    // sign-in flow.
-    std::unique_ptr<content::WebContents> contents_;
-
-    Profile* profile_ = nullptr;
-
-    // Set for the profile at the very end to avoid coloring the simple toolbar
-    // for GAIA sign-in (that uses the ThemeProvider of the current profile).
-    SkColor profile_color_;
-
-    // For finishing the profile creation flow, the extended account info is
-    // needed (for properly naming the new profile). After a timeout, a fallback
-    // name is used, instead, to unblock the flow.
-    base::TimeDelta extended_account_info_timeout_;
-
-    // Controls whether the flow still needs to finalize (which includes showing
-    // `profile` browser window at the end of the sign-in flow).
-    bool is_finished_ = false;
-
-    // Email of the signed-in account. It is set after the user finishes the
-    // sign-in flow on GAIA and Chrome receives the account info.
-    std::string email_;
-
-    std::u16string name_for_signed_in_profile_;
-    base::OnceClosure on_profile_name_available_;
-
-    base::CancelableOnceClosure extended_account_info_timeout_closure_;
-
-    base::ScopedObservation<signin::IdentityManager,
-                            signin::IdentityManager::Observer>
-        identity_manager_observation_{this};
-
-    base::WeakPtrFactory<SignInFlow> weak_ptr_factory_{this};
-  };
-
   // Displays the profile picker.
   void Display(ProfilePicker::EntryPoint entry_point);
-  // Hides the profile picker.
-  void Clear();
 
   // On system profile creation success, it initializes the view.
   void OnSystemProfileCreated(Profile* system_profile,
@@ -282,13 +163,6 @@
   bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
   void OnThemeChanged() override;
 
-  // content::WebContentsDelegate:
-  bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
-                         const content::ContextMenuParams& params) override;
-  bool HandleKeyboardEvent(
-      content::WebContents* source,
-      const content::NativeWebKeyboardEvent& event) override;
-
   // web_modal::WebContentsModalDialogHost
   gfx::NativeView GetHostView() const override;
   gfx::Point GetDialogPosition(const gfx::Size& size) override;
@@ -368,7 +242,7 @@
   // WebContents outlive this observer.
   std::unique_ptr<NavigationFinishedObserver> show_screen_finished_observer_;
 
-  std::unique_ptr<SignInFlow> sign_in_;
+  std::unique_ptr<ProfilePickerSignInFlowController> sign_in_;
 
   // Delay used for a timeout, may be overridden by tests.
   base::TimeDelta extended_account_info_timeout_;
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.h b/chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.h
index d423066..510f31b 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.h
+++ b/chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.h
@@ -7,6 +7,7 @@
 
 #include "base/scoped_observation.h"
 #include "chrome/browser/profiles/profile_metrics.h"
+#include "chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h"
 #include "chrome/browser/ui/views/profiles/profile_picker_view.h"
 #include "chrome/browser/ui/webui/signin/dice_turn_sync_on_helper.h"
 #include "chrome/browser/ui/webui/signin/enterprise_profile_welcome_ui.h"
@@ -22,11 +23,9 @@
 class ProfilePickerViewSyncDelegate : public DiceTurnSyncOnHelper::Delegate,
                                       public LoginUIService::Observer {
  public:
-  // TODO(crbug.com/1180654): Replace the first param by
-  // SignInFlow::BrowserOpenedCallback once SignInFlow has a separate unit.
-  using OpenBrowserCallback =
-      base::OnceCallback<void(base::OnceCallback<void(Browser*)>,
-                              bool enterprise_sync_consent_needed)>;
+  using OpenBrowserCallback = base::OnceCallback<void(
+      ProfilePickerSignInFlowController::BrowserOpenedCallback,
+      bool enterprise_sync_consent_needed)>;
 
   ProfilePickerViewSyncDelegate(Profile* profile,
                                 OpenBrowserCallback open_browser_callback);
diff --git a/chrome/browser/ui/web_applications/web_app_link_capturing_browsertest.cc b/chrome/browser/ui/web_applications/web_app_link_capturing_browsertest.cc
index 9664b2a..69f3709 100644
--- a/chrome/browser/ui/web_applications/web_app_link_capturing_browsertest.cc
+++ b/chrome/browser/ui/web_applications/web_app_link_capturing_browsertest.cc
@@ -513,8 +513,6 @@
 
 IN_PROC_BROWSER_TEST_F(WebAppDeclarativeLinkCapturingOriginTrialBrowserTest,
                        OriginTrial) {
-  WebAppProvider& provider = *WebAppProvider::Get(browser()->profile());
-
   bool serve_token = true;
   content::URLLoaderInterceptor interceptor(base::BindLambdaForTesting(
       [&serve_token](
@@ -547,8 +545,8 @@
   AppId app_id =
       web_app::InstallWebAppFromPage(browser(), GURL(kTestWebAppUrl));
 
-#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
   // Origin trial should grant the app access.
+  WebAppProvider& provider = *WebAppProvider::Get(browser()->profile());
   EXPECT_EQ(provider.registrar().GetAppCaptureLinks(app_id),
             blink::mojom::CaptureLinks::kNewClient);
 
@@ -583,13 +581,6 @@
   // origin trial.
   EXPECT_EQ(provider.registrar().GetAppCaptureLinks(app_id),
             blink::mojom::CaptureLinks::kUndefined);
-#else
-  // The origin trial is not available outside of Chrome OS.
-  EXPECT_EQ(provider.registrar().GetAppCaptureLinks(app_id),
-            blink::mojom::CaptureLinks::kUndefined);
-
-  ALLOW_UNUSED_LOCAL(app_web_contents);
-#endif  // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
 }
 
 }  // namespace web_app
diff --git a/chrome/browser/ui/webui/flags/flags_ui.cc b/chrome/browser/ui/webui/flags/flags_ui.cc
index 612a3e7..c38c3277 100644
--- a/chrome/browser/ui/webui/flags/flags_ui.cc
+++ b/chrome/browser/ui/webui/flags/flags_ui.cc
@@ -49,6 +49,7 @@
 #include "chrome/browser/ash/settings/cros_settings.h"
 #include "chrome/browser/ash/settings/owner_flags_storage.h"
 #include "chrome/browser/infobars/infobar_service.h"
+#include "chrome/browser/infobars/simple_alert_infobar_creator.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/account_id/account_id.h"
 #include "components/infobars/core/simple_alert_infobar_delegate.h"
@@ -128,7 +129,7 @@
   // Show a warning info bar when kSafeMode switch is present.
   if (base::CommandLine::ForCurrentProcess()->HasSwitch(
           chromeos::switches::kSafeMode)) {
-    SimpleAlertInfoBarDelegate::Create(
+    CreateSimpleAlertInfoBar(
         InfoBarService::FromWebContents(flags_ui->web_ui()->GetWebContents()),
         infobars::InfoBarDelegate::BAD_FLAGS_INFOBAR_DELEGATE,
         &vector_icons::kWarningIcon,
@@ -138,7 +139,7 @@
 
   // Show a warning info bar for secondary users.
   if (!chromeos::ProfileHelper::IsPrimaryProfile(profile)) {
-    SimpleAlertInfoBarDelegate::Create(
+    CreateSimpleAlertInfoBar(
         InfoBarService::FromWebContents(flags_ui->web_ui()->GetWebContents()),
         infobars::InfoBarDelegate::BAD_FLAGS_INFOBAR_DELEGATE,
         &vector_icons::kWarningIcon,
diff --git a/chrome/browser/ui/webui/settings/chromeos/languages_section.cc b/chrome/browser/ui/webui/settings/chromeos/languages_section.cc
index 13d8af3f..c4cd972 100644
--- a/chrome/browser/ui/webui/settings/chromeos/languages_section.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/languages_section.cc
@@ -236,8 +236,8 @@
        IDS_OS_SETTINGS_LANGUAGES_CHANGE_DEVICE_LANGUAGE_BUTTON_DESCRIPTION},
       {"languagesPreferenceTitle",
        IDS_OS_SETTINGS_LANGUAGES_LANGUAGES_PREFERENCE_TITLE},
-      {"languagesPreferenceDescription",
-       IDS_OS_SETTINGS_LANGUAGES_LANGUAGES_PREFERENCE_DESCRIPTION},
+      {"websiteLanguagesTitle",
+       IDS_OS_SETTINGS_LANGUAGES_WEBSITE_LANGUAGES_TITLE},
       {"translateTargetLabel",
        IDS_OS_SETTINGS_LANGUAGES_TRANSLATE_TARGET_LABEL},
       {"offerToTranslateThisLanguage",
@@ -271,6 +271,11 @@
           IDS_OS_SETTINGS_LANGUAGES_LANGUAGES_PREFERENCE_DESCRIPTION,
           base::ASCIIToUTF16(chrome::kLanguageSettingsLearnMoreUrl)));
   html_source->AddString(
+      "websiteLanguagesDescription",
+      l10n_util::GetStringFUTF16(
+          IDS_OS_SETTINGS_LANGUAGES_WEBSITE_LANGUAGES_DESCRIPTION,
+          base::ASCIIToUTF16(chrome::kLanguageSettingsLearnMoreUrl)));
+  html_source->AddString(
       "changeDeviceLanguageDialogDescription",
       l10n_util::GetStringFUTF16(
           IDS_OS_SETTINGS_LANGUAGES_CHANGE_DEVICE_LANGUAGE_DIALOG_DESCRIPTION,
diff --git a/chrome/browser/web_applications/components/BUILD.gn b/chrome/browser/web_applications/components/BUILD.gn
index 1fbd337..f432609 100644
--- a/chrome/browser/web_applications/components/BUILD.gn
+++ b/chrome/browser/web_applications/components/BUILD.gn
@@ -219,6 +219,7 @@
     "file_handler_manager_unittest.cc",
     "install_finalizer_unittest.cc",
     "os_integration_manager_unittest.cc",
+    "preinstalled_app_install_features_unittest.cc",
     "protocol_handler_manager_unittest.cc",
     "web_app_constants_unittest.cc",
     "web_app_data_retriever_unittest.cc",
@@ -299,6 +300,10 @@
     deps += [ "//chrome/browser/chromeos" ]
   }
 
+  if (is_chromeos_ash || is_chromeos_lacros) {
+    deps += [ "//chromeos/crosapi/cpp" ]
+  }
+
   if (is_win) {
     deps += [ "//chrome/browser/web_applications/chrome_pwa_launcher:util" ]
   }
diff --git a/chrome/browser/web_applications/components/preinstalled_app_install_features.cc b/chrome/browser/web_applications/components/preinstalled_app_install_features.cc
index 84cf8c7..c250c6c 100644
--- a/chrome/browser/web_applications/components/preinstalled_app_install_features.cc
+++ b/chrome/browser/web_applications/components/preinstalled_app_install_features.cc
@@ -5,6 +5,8 @@
 #include "chrome/browser/web_applications/components/preinstalled_app_install_features.h"
 
 #include "base/feature_list.h"
+#include "chrome/common/channel_info.h"
+#include "components/version_info/channel.h"
 
 namespace web_app {
 
@@ -36,13 +38,44 @@
       base::FEATURE_DISABLED_BY_DEFAULT
 };
 
+#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+// Enables migration of default installed web apps over to their replacement
+// web apps for Chrome OS beta channel users.
+// This flag overrides the value of the kMigrateDefaultChromeAppToWebAppsGSuite
+// and kMigrateDefaultChromeAppToWebAppsNonGSuite for Chrome OS beta users.
+// Dev/canary/stable channels continue to use the above flags.
+// We do this because:
+//  - The Chrome OS migration flags used to be default enabled.
+//  - Chrome OS beta channel got migrated.
+//  - We changed the flags to be default disabled before it went out to stable.
+//  - We want to avoid reverse migrating beta users (it will lose icon positions
+//    in the shelf/launcher).
+//  - Metrics team has advised us to use client side logic instead of a field
+//    trial to maintain beta's migrated state.
+// Note: This will all go away once the migration is complete.
+const base::Feature kMigrateDefaultChromeAppToWebAppsChromeOsBeta{
+    "MigrateDefaultChromeAppToWebAppsChromeOsBeta",
+    base::FEATURE_ENABLED_BY_DEFAULT};
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+
 bool IsPreinstalledAppInstallFeatureEnabled(base::StringPiece feature_name) {
   if (g_always_enabled_for_testing)
     return true;
 
   for (const base::Feature* feature : kPreinstalledAppInstallFeatures) {
-    if (feature->name == feature_name)
+    if (feature->name == feature_name) {
+#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+      // See |kMigrateDefaultChromeAppToWebAppsChromeOsBeta| comment above.
+      if (chrome::GetChannel() == version_info::Channel::BETA &&
+          (feature == &kMigrateDefaultChromeAppToWebAppsGSuite ||
+           feature == &kMigrateDefaultChromeAppToWebAppsNonGSuite)) {
+        return base::FeatureList::IsEnabled(
+            kMigrateDefaultChromeAppToWebAppsChromeOsBeta);
+      }
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+
       return base::FeatureList::IsEnabled(*feature);
+    }
   }
 
   return false;
diff --git a/chrome/browser/web_applications/components/preinstalled_app_install_features.h b/chrome/browser/web_applications/components/preinstalled_app_install_features.h
index 05652480..9d79097 100644
--- a/chrome/browser/web_applications/components/preinstalled_app_install_features.h
+++ b/chrome/browser/web_applications/components/preinstalled_app_install_features.h
@@ -15,6 +15,10 @@
 
 extern const base::Feature kMigrateDefaultChromeAppToWebAppsNonGSuite;
 
+#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+extern const base::Feature kMigrateDefaultChromeAppToWebAppsChromeOsBeta;
+#endif
+
 // Returns the base::Feature in |kPreinstalledAppInstallFeatures| that
 // corresponds to |feature_name|. Used by external app install configs to gate
 // installation on features listed in |kPreinstalledAppInstallFeatures|.
diff --git a/chrome/browser/web_applications/components/preinstalled_app_install_features_unittest.cc b/chrome/browser/web_applications/components/preinstalled_app_install_features_unittest.cc
new file mode 100644
index 0000000..e7e6c9e
--- /dev/null
+++ b/chrome/browser/web_applications/components/preinstalled_app_install_features_unittest.cc
@@ -0,0 +1,95 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/web_applications/components/preinstalled_app_install_features.h"
+
+#include "base/strings/strcat.h"
+#include "base/system/sys_info.h"
+#include "build/branding_buildflags.h"
+#include "build/build_config.h"
+#include "build/chromeos_buildflags.h"
+#include "chrome/common/chrome_features.h"
+#include "chrome/test/base/testing_profile.h"
+#include "content/public/test/browser_task_environment.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+#include "chromeos/crosapi/cpp/crosapi_constants.h"
+#endif
+
+namespace web_app {
+
+struct Migrate {
+  bool beta;
+};
+
+class PreinstalledWebAppInstallFeaturesTest
+    : public testing::Test,
+      public ::testing::WithParamInterface<Migrate> {
+ public:
+  static std::string ParamToString(
+      const ::testing::TestParamInfo<Migrate> param_info) {
+    return param_info.param.beta ? "MigrateBeta" : "UnmigrateBeta";
+  }
+
+  PreinstalledWebAppInstallFeaturesTest() {
+    base_migration_.InitWithFeatures(
+        {kMigrateDefaultChromeAppToWebAppsGSuite,
+         kMigrateDefaultChromeAppToWebAppsNonGSuite},
+        {});
+#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+    if (GetMigrate().beta) {
+      beta_migration_.InitAndEnableFeature(
+          kMigrateDefaultChromeAppToWebAppsChromeOsBeta);
+    } else {
+      beta_migration_.InitAndDisableFeature(
+          kMigrateDefaultChromeAppToWebAppsChromeOsBeta);
+    }
+#endif  // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+  }
+  ~PreinstalledWebAppInstallFeaturesTest() override = default;
+
+  const Migrate& GetMigrate() { return GetParam(); }
+
+ private:
+  base::test::ScopedFeatureList base_migration_;
+  base::test::ScopedFeatureList beta_migration_;
+};
+
+TEST_P(PreinstalledWebAppInstallFeaturesTest, NonBetaChannel) {
+  EXPECT_TRUE(IsPreinstalledAppInstallFeatureEnabled(
+      kMigrateDefaultChromeAppToWebAppsGSuite.name));
+  EXPECT_TRUE(IsPreinstalledAppInstallFeatureEnabled(
+      kMigrateDefaultChromeAppToWebAppsNonGSuite.name));
+}
+
+#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+TEST_P(PreinstalledWebAppInstallFeaturesTest, BetaChannel) {
+  base::SysInfo::SetChromeOSVersionInfoForTest(
+      base::StrCat(
+          {crosapi::kChromeOSReleaseTrack, "=", crosapi::kReleaseChannelBeta}),
+      base::Time::Now());
+
+  EXPECT_EQ(IsPreinstalledAppInstallFeatureEnabled(
+                kMigrateDefaultChromeAppToWebAppsGSuite.name),
+            GetMigrate().beta);
+  EXPECT_EQ(IsPreinstalledAppInstallFeatureEnabled(
+                kMigrateDefaultChromeAppToWebAppsNonGSuite.name),
+            GetMigrate().beta);
+
+  base::SysInfo::ResetChromeOSVersionInfoForTest();
+}
+#endif  // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+
+INSTANTIATE_TEST_SUITE_P(All,
+                         PreinstalledWebAppInstallFeaturesTest,
+                         testing::Values(Migrate{.beta = true},
+                                         Migrate{.beta = false}),
+                         &PreinstalledWebAppInstallFeaturesTest::ParamToString);
+
+}  // namespace web_app
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index 4864ce7..3c7fea5 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-master-1619567641-53df4d93cea09a77e17115e55d74f50d0e18eeda.profdata
+chrome-mac-master-1619611159-fd3f76bf749c862ea82431a71981186448e4aafc.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 97ed8dbf..bfb030c 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-master-1619578171-5731c483e2fbaf9c8dc449565a36daa1c0b3ef66.profdata
+chrome-win32-master-1619611159-814ff4ad2e5da8294a969d90d950ddf4421bb520.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index 06a78c1..0043fec 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-master-1619578171-c779e52dacab672955a85853f588333421cd0900.profdata
+chrome-win64-master-1619588955-1f6be541ab143ad5fe4b61119aebe87e57216bd3.profdata
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index f5dc52c..c8022e4 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -1386,6 +1386,7 @@
       "../browser/signin/e2e_tests/live_sign_in_test.cc",
       "../browser/signin/e2e_tests/live_test.cc",
       "../browser/signin/e2e_tests/live_test.h",
+      "../browser/signin/remove_local_account_browsertest.cc",
       "../browser/site_isolation/chrome_site_per_process_browsertest.cc",
       "../browser/site_isolation/chrome_site_per_process_test.cc",
       "../browser/site_isolation/chrome_site_per_process_test.h",
@@ -2668,6 +2669,8 @@
         "../browser/ash/login/wizard_controller_browsertest.cc",
         "../browser/ash/plugin_vm/plugin_vm_test_helper.cc",
         "../browser/ash/profiles/profile_helper_browsertest.cc",
+        "../browser/ash/remote_apps/remote_apps_impl_browsertest.cc",
+        "../browser/ash/remote_apps/remote_apps_manager_browsertest.cc",
         "../browser/ash/system/device_disabling_browsertest.cc",
         "../browser/ash/system/tray_accessibility_browsertest.cc",
         "../browser/ash/web_applications/camera_app_integration_browsertest.cc",
@@ -2808,8 +2811,6 @@
         "../browser/chromeos/printing/test_cups_printers_manager.h",
         "../browser/chromeos/printing/test_printer_configurer.cc",
         "../browser/chromeos/printing/test_printer_configurer.h",
-        "../browser/chromeos/remote_apps/remote_apps_impl_browsertest.cc",
-        "../browser/chromeos/remote_apps/remote_apps_manager_browsertest.cc",
         "../browser/chromeos/scoped_test_system_nss_key_slot_mixin.cc",
         "../browser/chromeos/scoped_test_system_nss_key_slot_mixin.h",
         "../browser/chromeos/shutdown_policy_browsertest.cc",
diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
index a53907de..35f5238 100644
--- a/chrome/test/android/BUILD.gn
+++ b/chrome/test/android/BUILD.gn
@@ -329,5 +329,6 @@
     "//ui/android:ui_java",
     "//ui/android:ui_java_test_support",
     "//url:gurl_java",
+    "//url:gurl_junit_test_support",
   ]
 }
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/browser/history/StubbedHistoryProvider.java b/chrome/test/android/javatests/src/org/chromium/chrome/browser/history/StubbedHistoryProvider.java
index 537a5e2b..055e33aa 100644
--- a/chrome/test/android/javatests/src/org/chromium/chrome/browser/history/StubbedHistoryProvider.java
+++ b/chrome/test/android/javatests/src/org/chromium/chrome/browser/history/StubbedHistoryProvider.java
@@ -7,6 +7,7 @@
 import android.text.TextUtils;
 
 import org.chromium.base.test.util.CallbackHelper;
+import org.chromium.url.JUnitTestGURLs;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -52,7 +53,7 @@
             // Start a new search; simulate basic search.
             mLastQuery = mLastQuery.toLowerCase(Locale.getDefault());
             for (HistoryItem item : mItems) {
-                if (item.getUrl().toLowerCase(Locale.getDefault()).contains(mLastQuery)
+                if (item.getUrl().getSpec().toLowerCase(Locale.getDefault()).contains(mLastQuery)
                         || item.getTitle().toLowerCase(Locale.getDefault()).contains(mLastQuery)) {
                     mSearchItems.add(item);
                 }
@@ -110,23 +111,23 @@
     public static HistoryItem createHistoryItem(int which, long timestamp) {
         long[] nativeTimestamps = {timestamp * 1000};
         if (which == 0) {
-            return new HistoryItem("http://google.com/", "www.google.com", "Google", timestamp,
-                    nativeTimestamps, false);
+            return new HistoryItem(JUnitTestGURLs.getGURL(JUnitTestGURLs.SEARCH_URL),
+                    "www.google.com", "Google", timestamp, nativeTimestamps, false);
         } else if (which == 1) {
-            return new HistoryItem(
-                    "http://foo.com/", "www.foo.com", "Foo", timestamp, nativeTimestamps, false);
+            return new HistoryItem(JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL),
+                    "www.example.com", "Foo", timestamp, nativeTimestamps, false);
         } else if (which == 2) {
-            return new HistoryItem(
-                    "http://bar.com/", "www.bar.com", "Bar", timestamp, nativeTimestamps, false);
+            return new HistoryItem(JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_1), "www.one.com",
+                    "Bar", timestamp, nativeTimestamps, false);
         } else if (which == 3) {
-            return new HistoryItem(
-                    "http://news.com/", "www.news.com", "News", timestamp, nativeTimestamps, false);
+            return new HistoryItem(JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_2), "www.two.com",
+                    "News", timestamp, nativeTimestamps, false);
         } else if (which == 4) {
-            return new HistoryItem("http://eng.com/", "www.eng.com", "Engineering", timestamp,
-                    nativeTimestamps, false);
+            return new HistoryItem(JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_3), "www.three.com",
+                    "Engineering", timestamp, nativeTimestamps, false);
         } else if (which == 5) {
-            return new HistoryItem("http://blocked.com/", "www.blocked.com", "Cannot Visit",
-                    timestamp, nativeTimestamps, true);
+            return new HistoryItem(JUnitTestGURLs.getGURL(JUnitTestGURLs.INITIAL_URL),
+                    "initial.com", "Cannot Visit", timestamp, nativeTimestamps, true);
         } else {
             return null;
         }
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/pagecontroller/tests/webapk/MapsGoFirstRunTest.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/pagecontroller/tests/webapk/MapsGoFirstRunTest.java
index ea7453b..d7f8455 100644
--- a/chrome/test/android/javatests/src/org/chromium/chrome/test/pagecontroller/tests/webapk/MapsGoFirstRunTest.java
+++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/pagecontroller/tests/webapk/MapsGoFirstRunTest.java
@@ -26,10 +26,11 @@
 import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.CallbackHelper;
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.base.test.util.DisabledTest;
-import org.chromium.chrome.R;
+import org.chromium.base.test.util.CriteriaHelper;
+import org.chromium.chrome.browser.firstrun.FirstRunActivity;
 import org.chromium.chrome.browser.firstrun.FirstRunStatus;
 import org.chromium.chrome.browser.firstrun.LightweightFirstRunActivity;
+import org.chromium.chrome.browser.webapps.WebappActivity;
 import org.chromium.chrome.browser.webapps.WebappRegistry;
 import org.chromium.chrome.test.pagecontroller.controllers.webapk.first_run.LightWeightTOSController;
 import org.chromium.chrome.test.pagecontroller.rules.ChromeUiApplicationTestRule;
@@ -53,7 +54,11 @@
             "policy={\"TosDialogBehavior\":1}";
     private static final String FLAG_POLICY_TOS_DIALOG_BEHAVIOR_SKIP =
             "policy={\"TosDialogBehavior\":2}";
-    private static final long MAPS_GO_FRE_TIMEOUT_MS = 9000L;
+
+    // Launching the PWA is currently taking 9-10 seconds on emulators. Increasing this
+    // substantially to avoid flakes. See https://crbug.com/1142821.
+    private static final long MAPS_GO_FRE_TIMEOUT_MS = 20000L;
+
     public ChromeUiAutomatorTestRule mUiAutomatorRule = new ChromeUiAutomatorTestRule();
     public ChromeUiApplicationTestRule mChromeUiRule = new ChromeUiApplicationTestRule();
 
@@ -61,6 +66,8 @@
     public final TestRule mChain = RuleChain.outerRule(mChromeUiRule).around(mUiAutomatorRule);
 
     private Activity mLightweightFreActivity;
+    private Activity mFirstRunActivity;
+    private Activity mWebappActivity;
     private ApplicationStatus.ActivityStateListener mActivityStateListener;
     private final CallbackHelper mFreStoppedCallback = new CallbackHelper();
 
@@ -73,6 +80,10 @@
             if (activity instanceof LightweightFirstRunActivity) {
                 if (mLightweightFreActivity == null) mLightweightFreActivity = activity;
                 if (newState == ActivityState.STOPPED) mFreStoppedCallback.notifyCalled();
+            } else if (activity instanceof FirstRunActivity) {
+                if (mFirstRunActivity == null) mFirstRunActivity = activity;
+            } else if (activity instanceof WebappActivity) {
+                if (mWebappActivity == null) mWebappActivity = activity;
             }
         };
         ApplicationStatus.registerStateListenerForAllActivities(mActivityStateListener);
@@ -85,7 +96,6 @@
     }
 
     @Test
-    @DisabledTest(message = "https://crbug.com/1142821")
     public void testFirstRunIsShown() {
         LightweightFirstRunActivity.setSupportSkippingTos(false);
         FirstRunStatus.setLightweightFirstRunFlowComplete(false);
@@ -95,7 +105,21 @@
         Assert.assertTrue("Light weight TOS page should be shown.", controller.isCurrentPageThis());
 
         controller.acceptAndContinue();
-        verifyRunningInChromeBannerOnScreen();
+        // Note for offline devices this PWA will not be healthy, see https://crbug.com/1142821 for
+        // details. Just verify the right activity has started.
+        CriteriaHelper.pollInstrumentationThread(
+                () -> mWebappActivity != null, "WebappActivity did not start.");
+    }
+
+    @Test
+    public void testFirstRunFallbackForInvalidPwa() {
+        // Verification will fail for this APK, so instead of using the LWFRE, the full FRE will be
+        // shown instead.
+        WebApkValidator.setDisableValidationForTesting(false);
+        launchWebapk("org.chromium.test.maps_go_webapk", "org.chromium.chrome");
+        CriteriaHelper.pollInstrumentationThread(
+                () -> mFirstRunActivity != null, "FirstRunActivity did not start");
+        Assert.assertNull("Lightweight FRE should not have started.", mLightweightFreActivity);
     }
 
     @Test
@@ -160,12 +184,4 @@
         IUi2Locator packageLocator = Ui2Locators.withPackageName(chromePackageName);
         helper.verifyOnScreen(packageLocator);
     }
-
-    private void verifyRunningInChromeBannerOnScreen() {
-        UiLocatorHelper helper =
-                UiAutomatorUtils.getInstance().getLocatorHelper(MAPS_GO_FRE_TIMEOUT_MS);
-        IUi2Locator runningInChromeBanner =
-                Ui2Locators.withContentDescString(R.string.twa_running_in_chrome);
-        helper.verifyOnScreen(runningInChromeBanner);
-    }
 }
diff --git a/chromeos/crosapi/mojom/keystore_service.mojom b/chromeos/crosapi/mojom/keystore_service.mojom
index 5c08a3a..337e843b 100644
--- a/chromeos/crosapi/mojom/keystore_service.mojom
+++ b/chromeos/crosapi/mojom/keystore_service.mojom
@@ -163,17 +163,6 @@
   [MinVersion=2]
   GetCertificates@2(KeystoreType keystore) => (GetCertificatesResult result);
 
-  // Generates a private/public key-pair with |algorithm| and stores the results
-  // in |keystore|. Returns the public key as a binary blob.
-  // TODO(https://crbug.com/1166105): In the long term it doesn't make sense to
-  // pass |extension_id|. We should find a better solution.
-  [MinVersion=2]
-  GenerateKey@3(KeystoreType keystore,
-      KeystoreSigningAlgorithm algorithm,
-      [MinVersion=5]
-      string? extension_id) =>
-      (KeystoreBinaryResult result);
-
   // Adds a DER encoded X.509 certificate to the indicated keystore. Returns
   // empty string on success. It is only valid to call this with a certificate
   // whose corresponding private key is already present in the key store. This
@@ -197,13 +186,26 @@
       KeystoreSigningAlgorithmName algorithm_name) =>
       (GetPublicKeyResult result);
 
+  // Generates a private/public key-pair with |algorithm| and stores the results
+  // in |keystore|. Returns the public key as a binary blob. Also generates
+  // additional metadata to make the key available for future ExtensionSign
+  // calls.
+  // TODO(https://crbug.com/1166105): In the long term it doesn't make sense to
+  // pass |extension_id|. We should find a better solution.
+  [MinVersion=2, RenamedFrom="crosapi.mojom.GenerateKey"]
+  ExtensionGenerateKey@3(KeystoreType keystore,
+      KeystoreSigningAlgorithm algorithm,
+      [MinVersion=5]
+      string? extension_id) =>
+      (KeystoreBinaryResult result);
+
   // Signs some data using a previously generated key, indicated with
   // |public_key|. |scheme| is the WebCrypto signing scheme. |extension_id| is
   // needed to determine if the extension is allowed to use the key.
   // TODO(https://crbug.com/1166105): In the long term it doesn't make sense to
   // pass |extension_id|. We should find a better solution.
-  [MinVersion=4]
-  Sign@7(KeystoreType keystore, array<uint8> public_key,
+  [MinVersion=4, RenamedFrom="crosapi.mojom.Sign"]
+  ExtensionSign@7(KeystoreType keystore, array<uint8> public_key,
       KeystoreSigningScheme scheme,
       array<uint8> data, string extension_id) => (KeystoreBinaryResult result);
 };
diff --git a/chromeos/strings/chromeos_strings_ru.xtb b/chromeos/strings/chromeos_strings_ru.xtb
index 1a5763ff..7ae4c77 100644
--- a/chromeos/strings/chromeos_strings_ru.xtb
+++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -88,7 +88,7 @@
 <translation id="3083667275341675831">Диагностика соединений</translation>
 <translation id="3091839911843451378">Сбой: остановка работы</translation>
 <translation id="3102119246920354026">Кеш</translation>
-<translation id="3122464029669770682">ЦПУ</translation>
+<translation id="3122464029669770682">Процессор</translation>
 <translation id="315116470104423982">Мобильное подключение</translation>
 <translation id="315738237743207937">Обнаружена страница входа</translation>
 <translation id="3188257591659621405">Мои файлы</translation>
@@ -252,7 +252,7 @@
 <translation id="6189418609903030344">Емкость батареи со временем уменьшается</translation>
 <translation id="6191293864534840972">Некорректно указаны серверы доменных имен.</translation>
 <translation id="6223752125779001553">Нет доступных сканеров.</translation>
-<translation id="6232017090690406397">Аккумулятор</translation>
+<translation id="6232017090690406397">Батарея</translation>
 <translation id="6302401976930124515"><ph name="TEST_NAME" />: тестирование отменено.</translation>
 <translation id="6325525973963619867">Ошибка</translation>
 <translation id="636850387210749493">Регистрация в корпоративном домене</translation>
diff --git a/chromeos/strings/chromeos_strings_sv.xtb b/chromeos/strings/chromeos_strings_sv.xtb
index b87d747..df1ef93 100644
--- a/chromeos/strings/chromeos_strings_sv.xtb
+++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -110,9 +110,9 @@
 <translation id="3488065109653206955">Delvis aktiverat</translation>
 <translation id="3527036260304016759">Misslyckades – okänt fel</translation>
 <translation id="3532980081107202182">Ungefär <ph name="MIN_REMAINING" /> minuter kvar</translation>
-<translation id="357889014807611375">Wi-Fi med datapriser</translation>
+<translation id="357889014807611375">wifi med datapriser</translation>
 <translation id="3595596368722241419">Batteriet är fulladdat</translation>
-<translation id="360565022852130722">Wi-Fi-nätverket använder det svaga säkerhetsprotokollet WEP 802.1x</translation>
+<translation id="360565022852130722">wifi-nätverket använder det svaga säkerhetsprotokollet WEP 802.1x</translation>
 <translation id="3689839747745352263">Test – <ph name="TEST_NAME" /></translation>
 <translation id="3740976234706877572"><ph name="AVERAGE_SCORE" /> ★ (<ph name="AGGREGATED_COUNT" /> recensioner)</translation>
 <translation id="3748026146096797577">Ej ansluten</translation>
@@ -155,7 +155,7 @@
 <translation id="458794348635939462">DNS-matchningen av alla värdar misslyckades</translation>
 <translation id="4593212453765072419">Proxyautentisering krävs</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> av <ph name="TOTAL_PAGE_NUMBER" />. Tryck på retur för att avbryta utskriftsjobbet.</translation>
-<translation id="4646949265910132906">Säker Wi-Fi-anslutning</translation>
+<translation id="4646949265910132906">Säker wifi-anslutning</translation>
 <translation id="4652335678334611408">Spara sessionslogg</translation>
 <translation id="4665014895760275686">Tillverkare</translation>
 <translation id="467510802200863975">Lösenorden matchar inte</translation>
@@ -208,7 +208,7 @@
 <translation id="5326394068492324457"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="COMPLETION_STATUS" /></translation>
 <translation id="5332948983412042822">Välj ett nytt nu</translation>
 <translation id="5333530671332546086">Okänd portalstatus</translation>
-<translation id="5372659122375744710">Wi-Fi-nätverket är inte säkert</translation>
+<translation id="5372659122375744710">wifi-nätverket är inte säkert</translation>
 <translation id="5401938042319910061">Kör alla rutiner</translation>
 <translation id="5423849171846380976">Aktiverat</translation>
 <translation id="5430931332414098647">Direktinternetdelning</translation>
@@ -265,7 +265,7 @@
 <translation id="649050271426829538">Har stoppats – papperstrassel</translation>
 <translation id="6516990319416533844">Om du vill testa batteriets laddningshastighet låter du det laddas ur under en kortare period</translation>
 <translation id="6517239166834772319">Utforska</translation>
-<translation id="6527081081771465939">Okänt säkerhetsprotokoll för Wi-Fi</translation>
+<translation id="6527081081771465939">Okänt säkerhetsprotokoll för wifi</translation>
 <translation id="65587193855025101">Flatbädd</translation>
 <translation id="6564646048574748301">Misslyckades – skrivaren kan inte nås</translation>
 <translation id="6618744767048954150">Körs</translation>
@@ -344,7 +344,7 @@
 <translation id="8395584934117017006">Denna <ph name="DEVICE_TYPE" /> är företagshanterad</translation>
 <translation id="8398927464629426868">Hur fort enheten laddas eller laddas ur för närvarande</translation>
 <translation id="8461329675984532579">Hemleverantörens namn</translation>
-<translation id="8475690821716466388">Wi-Fi-nätverket använder det svaga säkerhetsprotokollet WEP PSK</translation>
+<translation id="8475690821716466388">wifi-nätverket använder det svaga säkerhetsprotokollet WEP PSK</translation>
 <translation id="8477551185774834963">DNS-latensen är något högre än det godtagbara tröskelvärdet</translation>
 <translation id="8483248364096924578">IP-adress</translation>
 <translation id="8503813439785031346">Användarnamn</translation>
@@ -361,7 +361,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">Standard</translation>
 <translation id="8798441408945964110">Leverantörens namn</translation>
-<translation id="8814190375133053267">Wi-Fi</translation>
+<translation id="8814190375133053267">wifi</translation>
 <translation id="8818152010000655963">Bakgrund</translation>
 <translation id="8845001906332463065">Få hjälp</translation>
 <translation id="8881098542468797602">Testet lyckades</translation>
diff --git a/components/autofill_assistant/browser/actions/fallback_handler/required_field.cc b/components/autofill_assistant/browser/actions/fallback_handler/required_field.cc
index 4b8e218..7b57d43 100644
--- a/components/autofill_assistant/browser/actions/fallback_handler/required_field.cc
+++ b/components/autofill_assistant/browser/actions/fallback_handler/required_field.cc
@@ -12,6 +12,22 @@
 
 RequiredField::RequiredField(const RequiredField& copy) = default;
 
+void RequiredField::FromProto(const RequiredFieldProto& required_field_proto) {
+  selector = Selector(required_field_proto.element());
+  value_expression = required_field_proto.value_expression();
+  forced = required_field_proto.forced();
+  optional = required_field_proto.is_optional();
+  fill_strategy = required_field_proto.fill_strategy();
+  delay_in_millisecond = required_field_proto.delay_in_millisecond();
+  select_strategy = required_field_proto.select_strategy();
+
+  if (required_field_proto.has_option_element_to_click()) {
+    fallback_click_element =
+        Selector(required_field_proto.option_element_to_click());
+    click_type = required_field_proto.click_type();
+  }
+}
+
 bool RequiredField::ShouldFallback(bool apply_fallback) const {
   return (status == EMPTY && !value_expression.empty() &&
           !fallback_click_element.has_value() &&
diff --git a/components/autofill_assistant/browser/actions/fallback_handler/required_field.h b/components/autofill_assistant/browser/actions/fallback_handler/required_field.h
index 97efc999..7a8a836b 100644
--- a/components/autofill_assistant/browser/actions/fallback_handler/required_field.h
+++ b/components/autofill_assistant/browser/actions/fallback_handler/required_field.h
@@ -6,6 +6,7 @@
 #define COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_FALLBACK_HANDLER_REQUIRED_FIELD_H_
 
 #include "base/optional.h"
+#include "components/autofill_assistant/browser/action_value.pb.h"
 #include "components/autofill_assistant/browser/selector.h"
 #include "components/autofill_assistant/browser/service.pb.h"
 
@@ -20,22 +21,10 @@
   RequiredField();
   RequiredField(const RequiredField& copy);
 
-  template <typename T>
-  void FromProto(const T& required_field_proto) {
-    selector = Selector(required_field_proto.element());
-    value_expression = required_field_proto.value_expression();
-    forced = required_field_proto.forced();
-    optional = required_field_proto.is_optional();
-    fill_strategy = required_field_proto.fill_strategy();
-    delay_in_millisecond = required_field_proto.delay_in_millisecond();
-    select_strategy = required_field_proto.select_strategy();
+  void FromProto(const RequiredFieldProto& required_field_proto);
 
-    if (required_field_proto.has_option_element_to_click()) {
-      fallback_click_element =
-          Selector(required_field_proto.option_element_to_click());
-      click_type = required_field_proto.click_type();
-    }
-  }
+  // Returns true if fallback is required for this field.
+  bool ShouldFallback(bool apply_fallback) const;
 
   // The selector of the field that must be filled.
   Selector selector;
@@ -77,9 +66,6 @@
   // Optional. The click type to be used for clicking JavaScript driven
   // dropdown elements.
   ClickType click_type = ClickType::NOT_SET;
-
-  // Returns true if fallback is required for this field.
-  bool ShouldFallback(bool apply_fallback) const;
 };
 
 }  // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/actions/use_address_action_unittest.cc b/components/autofill_assistant/browser/actions/use_address_action_unittest.cc
index d50b55e..af351ee 100644
--- a/components/autofill_assistant/browser/actions/use_address_action_unittest.cc
+++ b/components/autofill_assistant/browser/actions/use_address_action_unittest.cc
@@ -88,9 +88,9 @@
     return action;
   }
 
-  UseAddressProto::RequiredField* AddRequiredField(ActionProto* action,
-                                                   std::string value_expression,
-                                                   std::string selector) {
+  RequiredFieldProto* AddRequiredField(ActionProto* action,
+                                       std::string value_expression,
+                                       std::string selector) {
     auto* required_field = action->mutable_use_address()->add_required_fields();
     required_field->set_value_expression(value_expression);
     *required_field->mutable_element() = ToSelectorProto(selector);
diff --git a/components/autofill_assistant/browser/actions/use_credit_card_action_unittest.cc b/components/autofill_assistant/browser/actions/use_credit_card_action_unittest.cc
index b12b403f..c6a0aeb1 100644
--- a/components/autofill_assistant/browser/actions/use_credit_card_action_unittest.cc
+++ b/components/autofill_assistant/browser/actions/use_credit_card_action_unittest.cc
@@ -100,10 +100,9 @@
     return action;
   }
 
-  UseCreditCardProto::RequiredField* AddRequiredField(
-      ActionProto* action,
-      std::string value_expression,
-      std::string selector) {
+  RequiredFieldProto* AddRequiredField(ActionProto* action,
+                                       std::string value_expression,
+                                       std::string selector) {
     auto* required_field = action->mutable_use_card()->add_required_fields();
     required_field->set_value_expression(value_expression);
     *required_field->mutable_element() = ToSelectorProto(selector);
diff --git a/components/autofill_assistant/browser/service.proto b/components/autofill_assistant/browser/service.proto
index 0a2c2fe..bf5c40f 100644
--- a/components/autofill_assistant/browser/service.proto
+++ b/components/autofill_assistant/browser/service.proto
@@ -1482,55 +1482,58 @@
   repeated Rectangle restricted = 2;
 }
 
+// Message used to indicate what form fields should be filled with what
+// information coming from either the address or the credit card.
+message RequiredFieldProto {
+  // A string containing any number of "${key}" placeholders, where the key
+  // is an integer corresponding to entries from field_types.h or
+  // |AutofillFormatProto::AutofillAssistantCustomField|.
+  // Example:
+  // * "${3}" -> First name.
+  // * "(+${12}) (${11}) ${10}" -> phone country code, city code, number,
+  //   e.g., (+41) (79) (1234567)
+  // * "${51}" -> Full card name.
+  // * "${53}/${55}" -> expiration month / expiration year, e.g., 04/2021
+  // Note that the set of actually available fields are outside of our
+  // control and are retrieved automatically.
+  // A value expression set to an empty string will clear the field.
+  optional string value_expression = 6;
+
+  // The element to fill.
+  optional SelectorProto element = 2;
+
+  // The strategy used to execute filling the value.
+  // This is only considered for text fields and ignored for dropdowns.
+  optional KeyboardValueFillStrategy fill_strategy = 7;
+
+  // Delay between two key presses when simlulating.
+  // This is only considered for text fields and ignored for dropdowns.
+  optional int32 delay_in_millisecond = 4 [default = 20];
+
+  // The strategy used to select a value option.
+  optional DropdownSelectStrategy select_strategy = 8;
+
+  // Fill in the value even if it's non-empty. This is useful to work around
+  // cases where the way Autofill sets the field doesn't work on the website.
+  optional bool forced = 5;
+
+  // The field is optional. If there is no value from Autofill available or
+  // the element is not found, the field will be skipped.
+  optional bool is_optional = 11;
+
+  // For JavaScript implemented dropdowns. This first clicks on the |element|,
+  // then waits for |option_element_to_click| to appear and clicks it. The
+  // selector must match a generic option, an |inner_text_pattern| will be
+  // added to this element reference to match a single option.
+  // Both clicks use the same |click_type|.
+  optional SelectorProto option_element_to_click = 9;
+  optional ClickType click_type = 10;
+
+  reserved 1, 3;
+}
+
 // Fill a form with an address if there is, otherwise fail this action.
 message UseAddressProto {
-  // Message used to indicate what form fields should be filled with what
-  // information coming from the address.
-  message RequiredField {
-    // A string containing any number of "${key}" placeholders, where the key
-    // is an integer corresponding to entries from field_types.h or
-    // |AutofillFormatProto::AutofillAssistantCustomField|.
-    // Example:
-    // * "3" -> First name.
-    // * "${3}" -> First name.
-    // * "(+${12}) (${11}) ${10}" -> phone country code, city code, number,
-    //   e.g., (+41) (79) (1234567)
-    // Note that the set of actually available fields are outside of our
-    // control and are retrieved automatically from the provided profile.
-    // An value expression set to an empty string will clear the field.
-    optional string value_expression = 6;
-
-    optional SelectorProto element = 2;
-
-    // The strategy used to execute filling the value.
-    optional KeyboardValueFillStrategy fill_strategy = 7;
-
-    // The strategy used to select a value option.
-    optional DropdownSelectStrategy select_strategy = 8;
-
-    // Delay between two key presses when simlulating.
-    optional int32 delay_in_millisecond = 4 [default = 20];
-
-    // Fill in the fill even if it's non-empty. This is useful to work around
-    // cases where the way autofill sets the field doesn't work on the website.
-    // Usually used together with simulate_key_presses.
-    optional bool forced = 5;
-
-    // The field is optional. If there is no value from profile available or
-    // the element is not found, the field will be skipped.
-    optional bool is_optional = 11;
-
-    // For JavaScript implemented dropdowns. This first clicks on the |element|,
-    // then waits for |option_element_to_click| to appear and clicks it. The
-    // selector must match a generic option, an |inner_text_pattern| will be
-    // added to this element reference to match a single option.
-    // Both clicks use the same |click_type|.
-    optional SelectorProto option_element_to_click = 9;
-    optional ClickType click_type = 10;
-
-    reserved 1, 3;
-  }
-
   oneof address_source {
     // The client memory key from which to retrieve the address.
     string name = 1;
@@ -1542,7 +1545,7 @@
   optional SelectorProto form_field_element = 4;
 
   // An optional list of fields that should be filled by this action.
-  repeated RequiredField required_fields = 6;
+  repeated RequiredFieldProto required_fields = 6;
 
   // If true, this skips the Autofill step jumping straight to the
   // |required_fields|.
@@ -1554,52 +1557,6 @@
 // Fill a form with a credit card if there is one stored in client memory,
 // otherwise fail this action.
 message UseCreditCardProto {
-  // Message used to indicate what form fields should be filled with what
-  // information.
-  message RequiredField {
-    // A string containing any number of "${key}" placeholders, where the key
-    // is an integer corresponding to entries from field_types.h or
-    // |AutofillFormatProto::AutofillAssistantCustomField|.
-    // Example:
-    // * "51" -> Full name.
-    // * "${51}" -> Full Name.
-    // * "${53}/${55}" -> expiration month / expiration year
-    // Note that the set of actually available fields are outside of our
-    // control and are retrieved automatically from the provided credit card.
-    // An value expression set to an empty string will clear the field.
-    optional string value_expression = 6;
-
-    optional SelectorProto element = 2;
-
-    // The strategy used to execute filling the value.
-    optional KeyboardValueFillStrategy fill_strategy = 7;
-
-    // The strategy used to select a value option.
-    optional DropdownSelectStrategy select_strategy = 8;
-
-    // Delay between two key presses when simlulating.
-    optional int32 delay_in_millisecond = 4 [default = 20];
-
-    // Fill in the fill even if it's non-empty. This is useful to work around
-    // cases where the way autofill sets the field doesn't work on the website.
-    // Usually used together with simulate_key_presses.
-    optional bool forced = 5;
-
-    // The field is optional. If there is no value from profile available or
-    // the element is not found, the field will be skipped.
-    optional bool is_optional = 11;
-
-    // For JavaScript implemented dropdowns. This first clicks on the |element|,
-    // then waits for |option_element_to_click| to appear and clicks it. The
-    // selector must match a generic option, an |inner_text_pattern| will be
-    // added to this element reference to match a single option.
-    // Both clicks use the same |click_type|.
-    optional SelectorProto option_element_to_click = 9;
-    optional ClickType click_type = 10;
-
-    reserved 1, 3;
-  }
-
   // The client model identifier from which to retrieve the credit card.
   // If not specified, will use the card stored in client memory instead.
   optional string model_identifier = 4;
@@ -1607,7 +1564,7 @@
   // A reference to the card number field in the form that should be filled.
   optional SelectorProto form_field_element = 3;
 
-  repeated RequiredField required_fields = 7;
+  repeated RequiredFieldProto required_fields = 7;
 
   // If true, this skips the Autofill step jumping straight to the
   // |required_fields|.
diff --git a/components/autofill_assistant/browser/starter.cc b/components/autofill_assistant/browser/starter.cc
index 896f0b0d..cbc4f7a 100644
--- a/components/autofill_assistant/browser/starter.cc
+++ b/components/autofill_assistant/browser/starter.cc
@@ -156,6 +156,10 @@
           switches::kAutofillAssistantForceOnboarding) == "true") {
     platform_delegate_->SetOnboardingAccepted(false);
   }
+  if (base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+          switches::kAutofillAssistantForceFirstTimeUser) == "true") {
+    platform_delegate_->SetIsFirstTimeUser(true);
+  }
 
   StartupMode startup_mode = StartupUtil().ChooseStartupModeForIntent(
       *pending_trigger_context_,
diff --git a/components/autofill_assistant/browser/starter_unittest.cc b/components/autofill_assistant/browser/starter_unittest.cc
index d5c146fd..fe26ae0 100644
--- a/components/autofill_assistant/browser/starter_unittest.cc
+++ b/components/autofill_assistant/browser/starter_unittest.cc
@@ -402,6 +402,49 @@
                                       Metrics::OnBoarding::OB_SHOWN, 1u);
 }
 
+TEST_F(StarterTest, ForceFirstTimeUserExperienceForReturningUser) {
+  GetTriggerScriptsResponseProto get_trigger_scripts_response;
+  auto* first_time_user_script =
+      get_trigger_scripts_response.add_trigger_scripts();
+  first_time_user_script->mutable_user_interface()->set_status_message(
+      "First time user");
+  first_time_user_script->mutable_trigger_condition()
+      ->mutable_is_first_time_user();
+  auto* returning_user_script =
+      get_trigger_scripts_response.add_trigger_scripts();
+  returning_user_script->mutable_user_interface()->set_status_message(
+      "Returning user");
+  returning_user_script->mutable_trigger_condition()
+      ->mutable_none_of()
+      ->add_conditions()
+      ->mutable_is_first_time_user();
+  std::string serialized_get_trigger_scripts_response;
+  get_trigger_scripts_response.SerializeToString(
+      &serialized_get_trigger_scripts_response);
+  std::string base64_get_trigger_scripts_response;
+  base::Base64UrlEncode(serialized_get_trigger_scripts_response,
+                        base::Base64UrlEncodePolicy::INCLUDE_PADDING,
+                        &base64_get_trigger_scripts_response);
+
+  SetupPlatformDelegateForReturningUser();
+  fake_platform_delegate_.trigger_script_request_sender_for_test_ = nullptr;
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      switches::kAutofillAssistantForceFirstTimeUser, "true");
+
+  std::map<std::string, std::string> script_parameters = {
+      {"ENABLED", "true"},
+      {"START_IMMEDIATELY", "false"},
+      {"TRIGGER_SCRIPTS_BASE64", base64_get_trigger_scripts_response},
+      {"ORIGINAL_DEEPLINK", "https://www.example.com"}};
+
+  EXPECT_CALL(*mock_trigger_script_ui_delegate_,
+              ShowTriggerScript(first_time_user_script->user_interface()));
+  starter_->Start(std::make_unique<TriggerContext>(
+                      std::make_unique<ScriptParameters>(script_parameters),
+                      TriggerContext::Options()),
+                  mock_callback_.Get());
+}
+
 TEST_F(StarterTest, RegularStartupFailsIfDfmInstallationFails) {
   SetupPlatformDelegateForFirstTimeUser();
   fake_platform_delegate_.feature_module_installation_result_ =
diff --git a/components/autofill_assistant/browser/switches.cc b/components/autofill_assistant/browser/switches.cc
index d61a1ae..9f49f94e 100644
--- a/components/autofill_assistant/browser/switches.cc
+++ b/components/autofill_assistant/browser/switches.cc
@@ -7,17 +7,19 @@
 namespace autofill_assistant {
 namespace switches {
 
-// Sets the API key to be used instead of Chrome's default key when sending
-// requests to the backend.
-const char kAutofillAssistantServerKey[] = "autofill-assistant-key";
-
-// Overrides the default backend URL.
-const char kAutofillAssistantUrl[] = "autofill-assistant-url";
-
 // Disables authentication when set to false. This is only useful
 // during development, as prod instances require authentication.
 const char kAutofillAssistantAuth[] = "autofill-assistant-auth";
 
+// Forces first-time user experience if set to 'true'. This will overwrite the
+// AA preference by setting first time user to 'true' before each startup.
+// Does nothing if unset or is set to false. This is only useful during testing
+// and development.
+// This flag is only for trigger scripts, because first-time user experience
+// means that the user has not seen trigger script before.
+const char kAutofillAssistantForceFirstTimeUser[] =
+    "autofill-assistant-force-first-time-user";
+
 // Forces the onboarding to be shown if set to 'true'. This will overwrite the
 // AA preference by setting onboarding accepted to 'false' before each startup.
 // Does nothing if unset or is set to false. This is only useful during testing
@@ -25,5 +27,12 @@
 const char kAutofillAssistantForceOnboarding[] =
     "autofill-assistant-force-onboarding";
 
+// Sets the API key to be used instead of Chrome's default key when sending
+// requests to the backend.
+const char kAutofillAssistantServerKey[] = "autofill-assistant-key";
+
+// Overrides the default backend URL.
+const char kAutofillAssistantUrl[] = "autofill-assistant-url";
+
 }  // namespace switches
 }  // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/switches.h b/components/autofill_assistant/browser/switches.h
index 3792112a..014fd968 100644
--- a/components/autofill_assistant/browser/switches.h
+++ b/components/autofill_assistant/browser/switches.h
@@ -8,10 +8,12 @@
 namespace autofill_assistant {
 namespace switches {
 
+// All switches in alphabetical order.
+extern const char kAutofillAssistantAuth[];
+extern const char kAutofillAssistantForceFirstTimeUser[];
+extern const char kAutofillAssistantForceOnboarding[];
 extern const char kAutofillAssistantServerKey[];
 extern const char kAutofillAssistantUrl[];
-extern const char kAutofillAssistantAuth[];
-extern const char kAutofillAssistantForceOnboarding[];
 
 }  // namespace switches
 }  // namespace autofill_assistant
diff --git a/components/blocked_content/android/popup_blocked_infobar_delegate_unittest.cc b/components/blocked_content/android/popup_blocked_infobar_delegate_unittest.cc
index c545836..8ec1f59c 100644
--- a/components/blocked_content/android/popup_blocked_infobar_delegate_unittest.cc
+++ b/components/blocked_content/android/popup_blocked_infobar_delegate_unittest.cc
@@ -22,21 +22,10 @@
 
 namespace blocked_content {
 namespace {
+
 constexpr char kPageUrl[] = "http://example_page.test";
 constexpr char kPopupUrl[] = "http://example_popup.test";
 
-class TestInfoBarManager : public infobars::ContentInfoBarManager {
- public:
-  explicit TestInfoBarManager(content::WebContents* web_contents)
-      : ContentInfoBarManager(web_contents) {}
-
-  // infobars::InfoBarManager:
-  std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate> delegate) override {
-    return std::make_unique<infobars::InfoBar>(std::move(delegate));
-  }
-};
-
 }  // namespace
 
 class PopupBlockedInfoBarDelegateTest
@@ -67,14 +56,17 @@
 
     PopupBlockerTabHelper::CreateForWebContents(web_contents());
     helper_ = PopupBlockerTabHelper::FromWebContents(web_contents());
-    infobar_manager_ = std::make_unique<TestInfoBarManager>(web_contents());
+    infobar_manager_ =
+        std::make_unique<infobars::ContentInfoBarManager>(web_contents());
 
     NavigateAndCommit(GURL(kPageUrl));
   }
 
   PopupBlockerTabHelper* helper() { return helper_; }
 
-  TestInfoBarManager* infobar_manager() { return infobar_manager_.get(); }
+  infobars::ContentInfoBarManager* infobar_manager() {
+    return infobar_manager_.get();
+  }
 
   HostContentSettingsMap* settings_map() { return settings_map_.get(); }
 
@@ -83,7 +75,7 @@
   PopupBlockerTabHelper* helper_ = nullptr;
   sync_preferences::TestingPrefServiceSyncable pref_service_;
   scoped_refptr<HostContentSettingsMap> settings_map_;
-  std::unique_ptr<TestInfoBarManager> infobar_manager_;
+  std::unique_ptr<infobars::ContentInfoBarManager> infobar_manager_;
 };
 
 TEST_F(PopupBlockedInfoBarDelegateTest, ReplacesInfobarOnSecondPopup) {
diff --git a/components/browser_ui/site_settings/android/features.cc b/components/browser_ui/site_settings/android/features.cc
index 763945b..4a6a5e9 100644
--- a/components/browser_ui/site_settings/android/features.cc
+++ b/components/browser_ui/site_settings/android/features.cc
@@ -9,9 +9,6 @@
 
 namespace browser_ui {
 
-const base::Feature kAppNotificationStatusMessaging{
-    "AppNotificationStatusMessaging", base::FEATURE_DISABLED_BY_DEFAULT};
-
 const base::Feature kActionableContentSettings{
     "ActionableContentSettings", base::FEATURE_DISABLED_BY_DEFAULT};
 
diff --git a/components/browser_ui/site_settings/android/features.h b/components/browser_ui/site_settings/android/features.h
index cf329bce..f2376b6 100644
--- a/components/browser_ui/site_settings/android/features.h
+++ b/components/browser_ui/site_settings/android/features.h
@@ -11,9 +11,6 @@
 
 namespace browser_ui {
 
-// Enables messaging in the site settings UI to tell users notifications are
-// disabled for the entire app
-extern const base::Feature kAppNotificationStatusMessaging;
 // Enables toggles and slash through diabled icons for content settings.
 extern const base::Feature kActionableContentSettings;
 
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/NotificationCategory.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/NotificationCategory.java
index f9839a8..39cc7107 100644
--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/NotificationCategory.java
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/NotificationCategory.java
@@ -4,10 +4,6 @@
 
 package org.chromium.components.browser_ui.site_settings;
 
-import android.content.Context;
-
-import androidx.core.app.NotificationManagerCompat;
-
 import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
 
 /**
@@ -21,14 +17,4 @@
         // #enabledForChrome() to use the notification-status checking API instead.
         super(browserContextHandle, Type.NOTIFICATIONS, "" /* androidPermission*/);
     }
-
-    @Override
-    protected boolean enabledForChrome(Context context) {
-        if (!SiteSettingsFeatureList.isEnabled(
-                    SiteSettingsFeatureList.APP_NOTIFICATION_STATUS_MESSAGING)) {
-            return super.enabledForChrome(context);
-        }
-        NotificationManagerCompat manager = NotificationManagerCompat.from(context);
-        return manager.areNotificationsEnabled();
-    }
 }
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsFeatureList.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsFeatureList.java
index b84040d..b437891 100644
--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsFeatureList.java
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsFeatureList.java
@@ -16,7 +16,6 @@
 @JNINamespace("browser_ui")
 @MainDex
 public class SiteSettingsFeatureList {
-    public static final String APP_NOTIFICATION_STATUS_MESSAGING = "AppNotificationStatusMessaging";
     public static final String ACTIONABLE_CONTENT_SETTINGS = "ActionableContentSettings";
 
     private SiteSettingsFeatureList() {}
diff --git a/components/browser_ui/site_settings/android/site_settings_feature_list.cc b/components/browser_ui/site_settings/android/site_settings_feature_list.cc
index 8670bc96..e7f9952 100644
--- a/components/browser_ui/site_settings/android/site_settings_feature_list.cc
+++ b/components/browser_ui/site_settings/android/site_settings_feature_list.cc
@@ -19,7 +19,6 @@
 // this array may either refer to features defined in the header of this file or
 // in other locations in the code base (e.g. content_features.h).
 const base::Feature* const kFeaturesExposedToJava[] = {
-    &kAppNotificationStatusMessaging,
     &kActionableContentSettings,
 };
 
diff --git a/components/browser_ui/sms/android/sms_infobar_delegate_unittest.cc b/components/browser_ui/sms/android/sms_infobar_delegate_unittest.cc
index 5bcdd8a..043ce26 100644
--- a/components/browser_ui/sms/android/sms_infobar_delegate_unittest.cc
+++ b/components/browser_ui/sms/android/sms_infobar_delegate_unittest.cc
@@ -12,34 +12,22 @@
 #include "content/public/test/test_renderer_host.h"
 
 namespace sms {
-namespace {
-
-class TestInfoBarManager : public infobars::ContentInfoBarManager {
- public:
-  explicit TestInfoBarManager(content::WebContents* web_contents)
-      : ContentInfoBarManager(web_contents) {}
-
-  // infobars::InfoBarManager:
-  std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate> delegate) override {
-    return std::make_unique<infobars::InfoBar>(std::move(delegate));
-  }
-};
-
-}  // namespace
 
 class SmsInfoBarDelegateTest : public content::RenderViewHostTestHarness {
  public:
   // content::RenderViewHostTestHarness:
   void SetUp() override {
     content::RenderViewHostTestHarness::SetUp();
-    infobar_manager_ = std::make_unique<TestInfoBarManager>(web_contents());
+    infobar_manager_ =
+        std::make_unique<infobars::ContentInfoBarManager>(web_contents());
   }
 
-  TestInfoBarManager* infobar_manager() { return infobar_manager_.get(); }
+  infobars::ContentInfoBarManager* infobar_manager() {
+    return infobar_manager_.get();
+  }
 
  private:
-  std::unique_ptr<TestInfoBarManager> infobar_manager_;
+  std::unique_ptr<infobars::ContentInfoBarManager> infobar_manager_;
 };
 
 TEST_F(SmsInfoBarDelegateTest, InfoBarForSingleFrame) {
@@ -78,4 +66,4 @@
             expected_message);
 }
 
-}  // namespace sms
\ No newline at end of file
+}  // namespace sms
diff --git a/components/chromeos_camera/mjpeg_decode_accelerator_unittest.cc b/components/chromeos_camera/mjpeg_decode_accelerator_unittest.cc
index 1cf76a3..c0d010f 100644
--- a/components/chromeos_camera/mjpeg_decode_accelerator_unittest.cc
+++ b/components/chromeos_camera/mjpeg_decode_accelerator_unittest.cc
@@ -8,6 +8,7 @@
 #include <unistd.h>
 
 #include <memory>
+#include <numeric>
 #include <string>
 #include <utility>
 #include <vector>
@@ -17,6 +18,7 @@
 #include "base/command_line.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_file.h"
+#include "base/json/json_writer.h"
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/memory/platform_shared_memory_region.h"
@@ -33,6 +35,7 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
 #include "base/timer/elapsed_timer.h"
+#include "base/values.h"
 #include "build/build_config.h"
 #include "components/chromeos_camera/gpu_mjpeg_decode_accelerator_factory.h"
 #include "components/chromeos_camera/mjpeg_decode_accelerator.h"
@@ -162,15 +165,19 @@
   MjpegDecodeAcceleratorTestEnvironment(
       const base::FilePath::CharType* jpeg_filenames,
       const base::FilePath::CharType* test_data_path,
+      const base::FilePath::CharType* perf_output_path,
       int perf_decode_times)
       : perf_decode_times_(perf_decode_times ? perf_decode_times
                                              : kDefaultPerfDecodeTimes),
         user_jpeg_filenames_(jpeg_filenames ? jpeg_filenames
                                             : kDefaultJpegFilename),
-        test_data_path_(test_data_path) {}
+        test_data_path_(test_data_path),
+        perf_output_path_(perf_output_path) {}
 
   void SetUp() override;
 
+  void TearDown() override;
+
   // Resolve the specified file path. The file path can be either an absolute
   // path, relative to the current directory, or relative to the test data path.
   // This is either a custom test data path provided by --test_data_path, or the
@@ -213,6 +220,8 @@
   // CreateDmaBufVideoFrame().
   std::vector<media::VideoPixelFormat> GetSupportedDmaBufFormats();
 
+  void AddMetric(const std::string& name, const base::TimeDelta& time);
+
   // Used for InputSizeChange test case. The image size should be smaller than
   // |kDefaultJpegFilename|.
   std::unique_ptr<ParsedJpegImage> image_data_1280x720_black_;
@@ -235,6 +244,8 @@
  private:
   const base::FilePath::CharType* user_jpeg_filenames_;
   const base::FilePath::CharType* test_data_path_;
+  const base::FilePath::CharType* perf_output_path_;
+  base::Value metrics_;
 
   std::unique_ptr<media::LocalGpuMemoryBufferManager>
       gpu_memory_buffer_manager_;
@@ -267,6 +278,18 @@
 
   gpu_memory_buffer_manager_ =
       std::make_unique<media::LocalGpuMemoryBufferManager>();
+
+  metrics_ = base::Value(base::Value::Type::DICTIONARY);
+}
+
+void MjpegDecodeAcceleratorTestEnvironment::TearDown() {
+  // Write recorded metrics to file in JSON format.
+  if (perf_output_path_ != nullptr) {
+    std::string json;
+    ASSERT_TRUE(base::JSONWriter::WriteWithOptions(
+        metrics_, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json));
+    ASSERT_TRUE(base::WriteFile(base::FilePath(perf_output_path_), json));
+  }
 }
 
 scoped_refptr<media::VideoFrame>
@@ -462,6 +485,12 @@
   return supported_formats;
 }
 
+void MjpegDecodeAcceleratorTestEnvironment::AddMetric(
+    const std::string& name,
+    const base::TimeDelta& time) {
+  metrics_.SetDoubleKey(name, time.InMillisecondsF());
+}
+
 enum ClientState {
   CS_CREATED,
   CS_INITIALIZED,
@@ -469,19 +498,26 @@
   CS_ERROR,
 };
 
+struct PerfMetrics {
+  size_t num_frames_decoded;
+  base::TimeDelta total_decode_time;
+  base::TimeDelta total_decode_map_time;
+};
+
 class JpegClient : public MjpegDecodeAccelerator::Client {
  public:
   // JpegClient takes ownership of |note|.
   JpegClient(
-      const std::vector<ParsedJpegImage*>& test_image_files,
+      const std::vector<const ParsedJpegImage*>& test_image_files,
       std::unique_ptr<media::test::ClientStateNotification<ClientState>> note,
       bool use_dmabuf,
-      bool is_skip);
+      bool skip_result_checking);
   ~JpegClient() override;
   void CreateJpegDecoder();
   void StartDecode(int32_t task_id, bool do_prepare_memory);
   void PrepareMemory(int32_t task_id);
   bool GetSoftwareDecodeResult(int32_t task_id);
+  PerfMetrics GetPerfMetrics() const;
 
   // MjpegDecodeAccelerator::Client implementation.
   void VideoFrameReady(int32_t task_id) override;
@@ -509,7 +545,7 @@
   double GetMeanAbsoluteDifference();
 
   // JpegClient doesn't own |test_image_files_|.
-  const std::vector<ParsedJpegImage*>& test_image_files_;
+  const std::vector<const ParsedJpegImage*>& test_image_files_;
 
   ClientState state_;
 
@@ -520,7 +556,7 @@
   bool use_dmabuf_;
 
   // Skip JDA decode result. Used for testing performance.
-  bool is_skip_;
+  bool skip_result_checking_;
 
   // Input shared memory and mapping.
   base::UnsafeSharedMemoryRegion in_shm_;
@@ -540,19 +576,25 @@
   // |hw_out_frame_| can be accessed.
   std::unique_ptr<MjpegDecodeAccelerator> decoder_;
 
+  // Timers for individual decoding calls indexed by |task_id|.
+  std::map<int32_t, base::ElapsedTimer> timers_;
+  // Recorded performance metrics.
+  std::vector<base::TimeDelta> decode_times_;
+  std::vector<base::TimeDelta> decode_map_times_;
+
   DISALLOW_COPY_AND_ASSIGN(JpegClient);
 };
 
 JpegClient::JpegClient(
-    const std::vector<ParsedJpegImage*>& test_image_files,
+    const std::vector<const ParsedJpegImage*>& test_image_files,
     std::unique_ptr<media::test::ClientStateNotification<ClientState>> note,
     bool use_dmabuf,
-    bool is_skip)
+    bool skip_result_checking)
     : test_image_files_(test_image_files),
       state_(CS_CREATED),
       note_(std::move(note)),
       use_dmabuf_(use_dmabuf),
-      is_skip_(is_skip) {}
+      skip_result_checking_(skip_result_checking) {}
 
 JpegClient::~JpegClient() {}
 
@@ -588,27 +630,39 @@
 }
 
 void JpegClient::VideoFrameReady(int32_t task_id) {
-  if (is_skip_) {
+  const auto timer_iter = timers_.find(task_id);
+  ASSERT_TRUE(timer_iter != timers_.end());
+  base::ElapsedTimer& timer = timer_iter->second;
+  decode_times_.push_back(timer.Elapsed());
+
+  scoped_refptr<media::VideoFrame> mapped_dmabuf_frame;
+  if (use_dmabuf_) {
+    // Map and convert the output frame to I420.
+    mapped_dmabuf_frame = g_env->MapToVideoFrame(
+        hw_out_gmb_.get(), hw_out_dmabuf_frame_->layout(),
+        hw_out_dmabuf_frame_->visible_rect());
+    ASSERT_TRUE(mapped_dmabuf_frame);
+    decode_map_times_.push_back(timer.Elapsed());
+  }
+
+  timers_.erase(timer_iter);
+
+  if (skip_result_checking_) {
     SetState(CS_DECODE_PASS);
     return;
   }
 
+  if (use_dmabuf_) {
+    hw_out_frame_ = media::test::ConvertVideoFrame(mapped_dmabuf_frame.get(),
+                                                   media::PIXEL_FORMAT_I420);
+    ASSERT_TRUE(hw_out_frame_);
+  }
+
   if (!GetSoftwareDecodeResult(task_id)) {
     SetState(CS_ERROR);
     return;
   }
 
-  if (use_dmabuf_) {
-    // Map and convert the output frame to I420.
-    scoped_refptr<media::VideoFrame> mapped_frame = g_env->MapToVideoFrame(
-        hw_out_gmb_.get(), hw_out_dmabuf_frame_->layout(),
-        hw_out_dmabuf_frame_->visible_rect());
-    ASSERT_TRUE(mapped_frame);
-    hw_out_frame_ = media::test::ConvertVideoFrame(mapped_frame.get(),
-                                                   media::PIXEL_FORMAT_I420);
-    ASSERT_TRUE(hw_out_frame_);
-  }
-
   if (g_save_to_file) {
     SaveToFile(task_id, hw_out_frame_, "_hw");
     SaveToFile(task_id, sw_out_frame_, "_sw");
@@ -631,7 +685,7 @@
 }
 
 void JpegClient::PrepareMemory(int32_t task_id) {
-  ParsedJpegImage* image_file = test_image_files_[task_id];
+  const ParsedJpegImage* image_file = test_image_files_[task_id];
 
   if (use_dmabuf_) {
     in_dmabuf_fd_ = g_env->CreateDmaBufFd(image_file->data_str.data(),
@@ -680,7 +734,7 @@
                             scoped_refptr<media::VideoFrame> in_frame,
                             const std::string& suffix) {
   LOG_ASSERT(in_frame);
-  ParsedJpegImage* image_file = test_image_files_[task_id];
+  const ParsedJpegImage* image_file = test_image_files_[task_id];
 
   // First convert to ARGB format. Note that in our case, the coded size and the
   // visible size will be the same.
@@ -757,11 +811,12 @@
 
 void JpegClient::StartDecode(int32_t task_id, bool do_prepare_memory) {
   ASSERT_LT(base::checked_cast<size_t>(task_id), test_image_files_.size());
-  ParsedJpegImage* image_file = test_image_files_[task_id];
+  const ParsedJpegImage* image_file = test_image_files_[task_id];
 
   if (do_prepare_memory)
     PrepareMemory(task_id);
 
+  timers_[task_id] = base::ElapsedTimer();
   if (use_dmabuf_) {
     base::ScopedFD duped_in_dmabuf_fd(HANDLE_EINTR(dup(in_dmabuf_fd_.get())));
     ASSERT_TRUE(duped_in_dmabuf_fd.is_valid());
@@ -782,7 +837,7 @@
 bool JpegClient::GetSoftwareDecodeResult(int32_t task_id) {
   DCHECK(sw_out_frame_->IsMappable());
   DCHECK_EQ(sw_out_frame_->format(), media::PIXEL_FORMAT_I420);
-  ParsedJpegImage* image_file = test_image_files_[task_id];
+  const ParsedJpegImage* image_file = test_image_files_[task_id];
   if (libyuv::ConvertToI420(
           reinterpret_cast<const uint8_t*>(image_file->data_str.data()),
           image_file->data_str.size(),
@@ -803,6 +858,17 @@
   return true;
 }
 
+PerfMetrics JpegClient::GetPerfMetrics() const {
+  return PerfMetrics{
+      .num_frames_decoded = decode_times_.size(),
+      .total_decode_time = std::accumulate(
+          decode_times_.begin(), decode_times_.end(), base::TimeDelta()),
+      .total_decode_map_time =
+          std::accumulate(decode_map_times_.begin(), decode_map_times_.end(),
+                          base::TimeDelta()),
+  };
+}
+
 // This class holds a |client| that will be deleted on |task_runner|. This is
 // necessary because |client->decoder_| expects to be destroyed on the thread on
 // which it was created.
@@ -827,20 +893,20 @@
  protected:
   MjpegDecodeAcceleratorTest() = default;
 
-  void TestDecode(const std::vector<ParsedJpegImage*>& images,
+  void TestDecode(const std::vector<const ParsedJpegImage*>& images,
                   const std::vector<ClientState>& expected_status,
                   size_t num_concurrent_decoders = 1);
   void PerfDecodeByJDA(int decode_times,
-                       const std::vector<ParsedJpegImage*>& images);
+                       const std::vector<const ParsedJpegImage*>& images);
   void PerfDecodeBySW(int decode_times,
-                      const std::vector<ParsedJpegImage*>& images);
+                      const std::vector<const ParsedJpegImage*>& images);
 
  protected:
   DISALLOW_COPY_AND_ASSIGN(MjpegDecodeAcceleratorTest);
 };
 
 void MjpegDecodeAcceleratorTest::TestDecode(
-    const std::vector<ParsedJpegImage*>& images,
+    const std::vector<const ParsedJpegImage*>& images,
     const std::vector<ClientState>& expected_status,
     size_t num_concurrent_decoders) {
   LOG_ASSERT(images.size() >= expected_status.size());
@@ -853,7 +919,7 @@
     auto client = std::make_unique<JpegClient>(
         images,
         std::make_unique<media::test::ClientStateNotification<ClientState>>(),
-        GetParam() /* use_dmabuf */, false /* is_skip */);
+        GetParam() /* use_dmabuf */, false /* skip_result_checking */);
     scoped_clients.emplace_back(
         new ScopedJpegClient(decoder_thread.task_runner(), std::move(client)));
 
@@ -882,15 +948,16 @@
 
 void MjpegDecodeAcceleratorTest::PerfDecodeByJDA(
     int decode_times,
-    const std::vector<ParsedJpegImage*>& images) {
+    const std::vector<const ParsedJpegImage*>& images) {
   LOG_ASSERT(images.size() == 1);
   base::Thread decoder_thread("DecoderThread");
   ASSERT_TRUE(decoder_thread.Start());
+  const bool use_dmabuf = GetParam();
 
   auto client = std::make_unique<JpegClient>(
       images,
       std::make_unique<media::test::ClientStateNotification<ClientState>>(),
-      GetParam() /* use_dmabuf */, true /* is_skip */);
+      use_dmabuf, true /* skip_result_checking */);
   auto scoped_client = std::make_unique<ScopedJpegClient>(
       decoder_thread.task_runner(), std::move(client));
 
@@ -901,7 +968,6 @@
 
   const int32_t task_id = 0;
   scoped_client->client()->PrepareMemory(task_id);
-  const base::ElapsedTimer timer;
   for (int index = 0; index < decode_times; index++) {
     decoder_thread.task_runner()->PostTask(
         FROM_HERE, base::BindOnce(&JpegClient::StartDecode,
@@ -909,23 +975,38 @@
                                   task_id, false /* do_prepare_memory */));
     ASSERT_EQ(scoped_client->client()->note()->Wait(), CS_DECODE_PASS);
   }
-  const base::TimeDelta elapsed_time = timer.Elapsed();
-  LOG(INFO) << elapsed_time << " for " << decode_times
-            << " iterations (avg: " << elapsed_time / decode_times << ") -- "
-            << images[0]->visible_size.ToString() << ", ("
-            << images[0]->visible_size.GetArea() << " pixels) "
+
+  const PerfMetrics metrics = scoped_client->client()->GetPerfMetrics();
+  const base::TimeDelta avg_decode_time =
+      metrics.total_decode_time / metrics.num_frames_decoded;
+  LOG(INFO) << "Decode: " << metrics.total_decode_time << " for "
+            << metrics.num_frames_decoded
+            << " iterations (avg: " << avg_decode_time << ")";
+  g_env->AddMetric(
+      use_dmabuf ? "hw_jpeg_decode_latency" : "hw_shm_jpeg_decode_latency",
+      avg_decode_time);
+  if (use_dmabuf) {
+    const base::TimeDelta avg_decode_map_time =
+        metrics.total_decode_map_time / metrics.num_frames_decoded;
+    LOG(INFO) << "Decode + map: " << metrics.total_decode_map_time << " for "
+              << metrics.num_frames_decoded
+              << " iterations (avg: " << avg_decode_map_time << ")";
+    g_env->AddMetric("hw_jpeg_decode_map_latency", avg_decode_map_time);
+  }
+  LOG(INFO) << "-- " << images[0]->visible_size.ToString() << " ("
+            << images[0]->visible_size.GetArea() << " pixels), "
             << images[0]->filename();
 }
 
 void MjpegDecodeAcceleratorTest::PerfDecodeBySW(
     int decode_times,
-    const std::vector<ParsedJpegImage*>& images) {
+    const std::vector<const ParsedJpegImage*>& images) {
   LOG_ASSERT(images.size() == 1);
 
   std::unique_ptr<JpegClient> client = std::make_unique<JpegClient>(
       images,
       std::make_unique<media::test::ClientStateNotification<ClientState>>(),
-      false /* use_dmabuf */, true /* is_skip */);
+      false /* use_dmabuf */, true /* skip_result_checking */);
 
   const int32_t task_id = 0;
   client->PrepareMemory(task_id);
@@ -933,11 +1014,13 @@
   for (int index = 0; index < decode_times; index++)
     client->GetSoftwareDecodeResult(task_id);
   const base::TimeDelta elapsed_time = timer.Elapsed();
-  LOG(INFO) << elapsed_time << " for " << decode_times
-            << " iterations (avg: " << elapsed_time / decode_times << ") -- "
-            << images[0]->visible_size.ToString() << ", ("
+  const base::TimeDelta avg_decode_time = elapsed_time / decode_times;
+  LOG(INFO) << "Decode: " << elapsed_time << " for " << decode_times
+            << " iterations (avg: " << avg_decode_time << ")";
+  LOG(INFO) << "-- " << images[0]->visible_size.ToString() << ", ("
             << images[0]->visible_size.GetArea() << " pixels) "
             << images[0]->filename();
+  g_env->AddMetric("sw_jpeg_decode_latency", avg_decode_time);
 }
 
 // Returns a media::VideoFrame that contains YUV data using 4:2:0 subsampling.
@@ -974,7 +1057,8 @@
 }
 
 TEST(JpegClientTest, GetMeanAbsoluteDifference) {
-  JpegClient client(std::vector<ParsedJpegImage*>(), nullptr, false, false);
+  JpegClient client(std::vector<const ParsedJpegImage*>(), nullptr, false,
+                    false);
   client.hw_out_frame_ = GetTestDecodedData();
   client.sw_out_frame_ = GetTestDecodedData();
 
@@ -1009,7 +1093,7 @@
 }
 
 TEST_P(MjpegDecodeAcceleratorTest, SimpleDecode) {
-  std::vector<ParsedJpegImage*> images;
+  std::vector<const ParsedJpegImage*> images;
   for (auto& image : g_env->image_data_user_)
     images.push_back(image.get());
   const std::vector<ClientState> expected_status(images.size(), CS_DECODE_PASS);
@@ -1017,7 +1101,7 @@
 }
 
 TEST_P(MjpegDecodeAcceleratorTest, MultipleDecoders) {
-  std::vector<ParsedJpegImage*> images;
+  std::vector<const ParsedJpegImage*> images;
   for (auto& image : g_env->image_data_user_)
     images.push_back(image.get());
   const std::vector<ClientState> expected_status(images.size(), CS_DECODE_PASS);
@@ -1027,7 +1111,7 @@
 TEST_P(MjpegDecodeAcceleratorTest, InputSizeChange) {
   // The size of |image_data_1280x720_black_| is smaller than
   // |image_data_1280x720_default_|.
-  const std::vector<ParsedJpegImage*> images = {
+  const std::vector<const ParsedJpegImage*> images = {
       g_env->image_data_1280x720_black_.get(),
       g_env->image_data_1280x720_default_.get(),
       g_env->image_data_1280x720_black_.get()};
@@ -1036,7 +1120,7 @@
 }
 
 TEST_P(MjpegDecodeAcceleratorTest, ResolutionChange) {
-  const std::vector<ParsedJpegImage*> images = {
+  const std::vector<const ParsedJpegImage*> images = {
       g_env->image_data_640x368_black_.get(),
       g_env->image_data_1280x720_default_.get(),
       g_env->image_data_640x368_black_.get()};
@@ -1045,7 +1129,7 @@
 }
 
 TEST_P(MjpegDecodeAcceleratorTest, CodedSizeAlignment) {
-  const std::vector<ParsedJpegImage*> images = {
+  const std::vector<const ParsedJpegImage*> images = {
       g_env->image_data_640x360_black_.get()};
   const std::vector<ClientState> expected_status = {CS_DECODE_PASS};
   TestDecode(images, expected_status);
@@ -1053,7 +1137,7 @@
 
 // Tests whether different JPEG sampling formats will be decoded correctly.
 TEST_P(MjpegDecodeAcceleratorTest, SamplingFormatChange) {
-  const std::vector<ParsedJpegImage*> images = {
+  const std::vector<const ParsedJpegImage*> images = {
       g_env->image_data_640x368_black_.get(),
       g_env->image_data_640x368_422_black_.get()};
   const std::vector<ClientState> expected_status(images.size(), CS_DECODE_PASS);
@@ -1061,14 +1145,14 @@
 }
 
 TEST_P(MjpegDecodeAcceleratorTest, FailureJpeg) {
-  const std::vector<ParsedJpegImage*> images = {
+  const std::vector<const ParsedJpegImage*> images = {
       g_env->image_data_invalid_.get()};
   const std::vector<ClientState> expected_status = {CS_ERROR};
   TestDecode(images, expected_status);
 }
 
 TEST_P(MjpegDecodeAcceleratorTest, KeepDecodeAfterFailure) {
-  const std::vector<ParsedJpegImage*> images = {
+  const std::vector<const ParsedJpegImage*> images = {
       g_env->image_data_invalid_.get(),
       g_env->image_data_1280x720_default_.get()};
   const std::vector<ClientState> expected_status = {CS_ERROR, CS_DECODE_PASS};
@@ -1077,7 +1161,7 @@
 
 TEST_P(MjpegDecodeAcceleratorTest, Abort) {
   constexpr size_t kNumOfJpegToDecode = 5;
-  const std::vector<ParsedJpegImage*> images(
+  const std::vector<const ParsedJpegImage*> images(
       kNumOfJpegToDecode, g_env->image_data_1280x720_default_.get());
   // Verify only one decode success to ensure both decoders have started the
   // decoding. Then destroy the first decoder when it is still decoding. The
@@ -1089,7 +1173,7 @@
 TEST_P(MjpegDecodeAcceleratorTest, PerfJDA) {
   // Only the first image will be used for perf testing.
   ASSERT_GE(g_env->image_data_user_.size(), 1u);
-  const std::vector<ParsedJpegImage*> images = {
+  const std::vector<const ParsedJpegImage*> images = {
       g_env->image_data_user_[0].get()};
   PerfDecodeByJDA(g_env->perf_decode_times_, images);
 }
@@ -1097,7 +1181,7 @@
 TEST_F(MjpegDecodeAcceleratorTest, PerfSW) {
   // Only the first image will be used for perf testing.
   ASSERT_GE(g_env->image_data_user_.size(), 1u);
-  const std::vector<ParsedJpegImage*> images = {
+  const std::vector<const ParsedJpegImage*> images = {
       g_env->image_data_user_[0].get()};
   PerfDecodeBySW(g_env->perf_decode_times_, images);
 }
@@ -1131,6 +1215,7 @@
 
   const base::FilePath::CharType* jpeg_filenames = nullptr;
   const base::FilePath::CharType* test_data_path = nullptr;
+  const base::FilePath::CharType* perf_output_path = nullptr;
   int perf_decode_times = 0;
   base::CommandLine::SwitchMap switches = cmd_line->GetSwitches();
   for (base::CommandLine::SwitchMap::const_iterator it = switches.begin();
@@ -1144,6 +1229,10 @@
       test_data_path = it->second.c_str();
       continue;
     }
+    if (it->first == "perf_output_path") {
+      perf_output_path = it->second.c_str();
+      continue;
+    }
     if (it->first == "perf_decode_times") {
       perf_decode_times = std::stoi(it->second);
       continue;
@@ -1167,7 +1256,8 @@
       reinterpret_cast<chromeos_camera::MjpegDecodeAcceleratorTestEnvironment*>(
           testing::AddGlobalTestEnvironment(
               new chromeos_camera::MjpegDecodeAcceleratorTestEnvironment(
-                  jpeg_filenames, test_data_path, perf_decode_times)));
+                  jpeg_filenames, test_data_path, perf_output_path,
+                  perf_decode_times)));
 
   return RUN_ALL_TESTS();
 }
diff --git a/components/infobars/content/content_infobar_manager.cc b/components/infobars/content/content_infobar_manager.cc
index d93801b..c0b69f1 100644
--- a/components/infobars/content/content_infobar_manager.cc
+++ b/components/infobars/content/content_infobar_manager.cc
@@ -5,7 +5,6 @@
 #include "components/infobars/content/content_infobar_manager.h"
 
 #include "base/command_line.h"
-#include "components/infobars/core/confirm_infobar_delegate.h"
 #include "components/infobars/core/infobar.h"
 #include "content/public/browser/navigation_details.h"
 #include "content/public/browser/navigation_entry.h"
@@ -62,12 +61,6 @@
   return active_entry ? active_entry->GetUniqueID() : 0;
 }
 
-std::unique_ptr<InfoBar> ContentInfoBarManager::CreateConfirmInfoBar(
-    std::unique_ptr<ConfirmInfoBarDelegate> delegate) {
-  NOTREACHED();
-  return nullptr;
-}
-
 void ContentInfoBarManager::RenderProcessGone(base::TerminationStatus status) {
   RemoveAllInfoBars(true);
 }
diff --git a/components/infobars/content/content_infobar_manager.h b/components/infobars/content/content_infobar_manager.h
index f9c1234..7cc4627 100644
--- a/components/infobars/content/content_infobar_manager.h
+++ b/components/infobars/content/content_infobar_manager.h
@@ -27,9 +27,6 @@
 
 // Associates a WebContents to an InfoBarManager.
 // It manages the infobar notifications and responds to navigation events.
-// By default the creation of confirm infobars is not supported. If embedders
-// wish to add such support, they should create a custom subclass of
-// ContentInfoBarManager that overrides CreateConfirmInfoBar().
 // This class is not itself a WebContentsUserData in order to support such
 // subclassing; it is expected that embedders will either have an instance of
 // this class as a member of their "Tab" objects or create a custom subclass
@@ -58,11 +55,6 @@
   void set_ignore_next_reload() { ignore_next_reload_ = true; }
 
   // InfoBarManager:
-  // NOTE: By default this method is NOTREACHED() and returns nullptr.
-  // TODO(sdefresne): Change clients to invoke this on InfoBarManager
-  // and turn the method override private.
-  std::unique_ptr<InfoBar> CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate> delegate) override;
   void OpenURL(const GURL& url, WindowOpenDisposition disposition) override;
 
  private:
diff --git a/components/infobars/core/infobar_manager.h b/components/infobars/core/infobar_manager.h
index 4b9bf11..eb53254 100644
--- a/components/infobars/core/infobar_manager.h
+++ b/components/infobars/core/infobar_manager.h
@@ -14,7 +14,6 @@
 #include "base/observer_list.h"
 #include "components/infobars/core/infobar_delegate.h"
 
-class ConfirmInfoBarDelegate;
 class GURL;
 class TestInfoBar;
 
@@ -101,10 +100,6 @@
   // Returns the active entry ID.
   virtual int GetActiveEntryID() = 0;
 
-  // Returns a confirm infobar that owns |delegate|.
-  virtual std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate> delegate) = 0;
-
   // Opens a URL according to the specified |disposition|.
   virtual void OpenURL(const GURL& url, WindowOpenDisposition disposition) = 0;
 
diff --git a/components/infobars/core/simple_alert_infobar_delegate.cc b/components/infobars/core/simple_alert_infobar_delegate.cc
index ed5cb46..62447bb 100644
--- a/components/infobars/core/simple_alert_infobar_delegate.cc
+++ b/components/infobars/core/simple_alert_infobar_delegate.cc
@@ -6,24 +6,8 @@
 
 #include <memory>
 
-#include "components/infobars/core/infobar.h"
-#include "components/infobars/core/infobar_manager.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 
-// static
-void SimpleAlertInfoBarDelegate::Create(
-    infobars::InfoBarManager* infobar_manager,
-    infobars::InfoBarDelegate::InfoBarIdentifier infobar_identifier,
-    const gfx::VectorIcon* vector_icon,
-    const std::u16string& message,
-    bool auto_expire,
-    bool should_animate) {
-  infobar_manager->AddInfoBar(infobar_manager->CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate>(new SimpleAlertInfoBarDelegate(
-          infobar_identifier, vector_icon, message, auto_expire,
-          should_animate))));
-}
-
 SimpleAlertInfoBarDelegate::SimpleAlertInfoBarDelegate(
     infobars::InfoBarDelegate::InfoBarIdentifier infobar_identifier,
     const gfx::VectorIcon* vector_icon,
diff --git a/components/infobars/core/simple_alert_infobar_delegate.h b/components/infobars/core/simple_alert_infobar_delegate.h
index f95853c..173543c7 100644
--- a/components/infobars/core/simple_alert_infobar_delegate.h
+++ b/components/infobars/core/simple_alert_infobar_delegate.h
@@ -15,24 +15,8 @@
 struct VectorIcon;
 }
 
-namespace infobars {
-class InfoBarManager;
-}
-
 class SimpleAlertInfoBarDelegate : public ConfirmInfoBarDelegate {
  public:
-  // Creates a simple alert infobar and delegate and adds the infobar to
-  // |infobar_manager|. If |vector_icon| is not null, it will be shown.
-  // |infobar_identifier| names what class triggered the infobar for metrics.
-  static void Create(
-      infobars::InfoBarManager* infobar_manager,
-      infobars::InfoBarDelegate::InfoBarIdentifier infobar_identifier,
-      const gfx::VectorIcon* vector_icon,
-      const std::u16string& message,
-      bool auto_expire = true,
-      bool should_animate = true);
-
- private:
   SimpleAlertInfoBarDelegate(
       infobars::InfoBarDelegate::InfoBarIdentifier infobar_identifier,
       const gfx::VectorIcon* vector_icon,
@@ -41,6 +25,7 @@
       bool should_animate);
   ~SimpleAlertInfoBarDelegate() override;
 
+ private:
   // ConfirmInfoBarDelegate:
   infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
   const gfx::VectorIcon& GetVectorIcon() const override;
diff --git a/components/live_caption/views/caption_bubble.cc b/components/live_caption/views/caption_bubble.cc
index a6c9a73..39e365f8 100644
--- a/components/live_caption/views/caption_bubble.cc
+++ b/components/live_caption/views/caption_bubble.cc
@@ -142,13 +142,9 @@
 class CaptionBubbleFrameView : public views::BubbleFrameView {
  public:
   METADATA_HEADER(CaptionBubbleFrameView);
-  explicit CaptionBubbleFrameView(views::View* close_button,
-                                  views::View* expand_button,
-                                  views::View* collapse_button)
+  explicit CaptionBubbleFrameView(std::vector<views::View*> buttons)
       : views::BubbleFrameView(gfx::Insets(), gfx::Insets()),
-        close_button_(close_button),
-        expand_button_(expand_button),
-        collapse_button_(collapse_button) {
+        buttons_(buttons) {
     auto border = std::make_unique<views::BubbleBorder>(
         views::BubbleBorder::FLOAT, views::BubbleBorder::DIALOG_SHADOW,
         gfx::kPlaceholderColor);
@@ -175,10 +171,10 @@
     // handled by CaptionBubble::BubblePressed().
     gfx::Point point_in_screen =
         GetBoundsInScreen().origin() + gfx::Vector2d(point.x(), point.y());
-    if (close_button_->GetBoundsInScreen().Contains(point_in_screen) ||
-        expand_button_->GetBoundsInScreen().Contains(point_in_screen) ||
-        collapse_button_->GetBoundsInScreen().Contains(point_in_screen))
-      return HTCLIENT;
+    for (views::View* button : buttons_) {
+      if (button->GetBoundsInScreen().Contains(point_in_screen))
+        return HTCLIENT;
+    }
 
     // Ensure it's within the BubbleFrameView. This takes into account the
     // rounded corners and drop shadow of the BubbleBorder.
@@ -193,9 +189,7 @@
   }
 
  private:
-  views::View* close_button_;
-  views::View* expand_button_;
-  views::View* collapse_button_;
+  std::vector<views::View*> buttons_;
 };
 
 BEGIN_METADATA(CaptionBubbleFrameView, views::BubbleFrameView)
@@ -332,6 +326,20 @@
 }
 
 void CaptionBubble::Init() {
+  SetLayoutManager(std::make_unique<views::BoxLayout>(
+                       views::BoxLayout::Orientation::kVertical))
+      ->set_cross_axis_alignment(
+          views::BoxLayout::CrossAxisAlignment::kStretch);
+  UseCompactMargins();
+  set_close_on_deactivate(false);
+  SetCanActivate(true);
+
+  views::View* header_container = new views::View();
+  header_container
+      ->SetLayoutManager(std::make_unique<views::BoxLayout>(
+          views::BoxLayout::Orientation::kHorizontal))
+      ->set_main_axis_alignment(views::BoxLayout::MainAxisAlignment::kEnd);
+
   views::View* content_container = new views::View();
   content_container->SetLayoutManager(std::make_unique<views::FlexLayout>())
       ->SetOrientation(views::LayoutOrientation::kVertical)
@@ -344,14 +352,6 @@
                                    views::MaximumFlexSizeRule::kPreferred,
                                    /*adjust_height_for_width*/ true));
 
-  SetLayoutManager(std::make_unique<views::BoxLayout>(
-                       views::BoxLayout::Orientation::kVertical))
-      ->set_cross_axis_alignment(views::BoxLayout::CrossAxisAlignment::kEnd);
-  UseCompactMargins();
-
-  set_close_on_deactivate(false);
-  SetCanActivate(true);
-
   auto label = std::make_unique<CaptionBubbleLabel>();
   label->SetMultiLine(true);
   label->SetBackgroundColor(SK_ColorTRANSPARENT);
@@ -398,11 +398,21 @@
       std::move(expand_or_collapse_callback), IDS_LIVE_CAPTION_BUBBLE_COLLAPSE);
   collapse_button->SetVisible(is_expanded_);
 
+  auto back_to_tab_button = BuildImageButton(
+      base::BindRepeating(&CaptionBubble::BackToTabButtonPressed,
+                          base::Unretained(this)),
+      IDS_LIVE_CAPTION_BUBBLE_BACK_TO_TAB);
+  back_to_tab_button->SetVisible(false);
+
   auto close_button =
       BuildImageButton(base::BindRepeating(&CaptionBubble::CloseButtonPressed,
                                            base::Unretained(this)),
                        IDS_LIVE_CAPTION_BUBBLE_CLOSE);
 
+  back_to_tab_button_ =
+      header_container->AddChildView(std::move(back_to_tab_button));
+  close_button_ = header_container->AddChildView(std::move(close_button));
+
   title_ = content_container->AddChildView(std::move(title));
   label_ = content_container->AddChildView(std::move(label));
 
@@ -414,8 +424,8 @@
   collapse_button_ =
       content_container->AddChildView(std::move(collapse_button));
 
-  close_button_ = AddChildView(std::move(close_button));
-  content_container_ = AddChildView(std::move(content_container));
+  AddChildView(std::move(header_container));
+  AddChildView(std::move(content_container));
 
   SetCaptionBubbleStyle();
   UpdateContentSize();
@@ -437,8 +447,9 @@
 
 std::unique_ptr<views::NonClientFrameView>
 CaptionBubble::CreateNonClientFrameView(views::Widget* widget) {
-  auto frame = std::make_unique<CaptionBubbleFrameView>(
-      close_button_, expand_button_, collapse_button_);
+  std::vector<views::View*> buttons = {back_to_tab_button_, close_button_,
+                                       expand_button_, collapse_button_};
+  auto frame = std::make_unique<CaptionBubbleFrameView>(buttons);
   frame_ = frame.get();
   return frame;
 }
@@ -477,6 +488,11 @@
   return title_->GetText();
 }
 
+void CaptionBubble::BackToTabButtonPressed() {
+  DCHECK(model_);
+  model_->ActivateContext();
+}
+
 void CaptionBubble::CloseButtonPressed() {
   LogSessionEvent(SessionEvent::kCloseButtonClicked);
   if (model_)
@@ -506,6 +522,7 @@
   model_ = model;
   if (model_) {
     model_->SetObserver(this);
+    back_to_tab_button_->SetVisible(model_->IsContextActivatable());
   } else {
     UpdateBubbleVisibility();
   }
@@ -656,6 +673,8 @@
 
   error_icon_->SetImage(
       gfx::CreateVectorIcon(vector_icons::kErrorOutlineIcon, text_color));
+  views::SetImageFromVectorIcon(back_to_tab_button_, vector_icons::kLaunchIcon,
+                                kButtonDip, text_color);
   views::SetImageFromVectorIcon(close_button_, vector_icons::kCloseRoundedIcon,
                                 kButtonDip, text_color);
   views::SetImageFromVectorIcon(expand_button_, vector_icons::kCaretDownIcon,
@@ -663,6 +682,7 @@
   views::SetImageFromVectorIcon(collapse_button_, vector_icons::kCaretUpIcon,
                                 kButtonDip, text_color);
 
+  back_to_tab_button_->SetInkDropBaseColor(text_color);
   close_button_->SetInkDropBaseColor(text_color);
   expand_button_->SetInkDropBaseColor(text_color);
   collapse_button_->SetInkDropBaseColor(text_color);
@@ -693,7 +713,8 @@
                          ? content_height - kLineHeightDip * text_scale_factor
                          : content_height;
   label_->SetPreferredSize(gfx::Size(width - kSidePaddingDip, label_height));
-  content_container_->SetPreferredSize(gfx::Size(width, content_height));
+  // The header height is the same as the close button height. The footer height
+  // is the same as the expand button height.
   SetPreferredSize(gfx::Size(
       width, content_height + close_button_->GetPreferredSize().height() +
                  expand_button_->GetPreferredSize().height()));
diff --git a/components/live_caption/views/caption_bubble.h b/components/live_caption/views/caption_bubble.h
index 3631200..655f87b 100644
--- a/components/live_caption/views/caption_bubble.h
+++ b/components/live_caption/views/caption_bubble.h
@@ -93,6 +93,7 @@
   friend class CaptionBubbleControllerViewsTest;
   friend class CaptionBubbleModel;
 
+  void BackToTabButtonPressed();
   void CloseButtonPressed();
   void ExpandOrCollapseButtonPressed();
 
@@ -148,11 +149,11 @@
   views::Label* error_text_;
   views::ImageView* error_icon_;
   views::View* error_message_;
+  views::ImageButton* back_to_tab_button_;
   views::ImageButton* close_button_;
   views::ImageButton* expand_button_;
   views::ImageButton* collapse_button_;
   CaptionBubbleFrameView* frame_;
-  views::View* content_container_;
 
   base::Optional<ui::CaptionStyle> caption_style_;
   CaptionBubbleModel* model_ = nullptr;
diff --git a/components/live_caption/views/caption_bubble_model.cc b/components/live_caption/views/caption_bubble_model.cc
index 163313e..7b9b0765 100644
--- a/components/live_caption/views/caption_bubble_model.cc
+++ b/components/live_caption/views/caption_bubble_model.cc
@@ -15,8 +15,10 @@
 namespace captions {
 
 CaptionBubbleModel::CaptionBubbleModel(
-    const base::Optional<gfx::Rect>& context_bound_in_screen)
-    : context_bound_in_screen_(context_bound_in_screen) {}
+    const base::Optional<gfx::Rect>& context_bounds_in_screen,
+    base::RepeatingClosure activate_context_callback)
+    : context_bounds_in_screen_(context_bounds_in_screen),
+      activate_context_callback_(activate_context_callback) {}
 
 CaptionBubbleModel::~CaptionBubbleModel() {
   if (observer_)
@@ -103,4 +105,13 @@
   }
 }
 
+bool CaptionBubbleModel::IsContextActivatable() {
+  return activate_context_callback_ != base::NullCallback();
+}
+
+void CaptionBubbleModel::ActivateContext() {
+  DCHECK(IsContextActivatable());
+  activate_context_callback_.Run();
+}
+
 }  // namespace captions
diff --git a/components/live_caption/views/caption_bubble_model.h b/components/live_caption/views/caption_bubble_model.h
index 237611d..dad6640 100644
--- a/components/live_caption/views/caption_bubble_model.h
+++ b/components/live_caption/views/caption_bubble_model.h
@@ -7,6 +7,7 @@
 
 #include <string>
 
+#include "base/callback.h"
 #include "base/optional.h"
 #include "ui/gfx/geometry/rect.h"
 
@@ -38,8 +39,8 @@
 //
 class CaptionBubbleModel {
  public:
-  explicit CaptionBubbleModel(
-      const base::Optional<gfx::Rect>& context_bound_in_screen);
+  CaptionBubbleModel(const base::Optional<gfx::Rect>& context_bounds_in_screen,
+                     base::RepeatingClosure activate_context_callback);
   ~CaptionBubbleModel();
   CaptionBubbleModel(const CaptionBubbleModel&) = delete;
   CaptionBubbleModel& operator=(const CaptionBubbleModel&) = delete;
@@ -66,11 +67,17 @@
   // Clears the partial and final text and alerts the observer.
   void ClearText();
 
+  // Calls the activate context callback.
+  void ActivateContext();
+
+  // Returns whether there is an activate context callback available.
+  bool IsContextActivatable();
+
   bool IsClosed() const { return is_closed_; }
   bool HasError() const { return has_error_; }
   std::string GetFullText() const { return final_text_ + partial_text_; }
   const base::Optional<gfx::Rect>& GetContextBoundsInScreen() const {
-    return context_bound_in_screen_;
+    return context_bounds_in_screen_;
   }
 
  private:
@@ -86,15 +93,21 @@
   // Whether an error should be displayed one the bubble.
   bool has_error_ = false;
 
-  // The bounds of context widget for this caption bubble. On Chrome browser,
-  // this is the bounds in screen of the top level widget of the browser window.
-  // When this feature is implemented in ash, this will be bounds of the top
-  // level widget of the ash window.
-  base::Optional<gfx::Rect> context_bound_in_screen_;
+  // The bounds of the context widget. On Chrome browser, this is the bounds in
+  // screen of the top level widget of the browser window. When Live Caption is
+  // implemented in ash, this will be bounds of the top level widget of the ash
+  // window.
+  const base::Optional<gfx::Rect> context_bounds_in_screen_;
+
+  // A callback which activates the context for this CaptionBubbleModel. In
+  // Live Caption on browser, this activates the browser window and tab of the
+  // web contents to which this CaptionBubbleModel belongs.
+  const base::RepeatingClosure activate_context_callback_;
 
   // The CaptionBubble observing changes to this model.
   CaptionBubble* observer_ = nullptr;
 };
+
 }  // namespace captions
 
 #endif  // COMPONENTS_LIVE_CAPTION_VIEWS_CAPTION_BUBBLE_MODEL_H_
diff --git a/components/live_caption_strings.grdp b/components/live_caption_strings.grdp
index c68b2a3..f9a2e414 100644
--- a/components/live_caption_strings.grdp
+++ b/components/live_caption_strings.grdp
@@ -13,6 +13,9 @@
   <message name="IDS_LIVE_CAPTION_BUBBLE_COLLAPSE" desc="Tooltip for the Live Caption collapse button">
     Show fewer lines
   </message>
+  <message name="IDS_LIVE_CAPTION_BUBBLE_BACK_TO_TAB" desc="Tooltip for the Live Caption back-to-tab button. Clicking the button brings a user's focus back to the tab which is streaming the audio or video.">
+    Back to tab
+  </message>
   <message name="IDS_LIVE_CAPTION_BUBBLE_ERROR" desc="Error message for the Live Caption bubble when Live Captions are unavailable.">
     Live Caption is not available right now
   </message>
diff --git a/components/live_caption_strings_grdp/IDS_LIVE_CAPTION_BUBBLE_BACK_TO_TAB.png.sha1 b/components/live_caption_strings_grdp/IDS_LIVE_CAPTION_BUBBLE_BACK_TO_TAB.png.sha1
new file mode 100644
index 0000000..a5e4dc02
--- /dev/null
+++ b/components/live_caption_strings_grdp/IDS_LIVE_CAPTION_BUBBLE_BACK_TO_TAB.png.sha1
@@ -0,0 +1 @@
+93b94add9a63a63c7ba6bf0dc4f12fc1cf67493c
\ No newline at end of file
diff --git a/components/no_state_prefetch/browser/no_state_prefetch_manager.cc b/components/no_state_prefetch/browser/no_state_prefetch_manager.cc
index 8730c24..572e85c5 100644
--- a/components/no_state_prefetch/browser/no_state_prefetch_manager.cc
+++ b/components/no_state_prefetch/browser/no_state_prefetch_manager.cc
@@ -268,6 +268,15 @@
   }
 }
 
+void NoStatePrefetchManager::DestroyAllContents(FinalStatus final_status) {
+  DeleteOldWebContents();
+  while (!active_prefetches_.empty()) {
+    NoStatePrefetchContents* contents = active_prefetches_.front()->contents();
+    contents->Destroy(final_status);
+  }
+  DeleteToDeletePrerenders();
+}
+
 void NoStatePrefetchManager::MoveEntryToPendingDelete(
     NoStatePrefetchContents* entry,
     FinalStatus final_status) {
@@ -923,15 +932,6 @@
   return list_value;
 }
 
-void NoStatePrefetchManager::DestroyAllContents(FinalStatus final_status) {
-  DeleteOldWebContents();
-  while (!active_prefetches_.empty()) {
-    NoStatePrefetchContents* contents = active_prefetches_.front()->contents();
-    contents->Destroy(final_status);
-  }
-  DeleteToDeletePrerenders();
-}
-
 void NoStatePrefetchManager::SkipNoStatePrefetchContentsAndMaybePreconnect(
     const GURL& url,
     Origin origin,
diff --git a/components/no_state_prefetch/browser/no_state_prefetch_manager.h b/components/no_state_prefetch/browser/no_state_prefetch_manager.h
index 72dbdbc7..316718a 100644
--- a/components/no_state_prefetch/browser/no_state_prefetch_manager.h
+++ b/components/no_state_prefetch/browser/no_state_prefetch_manager.h
@@ -155,6 +155,11 @@
   // Cancels all active prerenders.
   void CancelAllPrerenders();
 
+  // Destroys all pending prerenders using FinalStatus.  Also deletes them as
+  // well as any swapped out WebContents queued for destruction.
+  // Used both on destruction, and when clearing the browsing history.
+  void DestroyAllContents(FinalStatus final_status);
+
   // Moves a NoStatePrefetchContents to the pending delete list from the list of
   // active prerenders when prerendering should be cancelled.
   virtual void MoveEntryToPendingDelete(NoStatePrefetchContents* entry,
@@ -457,11 +462,6 @@
   // Returns a new Value representing the pages currently being prerendered.
   std::unique_ptr<base::ListValue> GetActivePrerendersAsValue() const;
 
-  // Destroys all pending prerenders using FinalStatus.  Also deletes them as
-  // well as any swapped out WebContents queued for destruction.
-  // Used both on destruction, and when clearing the browsing history.
-  void DestroyAllContents(FinalStatus final_status);
-
   // Records the final status a prerender in the case that a
   // NoStatePrefetchContents was never created, adds a PrerenderHistory entry,
   // and may also initiate a preconnect to |url|.
diff --git a/components/omnibox/common/omnibox_features.cc b/components/omnibox/common/omnibox_features.cc
index 38d1ca0..5f56ef02 100644
--- a/components/omnibox/common/omnibox_features.cc
+++ b/components/omnibox/common/omnibox_features.cc
@@ -76,7 +76,7 @@
 
 // Feature used to display the title of the current URL match.
 const base::Feature kDisplayTitleForCurrentUrl{
-    "OmniboxDisplayTitleForCurrentUrl", enabled_by_default_desktop_android};
+    "OmniboxDisplayTitleForCurrentUrl", base::FEATURE_ENABLED_BY_DEFAULT};
 
 // Feature used to always swap the title and URL.
 const base::Feature kUIExperimentSwapTitleAndUrl{
diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoContainer.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoContainer.java
index 21fb497..b53772d 100644
--- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoContainer.java
+++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoContainer.java
@@ -70,7 +70,7 @@
         mExpandedUrlTitle = findViewById(R.id.page_info_url);
         initializeUrlView(mExpandedUrlTitle, params);
         mExpandedUrlTitle.setUrl(params.url, params.urlOriginLength);
-        // Adjust the mUrlTitle for displaying the non-truncated URL.
+        // Adjust mExpandedUrlTitle for displaying the non-truncated URL.
         mExpandedUrlTitle.toggleTruncation();
 
         mTruncatedUrlTitle = findViewById(R.id.page_info_truncated_url);
diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoView.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoView.java
index 7ca5b75..5879be4 100644
--- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoView.java
+++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoView.java
@@ -22,7 +22,6 @@
 import androidx.annotation.ColorRes;
 import androidx.annotation.DrawableRes;
 import androidx.annotation.StringRes;
-import androidx.annotation.VisibleForTesting;
 import androidx.appcompat.widget.AppCompatTextView;
 
 import org.chromium.ui.UiUtils;
@@ -492,9 +491,4 @@
 
         return animation;
     }
-
-    @VisibleForTesting
-    public String getUrlTitleForTesting() {
-        return mUrlTitle.getText().toString();
-    }
 }
diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java
index 7764b21..84a756c 100644
--- a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java
+++ b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java
@@ -12,12 +12,8 @@
 import android.text.SpannableStringBuilder;
 import android.text.style.TextAppearanceSpan;
 
-import androidx.core.app.NotificationManagerCompat;
-
-import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.Callback;
 import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
-import org.chromium.components.browser_ui.site_settings.SiteSettingsFeatureList;
 import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
 import org.chromium.components.content_settings.ContentSettingValues;
 import org.chromium.components.content_settings.ContentSettingsType;
@@ -115,12 +111,6 @@
                 permissionParams.clickCallback = createPermissionClickCallback(
                         NfcSystemLevelSetting.getNfcSystemLevelSettingIntent(),
                         null /* androidPermissions */);
-            } else if (shouldShowNotificationsDisabledWarning(permission)) {
-                permissionParams.warningTextResource =
-                        R.string.page_info_android_permission_blocked;
-                permissionParams.clickCallback = createPermissionClickCallback(
-                        ApiCompatibilityUtils.getNotificationSettingsIntent(),
-                        null /* androidPermissions */);
             } else if (!hasAndroidPermission(permission.type)) {
                 if (permission.type == ContentSettingsType.AR) {
                     permissionParams.warningTextResource =
@@ -189,13 +179,6 @@
         return permissionParams;
     }
 
-    private boolean shouldShowNotificationsDisabledWarning(PageInfoPermissionEntry permission) {
-        return permission.type == ContentSettingsType.NOTIFICATIONS
-                && !NotificationManagerCompat.from(mContext).areNotificationsEnabled()
-                && SiteSettingsFeatureList.isEnabled(
-                        SiteSettingsFeatureList.APP_NOTIFICATION_STATUS_MESSAGING);
-    }
-
     private boolean hasAndroidPermission(int contentSettingType) {
         String[] androidPermissions =
                 PermissionUtil.getAndroidPermissionsForContentSetting(contentSettingType);
diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_info_ui.cc
index b376b75..96a800c 100644
--- a/components/page_info/page_info_ui.cc
+++ b/components/page_info/page_info_ui.cc
@@ -816,10 +816,8 @@
 
 // static
 const ui::ImageModel PageInfoUI::GetLaunchIcon() {
-  // TODO(olesiamarukhno): The icon color should be lighter shade, based on
-  // secondary text style. Add new color id: kColorId_SecondaryIconColor.
   return ui::ImageModel::FromVectorIcon(
-      vector_icons::kLaunchIcon, ui::NativeTheme::kColorId_DefaultIconColor,
+      vector_icons::kLaunchIcon, ui::NativeTheme::kColorId_SecondaryIconColor,
       kVectorIconSize);
 }
 
diff --git a/components/page_info/page_info_ui_delegate.h b/components/page_info/page_info_ui_delegate.h
index 011b1530..7bd78f6 100644
--- a/components/page_info/page_info_ui_delegate.h
+++ b/components/page_info/page_info_ui_delegate.h
@@ -15,6 +15,7 @@
   virtual ~PageInfoUiDelegate() = default;
 #if !defined(OS_ANDROID)
   virtual bool IsBlockAutoPlayEnabled() = 0;
+  virtual bool ShouldShowSiteSettings() = 0;
 #endif
   virtual permissions::PermissionResult GetPermissionStatus(
       ContentSettingsType type) = 0;
diff --git a/components/password_manager/core/browser/android_affiliation/affiliation_fetch_throttler.cc b/components/password_manager/core/browser/android_affiliation/affiliation_fetch_throttler.cc
index bd762ad..4a95f2e 100644
--- a/components/password_manager/core/browser/android_affiliation/affiliation_fetch_throttler.cc
+++ b/components/password_manager/core/browser/android_affiliation/affiliation_fetch_throttler.cc
@@ -68,7 +68,6 @@
   // Start observing before querying the current connectivity state, so that if
   // the state changes concurrently in-between, it will not go unnoticed.
   network_connection_tracker_->AddNetworkConnectionObserver(this);
-  has_network_connectivity_ = !network_connection_tracker_->IsOffline();
 }
 
 AffiliationFetchThrottler::~AffiliationFetchThrottler() {
@@ -80,6 +79,8 @@
     return;
 
   state_ = FETCH_NEEDED;
+  has_network_connectivity_ = !network_connection_tracker_->IsOffline();
+
   if (has_network_connectivity_)
     EnsureCallbackIsScheduled();
 }
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index 2531072..9fda360 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -10902,7 +10902,7 @@
         'dynamic_refresh': True,
         'per_profile': False,
       },
-      'example_value': '.*@example.com',
+      'example_value': '.*@example\\.com',
       'id': 147,
       'caption': '''Restrict which Google accounts are allowed to be set as browser primary accounts in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>''',
       'tags': [],
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb
index cdeeb3c..279331e 100644
--- a/components/policy/resources/policy_templates_de.xtb
+++ b/components/policy/resources/policy_templates_de.xtb
@@ -435,6 +435,17 @@
       Siehe https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Verwendung des monitorlosen Modus nicht erlauben</translation>
 <translation id="1588240398285670601">Browsereinstellungen</translation>
+<translation id="1590071725627230651">Diese Einstellung bietet mehrere Verfügbarkeitsoptionen für den <ph name="LACROS_NAME" />-Browser.
+
+      Wenn diese Richtlinie auf „<ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" />“ gesetzt oder nicht konfiguriert ist, kann der Nutzer <ph name="LACROS_NAME" /> aktivieren und als primären Browser festlegen. <ph name="LACROS_NAME" /> kann weiterhin mit der Richtlinie <ph name="LACROS_ALLOWED_POLICY_NAME" /> deaktiviert werden.
+
+      Wenn die Richtlinie auf „<ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />“ gesetzt ist, kann der Nutzer <ph name="LACROS_NAME" /> nicht verwenden. Die Richtlinie <ph name="LACROS_ALLOWED_POLICY_NAME" /> wird ignoriert.
+
+      Wenn die Richtlinie auf „<ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />“ gesetzt ist, ist <ph name="LACROS_NAME" /> zwar aktiviert, er ist jedoch nicht der primäre Browser. Die Richtlinie <ph name="LACROS_ALLOWED_POLICY_NAME" /> wird ignoriert.
+
+      Wenn die Richtlinie auf „<ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />“ gesetzt ist, ist <ph name="LACROS_NAME" /> aktiviert und als primärer Browser festgelegt. Die Richtlinie <ph name="LACROS_ALLOWED_POLICY_NAME" /> wird ignoriert.
+
+      Künftig können Sie <ph name="LACROS_NAME" /> unter <ph name="PRODUCT_OS_NAME" /> mit dem Wert „<ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" />“ als einzigen verfügbaren Browser festlegen.</translation>
 <translation id="1599424828227887013">Website-Isolierung für angegebene Ursprünge auf Android-Geräten aktivieren</translation>
 <translation id="159946228300522107">Wenn für diese Richtlinie "True" festgelegt ist, maximiert Chrome beim ersten Start das erste angezeigte Fenster.
 
@@ -674,6 +685,7 @@
 <translation id="1920772397574801429">Wenn die Richtlinie konfiguriert ist, werden die Typen von Konten festgelegt, die von der Android-Authentifizierungs-App angegeben werden, die die Authentifizierung durch <ph name="HTTP_NEGOTIATE" /> unterstützt, z. B. die Kerberos-Authentifizierung. Diese Informationen sollten vom Anbieter der Authentifizierungs-App bereitgestellt werden. Weitere Informationen finden Sie in den Chromium-Projekten unter https://goo.gl/hajyfN.
 
       Wenn die Richtlinie nicht konfiguriert ist, wird die <ph name="HTTP_NEGOTIATE" />-Authentifizierung bei Android deaktiviert.</translation>
+<translation id="1925529914257504750">P2P für automatische Updates aktiviert</translation>
 <translation id="1930127294345368978">Maximal zulässige Anzahl Blätter für einen einzelnen Druckauftrag</translation>
 <translation id="193259052151668190">Whitelist mit trennbaren USB-Geräten</translation>
 <translation id="1933378685401357864">Hintergrundbild</translation>
@@ -749,6 +761,7 @@
           Wenn sie nicht konfiguriert ist, folgt die Funktion ihrer eigenen internen Logik und kann von Nutzern manuell konfiguriert werden.
 
           Bitte beachten Sie, dass die Richtlinie pro Renderer-Prozess angewendet wird. Dabei wird der letzte Wert der Richtlinie angewendet, wenn ein Renderer-Prozess startet. Wenn Sie sicherstellen möchten, dass alle geladenen Tabs die gleiche Richtlinieneinstellung erhalten, ist ein Neustart des Browsers nötig. Allerdings ist es kein Problem, wenn einzelne Prozesse mit unterschiedlichen Werten für diese Richtlinie laufen.</translation>
+<translation id="2029985289397958781">Kameragestützte Suche mit <ph name="GOOGLE_LENS_PRODUCT_NAME" /> für Unternehmensnutzer deaktivieren</translation>
 <translation id="2030905906517501646">Suchbegriff der Standardsuchmaschine</translation>
 <translation id="203096360153626918">Diese Richtlinie hat keine Auswirkungen auf die Android-Apps. Der Vollbildmodus kann aktiviert werden, auch wenn diese Richtlinie auf <ph name="FALSE" /> gesetzt ist.</translation>
 <translation id="2032848225007871645">Durch die Konfiguration der Richtlinie wird festgelegt, mit welchen Modi für das schnelle Entsperren der Sperrbildschirm entsperrt werden kann.
@@ -936,6 +949,13 @@
       Diese Richtlinie sollte nicht für Geräte verwendet werden, die öffentlich zugänglich sind.
 
       Wenn die Richtlinie auf "True" gesetzt oder nicht konfiguriert ist, bleibt die Datenschutzwarnung in der automatisch gestarteten verwalteten Gastsitzung angepinnt, bis der Nutzer sie schließt.</translation>
+<translation id="2281878365805647176">Wenn die Richtlinie konfiguriert ist, sind die eingeschränkten Anmeldefunktionen von Chrome in <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> aktiviert und es wird verhindert, dass Nutzer diese Einstellung ändern. Nutzer können nur über Konten der angegebenen Domains auf Tools von Google zugreifen. Möchten Sie gmail.com- oder googlemail.com-Konten zulassen, müssen Sie der Domainliste „consumer_accounts“ (ohne Anführungszeichen) hinzufügen. Diese Einstellung verhindert, dass Nutzer sich auf einem verwalteten Gerät, für das eine Authentifizierung durch Google notwendig ist, anmelden und ein zweites Konto hinzufügen können, wenn dieses Konto nicht zu einer der Domains in der Zulassungsliste gehört.
+
+      Wenn Sie diese Einstellung leer lassen oder nicht konfigurieren, können Nutzer über beliebige Konten auf <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> zugreifen.
+
+      Nutzer können diese Einstellung weder ändern noch überschreiben.
+
+      Hinweis: Durch diese Richtlinie wird allen HTTP- und HTTPS-Anfragen, die an google.com-Domains gesendet werden, der Header „X-GoogApps-Allowed-Domains“ angehängt (siehe https://support.google.com/a/answer/1668854).</translation>
 <translation id="2289265947759479962">Mit dieser Richtlinie wird festgelegt, ob Versionsinformationen wie die Betriebssystemversion, das Betriebssystem, die Architektur des Betriebssystems, die <ph name="PRODUCT_NAME" />-Version und der <ph name="PRODUCT_NAME" />-Release-Channel gesendet werden.
 
       Wenn die Richtlinie <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> deaktiviert oder nicht konfiguriert ist, wird diese Richtlinie ignoriert.
@@ -1000,6 +1020,7 @@
 
       Wenn Sie die Richtlinie auf "False" setzen oder nicht konfigurieren, führt die Tastatur standardmäßig Medientastenbefehle aus. Bei gedrückter Suchtaste führt die Tastatur Funktionstastenbefehle aus.</translation>
 <translation id="2358176879566587521">Diese Richtlinie wurde entfernt. Sie ist mit dieser Version von <ph name="PRODUCT_NAME" /> nicht kompatibel. Weitere Informationen dazu finden Sie unter https://support.google.com/chrome/a/answer/7643500.</translation>
+<translation id="2362469626417133796">Zeitfenster für den Neustart</translation>
 <translation id="2364639863953745682">Modus für die Assistant-Einrichtung</translation>
 <translation id="2384233438419344179">Wenn diese Richtlinie aktiviert ist, können Websiteelemente, die nicht von der Domain in der Adressleiste des Browsers stammen, keine Cookies setzen. Wenn die Richtlinie deaktiviert ist, können diese Elemente Cookies setzen und Nutzer können diese Einstellung nicht ändern.
 
@@ -1074,6 +1095,7 @@
 <translation id="2433516903565257847">Prozentualer Anteil der Geräte, die nach der angegebenen Anzahl von Tagen aktualisiert werden müssen.</translation>
 <translation id="2435052056904485763">Zulassungsliste für Kerberos-Bevollmächtigungs-Server</translation>
 <translation id="2435232509335686514">Konfigurationsrichtlinie für den Umgang mit heruntergeladenen Dateien durch den <ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /></translation>
+<translation id="2436302465999055995"><ph name="LACROS_NAME" /> als einzigen verfügbaren Browser festlegen (noch nicht implementiert)</translation>
 <translation id="2448315169529769573">Wenn die Richtlinie aktiviert ist, meldet <ph name="PRODUCT_OS_NAME" /> Nutzungsdaten und Fehlerberichte, inklusive Absturzberichte, an Google. Ist die Richtlinie deaktiviert, werden Nutzungsdaten und Fehlerberichte nicht gemeldet.
 
        Ist sie nicht konfiguriert, werden Nutzungsdaten und Fehlerberichte nur für verwaltete Geräte gemeldet.</translation>
@@ -1219,6 +1241,7 @@
 
       Wenn die Richtlinie nicht konfiguriert ist, wird <ph name="PRINTERS_ALLOW_ALL" /> verwendet.</translation>
 <translation id="2586117300379904732">Wakelocks für die Energieverwaltung zulassen</translation>
+<translation id="2586231026319371211">Die Zeit wird im lokalen 24-Stunden-Format angegeben.</translation>
 <translation id="2587719089023392205"><ph name="PRODUCT_NAME" /> als Standardbrowser festlegen</translation>
 <translation id="2588252329503406673">Mit dieser Richtlinie konfigurieren Sie, wie <ph name="PRODUCT_OS_NAME" /> sich verhalten soll, wenn auf dem Anmeldebildschirm eine Zeit lang keine Nutzeraktivität erfolgt. Durch die Richtlinie werden mehrere Einstellungen festgelegt. Deren Semantik und zulässige Wertebereiche finden Sie unter den entsprechenden Richtlinien zur Steuerung der Energieverwaltung innerhalb einer Sitzung.
 
@@ -1236,6 +1259,7 @@
 <translation id="2593762551209145088">Safe Browsing ist nie aktiv.</translation>
 <translation id="26023406105317310">Kerberos-Konten konfigurieren</translation>
 <translation id="2604182581880595781">Richtlinien für Netzwerkfreigaben konfigurieren.</translation>
+<translation id="2608535066974278204">Zeitraum (in Minuten), der die Dauer des Zeitfensters für den Neustart angibt.</translation>
 <translation id="2615240493030733717">Informationen zur Zeitzone ausgeben</translation>
 <translation id="2619966380594000538">Wenn die Richtlinie aktiviert oder nicht konfiguriert ist, werden Sicherheitswarnungen angezeigt, wenn Chrome mit potenziell schädlichen Befehlszeilen-Flags gestartet wird.
 
@@ -1871,6 +1895,7 @@
 <translation id="3415954062311826850">Diese Richtlinie wird in ARC nicht unterstützt.</translation>
 <translation id="34160070798637152">Legt die Netzwerkkonfiguration für das gesamte Gerät fest.</translation>
 <translation id="3417130629744653218">Websites erlauben, verfügbare Zahlungsmethoden abzufragen.</translation>
+<translation id="3417391585519621050">Kameragestützte Suche mit <ph name="GOOGLE_LENS_PRODUCT_NAME" /> für Unternehmensnutzer aktivieren</translation>
 <translation id="3417418267404583991">Wenn diese Richtlinie auf "true" gesetzt oder nicht konfiguriert ist, sind Gastanmeldungen in <ph name="PRODUCT_OS_NAME" /> möglich. Eine Anmeldung als Gast erfolgt anonym und erfordert keine Passworteingabe.
 
       Ist die Richtlinie auf "false" eingestellt, können in <ph name="PRODUCT_OS_NAME" /> keine Gastsitzungen gestartet werden.</translation>
@@ -3359,6 +3384,7 @@
       Wenn für diese Richtlinie ein Wert festgelegt wurde und dieser Wert nicht "0" ist, wird der aktuell angemeldete Demo-Nutzer nach der angegebenen Inaktivitätsdauer automatisch abgemeldet.
 
       Der Wert sollte in Millisekunden angegeben werden.</translation>
+<translation id="55057839818162162">Kameragestützte Suche mit <ph name="GOOGLE_LENS_PRODUCT_NAME" /> erlauben</translation>
 <translation id="5508307164752647432">Kerberos-Funktion aktivieren</translation>
 <translation id="5511702823008968136">Lesezeichenleiste aktivieren</translation>
 <translation id="5512418063782665071">Startseiten-URL</translation>
@@ -3375,6 +3401,7 @@
 <translation id="5526184558582921522">Anfragen an den Quirks Server und potenzielle Downloads von Hardware-spezifischen Konfigurationsdateien zulassen</translation>
 <translation id="5526701598901867718">Alle (nicht sicher)</translation>
 <translation id="5530347722229944744">Potenziell gefährliche Downloads blockieren</translation>
+<translation id="5535256585099022933">Zeitintervall für den Neustart festlegen</translation>
 <translation id="5535973522252703021">Zulassungsliste für Kerberos-Bevollmächtigungs-Server</translation>
 <translation id="553806128266843748">Boolescher Parameter, der angibt, ob die Drosselung aktiviert ist.</translation>
 <translation id="5540885720415375851">Erkennung lokaler Geräte zulassen</translation>
@@ -3661,6 +3688,7 @@
 <translation id="5890063326284543943">Verwendung der Serial API steuern</translation>
 <translation id="5897913798715600338">Lädt den Akku mit Schnellladetechnologie auf.</translation>
 <translation id="5898486742390981550">Wenn mehrere Nutzer angemeldet sind, kann nur der Hauptnutzer Android-Apps verwenden.</translation>
+<translation id="5899751601113377553">Verhindern, dass Nutzer <ph name="LACROS_NAME" /> verwenden</translation>
 <translation id="5901427587865226597">Nur Duplexdruck</translation>
 <translation id="5905473632148429217">OCSP/CRL-Online-Prüfungen aktivieren</translation>
 <translation id="5907283448020542268">Wenn die Einstellung "<ph name="GLS_ENABLED" />" gewählt und die Richtlinie "<ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" />" nicht auf "<ph name="BLOCK_GEOLOCATION_SETTING" />" gesetzt ist, sind die Standortdienste von Google während der Ersteinrichtung aktiviert. Wenn die Richtlinie auf "<ph name="GLS_DISABLED" />" gesetzt ist oder keine Einstellung gewählt wird, sind die Standortdienste während der Einrichtung deaktiviert.
@@ -3844,6 +3872,13 @@
 
       Wird die Richtlinie nicht konfiguriert, können Nutzer das Design nach Belieben ändern.</translation>
 <translation id="6195802366906945965">Mit dieser Richtlinie kann festgelegt werden, ob die integrierte Zertifikatsprüfung zum Verifizieren von Serverzertifikaten verwendet wird</translation>
+<translation id="6198375221792846439">Sie können ein Zeitfenster für das Ende des Benachrichtigungszeitraums für den Neustart festlegen.
+
+      Nutzer werden abhängig von den Richtlinieneinstellungen für <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> und <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" /> benachrichtigt, dass der Neustart des Browsers oder Geräts erforderlich ist. Wenn die Richtlinie <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> auf „Required“ festgelegt ist, wird der Neustart für Browser und Geräte am Ende des Benachrichtigungszeitraums erzwungen. Die Richtlinie <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> kann verwendet werden, um das Ende des Benachrichtigungszeitraums zu verzögern, sodass es in ein bestimmtes Zeitfenster fällt.
+
+      Wenn diese Richtlinie nicht konfiguriert ist, liegt das Zeitfenster für <ph name="PRODUCT_OS_NAME" /> standardmäßig zwischen 2:00 und 4:00 Uhr. Das Zeitfenster für <ph name="PRODUCT_NAME" /> ist standardmäßig der ganze Tag (das Ende des Benachrichtigungszeitraums wird also nicht verschoben).
+
+      Hinweis: Durch das Konfigurieren dieser Richtlinie kann sich die Anwendung von Softwareupdates verzögern.</translation>
 <translation id="6208896993204286313"><ph name="PRODUCT_NAME" />-Richtliniendaten erfassen</translation>
 <translation id="6210259502936598222">Informationen zu Betriebssystem und <ph name="PRODUCT_NAME" />-Version erfassen</translation>
 <translation id="6212868225782276239">Alle Drucker außer denen in der Sperrliste werden angezeigt.</translation>
@@ -4022,6 +4057,7 @@
 <translation id="6464074037294098618">„Automatisches Ausfüllen“ für Adressen aktivieren</translation>
 <translation id="6467613372414922590">Hosts für natives Messaging, die ohne Berechtigung des Administrators installiert wurden, auf Nutzerebene zulassen</translation>
 <translation id="6473623140202114570">Hiermit wird die Liste der Domains konfiguriert, auf denen durch Safe Browsing keine Warnungen ausgelöst werden.</translation>
+<translation id="647645276885673708"><ph name="LACROS_NAME" /> aktivieren und als primären Browser festlegen</translation>
 <translation id="647698599569353771">Aktivieren von Nearby Share zulassen.</translation>
 <translation id="6478258366184919502">Ursprünge für Anmeldebildschirm</translation>
 <translation id="6478261301433199402">Wenn diese Richtlinie konfiguriert ist, wird das <ph name="PLUGIN_VM_NAME" />-Bild für den Nutzer festgelegt. Geben Sie diese Richtlinie als String im JSON-Format an, wobei <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> angibt, wo das Bild heruntergeladen werden kann. Zusätzlich wird <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> als ein SHA-256-Hash-Wert festgelegt, mit dem die Integrität des Downloads bestätigt wird.</translation>
@@ -4808,6 +4844,7 @@
 <translation id="7340034977315324840">Aktivitätszeit von Geräten melden</translation>
 <translation id="7343004974628511824">DNS-Abfangprüfungen ausführen</translation>
 <translation id="7343497214039883642">Unternehmensdrucker-Konfigurationsdatei für Geräte</translation>
+<translation id="7358359585412734876"><ph name="LACROS_NAME" /> aktivieren</translation>
 <translation id="7358744897221281073">Durch Aktivieren dieser Einstellung können Nutzer, die der Verwendung von Phone Hub zugestimmt haben, Aufgaben auf Chrome OS fortsetzen, wie etwa das Ansehen von Websites ihres Smartphones.
 
       Wenn diese Einstellung deaktiviert ist, können Nutzer die Funktion nicht verwenden. Ist die Richtlinie „PhoneHubAllowed“ deaktiviert, können Nutzer die Funktion ebenfalls nicht verwenden.
@@ -5310,6 +5347,7 @@
 
       Ist sie deaktiviert oder nicht konfiguriert, melden registrierte Geräte keine Speicherstatistiken.</translation>
 <translation id="8044493735196713914">Startmodus von Geräten melden</translation>
+<translation id="80453040817068401"><ph name="LACROS_NAME" /> verfügbar machen</translation>
 <translation id="8049769137921877885">Mit dieser Richtlinie wird festgelegt, ob Daten zu Richtlinien und zur Zeit des Richtlinienabrufs gesendet werden.
 
       Wenn die Richtlinie <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> deaktiviert oder nicht konfiguriert ist, wird diese Richtlinie ignoriert.
@@ -5930,6 +5968,7 @@
 <translation id="8892286064305622118">Erforderlicher freier Speicherplatz für <ph name="PLUGIN_VM_NAME" /></translation>
 <translation id="8892783613915541293">Verzögerungen und Aktionen, die ausgeführt werden sollen, wenn das Gerät im Netzbetrieb inaktiv ist</translation>
 <translation id="8897796778265450949">Zeit beschränken, während der sich ein über GAIA ohne SAML authentifizierter Nutzer offline anmelden kann</translation>
+<translation id="889814528399907891">Nutzern erlauben, <ph name="LACROS_NAME" /> zu aktivieren und als primären Browser festzulegen</translation>
 <translation id="8903283771634816230">Wenn die Richtlinie aktiviert ist, verwendet <ph name="PRODUCT_NAME" /> den Standarddrucker des Betriebssystems als Standardziel für die Druckvorschau.
 
       Ist die Richtlinie deaktiviert oder nicht konfiguriert, verwendet <ph name="PRODUCT_NAME" /> den zuletzt genutzten Drucker als Standardziel für die Druckvorschau.</translation>
@@ -6075,6 +6114,7 @@
       Ist die Richtlinie deaktiviert, werden die Zeiten von registrierten Geräten weder aufgezeichnet noch gemeldet.</translation>
 <translation id="9077227880520270584">Timer für automatische Anmeldung in lokalem Gerätekonto</translation>
 <translation id="9084985621503260744">Angaben zum Einfluss von Videoaktivitäten auf den Energiesparmodus</translation>
+<translation id="9088191250434406767">Wenn diese Richtlinie nicht konfiguriert oder auf „Enabled“ gesetzt wird, können Nutzer mit <ph name="GOOGLE_LENS_PRODUCT_NAME" /> ihre Kamera für die Suche verwenden. Ist die Richtlinie auf „Disabled“ gesetzt, wird Nutzern die Schaltfläche „<ph name="GOOGLE_LENS_PRODUCT_NAME" />“ im Suchfeld nicht angezeigt, wenn die kameragestützte Suche mit <ph name="GOOGLE_LENS_PRODUCT_NAME" /> verfügbar ist.</translation>
 <translation id="9088433379343318874">Contentanbieter für betreute Nutzer aktivieren</translation>
 <translation id="9088444059179765143">Methode für die automatische Erkennung der Zeitzone konfigurieren</translation>
 <translation id="9095999573959728902">Wenn diese Einstellung aktiviert ist, können Nutzer der Verwendung von Phone Hub zustimmen. Dadurch können sie auf einem Chrome OS-Gerät mit ihrem Smartphone interagieren.
@@ -6146,6 +6186,12 @@
 
       Nach dem Neustart wird die Sitzung des Nutzers wiederhergestellt.</translation>
 <translation id="9160028464653564229">Websites nicht erlauben, den Nutzer über die Serial API um Zugriff auf serielle Ports zu bitten</translation>
+<translation id="916461878260574432">Sie können festlegen, ob P2P für die Nutzlasten von Betriebssystem-Updates verwendet werden soll.
+      Wenn die Richtlinie auf „True“ gesetzt ist, teilen Geräte Update-Nutzlasten im LAN und versuchen, die Daten von dort zu laden. Dadurch wird potenziell weniger Internetbandbreite verbraucht und es kommt seltener zu Datenstaus. Wenn die Update-Nutzlast nicht im LAN verfügbar ist, lädt das Gerät die Daten stattdessen von einem Updateserver herunter.
+      Ist die Richtlinie auf „False“ gesetzt oder nicht konfiguriert, wird P2P nicht verwendet.
+
+      HINWEIS: Das Standardverhalten ist für Verbraucher- und Unternehmensgeräte unterschiedlich: Auf verwalteten Geräten ist P2P aktiviert, auf nicht verwalteten Geräten ist P2P dagegen deaktiviert.</translation>
+<translation id="9164656078867027374">Domains festlegen, die auf <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> zugreifen dürfen</translation>
 <translation id="9167719789236691545">Synchronisierung zwischen Drive und der App "Dateien" von <ph name="PRODUCT_OS_NAME" /> deaktivieren</translation>
 <translation id="9187743794267626640">Bereitstellen von externem Speicher deaktivieren</translation>
 <translation id="9190456586252617675">Mit dieser Richtlinie kann der Modus für die Einrichtung von Assistant konfiguriert werden.
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index bcdcebe..3e7612dd 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -441,6 +441,17 @@
       Consulta https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">No permitir el uso del modo sin interfaz gráfica</translation>
 <translation id="1588240398285670601">Configuración del navegador</translation>
+<translation id="1590071725627230651">Esta configuración brinda diferentes opciones de disponibilidad para el navegador <ph name="LACROS_NAME" />.
+
+      Si estableces la política como <ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" /> o no la estableces, el usuario podrá habilitar <ph name="LACROS_NAME" /> y seleccionarlo como navegador principal. <ph name="LACROS_NAME" /> puede inhabilitarse mediante la política <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      Si estableces la política como <ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />, el usuario no podrá usar <ph name="LACROS_NAME" />. Se ignorará la política <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      Si estableces la política como <ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />, se habilitará <ph name="LACROS_NAME" />, pero no será el navegador principal. Se ignorará la política <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      Si estableces la política como <ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />, se habilitará <ph name="LACROS_NAME" /> y será el navegador principal. Se ignorará la política <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      Posteriormente, se podrá seleccionar <ph name="LACROS_NAME" /> como el único navegador disponible en <ph name="PRODUCT_OS_NAME" /> a través del valor <ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" />.</translation>
 <translation id="1599424828227887013">Habilitar el aislamiento de sitios para orígenes específicos en dispositivos Android</translation>
 <translation id="159946228300522107">Si estableces la política como verdadera, Chrome maximizará la primera ventana que se muestre en la primera ejecución.
 
@@ -679,6 +690,7 @@
 <translation id="1920772397574801429">Si estableces esta política, se especificará el tipo de cuentas que proporciona la app de autenticación de Android compatible con la autenticación <ph name="HTTP_NEGOTIATE" /> (como la autenticación Kerberos). El proveedor de la app de autenticación debe brindar esta información. Para saber más sobre este procedimiento, consulta The Chromium Projects (https://goo.gl/hajyfN)
 
       Si no estableces la política, se desactivará la autenticación <ph name="HTTP_NEGOTIATE" /> en Android.</translation>
+<translation id="1925529914257504750">Se habilitó la actualización automática de la conexión P2P</translation>
 <translation id="1930127294345368978">Cantidad máxima de hojas permitidas para un solo trabajo de impresión</translation>
 <translation id="193259052151668190">Lista blanca de dispositivos USB que se pueden separar</translation>
 <translation id="1933378685401357864">Imagen de fondo de pantalla</translation>
@@ -764,6 +776,7 @@
           reiniciar el navegador para asegurarse de que todas las pestañas cargadas reciban una
           configuración de política coherente. Distintos procesos pueden tener valores diferentes para esta política
           sin efectos adversos.</translation>
+<translation id="2029985289397958781">Inhabilitar la búsqueda asistida por cámara mediante <ph name="GOOGLE_LENS_PRODUCT_NAME" /> para usuarios empresariales</translation>
 <translation id="2030905906517501646">Palabra clave del proveedor de búsqueda predeterminado</translation>
 <translation id="203096360153626918">Esta política no tiene efecto en las apps de Android. Podrán implementar el modo de pantalla completa, incluso si esta política se establece como <ph name="FALSE" />.</translation>
 <translation id="2032848225007871645">Si estableces la política, se controla qué modos de desbloqueo rápido pueden desbloquear la pantalla de bloqueo.
@@ -953,6 +966,13 @@
       No se debe usar esta política para dispositivos utilizados por el público en general.
 
       Si estableces la política como verdadera o no la estableces, se fijará la notificación de advertencia de privacidad de la sesión de invitado administrada con inicio automático hasta que el usuario la descarte.</translation>
+<translation id="2281878365805647176">Si estableces la política, se activará la función de acceso restringido de Chrome en <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />, y los usuarios no podrán cambiar esta configuración. Los usuarios solo podrán acceder a las herramientas de Google mediante cuentas de dominios específicos (para permitir cuentas de gmail o googlemail, debes agregar consumer_accounts a la lista de dominios). Esta configuración no permite que los usuarios accedan ni agreguen una cuenta secundaria en un dispositivo administrado que requiera autenticación de Google, en caso de que esa cuenta no pertenezca a uno de los dominios permitidos de forma explícita.
+
+      Si dejas vacía esta configuración o no la estableces, los usuarios podrán acceder a <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> con cualquier cuenta.
+
+      Los usuarios no podrán cambiar ni anular esta configuración.
+
+      Nota: Esta política provoca que se agregue el encabezado X-GoogApps-Allowed-Domains a todas las solicitudes HTTP y HTTPS para todos los dominios google.com, como se describe en https://support.google.com/a/answer/1668854.</translation>
 <translation id="2289265947759479962">Esta política controla el envío de los datos sobre la versión, como la arquitectura, la plataforma y la versión del SO, así como la versión de <ph name="PRODUCT_NAME" /> y el canal de <ph name="PRODUCT_NAME" />.
 
       Si no estableces la política <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> o la inhabilitas, se ignorará.
@@ -1017,6 +1037,7 @@
 
       Si estableces el valor "False" para esta política o no la configuras, el teclado generará comandos de teclas de funciones de forma predeterminada. Cuando presiones la tecla de búsqueda, se cambiarán a teclas de funciones.</translation>
 <translation id="2358176879566587521">Se quita esta política. No es compatible con esta versión de <ph name="PRODUCT_NAME" />. Obtén más información en https://support.google.com/chrome/a/answer/7643500</translation>
+<translation id="2362469626417133796">Lapso para el reinicio</translation>
 <translation id="2364639863953745682">Modo de la experiencia de integración del Asistente</translation>
 <translation id="2384233438419344179">Si habilitas la política, los elementos de la página web que no sean del dominio especificado en la barra de direcciones del navegador no podrán establecer cookies. Si inhabilitas la política, esos elementos podrán establecer cookies y los usuarios no podrán cambiar esta configuración.
 
@@ -1091,6 +1112,7 @@
 <translation id="2433516903565257847">El porcentaje del grupo de dispositivos que se debe actualizar luego de la cantidad de días determinada.</translation>
 <translation id="2435052056904485763">Lista de servidores de delegación de Kerberos permitidos</translation>
 <translation id="2435232509335686514">Política de configuración del modo en que <ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /> maneja los archivos descargados</translation>
+<translation id="2436302465999055995">Seleccionar <ph name="LACROS_NAME" /> como el único navegador disponible (aún no se implementó)</translation>
 <translation id="2448315169529769573">Si habilitas la política, <ph name="PRODUCT_OS_NAME" /> informará a Google sobre las métricas de uso y los datos de diagnóstico, incluidos los informes de fallas. Si inhabilitas la política, se desactivarán los informes sobre datos de diagnóstico y métricas.
 
        Si no la estableces, se desactivarán los informes sobre datos de diagnóstico y métricas en dispositivos no administrados y se activarán en dispositivos administrados.</translation>
@@ -1241,6 +1263,7 @@
 
       Si no estableces la política, se aplicará <ph name="PRINTERS_ALLOW_ALL" />.</translation>
 <translation id="2586117300379904732">Permite los bloqueos de activación para la administración de energía</translation>
+<translation id="2586231026319371211">Hora local en formato de reloj de pared de 24 horas.</translation>
 <translation id="2587719089023392205">Establecer <ph name="PRODUCT_NAME" /> como navegador predeterminado</translation>
 <translation id="2588252329503406673">Si estableces la política, podrás establecer el comportamiento de <ph name="PRODUCT_OS_NAME" /> cuando no haya actividad del usuario durante cierta cantidad de tiempo mientras se muestre la pantalla de acceso. La política controla múltiples opciones de configuración. Si deseas obtener información sobre su semántica individual y los rangos de valores, consulta las políticas correspondientes que controlan la administración de energía en una sesión.
 
@@ -1258,6 +1281,7 @@
 <translation id="2593762551209145088">La Navegación segura nunca está activa.</translation>
 <translation id="26023406105317310">Configura las cuentas de Kerberos</translation>
 <translation id="2604182581880595781">Configura las políticas relacionadas con la función "Network File Shares".</translation>
+<translation id="2608535066974278204">Período (en minutos) que especifica el plazo para el reinicio.</translation>
 <translation id="2615240493030733717">Envía información sobre la zona horaria</translation>
 <translation id="2619966380594000538">Si inhabilitas la política o no la estableces, aparecerán las advertencias de seguridad cuando se usen marcas de la línea de comandos potencialmente peligrosas para iniciar Chrome.
 
@@ -1889,6 +1913,7 @@
 <translation id="3415954062311826850">No se admite esta política en ARC.</translation>
 <translation id="34160070798637152">Controla la configuración de red en todo el dispositivo.</translation>
 <translation id="3417130629744653218">Permite que los sitios web consulten las formas de pago disponibles.</translation>
+<translation id="3417391585519621050">Habilitar la búsqueda asistida por cámara mediante <ph name="GOOGLE_LENS_PRODUCT_NAME" /> para usuarios empresariales</translation>
 <translation id="3417418267404583991">Si esta política no se configura o se establece en "true", <ph name="PRODUCT_OS_NAME" /> permitirá iniciar sesión como invitado. Los inicios de sesión como invitado son sesiones de usuario anónimas y no requieren contraseña.
 
       Si esta política se establece en "false", <ph name="PRODUCT_OS_NAME" /> no permitirá el inicio de sesiones de invitados.</translation>
@@ -3375,6 +3400,7 @@
       Cuando se establece el valor de esta política y este no es 0, la sesión del usuario que haya accedido en ese momento en el modo de demostración se cerrará automáticamente una vez transcurrido el período de inactividad especificado.
 
       El valor de la política se debe especificar en milisegundos.</translation>
+<translation id="55057839818162162">Permitir la búsqueda asistida por cámara mediante <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="5508307164752647432">Habilitar la funcionalidad Kerberos</translation>
 <translation id="5511702823008968136">Habilitar barra de favoritos</translation>
 <translation id="5512418063782665071">URL de la página principal</translation>
@@ -3390,6 +3416,7 @@
 <translation id="5526184558582921522">Permitir las consultas a Quirks Server y los archivos de configuración específicos de hardware que se pueden descargar</translation>
 <translation id="5526701598901867718">Todos (inseguro)</translation>
 <translation id="5530347722229944744">Bloquear las descargas potencialmente peligrosas</translation>
+<translation id="5535256585099022933">Establecer el lapso para el reinicio</translation>
 <translation id="5535973522252703021">Lista blanca de servidores de delegación de Kerberos</translation>
 <translation id="553806128266843748">Una función experimental booleana que indica si está habilitada la limitación de la red.</translation>
 <translation id="5540885720415375851">Permite el descubrimiento de dispositivos locales</translation>
@@ -3685,6 +3712,7 @@
 <translation id="5890063326284543943">Controla el uso de la API de Serial</translation>
 <translation id="5897913798715600338">Usar la tecnología de carga rápida para la batería</translation>
 <translation id="5898486742390981550">Cuando varios usuarios accedieron a sus cuentas, solo el usuario principal puede usar las apps de Android.</translation>
+<translation id="5899751601113377553">Impedir que los usuarios utilicen <ph name="LACROS_NAME" /></translation>
 <translation id="5901427587865226597">Solo impresión doble</translation>
 <translation id="5905473632148429217">Habilitar las comprobaciones OCSP/CRL en línea</translation>
 <translation id="5907283448020542268">A menos que la política <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> se establezca como <ph name="BLOCK_GEOLOCATION_SETTING" />, la opción <ph name="GLS_ENABLED" /> activará los Servicios de ubicación de Google durante la configuración inicial. Si la estableces como <ph name="GLS_DISABLED" /> o no la estableces, los Servicios de ubicación se mantendrán desactivados durante la configuración.
@@ -3872,6 +3900,13 @@
 
       Si no la estableces, los usuarios podrán cambiar el tema de su navegador como prefieran.</translation>
 <translation id="6195802366906945965">Determina si se utilizará el verificador de certificados integrado para verificar los certificados de servidores</translation>
+<translation id="6198375221792846439">Especifica un lapso fijado para la finalización del período de la notificación de reinicio.
+
+      Se notifica a los usuarios que se debe reiniciar el navegador o el dispositivo conforme a la configuración de las políticas <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> y <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" />. Los navegadores y dispositivos se reinician de manera forzosa al finalizar el período de la notificación cuando se establece la política <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> como obligatoria. La política <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> puede utilizarse para posponer la finalización del período de la notificación de modo que coincida con un lapso determinado.
+
+      Si no estableces esta política, el lapso fijado de forma predeterminada para <ph name="PRODUCT_OS_NAME" /> es entre 2 a.m. y 4 a.m. El lapso fijado de forma predeterminada para <ph name="PRODUCT_NAME" /> es todo el día (p. ej., no se pospone nunca el período de la notificación).
+
+      Advertencia: Si estableces esta política, es posible que se retrase la aplicación de las actualizaciones de software.</translation>
 <translation id="6208896993204286313">Enviar la información de la política de <ph name="PRODUCT_NAME" /></translation>
 <translation id="6210259502936598222">Enviar la información del SO y de la versión de <ph name="PRODUCT_NAME" /></translation>
 <translation id="6212868225782276239">Se muestran todas las impresoras, excepto las de la lista negra.</translation>
@@ -4050,6 +4085,7 @@
 <translation id="6464074037294098618">Habilitar "Autocompletar" para las direcciones</translation>
 <translation id="6467613372414922590">Permite el uso de hosts de mensajería nativa en el nivel de usuario (instalados sin permisos de administrador).</translation>
 <translation id="6473623140202114570">Configura la lista de dominios donde la Navegación segura no activa advertencias.</translation>
+<translation id="647645276885673708">Habilitar <ph name="LACROS_NAME" /> y seleccionarlo como navegador predeterminado</translation>
 <translation id="647698599569353771">Permite habilitar Compartir con Nearby.</translation>
 <translation id="6478258366184919502">Orígenes de la pantalla de acceso</translation>
 <translation id="6478261301433199402">Si estableces la política, se especificará la imagen de <ph name="PLUGIN_VM_NAME" /> para un usuario. Especifica esta política como una cadena de formato JSON que incluye <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> (establece dónde se descarga la imagen) y <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> (como un hash SHA-256 para verificar la integridad de la descarga).</translation>
@@ -4833,6 +4869,7 @@
 <translation id="7340034977315324840">Notificar tiempo de actividad del dispositivo</translation>
 <translation id="7343004974628511824">Realizar comprobaciones de intercepción de DNS</translation>
 <translation id="7343497214039883642">Archivo de configuración de las impresoras empresariales para los dispositivos</translation>
+<translation id="7358359585412734876">Habilitar <ph name="LACROS_NAME" /></translation>
 <translation id="7358744897221281073">Si habilitas la configuración, los usuarios que habilitaron Phone Hub podrán continuar tareas, como ver las páginas web del teléfono, desde el Sistema operativo Chrome.
 
       Si la inhabilitas, los usuarios no podrán usar esta función. Tampoco podrán hacerlo si inhabilitas la política PhoneHubAllowed.
@@ -5337,6 +5374,7 @@
 
       Si inhabilitas la política o no la estableces, los dispositivos inscritos no informarán sobre las estadísticas de almacenamiento.</translation>
 <translation id="8044493735196713914">Modo de notificación de inicio de dispositivo</translation>
+<translation id="80453040817068401">Hacer que el navegador <ph name="LACROS_NAME" /> esté disponible</translation>
 <translation id="8049769137921877885">Esta política controla el envío de los datos sobre la política y su marca de tiempo de recuperación.
 
       Si no estableces la política <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> o la inhabilitas, se ignorará.
@@ -5979,6 +6017,7 @@
 <translation id="8892286064305622118">Espacio libre en disco que se requiere para <ph name="PLUGIN_VM_NAME" /></translation>
 <translation id="8892783613915541293">Retrasos y acciones que se deben tomar cuando el dispositivo esté inactivo y funcionando con CA.</translation>
 <translation id="8897796778265450949">Limita el tiempo durante el cual puede acceder sin conexión un usuario que se autenticó mediante GAIA sin SAML</translation>
+<translation id="889814528399907891">Permitir que los usuarios habiliten <ph name="LACROS_NAME" /> y lo seleccionen como el navegador principal</translation>
 <translation id="8903283771634816230">Si habilitas la política, <ph name="PRODUCT_NAME" /> utilizará la impresora por defecto del SO como el destino predeterminado para la vista previa de impresión.
 
       Si la inhabilitas o no la estableces, <ph name="PRODUCT_NAME" /> utilizará la impresora que se usó por última vez como el destino predeterminado para la vista previa de impresión.</translation>
@@ -6124,6 +6163,7 @@
       Si inhabilitas la política, los dispositivos inscritos no registrarán ni informarán los tiempos de actividad.</translation>
 <translation id="9077227880520270584">Temporizador para el acceso automático de la cuenta local del dispositivo</translation>
 <translation id="9084985621503260744">Especificar si la actividad de video afecta a la administración de energía</translation>
+<translation id="9088191250434406767">Si no estableces la política o la habilitas, los usuarios podrán realizar búsquedas con sus cámaras mediante <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Si la inhabilitas, los usuarios no verán el botón de <ph name="GOOGLE_LENS_PRODUCT_NAME" /> en el cuadro de búsqueda, independientemente de que sea compatible la búsqueda asistida por cámara mediante <ph name="GOOGLE_LENS_PRODUCT_NAME" />.</translation>
 <translation id="9088433379343318874">Habilitar el proveedor de contenido de un usuario supervisado</translation>
 <translation id="9088444059179765143">Configurar el método de detección automática de la zona horaria</translation>
 <translation id="9095999573959728902">Si habilitas esta configuración, los usuarios podrán habilitar Phone Hub, lo que les permitirá interactuar con el teléfono en un dispositivo con el Sistema operativo Chrome.
@@ -6195,6 +6235,12 @@
 
       La sesión del usuario se restablecerá después del reinicio.</translation>
 <translation id="9160028464653564229">No permite que ningún sitio solicite acceso a puertos en serie a través de la API de Serial</translation>
+<translation id="916461878260574432">Especifica si se utilizará la conexión P2P para cargas útiles de actualizaciones del SO.
+      Si estableces la política como verdadera, los dispositivos compartirán e intentarán consumir cargas útiles de actualizaciones en la red LAN, y reducirán de forma potencial la congestión y el uso del ancho de banda de Internet. Si la carga útil de actualizaciones no está disponible en la red LAN, el dispositivo deberá realizar la descarga desde un servidor de actualizaciones.
+      Si estableces la política como falsa, no se utilizará la conexión P2P.
+
+      NOTA: El comportamiento predeterminado de los dispositivos de usuario y empresariales será diferente: en dispositivos administrados, se habilitará la conexión P2P, pero no así en dispositivos no administrados.</translation>
+<translation id="9164656078867027374">Definir los dominios que pueden acceder a <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /></translation>
 <translation id="9167719789236691545">Inhabilitar Drive en la app de Archivos de <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="9187743794267626640">Inhabilitar la activación del almacenamiento externo</translation>
 <translation id="9190456586252617675">Esta política controla el modo de la experiencia de integración del Asistente.
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index d1c5618..f0845e2d 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -441,6 +441,17 @@
       Consulta https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">No permite utilizar el modo sin interfaz gráfica</translation>
 <translation id="1588240398285670601">Configuración del navegador</translation>
+<translation id="1590071725627230651">Este ajuste proporciona varias opciones de disponibilidad del navegador <ph name="LACROS_NAME" />.
+
+      Si a esta política se le asigna el valor <ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" /> o no se le asigna ninguno, el usuario podrá habilitar <ph name="LACROS_NAME" /> y convertirlo en el navegador principal. Se podrá seguir inhabilitando <ph name="LACROS_NAME" /> con la política <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      Si se le asigna el valor <ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />, el usuario no podrá usar <ph name="LACROS_NAME" />. Se ignorará la política <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      Si se le asigna el valor <ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />, se habilitará <ph name="LACROS_NAME" />, pero no será el navegador principal. Se ignorará la política <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      Si se le asigna el valor <ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />, se habilitará <ph name="LACROS_NAME" /> y será el navegador principal. Se ignorará la política <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      En el futuro, se podrá establecer que <ph name="LACROS_NAME" /> sea el único navegador disponible en <ph name="PRODUCT_OS_NAME" /> con el valor <ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" />.</translation>
 <translation id="1599424828227887013">Habilitar el aislamiento de sitios web específicos en dispositivos Android</translation>
 <translation id="159946228300522107">Si se asigna el valor "Verdadero" a esta política, Chrome maximizará la primera ventana que se muestre al ejecutarse por primera vez.
 
@@ -683,6 +694,7 @@
 <translation id="1920772397574801429">Si se define esta política, se especificará el tipo de cuentas proporcionadas por la aplicación de autenticación de Android compatible con la autenticación <ph name="HTTP_NEGOTIATE" /> (como la autenticación Kerberos). Esta información debe estar disponible desde el proveedor de la aplicación de autenticación. Para obtener más información, consulta The Chromium Projects (https://goo.gl/hajyfN).
 
       Si no se define esta política, se desactivará la autenticación <ph name="HTTP_NEGOTIATE" /> en Android.</translation>
+<translation id="1925529914257504750">Actualización automática de conexiones P2P habilitada</translation>
 <translation id="1930127294345368978">Número máximo de hojas que se puede usar en un mismo trabajo de impresión</translation>
 <translation id="193259052151668190">Lista blanca de dispositivos USB que se pueden separar</translation>
 <translation id="1933378685401357864">Imagen de fondo de pantalla</translation>
@@ -769,6 +781,7 @@
           de política consistente. Ejecutar los procesos con diferentes valores de esta política no les afecta
           de forma negativa.
           </translation>
+<translation id="2029985289397958781">Inhabilitar búsqueda asistida mediante cámara de <ph name="GOOGLE_LENS_PRODUCT_NAME" /> para usuarios de empresa</translation>
 <translation id="2030905906517501646">Palabra clave de proveedor de búsquedas predeterminadas</translation>
 <translation id="203096360153626918">Esta política no influye en las aplicaciones para Android. Aunque se le asigne el valor <ph name="FALSE" />, las aplicaciones podrán acceder al modo de pantalla completa.</translation>
 <translation id="2032848225007871645">Esta política controla qué modos de desbloqueo rápido se pueden usar para desbloquear la pantalla de bloqueo.
@@ -958,6 +971,13 @@
       Esta política no debería aplicarse en dispositivos utilizados por el público general.
 
       Si se le asigna el valor "True" o no se le asigna ningún valor, la notificación de advertencia de privacidad en la sesión de invitado administrada e iniciada automáticamente quedará fijada hasta que el usuario la cierre.</translation>
+<translation id="2281878365805647176">Si se define esta política, se activará la función de inicio de sesión restringido de Chrome en <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. Los usuarios no podrán cambiar este ajuste. Los usuarios solo podrán acceder a las herramientas de Google desde cuentas de los dominios especificados. Si quieres dar permiso a cuentas @gmail o @googlemail, añade consumer_accounts a la lista de dominios. Este ajuste impide que los usuarios inicien sesión y añadan una cuenta secundaria en un dispositivo gestionado que requiera autenticación de Google si esa cuenta no pertenece a uno de los dominios explícitamente permitidos.
+
+      Si este ajuste se deja vacío o sin definir, los usuarios podrán acceder a <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> con cualquier cuenta.
+
+      Los usuarios no podrán modificar ni anular este ajuste.
+
+      Nota: Esta política provoca que el encabezado X-GoogApps-Allowed-Domains se añada a todas las solicitudes HTTP y HTTPS en todos los dominios de google.com, como se describe en https://support.google.com/a/answer/1668854.</translation>
 <translation id="2289265947759479962">Esta política determina si se recoge información de versiones, como la versión, la plataforma o la arquitectura del SO, la versión de <ph name="PRODUCT_NAME" /> y el canal de <ph name="PRODUCT_NAME" />.
 
       Si no se establece la política <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> o se inhabilita, esta se ignorará.
@@ -1022,6 +1042,7 @@
 
       Si se le asigna el valor "false" o no se le asigna ningún valor, las teclas del teclado vuelven a producir comandos de teclas multimedia. Cuando se pulsa la tecla de búsqueda, su comportamiento cambia al de teclas de funciones.</translation>
 <translation id="2358176879566587521">Se ha retirado esta política. No es compatible con esta versión de <ph name="PRODUCT_NAME" />. Consulta https://support.google.com/chrome/a/answer/7643500</translation>
+<translation id="2362469626417133796">Periodo de reinicio</translation>
 <translation id="2364639863953745682">Modo de la experiencia de incorporación del Asistente</translation>
 <translation id="2384233438419344179">Si se habilita esta política, los elementos de sitios web que no pertenezcan al dominio que aparece en la barra de direcciones del navegador no podrán establecer cookies. Si se inhabilita esta política, estos elementos podrán establecer cookies y los usuarios no podrán cambiar esta opción.
 
@@ -1096,6 +1117,7 @@
 <translation id="2433516903565257847">Porcentaje de dispositivos que deben actualizarse una vez transcurrido el número de días indicado.</translation>
 <translation id="2435052056904485763">Lista de permitidos de servidores de delegación Kerberos</translation>
 <translation id="2435232509335686514">Política de configuración de la gestión que hace <ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /> de los archivos descargados</translation>
+<translation id="2436302465999055995">Establecer que <ph name="LACROS_NAME" /> sea el único navegador disponible (aún no se ha implementado)</translation>
 <translation id="2448315169529769573">Si se habilita la política, <ph name="PRODUCT_OS_NAME" /> enviará métricas de uso y datos de diagnóstico, como informes sobre fallos, a Google. Si se inhabilita la política, no se enviarán métricas ni datos de diagnóstico.
 
        Si no se establece la política, se desactivarán las métricas y los datos de diagnóstico en los dispositivos no administrados, y se activarán en los dispositivos administrados.</translation>
@@ -1246,6 +1268,7 @@
 
       Si no se establece esta política, se utiliza <ph name="PRINTERS_ALLOW_ALL" />.</translation>
 <translation id="2586117300379904732">Permitir los wake locks para la gestión de energía</translation>
+<translation id="2586231026319371211">Hora interpretada en el formato local de 24 horas de reloj.</translation>
 <translation id="2587719089023392205">Establecer <ph name="PRODUCT_NAME" /> como navegador predeterminado</translation>
 <translation id="2588252329503406673">Si se asigna un valor a esta política, definirá cómo debe comportarse <ph name="PRODUCT_OS_NAME" /> en caso de que no haya actividad de usuario durante un periodo de tiempo específico al mostrarse la pantalla de inicio de sesión. Esta política controla varios ajustes. Para obtener información sobre los intervalos de valores y la semántica de cada ajuste concreto, consulta las políticas correspondientes que controlan la gestión de energía de una sesión.
 
@@ -1263,6 +1286,7 @@
 <translation id="2593762551209145088">Navegación segura nunca está activa.</translation>
 <translation id="26023406105317310">Configurar las cuentas de Kerberos</translation>
 <translation id="2604182581880595781">Configura las políticas relacionadas con el uso compartido de archivos del sistema.</translation>
+<translation id="2608535066974278204">Valor (en minutos) que especifica la duración del periodo de reinicio.</translation>
 <translation id="2615240493030733717">Informar sobre la zona horaria</translation>
 <translation id="2619966380594000538">Si la política se habilita o no se define, se mostrarán advertencias de seguridad cuando se usen instrucciones de línea de comandos potencialmente peligrosas para iniciar Chrome.
 
@@ -1899,6 +1923,7 @@
 <translation id="3415954062311826850">Esta política no se admite en ARC.</translation>
 <translation id="34160070798637152">Controla la configuración de red de todo el dispositivo.</translation>
 <translation id="3417130629744653218">Permite a los sitios web consultar los métodos de pago disponibles.</translation>
+<translation id="3417391585519621050">Habilitar búsqueda asistida mediante cámara de <ph name="GOOGLE_LENS_PRODUCT_NAME" /> para usuarios de empresa</translation>
 <translation id="3417418267404583991">Si esta política no se configura o el valor correspondiente se establece en "true", <ph name="PRODUCT_OS_NAME" /> permitirá iniciar sesión como invitado. Los inicios de sesión como invitado son sesiones de usuario anónimas y no necesitan contraseña.
 
       Si el valor correspondiente a esta política se establece en "false", <ph name="PRODUCT_OS_NAME" /> no permitirá el inicio de sesiones de invitados.</translation>
@@ -2059,7 +2084,7 @@
 
       Si se le asigna el valor true o no se configura, se permitirá crear nuevas cuentas de usuario siempre que <ph name="DEVICE_USER_ALLOWLIST_POLICY_NAME" /> no impida que el usuario inicie sesión.</translation>
 <translation id="3653237928288822292">Icono del proveedor de búsquedas predeterminadas</translation>
-<translation id="3654906736796256792">Permite ejecutar la zona de pruebas de audio</translation>
+<translation id="3654906736796256792">Permite ejecutar el entorno aislado de audio</translation>
 <translation id="3659542706175323490">Si se habilita esta política, el inicio con CA (corriente alterna) siempre estará activado si el dispositivo lo admite. El inicio con CA ofrece la opción de que el sistema se reinicie desde el estado de apagado o hibernación cuando se conecte a una toma de corriente.
 
       Si se inhabilita esta política, el inicio con CA siempre estará desactivado.
@@ -3391,6 +3416,7 @@
       Cuando el valor de esta política se establece en un número distinto de 0, la sesión del usuario que haya iniciado sesión en ese momento en modo de demostración se cerrará automáticamente una vez que haya transcurrido el periodo de inactividad especificado.
 
       El valor de la política se debe especificar en milisegundos.</translation>
+<translation id="55057839818162162">Permitir búsqueda asistida mediante cámara de <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="5508307164752647432">Habilitar la función Kerberos</translation>
 <translation id="5511702823008968136">Habilitar barra de marcadores</translation>
 <translation id="5512418063782665071">URL de la página de inicio</translation>
@@ -3407,6 +3433,7 @@
 <translation id="5526184558582921522">Permitir que se realicen consultas a Quirks Server y que potencialmente se descarguen archivos de configuración de hardware concreto</translation>
 <translation id="5526701598901867718">Todos (no seguro)</translation>
 <translation id="5530347722229944744">Bloquear descargas potencialmente peligrosas</translation>
+<translation id="5535256585099022933">Definir el intervalo de tiempo para el reinicio</translation>
 <translation id="5535973522252703021">Lista de admisión de servidores de delegación Kerberos</translation>
 <translation id="553806128266843748">Un indicador booleano que especifica si las limitaciones de ancho de banda están habilitadas.</translation>
 <translation id="5540885720415375851">Permitir descubrimiento de dispositivos locales</translation>
@@ -3702,6 +3729,7 @@
 <translation id="5890063326284543943">Controlar el uso de la API Serial</translation>
 <translation id="5897913798715600338">Carga la batería usando la tecnología de carga rápida.</translation>
 <translation id="5898486742390981550">Si varios usuarios han iniciado sesión, solo podrá utilizar las aplicaciones para Android el usuario principal.</translation>
+<translation id="5899751601113377553">Evitar que los usuarios utilicen <ph name="LACROS_NAME" /></translation>
 <translation id="5901427587865226597">Solo impresión por las dos caras</translation>
 <translation id="5905473632148429217">Habilita las comprobaciones de OCSP/CRL online</translation>
 <translation id="5907283448020542268">El ajuste <ph name="GLS_ENABLED" /> activa los servicios de ubicación de Google durante la configuración inicial, a menos que se haya asignado el valor <ph name="BLOCK_GEOLOCATION_SETTING" /> a la política <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" />. Si se asigna el valor <ph name="GLS_DISABLED" /> a esta política o no se le asigna ninguno, los servicios de ubicación estarán desactivados durante la configuración.
@@ -3888,6 +3916,13 @@
 
       Si no se asigna ningún valor a la política, los usuarios podrán cambiar al tema que prefieran en su navegador.</translation>
 <translation id="6195802366906945965">Determina si se utilizará el verificador de certificados integrado para verificar los certificados de los servidores</translation>
+<translation id="6198375221792846439">Especifica un periodo objetivo para el final del periodo de notificación de reinicio.
+
+      Los usuarios recibirán una notificación en la que se indica que es necesario reiniciar el navegador o el dispositivo en función de los ajustes de la políticas <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> y <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" />. Si se asigna el valor "Required" a la política <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" />, se forzará el reinicio de los navegadores y los dispositivos cuando termine el periodo de notificación. La política <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> puede utilizarse para retrasar el final del periodo de notificación y hacer que tenga lugar durante un periodo concreto.
+
+      Si no se asigna ningún valor a esta política, el periodo objetivo predeterminado para <ph name="PRODUCT_OS_NAME" /> será de 2:00 a 4:00. El periodo objetivo predeterminado para <ph name="PRODUCT_NAME" /> será todo el día (es decir, nunca se retrasará el final del periodo de notificación).
+
+      Advertencia: Si se establece esta política, es posible que se retrase la aplicación de actualizaciones de software.</translation>
 <translation id="6208896993204286313">Proporcionar información de políticas de <ph name="PRODUCT_NAME" /></translation>
 <translation id="6210259502936598222">Proporcionar información de versiones del SO y de <ph name="PRODUCT_NAME" /></translation>
 <translation id="6212868225782276239">Se muestran todas las impresas excepto las que se incluyen en la lista negra.</translation>
@@ -3913,12 +3948,12 @@
       de informes sobre fallos.</translation>
 <translation id="6244210204546589761">URL que se deben abrir al inicio</translation>
 <translation id="624595269193747921">Especifica si se limitará la búsqueda de la impresora coincidente a un conjunto de impresoras concreto.</translation>
-<translation id="6247316685259031374">Esta política controla la zona de pruebas de audio.
-      Si la política se habilita, el proceso de audio se ejecutará en una zona de pruebas.
-      Si se inhabilita, el proceso de audio se ejecutará fuera de la zona de pruebas, y el módulo WebRTC de procesamiento de audio se ejecutará en el proceso de renderización.
-      Los usuarios quedarán expuestos a riesgos de seguridad relacionados con la ejecución del subsistema de audio fuera de la zona de pruebas.
-      Si no se define esta política, se usará la configuración predeterminada de la zona de pruebas de audio, que puede variar según la plataforma.
-      El objetivo de esta política es ofrecer a las empresas la posibilidad de inhabilitar la zona de pruebas de audio si usan configuraciones de software de seguridad que interfieren con la zona de pruebas.</translation>
+<translation id="6247316685259031374">Esta política controla el entorno aislado de audio.
+      Si la política se habilita, el proceso de audio se ejecutará en un entorno aislado.
+      Si se inhabilita, el proceso de audio se ejecutará fuera del entorno aislado, y el módulo WebRTC de procesamiento de audio se ejecutará en el proceso de renderización.
+      Los usuarios quedarán expuestos a riesgos de seguridad relacionados con la ejecución del subsistema de audio fuera del entorno aislado.
+      Si no se define esta política, se usará la configuración predeterminada del entorno aislado de audio, que puede variar según la plataforma.
+      El objetivo de esta política es ofrecer a las empresas la posibilidad de inhabilitar el entorno aislado de audio si usan configuraciones de software de seguridad que interfieren con el entorno aislado.</translation>
 <translation id="6252773211180267325">No impedir que un usuario ejecute <ph name="BOREALIS_NAME" /></translation>
 <translation id="6261643884958898336">Proporcionar información de identificación de equipos</translation>
 <translation id="6265892395051519509">Permitir el acceso a los sensores en estos sitios web</translation>
@@ -4066,6 +4101,7 @@
 <translation id="6464074037294098618">Habilitar la función Autocompletar para direcciones</translation>
 <translation id="6467613372414922590">Permitir hosts de mensajes nativos en el nivel de usuario (instalados sin permisos de administrador)</translation>
 <translation id="6473623140202114570">Configura la lista de dominios en los que la Navegación segura no activará advertencias.</translation>
+<translation id="647645276885673708">Habilitar <ph name="LACROS_NAME" /> y convertirlo en el navegador principal</translation>
 <translation id="647698599569353771">Permite habilitar Compartir con Nearby.</translation>
 <translation id="6478258366184919502">Orígenes de pantalla de inicio de sesión</translation>
 <translation id="6478261301433199402">Si se asigna un valor a esta política, especificará la imagen de <ph name="PLUGIN_VM_NAME" /> de un usuario. Esta política se debe especificar como una cadena con formato JSON, en la que <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> indicará dónde se debe descargar la imagen y <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> será un hash SHA‑256 que se usará para verificar la integridad de la descarga.</translation>
@@ -4854,6 +4890,7 @@
 <translation id="7340034977315324840">Notificar tiempo de actividad del dispositivo</translation>
 <translation id="7343004974628511824">Realizar comprobaciones de interceptación de DNS</translation>
 <translation id="7343497214039883642">Archivo de configuración de las impresoras de empresa para los dispositivos</translation>
+<translation id="7358359585412734876">Habilitar <ph name="LACROS_NAME" /></translation>
 <translation id="7358744897221281073">Si se habilita esta opción, los usuarios que ya usen la función Mi teléfono podrán continuar tareas (como ver las páginas web de su teléfono) en Chrome OS.
 
       Si se inhabilita esta opción, los usuarios no podrán usar esta función. Si se inhabilita la política PhoneHubAllowed, los usuarios tampoco podrán usar esta función.
@@ -5364,6 +5401,7 @@
 
       Si se inhabilita la política o no se establece, los dispositivos registrados no enviarán estadísticas de almacenamiento.</translation>
 <translation id="8044493735196713914">Notificar modo de inicio de dispositivo</translation>
+<translation id="80453040817068401">Habilitar la disponibilidad del navegador <ph name="LACROS_NAME" /></translation>
 <translation id="8049769137921877885">Esta política determina si se recogen datos de políticas y la hora de su obtención.
 
       Si no se establece la política <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> o se inhabilita, esta se ignorará.
@@ -5988,6 +6026,7 @@
 <translation id="8892286064305622118">Espacio disponible en disco necesario para <ph name="PLUGIN_VM_NAME" /></translation>
 <translation id="8892783613915541293">Retrasos y acciones que se deben llevar a cabo cuando el dispositivo esté inactivo y conectado a la red eléctrica</translation>
 <translation id="8897796778265450949">Limita el tiempo durante el que un usuario autenticado mediante GAIA sin SAML puede iniciar sesión sin conexión</translation>
+<translation id="889814528399907891">Permitir que los usuarios habiliten <ph name="LACROS_NAME" /> y lo conviertan en el navegador principal</translation>
 <translation id="8903283771634816230">Si se habilita la política, <ph name="PRODUCT_NAME" /> utiliza la impresora predeterminada del SO como destino predeterminado de la vista previa de impresión.
 
       Si se inhabilita o no se establece, <ph name="PRODUCT_NAME" /> utiliza la impresora que se usó por última vez como destino predeterminado de la vista previa de impresión.</translation>
@@ -6133,6 +6172,7 @@
       Si se inhabilita la política, dichos dispositivos no registrarán los periodos de actividad ni informarán sobre ellos.</translation>
 <translation id="9077227880520270584">Temporizador de inicio automático de la cuenta local del dispositivo</translation>
 <translation id="9084985621503260744">Especificar si la actividad de vídeo afecta a la administración de energía</translation>
+<translation id="9088191250434406767">Si a esta política se le asigna el valor Enabled o no se le asigna ninguno, los usuarios podrán hacer búsquedas con sus cámaras utilizando <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Si se le asigna el valor Disabled, los usuarios no podrán ver el botón <ph name="GOOGLE_LENS_PRODUCT_NAME" /> en el cuadro de búsqueda cuando se admita el uso de la búsqueda asistida mediante cámara de <ph name="GOOGLE_LENS_PRODUCT_NAME" />.</translation>
 <translation id="9088433379343318874">Habilitar el proveedor de contenido de usuarios supervisados</translation>
 <translation id="9088444059179765143">Configura el método de detección automática de la zona horaria</translation>
 <translation id="9095999573959728902">Si se habilita esta opción, los usuarios podrán usar la función Mi teléfono, que les permite interactuar con su teléfono desde un dispositivo Chrome OS.
@@ -6211,6 +6251,12 @@
 
       La sesión del usuario se restaurará tras el reinicio.</translation>
 <translation id="9160028464653564229">No permitir a ningún sitio web solicitar acceso a puertos serie a través de la API Serial</translation>
+<translation id="916461878260574432">Especifica si se pueden utilizar conexiones P2P para las cargas útiles de las actualizaciones del sistema operativo.
+      Si se le asigna el valor True, los dispositivos compartirán e intentarán consumir cargas útiles de actualizaciones en la red LAN, lo que podría reducir el uso del ancho de banda de Internet y la congestión de la red. Si la carga útil de actualizaciones no está disponible en la red LAN, el dispositivo deberá realizar las descargas desde un servidor de actualizaciones.
+      Si se le asigna el valor False, no se utilizarán conexiones P2P.
+
+      NOTA: El comportamiento predeterminado de los dispositivos de usuarios particulares no es el mismo que el de los dispositivos de empresas. En los dispositivos gestionados, las conexiones P2P estarán habilitadas de forma predeterminada. Sin embargo, en los dispositivos no gestionados, las conexiones P2P estarán inhabilitadas de forma predeterminada.</translation>
+<translation id="9164656078867027374">Definir dominios con permiso para acceder a <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /></translation>
 <translation id="9167719789236691545">Inhabilitar Drive en la aplicación Archivos de <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="9187743794267626640">Inhabilitar la activación del almacenamiento externo</translation>
 <translation id="9190456586252617675">Esta política controla el modo de la experiencia de incorporación del Asistente.
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb
index a13a6463d..03b8fcc 100644
--- a/components/policy/resources/policy_templates_fr.xtb
+++ b/components/policy/resources/policy_templates_fr.xtb
@@ -441,6 +441,17 @@
       Voir https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Ne pas autoriser le mode sans interface graphique</translation>
 <translation id="1588240398285670601">Paramètres du navigateur</translation>
+<translation id="1590071725627230651">Ce paramètre offre plusieurs options liées à la disponibilité du navigateur <ph name="LACROS_NAME" />.
+
+      Si cette règle est définie sur "<ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" />" ou qu'elle n'est pas configurée, l'utilisateur peut activer <ph name="LACROS_NAME" /> et le définir comme navigateur principal. (<ph name="LACROS_NAME" /> peut quand même être désactivé avec la règle "<ph name="LACROS_ALLOWED_POLICY_NAME" />".)
+
+      Si la règle est définie sur "<ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />", l'utilisateur ne peut pas employer <ph name="LACROS_NAME" />. (La règle "<ph name="LACROS_ALLOWED_POLICY_NAME" />" est ignorée.)
+
+      Si la règle est définie sur "<ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />", <ph name="LACROS_NAME" /> est activé sans être le navigateur principal. (La règle "<ph name="LACROS_ALLOWED_POLICY_NAME" />" est ignorée.)
+
+      Si la règle est définie sur "<ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />", <ph name="LACROS_NAME" /> est activé comme navigateur principal. (La règle "<ph name="LACROS_ALLOWED_POLICY_NAME" />" est ignorée.)
+
+      À l'avenir, la valeur "<ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" />" permettra de définir <ph name="LACROS_NAME" /> comme le seul navigateur disponible dans <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="1599424828227887013">Activer l'isolation des sites pour des origines définies sur les appareils Android</translation>
 <translation id="159946228300522107">Si cette règle est définie sur "True", Chrome agrandit la première fenêtre affichée à la première exécution.
 
@@ -685,6 +696,7 @@
 <translation id="1920772397574801429">Permet de spécifier le type des comptes fournis par l'application d'authentification Android qui accepte la méthode d'authentification <ph name="HTTP_NEGOTIATE" /> (l'authentification Kerberos, par exemple). Ces informations doivent être disponibles auprès du fournisseur de l'application en question. Pour en savoir plus, consultez le site https://goo.gl/hajyfN (sur les projets Chromium).
 
       Si cette règle n'est pas configurée, la méthode d'authentification <ph name="HTTP_NEGOTIATE" /> est désactivée sous Android.</translation>
+<translation id="1925529914257504750">Mise à jour automatique avec connexion P2P activée</translation>
 <translation id="1930127294345368978">Nombre maximal de feuilles pouvant être imprimées par tâche d'impression</translation>
 <translation id="193259052151668190">Liste blanche d'appareils USB amovibles</translation>
 <translation id="1933378685401357864">Image de fond d'écran</translation>
@@ -771,6 +783,7 @@
           onglets chargés. L'exécution de processus basés sur des valeurs différentes pour cette règle
           est sans danger.
           </translation>
+<translation id="2029985289397958781">Désactiver la recherche <ph name="GOOGLE_LENS_PRODUCT_NAME" /> assistée par appareil photo pour les utilisateurs de la version Enterprise</translation>
 <translation id="2030905906517501646">Mot clé du moteur de recherche par défaut</translation>
 <translation id="203096360153626918">Cette règle n'a aucun effet sur les applications Android. L'utilisation du mode plein écran est possible même si cette règle est définie sur "<ph name="FALSE" />".</translation>
 <translation id="2032848225007871645">Cette règle permet de contrôler les modes de déverrouillage rapide qu'il est possible d'utiliser pour déverrouiller l'écran de verrouillage.
@@ -960,6 +973,13 @@
       Notez que cette règle ne doit pas être appliquée aux appareils utilisés par le grand public.
 
       Si cette règle est définie sur "True" ou qu'elle n'est pas configurée, les avertissements liés à la confidentialité dans les sessions Invité gérées lancées automatiquement sont épinglés jusqu'à ce que les utilisateurs les ferment.</translation>
+<translation id="2281878365805647176">Cette règle permet d'activer la fonctionnalité de connexion limitée de Chrome <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> sans que les utilisateurs puissent modifier ce paramètre. Les utilisateurs ne peuvent accéder aux outils Google que via des comptes associés aux domaines spécifiés (pour autoriser des comptes Gmail ou Googlemail, ajoutez "consumer_accounts" à la liste des domaines). Ce paramètre empêche les utilisateurs de se connecter et d'ajouter un compte secondaire sur un appareil géré qui exige l'authentification Google, si ce compte n'appartient pas à l'un des domaines explicitement autorisés.
+
+      Si ce paramètre n'est pas configuré, les utilisateurs peuvent accéder à <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> avec n'importe quel compte.
+
+      Sachez également que les utilisateurs ne peuvent pas modifier ni ignorer ce paramètre.
+
+      Remarque : Cette règle entraîne l'ajout de l'en-tête "X-GoogApps-Allowed-Domains" à toutes les requêtes HTTP et HTTPS sur tous les domaines google.com (comme indiqué sur https://support.google.com/a/answer/1668854).</translation>
 <translation id="2289265947759479962">Cette règle détermine si les informations de version doivent être enregistrées. Cela concerne, par exemple, la version, la plate-forme et l'architecture du système d'exploitation, la version de <ph name="PRODUCT_NAME" /> et le canal de <ph name="PRODUCT_NAME" />.
 
       Cette règle est ignorée si la règle <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> n'est pas définie ou si elle est désactivée.
@@ -1024,6 +1044,7 @@
 
       Si cette règle est définie sur "False" ou n'est pas configurée, les touches sont des touches multimédias par défaut. Elles deviennent des touches de fonction lorsque la touche de recherche est maintenue enfoncée.</translation>
 <translation id="2358176879566587521">Cette règle est supprimée. Elle n'est pas compatible avec cette version de <ph name="PRODUCT_NAME" />. Pour en savoir plus, rendez-vous sur https://support.google.com/chrome/a/answer/7643500.</translation>
+<translation id="2362469626417133796">Créneau pour la fin de la période de notification de redémarrage</translation>
 <translation id="2364639863953745682">Mode du processus de prise en main de l'Assistant</translation>
 <translation id="2384233438419344179">Si cette règle est activée, les éléments de page Web qui ne font pas partie du domaine indiqué dans la barre d'adresse du navigateur ne peuvent pas placer de cookies. Si cette règle est désactivée, ces éléments sont autorisés à placer des cookies, et les utilisateurs ne peuvent pas modifier ce paramètre.
 
@@ -1098,6 +1119,7 @@
 <translation id="2433516903565257847">Pourcentage du parc à mettre à jour au terme du nombre de jours indiqué.</translation>
 <translation id="2435052056904485763">Liste d'autorisation des serveurs de délégation Kerberos</translation>
 <translation id="2435232509335686514">Règle de configuration de <ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /> pour la gestion des fichiers téléchargés</translation>
+<translation id="2436302465999055995">Définir <ph name="LACROS_NAME" /> comme le seul navigateur disponible (pas encore implémenté)</translation>
 <translation id="2448315169529769573">Si cette règle est activée, <ph name="PRODUCT_OS_NAME" /> envoie à Google les statistiques d'utilisation et les données de diagnostic, y compris les rapports d'erreur. Si cette règle est désactivée, ces statistiques et ces données ne sont pas envoyées.
 
        Si cette règle n'est pas configurée, les statistiques et les données de diagnostic ne sont pas envoyées concernant les appareils non gérés, mais le sont pour les appareils gérés.</translation>
@@ -1243,6 +1265,7 @@
 
       Si cette règle n'est pas définie, <ph name="PRINTERS_ALLOW_ALL" /> est appliqué.</translation>
 <translation id="2586117300379904732">Autoriser les wakelocks pour la gestion de l'alimentation</translation>
+<translation id="2586231026319371211">Heure au format 24h local.</translation>
 <translation id="2587719089023392205">Définir <ph name="PRODUCT_NAME" /> comme navigateur par défaut</translation>
 <translation id="2588252329503406673">Cette règle vous permet de configurer le comportement de <ph name="PRODUCT_OS_NAME" /> lorsque l'utilisateur reste inactif pendant un certain temps quand l'écran de connexion est affiché. Elle contrôle de nombreux paramètres. Pour connaître la signification et les plages de valeurs de ces paramètres, consultez les règles correspondantes qui contrôlent la gestion de l'alimentation au cours d'une session.
 
@@ -1260,6 +1283,7 @@
 <translation id="2593762551209145088">La navigation sécurisée n'est jamais active.</translation>
 <translation id="26023406105317310">Configurer les comptes Kerberos</translation>
 <translation id="2604182581880595781">Configurer les règles associées à la fonctionnalité Partages de fichiers en réseau.</translation>
+<translation id="2608535066974278204">Durée du créneau (en minutes) pour la fin de la période de notification de redémarrage.</translation>
 <translation id="2615240493030733717">Transmettre le fuseau horaire</translation>
 <translation id="2619966380594000538">Si cette règle est activée ou qu'elle n'est pas configurée, des avertissements de sécurité s'affichent lorsque des options de ligne de commande potentiellement dangereuses sont utilisées pour lancer Chrome.
 
@@ -1876,6 +1900,7 @@
 <translation id="3415954062311826850">Cette règle n'est pas disponible dans ARC.</translation>
 <translation id="34160070798637152">Contrôle la configuration réseau au niveau de l'appareil.</translation>
 <translation id="3417130629744653218">Autoriser les sites Web à vérifier si des modes de paiement sont disponibles.</translation>
+<translation id="3417391585519621050">Activer la recherche <ph name="GOOGLE_LENS_PRODUCT_NAME" /> assistée par appareil photo pour les utilisateurs de la version Enterprise</translation>
 <translation id="3417418267404583991">Si cette règle est définie sur "true" ou si elle n'est pas configurée, <ph name="PRODUCT_OS_NAME" /> autorise les connexions en mode invité. Les connexions en mode invité correspondent à des sessions utilisateur anonymes et ne nécessitent pas de mot de passe.
 
        Si cette règle est définie sur "false", <ph name="PRODUCT_OS_NAME" /> n'autorise pas les sessions en mode invité.</translation>
@@ -3364,6 +3389,7 @@
       Lorsque sa valeur est configurée, et si elle ne correspond pas à 0, l'utilisateur connecté en mode démonstration est déconnecté automatiquement après la durée d'inactivité définie.
 
       Notez que la valeur de cette règle se mesure en millisecondes.</translation>
+<translation id="55057839818162162">Autoriser la recherche <ph name="GOOGLE_LENS_PRODUCT_NAME" /> assistée par appareil photo</translation>
 <translation id="5508307164752647432">Activer la fonctionnalité Kerberos</translation>
 <translation id="5511702823008968136">Activer le barre de favoris</translation>
 <translation id="5512418063782665071">URL de la page d'accueil</translation>
@@ -3380,6 +3406,7 @@
 <translation id="5526184558582921522">Autoriser les requêtes au serveur Quirks et le téléchargement potentiel de fichiers de configuration spécifiques au matériel</translation>
 <translation id="5526701598901867718">Tous les types de chiffrement (option non sécurisée)</translation>
 <translation id="5530347722229944744">Bloquer les téléchargements potentiellement dangereux</translation>
+<translation id="5535256585099022933">Définir le créneau pour la fin de la période de notification de redémarrage</translation>
 <translation id="5535973522252703021">Liste blanche des serveurs de délégation Kerberos</translation>
 <translation id="553806128266843748">Indicateur booléen spécifiant si la limitation est activée.</translation>
 <translation id="5540885720415375851">Autoriser la détection des appareils en local</translation>
@@ -3675,6 +3702,7 @@
 <translation id="5890063326284543943">Contrôler l'utilisation de l'API Serial</translation>
 <translation id="5897913798715600338">Recharge de la batterie à l'aide d'une technologie de recharge rapide.</translation>
 <translation id="5898486742390981550">Lorsque plusieurs personnes sont connectées, l'utilisateur principal est le seul à pouvoir se servir des applications Android.</translation>
+<translation id="5899751601113377553">Empêcher les utilisateurs d'employer <ph name="LACROS_NAME" /></translation>
 <translation id="5901427587865226597">Impression recto verso seulement</translation>
 <translation id="5905473632148429217">Activer les contrôles OCSP/CRL en ligne</translation>
 <translation id="5907283448020542268">Configurer <ph name="GLS_ENABLED" /> active les services de localisation Google lors de la configuration initiale, sauf si la règle <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> est définie sur <ph name="BLOCK_GEOLOCATION_SETTING" />. Si la règle est définie sur <ph name="GLS_DISABLED" /> ou n'est pas configurée, les services de localisation restent désactivés pendant la configuration.
@@ -3862,6 +3890,13 @@
 
       En revanche, ils peuvent appliquer le thème de leur choix au navigateur si la règle n'est pas configurée.</translation>
 <translation id="6195802366906945965">Déterminer si l'outil de vérification des certificats intégré sera utilisé pour vérifier les certificats des serveurs</translation>
+<translation id="6198375221792846439">Cette règle permet de définir un créneau cible pour la fin de la période de notification de redémarrage.
+
+      En fonction des paramètres des règles "<ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" />" et "<ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" />", les utilisateurs reçoivent une notification les invitant à redémarrer leur navigateur ou appareil. Si la règle "<ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" />" est définie sur "Obligatoire", le navigateur ou l'appareil concernés sont redémarrés de manière forcée une fois la période de notification écoulée. La règle "<ph name="RELAUNCH_WINDOW_POLICY_NAME" />" peut servir à différer la fin de la période de notification afin qu'elle tombe dans un créneau spécifique.
+
+      Si cette règle n'est pas configurée, le créneau cible par défaut est compris entre 2h et 4h du matin pour <ph name="PRODUCT_OS_NAME" /> ou étendu à toute la journée pour <ph name="PRODUCT_NAME" /> (la fin de la période de notification n'est alors jamais différée).
+
+      Avertissement : La configuration de cette règle peut retarder l'application des mises à jour logicielles.</translation>
 <translation id="6208896993204286313">Enregistrer les informations sur les règles concernant <ph name="PRODUCT_NAME" /></translation>
 <translation id="6210259502936598222">Enregistrer les informations sur la version de <ph name="PRODUCT_NAME" /> et l'OS</translation>
 <translation id="6212868225782276239">Toutes les imprimantes sont affichées à l'exception de celles qui sont répertoriées dans la liste noire.</translation>
@@ -4037,6 +4072,7 @@
 <translation id="6464074037294098618">Activer la saisie automatique pour les adresses</translation>
 <translation id="6467613372414922590">Autoriser les hôtes de messagerie natifs au niveau de l'utilisateur (installés sans l'autorisation d'un administrateur)</translation>
 <translation id="6473623140202114570">Configurez la liste des domaines sur lesquels la navigation sécurisée ne déclenchera aucun avertissement.</translation>
+<translation id="647645276885673708">Activer <ph name="LACROS_NAME" /> et le définir comme navigateur principal</translation>
 <translation id="647698599569353771">Autorisez l'activation du Partage à proximité.</translation>
 <translation id="6478258366184919502">Origines de l'écran de connexion</translation>
 <translation id="6478261301433199402">Cette règle permet de définir l'image de <ph name="PLUGIN_VM_NAME" /> pour un utilisateur. Spécifiez cette règle sous la forme d'une chaîne au format JSON. Dans le champ "<ph name="URL_PLUGIN_VM_IMAGE_FIELD" />", indiquez l'URL où télécharger l'image, et dans le champ "<ph name="HASH_PLUGIN_VM_IMAGE_FIELD" />", le hachage SHA-256 utilisé pour vérifier l'intégrité du téléchargement.</translation>
@@ -4824,6 +4860,7 @@
 <translation id="7340034977315324840">Indiquer les périodes d'activité de l'appareil</translation>
 <translation id="7343004974628511824">Procéder aux contrôles d'interception DNS</translation>
 <translation id="7343497214039883642">Fichier de configuration des imprimantes d'entreprise pour des appareils</translation>
+<translation id="7358359585412734876">Activer <ph name="LACROS_NAME" /></translation>
 <translation id="7358744897221281073">Si ce paramètre est activé, les utilisateurs qui ont déjà activé Phone Hub pourront continuer sur Chrome OS ce qu'ils étaient en train de faire sur leur téléphone, par exemple consulter des pages Web.
 
       S'il est désactivé, les utilisateurs ne seront pas autorisés à se servir de cette fonctionnalité. Si la règle PhoneHubAllowed est désactivée, ils ne seront pas non plus autorisés à utiliser cette fonctionnalité.
@@ -5335,6 +5372,7 @@
 
       Si cette règle est désactivée ou qu'elle n'est pas configurée, les appareils enregistrés ne fournissent pas ces statistiques.</translation>
 <translation id="8044493735196713914">Indiquer le mode de démarrage de l'appareil</translation>
+<translation id="80453040817068401">Rendre le navigateur <ph name="LACROS_NAME" /> disponible</translation>
 <translation id="8049769137921877885">Cette règle détermine si les données de la règle et l'heure de récupération de la règle doivent être enregistrées.
 
       Cette règle est ignorée si la règle <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> n'est pas définie ou si elle est désactivée.
@@ -5956,6 +5994,7 @@
 <translation id="8892286064305622118">Espace disque libre requis pour <ph name="PLUGIN_VM_NAME" /></translation>
 <translation id="8892783613915541293">Délais et actions à effectuer en cas d'inactivité de l'utilisateur quand l'appareil fonctionne sur secteur.</translation>
 <translation id="8897796778265450949">Limiter la durée pendant laquelle un utilisateur authentifié via GAIA sans SAML peut se connecter hors connexion</translation>
+<translation id="889814528399907891">Autoriser les utilisateurs à activer <ph name="LACROS_NAME" /> et à le définir comme navigateur principal</translation>
 <translation id="8903283771634816230">Si vous activez cette règle, cela signifie que <ph name="PRODUCT_NAME" /> utilise l'imprimante par défaut du système d'exploitation en tant que destination par défaut pour l'aperçu avant impression.
 
       Si vous la désactivez, ou si vous ne la configurez pas, <ph name="PRODUCT_NAME" /> définira la dernière imprimante utilisée en tant que destination par défaut pour l'aperçu avant impression.</translation>
@@ -6098,6 +6137,7 @@
       Si cette règle est désactivée, les appareils enregistrés n'enregistrent et ne communiquent pas ces périodes.</translation>
 <translation id="9077227880520270584">Minuteur de connexion automatique au compte local de l'appareil</translation>
 <translation id="9084985621503260744">Indiquer si l'activité vidéo a une incidence sur la gestion de l'alimentation</translation>
+<translation id="9088191250434406767">Si cette règle est activée ou qu'elle n'est pas configurée, les utilisateurs peuvent faire une recherche avec leur appareil photo à l'aide de <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Si cette règle est désactivée, les utilisateurs ne peuvent pas voir le bouton <ph name="GOOGLE_LENS_PRODUCT_NAME" /> dans le champ de recherche lorsque la recherche <ph name="GOOGLE_LENS_PRODUCT_NAME" /> assistée par appareil photo est compatible.</translation>
 <translation id="9088433379343318874">Activer le fournisseur de contenu de l'utilisateur supervisé</translation>
 <translation id="9088444059179765143">Configurer la méthode de détection automatique du fuseau horaire</translation>
 <translation id="9095999573959728902">Si ce paramètre est activé, les utilisateurs seront autorisés à activer Phone Hub, qui leur permet d'interagir avec leur téléphone sur un appareil Chrome OS.
@@ -6176,6 +6216,12 @@
 
       La session de l'utilisateur est restaurée après le redémarrage.</translation>
 <translation id="9160028464653564229">Interdire à tous les sites de demander l'accès aux ports série via l'API Serial</translation>
+<translation id="916461878260574432">Cette règle permet de spécifier si une connexion P2P doit être utilisée pour les charges utiles de mise à jour de l'OS.
+      Si cette règle est définie sur "True", les charges utiles de mise à jour sur le réseau local sont partagées et utilisées par les appareils, ce qui peut avoir pour effet de réduire la quantité de bande passante utilisée et l'encombrement sur Internet. Si la charge utile de mise à jour n'est pas disponible sur le réseau local, le téléchargement est effectué sur l'appareil à partir d'un serveur de mise à jour.
+      Si cette règle est définie sur "False" ou qu'elle n'est pas configurée, la connexion P2P n'est pas utilisée.
+
+      REMARQUE : Le comportement par défaut des appareils grand public et professionnels diffère. Sur les appareils gérés, la connexion P2P sera activée, tandis que sur les appareils non gérés, elle ne le sera pas.</translation>
+<translation id="9164656078867027374">Définir les domaines autorisés à accéder à <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /></translation>
 <translation id="9167719789236691545">Désactiver Drive dans l'application "Fichiers" de <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="9187743794267626640">Désactiver le montage de périphériques de stockage externe</translation>
 <translation id="9190456586252617675">Cette règle permet de gérer le mode du processus de prise en main de l'Assistant.
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index 6eceed5..2cc19dc9 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -440,6 +440,17 @@
       Buka https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Jangan izinkan penggunaan Mode Headless</translation>
 <translation id="1588240398285670601">Setelan Browser</translation>
+<translation id="1590071725627230651">Setelan ini memberikan beberapa opsi ketersediaan untuk browser <ph name="LACROS_NAME" />.
+
+      Jika kebijakan disetel ke <ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" /> atau tidak disetel, pengguna dapat mengaktifkan <ph name="LACROS_NAME" /> dan menjadikannya sebagai browser utama. <ph name="LACROS_NAME" /> bisa tetap tidak diizinkan dengan kebijakan <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      Jika kebijakan disetel ke <ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />, pengguna tidak dapat menggunakan <ph name="LACROS_NAME" />. Kebijakan <ph name="LACROS_ALLOWED_POLICY_NAME" /> akan diabaikan.
+
+      Jika kebijakan disetel ke <ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />, <ph name="LACROS_NAME" /> akan diaktifkan tetapi bukan sebagai browser utama. Kebijakan <ph name="LACROS_ALLOWED_POLICY_NAME" /> akan diabaikan.
+
+      Jika kebijakan disetel ke <ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />, <ph name="LACROS_NAME" /> akan diaktifkan dan menjadi browser utama. Kebijakan <ph name="LACROS_ALLOWED_POLICY_NAME" /> akan diabaikan.
+
+      Di masa mendatang, <ph name="LACROS_NAME" /> mungkin bisa menjadi satu-satunya browser yang tersedia di <ph name="PRODUCT_OS_NAME" /> dengan nilai <ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" />.</translation>
 <translation id="1599424828227887013">Mengaktifkan Isolasi Situs untuk asal yang ditentukan di perangkat Android</translation>
 <translation id="159946228300522107">Jika kebijakan ditetapkan ke Benar (True), Chrome akan memaksimalkan jendela pertama yang ditampilkan saat pertama kali dijalankan.
 
@@ -683,6 +694,7 @@
 <translation id="1920772397574801429">Menyetel kebijakan akan menentukan jenis akun yang disediakan oleh aplikasi autentikasi Android yang mendukung autentikasi <ph name="HTTP_NEGOTIATE" /> (seperti autentikasi Kerberos). Informasi ini seharusnya tersedia dari penyedia aplikasi autentikasi. Untuk detailnya, lihat Project Chromium (https://goo.gl/hajyfN)
 
       Jika kebijakan tidak disetel, autentikasi <ph name="HTTP_NEGOTIATE" /> akan dinonaktifkan di Android.</translation>
+<translation id="1925529914257504750">Update P2P otomatis telah diaktifkan</translation>
 <translation id="1930127294345368978">Jumlah sheet maksimal yang boleh digunakan untuk satu pekerjaan cetak</translation>
 <translation id="193259052151668190">Daftar putih perangkat USB yang dapat dilepas</translation>
 <translation id="1933378685401357864">Gambar wallpaper</translation>
@@ -769,6 +781,7 @@
           yang konsisten. Proses yang berjalan dengan nilai kebijakan yang berbeda
           tidak berbahaya.
           </translation>
+<translation id="2029985289397958781">Nonaktifkan penelusuran yang dibantu kamera <ph name="GOOGLE_LENS_PRODUCT_NAME" /> untuk pengguna versi Bisnis</translation>
 <translation id="2030905906517501646">Kata kunci penyedia penelusuran default</translation>
 <translation id="203096360153626918">Kebijakan ini tidak memengaruhi aplikasi Android. Aplikasi akan dapat memasuki mode layar penuh meski kebijakan ini disetel ke <ph name="FALSE" />.</translation>
 <translation id="2032848225007871645">Menyetel kebijakan akan mengontrol mode buka kunci cepat mana yang dapat membuka layar kunci.
@@ -958,6 +971,13 @@
       Kebijakan ini tidak boleh digunakan untuk perangkat yang digunakan secara umum.
 
       Jika kebijakan disetel ke Benar (True) atau tidak disetel, notifikasi peringatan privasi di sesi tamu terkelola yang diluncurkan otomatis akan terus ditampilkan hingga pengguna menutupnya.</translation>
+<translation id="2281878365805647176">Jika kebijakan disetel, fitur login terbatas Chrome di <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> akan diaktifkan dan pengguna tidak dapat mengubah setelan ini. Pengguna hanya dapat mengakses alat Google menggunakan akun dari domain yang telah ditentukan (untuk mengizinkan akun gmail atau googlemail, tambahkan consumer_accounts ke daftar domain). Setelan ini mencegah pengguna untuk login dan menambahkan Akun Sekunder di perangkat terkelola yang memerlukan autentikasi Google, jika akun tersebut bukan milik salah satu domain yang diizinkan secara eksplisit.
+
+      Jika setelan ini dibiarkan kosong atau tidak disetel, pengguna dapat mengakses <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> dengan akun apa pun.
+
+      Pengguna tidak dapat mengubah atau mengganti setelan ini.
+
+      Catatan: Kebijakan ini menyebabkan header X-GoogApps-Allowed-Domains ditambahkan ke semua permintaan HTTP dan HTTPS di semua domain google.com, seperti yang dijelaskan di https://support.google.com/a/answer/1668854.</translation>
 <translation id="2289265947759479962">Kebijakan ini mengontrol apakah informasi versi akan dilaporkan atau tidak, misalnya versi OS, platform OS, arsitektur OS, versi <ph name="PRODUCT_NAME" />, dan saluran <ph name="PRODUCT_NAME" />.
 
       Jika kebijakan <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> tidak disetel atau disetel ke nonaktif, kebijakan ini akan diabaikan.
@@ -1022,6 +1042,7 @@
 
       Jika ditetapkan ke Salah (False) atau tidak ditetapkan, default keyboard adalah membuat perintah tombol media. Jika menekan tombol Penelusuran, tombol tersebut akan berubah menjadi tombol fungsi.</translation>
 <translation id="2358176879566587521">Kebijakan ini dihapus. Kebijakan ini tidak kompatibel dengan versi <ph name="PRODUCT_NAME" /> ini. Baca selengkapnya di https://support.google.com/chrome/a/answer/7643500</translation>
+<translation id="2362469626417133796">Interval waktu peluncuran kembali</translation>
 <translation id="2364639863953745682">Mode pengalaman aktivasi Asisten</translation>
 <translation id="2384233438419344179">Jika kebijakan disetel ke Aktif, elemen halaman web yang tidak berasal dari domain di kolom URL browser tidak dapat menyetel cookie. Jika kebijakan disetel ke Nonaktif, elemen tersebut akan dapat menyetel cookie dan pengguna tidak dapat mengubah setelan ini.
 
@@ -1096,6 +1117,7 @@
 <translation id="2433516903565257847">Persentase fleet perangkat yang harus diperbarui setelah sejumlah hari tertentu.</translation>
 <translation id="2435052056904485763">Daftar server delegasi Kerberos yang diizinkan</translation>
 <translation id="2435232509335686514">Kebijakan konfigurasi untuk <ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /> yang menangani file yang didownload</translation>
+<translation id="2436302465999055995">Jadikan <ph name="LACROS_NAME" /> sebagai satu-satunya browser yang tersedia (belum diimplementasikan)</translation>
 <translation id="2448315169529769573">Jika kebijakan disetel ke Aktif, <ph name="PRODUCT_OS_NAME" /> akan melaporkan kembali metrik penggunaan dan data diagnostik, termasuk laporan kerusakan, ke Google. Jika kebijakan disetel ke Nonaktif, pelaporan metrik dan data diagnostik akan dinonaktifkan.
 
        Jika kebijakan tidak disetel, pelaporan metrik dan data diagnostik akan dinonaktifkan di perangkat yang tidak terkelola dan akan diaktifkan di perangkat terkelola.</translation>
@@ -1246,6 +1268,7 @@
 
       Jika kebijakan tidak disetel, <ph name="PRINTERS_ALLOW_ALL" /> akan diberlakukan.</translation>
 <translation id="2586117300379904732">Izinkan penguncian layar saat aktif untuk pengelolaan daya</translation>
+<translation id="2586231026319371211">Waktu disesuaikan dengan format jam lokal 24 jam.</translation>
 <translation id="2587719089023392205">Setel <ph name="PRODUCT_NAME" /> sebagai Browser Default</translation>
 <translation id="2588252329503406673">Menyetel kebijakan akan memungkinkan Anda menyetel perilaku <ph name="PRODUCT_OS_NAME" /> saat tidak ada aktivitas pengguna untuk jangka waktu tertentu ketika layar login muncul. Kebijakan ini mengontrol beberapa setelan. Untuk semantik dan rentang nilai masing-masing, lihat kebijakan terkait yang mengontrol pengelolaan daya dalam suatu sesi.
 
@@ -1263,6 +1286,7 @@
 <translation id="2593762551209145088">Safe Browsing selalu tidak aktif.</translation>
 <translation id="26023406105317310">Konfigurasikan akun Kerberos</translation>
 <translation id="2604182581880595781">Mengonfigurasi kebijakan terkait fitur Berbagi File Jaringan.</translation>
+<translation id="2608535066974278204">Jangka waktu (menit) yang menentukan lamanya interval peluncuran kembali.</translation>
 <translation id="2615240493030733717">Melaporkan Info Zona waktu</translation>
 <translation id="2619966380594000538">Jika kebijakan disetel ke Aktif atau tidak disetel, peringatan keamanan akan muncul saat tanda command line yang berpotensi bahaya digunakan untuk meluncurkan Chrome.
 
@@ -1899,6 +1923,7 @@
 <translation id="3415954062311826850">Kebijakan ini tidak didukung dalam ARC.</translation>
 <translation id="34160070798637152">Mengontrol konfigurasi jaringan tingkat perangkat.</translation>
 <translation id="3417130629744653218">Izinkan situs membuat kueri untuk metode pembayaran yang tersedia.</translation>
+<translation id="3417391585519621050">Aktifkan penelusuran yang dibantu kamera <ph name="GOOGLE_LENS_PRODUCT_NAME" /> untuk pengguna versi Bisnis</translation>
 <translation id="3417418267404583991">Jika kebijakan ini disetel ke true atau tidak dikonfigurasi, <ph name="PRODUCT_OS_NAME" /> akan mengaktifkan login sebagai tamu. Login sebagai tamu adalah sesi pengguna anonim dan tidak memerlukan sandi.
 
       Jika kebijakan ini disetel ke false, <ph name="PRODUCT_OS_NAME" /> tidak akan mengizinkan dimulainya sesi tamu.</translation>
@@ -3389,6 +3414,7 @@
       Saat nilai kebijakan ini disetel dan tidak 0, maka pengguna demo yang saat ini telah masuk akan dikeluarkan secara otomatis setelah waktu tidak aktif selama durasi yang ditentukan telah habis.
 
       Nilai kebijakan sebaiknya ditentukan dalam milidetik.</translation>
+<translation id="55057839818162162">Mengizinkan penelusuran yang dibantu kamera <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="5508307164752647432">Aktifkan fungsi Kerberos</translation>
 <translation id="5511702823008968136">Aktifkan Bilah Bookmark</translation>
 <translation id="5512418063782665071">URL beranda</translation>
@@ -3405,6 +3431,7 @@
 <translation id="5526184558582921522">Izinkan kueri ke Server Quirk dan file konfigurasi khusus hardware yang mungkin didownload</translation>
 <translation id="5526701598901867718">Semua (tidak aman)</translation>
 <translation id="5530347722229944744">Blokir download yang berpotensi berbahaya</translation>
+<translation id="5535256585099022933">Menyetel interval waktu untuk peluncuran kembali</translation>
 <translation id="5535973522252703021">Daftar putih server delegasi Kerberos</translation>
 <translation id="553806128266843748">Tanda boolean menunjukkan jika throttling diaktifkan.</translation>
 <translation id="5540885720415375851">Izinkan penemuan perangkat lokal</translation>
@@ -3702,6 +3729,7 @@
 <translation id="5890063326284543943">Mengontrol penggunaan Serial API</translation>
 <translation id="5897913798715600338">Mengisi daya baterai menggunakan teknologi pengisian daya cepat.</translation>
 <translation id="5898486742390981550">Ketika beberapa pengguna masuk, hanya pengguna utama yang dapat menggunakan aplikasi Android.</translation>
+<translation id="5899751601113377553">Cegah pengguna menggunakan <ph name="LACROS_NAME" /></translation>
 <translation id="5901427587865226597">Khusus pencetakan dupleks</translation>
 <translation id="5905473632148429217">Mengaktifkan pemeriksaan OCSP/CRL online</translation>
 <translation id="5907283448020542268">Menetapkan ke <ph name="GLS_ENABLED" /> akan mengaktifkan layanan lokasi Google saat penyiapan awal, kecuali kebijakan <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> ditetapkan ke <ph name="BLOCK_GEOLOCATION_SETTING" />. Jika kebijakan ditetapkan ke <ph name="GLS_DISABLED" /> atau tidak ditetapkan, layanan lokasi akan tetap dinonaktifkan selama penyiapan.
@@ -3889,6 +3917,13 @@
 
       Jika kebijakan tidak disetel, pengguna akan dapat mengubah tema browser sesuai keinginan.</translation>
 <translation id="6195802366906945965">Menentukan apakah pemverifikasi sertifikat bawaan akan digunakan untuk memverifikasi sertifikat server</translation>
+<translation id="6198375221792846439">Menentukan interval waktu target untuk batas akhir periode notifikasi peluncuran kembali.
+
+      Pengguna akan diberi tahu saat browser perlu diluncurkan kembali atau perangkat perlu dimulai ulang berdasarkan setelan kebijakan <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> dan <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" />. Browser dan perangkat dimulai ulang dengan paksa pada batas akhir periode notifikasi jika kebijakan <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> disetel ke 'Required'. Kebijakan <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> ini dapat digunakan untuk menunda batas akhir periode notifikasi agar batas akhir berada pada interval waktu tertentu.
+
+      Jika kebijakan ini tidak disetel, interval waktu target default untuk <ph name="PRODUCT_OS_NAME" /> adalah antara pukul 2 AM dan 4 AM. Interval waktu target default untuk <ph name="PRODUCT_NAME" /> adalah sepanjang hari (yang berarti batas akhir periode notifikasi tidak pernah ditunda).
+
+      Peringatan: Jika kebijakan ini disetel, penerapan update software mungkin tertunda.</translation>
 <translation id="6208896993204286313">Melaporkan Informasi Kebijakan <ph name="PRODUCT_NAME" /></translation>
 <translation id="6210259502936598222">Laporkan OS dan Informasi Versi <ph name="PRODUCT_NAME" /></translation>
 <translation id="6212868225782276239">Semua printer ditampilkan, kecuali printer yang tidak diizinkan.</translation>
@@ -4067,6 +4102,7 @@
 <translation id="6464074037294098618">Mengaktifkan IsiOtomatis untuk alamat</translation>
 <translation id="6467613372414922590">Mengizinkan host Native Messaging level pengguna (diinstal tanpa izin admin)</translation>
 <translation id="6473623140202114570">Mengonfigurasi daftar domain tempat Safe Browsing tidak akan memicu peringatan.</translation>
+<translation id="647645276885673708">Aktifkan <ph name="LACROS_NAME" /> dan jadikan sebagai browser utama</translation>
 <translation id="647698599569353771">Mengizinkan pengaktifan Berbagi Langsung.</translation>
 <translation id="6478258366184919502">Asal layar login</translation>
 <translation id="6478261301433199402">Menyetel kebijakan akan menentukan image <ph name="PLUGIN_VM_NAME" /> bagi pengguna. Tentukan kebijakan ini sebagai string berformat JSON, dengan <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> yang menyatakan tempat mendownload image dan <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> sebagai hash SHA-256 yang digunakan untuk memverifikasi integritas download.</translation>
@@ -4852,6 +4888,7 @@
 <translation id="7340034977315324840">Laporkan waktu aktivitas perangkat</translation>
 <translation id="7343004974628511824">Lakukan pemeriksaan intersepsi DNS</translation>
 <translation id="7343497214039883642">File konfigurasi printer perusahaan untuk perangkat</translation>
+<translation id="7358359585412734876">Aktifkan <ph name="LACROS_NAME" /></translation>
 <translation id="7358744897221281073">Jika setelan ini diaktifkan, pengguna yang telah memilih untuk menggunakan Phone Hub akan dapat melanjutkan tugas seperti melihat halaman web ponsel di Chrome OS.
 
       Jika setelan ini dinonaktifkan, pengguna tidak akan diizinkan menggunakan fitur ini. Jika kebijakan PhoneHubAllowed dinonaktifkan, pengguna juga tidak akan diizinkan menggunakan fitur ini.
@@ -5356,6 +5393,7 @@
 
       Jika kebijakan disetel ke Nonaktif atau tidak disetel, perangkat yang terdaftar tidak akan melaporkan statistik penyimpanan.</translation>
 <translation id="8044493735196713914">Laporkan mode boot perangkat</translation>
+<translation id="80453040817068401">Menjadikan browser <ph name="LACROS_NAME" /> tersedia</translation>
 <translation id="8049769137921877885">Kebijakan ini mengontrol apakah data kebijakan dan waktu pengambilan kebijakan akan dilaporkan atau tidak.
 
       Jika kebijakan <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> tidak disetel atau disetel ke nonaktif, kebijakan ini akan diabaikan.
@@ -5976,6 +6014,7 @@
 <translation id="8892286064305622118">Perlu ruang disk kosong untuk <ph name="PLUGIN_VM_NAME" /></translation>
 <translation id="8892783613915541293">Penundaan dan tindakan yang harus diambil saat perangkat tidak beraktivitas dan menggunakan daya AC.</translation>
 <translation id="8897796778265450949">Membatasi waktu bagi pengguna yang diautentikasi melalui GAIA tanpa SAML untuk dapat login secara offline</translation>
+<translation id="889814528399907891">Izinkan pengguna mengaktifkan <ph name="LACROS_NAME" /> dan menjadikannya sebagai browser utama</translation>
 <translation id="8903283771634816230">Jika kebijakan disetel ke Aktif, <ph name="PRODUCT_NAME" /> akan menggunakan printer default OS sebagai tujuan default untuk pratinjau cetak.
 
       Jika kebijakan disetel ke Nonaktif atau tidak disetel, <ph name="PRODUCT_NAME" /> akan menggunakan printer yang terakhir digunakan sebagai tujuan default untuk pratinjau cetak.</translation>
@@ -6121,6 +6160,7 @@
       Jika kebijakan disetel ke Nonaktif, perangkat yang terdaftar tidak akan merekam atau melaporkan waktu aktivitas.</translation>
 <translation id="9077227880520270584">Timer login otomatis akun lokal perangkat</translation>
 <translation id="9084985621503260744">Tentukan apakah aktivitas video memengaruhi pengelolaan daya</translation>
+<translation id="9088191250434406767">Jika kebijakan tidak disetel atau disetel ke Aktif, pengguna akan diizinkan menelusuri dengan kameranya menggunakan <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Jika kebijakan disetel ke Nonaktif, pengguna tidak dapat melihat tombol <ph name="GOOGLE_LENS_PRODUCT_NAME" /> di kotak penelusuran saat penelusuran yang dibantu kamera <ph name="GOOGLE_LENS_PRODUCT_NAME" /> didukung.</translation>
 <translation id="9088433379343318874">Izinkan penyedia konten pengguna yang dilindungi</translation>
 <translation id="9088444059179765143">Mengonfigurasi metode deteksi zona waktu otomatis</translation>
 <translation id="9095999573959728902">Jika setelan ini diaktifkan, pengguna akan diizinkan memilih untuk menggunakan fitur Phone Hub, yang memungkinkan mereka berinteraksi dengan ponselnya di perangkat Chrome OS.
@@ -6192,6 +6232,12 @@
 
       Sesi pengguna dipulihkan setelah peluncuran ulang/mulai ulang.</translation>
 <translation id="9160028464653564229">Jangan izinkan situs apa pun meminta akses ke port serial lewat Serial API</translation>
+<translation id="916461878260574432">Menentukan apakah P2P akan digunakan untuk payload update OS.
+      Jika disetel ke Benar (True), perangkat akan berbagi dan berusaha menggunakan payload update di LAN, serta berpotensi mengurangi penggunaan dan kemacetan bandwidth internet. Jika payload update tidak tersedia di LAN, perangkat tersebut akan kembali mendownload dari server update.
+      Jika disetel ke Salah (False), P2P tidak akan digunakan.
+
+      CATATAN: Perilaku default bagi perangkat konsumen dan perusahaan berbeda: P2P akan diaktifkan di perangkat terkelola, tetapi tidak akan diaktifkan di perangkat yang tidak terkelola.</translation>
+<translation id="9164656078867027374">Menentukan domain yang diizinkan untuk mengakses <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /></translation>
 <translation id="9167719789236691545">Nonaktifkan Drive di aplikasi File <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="9187743794267626640">Menonaktifkan pemasangan penyimpanan eksternal</translation>
 <translation id="9190456586252617675">Kebijakan ini mengontrol mode pengalaman aktivasi Asisten.
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index 0e97c13..64bb5c0 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -441,6 +441,17 @@
       Visita la pagina https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Non è consentito l'uso della modalità headless</translation>
 <translation id="1588240398285670601">Impostazioni del browser</translation>
+<translation id="1590071725627230651">Questa impostazione offre diverse opzioni relative alla disponibilità del browser <ph name="LACROS_NAME" />.
+
+      Se il criterio viene impostato su <ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" /> o se non viene configurato, l'utente può attivare <ph name="LACROS_NAME" /> e impostarlo come browser principale. È comunque possibile non consentire <ph name="LACROS_NAME" /> con il criterio <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      Se il criterio viene impostato su <ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />, l'utente non potrà usare <ph name="LACROS_NAME" />. Il criterio <ph name="LACROS_ALLOWED_POLICY_NAME" /> viene ignorato.
+
+      Se il criterio viene impostato su <ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />, <ph name="LACROS_NAME" /> viene attivato, ma non è il browser principale. Il criterio <ph name="LACROS_ALLOWED_POLICY_NAME" /> viene ignorato.
+
+      Se il criterio viene impostato su <ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />, <ph name="LACROS_NAME" /> viene attivato ed è il browser principale. Il criterio <ph name="LACROS_ALLOWED_POLICY_NAME" /> viene ignorato.
+
+      In futuro sarà possibile impostare <ph name="LACROS_NAME" /> come unico browser disponibile in <ph name="PRODUCT_OS_NAME" /> impostando il valore <ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" />.</translation>
 <translation id="1599424828227887013">Attiva isolamento dei siti per origini specificate su dispositivi Android</translation>
 <translation id="159946228300522107">Se il criterio è impostato su True, Chrome ingrandisce la prima finestra mostrata alla prima esecuzione.
 
@@ -675,6 +686,7 @@
 <translation id="1920772397574801429">La configurazione del criterio consente di specificare il tipo di account, tra quelli forniti dall'app di autenticazione Android, che supporta l'autenticazione <ph name="HTTP_NEGOTIATE" />, ad esempio Kerberos. Queste informazioni dovrebbero essere messe a disposizione dal fornitore dell'app di autenticazione. Per i dettagli, consulta la pagina I progetti di Chromium ( https://goo.gl/hajyfN )
 
       Se il criterio non viene configurato, l'autenticazione <ph name="HTTP_NEGOTIATE" /> su Android viene disattivata.</translation>
+<translation id="1925529914257504750">Aggiornamento automatico P2P attivo</translation>
 <translation id="1930127294345368978">Numero massimo consentito di fogli da utilizzare per un singolo processo di stampa</translation>
 <translation id="193259052151668190">Whitelist di dispositivi USB scollegabili</translation>
 <translation id="1933378685401357864">Immagine di sfondo</translation>
@@ -761,6 +773,7 @@
           coerente. I processi possono essere eseguiti in sicurezza con
           valori diversi di questo criterio.
           </translation>
+<translation id="2029985289397958781">Viene disattivata la ricerca tramite fotocamera con <ph name="GOOGLE_LENS_PRODUCT_NAME" /> per gli utenti Enterprise</translation>
 <translation id="2030905906517501646">Parola chiave del provider di ricerca predefinito</translation>
 <translation id="203096360153626918">Questa norma non ha effetto sulle app Android, che saranno in grado di entrare in modalità a schermo intero anche se la norma viene impostata su <ph name="FALSE" />.</translation>
 <translation id="2032848225007871645">La configurazione del criterio consente di stabilire le modalità di sblocco rapido che è possibile usare per sbloccare la schermata di blocco.
@@ -950,6 +963,13 @@
       Questo criterio non dovrebbe essere utilizzato per i dispositivi usati dal pubblico generale.
 
       Se il criterio è impostato su true o non configurato, la notifica di avviso sulla privacy nella sessione Ospite gestita con avvio automatico verrà bloccata finché l'utente non la ignorerà.</translation>
+<translation id="2281878365805647176">La configurazione del criterio consente di attivare la funzionalità di accesso limitato di Chrome in <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> e di impedire agli utenti di modificare questa impostazione. Gli utenti possono accedere agli strumenti Google soltanto con gli account dei domini specificati (per consentire gli account Gmail o googlemail, aggiungi consumer_accounts all'elenco dei domini). Questa impostazione impedisce agli utenti di accedere a un account secondario e di aggiungerne uno su un dispositivo gestito che richiede l'autenticazione di Google, se tale account non appartiene a uno dei domini esplicitamente consentiti.
+
+      Se questa impostazione viene lasciata vuota o se non viene configurata, gli utenti possono accedere a <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> con qualsiasi account.
+
+      Gli utenti non possono modificare o ignorare questa impostazione.
+
+      Nota: questo criterio comporta l'aggiunta dell'intestazione X-GoogApps-Allowed-Domains a tutte le richieste HTTP e HTTPS inviate a tutti i domini google.com, come descritto all'indirizzo https://support.google.com/a/answer/1668854.</translation>
 <translation id="2289265947759479962">Questo criterio consente di stabilire se segnalare o meno le informazioni sulla versione, ad esempio la versione del sistema operativo, la piattaforma e l'architettura del sistema operativo, la versione di <ph name="PRODUCT_NAME" /> e il canale di <ph name="PRODUCT_NAME" />.
 
       Se il criterio <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> non viene configurato o viene disattivato, viene ignorato.
@@ -1014,6 +1034,7 @@
 
       Se il criterio è impostato su False o non è impostato, la tastiera riprodurrà i comandi dei tasti multimediali per impostazione predefinita. Per ripristinare il comportamento dei tasti funzione, è necessario premere il tasto per la ricerca.</translation>
 <translation id="2358176879566587521">Il criterio è rimosso. Non è compatibile con questa versione di <ph name="PRODUCT_NAME" />. Leggi ulteriori informazioni all'indirizzo https://support.google.com/chrome/a/answer/7643500</translation>
+<translation id="2362469626417133796">Intervallo di tempo per il riavvio</translation>
 <translation id="2364639863953745682">Modalità dell'esperienza di onboarding dell'assistente</translation>
 <translation id="2384233438419344179">Se il criterio è impostato su Attivato, gli elementi della pagina web che non provengono dal dominio presente nella barra degli indirizzi del browser non possono impostare i cookie. Se il criterio è impostato su Disattivato, tali elementi possono impostare i cookie e gli utenti non possono modificare l'impostazione.
 
@@ -1088,6 +1109,7 @@
 <translation id="2433516903565257847">La percentuale del parco di dispositivi che dovrebbe essere aggiornata dopo i giorni indicati.</translation>
 <translation id="2435052056904485763">Lista consentita server di delega Kerberos</translation>
 <translation id="2435232509335686514">Criterio di configurazione per la gestione dei file scaricati da parte del <ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /></translation>
+<translation id="2436302465999055995">Imposta <ph name="LACROS_NAME" /> come unico browser disponibile (opzione non ancora implementata)</translation>
 <translation id="2448315169529769573">Se il criterio viene impostato su Attivato, <ph name="PRODUCT_OS_NAME" /> segnala a Google metriche relative all'utilizzo e dati diagnostici, ad esempio rapporti sugli arresti anomali. Se il criterio viene impostato su Disattivato, la segnalazione di metriche e dati diagnostici viene disattivata.
 
        Se il criterio non viene configurato, la segnalazione di metriche e dati diagnostici rimane disattivata sui dispositivi non gestiti e attiva sui dispositivi gestiti.</translation>
@@ -1238,6 +1260,7 @@
 
       Se il criterio non viene configurato, viene applicato il valore <ph name="PRINTERS_ALLOW_ALL" />.</translation>
 <translation id="2586117300379904732">Consenti wakelock per la gestione dell'alimentazione</translation>
+<translation id="2586231026319371211">L'ora nel formato di tempo reale di 24 ore locale.</translation>
 <translation id="2587719089023392205">Imposta <ph name="PRODUCT_NAME" /> come browser predefinito</translation>
 <translation id="2588252329503406673">La configurazione del criterio consente di impostare il comportamento di <ph name="PRODUCT_OS_NAME" /> quando non viene rilevata alcuna attività utente per un determinato periodo di tempo durante la visualizzazione della schermata di accesso. Il criterio consente di controllare diverse impostazioni. Per conoscere la semantica e gli intervalli di valori di ognuna di esse, consulta i relativi criteri che controllano la gestione dell'alimentazione all'interno di una sessione.
 
@@ -1255,6 +1278,7 @@
 <translation id="2593762551209145088">Navigazione sicura non è mai attiva.</translation>
 <translation id="26023406105317310">Configura account Kerberos</translation>
 <translation id="2604182581880595781">Configura le norme relative alla funzione Condivisioni file di rete</translation>
+<translation id="2608535066974278204">Il periodo di tempo (in minuti) che specifica la durata dell'intervallo di tempo per il riavvio.</translation>
 <translation id="2615240493030733717">Segnala informazioni sul fuso orario</translation>
 <translation id="2619966380594000538">Se il criterio viene impostato su Attivato o se non viene configurato, vengono mostrati avvisi di sicurezza quando flag della riga di comando potenzialmente pericolosi vengono utilizzati per avviare Chrome.
 
@@ -1876,6 +1900,7 @@
 <translation id="3415954062311826850">Il criterio non è supportato in Arc.</translation>
 <translation id="34160070798637152">Consente di controllare la configurazione di rete a livello di dispositivo.</translation>
 <translation id="3417130629744653218">Consenti ai siti web di chiedere se esistono metodi di pagamento disponibili</translation>
+<translation id="3417391585519621050">Viene attivata la ricerca tramite fotocamera con <ph name="GOOGLE_LENS_PRODUCT_NAME" /> per gli utenti Enterprise</translation>
 <translation id="3417418267404583991">Se questa norma viene impostata su true o non viene configurata, in <ph name="PRODUCT_OS_NAME" /> verranno attivati gli accessi come ospite. Gli accessi come ospite sono sessioni utente anonime che non richiedono password.
 
       Se questa norma viene impostata su false, in <ph name="PRODUCT_OS_NAME" /> non sarà possibile avviare sessioni Ospite.</translation>
@@ -3366,6 +3391,7 @@
       Quando il valore di questa norma è impostato e non è 0, l'utente Demo correntemente connesso verrà disconnesso automaticamente dopo che sarà trascorso il tempo di inattività della durata specificata.
 
       Il valore della norma deve essere specificato in millisecondi.</translation>
+<translation id="55057839818162162">Consenti la ricerca tramite fotocamera con <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="5508307164752647432">Attiva la funzionalità Kerberos</translation>
 <translation id="5511702823008968136">Attiva barra dei Preferiti</translation>
 <translation id="5512418063782665071">URL pagina iniziale</translation>
@@ -3382,6 +3408,7 @@
 <translation id="5526184558582921522">Consenti le query a Quirks Server e il download di file di configurazione specifici per l'hardware</translation>
 <translation id="5526701598901867718">Tutto (non sicuro)</translation>
 <translation id="5530347722229944744">Blocca download potenzialmente pericolosi</translation>
+<translation id="5535256585099022933">Imposta l'intervallo di tempo per il riavvio</translation>
 <translation id="5535973522252703021">Whitelist server di delega Kerberos</translation>
 <translation id="553806128266843748">Un flag booleano che indica se la limitazione è attiva o meno.</translation>
 <translation id="5540885720415375851">Consenti rilevamento dei dispositivi locali</translation>
@@ -3669,6 +3696,7 @@
 <translation id="5890063326284543943">Controlla l'utilizzo dell'API Serial</translation>
 <translation id="5897913798715600338">Carica la batteria con la tecnologia di ricarica veloce.</translation>
 <translation id="5898486742390981550">Quando più utenti eseguono l'accesso, solo l'utente principale può utilizzare le app Android.</translation>
+<translation id="5899751601113377553">Impedisci agli utenti di usare <ph name="LACROS_NAME" /></translation>
 <translation id="5901427587865226597">Solo stampa fronte/retro</translation>
 <translation id="5905473632148429217">Attiva controlli OCSP/CRL online</translation>
 <translation id="5907283448020542268">A meno che il criterio <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> sia impostato su <ph name="BLOCK_GEOLOCATION_SETTING" />, l'impostazione <ph name="GLS_ENABLED" /> attiva i Servizi di geolocalizzazione di Google durante la configurazione iniziale. Se il criterio è impostato su <ph name="GLS_DISABLED" /> o se non è configurato, i Servizi di geolocalizzazione rimangono disattivati durante la configurazione.
@@ -3841,6 +3869,13 @@
 
       Lasciare il criterio non impostato consente agli utenti di modificare il tema del browser come preferiscono.</translation>
 <translation id="6195802366906945965">Consente di stabilire se verrà utilizzato lo strumento di verifica dei certificati integrato per verificare i certificati dei server</translation>
+<translation id="6198375221792846439">Consente di specificare un intervallo di tempo target per la fine del periodo di notifica per il riavvio.
+
+      Agli utenti viene inviata una notifica che informa che è necessario riavviare il browser o il dispositivo in base alle impostazioni dei criteri <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> e <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" />. Se il criterio <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> viene impostato su "Required", al termine del periodo di notifica viene forzato il riavvio dei browser e dei dispositivi. Questo criterio <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> può essere usato per rimandare il termine del periodo di notifica affinché rientri in un intervallo di tempo specifico.
+
+      Se questo criterio non viene impostato, l'intervallo di tempo target predefinito per <ph name="PRODUCT_OS_NAME" /> è 02:00-04:00. L'intervallo di tempo target predefinito per <ph name="PRODUCT_NAME" /> è l'intera giornata (vale a dire che il termine del periodo di notifica non viene mai rimandato).
+
+      Avviso: la configurazione di questo criterio potrebbe ritardare l'applicazione degli aggiornamenti software.</translation>
 <translation id="6208896993204286313">Segnala informazioni sulle norme di <ph name="PRODUCT_NAME" /></translation>
 <translation id="6210259502936598222">Segnala informazioni sulla versione del sistema operativo e di <ph name="PRODUCT_NAME" /></translation>
 <translation id="6212868225782276239">Vengono mostrate tutte le stampanti, tranne quelle indicate nella lista nera.</translation>
@@ -4019,6 +4054,7 @@
 <translation id="6464074037294098618">Attiva la Compilazione automatica per gli indirizzi</translation>
 <translation id="6467613372414922590">Consenti host di messaggistica nativi a livello di utente (installati senza privilegi di amministratore)</translation>
 <translation id="6473623140202114570">Configura l'elenco di domini sui quali Navigazione sicura non attiverà avvisi.</translation>
+<translation id="647645276885673708">Attiva <ph name="LACROS_NAME" /> e impostalo come browser principale</translation>
 <translation id="647698599569353771">Consenti l'attivazione di Condivisione nelle vicinanze.</translation>
 <translation id="6478258366184919502">Origini della schermata di accesso</translation>
 <translation id="6478261301433199402">La configurazione del criterio consente di specificare l'immagine <ph name="PLUGIN_VM_NAME" /> per un utente. È necessario specificare il criterio come stringa in formato JSON, con <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> che specifica da dove viene scaricata l'immagine e l'hash SHA-256 <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> utilizzato per verificare l'integrità del download.</translation>
@@ -4805,6 +4841,7 @@
 <translation id="7340034977315324840">Indicazione tempi di attività del dispositivo</translation>
 <translation id="7343004974628511824">Esegui controlli dell'intercettazione DNS</translation>
 <translation id="7343497214039883642">File di configurazione delle stampanti aziendali per i dispositivi</translation>
+<translation id="7358359585412734876">Attiva <ph name="LACROS_NAME" /></translation>
 <translation id="7358744897221281073">Se questa impostazione viene attivata, gli utenti che hanno già attivato Phone Hub potranno continuare attività su Chrome OS, come ad esempio la visualizzazione di pagine web che avevano iniziato a consultare sul telefono.
 
       Se viene disattivata, gli utenti non potranno usare questa funzionalità. Gli utenti non potranno usare questa funzionalità anche se viene disattivato il criterio PhoneHubAllowed.
@@ -5311,6 +5348,7 @@
 
       Se il criterio viene impostato su Disattivato o se non viene configurato, i dispositivi registrati non segnalano statistiche relative all'archiviazione.</translation>
 <translation id="8044493735196713914">Indicazione modalità di avvio dispositivo</translation>
+<translation id="80453040817068401">Rendi disponibile il browser <ph name="LACROS_NAME" /></translation>
 <translation id="8049769137921877885">Questo criterio consente di stabilire se segnalare o meno i dati del criterio e data e ora del relativo recupero.
 
       Se il criterio <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> non viene configurato o viene disattivato, viene ignorato.
@@ -5932,6 +5970,7 @@
 <translation id="8892286064305622118">Spazio libero su disco necessario per <ph name="PLUGIN_VM_NAME" /></translation>
 <translation id="8892783613915541293">Ritardi e azioni da compiere quando il dispositivo è inattivo durante l'utilizzo dell'alimentazione CA.</translation>
 <translation id="8897796778265450949">Limita il tempo per cui un utente autenticato tramite GAIA senza SAML può accedere offline</translation>
+<translation id="889814528399907891">Consenti agli utenti di attivare <ph name="LACROS_NAME" /> e impostarlo come browser principale</translation>
 <translation id="8903283771634816230">Se il criterio viene impostato su Attivato, <ph name="PRODUCT_NAME" /> usa la stampante predefinita del sistema operativo come destinazione predefinita per l'anteprima di stampa.
 
       Se il criterio viene impostato su Disattivato o se non viene configurato, <ph name="PRODUCT_NAME" /> usa la stampante utilizzata più di recente come destinazione predefinita per l'anteprima di stampa.</translation>
@@ -6074,6 +6113,7 @@
       Se il criterio viene impostato su Disattivato, i dispositivi registrati non registrano e non segnalano i tempi di attività.</translation>
 <translation id="9077227880520270584">Timer accesso automatico all'account locale del dispositivo</translation>
 <translation id="9084985621503260744">Specifica se l'attività video incide sulla gestione dell'alimentazione</translation>
+<translation id="9088191250434406767">Se il criterio non viene configurato o se viene impostato su Attivato, gli utenti possono effettuare ricerche con le proprie fotocamere usando <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Se viene impostato su Disattivato, gli utenti non possono vedere il pulsante <ph name="GOOGLE_LENS_PRODUCT_NAME" /> nella casella di ricerca quando la ricerca tramite fotocamera con <ph name="GOOGLE_LENS_PRODUCT_NAME" /> è supportata.</translation>
 <translation id="9088433379343318874">Abilita il provider di contenuti dell'utente supervisionato</translation>
 <translation id="9088444059179765143">Configura il metodo di rilevamento automatico del fuso orario</translation>
 <translation id="9095999573959728902">Se questa impostazione viene attivata, gli utenti potranno attivare Phone Hub, che consente loro di interagire con il proprio telefono su un dispositivo Chrome OS.
@@ -6145,6 +6185,12 @@
 
       La sessione dell'utente viene ripristinata dopo il riavvio.</translation>
 <translation id="9160028464653564229">Non consentire a nessun sito di richiedere l'accesso a porte seriali tramite l'API Serial</translation>
+<translation id="916461878260574432">Consente di specificare se è necessario usare P2P per i payload di aggiornamento del sistema operativo.
+      Se questo criterio viene impostato su Vero, i dispositivi condivideranno e proveranno a consumare i payload di aggiornamento sulla LAN, riducendo potenzialmente l'utilizzo e la congestione della larghezza di banda Internet. Se il payload di aggiornamento non è disponibile sulla LAN, il dispositivo ricorrerà al download da un server di aggiornamento.
+      Se il criterio viene impostato su Falso, non verrà utilizzato P2P.
+
+      NOTA: il comportamento predefinito per i dispositivi di utenti e aziende è diverso perché sui dispositivi gestiti viene attivato P2P, che invece non viene attivato sui dispositivi non gestiti.</translation>
+<translation id="9164656078867027374">Definisci i domini autorizzati ad accedere a <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /></translation>
 <translation id="9167719789236691545">Disattiva Drive nell'app File di <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="9187743794267626640">Disabilita il montaggio di una memoria esterna</translation>
 <translation id="9190456586252617675">Questo criterio consente di stabilire la modalità dell'esperienza di onboarding dell'assistente.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index 205cde2..3951af1 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -431,6 +431,17 @@
       詳しくは、https://www.chromestatus.com/feature/4664843055398912 をご覧ください。</translation>
 <translation id="1587585749332985896">ヘッドレス モードの使用を許可しない</translation>
 <translation id="1588240398285670601">ブラウザの設定</translation>
+<translation id="1590071725627230651">この設定は、<ph name="LACROS_NAME" /> ブラウザの使用に関する複数のオプションを提供します。
+
+      このポリシーを <ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" /> に設定するか、未設定のままにした場合、ユーザーは <ph name="LACROS_NAME" /> を有効にするとともにメインのブラウザとして設定できます。この場合も、<ph name="LACROS_NAME" /> は <ph name="LACROS_ALLOWED_POLICY_NAME" /> ポリシーで無効にできます。
+
+      このポリシーを <ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" /> に設定した場合、ユーザーは <ph name="LACROS_NAME" /> を使用できません。<ph name="LACROS_ALLOWED_POLICY_NAME" /> ポリシーは無視されます。
+
+      このポリシーを <ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" /> に設定した場合、<ph name="LACROS_NAME" /> は有効になりますが、メインのブラウザとしては設定されません。<ph name="LACROS_ALLOWED_POLICY_NAME" /> ポリシーは無視されます。
+
+      このポリシーを <ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" /> に設定した場合、<ph name="LACROS_NAME" /> は有効になり、メインのブラウザとして設定されます。<ph name="LACROS_ALLOWED_POLICY_NAME" /> ポリシーは無視されます。
+
+      今後、<ph name="PRODUCT_OS_NAME" /> で <ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" /> 値を使用して、<ph name="LACROS_NAME" /> を唯一の使用可能なブラウザとして設定できるようになる予定です。</translation>
 <translation id="1599424828227887013">Android デバイスで指定の発行元に対してサイト分離を有効にする</translation>
 <translation id="159946228300522107">このポリシーを True に設定した場合、Chrome では初回実行時に最初に表示されたウィンドウが最大化されます。このポリシーを False に設定した場合、または未設定のままにした場合、画面サイズによっては、Chrome で最初に表示されたウィンドウが最大化されます。</translation>
 <translation id="1600340610556453828">このポリシーを無効に設定した場合、<ph name="PRODUCT_OS_NAME" /> で Wi-Fi がオフになり、ユーザーはこの設定を変更できません。
@@ -662,6 +673,7 @@
 <translation id="1920772397574801429">このポリシーでは、<ph name="HTTP_NEGOTIATE" /> 認証(Kerberos 認証など)に対応している Android 認証アプリによって提供されるアカウントの種類を指定できます。この情報は、認証アプリの提供者から入手します。詳しくは、Chromium プロジェクトの説明(https://goo.gl/hajyfN)をご覧ください。
 
       このポリシーを未設定のままにした場合、Android で <ph name="HTTP_NEGOTIATE" /> 認証は無効になります。</translation>
+<translation id="1925529914257504750">P2P の自動更新の有効化</translation>
 <translation id="1930127294345368978">1 回の印刷ジョブで使用できる用紙の最大数</translation>
 <translation id="193259052151668190">取り外し可能な USB デバイスの許可リスト</translation>
 <translation id="1933378685401357864">壁紙の画像</translation>
@@ -746,6 +758,7 @@
           必要です。ただし、各プロセスに異なるポリシー値が適用され、実行されても
           問題はありません。
           </translation>
+<translation id="2029985289397958781">企業ユーザーに対して <ph name="GOOGLE_LENS_PRODUCT_NAME" /> のカメラを使用した検索を無効にする</translation>
 <translation id="2030905906517501646">デフォルトの検索プロバイダのキーワード</translation>
 <translation id="203096360153626918">このポリシーは Android アプリには適用されません。このポリシーを <ph name="FALSE" /> に設定した場合でも、Android アプリの全画面表示は可能です。</translation>
 <translation id="2032848225007871645">このポリシーでは、ロック画面を解除できるロックのクイック解除モードを管理できます。
@@ -929,6 +942,13 @@
       このポリシーは、一般ユーザー向けのデバイスでは使用しないでください。
 
       このポリシーを True に設定するか未設定のままにした場合、自動起動される管理対象のゲスト セッションでは、プライバシーに関する警告通知は固定され、ユーザーが閉じるまで表示されます。</translation>
+<translation id="2281878365805647176">このポリシーでは、Chrome の制限付きログイン機能を <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> で有効にするとともに、ユーザーがこの設定を変更できないようにします。ユーザーは、指定ドメインのアカウントでのみ、Google のツールにアクセスできます(Gmail アカウントまたは GoogleMail アカウントを許可する場合は、consumer_accounts をドメインリストに追加します)。この設定により、Google の認証を必要とする管理対象のデバイス上では、アカウントが明示的に許可されたドメインのいずれにも属していない場合に、ユーザーは予備のアカウントへのログインや追加ができなくなります。
+
+      この設定を空白または未設定のままにした場合、ユーザーはどのアカウントでも <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> にアクセスできます。
+
+      ユーザーはこの設定を変更またはオーバーライドできません。
+
+      注: このポリシーにより、すべての google.com ドメインに対するすべての HTTP および HTTPS リクエストに X-GoogApps-Allowed-Domains ヘッダーが追加されます。詳しくは https://support.google.com/a/answer/1668854 をご覧ください。</translation>
 <translation id="2289265947759479962">このポリシーでは、バージョン情報(OS バージョン、OS プラットフォーム、OS アーキテクチャ、<ph name="PRODUCT_NAME" /> のバージョン、<ph name="PRODUCT_NAME" /> のチャンネルなど)について、レポートを作成するかどうかを管理します。
 
       ポリシー <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> を未設定のままにするか無効にすると、このポリシーは無視されます。
@@ -991,6 +1011,7 @@
 
       このポリシーを False に設定するか設定しない場合、最上段のキーを押すとデフォルトでメディアキーのコマンドが実行されます。検索キーを押すと、これらのキーはファンクション キーに変わります。</translation>
 <translation id="2358176879566587521">このポリシーは削除されました。このバージョンの <ph name="PRODUCT_NAME" /> には対応していません。詳しくは、https://support.google.com/chrome/a/answer/7643500 をご覧ください。</translation>
+<translation id="2362469626417133796">再起動の時間枠</translation>
 <translation id="2364639863953745682">アシスタントのオンボーディング エクスペリエンスのモード</translation>
 <translation id="2384233438419344179">このポリシーを有効に設定した場合、ブラウザのアドレスバーに表示されているドメイン以外のウェブページ要素からは、Cookie を設定できなくなります。このポリシーを無効に設定した場合、これらの要素による Cookie の設定が許可され、ユーザーはこの設定を変更できません。
 
@@ -1062,6 +1083,7 @@
 <translation id="2433516903565257847">特定の日数が経過したときにアップデートを適用するデバイスの割合(%)です。</translation>
 <translation id="2435052056904485763">Kerberos 委任サーバーの許可リスト</translation>
 <translation id="2435232509335686514">ダウンロードされたファイルを処理する <ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /> の設定ポリシー</translation>
+<translation id="2436302465999055995"><ph name="LACROS_NAME" /> のみを使用可能なブラウザにする(未実装)</translation>
 <translation id="2448315169529769573">このポリシーを有効に設定すると、<ph name="PRODUCT_OS_NAME" /> から Google に、使用状況に関する統計情報と診断データが送信されます。このポリシーを無効に設定すると、統計情報と診断データは送信されません。
 
        このポリシーを未設定のままにすると、統計情報と診断データの送信は管理対象外のデバイスではオフになり、管理対象のデバイスではオンになります。</translation>
@@ -1199,6 +1221,7 @@
 
       このポリシーを未設定のままにした場合、<ph name="PRINTERS_ALLOW_ALL" /> が適用されます。</translation>
 <translation id="2586117300379904732">電源管理の wake lock を許可する</translation>
+<translation id="2586231026319371211">地域の実経過時間を 24 時間制で表示します。</translation>
 <translation id="2587719089023392205"><ph name="PRODUCT_NAME" /> を既定のブラウザに設定する</translation>
 <translation id="2588252329503406673">このポリシーでは、ログイン画面が表示されている状態で一定時間ユーザー操作がなかったときの <ph name="PRODUCT_OS_NAME" /> の動作を設定できます。このポリシーでは複数の設定を管理します。個々の意味や値の範囲については、セッション内で電源管理を制御する該当のポリシーをご覧ください。
 
@@ -1216,6 +1239,7 @@
 <translation id="2593762551209145088">セーフ ブラウジングを常に無効にする。</translation>
 <translation id="26023406105317310">Kerberos アカウントを設定する</translation>
 <translation id="2604182581880595781">ネットワーク ファイル共有に関連するポリシーを設定します。</translation>
+<translation id="2608535066974278204">再起動の時間枠の長さを示す分単位の期間です。</translation>
 <translation id="2615240493030733717">タイムゾーン情報を報告する</translation>
 <translation id="2619966380594000538">このポリシーを有効に設定するか未設定のままにした場合、危険性のあるコマンドライン フラグを使用して Chrome を起動したときにセキュリティ警告が表示されます。
 
@@ -1828,6 +1852,7 @@
 <translation id="3415954062311826850">このポリシーは ARC でサポートされていません。</translation>
 <translation id="34160070798637152">デバイス共通のネットワーク設定を制御します。</translation>
 <translation id="3417130629744653218">利用可能なお支払い方法の問い合わせをウェブサイトに許可します。</translation>
+<translation id="3417391585519621050">企業ユーザーに対して <ph name="GOOGLE_LENS_PRODUCT_NAME" /> のカメラを使用した検索を有効にする</translation>
 <translation id="3417418267404583991">このポリシーを true に設定した場合または未設定の場合、<ph name="PRODUCT_OS_NAME" /> ではゲスト ログインが有効になります。ゲスト ログインは匿名ユーザーのセッションで、パスワードが不要です。
 
       このポリシーを false に設定した場合、<ph name="PRODUCT_OS_NAME" /> ではゲスト セッションを開始できません。</translation>
@@ -3272,6 +3297,7 @@
       このポリシーの値を 0 以外に設定した場合、現在デモ モードでログインしているユーザーが操作しないまま、ここに指定した時間が経過すると、ユーザーは自動的にログアウトされます。
 
       ポリシーの値は、ミリ秒単位で指定する必要があります。</translation>
+<translation id="55057839818162162"><ph name="GOOGLE_LENS_PRODUCT_NAME" /> のカメラを使用した検索を許可する</translation>
 <translation id="5508307164752647432">Kerberos 機能を有効にする</translation>
 <translation id="5511702823008968136">ブックマーク バーを有効にする</translation>
 <translation id="5512418063782665071">ホームページの URL</translation>
@@ -3288,6 +3314,7 @@
 <translation id="5526184558582921522">Quirks サーバーへのクエリの送信と、必要に応じたハードウェア固有の設定ファイルのダウンロードを許可する</translation>
 <translation id="5526701598901867718">すべて(安全ではありません)</translation>
 <translation id="5530347722229944744">危険性のあるダウンロードをブロックする</translation>
+<translation id="5535256585099022933">再起動の時間間隔を設定する</translation>
 <translation id="5535973522252703021">Kerberos 委任サーバーのホワイトリスト</translation>
 <translation id="553806128266843748">ネットワーク制限を有効にするかどうかを示すブール値のフラグです。</translation>
 <translation id="5540885720415375851">ローカル デバイスの検出を許可する</translation>
@@ -3574,6 +3601,7 @@
 <translation id="5890063326284543943">シリアル API の使用を管理する</translation>
 <translation id="5897913798715600338">急速充電でバッテリーを充電する。</translation>
 <translation id="5898486742390981550">複数のユーザーがログインしている場合は、メインユーザーのみが Android アプリを使用できます。</translation>
+<translation id="5899751601113377553"><ph name="LACROS_NAME" /> の使用を許可しない</translation>
 <translation id="5901427587865226597">両面印刷のみ</translation>
 <translation id="5905473632148429217">オンライン OCSP / CRL チェックを有効にする</translation>
 <translation id="5907283448020542268"><ph name="GLS_ENABLED" /> に設定した場合、Google 位置情報サービスは初期設定中オンになります(<ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> ポリシーが <ph name="BLOCK_GEOLOCATION_SETTING" />に設定されている場合を除く)。このポリシーを <ph name="GLS_DISABLED" /> に設定するか未設定のままにした場合、位置情報サービスは設定中オフになります。
@@ -3738,6 +3766,12 @@
 
       このポリシーを未設定のままにした場合、ユーザーはブラウザのテーマを自由に変更できます。</translation>
 <translation id="6195802366906945965">サーバー証明書の確認に組み込みの証明書確認機能を使用する</translation>
+<translation id="6198375221792846439">再起動通知期間の終了のターゲット時間枠を指定します。
+
+      ユーザーは、<ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> ポリシーと <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" /> ポリシーの設定に基づき、ブラウザまたはデバイスの再起動が必要であると通知されます。<ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> ポリシーが「必須」に設定されている場合、ブラウザとデバイスは通知期間の終了時に強制的に再起動されます。この <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> ポリシーは、特定の時間枠に収まるよう通知期間の終了を遅らせる場合に使用できます。
+      このポリシーが未設定の場合、<ph name="PRODUCT_OS_NAME" /> のデフォルトのターゲット時間枠は 2 AM〜4 AM の間となります。<ph name="PRODUCT_NAME" /> のデフォルトのターゲット時間枠は 1 日です(つまり通知期間の終了を遅らせることはできません)。
+
+      警告: このポリシーを設定した場合、ソフトウェア更新の適用が遅れる可能性があります。</translation>
 <translation id="6208896993204286313"><ph name="PRODUCT_NAME" /> のポリシー情報に関するレポートを作成</translation>
 <translation id="6210259502936598222">OS と <ph name="PRODUCT_NAME" /> のバージョン情報に関するレポートを作成</translation>
 <translation id="6212868225782276239">ブラックリスト登録されている以外のすべてのプリンタを表示する。</translation>
@@ -3911,6 +3945,7 @@
 <translation id="6464074037294098618">住所の自動入力を有効にします</translation>
 <translation id="6467613372414922590">ユーザーレベルのネイティブ メッセージング ホスト(管理者権限なしでインストールされたホスト)を許可する</translation>
 <translation id="6473623140202114570">セーフ ブラウジングによる警告の表示を行わないドメインのリストを設定する。</translation>
+<translation id="647645276885673708"><ph name="LACROS_NAME" /> を有効にし、メインのブラウザとして設定する</translation>
 <translation id="647698599569353771">ニアバイシェアを有効にできるようにします。</translation>
 <translation id="6478258366184919502">ログインと画面のオリジン</translation>
 <translation id="6478261301433199402">このポリシーでは、ユーザーの <ph name="PLUGIN_VM_NAME" /> 画像を指定できます。画像のダウンロード場所を示す <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> と、ダウンロードの整合性の確認に使用する SHA-256 ハッシュとして <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> を JSON 形式の文字列として指定します。</translation>
@@ -4662,6 +4697,7 @@
 <translation id="7340034977315324840">デバイス操作時間を報告する</translation>
 <translation id="7343004974628511824">DNS 傍受チェックを行う</translation>
 <translation id="7343497214039883642">デバイスの企業プリンタ設定ファイル</translation>
+<translation id="7358359585412734876"><ph name="LACROS_NAME" /> を有効にする</translation>
 <translation id="7358744897221281073">この設定が有効な場合、スマートフォン ハブをすでに有効にしているユーザーは、スマートフォンでのウェブページの閲覧などの作業を Chrome OS で継続できます。
 
       この設定が無効な場合、ユーザーはこの機能を使用できません。PhoneHubAllowed ポリシーが無効な場合も、ユーザーはこの機能を使用できません。
@@ -5154,6 +5190,7 @@
 
       このポリシーを無効にするか、未設定のままにすると、登録済みのデバイスはストレージに関する統計情報を報告しません。</translation>
 <translation id="8044493735196713914">デバイス起動モードを報告する</translation>
+<translation id="80453040817068401"><ph name="LACROS_NAME" /> ブラウザを使用可能にする</translation>
 <translation id="8049769137921877885">このポリシーでは、ポリシーデータとポリシーの取得日時について、レポートを作成するかどうかを管理します。
 
       ポリシー <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> を未設定のままにするか無効にすると、このポリシーは無視されます。
@@ -5768,6 +5805,7 @@
 <translation id="8892286064305622118"><ph name="PLUGIN_VM_NAME" /> に必要なディスクの空き容量</translation>
 <translation id="8892783613915541293">AC 電源での使用中、デバイスがアイドル状態になってからの待機時間とその後に行うアクション</translation>
 <translation id="8897796778265450949">SAML を使用せず GAIA 経由で認証されたユーザーがオフラインでログインできる時間を制限する</translation>
+<translation id="889814528399907891">ユーザーが <ph name="LACROS_NAME" /> を有効にするとともにメインのブラウザとして設定することを許可する</translation>
 <translation id="8903283771634816230">このポリシーを有効に設定した場合、<ph name="PRODUCT_NAME" /> では OS のデフォルト プリンタが印刷プレビューのデフォルトの印刷先として使用されます。
 
       このポリシーを無効に設定するか未設定のままにした場合、<ph name="PRODUCT_NAME" /> では、最後に使用されたプリンタが印刷プレビューのデフォルトの印刷先として使用されます。</translation>
@@ -5912,6 +5950,7 @@
       このポリシーを無効に設定すると、登録済みのデバイスはアクティブな期間を記録または報告しません。</translation>
 <translation id="9077227880520270584">デバイスのローカル アカウントの自動ログイン タイマー</translation>
 <translation id="9084985621503260744">動画操作を電源管理に関連付けるかどうかを指定する</translation>
+<translation id="9088191250434406767">このポリシーを未設定のままにするか有効に設定した場合、ユーザーはカメラと <ph name="GOOGLE_LENS_PRODUCT_NAME" /> を使用して検索できます。このポリシーを無効に設定した場合、<ph name="GOOGLE_LENS_PRODUCT_NAME" /> のカメラを使用した検索が可能な場合でも、検索ボックスに <ph name="GOOGLE_LENS_PRODUCT_NAME" /> ボタンは表示されません。</translation>
 <translation id="9088433379343318874">監視対象ユーザーのコンテンツ プロバイダを有効にする</translation>
 <translation id="9088444059179765143">タイムゾーン自動検出の方法を設定する</translation>
 <translation id="9095999573959728902">この設定が有効な場合、ユーザーはスマートフォン ハブを有効にできます。スマートフォン ハブは、Chrome OS デバイスからスマートフォンを操作できる機能です。
@@ -5983,6 +6022,12 @@
 
       ユーザー セッションは再起動後に復元されます。</translation>
 <translation id="9160028464653564229">どのサイトにもシリアル API 経由でのシリアルポートへのアクセス要求を許可しない</translation>
+<translation id="916461878260574432">P2P を OS 更新ペイロードに使用するかどうかを指定します。
+      True に設定すると、デバイスは LAN 上で更新ペイロードを共有し、使用しようとするため、インターネット帯域幅の使用と混雑が削減される可能性があります。更新ペイロードが LAN 上で使用できない場合、デバイスは更新サーバーからのダウンロードにフォールバックします。
+      False に設定すると、P2P は使用されません。
+
+      注: 消費者向けデバイスと企業向けデバイスのデフォルトの動作は異なります。管理対象デバイスでは P2P は有効になりますが、管理対象でないデバイスでは無効になります。</translation>
+<translation id="9164656078867027374"><ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> へのアクセスを許可するドメインを定義する</translation>
 <translation id="9167719789236691545"><ph name="PRODUCT_OS_NAME" /> ファイルアプリでドライブを無効にする</translation>
 <translation id="9187743794267626640">外部ストレージのマウントを無効にする</translation>
 <translation id="9190456586252617675">このポリシーでは、アシスタントのオンボーディング エクスペリエンスのモードを管理します。
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index fb4c570..5fb1a417 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -441,6 +441,17 @@
       https://www.chromestatus.com/feature/4664843055398912 페이지를 참고하세요.</translation>
 <translation id="1587585749332985896">헤드리스 모드 사용 허용 안 함</translation>
 <translation id="1588240398285670601">브라우저 설정</translation>
+<translation id="1590071725627230651">이 설정은 <ph name="LACROS_NAME" /> 브라우저의 사용 가능 여부 옵션을 다양하게 제공합니다.
+
+      정책을 <ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" /> 값으로 설정하거나 설정하지 않으면 사용자가 <ph name="LACROS_NAME" />를 사용 설정하고 기본 브라우저로 지정할 수 있습니다. 여전히 <ph name="LACROS_ALLOWED_POLICY_NAME" /> 정책을 사용해 <ph name="LACROS_NAME" />를 사용 중지할 수도 있습니다.
+
+      정책을 <ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />으로 설정하면 사용자가 <ph name="LACROS_NAME" />를 사용할 수 없습니다. <ph name="LACROS_ALLOWED_POLICY_NAME" /> 정책은 무시됩니다.
+
+      정책을 <ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" /> 값으로 설정하면 <ph name="LACROS_NAME" />가 사용 설정되지만 기본 브라우저로 지정되지는 않습니다. <ph name="LACROS_ALLOWED_POLICY_NAME" /> 정책은 무시됩니다.
+
+      정책을 <ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" /> 값으로 설정하면 <ph name="LACROS_NAME" />가 사용 설정되며 기본 브라우저로 지정됩니다. <ph name="LACROS_ALLOWED_POLICY_NAME" /> 정책은 무시됩니다.
+
+      나중에 <ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" /> 값을 사용해 <ph name="LACROS_NAME" />를 <ph name="PRODUCT_OS_NAME" />에서 사용 가능한 유일한 브라우저로 지정할 수 있습니다.</translation>
 <translation id="1599424828227887013">Android 기기에서 지정된 출처의 사이트 격리 사용 설정</translation>
 <translation id="159946228300522107">정책을 True로 설정하면 Chrome에서 최초 실행 시 표시되는 첫 번째 창을 최대화합니다.
 
@@ -680,6 +691,7 @@
 <translation id="1920772397574801429">정책을 설정하면 Kerberos 인증과 같은 <ph name="HTTP_NEGOTIATE" /> 인증을 지원하는 Android 인증 앱에서 제공된 계정 유형이 지정됩니다. 이 정보는 인증 앱 공급업체에서 제공해야 합니다. 자세한 정보는 Chromium 프로젝트(https://goo.gl/hajyfN)를 참고하세요.
 
       정책을 설정하지 않으면 Android에서 <ph name="HTTP_NEGOTIATE" /> 인증이 사용 중지됩니다.</translation>
+<translation id="1925529914257504750">P2P 자동 업데이트 사용</translation>
 <translation id="1930127294345368978">단일 인쇄 작업에 사용할 수 있는 최대 시트 수</translation>
 <translation id="193259052151668190">USB 분리 가능 기기 허용 목록</translation>
 <translation id="1933378685401357864">배경화면 이미지</translation>
@@ -766,6 +778,7 @@
           완전히 다시 시작해야 합니다. 이 정책 값이 달라도 프로세스가 실행되는 데는
           어떠한 문제도 없습니다.
           </translation>
+<translation id="2029985289397958781">기업 사용자용 <ph name="GOOGLE_LENS_PRODUCT_NAME" /> 카메라 지원 검색 사용 중지</translation>
 <translation id="2030905906517501646">기본 검색 공급자 키워드</translation>
 <translation id="203096360153626918">이 정책은 Android 앱에 아무런 영향도 미치지 않습니다. 이 정책이 <ph name="FALSE" />로 설정되더라도 Android 앱이 전체화면 모드로 전환될 수 있습니다.</translation>
 <translation id="2032848225007871645">정책을 설정하면 잠금 화면을 해제할 빠른 잠금 해제 모드를 제어할 수 있습니다.
@@ -955,6 +968,13 @@
       이 정책을 일반 대중이 사용하는 기기에 사용해서는 안 됩니다.
 
       정책을 True로 설정하거나 설정하지 않으면 사용자가 닫을 때까지 자동 실행 및 관리되는 게스트 세션의 개인정보 보호 경고 알림이 고정됩니다.</translation>
+<translation id="2281878365805647176">이 정책을 설정하면 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> 내 Chrome의 제한된 로그인 기능이 사용 설정되고 사용자가 설정을 변경할 수 없습니다. 사용자는 특정 도메인의 계정을 사용해서만 Gmail 또는 googlemail 계정을 허용하고 도메인 목록에 consumer_accounts를 추가하기 위해 Google 도구에 액세스할 수 있습니다. 이 설정은 보조 계정이 명시적으로 허용된 도메인에 속하지 않은 경우 사용자가 Google 인증이 필요한 관리 대상 기기에 보조 계정을 추가하고 보조 계정으로 로그인하는 것을 차단합니다.
+
+      설정을 비워 두거나 설정하지 않으면 사용자가 어느 계정으로든 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />에 액세스할 수 있습니다.
+
+      사용자는 이 설정을 변경하거나 재정의할 수 없습니다.
+
+      참고: 정책을 사용하면 https://support.google.com/a/answer/1668854에서 설명된 바와 같이 X-GoogApps-Allowed-Domains 헤더가 모든 google.com 도메인에 대한 HTTP 및 HTTPS 요청에 첨부됩니다.</translation>
 <translation id="2289265947759479962">이 정책은 OS 버전, OS 플랫폼, OS 아키텍처, <ph name="PRODUCT_NAME" /> 버전, <ph name="PRODUCT_NAME" /> 채널과 같은 버전 정보의 보고 여부를 제어합니다.
 
       <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> 정책이 설정되지 않거나 사용 중지되면 정책이 무시됩니다.
@@ -1019,6 +1039,7 @@
 
       정책을 False로 설정하거나 설정하지 않으면 키보드는 기본적으로 미디어 키 명령어를 만듭니다. 검색 키를 누르면 기능 키로 변경됩니다.</translation>
 <translation id="2358176879566587521">이 정책은 삭제되었습니다. 이 <ph name="PRODUCT_NAME" /> 버전과 호환되지 않습니다 . 자세한 내용은 https://support.google.com/chrome/a/answer/7643500을 참조하세요.</translation>
+<translation id="2362469626417133796">다시 실행 기간</translation>
 <translation id="2364639863953745682">어시스턴트 온보딩 환경 모드</translation>
 <translation id="2384233438419344179">정책을 사용으로 설정하면 브라우저의 주소 표시줄에 있는 도메인이 출처가 아닌 웹페이지 요소가 쿠키를 설정할 수 없습니다. 사용 안함으로 설정하면 이러한 요소가 쿠키를 설정하도록 허용하고 사용자가 설정을 변경할 수 없습니다.
 
@@ -1093,6 +1114,7 @@
 <translation id="2433516903565257847">지정된 기간 후 업데이트되어야 하는 기기 비율입니다.</translation>
 <translation id="2435052056904485763">Kerberos 위임 서버 허용 목록</translation>
 <translation id="2435232509335686514"><ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" />의 다운로드한 파일 처리를 위한 구성 정책</translation>
+<translation id="2436302465999055995"><ph name="LACROS_NAME" />를 사용 가능한 유일한 브라우저로 지정(아직 구현되지 않음)</translation>
 <translation id="2448315169529769573">정책을 사용 설정하면 <ph name="PRODUCT_OS_NAME" />에서 비정상 종료 보고서 등 사용 측정항목과 진단 데이터를 Google에 보고합니다. 정책을 사용 중지하면 측정항목 및 진단 데이터 보고가 사용 중지됩니다.
 
        정책을 설정하지 않으면 관리되지 않는 기기에서는 측정항목 및 진단 데이터 보고가 사용 중지되고 관리되는 기기에서는 사용 설정됩니다.</translation>
@@ -1243,6 +1265,7 @@
 
       정책을 설정하지 않으면 <ph name="PRINTERS_ALLOW_ALL" />이 적용됩니다.</translation>
 <translation id="2586117300379904732">전원 관리를 위해 wake lock 허용</translation>
+<translation id="2586231026319371211">시간은 실제 현지 시간(24시간 형식)으로 해석됩니다.</translation>
 <translation id="2587719089023392205"><ph name="PRODUCT_NAME" />을(를) 기본 브라우저로 설정</translation>
 <translation id="2588252329503406673">정책을 설정하면 로그인 화면이 표시되어 있는데 일정 시간 동안 사용자 활동이 없을 경우 <ph name="PRODUCT_OS_NAME" />의 동작 방식을 설정할 수 있습니다. 정책이 여러 설정을 제어합니다. 각 설정의 의미 체계 및 값 범위를 알아보려면 세션 내 전원 관리를 제어하는 해당 정책을 살펴보세요.
 
@@ -1260,6 +1283,7 @@
 <translation id="2593762551209145088">세이프 브라우징이 활성화되지 않습니다.</translation>
 <translation id="26023406105317310">Kerberos 계정 구성</translation>
 <translation id="2604182581880595781">네트워크 파일 공유 관련 정책을 구성합니다.</translation>
+<translation id="2608535066974278204">다시 실행 창의 길이를 지정하는 기간(분)입니다.</translation>
 <translation id="2615240493030733717">시간대 정보 보고</translation>
 <translation id="2619966380594000538">이 정책을 사용으로 설정하거나 설정하지 않으면 잠재적으로 위험한 명령줄 플래그와 함께 Chrome이 실행되었을 때 보안 경고가 표시됩니다.
 
@@ -1892,6 +1916,7 @@
 <translation id="3415954062311826850">ARC 내에서 지원되지 않는 정책입니다.</translation>
 <translation id="34160070798637152">기기 전체 네트워크 구성을 제어합니다.</translation>
 <translation id="3417130629744653218">웹사이트가 사용 가능한 결제 수단을 쿼리하도록 허용</translation>
+<translation id="3417391585519621050">기업 사용자용 <ph name="GOOGLE_LENS_PRODUCT_NAME" /> 카메라 지원 검색 사용 설정</translation>
 <translation id="3417418267404583991">이 정책을 true로 설정하거나 구성하지 않으면 <ph name="PRODUCT_OS_NAME" />은(는) 게스트 로그인을 사용합니다. 게스트 로그인은 익명 사용자 세션이며 비밀번호가 필요없습니다.
 
       이 정책을 false로 설정하면, <ph name="PRODUCT_OS_NAME" />은(는) 게스트 세션을 시작하지 않습니다.</translation>
@@ -3384,6 +3409,7 @@
       이 정책 값이 설정되고 값이 0이 아니면 현재 로그인한 데모 사용자가 지정된 비활성화 시간 뒤에 자동으로 로그아웃됩니다.
 
       이 정책 값은 밀리초 단위로 지정되어야 합니다.</translation>
+<translation id="55057839818162162"><ph name="GOOGLE_LENS_PRODUCT_NAME" /> 카메라 지원 검색 허용</translation>
 <translation id="5508307164752647432">Kerberos 기능 사용</translation>
 <translation id="5511702823008968136">북마크바 사용</translation>
 <translation id="5512418063782665071">홈페이지 URL</translation>
@@ -3400,6 +3426,7 @@
 <translation id="5526184558582921522">Quirks 서버로 쿼리 및 잠재적인 하드웨어별 구성 파일 다운로드 허용</translation>
 <translation id="5526701598901867718">모두(안전하지 않음)</translation>
 <translation id="5530347722229944744">위험할 가능성이 있는 다운로드 차단</translation>
+<translation id="5535256585099022933">다시 실행될 시간 간격 설정</translation>
 <translation id="5535973522252703021">Kerberos 위임 서버 허용목록</translation>
 <translation id="553806128266843748">제한을 사용 설정할지 나타내는 부울 플래그입니다.</translation>
 <translation id="5540885720415375851">로컬 기기 검색 허용</translation>
@@ -3697,6 +3724,7 @@
 <translation id="5890063326284543943">Serial API 사용 제어</translation>
 <translation id="5897913798715600338">급속 충전 기술을 사용하여 배터리를 충전합니다.</translation>
 <translation id="5898486742390981550">여러 사용자가 로그인한 경우 기본 사용자만 Android 앱을 사용할 수 있습니다.</translation>
+<translation id="5899751601113377553">사용자가 <ph name="LACROS_NAME" />를 사용하지 못하도록 차단</translation>
 <translation id="5901427587865226597">양면 인쇄만</translation>
 <translation id="5905473632148429217">온라인 OCSP/CRL 확인을 사용합니다.</translation>
 <translation id="5907283448020542268"><ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> 정책이 <ph name="BLOCK_GEOLOCATION_SETTING" />으로 설정되지 않은 이상, <ph name="GLS_ENABLED" />를 설정하면 초기 설정 중에 Google 위치 서비스가 사용 설정됩니다. 정책을 <ph name="GLS_DISABLED" />로 설정하거나 설정하지 않으면 설정 중에 위치 서비스가 사용 중지된 상태로 유지됩니다.
@@ -3884,6 +3912,13 @@
 
       정책을 설정하지 않으면 사용자가 원하는 대로 브라우저의 테마를 변경할 수 있습니다.</translation>
 <translation id="6195802366906945965">서버 인증서 확인을 위해 내장 인증서 확인 기능을 사용할지 결정</translation>
+<translation id="6198375221792846439">다시 실행 알림 기간이 종료될 대상 기간을 지정합니다.
+
+      <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> 및 <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" /> 정책 설정에 따라 사용자에게 브라우저 다시 실행 또는 기기 재시작이 필요하다는 알림이 표시됩니다. <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> 정책을 'Required'로 설정하면 알림 기간이 종료될 때 브라우저 및 기기가 강제로 다시 시작됩니다. 이 <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> 정책을 사용해 특정 기간에 포함되도록 알림 기간의 종료 시점을 지연할 수 있습니다.
+
+      정책을 설정하지 않으면 <ph name="PRODUCT_OS_NAME" />의 대상 기간은 오전 2시에서 4시 사이가 됩니다. <ph name="PRODUCT_NAME" />의 기본 대상 기간은 종일입니다. 즉, 알림 기간의 종료 시점이 지연되지 않습니다.
+
+      경고: 이 정책을 설정하면 소프트웨어 업데이트 적용이 늦어질 수 있습니다.</translation>
 <translation id="6208896993204286313"><ph name="PRODUCT_NAME" /> 정책 정보 보고</translation>
 <translation id="6210259502936598222">OS 및 <ph name="PRODUCT_NAME" /> 버전 정보 보고</translation>
 <translation id="6212868225782276239">차단 목록에 있는 프린터를 제외한 모든 프린터가 표시됨</translation>
@@ -4062,6 +4097,7 @@
 <translation id="6464074037294098618">주소 자동 완성 사용</translation>
 <translation id="6467613372414922590">관리자 권한 없이 설치된 사용자 수준의 기본 메시지 호스트를 허용합니다.</translation>
 <translation id="6473623140202114570">세이프 브라우징에서 경고를 표시하지 않는 도메인의 목록을 설정합니다.</translation>
+<translation id="647645276885673708"><ph name="LACROS_NAME" />를 사용 설정하고 기본 브라우저로 지정</translation>
 <translation id="647698599569353771">Nearby Share를 사용 설정할 수 있도록 허용</translation>
 <translation id="6478258366184919502">로그인 및 화면 원점</translation>
 <translation id="6478261301433199402">정책을 설정하면 사용자를 위한 <ph name="PLUGIN_VM_NAME" /> 이미지가 지정됩니다. 이 정책을 JSON 형식 스트링으로 지정하세요. 이때 <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> 필드에는 이미지 다운로드 위치를 명시하고 <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> 필드에는 SHA-256 해시를 지정하여 다운로드 파일의 무결성을 확인하는 데 사용되도록 합니다.</translation>
@@ -4850,6 +4886,7 @@
 <translation id="7340034977315324840">기기 활동 시간 보고</translation>
 <translation id="7343004974628511824">DNS 가로채기 검사 진행</translation>
 <translation id="7343497214039883642">기기에 적용되는 엔터프라이즈 프린터 설정 파일</translation>
+<translation id="7358359585412734876"><ph name="LACROS_NAME" /> 사용</translation>
 <translation id="7358744897221281073">이 설정을 켜면 이미 휴대전화 허브 사용을 선택한 사용자가 작업을 이어서 할 수 있게 됩니다(예: 휴대전화에서 보던 웹페이지를 Chrome OS에서 보기).
 
       설정을 끄면 사용자가 이 기능을 사용할 수 없습니다. PhoneHubAllowed 정책을 꺼도 사용자가 이 기능을 사용할 수 없습니다.
@@ -5360,6 +5397,7 @@
 
       정책을 사용 중지하거나 설정하지 않으면 등록된 기기에서 저장소 통계를 보고하지 않습니다.</translation>
 <translation id="8044493735196713914">기기 부팅 모드 보고</translation>
+<translation id="80453040817068401"><ph name="LACROS_NAME" /> 브라우저를 사용 가능하도록 설정</translation>
 <translation id="8049769137921877885">이 정책은 정책 데이터 및 정책을 가져오는 시간의 보고 여부를 제어합니다.
 
       <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> 정책이 설정되지 않거나 사용 중지되면 정책이 무시됩니다.
@@ -5988,6 +6026,7 @@
 <translation id="8892286064305622118"><ph name="PLUGIN_VM_NAME" />에 필요한 디스크 여유 공간</translation>
 <translation id="8892783613915541293">기기가 유휴 상태에서 AC 전원으로 구동되는 경우 취할 지연과 작업입니다.</translation>
 <translation id="8897796778265450949">SAML 없이 GAIA를 통해 인증된 사용자가 오프라인으로 로그인할 수 있는 기간 제한</translation>
+<translation id="889814528399907891">사용자가 <ph name="LACROS_NAME" />를 사용 설정하고 기본 브라우저로 지정하도록 허용</translation>
 <translation id="8903283771634816230">정책을 사용 설정하면 <ph name="PRODUCT_NAME" />에서 OS 기본 프린터를 인쇄 미리보기의 기본 대상으로 사용합니다.
 
       정책을 사용 중지하거나 설정하지 않으면 <ph name="PRODUCT_NAME" />에서 가장 최근에 사용한 프린터를 인쇄 미리보기의 기본 대상으로 사용합니다.</translation>
@@ -6133,6 +6172,7 @@
       정책을 사용 중지하면 등록된 기기에서 활동 시간을 기록하거나 보고하지 않습니다.</translation>
 <translation id="9077227880520270584">기기 로컬 계정 자동 로그인 타이머</translation>
 <translation id="9084985621503260744">동영상 활동이 전원 관리에 영향을 미치는지 여부 지정</translation>
+<translation id="9088191250434406767">정책을 설정하지 않거나 사용 설정하면 사용자가 <ph name="GOOGLE_LENS_PRODUCT_NAME" />를 통해 카메라를 사용하여 검색할 수 있습니다. 정책을 사용 중지하면 <ph name="GOOGLE_LENS_PRODUCT_NAME" /> 카메라 지원 검색 기능이 제공될 때도 검색창에 <ph name="GOOGLE_LENS_PRODUCT_NAME" /> 버튼이 표시되지 않습니다.</translation>
 <translation id="9088433379343318874">관리 대상 사용자 콘텐츠 제공업체 사용</translation>
 <translation id="9088444059179765143">자동 시간대 감지 방법 설정</translation>
 <translation id="9095999573959728902">이 설정을 켜면 사용자가 Chrome OS 기기에서 휴대전화와 상호작용하게 해 주는 기능인 휴대전화 허브를 사용하도록 선택할 수 있습니다.
@@ -6211,6 +6251,12 @@
 
       재실행 및 재시작 후에는 사용자의 세션이 복원됩니다.</translation>
 <translation id="9160028464653564229">모든 사이트에서 Serial API를 통한 직렬 포트 액세스를 요청하도록 허용 안함</translation>
+<translation id="916461878260574432">OS 업데이트 페이로드에 P2P를 사용할지 지정합니다.
+      True로 설정하면 기기는 LAN에서 업데이트 페이로드를 공유한 후 소비하려고 시도하여 인터넷 대역폭 사용량 및 혼잡을 줄일 수 있습니다. LAN에서 업데이트 페이로드를 사용할 수 없는 경우 기기가 업데이트 서버로부터 다운로드하는 설정으로 대체됩니다.
+      False로 설정하면 P2P가 사용되지 않습니다.
+
+      참고: 소비자 기기와 기업용 기기의 기본 동작은 서로 다릅니다. 관리 기기에서는 P2P가 사용 설정되지만 관리 기기가 아닌 기기에서는 사용 중지됩니다.</translation>
+<translation id="9164656078867027374"><ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />에 액세스할 수 있는 도메인 정의</translation>
 <translation id="9167719789236691545"><ph name="PRODUCT_OS_NAME" /> 파일 앱에서 드라이브 사용 중지</translation>
 <translation id="9187743794267626640">외부 저장소 마운트 사용 중지</translation>
 <translation id="9190456586252617675">이 정책은 어시스턴트 온보딩 환경의 모드를 제어합니다.
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index 9665135..4848372c 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -441,6 +441,17 @@
       Zie https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Gebruik van de stand zonder interface niet toestaan</translation>
 <translation id="1588240398285670601">Browserinstellingen</translation>
+<translation id="1590071725627230651">Deze instelling biedt verschillende beschikbaarheidsopties voor de <ph name="LACROS_NAME" />-browser.
+
+      Als je het beleid instelt op <ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" /> of niet instelt, kan de gebruiker <ph name="LACROS_NAME" /> aanzetten en instellen als primaire browser. <ph name="LACROS_NAME" /> kan nog steeds niet toegestaan worden met het beleid <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      Als je het beleid instelt op <ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />, kan de gebruiker <ph name="LACROS_NAME" /> niet gebruiken. Het beleid <ph name="LACROS_ALLOWED_POLICY_NAME" /> wordt genegeerd.
+
+      Als je het beleid instelt op <ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />, wordt <ph name="LACROS_NAME" /> aangezet maar niet ingesteld als primaire browser. Het beleid <ph name="LACROS_ALLOWED_POLICY_NAME" /> wordt genegeerd.
+
+      Als je het beleid instelt op <ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />, wordt <ph name="LACROS_NAME" /> aangezet en ingesteld als primaire browser. Het beleid <ph name="LACROS_ALLOWED_POLICY_NAME" /> wordt genegeerd.
+
+      In de toekomst kun je van <ph name="LACROS_NAME" /> de enige beschikbare browser in <ph name="PRODUCT_OS_NAME" /> maken met de waarde <ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" />.</translation>
 <translation id="1599424828227887013">Site-isolatie aanzetten voor opgegeven oorsprongen op Android-apparaten</translation>
 <translation id="159946228300522107">Als je het beleid instelt op True, maximaliseert Chrome het eerste venster tijdens de eerste uitvoering.
 
@@ -680,6 +691,7 @@
 <translation id="1920772397574801429">Als je het beleid instelt, wordt het accounttype opgegeven van de accounts die worden geleverd door de Android-verificatie-app die <ph name="HTTP_NEGOTIATE" />-verificatie ondersteunt (zoals Kerberos-verificatie). Deze informatie is beschikbaar via de leverancier van de verificatie-app. Ga naar The Chromium Projects (https://goo.gl/hajyfN) voor meer informatie.
 
       Als je het beleid niet instelt, wordt <ph name="HTTP_NEGOTIATE" />-verificatie uitgezet op Android.</translation>
+<translation id="1925529914257504750">Automatisch updaten van P2P aangezet</translation>
 <translation id="1930127294345368978">Maximum aantal vellen dat mag worden gebruikt voor één afdruktaak</translation>
 <translation id="193259052151668190">Witte lijst met USB-apparaten die kunnen worden ontkoppeld</translation>
 <translation id="1933378685401357864">Achtergrondafbeelding</translation>
@@ -755,6 +767,7 @@
           Als dit beleid niet is ingesteld, wordt de functie beheerd door de eigen interne logica die handmatig kan worden geconfigureerd door gebruikers.
 
           Houd er rekening mee dat het beleid wordt toegepast per weergaveprogrammaproces en dat de meest recente waarde van de beleidsinstelling van kracht is als een weergaveprogrammaproces wordt gestart. Volledig opnieuw opstarten is vereist om ervoor te zorgen dat op alle geladen tabbladen een consistente beleidsinstelling wordt toegepast. Dit heeft geen negatieve invloed op processen die met andere waarden van dit beleid worden uitgevoerd.</translation>
+<translation id="2029985289397958781">Door de camera ondersteund zoeken via <ph name="GOOGLE_LENS_PRODUCT_NAME" /> uitzetten voor zakelijke gebruikers</translation>
 <translation id="2030905906517501646">Zoekwoord voor standaardzoekprovider</translation>
 <translation id="203096360153626918">Dit beleid is niet van invloed op de Android-apps. Deze hebben toegang tot de modus voor volledig scherm, zelfs als dit beleid is ingesteld op <ph name="FALSE" /> (Onwaar).</translation>
 <translation id="2032848225007871645">Met dit beleid bepaal je welke standen voor snel ontgrendelen kunnen worden gebruikt om het vergrendelscherm te ontgrendelen.
@@ -943,6 +956,13 @@
       Dit beleid mag niet worden gebruikt voor apparaten die openbaar worden gebruikt.
 
       Als dit beleid is ingesteld op True of niet is ingesteld, wordt de privacywaarschuwing in de melding voor automatisch starten van beheerde gastsessies vastgezet totdat de gebruiker deze sluit.</translation>
+<translation id="2281878365805647176">Als je dit beleid instelt, wordt de beperkte inlogfunctie van Chrome in <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> aangezet. Gebruikers kunnen deze instelling niet wijzigen. Gebruikers kunnen Google-tools alleen openen met accounts van de opgegeven domeinen (voeg consumer_accounts toe aan de lijst met domeinen om Gmail- en GoogleMail-accounts toe te staan). Deze instelling voorkomt dat gebruikers inloggen op een secundair account en dit toevoegen aan een beheerd apparaat waarvoor Google-verificatie vereist is, als dit account niet behoort tot één van de expliciet toegestane domeinen.
+
+      Als je deze instelling leeg laat of niet instelt, kunnen gebruikers <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> openen met elk account.
+
+      Gebruikers kunnen deze instelling niet wijzigen of overschrijven.
+
+      Opmerking: Door dit beleid wordt de kop 'X-GoogApps-Allowed-Domains' toegevoegd aan alle HTTP- en HTTPS-verzoeken voor alle google.com-domeinen, zoals beschreven in https://support.google.com/a/answer/1668854.</translation>
 <translation id="2289265947759479962">Met dit beleid wordt bepaald of er versiegegevens moeten worden gerapporteerd, zoals OS-versie, OS-platform, OS-architectuur, <ph name="PRODUCT_NAME" />-versie en <ph name="PRODUCT_NAME" />-kanaal.
 
       Als het beleid <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> niet is ingesteld of niet is toegepast, wordt dit beleid genegeerd.
@@ -1006,6 +1026,7 @@
 
       Als dit beleid wordt ingesteld op False of niet wordt ingesteld, voert het toetsenbord standaard mediatoetsopdrachten uit. De zoektoets moet worden ingedrukt om ze te wijzigen in functietoetsen.</translation>
 <translation id="2358176879566587521">Dit beleid is verwijderd. Het werkt niet met deze versie van <ph name="PRODUCT_NAME" />. Ga naar https://support.google.com/chrome/a/answer/7643500 voor meer informatie</translation>
+<translation id="2362469626417133796">Tijdvenster voor herstarten</translation>
 <translation id="2364639863953745682">Modus voor introductie van de Assistent</translation>
 <translation id="2384233438419344179">Als je het beleid toepast, kunnen webpagina-elementen die niet afkomstig zijn van het domein dat in de adresbalk van de browser staat, geen cookies instellen. Als je het beleid niet toepast, kunnen die elementen cookies instellen en kunnen gebruikers deze instelling niet wijzigen.
 
@@ -1080,6 +1101,7 @@
 <translation id="2433516903565257847">Het percentage van de apparaten dat na het opgegeven aantal dagen moet worden geüpdatet.</translation>
 <translation id="2435052056904485763">Toelatingslijst voor Kerberos-delegatieserver</translation>
 <translation id="2435232509335686514">Configuratiebeleid voor de verwerking van gedownloade bestanden door de <ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /></translation>
+<translation id="2436302465999055995">Van <ph name="LACROS_NAME" /> de enige beschikbare browser maken (nog niet geïmplementeerd)</translation>
 <translation id="2448315169529769573">Als je het beleid toepast, rapporteert <ph name="PRODUCT_OS_NAME" /> gebruiksstatistieken en diagnostische gegevens, waaronder crashrapporten, aan Google. Als je het beleid niet toepast, worden er geen statistieken en diagnostische gegevens gerapporteerd.
 
        Als je het beleid niet instelt, worden er geen statistieken en diagnostische gegevens gerapporteerd voor onbeheerde apparaten, maar wel voor beheerde apparaten.</translation>
@@ -1224,6 +1246,7 @@
 
       Als het beleid niet wordt ingesteld, wordt <ph name="PRINTERS_ALLOW_ALL" /> toegepast.</translation>
 <translation id="2586117300379904732">Wake locks voor stroombeheer toestaan</translation>
+<translation id="2586231026319371211">Tijd geïnterpreteerd als lokale tijd in 24-uursnotatie op wandklok.</translation>
 <translation id="2587719089023392205"><ph name="PRODUCT_NAME" /> instellen als standaardbrowser</translation>
 <translation id="2588252329503406673">Met dit beleid kun je instellen hoe <ph name="PRODUCT_OS_NAME" /> zich gedraagt wanneer er enige tijd geen gebruikersactiviteit is terwijl het inlogscherm wordt weergegeven. Het beleid beheert meerdere instellingen. Voor de afzonderlijke semantiek en waardebereiken bekijk je de bijbehorende beleidsregels die stroombeheer in een sessie beheren.
 
@@ -1241,6 +1264,7 @@
 <translation id="2593762551209145088">Safe Browsing is nooit actief.</translation>
 <translation id="26023406105317310">Kerberos-accounts configureren</translation>
 <translation id="2604182581880595781">Beleid met betrekking tot Network File Shares configureren.</translation>
+<translation id="2608535066974278204">Periode (minuten) die de duur van het tijdvenster voor herstarten aangeeft.</translation>
 <translation id="2615240493030733717">Informatie over tijdzone rapporteren</translation>
 <translation id="2619966380594000538">Als je dit beleid toepast of niet instelt, worden beveiligingswaarschuwingen weergegeven als Chrome wordt gestart met bepaalde mogelijk schadelijke opdrachtregelmarkeringen.
 
@@ -1861,6 +1885,7 @@
 <translation id="3415954062311826850">Dit beleid wordt niet ondersteund binnen ARC.</translation>
 <translation id="34160070798637152">Beheert apparaatbrede netwerkconfiguratie.</translation>
 <translation id="3417130629744653218">Websites toestaan beschikbare betaalmethoden op te vragen</translation>
+<translation id="3417391585519621050">Door de camera ondersteund zoeken via <ph name="GOOGLE_LENS_PRODUCT_NAME" /> aanzetten voor zakelijke gebruikers</translation>
 <translation id="3417418267404583991">Als dit beleid is ingesteld op 'true' of niet is geconfigureerd, staat <ph name="PRODUCT_OS_NAME" /> gasten toe zich aan te melden. Gastensessies zijn anonieme sessies waar geen wachtwoord voor hoeft te worden ingevoerd.
 
       Als dit beleid is ingesteld op 'false', staat <ph name="PRODUCT_OS_NAME" /> niet toe dat er gastensessies worden gestart.</translation>
@@ -3348,6 +3373,7 @@
       Wanneer de waarde van dit beleid is ingesteld en niet 0 is, wordt de momenteel ingelogde demogebruiker automatisch uitgelogd nadat een inactiviteitsperiode met de opgegeven duur is verstreken.
 
       De beleidswaarde moet worden opgegeven in milliseconden.</translation>
+<translation id="55057839818162162">Door de camera ondersteund zoeken via <ph name="GOOGLE_LENS_PRODUCT_NAME" /> toestaan</translation>
 <translation id="5508307164752647432">Kerberos-functionaliteit aanzetten</translation>
 <translation id="5511702823008968136">Bookmarkbalk aanzetten</translation>
 <translation id="5512418063782665071">URL van homepage</translation>
@@ -3364,6 +3390,7 @@
 <translation id="5526184558582921522">Query's naar de Quirks Server en potentiële downloads van hardwarespecifieke configuratiebestanden toestaan</translation>
 <translation id="5526701598901867718">Alle (onbeveiligd)</translation>
 <translation id="5530347722229944744">Potentieel gevaarlijke downloads blokkeren</translation>
+<translation id="5535256585099022933">Het tijdsinterval voor herstarten instellen</translation>
 <translation id="5535973522252703021">Witte lijst voor Kerberos-delegatieserver</translation>
 <translation id="553806128266843748">Een Booleaanse markering die aangeeft of throttling aanstaat.</translation>
 <translation id="5540885720415375851">Toestaan dat lokale apparaten worden gevonden</translation>
@@ -3648,6 +3675,7 @@
 <translation id="5890063326284543943">Gebruik van de Serial API beheren</translation>
 <translation id="5897913798715600338">Batterij snel opladen.</translation>
 <translation id="5898486742390981550">Wanneer meerdere gebruikers zijn ingelogd, kunnen Android-apps alleen worden gebruikt door de primaire gebruiker.</translation>
+<translation id="5899751601113377553">Voorkomen dat gebruikers <ph name="LACROS_NAME" /> gebruiken</translation>
 <translation id="5901427587865226597">Alleen dubbelzijdig afdrukken</translation>
 <translation id="5905473632148429217">Online OCSP/CRL-controles aanzetten</translation>
 <translation id="5907283448020542268">Tenzij het beleid <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> is ingesteld op <ph name="BLOCK_GEOLOCATION_SETTING" />, zorgt het instellen van <ph name="GLS_ENABLED" /> bij de eerste configuratie ervoor dat Google-locatieservices wordt aangezet. Locatieservices blijft uit tijdens de configuratie als het beleid wordt ingesteld op <ph name="GLS_DISABLED" /> of niet wordt ingesteld.
@@ -3817,6 +3845,13 @@
 
       Als je dit beleid niet instelt, kunnen gebruikers het thema voor de browser naar eigen inzicht instellen.</translation>
 <translation id="6195802366906945965">Bepaalt of de ingebouwde certificaatverificatie wordt gebruikt om servercertificaten te verifiëren</translation>
+<translation id="6198375221792846439">Geef een beoogd tijdvenster op voor het einde van de meldingsperiode voor herstarten.
+
+      Op basis van de instellingen voor het beleid <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> en <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" /> krijgen gebruikers een melding als de browser moet worden herstart of het apparaat opnieuw moet worden opgestart. Browsers en apparaten worden gedwongen opnieuw opgestart aan het einde van de meldingsperiode als het beleid <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> is ingesteld op Vereist. Dit beleid <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> kan worden gebruikt om het einde van de meldingsperiode uit te stellen zodat dit binnen een specifiek tijdvenster valt.
+
+      Als je dit beleid niet instelt, is het standaard beoogde tijdvenster voor <ph name="PRODUCT_OS_NAME" /> tussen 02:00 en 04:00 uur. Het standaard beoogde tijdvenster voor <ph name="PRODUCT_NAME" /> is de hele dag (dat wil zeggen, het einde van de meldingsperiode wordt nooit uitgesteld).
+
+      Waarschuwing: Als je dit beleid instelt, kan de toepassing van software-updates worden vertraagd.</translation>
 <translation id="6208896993204286313">Beleidsgegevens van <ph name="PRODUCT_NAME" /> rapporteren</translation>
 <translation id="6210259502936598222">OS- en <ph name="PRODUCT_NAME" />-versiegegevens rapporteren</translation>
 <translation id="6212868225782276239">Alle printers worden getoond, behalve printers op de zwarte lijst.</translation>
@@ -3990,6 +4025,7 @@
 <translation id="6464074037294098618">Automatisch invullen voor adressen aanzetten</translation>
 <translation id="6467613372414922590">Hosts voor native berichten op gebruikersniveau toestaan (geïnstalleerd zonder beheerdersrechten)</translation>
 <translation id="6473623140202114570">Configureer de lijst met domeinen waar Safe Browsing geen waarschuwingen activeert.</translation>
+<translation id="647645276885673708"><ph name="LACROS_NAME" /> aanzetten en instellen als primaire browser</translation>
 <translation id="647698599569353771">Sta toe dat Dichtbij delen wordt aangezet.</translation>
 <translation id="6478258366184919502">Herkomsten van login en scherm</translation>
 <translation id="6478261301433199402">Als je het beleid instelt, wordt de <ph name="PLUGIN_VM_NAME" />-image voor een gebruiker opgegeven. Geef dit beleid op als een tekenreeks met json-indeling, waarbij <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> aangeeft waar de image kan worden gedownload en <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> als een SHA-256-hash die wordt gebruikt om de integriteit van de download te verifiëren.</translation>
@@ -4775,6 +4811,7 @@
 <translation id="7340034977315324840">Tijdsduur van apparaatgebruik melden</translation>
 <translation id="7343004974628511824">Controles voor DNS-onderschepping uitvoeren</translation>
 <translation id="7343497214039883642">Configuratiebestand voor zakelijke printers voor apparaten</translation>
+<translation id="7358359585412734876"><ph name="LACROS_NAME" /> aanzetten</translation>
 <translation id="7358744897221281073">Als je deze instelling aanzet, kunnen gebruikers die Phone Hub al hebben toegestaan taken voortzetten in Chrome OS, zoals de webpagina's van hun telefoon bekijken.
 
       Als je deze instelling uitzet, mogen gebruikers deze functie niet gebruiken. Als het beleid PhoneHubAllowed uitstaat, mogen gebruikers deze functie ook niet gebruiken.
@@ -5283,6 +5320,7 @@
 
       Als je het beleid niet toepast of niet instelt, rapporteren ingeschreven apparaten geen opslagstatistieken.</translation>
 <translation id="8044493735196713914">Opstartmodus van apparaat melden</translation>
+<translation id="80453040817068401">De <ph name="LACROS_NAME" />-browser beschikbaar maken</translation>
 <translation id="8049769137921877885">Met dit beleid wordt bepaald of beleidsgegevens en het tijdstip van de beleidsfetch worden gerapporteerd.
 
       Als het beleid <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> niet is ingesteld of niet is toegepast, wordt dit beleid genegeerd.
@@ -5903,6 +5941,7 @@
 <translation id="8892286064305622118">Vrije schijfruimte vereist voor <ph name="PLUGIN_VM_NAME" /></translation>
 <translation id="8892783613915541293">Vertragingen en acties die moeten worden ondernomen als het apparaat inactief is en op netvoeding werkt</translation>
 <translation id="8897796778265450949">Beperk de tijd dat een gebruiker die via GAIA is geverifieerd zonder SAML, offline kan inloggen.</translation>
+<translation id="889814528399907891">Toestaan dat gebruikers <ph name="LACROS_NAME" /> aanzetten en instellen als primaire browser</translation>
 <translation id="8903283771634816230">Als je dit beleid toepast, gebruikt <ph name="PRODUCT_NAME" /> de standaardprinter van het OS als standaardbestemming voor het afdrukvoorbeeld.
 
       Als je het beleid niet toepast of niet instelt, gebruikt <ph name="PRODUCT_NAME" /> de laatst gebruikte printer als standaardbestemming voor het afdrukvoorbeeld.</translation>
@@ -6045,6 +6084,7 @@
       Als je het beleid niet toepast, registreren of rapporteren ingeschreven apparaten geen tijden van activiteit.</translation>
 <translation id="9077227880520270584">Timer voor automatisch inloggen op lokaal account op apparaat</translation>
 <translation id="9084985621503260744">Specificeer of videoactiviteit invloed heeft op stroombeheer</translation>
+<translation id="9088191250434406767">Als je het beleid toepast of niet instelt, kunnen gebruikers zoeken met hun camera's via <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Als je het beleid niet toepast, zien gebruikers de knop <ph name="GOOGLE_LENS_PRODUCT_NAME" /> niet in het zoekvak als door de camera ondersteund zoeken via <ph name="GOOGLE_LENS_PRODUCT_NAME" /> wordt ondersteund.</translation>
 <translation id="9088433379343318874">Contentprovider voor gebruiker met beperkte rechten gebruiken</translation>
 <translation id="9088444059179765143">De methode voor automatische tijdzonedetectie configureren</translation>
 <translation id="9095999573959728902">Als je deze instelling aanzet, mogen gebruikers toestemming geven voor Phone Hub. Hiermee kunnen ze interactie met hun telefoon hebben op een Chrome OS-apparaat.
@@ -6123,6 +6163,12 @@
 
       De sessie van de gebruiker wordt hersteld zodra opnieuw is opgestart.</translation>
 <translation id="9160028464653564229">Geen sites toestemming geven om toegang tot seriële poorten te vragen via de Serial API</translation>
+<translation id="916461878260574432">Geeft aan of P2P wordt gebruikt voor OS-updatepayloads.
+      Als je dit beleid instelt op True, delen apparaten updatepayloads via het LAN en proberen ze deze te verbruiken. Hierdoor kunnen het bandbreedtegebruik en de overbelasting van internet misschien worden beperkt. Als de updatepayload niet beschikbaar is via het LAN, gaat het apparaat over tot downloaden via een updateserver.
+      Als je dit beleid instelt op False, wordt P2P niet gebruikt.
+
+      OPMERKING: Het standaardgedrag voor consumenten- en zakelijke apparaten verschilt. P2P staat aan op beheerde apparaten maar niet op niet-beheerde apparaten.</translation>
+<translation id="9164656078867027374">Domeinen definiëren die toegang mogen hebben tot <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /></translation>
 <translation id="9167719789236691545">Drive in de app Bestanden van <ph name="PRODUCT_OS_NAME" /> uitzetten</translation>
 <translation id="9187743794267626640">Koppeling van externe opslag uitzetten</translation>
 <translation id="9190456586252617675">Met dit beleid wordt de modus voor introductie van de Assistent beheerd.
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb
index eeb6d201..2206ae1a 100644
--- a/components/policy/resources/policy_templates_ru.xtb
+++ b/components/policy/resources/policy_templates_ru.xtb
@@ -438,6 +438,17 @@
       Подробную информацию можно прочитать по ссылке https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Запретить использование режима консольного браузера</translation>
 <translation id="1588240398285670601">Настройки браузера</translation>
+<translation id="1590071725627230651">Эта настройка предоставляет несколько вариантов доступности браузера <ph name="LACROS_NAME" />.
+
+      Если правило не настроено или задано значение <ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" />, пользователь может включить браузер <ph name="LACROS_NAME" /> и сделать его основным. При необходимости браузер <ph name="LACROS_NAME" /> можно отключить с помощью правила <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      Если для правила задано значение <ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />, использовать браузер <ph name="LACROS_NAME" /> невозможно. Правило <ph name="LACROS_ALLOWED_POLICY_NAME" /> игнорируется.
+
+      Если для правила выбрано значение <ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />, то браузер <ph name="LACROS_NAME" /> включен, но не является основным. Правило <ph name="LACROS_ALLOWED_POLICY_NAME" /> игнорируется.
+
+      Если для правила выбрано значение <ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />, то браузер <ph name="LACROS_NAME" /> включен и является основным. Правило <ph name="LACROS_ALLOWED_POLICY_NAME" /> игнорируется.
+
+      В дальнейшем у пользователей появится возможность сделать браузер <ph name="LACROS_NAME" /> единственно доступным в <ph name="PRODUCT_OS_NAME" />, установив значение <ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" />.</translation>
 <translation id="1599424828227887013">Включить изоляцию для определенных сайтов на устройствах Android</translation>
 <translation id="159946228300522107">Если для правила задано значение True, Chrome будет всегда разворачивать первое окно при начальном запуске.
 
@@ -681,6 +692,7 @@
 <translation id="1920772397574801429">Правило определяет тип аккаунтов, указанный в аутентификационном приложении Android, поддерживающем аутентификацию <ph name="HTTP_NEGOTIATE" /> (например, Kerberos). Эти данные вы получите у поставщика аутентификационного приложения. Подробную информацию можно найти здесь: https://goo.gl/hajyfN.
 
           Если правило не настроено, аутентификация <ph name="HTTP_NEGOTIATE" /> на Android отключена.</translation>
+<translation id="1925529914257504750">Включение автоматического обновления в одноранговых сетях P2P</translation>
 <translation id="1930127294345368978">Максимальное число листов для одного задания печати</translation>
 <translation id="193259052151668190">Белый список отсоединяемых USB-устройств</translation>
 <translation id="1933378685401357864">Обои для рабочего стола</translation>
@@ -757,6 +769,7 @@
 
           Обратите внимание, что правило применяется к каждому процессу обработки и при запуске такого процесса действует самое последнее значение правила. Чтобы для всех загруженных вкладок действовало одно и то же значение, необходимо перезапустить браузер. Смена значения безопасна для процесса обработки.
           </translation>
+<translation id="2029985289397958781">Отключить в сервисе "<ph name="GOOGLE_LENS_PRODUCT_NAME" />" поиск с помощью камеры для корпоративных пользователей</translation>
 <translation id="2030905906517501646">Ключевое слово для поисковой системы по умолчанию</translation>
 <translation id="203096360153626918">Правило не влияет на приложения Android. Они смогут переходить в полноэкранный режим, даже если для правила задано значение <ph name="FALSE" />.</translation>
 <translation id="2032848225007871645">Правило позволяет настроить способы быстрой разблокировки экрана на устройстве.
@@ -946,6 +959,13 @@
       Это правило не подходит для устройств обычных пользователей.
 
       Если правило не настроено или для него задано значение True, предупреждение о конфиденциальности в управляемом гостевом сеансе с автоматическим запуском не исчезнет, пока пользователь не закроет его.</translation>
+<translation id="2281878365805647176">Если правило настроено, будет включена функция Chrome, ограничивающая вход в сервис <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />, и пользователи не смогут изменять эту настройку. Пользователи смогут получить доступ к приложениям Google только с помощью аккаунтов в определенных доменах (чтобы разрешить использование аккаунтов Gmail или Googlemail, добавьте consumer_accounts в список доменов). Если аккаунт не связан с доменом из списка разрешенных, эта настройка будет запрещать пользователю входить в аккаунт, а также добавлять дополнительный аккаунт на управляемом устройстве с обязательной аутентификацией Google.
+
+      Если правило не настроено, пользователь может получить доступ к сервису <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> с помощью любого аккаунта.
+
+      Пользователи не могут изменить или переопределить эту настройку.
+
+      Примечание. Это правило добавляет заголовок X-GoogApps-Allowed-Domains к запросам HTTP и HTTPS во всех доменах google.com. Подробную информацию можно найти здесь: https://support.google.com/a/answer/1668854.</translation>
 <translation id="2289265947759479962">Это правило определяет, сообщать ли информацию о версиях, например версию ОС, платформу и архитектуру ОС, а также версию <ph name="PRODUCT_NAME" /> и версию обновления <ph name="PRODUCT_NAME" />.
 
       Если правило <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> отключено или не настроено, данное правило игнорируется.
@@ -1010,6 +1030,7 @@
 
       Если правило не настроено или для него задано значение False, клавиши будут использоваться для управления мультимедиа. При нажатии клавиши поиска они будут выполнять роль функциональных.</translation>
 <translation id="2358176879566587521">Это правило удалено. Оно несовместимо с данной версией<ph name="PRODUCT_NAME" />. Подробная информация доступна на странице https://support.google.com/chrome/a/answer/7643500.</translation>
+<translation id="2362469626417133796">Временной интервал перезапуска</translation>
 <translation id="2364639863953745682">Режим знакомства с Ассистентом</translation>
 <translation id="2384233438419344179">Если правило включено, элементам веб-страниц из других доменов (то есть любых доменов, кроме указанного в адресной строке) запрещается сохранять файлы cookie. Если правило отключено, таким элементам разрешено сохранять файлы cookie, а пользователи не могут менять эту настройку.
 
@@ -1084,6 +1105,7 @@
 <translation id="2433516903565257847">Процент устройств, которые необходимо обновить по истечении указанного количества дней.</translation>
 <translation id="2435052056904485763">Список разрешенных серверов для делегирования прав по протоколу Kerberos</translation>
 <translation id="2435232509335686514">Правило настройки для обработки скачанных файлов коннектором <ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /></translation>
+<translation id="2436302465999055995">Сделать браузер <ph name="LACROS_NAME" /> единственно доступным (ещё не реализовано)</translation>
 <translation id="2448315169529769573">Если правило включено, из <ph name="PRODUCT_OS_NAME" /> в Google отправляется статистика использования и диагностическая информация, в том числе отчеты о сбоях. Если правило отключено, эти данные не отправляются.
 
        Если правило не настроено, данные отправляются только с устройств, которыми управляют администраторы.</translation>
@@ -1229,6 +1251,7 @@
 
       Если правило не настроено, используется параметр <ph name="PRINTERS_ALLOW_ALL" />.</translation>
 <translation id="2586117300379904732">Разрешить использование запретов блокировки через API расширения управления питанием</translation>
+<translation id="2586231026319371211">Указывается местное время в 24-часовом формате.</translation>
 <translation id="2587719089023392205">Сделать <ph name="PRODUCT_NAME" /> браузером по умолчанию</translation>
 <translation id="2588252329503406673">Это правило позволяет настроить поведение <ph name="PRODUCT_OS_NAME" />, когда на устройстве появляется окно входа и пользователь какое-то время бездействует. Это правило можно применить сразу к нескольким настройкам. Диапазоны значений для каждой из них задаются с помощью отдельных правил управления питанием во время сеанса.
 
@@ -1246,6 +1269,7 @@
 <translation id="2593762551209145088">Безопасный просмотр всегда отключен</translation>
 <translation id="26023406105317310">Настроить аккаунты Kerberos</translation>
 <translation id="2604182581880595781">Настраивает правила, связанные с функцией совместного доступа к файлам в сети.</translation>
+<translation id="2608535066974278204">Установленный временной интервал (в минутах) для перезапуска.</translation>
 <translation id="2615240493030733717">Передача информации о часовом поясе</translation>
 <translation id="2619966380594000538">Если правило включено или не настроено, то при запуске Chrome с использованием потенциально опасных параметров командной строки будут появляться предупреждения системы безопасности.
 
@@ -1870,6 +1894,7 @@
 <translation id="3415954062311826850">Это правило не поддерживается при использовании технологии ARC.</translation>
 <translation id="34160070798637152">Определяет конфигурацию сети для устройства.</translation>
 <translation id="3417130629744653218">Разрешить сайтам запрашивать доступные способы оплаты</translation>
+<translation id="3417391585519621050">Включить в сервисе "<ph name="GOOGLE_LENS_PRODUCT_NAME" />" поиск с помощью камеры для корпоративных пользователей</translation>
 <translation id="3417418267404583991">Если эти правила заданы (по умолчанию), в <ph name="PRODUCT_OS_NAME" /> будет разрешен вход в учетной записи гостя. Гостевой сеанс полностью анонимен и не требует ввода пароля.
 
       Если эти правила не установлены, в <ph name="PRODUCT_OS_NAME" /> будет невозможно открыть гостевой сеанс.</translation>
@@ -3354,6 +3379,7 @@
       Если его значение не равно 0, пользователь, вошедший в демо-режиме, автоматически выйдет из системы после заданного периода бездействия.
 
       Значение устанавливается в миллисекундах.</translation>
+<translation id="55057839818162162">Разрешить в сервисе "<ph name="GOOGLE_LENS_PRODUCT_NAME" />" поиск с помощью камеры</translation>
 <translation id="5508307164752647432">Включить протокол Kerberos</translation>
 <translation id="5511702823008968136">Включить панель закладок</translation>
 <translation id="5512418063782665071">URL главной страницы</translation>
@@ -3370,6 +3396,7 @@
 <translation id="5526184558582921522">Разрешить отправку запросов на Quirks Server и скачивание файлов конфигурации для аппаратного обеспечения</translation>
 <translation id="5526701598901867718">Все (небезопасно)</translation>
 <translation id="5530347722229944744">Блокировать потенциально опасные скачивания</translation>
+<translation id="5535256585099022933">Установить временной интервал для перезапуска</translation>
 <translation id="5535973522252703021">Белый список серверов Kerberos для передачи прав</translation>
 <translation id="553806128266843748">Логический флаг, который указывает, включены ли ограничения скорости обмена данными.</translation>
 <translation id="5540885720415375851">Разрешить локальный поиск устройств</translation>
@@ -3667,6 +3694,7 @@
 <translation id="5890063326284543943">Управление использованием Serial API</translation>
 <translation id="5897913798715600338">Использовать технологию быстрой зарядки</translation>
 <translation id="5898486742390981550">Если в систему вошло несколько пользователей, приложения Android доступны только основному.</translation>
+<translation id="5899751601113377553">Заблокировать использование браузера <ph name="LACROS_NAME" /></translation>
 <translation id="5901427587865226597">Только двусторонняя печать</translation>
 <translation id="5905473632148429217">Включить проверки OCSP/CRL в режиме онлайн</translation>
 <translation id="5907283448020542268">Если задано значение <ph name="GLS_ENABLED" />, геолокация Google будет включена при первоначальной настройке (при условии, что для правила <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> не указано значение <ph name="BLOCK_GEOLOCATION_SETTING" />). Если для правила не выбран параметр или задано значение <ph name="GLS_DISABLED" />, во время настройки геолокация будет отключена.
@@ -3850,6 +3878,13 @@
 
       Если правило не настроено, пользователи могут изменить тему браузера.</translation>
 <translation id="6195802366906945965">Определяет, будет ли использоваться встроенный инструмент верификации для проверки сертификатов сервера</translation>
+<translation id="6198375221792846439">Укажите временной интервал для окончания периода уведомления о перезапуске.
+
+      Пользователи будут получать уведомление о том, что требуется перезапустить браузер или устройство, на основе настроек правила <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> и <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" />. Если для правила <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> задано значение "Требуется", то по окончании периода уведомления браузеры и устройства будут принудительно перезапущены. С помощью правила <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> можно отложить окончание периода уведомления на определенное время.
+
+      Если это правило не настроено, то временной интервал перезапуска по умолчанию для <ph name="PRODUCT_OS_NAME" /> – с 14:00 до 16:00, а для <ph name="PRODUCT_NAME" /> – весь день (то есть перезапуск не откладывается).
+
+      Предупреждение. Настройка этого правила может вызвать задержку в установке обновлений ПО.</translation>
 <translation id="6208896993204286313">Сообщать данные правил <ph name="PRODUCT_NAME" /></translation>
 <translation id="6210259502936598222">Сообщать информацию об ОС и версии <ph name="PRODUCT_NAME" /></translation>
 <translation id="6212868225782276239">Пользователи видят все принтеры, кроме тех, которые находятся в черном списке</translation>
@@ -4025,6 +4060,7 @@
 <translation id="6464074037294098618">Включить автозаполнение адресов</translation>
 <translation id="6467613372414922590">Разрешить установку хостов обмена сообщениями с оригинальными приложениями на уровне пользователей (без разрешения администратора)</translation>
 <translation id="6473623140202114570">Настроить список доменов, в которых Безопасный просмотр не будет показывать уведомления об угрозах.</translation>
+<translation id="647645276885673708">Включить браузер <ph name="LACROS_NAME" /> и сделать его основным</translation>
 <translation id="647698599569353771">Разрешить включение функции "Обмен с окружением"</translation>
 <translation id="6478258366184919502">Источники изображений экрана входа</translation>
 <translation id="6478261301433199402">Правило позволяет настроить образ <ph name="PLUGIN_VM_NAME" /> для пользователя. Чтобы настроить правило, укажите в формате JSON <ph name="URL_PLUGIN_VM_IMAGE_FIELD" />, по которому можно скачать образ на устройство, а также хеш SHA-256 в поле <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> для проверки целостности файла.</translation>
@@ -4809,6 +4845,7 @@
 <translation id="7340034977315324840">Сообщать о продолжительности работы устройства</translation>
 <translation id="7343004974628511824">Выполнять проверки на перехват DNS</translation>
 <translation id="7343497214039883642">Файл конфигурации принтеров для устройств компании</translation>
+<translation id="7358359585412734876">Включить браузер <ph name="LACROS_NAME" /></translation>
 <translation id="7358744897221281073">Если параметр задан, пользователи, у которых включена функция "Управление телефоном", смогут продолжать выполнять действия, начатые на телефоне (например, просмотр веб-страниц), в Chrome OS.
 
       Если параметр не задан, эта функция будет недоступна. Если правило PhoneHubAllowed отключено, эта функция также будет недоступна.
@@ -5313,6 +5350,7 @@
 
       Если правило отключено или не настроено, эти данные не отправляются.</translation>
 <translation id="8044493735196713914">Сообщать о режиме загрузки устройства</translation>
+<translation id="80453040817068401">Сделать браузер <ph name="LACROS_NAME" /> доступным</translation>
 <translation id="8049769137921877885">Это правило определяет, сообщать ли данные о правилах и времени их получения.
 
       Если правило <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> отключено или не настроено, данное правило игнорируется.
@@ -5937,6 +5975,7 @@
 <translation id="8892286064305622118">Требуется свободное пространство на диске для <ph name="PLUGIN_VM_NAME" /></translation>
 <translation id="8892783613915541293">Задержки и действия в случае, когда устройство находится в режиме ожидания и работает от сети.</translation>
 <translation id="8897796778265450949">Ограничение времени, на протяжении которого пользователи, выполнившие аутентификацию с помощью GAIA без SAML, могут входить в аккаунт офлайн</translation>
+<translation id="889814528399907891">Разрешить пользователям включить браузер <ph name="LACROS_NAME" /> и сделать его основным</translation>
 <translation id="8903283771634816230">Если правило включено, <ph name="PRODUCT_NAME" /> использует в режиме предварительного просмотра системный принтер по умолчанию.
 
       Если правило отключено или не настроено, <ph name="PRODUCT_NAME" /> использует в режиме предварительного просмотра последний выбранный принтер.</translation>
@@ -6082,6 +6121,7 @@
       Если правило выключено, эти устройства не собирают и не отправляют такие данные.</translation>
 <translation id="9077227880520270584">Таймер автоматического входа в локальный аккаунт</translation>
 <translation id="9084985621503260744">Определяет, влияет ли воспроизведение видео на режим энергопотребления</translation>
+<translation id="9088191250434406767">Если правило не настроено или задано значение Enabled, пользователи смогут выполнять поиск в сервисе "<ph name="GOOGLE_LENS_PRODUCT_NAME" />" с помощью камеры. Если указано значение Disabled, кнопка сервиса "<ph name="GOOGLE_LENS_PRODUCT_NAME" />" не будет отображаться в окне, даже если в сервисе "<ph name="GOOGLE_LENS_PRODUCT_NAME" />" поддерживается поиск с помощью камеры.</translation>
 <translation id="9088433379343318874">Открыть доступ к поставщику контента для контролируемых профилей</translation>
 <translation id="9088444059179765143">Определять часовой пояс автоматически</translation>
 <translation id="9095999573959728902">Если параметр задан, пользователи смогут включать функцию "Управление телефоном", которая позволяет взаимодействовать с телефоном на устройстве Chrome OS.
@@ -6153,6 +6193,12 @@
 
       После перезапуска сеанс пользователя восстанавливается.</translation>
 <translation id="9160028464653564229">Не разрешать сайтам запрашивать доступ к серийным портам через Serial API</translation>
+<translation id="916461878260574432">Определяет, будет ли использоваться одноранговая сеть P2P при обновлении операционной системы.
+      Если задано значение True, обмен данными между устройствами и обновление будут выполняться в сети LAN, что позволит сократить пропускную способность и перегрузку интернет-канала. Если в сети LAN обновление не поддерживается, устройство будет скачивать его со специального сервера.
+      Если задано значение False, одноранговая сеть не будет использоваться.
+
+      ПРИМЕЧАНИЕ. Настройка этого параметра по умолчанию для предприятий и индивидуальных пользователей отличается: на управляемых устройствах одноранговая сеть P2P будет включена, а на неуправляемых отключена.</translation>
+<translation id="9164656078867027374">Определить разрешенные домены для доступа к сервису <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /></translation>
 <translation id="9167719789236691545">Отключить Google Диск в приложении "Файлы" (<ph name="PRODUCT_OS_NAME" />)</translation>
 <translation id="9187743794267626640">Запрет подключения внешнего хранилища</translation>
 <translation id="9190456586252617675">Это правило определяет, как пользователи знакомятся с возможностями Ассистента.
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index df6e503..d109bd5 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -440,6 +440,17 @@
       https://www.chromestatus.com/feature/4664843055398912 adresine bakın.</translation>
 <translation id="1587585749332985896">Gözetimsiz Mod'un kullanımına izin verme</translation>
 <translation id="1588240398285670601">Tarayıcı Ayarları</translation>
+<translation id="1590071725627230651">Bu ayar, <ph name="LACROS_NAME" /> tarayıcısı için çeşitli kullanılabilirlik seçenekleri sunar.
+
+      Bu politika <ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" /> değerine ayarlanır veya ayarlanmadan bırakılırsa <ph name="LACROS_NAME" />, kullanıcılar tarafından etkinleştirilebilir ve birincil tarayıcı yapılabilir. <ph name="LACROS_ALLOWED_POLICY_NAME" /> politikası <ph name="LACROS_NAME" /> tarayıcısını engellemeye devam edebilir.
+
+      Politika <ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" /> değerine ayarlanırsa kullanıcılar <ph name="LACROS_NAME" /> tarayıcısını kullanamaz. <ph name="LACROS_ALLOWED_POLICY_NAME" /> politikası yoksayılır.
+
+      Politika <ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" /> değerine ayarlanırsa <ph name="LACROS_NAME" /> tarayıcısı etkinleştirilir ancak birincil tarayıcı olmaz. <ph name="LACROS_ALLOWED_POLICY_NAME" /> politikası yoksayılır.
+
+      Politika <ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" /> değerine ayarlanırsa <ph name="LACROS_NAME" /> etkinleştirilir ve birincil tarayıcı olur. <ph name="LACROS_ALLOWED_POLICY_NAME" /> politikası yoksayılır.
+
+      İleride <ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" /> değeri kullanılarak <ph name="LACROS_NAME" /> tarayıcısının <ph name="PRODUCT_OS_NAME" /> ile kullanılabilen tek tarayıcı olması sağlanabilecektir.</translation>
 <translation id="1599424828227887013">Android cihazlarda Site İzolasyonu'nu belirtilen kaynaklar için etkinleştirme</translation>
 <translation id="159946228300522107">Politikayı True (Doğru) değerine ayarlamak, Chrome'un ilk çalıştırmada birinci pencereyi büyüteceği anlamına gelir.
 
@@ -683,6 +694,7 @@
 <translation id="1920772397574801429">Politikanın ayarlanması, <ph name="HTTP_NEGOTIATE" /> kimlik doğrulamasını (örneğin, Kerberos kimlik doğrulaması) destekleyen Android kimlik doğrulama uygulamasının sağladığı hesapların türlerini belirtir. Bu bilgi kimlik doğrulama uygulamasının tedarikçisinden edinilebilir. Ayrıntılar için Chromium Projeleri'ne bakın (https://goo.gl/hajyfN)
 
       Politika ayarlanmadan bırakılırsa Android'de <ph name="HTTP_NEGOTIATE" /> kimlik doğrulaması kapanır.</translation>
+<translation id="1925529914257504750">P2P otomatik güncellemesi etkin</translation>
 <translation id="1930127294345368978">Tek bir yazdırma işi için kullanılmasına izin verilen maksimum sayfa sayısı</translation>
 <translation id="193259052151668190">Çıkarılabilir USB cihazları beyaz listesi</translation>
 <translation id="1933378685401357864">Duvar kağıdı resmi</translation>
@@ -759,6 +771,7 @@
 
           Politikanın oluşturucu işlemi başına uygulandığını ve bir oluşturucu işlemi başladığında geçerli olan politika ayarının en son değerinin kullanıldığını unutmayın. Tüm yüklenen sekmelerin tutarlı bir politika ayarı almasını sağlamak için tam bir yeniden başlatma gereklidir. İşlemlerin bu politikanın farklı değerleriyle çalışması zararlı değildir.
           </translation>
+<translation id="2029985289397958781">Kurumsal kullanıcılar için <ph name="GOOGLE_LENS_PRODUCT_NAME" /> kamera destekli aramayı devre dışı bırak</translation>
 <translation id="2030905906517501646">Varsayılan arama sağlayıcı anahtar kelimesi</translation>
 <translation id="203096360153626918">Bu politikanın Android uygulamaları üzerinde hiçbir etkisi yoktur. Bu politika <ph name="FALSE" /> seçeneğine ayarlansa bile uygulamalar tam ekran moduna girebilir.</translation>
 <translation id="2032848225007871645">Politikanın ayarlanması, hangi hızlı kilit açma modlarının kilit ekranının kilidini açabileceğini kontrol eder.
@@ -948,6 +961,13 @@
       Bu politika, erişimi herkese açık cihazlarda kullanılmamalıdır.
 
       Bu politika True (Doğru) değerine ayarlanır veya ayarlanmadan bırakılırsa otomatik olarak başlatılmış misafir oturumundayken gizlilik uyarısı bildirimi, kullanıcı kapayıncaya kadar görüntülenir.</translation>
+<translation id="2281878365805647176">Politika ayarlanırsa <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> içinde Chrome'un kısıtlı oturum açma özelliği etkinleştirilir ve kullanıcılar bu ayarı değiştiremezler. Kullanıcılar sadece belirtilen alan adlarındaki hesapları kullanarak Google araçlarına erişebilirler (gmail veya googlemail hesaplarına izin vermek için alan adı listesine consumer_accounts öğesini ekleyin). Bu ayar, kullanıcıların Google kimlik doğrulaması gerektiren yönetilen bir cihazda oturum açmalarını ve açıkça izin verilen alan adlarından birine ait olmadığı sürece İkincil Hesap eklemelerini engeller.
+
+      Bu ayar boş veya ayarlanmadan bırakılırsa kullanıcılar herhangi bir hesapla <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> ürününe erişebilirler.
+
+      Kullanıcılar bu ayarı değiştiremez veya geçersiz kılamazlar.
+
+      Not: Bu politika, https://support.google.com/a/answer/1668854 sayfasında açıklandığı gibi, tüm google.com alan adlarına gönderilen tüm HTTP ve HTTPS isteklerine X-GoogApps-Allowed-Domains başlığının eklenmesine neden olur.</translation>
 <translation id="2289265947759479962">Bu politika OS sürümü, OS platformu, OS mimarisi, <ph name="PRODUCT_NAME" /> sürümü ve <ph name="PRODUCT_NAME" /> kanalı gibi sürüm bilgilerinin bildirilip bildirilmeyeceğini kontrol eder.
 
       <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> politikası ayarlanmadan bırakıldığında veya devre dışı değerine ayarlandığında bu politika yok sayılır.
@@ -1012,6 +1032,7 @@
 
       False (Yanlış) değerine ayarlanırsa veya ayarlanmazsa klavye varsayılan olarak medya tuşu komutları oluşturur. Arama tuşuna basmak, bunları işlev tuşu olarak değiştirir.</translation>
 <translation id="2358176879566587521">Bu politika kullanımdan kaldırılmıştır. <ph name="PRODUCT_NAME" /> ürününün bu versiyonuyla uyumlu değildir. Daha fazla bilgiyi https://support.google.com/chrome/a/answer/7643500 adresinde bulabilirsiniz</translation>
+<translation id="2362469626417133796">Yeniden başlatma zaman aralığı</translation>
 <translation id="2364639863953745682">Asistan ilk katılım deneyimi modu</translation>
 <translation id="2384233438419344179">Politikanın Etkin değerine ayarlanması tarayıcının adres çubuğundaki alan adına ait olmayan web sayfası öğelerinin çerez yerleştirmesini engeller. Politikanın Devre Dışı değerine ayarlanması bu öğelerin çerez yerleştirmesine izin verir ve kullanıcıların bu ayarı değiştirmelerini önler.
 
@@ -1086,6 +1107,7 @@
 <translation id="2433516903565257847">Belirlenen günlerden sonra cihaz filosunun yüzde kaçının güncellenmesi gerektiği.</translation>
 <translation id="2435052056904485763">Kerberos yetki sunucusu izin verilenler listesi</translation>
 <translation id="2435232509335686514"><ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /> tarafından indirilen dosyaların işlenmesi için yapılandırma politikası</translation>
+<translation id="2436302465999055995"><ph name="LACROS_NAME" /> tarayıcısını kullanılabilen tek tarayıcı yap (henüz kullanıma geçmedi)</translation>
 <translation id="2448315169529769573">Politika Etkin değerine ayarlanırsa <ph name="PRODUCT_OS_NAME" />, kilitlenme raporları da dahil olmak üzere kullanım metriklerini ve teşhis verilerini Google'a bildirir. Politika Devre Dışı değerine ayarlanırsa metrikler ve teşhis verisi raporlama devre dışı bırakılır.
 
        Politika ayarlanmadan bırakılırsa metrikler ve teşhis verisi raporlama, yönetilmeyen cihazlarda devre dışı, yönetilen cihazlarda ise etkin kalır.</translation>
@@ -1235,6 +1257,7 @@
 
       Politika ayarlanmadan bırakılırsa <ph name="PRINTERS_ALLOW_ALL" /> uygulanır.</translation>
 <translation id="2586117300379904732">Güç yönetimi için uyanık kalma kilitlerine izin ver</translation>
+<translation id="2586231026319371211">Zaman, 24 saatlik yerel duvar saati biçiminde değerlendirilir.</translation>
 <translation id="2587719089023392205"><ph name="PRODUCT_NAME" /> ürününü varsayılan tarayıcım olarak ayarla</translation>
 <translation id="2588252329503406673">Politika ayarlanırsa, oturum açma ekranı görünürken bir süre kullanıcı etkinliği olmadığında <ph name="PRODUCT_OS_NAME" /> tarafından nasıl hareket edileceğini görebilirsiniz. Bu politika birden çok ayarı kontrol eder. Ayrı ayrı anlam ve değer aralıkları için bir oturumda güç yönetimini kontrol eden ilgili politikalara bakın.
 
@@ -1252,6 +1275,7 @@
 <translation id="2593762551209145088">Güvenli Tarama hiçbir zaman etkin değil.</translation>
 <translation id="26023406105317310">Kerberos hesaplarını yapılandır</translation>
 <translation id="2604182581880595781">Ağ Üzerinde Dosya Paylaşımı ile ilgili politikaları yapılandırın.</translation>
+<translation id="2608535066974278204">Yeniden başlatma zaman aralığının uzunluğunu belirten zaman dilimi (dakika).</translation>
 <translation id="2615240493030733717">Saat dilimi bilgisi raporlama</translation>
 <translation id="2619966380594000538">Politika Etkin değerine ayarlanır veya ayarlanmadan bırakılırsa, Chrome'u başlatmak için tehlikeli olabilecek komut satırı işaretleri kullanıldığında güvenlik uyarıları gösterilir.
 
@@ -1876,6 +1900,7 @@
 <translation id="3415954062311826850">Bu politika Arc dahilinde desteklenmemektedir.</translation>
 <translation id="34160070798637152">Cihaz genelindeki ağ yapılandırmasını kontrol eder.</translation>
 <translation id="3417130629744653218">Web sitelerinin kullanılabilir ödeme yöntemlerini sorgulamalarına izin ver.</translation>
+<translation id="3417391585519621050">Kurumsal kullanıcılar için <ph name="GOOGLE_LENS_PRODUCT_NAME" /> kamera destekli aramayı etkinleştir</translation>
 <translation id="3417418267404583991">Bu politika true olarak ayarlanırsa veya hiçbir şekilde ayarlanmazsa, <ph name="PRODUCT_OS_NAME" /> misafir modunda giriş yapılmasına izin verir. misafir girişleri adsız kullanıcı oturumlarıdır ve şifre gerektirmez.
 
       Bu politika false değerine ayarlanırsa, <ph name="PRODUCT_OS_NAME" /> misafir oturumlarının başlamasına izin vermez.</translation>
@@ -3363,6 +3388,7 @@
       Bu politika için 0 dışında bir değer ayarlandığında, belirtilen sürede herhangi bir etkinlik gerçekleştirilmezse giriş yapmış olan tanıtım kullanıcısının oturumu otomatik olarak kapanır.
 
       Politika değeri milisaniye cinsinden belirtilmelidir.</translation>
+<translation id="55057839818162162"><ph name="GOOGLE_LENS_PRODUCT_NAME" /> kamera destekli aramaya izin ver</translation>
 <translation id="5508307164752647432">Kerberos işlevini etkinleştir</translation>
 <translation id="5511702823008968136">Yer İşareti Çubuğunu etkinleştir</translation>
 <translation id="5512418063782665071">Ana sayfa URL'si</translation>
@@ -3379,6 +3405,7 @@
 <translation id="5526184558582921522">Quirks Sunucusu'nu sorgulamaya ve donanıma özgü yapılandırma dosyalarını içerebilecek indirmelere izin ver</translation>
 <translation id="5526701598901867718">Hepsi (güvenli değil)</translation>
 <translation id="5530347722229944744">Tehlikeli olabilecek indirmeleri engelle</translation>
+<translation id="5535256585099022933">Yeniden başlatma zaman aralığını ayarla</translation>
 <translation id="5535973522252703021">Kerberos yetki sunucusu beyaz listesi</translation>
 <translation id="553806128266843748">Veri akışı kısıtlamanın etkinleştirilip etkinleştirilmediğini gösteren bir boole flag'i.</translation>
 <translation id="5540885720415375851">Yerel cihaz bulmaya izin ver</translation>
@@ -3663,6 +3690,7 @@
 <translation id="5890063326284543943">Serial API'sinin kullanımını kontrol et</translation>
 <translation id="5897913798715600338">Pili hızlı şarj teknolojisiyle şarj et.</translation>
 <translation id="5898486742390981550">Birden fazla kullanıcı giriş yaptığında, yalnızca birincil kullanıcı Android uygulamalarını kullanabilir.</translation>
+<translation id="5899751601113377553">Kullanıcıların <ph name="LACROS_NAME" /> tarayıcısını kullanmasını engelle</translation>
 <translation id="5901427587865226597">Yalnızca dupleks yazdır</translation>
 <translation id="5905473632148429217">Online OCSP/CRL denetimlerini etkinleştir</translation>
 <translation id="5907283448020542268"><ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> politikası <ph name="BLOCK_GEOLOCATION_SETTING" /> seçeneğine ayarlanmadığı sürece, <ph name="GLS_ENABLED" /> politikasının ayarlanması Google konum hizmetlerini ilk kurulum sırasında açar. Politikayı <ph name="GLS_DISABLED" /> seçeneğine ayarlamak veya ayarlamadan bırakmak, konum hizmetlerini kurulum sırasında kapalı tutar.
@@ -3832,6 +3860,13 @@
 
       Bu politika ayarlanmadan bırakılırsa kullanıcılar tarayıcılarının temasını istedikleri gibi değiştirebilir.</translation>
 <translation id="6195802366906945965">Yerleşik sertifika doğrulayıcının sunucu sertifikalarını doğrulamak için kullanılıp kullanılmayacağını belirler.</translation>
+<translation id="6198375221792846439">Yeniden başlatma bildirim süresinin sonu için bir hedef zaman aralığı belirler.
+
+      <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> ve <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" /> politika ayarları uyarınca tarayıcının veya cihazın yeniden başlatılması gerekliliği kullanıcılara bildirilir. <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> politikası "Gerekli" değerine ayarlanırsa tarayıcılar ve cihazlar, bildirim süresinin sonunda zorla yeniden başlatılır. <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> politikası, bildirim süresinin sonunu belirli bir zaman aralığına denk gelecek şekilde ertelemek için kullanılabilir.
+
+      Bu politika ayarlanmadığında <ph name="PRODUCT_OS_NAME" /> için varsayılan hedef zaman dilimi 02:00 ile 04:00 saatleri arasıdır. <ph name="PRODUCT_NAME" /> için varsayılan hedef zaman aralığı tüm gündür (bildirim süresinin sonu hiçbir zaman ertelenmez).
+
+      Uyarı: Bu politikayı ayarlamak, yazılım güncellemelerinin uygulanmasını geciktirebilir.</translation>
 <translation id="6208896993204286313"><ph name="PRODUCT_NAME" /> Politika Bilgilerini bildir</translation>
 <translation id="6210259502936598222">OS ve <ph name="PRODUCT_NAME" /> Sürümü Bilgilerini bildir</translation>
 <translation id="6212868225782276239">Kara listede olanlar hariç tüm yazıcılar gösterilir.</translation>
@@ -4007,6 +4042,7 @@
 <translation id="6464074037294098618">Adresleri otomatik doldurmayı etkinleştir</translation>
 <translation id="6467613372414922590">Kullanıcı düzeyinde Yerel Mesajlaşma ana makinelerine izin ver (yönetici şifreleri olmadan yüklenir)</translation>
 <translation id="6473623140202114570">Güvenli Tarama'nın uyarıları tetiklemeyeceği alan adlarının listesini yapılandırır.</translation>
+<translation id="647645276885673708"><ph name="LACROS_NAME" /> tarayıcısını etkinleştir ve birincil tarayıcı yap</translation>
 <translation id="647698599569353771">Yakındakilerle Paylaş'ın etkinleştirilmesine izin verin.</translation>
 <translation id="6478258366184919502">Giriş ve ekran kaynakları</translation>
 <translation id="6478261301433199402">Politika ayarlanırsa bir kullanıcı için <ph name="PLUGIN_VM_NAME" /> resmi belirlenir. Bu politikayı, <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> ve resmin indirme işleminin bütünlüğünü doğrulamak için bir SHA-256 karması olacak şekilde indirileceği yeri belirten <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> ile bir JSON biçimi dize olarak belirleyin.</translation>
@@ -4795,6 +4831,7 @@
 <translation id="7340034977315324840">Cihaz etkinlik zamanlarını rapor et</translation>
 <translation id="7343004974628511824">DNS müdahale kontrolleri gerçekleştir</translation>
 <translation id="7343497214039883642">Cihazlar için kurumsal yazıcı yapılandırma dosyası</translation>
+<translation id="7358359585412734876"><ph name="LACROS_NAME" /> tarayıcısını etkinleştir</translation>
 <translation id="7358744897221281073">Bu ayar etkinleştirilirse Telefon Merkezi'ne zaten kaydolmuş kullanıcılar, telefonlarının web sayfalarını Chrome OS'te görüntülemek gibi görevlere devam edebilirler.
 
       Bu ayar devre dışı bırakılırsa kullanıcıların bu özelliği kullanmalarına izin verilmez. PhoneHubAllowed politikası devre dışı bırakılırsa da kullanıcıların bu özelliği kullanmalarına izin verilmez.
@@ -5305,6 +5342,7 @@
 
       Politika Devre Dışı değerine ayarlanır veya ayarlanmadan bırakılırsa kayıtlı cihazlar depolama istatistiklerini bildirmez.</translation>
 <translation id="8044493735196713914">Rapor cihazı önyükleme modu</translation>
+<translation id="80453040817068401"><ph name="LACROS_NAME" /> tarayıcısını kullanılabilir yap</translation>
 <translation id="8049769137921877885">Bu politika; politika verilerinin ve politika getirme zamanının bildirilip bildirilmeyeceğini kontrol eder.
 
       <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> politikası ayarlanmadan bırakıldığında veya devre dışı değerine ayarlandığında bu politika yok sayılır.
@@ -5919,6 +5957,7 @@
 <translation id="8892286064305622118"><ph name="PLUGIN_VM_NAME" /> için gereken boş disk alanı</translation>
 <translation id="8892783613915541293">Cihaz boşta kalıp AC gücünde çalışırken yapılacak işlemler ve gecikmeler</translation>
 <translation id="8897796778265450949">Kimlik doğrulaması, SAML olmadan GAIA ile yapılan kullanıcının çevrimdışı olarak giriş yapabileceği süreyi sınırlar</translation>
+<translation id="889814528399907891">Kullanıcıların <ph name="LACROS_NAME" /> tarayıcısını etkinleştirmesine ve birincil tarayıcı yapmasına izin ver</translation>
 <translation id="8903283771634816230">Politika, Etkin değerine ayarlanırsa <ph name="PRODUCT_NAME" />, baskı önizleme için varsayılan hedef olarak işletim sistemi varsayılan yazıcısını kullanır.
 
       Politika, Devre Dışı değerine ayarlanır veya ayarlanmadan bırakılırsa <ph name="PRODUCT_NAME" />, baskı önizleme için varsayılan hedef olarak en son kullanılan yazıcıyı kullanır.</translation>
@@ -6061,6 +6100,7 @@
       Politika Devre Dışı değerine ayarlanırsa kayıtlı cihazlar etkinlik zamanlarını kaydetmez veya bildirmez.</translation>
 <translation id="9077227880520270584">Cihaz yerel hesabına otomatik giriş zamanlayıcısı</translation>
 <translation id="9084985621503260744">Video etkinliğinin güç yönetimini etkileyip etkilemeyeceğini belirtme</translation>
+<translation id="9088191250434406767">Politika ayarlanmadan bırakılır veya Etkin değerine ayarlanırsa kullanıcıların <ph name="GOOGLE_LENS_PRODUCT_NAME" /> kullanarak kameralarıyla arama yapmasına izin verilir. Politika, Devre dışı değerine ayarlanırsa, <ph name="GOOGLE_LENS_PRODUCT_NAME" /> kamera destekli arama desteklense de kullanıcıya arama kutusunda <ph name="GOOGLE_LENS_PRODUCT_NAME" /> düğmesi gösterilmez.</translation>
 <translation id="9088433379343318874">Denetlenen kullanıcı içerik sağlayıcısını etkinleştirme</translation>
 <translation id="9088444059179765143">Otomatik saat dilimi algılama yöntemini yapılandır</translation>
 <translation id="9095999573959728902">Bu ayar etkinleştirilirse kullanıcıların Telefon Merkezi'ne kaydolmalarına izin verilir. Böylece kullanıcılar Chrome OS cihazında telefonlarıyla etkileşimde bulunabilirler.
@@ -6139,6 +6179,12 @@
 
       Yeniden başlatmanın ardından kullanıcı oturumu yeniden açılır.</translation>
 <translation id="9160028464653564229">Hiçbir sitenin Serial API'si üzerinden seri bağlantı noktalarına erişim izni istemesine izin verme</translation>
+<translation id="916461878260574432">İşletim sistemi güncelleme yükleri için P2P kullanılıp kullanılmayacağını belirler.
+      Doğru değerine ayarlanırsa cihazlar, LAN üzerindeki güncelleme yüklerini paylaşıp tüketmeye çalışarak internet bant genişliği kullanımını ve sıkışıklığı potansiyel olarak azaltır. Güncelleme yükü LAN'da mevcut değilse cihaz, bir güncelleme sunucusundan indirme işlemine geçer.
+      Yanlış değerine ayarlanırsa P2P kullanılmaz.
+
+      NOT: Tüketici cihazlarıyla kurumsal cihazların varsayılan davranışı farklıdır: P2P; yönetilen cihazlarda etkin, yönetilmeyen cihazlarda devre dışıdır.</translation>
+<translation id="9164656078867027374"><ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> ürününe erişim izni olan alanları belirle</translation>
 <translation id="9167719789236691545"><ph name="PRODUCT_OS_NAME" />, Dosyalar uygulamasında Drive'ı devre dışı bırak</translation>
 <translation id="9187743794267626640">Harici depolama birimi eklemeyi devre dışı bırak</translation>
 <translation id="9190456586252617675">Bu politika, Asistan ilk katılım deneyimi modunu kontrol eder.
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index b084640b..26a79f1 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -440,6 +440,17 @@
       Докладніше на сторінці https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Заборонити використовувати режим headless</translation>
 <translation id="1588240398285670601">Налаштування веб-переглядача</translation>
+<translation id="1590071725627230651">Це налаштування пропонує кілька варіантів доступності для веб-переглядача <ph name="LACROS_NAME" />.
+
+      Якщо правило не налаштувати або вибрати для нього значення <ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" />, користувач зможе ввімкнути <ph name="LACROS_NAME" /> і зробити його основним веб-переглядачем. <ph name="LACROS_NAME" /> усе ще можна буде заборонити за допомогою правила <ph name="LACROS_ALLOWED_POLICY_NAME" />.
+
+      Якщо для правила вибрати значення <ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />, користувач не зможе працювати в <ph name="LACROS_NAME" />. Правило <ph name="LACROS_ALLOWED_POLICY_NAME" /> ігноруватиметься.
+
+      Якщо для правила вибрати значення <ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />, <ph name="LACROS_NAME" /> буде ввімкнено, але він не стане основним веб-переглядачем. Правило <ph name="LACROS_ALLOWED_POLICY_NAME" /> ігноруватиметься.
+
+      Якщо для правила вибрати значення <ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />, <ph name="LACROS_NAME" /> буде ввімкнено й вибрано основним веб-переглядачем. Правило <ph name="LACROS_ALLOWED_POLICY_NAME" /> ігноруватиметься.
+
+      У майбутньому буде можливість зробити <ph name="LACROS_NAME" /> єдиним доступним веб-переглядачем в <ph name="PRODUCT_OS_NAME" />, вибравши значення <ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" />.</translation>
 <translation id="1599424828227887013">Увімкнути Ізоляцію сайтів для вказаних джерел на пристроях Android</translation>
 <translation id="159946228300522107">Якщо для цього правила вибрано значення True, Chrome розгортає перше вікно, яке відкривається під час першого запуску.
 
@@ -683,6 +694,7 @@
 <translation id="1920772397574801429">Налаштування цього правила визначають тип облікових записів, наданих додатком для автентифікації Android, що підтримує автентифікацію <ph name="HTTP_NEGOTIATE" /> (наприклад, Kerberos). Цю інформацію має надати постачальник додатка для автентифікації. Докладніше на сторінці проекту Chromium Projects (https://goo.gl/hajyfN)
 
       Якщо це правило не налаштовано, автентифікацію <ph name="HTTP_NEGOTIATE" /> буде вимкнено на пристроях Android.</translation>
+<translation id="1925529914257504750">Автоматичне оновлення за допомогою однорангової мережі ввімкнено</translation>
 <translation id="1930127294345368978">Максимальна кількість аркушів, які можна друкувати під час одного завдання друку</translation>
 <translation id="193259052151668190">Список USB-пристроїв, які можна від’єднувати</translation>
 <translation id="1933378685401357864">Фоновий малюнок</translation>
@@ -769,6 +781,7 @@
           перезапустити веб-переглядач. Процеси можуть запускатися з різними значеннями
           для цього правила.
           </translation>
+<translation id="2029985289397958781">Вимкнути пошук за допомогою камери в додатку <ph name="GOOGLE_LENS_PRODUCT_NAME" /> для корпоративних користувачів</translation>
 <translation id="2030905906517501646">Ключове слово пошукової служби за умовчанням</translation>
 <translation id="203096360153626918">Це правило не впливає на додатки Android. Ними можна буде користуватися в повноекранному режимі, навіть якщо для правила встановлено значення "<ph name="FALSE" />".</translation>
 <translation id="2032848225007871645">Це правило визначає список режимів швидкого розблокування екрана.
@@ -958,6 +971,13 @@
       Це правило не можна використовувати для загальнодоступних пристроїв.
 
       Якщо для цього правила вибрано значення True або його не налаштовано, попередження про загрозу конфіденційності в автоматично запущеному керованому сеансі в режимі "Гість" буде закріплено, доки користувач не закриє його.</translation>
+<translation id="2281878365805647176">Якщо налаштувати це правило, у Chrome вмикається функція обмеженого входу в <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />. Користувачі не можуть змінити цей параметр. Вони отримують доступ до інструментів Google лише з облікових записів указаних доменів (для облікових записів Gmail чи Googlemail потрібно додати значення consumer_accounts у список доменів). Це налаштування забороняє користувачам входити в додатковий обліковий запис і зберігати його на керованому пристрої, де потрібна автентифікація Google, якщо цього облікового запису немає в списку дозволених доменів.
+
+      Якщо не налаштувати цей параметр, користувачі матимуть доступ до <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> із будь-якого облікового запису.
+
+      Користувачі не можуть змінити або замінити його.
+
+      Примітка. Якщо це правило застосовується, до всіх запитів HTTP та HTTPS, що надсилаються в домени google.com, додається заголовок X-GoogApps-Allowed-Domains, як описано на сторінці https://support.google.com/a/answer/1668854.</translation>
 <translation id="2289265947759479962">Це правило визначає, чи повідомляти інформацію про версію, як-от версію, платформу й архітектуру ОС, а також версію <ph name="PRODUCT_NAME" /> і канал <ph name="PRODUCT_NAME" />.
 
       Якщо правило <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> не налаштовано або для нього вибрано значення disabled, це правило ігноруватиметься.
@@ -1022,6 +1042,7 @@
 
       Якщо для цього правила вибрано значення False або воно не налаштовано, медіа-клавіші клавіатури збережуть свою функціональність за умовчанням. Якщо натиснути клавішу пошуку, вони стануть функціональними.</translation>
 <translation id="2358176879566587521">Це правило видалено. Воно несумісне з цією версією <ph name="PRODUCT_NAME" />. Докладніше читайте на сторінці https://support.google.com/chrome/a/answer/7643500</translation>
+<translation id="2362469626417133796">Інтервал для перезапуску</translation>
 <translation id="2364639863953745682">Режим реєстрації в Асистенті</translation>
 <translation id="2384233438419344179">Якщо ввімкнути це правило, елементи веб-сторінок за межами домену, указаного в адресному рядку веб-переглядача, не зможуть встановлювати файли cookie. Якщо вимкнути це правило, такі елементи зможуть встановлювати файли cookie, а користувачі не матимуть можливості змінити цей параметр.
 
@@ -1096,6 +1117,7 @@
 <translation id="2433516903565257847">Відсоткова частка пристроїв, що мають оновитися після зазначеної кількості днів.</translation>
 <translation id="2435052056904485763">Список дозволених серверів, яким можна делегувати права за протоколом Kerberos</translation>
 <translation id="2435232509335686514">Правило для налаштування конектора <ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /> щодо обробки завантажених файлів</translation>
+<translation id="2436302465999055995">Зробити <ph name="LACROS_NAME" /> єдиним доступним веб-переглядачем (ще не застосовано)</translation>
 <translation id="2448315169529769573">Якщо це правило ввімкнено, <ph name="PRODUCT_OS_NAME" /> повідомлятиме компанії Google показники використання й дані діагностики, зокрема звіти про аварійне завершення роботи. Якщо це правило вимкнено, показники й дані діагностики не надсилатимуться.
 
        Якщо це правило не налаштовано, показники й дані діагностики некерованих пристроїв не надсилатимуться, а керованих – надсилатимуться</translation>
@@ -1246,6 +1268,7 @@
 
       Якщо це правило не налаштовано, застосовується параметр <ph name="PRINTERS_ALLOW_ALL" />.</translation>
 <translation id="2586117300379904732">Дозволити розширенням керування живленням блокувати переходи в режим сну</translation>
+<translation id="2586231026319371211">Використовується місцевий час (у 24-годинному форматі).</translation>
 <translation id="2587719089023392205">Зробити <ph name="PRODUCT_NAME" /> веб-переглядачем за умовчанням</translation>
 <translation id="2588252329503406673">Налаштування цього правила дозволяють указувати поведінку <ph name="PRODUCT_OS_NAME" />, коли відображається екран входу, а користувач певний час неактивний. Це правило контролює декілька налаштувань. Щоб дізнатися семантику та діапазони значень цих налаштувань, перегляньте відповідні правила, які контролюють керування живленням протягом сеансу.
 
@@ -1263,6 +1286,7 @@
 <translation id="2593762551209145088">Безпечний перегляд завжди вимкнено.</translation>
 <translation id="26023406105317310">Налаштувати облікові записи Kerberos</translation>
 <translation id="2604182581880595781">Налаштовує правила, пов’язані зі спільними мережевими файлами.</translation>
+<translation id="2608535066974278204">Період часу (у хвилинах), який указує тривалість інтервалу для перезапуску.</translation>
 <translation id="2615240493030733717">Повідомляти інформацію про часовий пояс</translation>
 <translation id="2619966380594000538">Якщо це правило активовано або не налаштовано, під час запуску Chrome із потенційно небезпечними позначками командного рядка з'являються застереження про небезпеку.
 
@@ -1897,6 +1921,7 @@
 <translation id="3415954062311826850">Це правило не підтримується в середовищі ARC.</translation>
 <translation id="34160070798637152">Керує конфігурацією мережі на рівні пристрою.</translation>
 <translation id="3417130629744653218">Дозволити веб-сайтам надсилати запит щодо доступних способів оплати.</translation>
+<translation id="3417391585519621050">Увімкнути пошук за допомогою камери в додатку <ph name="GOOGLE_LENS_PRODUCT_NAME" /> для корпоративних користувачів</translation>
 <translation id="3417418267404583991">Якщо значення правила встановлено як "true" або правило не налаштовано, <ph name="PRODUCT_OS_NAME" /> увімкне вхід у режимі гостя. Вхід у режимі гостя – це сеанс анонімного користувача, який не потребує пароля.
 
       Якщо значення правила встановлено як "false", <ph name="PRODUCT_OS_NAME" /> не дозволить розпочати сеанс у режимі гостя.</translation>
@@ -3388,6 +3413,7 @@
       Якщо для цього правила встановлено значення, яке не дорівнює 0, користувач, який увійшов у демонстраційній версії, автоматично вийде після закінчення вказаного періоду бездіяльності.
 
       Значення правила вказується в мілісекундах.</translation>
+<translation id="55057839818162162">Дозволити пошук за допомогою камери в додатку <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="5508307164752647432">Увімкнути функції Kerberos</translation>
 <translation id="5511702823008968136">Увімкнути панель закладок</translation>
 <translation id="5512418063782665071">URL-адреса домашньої сторінки</translation>
@@ -3404,6 +3430,7 @@
 <translation id="5526184558582921522">Дозволити запити до сервера Quirks і потенційне завантаження файлів конфігурації для певного апаратного забезпечення</translation>
 <translation id="5526701598901867718">Усі (небезпечно)</translation>
 <translation id="5530347722229944744">Блокувати потенційно небезпечні завантаження</translation>
+<translation id="5535256585099022933">Указати інтервал для перезапуску</translation>
 <translation id="5535973522252703021">Список дозволених серверів, яким можна делегувати права за протоколом Kerberos</translation>
 <translation id="553806128266843748">Логічне значення експериментального параметра, яке вказує, чи ввімкнено обмеження пропускної спроможності.</translation>
 <translation id="5540885720415375851">Дозволити локальний пошук пристроїв</translation>
@@ -3699,6 +3726,7 @@
 <translation id="5890063326284543943">Контролювати використання Serial API</translation>
 <translation id="5897913798715600338">Заряджати акумулятор через технологію швидкого заряджання.</translation>
 <translation id="5898486742390981550">Якщо на пристрої здійснено вхід у декілька облікових записів, працювати в додатках Android може лише основний користувач.</translation>
+<translation id="5899751601113377553">Заборонити користувачам працювати в <ph name="LACROS_NAME" /></translation>
 <translation id="5901427587865226597">Лише двосторонній друк</translation>
 <translation id="5905473632148429217">Увімкнути перевірки OCSP/CRL онлайн</translation>
 <translation id="5907283448020542268">Якщо для правила <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> не вибрано значення <ph name="BLOCK_GEOLOCATION_SETTING" />, параметр <ph name="GLS_ENABLED" /> вмикає Служби локації Google під час початкового налаштування. Якщо для правила вибрано значення <ph name="GLS_DISABLED" /> або його не налаштовано, Служби локації буде вимкнено під час налаштування.
@@ -3887,6 +3915,13 @@
 
       Якщо це правило не налаштувати, користувачі зможуть вибирати тему для веб-переглядача.</translation>
 <translation id="6195802366906945965">Визначає, чи перевіряти сертифікати сервера за допомогою вбудованого інструмента перевірки сертифікатів</translation>
+<translation id="6198375221792846439">Указати цільовий інтервал для завершення дії сповіщення про перезапуск.
+
+      Користувачі отримують сповіщення про необхідність перезапустити веб-переглядач або пристрій відповідно до налаштувань правил <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> і <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" />. Веб-переглядачі та пристрої примусово перезапускаються після завершення періоду дії сповіщення, якщо для правила <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> вибрати значення Required. За допомогою правила <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> можна відкласти завершення періоду, щоб воно було в межах зазначеного інтервалу.
+
+      Якщо правило не налаштувати, інтервал за умовчанням для <ph name="PRODUCT_OS_NAME" /> – між 02:00 і 04:00, а для <ph name="PRODUCT_NAME" /> – увесь день (тобто завершення періоду дії сповіщення ніколи не відкладається).
+
+      Попередження: якщо налаштувати це правило, оновлення програмного забезпечення можуть застосовуватись із затримкою.</translation>
 <translation id="6208896993204286313">Повідомляти інформацію про правила <ph name="PRODUCT_NAME" /></translation>
 <translation id="6210259502936598222">Повідомляти інформацію про ОС і версію <ph name="PRODUCT_NAME" /></translation>
 <translation id="6212868225782276239">Відображаються всі принтери, крім тих, які є в чорному списку.</translation>
@@ -4062,6 +4097,7 @@
 <translation id="6464074037294098618">Увімкнути функцію автозаповнення адрес</translation>
 <translation id="6467613372414922590">Дозволити хости на рівні користувача для обміну повідомленнями з оригінальними додатками (установлені без дозволів адміністратора)</translation>
 <translation id="6473623140202114570">Налаштувати список доменів, у яких Безпечний перегляд не показуватиме застережень.</translation>
+<translation id="647645276885673708">Увімкнути <ph name="LACROS_NAME" /> і зробити його основним веб-переглядачем</translation>
 <translation id="647698599569353771">Дозволити вмикати Передавання поблизу.</translation>
 <translation id="6478258366184919502">Джерела для екранів входу</translation>
 <translation id="6478261301433199402">За допомогою цього правила можна вибрати образ <ph name="PLUGIN_VM_NAME" /> для користувача. Його потрібно зазначати як рядок у форматі JSON, де поле <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> вказує, звідки завантажувати файл, а <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> – це хеш SHA-256, який використовується для перевірки цілісності завантаження.</translation>
@@ -4848,6 +4884,7 @@
 <translation id="7340034977315324840">Повідомляти про періоди активності пристрою</translation>
 <translation id="7343004974628511824">Виконувати перевірки перехоплення системи DNS</translation>
 <translation id="7343497214039883642">Файл конфігурації принтерів пристроїв підприємства</translation>
+<translation id="7358359585412734876">Увімкнути <ph name="LACROS_NAME" /></translation>
 <translation id="7358744897221281073">Якщо це правило ввімкнено, користувачі, які вже ввімкнули Керування телефоном, зможуть продовжувати виконувати на пристрої з ОС Chrome завдання, які почали на телефоні, наприклад переглядати веб-сторінки.
 
       Якщо цей параметр або правило PhoneHubAllowed вимкнено, така функція буде недоступна для користувачів.
@@ -5353,6 +5390,7 @@
 
       Якщо це правило вимкнено або не налаштовано, зареєстровані пристрої не надсилатимуть такі дані.</translation>
 <translation id="8044493735196713914">Повідомляти про режим завантаження пристрою</translation>
+<translation id="80453040817068401">Зробити веб-переглядач <ph name="LACROS_NAME" /> доступним</translation>
 <translation id="8049769137921877885">Це правило визначає, чи повідомляти дані й час завантаження правила.
 
       Якщо правило <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> не налаштовано або для нього вибрано значення disabled, це правило ігноруватиметься.
@@ -5980,6 +6018,7 @@
 <translation id="8892286064305622118">Потрібне вільне місце на диску для <ph name="PLUGIN_VM_NAME" /></translation>
 <translation id="8892783613915541293">Затримки та дії, які мають виконуватися, коли пристрій неактивний і працює від електромережі</translation>
 <translation id="8897796778265450949">Обмеження часу, упродовж якого користувач, автентифікований через GAIA, може входити в режимі офлайн без використання SAML</translation>
+<translation id="889814528399907891">Дозволити користувачам вмикати <ph name="LACROS_NAME" /> і робити його основним веб-переглядачем</translation>
 <translation id="8903283771634816230">Якщо ввімкнути це правило, <ph name="PRODUCT_NAME" /> зазначатиме у вікні попереднього перегляду перед друком системний принтер за умовчанням як цільовий.
 
       Якщо вимкнути або не налаштувати це правило, <ph name="PRODUCT_NAME" /> зазначатиме в цьому вікні останній використаний принтер.</translation>
@@ -6122,6 +6161,7 @@
       Якщо це правило вимкнено, зареєстровані пристрої не записують і не надсилають такі дані.</translation>
 <translation id="9077227880520270584">Таймер для автоматичного входу в локальний обліковий запис на пристрої</translation>
 <translation id="9084985621503260744">Визначати, чи дії з відео впливають на керування живленням</translation>
+<translation id="9088191250434406767">Якщо не налаштувати це правило або вибрати для нього значення Enabled, користувачі зможуть здійснювати пошук за допомогою своїх камер у додатку <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Якщо для цього правила вибрати значення Disabled, користувачі не бачитимуть кнопку <ph name="GOOGLE_LENS_PRODUCT_NAME" /> у полі пошуку, навіть якщо пошук за допомогою камери в додатку <ph name="GOOGLE_LENS_PRODUCT_NAME" /> підтримується.</translation>
 <translation id="9088433379343318874">Увімкнути постачальника вмісту для контрольованих користувачів</translation>
 <translation id="9088444059179765143">Налаштувати метод автоматичного визначення часового поясу</translation>
 <translation id="9095999573959728902">Якщо це правило ввімкнено, користувачі зможуть активувати Керування телефоном, щоб взаємодіяти зі своїм телефоном на пристрої з ОС Chrome.
@@ -6193,6 +6233,12 @@
 
       Після перезапуску сеанс користувача відновлюється.</translation>
 <translation id="9160028464653564229">Заборонити всім сайтам запитувати дозвіл на доступ до послідовних портів через Serial API</translation>
+<translation id="916461878260574432">Указує, чи однорангова мережа має використовуватися для даних оновлення ОС.
+      Якщо вибрати значення true, пристрої обмінюватимуться даними й намагатимуться використовувати дані оновлення в LAN, що потенційно може знижувати використання пропускної спроможності й перевантаження каналів інтернет-зв’язку. Якщо дані оновлення не доступні через LAN, пристрій завантажуватиме їх із сервера оновлення.
+      Якщо вибрати значення false, однорангова мережа не використовуватиметься.
+
+      ПРИМІТКА. Поведінка за умовчанням для приватних і корпоративних пристроїв відрізняється: однорангову мережу буде ввімкнено лише на керованих пристроях.</translation>
+<translation id="9164656078867027374">Визначити домени, які мають доступ до <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /></translation>
 <translation id="9167719789236691545">Вимкнути Диск у додатку Файли в <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="9187743794267626640">Вимикати підключення зовнішньої пам’яті</translation>
 <translation id="9190456586252617675">Це правило керує режимом реєстрації в Асистенті.
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index 95fdcc0..33851da 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -441,6 +441,17 @@
       Vui lòng xem tại https://www.chromestatus.com/feature/4664843055398912.</translation>
 <translation id="1587585749332985896">Không cho phép sử dụng Chế độ không có giao diện người dùng</translation>
 <translation id="1588240398285670601">Cài đặt của trình duyệt</translation>
+<translation id="1590071725627230651">Chế độ cài đặt này cung cấp một số tùy chọn về khả năng sử dụng đối với trình duyệt <ph name="LACROS_NAME" />.
+
+      Nếu bạn đặt thành <ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" /> hoặc không đặt chính sách này, thì người dùng có thể bật <ph name="LACROS_NAME" /> và đặt trình duyệt này làm trình duyệt chính. Chính sách <ph name="LACROS_ALLOWED_POLICY_NAME" /> vẫn có thể không cho phép <ph name="LACROS_NAME" />.
+
+      Nếu bạn đặt chính sách này thành <ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />, thì người dùng không thể sử dụng <ph name="LACROS_NAME" />. Chính sách <ph name="LACROS_ALLOWED_POLICY_NAME" /> bị bỏ qua.
+
+      Nếu bạn đặt chính sách này thành <ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />, thì <ph name="LACROS_NAME" /> được bật nhưng không phải là trình duyệt chính. Chính sách <ph name="LACROS_ALLOWED_POLICY_NAME" /> bị bỏ qua.
+
+      Nếu bạn đặt chính sách này thành <ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />, thì <ph name="LACROS_NAME" /> được bật và sẽ là trình duyệt chính. Chính sách <ph name="LACROS_ALLOWED_POLICY_NAME" /> bị bỏ qua.
+
+      Trong tương lai, bạn có thể dùng giá trị <ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" /> để đặt <ph name="LACROS_NAME" /> làm trình duyệt duy nhất sử dụng được trên <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="1599424828227887013">Bật tính năng Cách ly trang web cho nguồn gốc đã chỉ định trên thiết bị Android</translation>
 <translation id="159946228300522107">Nếu bạn đặt chính sách này thành True, thì Chrome sẽ phóng to cửa sổ đầu tiên trong lần chạy đầu.
 
@@ -684,6 +695,7 @@
 <translation id="1920772397574801429">Nếu bạn đặt chính sách này, hệ thống sẽ chỉ định loại tài khoản do ứng dụng xác thực Android cung cấp có hỗ trợ tính năng xác thực <ph name="HTTP_NEGOTIATE" /> (chẳng hạn như xác thực Kerberos). Nhà cung cấp ứng dụng xác thực sẽ cung cấp thông tin này. Để biết thông tin chi tiết, hãy truy cập vào trang The Chromium Projects (https://goo.gl/hajyfN)
 
       Nếu bạn không đặt chính sách này, hệ thống sẽ tắt tính năng xác thực <ph name="HTTP_NEGOTIATE" /> trên Android.</translation>
+<translation id="1925529914257504750">Bật P2P cho tính năng tự động cập nhật</translation>
 <translation id="1930127294345368978">Số trang tính tối đa được phép sử dụng cho một lệnh in</translation>
 <translation id="193259052151668190">Danh sách cho phép các thiết bị USB có thể tách</translation>
 <translation id="1933378685401357864">Hình nền</translation>
@@ -770,6 +782,7 @@
            cho tất cả thẻ đã tải. Việc các quy trình sử dụng những giá trị
           khác nhau của chính sách này trong khi chạy sẽ không gây ra vấn đề gì.
           </translation>
+<translation id="2029985289397958781">Tắt tính năng tìm kiếm bằng máy ảnh thông qua <ph name="GOOGLE_LENS_PRODUCT_NAME" /> đối với người dùng Enterprise</translation>
 <translation id="2030905906517501646">Từ khóa nhà cung cấp dịch vụ tìm kiếm mặc định</translation>
 <translation id="203096360153626918">Chính sách này không ảnh hưởng đến các ứng dụng Android. Các ứng dụng đó sẽ có thể vào chế độ toàn màn hình ngay cả khi chính sách này được đặt thành <ph name="FALSE" />.</translation>
 <translation id="2032848225007871645">Việc đặt chính sách này sẽ kiểm soát chế độ mở khóa nhanh nào có thể mở khóa màn hình khóa.
@@ -959,6 +972,13 @@
       Bạn không nên dùng chính sách này cho các thiết bị dùng chung.
 
       Nếu bạn đặt chính sách này thành True hoặc không đặt chính sách này, thì thông báo cảnh báo quyền riêng tư trong phiên khách được quản lý tự động chạy sẽ được ghim cho đến khi người dùng đóng thông báo này.</translation>
+<translation id="2281878365805647176">Khi bạn đặt chính sách này, tính năng đăng nhập có giới hạn của Chrome sẽ được bật trong <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> và người dùng sẽ không thể thay đổi chế độ cài đặt này. Người dùng chỉ có thể truy cập vào các công cụ của Google bằng tài khoản thuộc miền được chỉ định (để cho phép tài khoản Gmail hoặc Googlemail, hãy thêm consumer_accounts vào danh sách miền). Chế độ cài đặt này ngăn người dùng đăng nhập và thêm Tài khoản phụ trên một thiết bị được quản lý có yêu cầu quy trình xác thực của Google, nếu tài khoản đó không thuộc một trong những miền được cho phép rõ ràng.
+
+      Nếu bạn để trống hoặc không đặt chế độ cài đặt này, thì người dùng có thể truy cập vào <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> bằng bất kỳ tài khoản nào.
+
+      Người dùng không thể thay đổi hay ghi đè chế độ cài đặt này.
+
+      Lưu ý: Với chính sách này, tiêu đề X-GoogApps-Allowed-Domains sẽ được thêm vào mọi yêu cầu HTTP và HTTPS gửi đến tất cả các miền google.com, như mô tả trong https://support.google.com/a/answer/1668854.</translation>
 <translation id="2289265947759479962">Chính sách này kiểm soát xem có báo cáo thông tin phiên bản, chẳng hạn như phiên bản hệ điều hành, nền tảng hệ điều hành, cấu trúc hệ điều hành, phiên bản <ph name="PRODUCT_NAME" /> và kênh <ph name="PRODUCT_NAME" /> hay không.
 
       Khi bạn không đặt chính sách <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> hoặc đặt thành tắt, thì chính sách này sẽ bị bỏ qua.
@@ -1023,6 +1043,7 @@
 
       Nếu bạn đặt chính sách này thành False hoặc không đặt chính sách này, thì bàn phím sẽ mặc định tạo ra các lệnh phím phương tiện. Khi bạn nhấn phím Tìm kiếm, các phím sẽ thay đổi thành phím chức năng.</translation>
 <translation id="2358176879566587521">Chính sách này đã bị xóa vì không tương thích với phiên bản <ph name="PRODUCT_NAME" /> này. Hãy đọc thêm tại https://support.google.com/chrome/a/answer/7643500</translation>
+<translation id="2362469626417133796">Khoảng thời gian chạy lại</translation>
 <translation id="2364639863953745682">Chế độ của trải nghiệm làm quen với Trợ lý</translation>
 <translation id="2384233438419344179">Nếu bạn đặt chính sách này thành Bật, thì các phần tử trang web không thuộc miền trong thanh địa chỉ của trình duyệt sẽ không thể đặt cookie. Nếu bạn đặt chính sách này thành Tắt, thì các phần tử trang web đó có thể đặt cookie và người dùng không thể thay đổi tùy chọn cài đặt này.
 
@@ -1096,6 +1117,7 @@
 <translation id="2433516903565257847">Tỷ lệ phần trăm của nhóm thiết bị nên được cập nhật sau số ngày được chỉ định.</translation>
 <translation id="2435052056904485763">Danh sách cho phép máy chủ ủy quyền Kerberos</translation>
 <translation id="2435232509335686514">Chính sách cấu hình để <ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /> xử lý các tệp đã tải xuống</translation>
+<translation id="2436302465999055995">Đặt <ph name="LACROS_NAME" /> làm trình duyệt duy nhất sử dụng được (chưa triển khai)</translation>
 <translation id="2448315169529769573">Nếu bạn đặt chính sách này thành Bật, <ph name="PRODUCT_OS_NAME" /> sẽ báo cáo lại cho Google số liệu sử dụng và dữ liệu chẩn đoán, bao gồm cả báo cáo sự cố. Nếu bạn đặt chính sách này thành Tắt, báo cáo số liệu sử dụng và dữ liệu chẩn đoán sẽ tắt.
 
        Nếu bạn không đặt chính sách này, báo cáo số liệu sử dụng và dữ liệu chẩn đoán sẽ tắt trên các thiết bị không được quản lý và sẽ bật trên các thiết bị được quản lý.</translation>
@@ -1246,6 +1268,7 @@
 
       Nếu bạn không đặt chính sách này, <ph name="PRINTERS_ALLOW_ALL" /> sẽ được áp dụng.</translation>
 <translation id="2586117300379904732">Cho phép khóa chế độ thức để quản lý nguồn điện</translation>
+<translation id="2586231026319371211">Giờ địa phương ở định dạng 24 giờ theo thời gian thực đã qua.</translation>
 <translation id="2587719089023392205">Đặt <ph name="PRODUCT_NAME" /> làm trình duyệt mặc định</translation>
 <translation id="2588252329503406673">Nếu đặt chính sách này, bạn có thể đặt cách hoạt động của <ph name="PRODUCT_OS_NAME" /> khi không có hoạt động của người dùng trong một khoảng thời gian trong khi màn hình đăng nhập hiện ra. Chính sách này kiểm soát nhiều tùy chọn cài đặt. Về mặt ngữ nghĩa học và khoảng giá trị riêng, hãy xem các chính sách tương ứng kiểm soát quá trình quản lý nguồn điện trong một phiên.
 
@@ -1263,6 +1286,7 @@
 <translation id="2593762551209145088">Tính năng Duyệt web an toàn sẽ không bao giờ hoạt động.</translation>
 <translation id="26023406105317310">Định cấu hình các tài khoản Kerberos</translation>
 <translation id="2604182581880595781">Định cấu hình các chính sách liên quan đến tính năng Chia sẻ tệp trong mạng.</translation>
+<translation id="2608535066974278204">Khoảng thời gian (tính bằng phút) chỉ định khoảng thời gian chạy lại.</translation>
 <translation id="2615240493030733717">Báo cáo thông tin về múi giờ</translation>
 <translation id="2619966380594000538">Khi bạn đặt thành Bật hoặc không đặt chính sách này, cảnh báo bảo mật sẽ hiện ra khi những cờ hiệu dòng lệnh có thể nguy hiểm được dùng để chạy Chrome.
 
@@ -1898,6 +1922,7 @@
 <translation id="3415954062311826850">Chính sách này không được hỗ trợ trong Arc.</translation>
 <translation id="34160070798637152">Kiểm soát cấu hình mạng cho toàn bộ thiết bị.</translation>
 <translation id="3417130629744653218">Cho phép các trang web truy vấn phương thức thanh toán có sẵn.</translation>
+<translation id="3417391585519621050">Bật tính năng tìm kiếm bằng máy ảnh thông qua <ph name="GOOGLE_LENS_PRODUCT_NAME" /> đối với người dùng Enterprise</translation>
 <translation id="3417418267404583991">Nếu chính sách này được đặt thành đúng hoặc không được định cấu hình, <ph name="PRODUCT_OS_NAME" /> sẽ bật tính năng đăng nhập với tư cách khách. Các đăng nhập với tư cách khách là các phiên người dùng ẩn danh và không yêu cầu mật khẩu.
 
       Nếu chính sách này được đặt thành sai, <ph name="PRODUCT_OS_NAME" /> sẽ không cho phép bắt đầu phiên khách.</translation>
@@ -3392,6 +3417,7 @@
       Khi giá trị của chính sách này được đặt và giá trị đó khác 0, người dùng hiện được đăng nhập vào bản trình diễn sẽ tự động bị đăng xuất sau khi thời gian không hoạt động của khoảng thời gian đã chỉ định trôi qua.
 
       Giá trị của chính sách này sẽ được chỉ định theo mili giây.</translation>
+<translation id="55057839818162162">Cho phép tính năng tìm kiếm bằng máy ảnh thông qua <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="5508307164752647432">Bật chức năng Kerberos</translation>
 <translation id="5511702823008968136">Bật Thanh dấu trang</translation>
 <translation id="5512418063782665071">URL trang chủ</translation>
@@ -3408,6 +3434,7 @@
 <translation id="5526184558582921522">Cho phép gửi các truy vấn đến máy chủ của Quirks và các tệp cấu hình dành riêng cho phần cứng có thể tải xuống</translation>
 <translation id="5526701598901867718">Tất cả (không an toàn)</translation>
 <translation id="5530347722229944744">Chặn tải các tệp có thể gây nguy hiểm xuống</translation>
+<translation id="5535256585099022933">Đặt khoảng thời gian chạy lại</translation>
 <translation id="5535973522252703021">Danh sách trắng máy chủ ủy quyền Kerberos</translation>
 <translation id="553806128266843748">Một cờ boolean cho biết liệu tùy chọn điều tiết có được bật hay không.</translation>
 <translation id="5540885720415375851">Cho phép tìm thiết bị cục bộ</translation>
@@ -3705,6 +3732,7 @@
 <translation id="5890063326284543943">Kiểm soát việc sử dụng API nối tiếp</translation>
 <translation id="5897913798715600338">Sạc pin bằng công nghệ sạc nhanh.</translation>
 <translation id="5898486742390981550">Khi có nhiều người dùng đăng nhập thì chỉ người dùng chính mới có thể sử dụng các ứng dụng Android.</translation>
+<translation id="5899751601113377553">Ngăn người dùng sử dụng <ph name="LACROS_NAME" /></translation>
 <translation id="5901427587865226597">Chỉ in hai mặt</translation>
 <translation id="5905473632148429217">Bật tính năng kiểm tra OCSP/CRL trực tuyến</translation>
 <translation id="5907283448020542268">Trừ khi bạn đặt chính sách <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> thành <ph name="BLOCK_GEOLOCATION_SETTING" />, thì khi đặt <ph name="GLS_ENABLED" />, Dịch vụ vị trí của Google mới bật trong quá trình thiết lập ban đầu. Nếu bạn đặt chính sách này thành <ph name="GLS_DISABLED" /> hoặc không đặt, thì các dịch vụ vị trí sẽ luôn tắt trong quá trình thiết lập.
@@ -3892,6 +3920,13 @@
 
       Nếu bạn không đặt chính sách này, người dùng có thể thay đổi giao diện của trình duyệt theo ý muốn.</translation>
 <translation id="6195802366906945965">Xác định xem trình xác minh chứng chỉ tích hợp sẵn có được dùng để xác minh chứng chỉ máy chủ hay không</translation>
+<translation id="6198375221792846439">Chỉ định một khoảng thời gian mục tiêu khi hết thời gian thông báo chạy lại.
+
+      Người dùng sẽ nhận được thông báo về việc cần chạy lại trình duyệt hoặc khởi động lại thiết bị dựa trên các chế độ cài đặt chính sách <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> và <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" />. Nếu bạn đặt chính sách <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> thành "Bắt buộc", các trình duyệt và thiết bị sẽ bị buộc khởi động lại khi hết thời gian thông báo. Chính sách <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> này có thể dùng để trì hoãn thời điểm hết thời gian thông báo sao cho thời điểm này rơi vào một khoảng thời gian cụ thể.
+
+      Nếu bạn không đặt chính sách này, khoảng thời gian mục tiêu mặc định cho <ph name="PRODUCT_OS_NAME" /> sẽ là từ 2:00 sáng đến 4:00 sáng. Khoảng thời gian mục tiêu mặc định cho <ph name="PRODUCT_NAME" /> là cả ngày (tức là thời điểm hết thời gian thông báo sẽ không bao giờ bị trì hoãn).
+
+      Cảnh báo: Khi bạn đặt chính sách này, việc áp dụng các bản cập nhật phần mềm có thể bị chậm trễ.</translation>
 <translation id="6208896993204286313">Báo cáo thông tin chính sách của <ph name="PRODUCT_NAME" /></translation>
 <translation id="6210259502936598222">Báo cáo thông tin hệ điều hành và phiên bản của <ph name="PRODUCT_NAME" /></translation>
 <translation id="6212868225782276239">Tất cả các máy in đều hiển thị trừ những máy in trong danh sách cấm.</translation>
@@ -4070,6 +4105,7 @@
 <translation id="6464074037294098618">Bật tính năng Tự động điền cho địa chỉ</translation>
 <translation id="6467613372414922590">Cho phép các máy chủ Nhắn tin gốc ở cấp người dùng (cài đặt mà không cần có quyền quản trị).</translation>
 <translation id="6473623140202114570">Định cấu hình danh sách các miền mà Duyệt web an toàn sẽ không kích hoạt cảnh báo.</translation>
+<translation id="647645276885673708">Bật <ph name="LACROS_NAME" /> và đặt trình duyệt này làm trình duyệt chính</translation>
 <translation id="647698599569353771">Cho phép bật tính năng Chia sẻ lân cận.</translation>
 <translation id="6478258366184919502">Nguồn gốc thông tin đăng nhập và màn hình</translation>
 <translation id="6478261301433199402">Việc đặt chính sách này sẽ chỉ định hình ảnh <ph name="PLUGIN_VM_NAME" /> cho một người dùng. Hãy chỉ định chính sách này làm một chuỗi định dạng JSON, trong đó <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> cho biết vị trí tải xuống hình ảnh đó và chỉ định <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> làm một hàm băm SHA-256 dùng để xác minh tính toàn vẹn của tệp tải xuống.</translation>
@@ -4858,6 +4894,7 @@
 <translation id="7340034977315324840">Báo cáo thời gian hoạt động của thiết bị</translation>
 <translation id="7343004974628511824">Áp dụng các tùy chọn kiểm tra chặn hệ thống tên miền (DNS)</translation>
 <translation id="7343497214039883642">Tệp cấu hình máy dành cho in doanh nghiệp cho các thiết bị</translation>
+<translation id="7358359585412734876">Bật <ph name="LACROS_NAME" /></translation>
 <translation id="7358744897221281073">Nếu bạn bật tùy chọn cài đặt này, người dùng đã chọn sử dụng Trung tâm điều khiển điện thoại sẽ có thể tiếp tục thực hiện những việc như xem trang web trên điện thoại qua Chrome OS.
 
       Nếu bạn tắt tùy chọn cài đặt này, người dùng sẽ không được phép sử dụng tính năng này. Nếu bạn tắt chính sách PhoneHubAllowed, người dùng cũng sẽ không được phép sử dụng tính năng này.
@@ -5365,6 +5402,7 @@
 
       Nếu bạn không đặt hoặc đặt chính sách này thành Tắt, thì thiết bị đã đăng ký sẽ không báo cáo số liệu thống kê về thiết bị lưu trữ đó.</translation>
 <translation id="8044493735196713914">Báo cáo chế độ khởi động thiết bị</translation>
+<translation id="80453040817068401">Cho phép sử dụng trình duyệt <ph name="LACROS_NAME" /></translation>
 <translation id="8049769137921877885">Chính sách này kiểm soát việc có báo cáo dữ liệu về chính sách và thời điểm tìm nạp chính sách hay không.
 
       Khi bạn không đặt chính sách <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> hoặc đặt thành tắt, thì chính sách này sẽ bị bỏ qua.
@@ -5993,6 +6031,7 @@
 <translation id="8892286064305622118">Dung lượng ổ đĩa trống cần có cho <ph name="PLUGIN_VM_NAME" /></translation>
 <translation id="8892783613915541293">Số lần trì hoãn và các hành động cần thực hiện khi thiết bị ở trạng thái rảnh và chạy bằng nguồn điện AC</translation>
 <translation id="8897796778265450949">Giới hạn thời gian mà một người dùng được xác thực qua GAIA khi không có SAML có thể đăng nhập ở chế độ ngoại tuyến</translation>
+<translation id="889814528399907891">Cho phép người dùng bật <ph name="LACROS_NAME" /> và đặt trình duyệt này làm trình duyệt chính</translation>
 <translation id="8903283771634816230">Nếu bạn đặt chính sách này thành Bật, <ph name="PRODUCT_NAME" /> sẽ sử dụng máy in mặc định của hệ điều hành làm máy in đích mặc định để xem trước bản in.
 
       Nếu bạn đặt thành Tắt hoặc không đặt chính sách này, thì <ph name="PRODUCT_NAME" /> sẽ sử dụng những máy in đã dùng gần đây nhất làm máy in đích mặc định để xem trước bản in.</translation>
@@ -6138,6 +6177,7 @@
       Nếu bạn đặt chính sách này thành Tắt, thiết bị đã đăng ký sẽ không ghi hoặc báo cáo thời gian hoạt động.</translation>
 <translation id="9077227880520270584">Hẹn giờ tự động đăng nhập vào tài khoản trên thiết bị</translation>
 <translation id="9084985621503260744">Chỉ định xem hoạt động video có ảnh hưởng đến việc quản lý nguồn không</translation>
+<translation id="9088191250434406767">Nếu bạn đặt thành Bật hoặc không đặt chính sách này, thì người dùng sẽ được phép tìm kiếm bằng máy ảnh thông qua <ph name="GOOGLE_LENS_PRODUCT_NAME" />. Nếu bạn đặt chính sách này thành Tắt, người dùng sẽ không thấy nút <ph name="GOOGLE_LENS_PRODUCT_NAME" /> trong hộp tìm kiếm dù họ có thể sử dụng tính năng tìm kiếm bằng máy ảnh thông qua <ph name="GOOGLE_LENS_PRODUCT_NAME" />.</translation>
 <translation id="9088433379343318874">Cho phép nhà cung cấp nội dung của người dùng được giám sát</translation>
 <translation id="9088444059179765143">Định cấu hình phương thức phát hiện múi giờ tự động</translation>
 <translation id="9095999573959728902">Nếu bạn bật tùy chọn cài đặt này, người dùng sẽ được phép chọn sử dụng Trung tâm điều khiển điện thoại. Trung tâm này cho phép họ tương tác với điện thoại của mình trên một thiết bị Chrome OS.
@@ -6216,6 +6256,12 @@
 
       Phiên của người dùng sẽ được khôi phục sau khi chạy lại/khởi động.</translation>
 <translation id="9160028464653564229">Không cho phép trang web nào yêu cầu quyền truy cập vào cổng nối tiếp qua API nối tiếp</translation>
+<translation id="916461878260574432">Chỉ định xem có sử dụng phương pháp ngang hàng (P2P) cho các phần tải dữ liệu cập nhật hệ điều hành hay không.
+      Nếu bạn đặt chính sách này thành Bật, các thiết bị sẽ chia sẻ và cố gắng sử dụng các phần tải dữ liệu cập nhật trên mạng cục bộ (LAN). Nhờ đó, tình trạng nghẽn và mức sử dụng băng thông Internet có thể giảm đi. Nếu phần tải dữ liệu cập nhật này không dùng được trên mạng LAN, thì thiết bị sẽ quay lại dùng cách tải xuống từ một máy chủ cập nhật.
+      Nếu bạn đặt chính sách này thành Tắt, P2P sẽ không được dùng.
+
+      LƯU Ý: Các thiết bị dành cho doanh nghiệp và người tiêu dùng sẽ khác nhau về hoạt động mặc định: P2P sẽ bật trên các thiết bị được quản lý và tắt trên các thiết bị không được quản lý.</translation>
+<translation id="9164656078867027374">Xác định các miền được phép truy cập vào <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /></translation>
 <translation id="9167719789236691545">Tắt Drive trong ứng dụng Tệp dành cho <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="9187743794267626640">Vô hiệu hóa việc lắp bộ nhớ ngoài</translation>
 <translation id="9190456586252617675">Chính sách này kiểm soát chế độ của trải nghiệm làm quen với Trợ lý.
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index e3b15de..ae87b4ef 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -438,6 +438,17 @@
       請參閱 https://www.chromestatus.com/feature/4664843055398912。</translation>
 <translation id="1587585749332985896">禁止使用無頭模式</translation>
 <translation id="1588240398285670601">瀏覽器設定</translation>
+<translation id="1590071725627230651">這項設定針對 <ph name="LACROS_NAME" /> 瀏覽器提供了多個可用性選項。
+
+      如果將這項政策設為 <ph name="LACROS_AVAILABILITY_USER_CHOICE_VALUE" /> 或未設定,使用者就能啟用 <ph name="LACROS_NAME" /> 並設為主要瀏覽器。<ph name="LACROS_NAME" /> 仍可能受到 <ph name="LACROS_ALLOWED_POLICY_NAME" /> 政策禁止使用。
+
+      如果將這項政策設為 <ph name="LACROS_AVAILABILITY_LACROS_DISALLOWED_VALUE" />,使用者就無法使用 <ph name="LACROS_NAME" />。系統會忽略 <ph name="LACROS_ALLOWED_POLICY_NAME" /> 政策。
+
+      如果將這項政策設為 <ph name="LACROS_AVAILABILITY_SIDE_BY_SIDE_VALUE" />,<ph name="LACROS_NAME" /> 就會啟用,但不是主要瀏覽器。系統會忽略 <ph name="LACROS_ALLOWED_POLICY_NAME" /> 政策。
+
+      如果將這項政策設為 <ph name="LACROS_AVAILABILITY_LACROS_PRIMARY_VALUE" />,<ph name="LACROS_NAME" /> 就會啟用並設為主要瀏覽器。系統會忽略 <ph name="LACROS_ALLOWED_POLICY_NAME" /> 政策。
+
+      日後也可以使用 <ph name="LACROS_AVAILABILITY_LACROS_ONLY_VALUE" /> 一值,將 <ph name="LACROS_NAME" /> 設為 <ph name="PRODUCT_OS_NAME" />中唯一可用的瀏覽器。</translation>
 <translation id="1599424828227887013">在 Android 裝置上為指定來源啟用網站隔離</translation>
 <translation id="159946228300522107">如果將這項政策設為 True,Chrome 首次執行時會將第一個顯示的視窗最大化。
 
@@ -677,6 +688,7 @@
 <translation id="1920772397574801429">你可以透過這項政策,指定支援 <ph name="HTTP_NEGOTIATE" /> 驗證 (例如 Kerberos 驗證) 的 Android 驗證應用程式所提供的帳戶類型。驗證應用程式的供應商應可提供這類資訊。詳情請見 Chromium 計畫,網址為 https://goo.gl/hajyfN
 
       如果未設定這項政策,系統會關閉 Android 上的 <ph name="HTTP_NEGOTIATE" /> 驗證。</translation>
+<translation id="1925529914257504750">已啟用自動更新 P2P</translation>
 <translation id="1930127294345368978">單一列印工作可使用的紙張數量上限</translation>
 <translation id="193259052151668190">卸離式 USB 裝置許可清單</translation>
 <translation id="1933378685401357864">桌布圖片</translation>
@@ -752,6 +764,7 @@
           如果不設定這項政策,這項功能會由其本身的內部邏輯控管,使用者可手動設定這個內部邏輯。
 
           請注意,這項政策會分別套用至各個轉譯器程序,且轉譯器程序啟動時會使用這項政策最新的設定值。瀏覽器必須徹底重新啟動,以確保所有載入的分頁可收到一致的政策設定。即使不同程序採用不同的政策設定值,也不影響正常運作。</translation>
+<translation id="2029985289397958781">針對 Enterprise 使用者停用 <ph name="GOOGLE_LENS_PRODUCT_NAME" />相機輔助搜尋功能</translation>
 <translation id="2030905906517501646">預設搜尋引擎關鍵字</translation>
 <translation id="203096360153626918">這項政策對 Android 應用程式沒有影響。即使將這項政策設為 <ph name="FALSE" />,Android 應用程式仍可進入全螢幕模式。</translation>
 <translation id="2032848225007871645">你可以透過這項政策,控管可解鎖螢幕畫面的快速解鎖模式。
@@ -938,6 +951,13 @@
       供一般大眾使用的裝置不應設定這項政策。
 
       如果將這項政策設為 True 或不予設定,系統會在自動啟動的受管理訪客工作階段中,持續顯示隱私權警告通知,直到使用者關閉為止。</translation>
+<translation id="2281878365805647176">設定這項政策會開啟 Chrome 在 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> 中的限制登入功能,並防止使用者變更這項設定。使用者只能透過指定網域的帳戶存取 Google 工具,如要允許 gmail 或 googlemail 帳戶,請將 consumer_accounts 新增至網域清單。這項設定可防止使用者在需要 Google 驗證的受管理裝置上,使用不屬於明確允許網域的帳戶登入及新增次要帳戶。
+
+      如果將這項設定保留空白或不設定,則使用者可透過任何帳戶存取 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />。
+
+      使用者無法變更或覆寫這項設定。
+
+      注意:套用這項政策後,傳送給所有 google.com 網域的任何 HTTP 和 HTTPS 要求都會加上 X-GoogApps-Allowed-Domains 標頭。詳情請參閱以下說明文章:https://support.google.com/a/answer/1668854。</translation>
 <translation id="2289265947759479962">這項政策可控管系統是否要回報版本資訊,例如 OS 版本、OS 平台、OS 架構、<ph name="PRODUCT_NAME" /> 版本和 <ph name="PRODUCT_NAME" /> 發布版本。
 
       如果不設定 <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> 政策或設為停用,系統會忽略這項政策。
@@ -1004,6 +1024,7 @@
 
       設為 False 或不予設定時,鍵盤預設會產生媒體鍵指令。按下搜尋鍵即可將按鍵改為功能鍵。</translation>
 <translation id="2358176879566587521">這項政策已遭到移除,因此與這個版本的 <ph name="PRODUCT_NAME" /> 不相容。詳情請參閱 https://support.google.com/chrome/a/answer/7643500</translation>
+<translation id="2362469626417133796">重新啟動時間範圍</translation>
 <translation id="2364639863953745682">Google 助理入門使用體驗的模式</translation>
 <translation id="2384233438419344179">如果將這項政策設為啟用,網頁元素只要不屬於瀏覽器網址列中的網域,就無法設定 Cookie。如果將這項政策設為停用,這類元素將可設定 Cookie,且使用者無法變更這項設定。
 
@@ -1079,6 +1100,7 @@
 <translation id="2433516903565257847">應在指定天數後更新的裝置百分比。</translation>
 <translation id="2435052056904485763">Kerberos 委派伺服器許可清單</translation>
 <translation id="2435232509335686514"><ph name="FILE_SYSTEM_ENTERPRISE_CONNECTOR" /> 的下載檔案處理方式配置政策</translation>
+<translation id="2436302465999055995">將 <ph name="LACROS_NAME" /> 設為唯一可用的瀏覽器 (尚未實作)</translation>
 <translation id="2448315169529769573">如果將這項政策設為啟用,<ph name="PRODUCT_OS_NAME" />會將使用指標和診斷資料 (包括當機報告) 回報給 Google。如果將這項政策設為停用,系統會停用指標和診斷資料的報告功能。
 
        如果未設定這項政策,系統會在未受管理的裝置上,將指標和診斷資料的報告功能保持停用,而在受管理的裝置上則保持啟用。</translation>
@@ -1224,6 +1246,7 @@
 
       如果不設定這項政策,系統將套用 <ph name="PRINTERS_ALLOW_ALL" />。</translation>
 <translation id="2586117300379904732">允許電源管理的 Wake Lock</translation>
+<translation id="2586231026319371211">以當地時間為準,格式為 24 時制。</translation>
 <translation id="2587719089023392205">將 <ph name="PRODUCT_NAME" /> 設為預設瀏覽器</translation>
 <translation id="2588252329503406673">你可以透過這項政策,設定 <ph name="PRODUCT_OS_NAME" />在顯示登入畫面時,如果有一陣子沒有任何使用者活動,要採取哪些動作。這項政策可控管多項設定。如要瞭解這些設定各自的語義和值範圍,請參閱在工作階段中控制電源管理的相應政策。
 
@@ -1241,6 +1264,7 @@
 <translation id="2593762551209145088">一律不啟用安全瀏覽功能。</translation>
 <translation id="26023406105317310">設定 Kerberos 帳戶</translation>
 <translation id="2604182581880595781">設定網路檔案共用功能相關政策。</translation>
+<translation id="2608535066974278204">用於指定重新啟動時間範圍長度的時間段 (分鐘)。</translation>
 <translation id="2615240493030733717">回報時區資訊</translation>
 <translation id="2619966380594000538">如果將這項政策設為啟用或不設定,當你使用具潛在危險的指令列旗標啟動 Chrome 時,系統會顯示安全性警告。
 
@@ -1858,6 +1882,7 @@
 <translation id="3415954062311826850">ARC 不支援這項政策。</translation>
 <translation id="34160070798637152">控管裝置通用的網路設定。</translation>
 <translation id="3417130629744653218">允許網站查詢可用的付款方式。</translation>
+<translation id="3417391585519621050">針對 Enterprise 使用者啟用 <ph name="GOOGLE_LENS_PRODUCT_NAME" />相機輔助搜尋功能</translation>
 <translation id="3417418267404583991">如果這項政策設為 True 或未設定,<ph name="PRODUCT_OS_NAME" /> 會啟用訪客登入。訪客登入是匿名的使用者工作階段,並且不需要密碼。
 
       如果這項政策設為 False,<ph name="PRODUCT_OS_NAME" /> 不會允許開啟訪客工作階段。</translation>
@@ -3339,6 +3364,7 @@
       如果這項政策設為 0 以外的值,則系統會在指定的閒置時間過後,自動登出目前登入示範模式的使用者。
 
       該政策的指定值單位為毫秒。</translation>
+<translation id="55057839818162162">允許使用 <ph name="GOOGLE_LENS_PRODUCT_NAME" />相機輔助搜尋功能</translation>
 <translation id="5508307164752647432">啟用 Kerberos 功能</translation>
 <translation id="5511702823008968136">啟用書籤列</translation>
 <translation id="5512418063782665071">首頁網址</translation>
@@ -3355,6 +3381,7 @@
 <translation id="5526184558582921522">允許向 Quirks Server 發送查詢,並有機會下載硬體專屬設定檔</translation>
 <translation id="5526701598901867718">全部 (不安全)</translation>
 <translation id="5530347722229944744">封鎖有安全疑慮的下載作業</translation>
+<translation id="5535256585099022933">設定重新啟動的時間間隔</translation>
 <translation id="5535973522252703021">Kerberos 委派伺服器許可清單</translation>
 <translation id="553806128266843748">布林值標記,表示是否已啟用節流功能。</translation>
 <translation id="5540885720415375851">允許本機裝置搜尋</translation>
@@ -3629,6 +3656,7 @@
 <translation id="5890063326284543943">控管 Serial API 的使用</translation>
 <translation id="5897913798715600338">使用快速充電技術為電池充電。</translation>
 <translation id="5898486742390981550">如有多位使用者同時登入,只有主要使用者可以使用 Android 應用程式。</translation>
+<translation id="5899751601113377553">禁止使用者使用 <ph name="LACROS_NAME" /></translation>
 <translation id="5901427587865226597">僅限雙面列印</translation>
 <translation id="5905473632148429217">啟用線上 OCSP/CRL 檢查</translation>
 <translation id="5907283448020542268">除非 <ph name="DEFAULT_GEOLOCATION_SETTING_POLICY_NAME" /> 政策設為 <ph name="BLOCK_GEOLOCATION_SETTING" />,否則在初始設定期間設定 <ph name="GLS_ENABLED" /> 將會啟用 Google 定位服務。如果將這項政策設為 <ph name="GLS_DISABLED" /> 或不設定,系統會在設定期間將定位服務保持停用。
@@ -3798,6 +3826,13 @@
 
       如果不設定這項政策,使用者則可依照個人偏好變更瀏覽器的主題。</translation>
 <translation id="6195802366906945965">決定是否使用內建憑證驗證器來驗證伺服器憑證</translation>
+<translation id="6198375221792846439">指定重新啟動通知期結束的目標時間範圍。
+
+      系統會根據 <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> 和 <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" /> 政策設定,通知使用者必須重新啟動瀏覽器或裝置。如果 <ph name="RELAUNCH_NOTIFICATION_POLICY_NAME" /> 政策設為「Required」,系統就會在通知期結束時強制重新啟動瀏覽器和裝置。這項 <ph name="RELAUNCH_WINDOW_POLICY_NAME" /> 政策可用於延後通知期的結束時間,讓結束時間落在指定時間範圍內。
+
+      未設定這項政策時,<ph name="PRODUCT_OS_NAME" />預設的目標時間範圍會介於凌晨 2 點至 4 點之間,<ph name="PRODUCT_NAME" /> 預設的目標時間範圍則是全天 (也就是說,通知期的結束時間絕不會延後)。
+
+      警告:設定這項政策可能導致軟體更新延遲套用。</translation>
 <translation id="6208896993204286313">回報 <ph name="PRODUCT_NAME" /> 政策資訊</translation>
 <translation id="6210259502936598222">回報作業系統和 <ph name="PRODUCT_NAME" /> 版本資訊</translation>
 <translation id="6212868225782276239">顯示所有印表機 (黑名單中的印表機除外)。</translation>
@@ -3972,6 +4007,7 @@
 <translation id="6464074037294098618">啟用地址的自動填入功能</translation>
 <translation id="6467613372414922590">允許使用者層級的內建訊息傳遞主機 (在無管理員權限的情況下安裝)。</translation>
 <translation id="6473623140202114570">設定安全瀏覽功能在哪些網域中不會觸發警告。</translation>
+<translation id="647645276885673708">啟用 <ph name="LACROS_NAME" /> 並設為主要瀏覽器</translation>
 <translation id="647698599569353771">允許啟用鄰近分享功能。</translation>
 <translation id="6478258366184919502">登入及螢幕來源</translation>
 <translation id="6478261301433199402">你可以透過這項政策,指定使用者的 <ph name="PLUGIN_VM_NAME" /> 映像檔。請使用 JSON 格式字串指定這項政策,其中 <ph name="URL_PLUGIN_VM_IMAGE_FIELD" /> 可指定要下載映像檔的位置,而 <ph name="HASH_PLUGIN_VM_IMAGE_FIELD" /> 可做為 SHA-256 雜湊,用於驗證下載內容的完整性。</translation>
@@ -4757,6 +4793,7 @@
 <translation id="7340034977315324840">回報裝置活動時間</translation>
 <translation id="7343004974628511824">執行 DNS 攔截檢查功能</translation>
 <translation id="7343497214039883642">裝置專用企業印表機設定檔</translation>
+<translation id="7358359585412734876">啟用 <ph name="LACROS_NAME" /></translation>
 <translation id="7358744897221281073">如果啟用這項設定,已開啟 Phone Hub 功能的使用者將可在 Chrome 作業系統上繼續完成工作,例如繼續瀏覽手機的網頁。
 
       如果停用這項設定,使用者就無法使用這項功能。如果停用 PhoneHubAllowed 政策,使用者也會無法使用這項功能。
@@ -5255,6 +5292,7 @@
 
       如果將這項政策設為停用或不設定,已註冊的裝置不會回報儲存裝置統計資料。</translation>
 <translation id="8044493735196713914">回報裝置啟動模式</translation>
+<translation id="80453040817068401">將 <ph name="LACROS_NAME" /> 設為可用瀏覽器</translation>
 <translation id="8049769137921877885">這項政策可控管系統是否要回報政策資料和擷取政策的時間。
 
       如果不設定 <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> 政策或設為停用,系統會忽略這項政策。
@@ -5872,6 +5910,7 @@
 <translation id="8892286064305622118"><ph name="PLUGIN_VM_NAME" /> 需要的可用磁碟空間</translation>
 <translation id="8892783613915541293">使用 AC 電源供電的裝置閒置時,系統採取的動作和延遲管理電源行動</translation>
 <translation id="8897796778265450949">限制透過 GAIA 驗證 (未使用 SAML) 的使用者可離線登入的時間</translation>
+<translation id="889814528399907891">允許使用者啟用 <ph name="LACROS_NAME" /> 並設為主要瀏覽器</translation>
 <translation id="8903283771634816230">如果將這項政策設為啟用,<ph name="PRODUCT_NAME" /> 將使用作業系統的預設印表機,做為列印預覽的預設目的地。
 
       如果將這項政策設為停用或不設定,則 <ph name="PRODUCT_NAME" /> 會使用最近一次用過的印表機,做為列印預覽的預設目的地。</translation>
@@ -6017,6 +6056,7 @@
       如果將這項政策設為停用,已註冊的裝置不會記錄或回報活動時間。</translation>
 <translation id="9077227880520270584">裝置本機帳戶自動登入計時器</translation>
 <translation id="9084985621503260744">指定會影響電源管理的視訊活動</translation>
+<translation id="9088191250434406767">如果將這項政策設為 Enabled 或不設定,使用者就可以使用 <ph name="GOOGLE_LENS_PRODUCT_NAME" />透過相機進行搜尋。如果將這項政策設為 Disabled,即使裝置支援 <ph name="GOOGLE_LENS_PRODUCT_NAME" />相機輔助搜尋功能,使用者在搜尋框中也不會看到 [<ph name="GOOGLE_LENS_PRODUCT_NAME" />] 按鈕。</translation>
 <translation id="9088433379343318874">啟用受監管的使用者內容提供者</translation>
 <translation id="9088444059179765143">設定自動偵測時區方式</translation>
 <translation id="9095999573959728902">如果啟用這項設定,使用者將可開啟 Phone Hub 功能,進而在搭載 Chrome 作業系統的裝置上與手機互動。
@@ -6088,6 +6128,12 @@
 
       使用者的工作階段會在重新啟動後恢復。</translation>
 <translation id="9160028464653564229">不允許任何網站透過 Serial API 要求存取序列埠</translation>
+<translation id="916461878260574432">指定是否使用 P2P 處理 OS 更新酬載。
+      如果設為 True,裝置將共用並試圖消耗 LAN 上的更新酬載,這可能降低網際網路頻寬用量並減輕壅塞。如果 LAN 上沒有更新酬載,裝置將回到更新伺服器進行下載。
+      如果設為 False,系統就不會使用 P2P。
+
+      注意:消費者專用裝置與企業專用裝置的預設行為有所不同;受管理的裝置預設會啟用 P2P,未受管理的裝置則不會。</translation>
+<translation id="9164656078867027374">定義可存取 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> 的網域</translation>
 <translation id="9167719789236691545">禁止在 <ph name="PRODUCT_OS_NAME" />的「檔案」應用程式中使用 Google 雲端硬碟</translation>
 <translation id="9187743794267626640">停用外部儲存裝置掛載功能</translation>
 <translation id="9190456586252617675">這項政策可控管 Google 助理入門使用體驗的模式。
diff --git a/components/signin/OWNERS b/components/signin/OWNERS
index e2126a9..9dfe6d9b 100644
--- a/components/signin/OWNERS
+++ b/components/signin/OWNERS
@@ -1,3 +1,4 @@
+alexilin@chromium.org
 bsazonov@chromium.org
 droger@chromium.org
 msalama@chromium.org
diff --git a/components/signin/internal/identity_manager/BUILD.gn b/components/signin/internal/identity_manager/BUILD.gn
index f2f6cd4..171d8a071 100644
--- a/components/signin/internal/identity_manager/BUILD.gn
+++ b/components/signin/internal/identity_manager/BUILD.gn
@@ -167,6 +167,7 @@
     "//components/signin/public/base:signin_buildflags",
     "//components/signin/public/base:test_support",
     "//components/signin/public/identity_manager",
+    "//components/signin/public/identity_manager:test_support",
     "//components/signin/public/webdata",
     "//components/sync_preferences:test_support",
     "//components/webdata/common",
@@ -181,8 +182,6 @@
 
   if (is_android) {
     sources += [ "profile_oauth2_token_service_delegate_android_unittest.cc" ]
-
-    deps += [ "//components/signin/public/identity_manager:test_support" ]
   }
 
   if (is_chromeos_ash) {
diff --git a/components/signin/internal/identity_manager/account_tracker_service_unittest.cc b/components/signin/internal/identity_manager/account_tracker_service_unittest.cc
index e52e1547..276f18b 100644
--- a/components/signin/internal/identity_manager/account_tracker_service_unittest.cc
+++ b/components/signin/internal/identity_manager/account_tracker_service_unittest.cc
@@ -36,7 +36,7 @@
 #include "testing/gtest/include/gtest/gtest.h"
 
 #if defined(OS_ANDROID)
-#include "components/signin/internal/identity_manager/child_account_info_fetcher_android.h"
+#include "components/signin/public/identity_manager/identity_test_utils.h"
 #endif
 
 namespace {
@@ -177,7 +177,9 @@
       : signin_client_(&pref_service_),
         fake_oauth2_token_service_(&pref_service_) {
 #if defined(OS_ANDROID)
-    ChildAccountInfoFetcherAndroid::InitializeForTests();
+    // Mock AccountManagerFacade in java code for tests that require its
+    // initialization.
+    signin::SetUpMockAccountManagerFacade();
 #endif
 
     AccountTrackerService::RegisterPrefs(pref_service_.registry());
diff --git a/components/signin/internal/identity_manager/child_account_info_fetcher_android.cc b/components/signin/internal/identity_manager/child_account_info_fetcher_android.cc
index e8bad35..b59fe1c 100644
--- a/components/signin/internal/identity_manager/child_account_info_fetcher_android.cc
+++ b/components/signin/internal/identity_manager/child_account_info_fetcher_android.cc
@@ -31,11 +31,6 @@
       new ChildAccountInfoFetcherAndroid(service, account_info));
 }
 
-void ChildAccountInfoFetcherAndroid::InitializeForTests() {
-  signin::Java_ChildAccountInfoFetcher_initializeForTests(
-      base::android::AttachCurrentThread());
-}
-
 ChildAccountInfoFetcherAndroid::ChildAccountInfoFetcherAndroid(
     AccountFetcherService* service,
     const CoreAccountInfo& account_info) {
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/ChildAccountInfoFetcher.java b/components/signin/public/android/java/src/org/chromium/components/signin/ChildAccountInfoFetcher.java
index 83391a2..e438842 100644
--- a/components/signin/public/android/java/src/org/chromium/components/signin/ChildAccountInfoFetcher.java
+++ b/components/signin/public/android/java/src/org/chromium/components/signin/ChildAccountInfoFetcher.java
@@ -10,8 +10,6 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 
-import androidx.annotation.VisibleForTesting;
-
 import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
 import org.chromium.base.ThreadUtils;
@@ -91,13 +89,6 @@
         ContextUtils.getApplicationContext().unregisterReceiver(mAccountFlagsChangedReceiver);
     }
 
-    @VisibleForTesting
-    @CalledByNative
-    private static void initializeForTests() {
-        AccountManagerDelegate delegate = new SystemAccountManagerDelegate();
-        AccountManagerFacadeProvider.setInstanceForTests(new AccountManagerFacadeImpl(delegate));
-    }
-
     @NativeMethods
     interface Natives {
         void setIsChildAccount(
diff --git a/components/signin/public/identity_manager/identity_manager_unittest.cc b/components/signin/public/identity_manager/identity_manager_unittest.cc
index d999444..0599721 100644
--- a/components/signin/public/identity_manager/identity_manager_unittest.cc
+++ b/components/signin/public/identity_manager/identity_manager_unittest.cc
@@ -2387,9 +2387,9 @@
 #if defined(OS_ANDROID)
 TEST_F(IdentityManagerTest, ForceRefreshOfExtendedAccountInfo) {
   // The flow of this test results in an interaction with
-  // ChildAccountInfoFetcherAndroid, which requires initialization in order to
-  // avoid a crash.
-  ChildAccountInfoFetcherAndroid::InitializeForTests();
+  // ChildAccountInfoFetcherAndroid, which requires initialization of
+  // AccountManagerFacade in java code to avoid a crash.
+  SetUpMockAccountManagerFacade();
 
   identity_manager()->GetAccountFetcherService()->OnNetworkInitialized();
   AccountInfo account_info =
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb
index 61c0257..08509fc 100644
--- a/components/strings/components_strings_az.xtb
+++ b/components/strings/components_strings_az.xtb
@@ -1707,6 +1707,7 @@
 <translation id="7481312909269577407">İrəli</translation>
 <translation id="7485870689360869515">Heç bir data tapılmadı.</translation>
 <translation id="7495528107193238112">Bu məzmun bloklanıb. Problemi düzəltmək üçün sayt sahibi ilə əlaqə saxlayın.</translation>
+<translation id="7498193950643227031">Ölçüsü dəyişdirildiyi təqdirdə gözlənilmədən hərəkət edə bilər. İndi <ph name="SETTINGS" /> bölməsində tətbiqlərin ölçüsünü dəyişdirmək imkanını məhdudlaşdıra bilərsiniz.</translation>
 <translation id="7503664977220660814">İndicə parolunuzu aldadıcı saytda daxil etdiniz. Chromium <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> saytlarında və bu paroldan istifadə etdiyiniz digər saytlarda saxlanılmış parollarınızı indi yoxlamağı tövsiyə edir.</translation>
 <translation id="7508255263130623398">Qaytarılmış qaydalar cihaz İD'si boşdur və ya cari cihaz İD'si ilə üst-üstə düşmür</translation>
 <translation id="7508870219247277067">Avokado Yaşılı</translation>
@@ -1915,6 +1916,7 @@
 <translation id="8249296373107784235">Dayandırın</translation>
 <translation id="8249320324621329438">Son əldə etmə:</translation>
 <translation id="8253091569723639551">Faktura ünvanı tələb olunur</translation>
+<translation id="8257387598443225809">Bu tətbiq mobil üçün nəzərdə tutulmuşdur</translation>
 <translation id="825929999321470778">Yadda Saxlanmış Bütün Parolları Göstərin</translation>
 <translation id="8261506727792406068">Silin</translation>
 <translation id="8262952874573525464">Aşağıdan kənarını tikin</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb
index a381fca..0d06b4f 100644
--- a/components/strings/components_strings_de.xtb
+++ b/components/strings/components_strings_de.xtb
@@ -1699,6 +1699,7 @@
 <translation id="7481312909269577407">Vorwärts</translation>
 <translation id="7485870689360869515">Keine Daten gefunden</translation>
 <translation id="7495528107193238112">Dieser Inhalt ist blockiert. Setzen Sie sich mit dem Websiteinhaber in Verbindung, um das Problem zu beheben.</translation>
+<translation id="7498193950643227031">Die App kann unerwartetes Verhalten aufweisen, wenn ihre Größe angepasst wird. Sie können jetzt die Möglichkeit zur Größenanpassung von Apps in den <ph name="SETTINGS" /> einschränken.</translation>
 <translation id="7503664977220660814">Sie haben Ihr Passwort gerade auf einer verdächtigen Seite eingegeben. Chromium empfiehlt, Ihre gespeicherten Passwörter für <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> und alle anderen Websites, auf denen Sie dieses Passwort verwenden, zu prüfen.</translation>
 <translation id="7508255263130623398">Zurückgegebene Geräte-ID der Richtlinie ist leer oder entspricht nicht der aktuellen Geräte-ID</translation>
 <translation id="7508870219247277067">Avocadogrün</translation>
@@ -1907,6 +1908,7 @@
 <translation id="8249296373107784235">Abbrechen</translation>
 <translation id="8249320324621329438">Letzter Abruf: </translation>
 <translation id="8253091569723639551">Rechnungsadresse ist erforderlich</translation>
+<translation id="8257387598443225809">Diese App wurde für Mobilgeräte entwickelt</translation>
 <translation id="825929999321470778">Alle gespeicherten Passwörter anzeigen</translation>
 <translation id="8261506727792406068">Löschen</translation>
 <translation id="8262952874573525464">Mehrere Heftklammern unten</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index 70aa58f..c4f01a2 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -1702,6 +1702,7 @@
 <translation id="7481312909269577407">Reenviar</translation>
 <translation id="7485870689360869515">No se encontró ningún dato.</translation>
 <translation id="7495528107193238112">Este contenido está bloqueado. Comunícate con el propietario del sitio para solucionar el problema.</translation>
+<translation id="7498193950643227031">Es posible que, si se cambia su tamaño, se comporte de forma inesperada. En <ph name="SETTINGS" />, ahora puedes limitar la capacidad de cambiar el tamaño de las apps.</translation>
 <translation id="7503664977220660814">Ingresaste tu contraseña en un sitio engañoso. Chromium te recomienda revisar las contraseñas guardadas para <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> y otros sitios donde uses esta contraseña.</translation>
 <translation id="7508255263130623398">El ID de dispositivo de la política que se muestra está vacío o no coincide con el ID de dispositivo actual</translation>
 <translation id="7508870219247277067">Verde aguacate</translation>
@@ -1910,6 +1911,7 @@
 <translation id="8249296373107784235">Anular</translation>
 <translation id="8249320324621329438">Se obtuvo por última vez:</translation>
 <translation id="8253091569723639551">Se requiere una dirección de facturación</translation>
+<translation id="8257387598443225809">Esta app está diseñada para dispositivos móviles</translation>
 <translation id="825929999321470778">Mostrar todas las contraseñas guardadas</translation>
 <translation id="8261506727792406068">Borrar</translation>
 <translation id="8262952874573525464">Costura del borde inferior</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb
index db077a3..ec6f1a0 100644
--- a/components/strings/components_strings_es.xtb
+++ b/components/strings/components_strings_es.xtb
@@ -1712,6 +1712,7 @@
 <translation id="7481312909269577407">Adelante</translation>
 <translation id="7485870689360869515">No se han encontrado datos.</translation>
 <translation id="7495528107193238112">Este contenido está bloqueado. Para solucionar el problema, ponte en contacto con el propietario del sitio web.</translation>
+<translation id="7498193950643227031">Si se modifica el tamaño de la aplicación, es posible que se comporte de forma inesperada. Ahora puedes limitar la capacidad de modificar el tamaño de las aplicaciones en <ph name="SETTINGS" />.</translation>
 <translation id="7503664977220660814">Acabas de escribir tu contraseña en un sitio web engañoso. Chromium te recomienda que compruebes las contraseñas que has guardado en <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> y otros sitios en los que uses esta contraseña.</translation>
 <translation id="7508255263130623398">El ID de dispositivo de política devuelto está vacío o no coincide con el ID de dispositivo actual</translation>
 <translation id="7508870219247277067">Verde aguacate</translation>
@@ -1920,6 +1921,7 @@
 <translation id="8249296373107784235">Anular</translation>
 <translation id="8249320324621329438">Última comprobación:</translation>
 <translation id="8253091569723639551">Se necesita una dirección de facturación</translation>
+<translation id="8257387598443225809">Esta aplicación se ha diseñado para móviles</translation>
 <translation id="825929999321470778">Mostrar todas las contraseñas guardadas</translation>
 <translation id="8261506727792406068">Eliminar</translation>
 <translation id="8262952874573525464">Grapado en el borde inferior</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb
index 70256c5..f396385 100644
--- a/components/strings/components_strings_fr.xtb
+++ b/components/strings/components_strings_fr.xtb
@@ -1710,6 +1710,7 @@
 <translation id="7481312909269577407">Avancer</translation>
 <translation id="7485870689360869515">Aucune donnée n'a été trouvée.</translation>
 <translation id="7495528107193238112">Ce contenu est bloqué. Pour résoudre le problème, contactez le propriétaire du site.</translation>
+<translation id="7498193950643227031">Une appli redimensionnée peut avoir un comportement inattendu. Vous pouvez limiter l'utilisation du redimensionnement d'applis dans <ph name="SETTINGS" />.</translation>
 <translation id="7503664977220660814">Vous venez de saisir votre mot de passe sur un site trompeur. Chromium vous recommande de vérifier vos mots de passe enregistrés pour <ph name="WEBSITE_1" /> et <ph name="WEBSITE_2" />, ainsi que les autres sites pour lesquels vous utilisez ce mot de passe actuellement.</translation>
 <translation id="7508255263130623398">L'ID d'appareil de la règle renvoyé est vide ou ne correspond pas à l'ID d'appareil actuel.</translation>
 <translation id="7508870219247277067">Vert avocat</translation>
@@ -1918,6 +1919,7 @@
 <translation id="8249296373107784235">Annuler</translation>
 <translation id="8249320324621329438">Dernière récupération : </translation>
 <translation id="8253091569723639551">Adresse de facturation obligatoire</translation>
+<translation id="8257387598443225809">Cette appli est conçue pour les mobiles</translation>
 <translation id="825929999321470778">Afficher tous les mots de passe enregistrés</translation>
 <translation id="8261506727792406068">Supprimer</translation>
 <translation id="8262952874573525464">Agrafage par le bord inférieur</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb
index 716ea30..fba6610a 100644
--- a/components/strings/components_strings_id.xtb
+++ b/components/strings/components_strings_id.xtb
@@ -1700,6 +1700,7 @@
 <translation id="7481312909269577407">Maju</translation>
 <translation id="7485870689360869515">Tidak ada data yang ditemukan.</translation>
 <translation id="7495528107193238112">Konten ini diblokir. Hubungi pemilik situs untuk memperbaiki masalah.</translation>
+<translation id="7498193950643227031">Aplikasi mungkin menampilkan perilaku yang tidak terduga jika diubah ukurannya. Anda kini dapat membatasi kemampuan untuk mengubah ukuran aplikasi di <ph name="SETTINGS" />.</translation>
 <translation id="7503664977220660814">Anda baru saja memasukkan sandi ke situs penipuan. Chromium merekomendasikan Anda memeriksa sandi yang disimpan untuk <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, dan situs lain tempat Anda menggunakan sandi ini sekarang.</translation>
 <translation id="7508255263130623398">ID perangkat kebijakan yang dikembalikan kosong atau tidak cocok dengan ID perangkat saat ini</translation>
 <translation id="7508870219247277067">Hijau Avokad</translation>
@@ -1908,6 +1909,7 @@
 <translation id="8249296373107784235">Batalkan</translation>
 <translation id="8249320324621329438">Terakhir diambil:</translation>
 <translation id="8253091569723639551">Perlu alamat penagihan</translation>
+<translation id="8257387598443225809">Aplikasi ini didesain untuk perangkat seluler</translation>
 <translation id="825929999321470778">Tampilkan Semua Sandi Tersimpan</translation>
 <translation id="8261506727792406068">Hapus</translation>
 <translation id="8262952874573525464">Jahitan tepi di bawah</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb
index 6c92efa5..1b09080 100644
--- a/components/strings/components_strings_it.xtb
+++ b/components/strings/components_strings_it.xtb
@@ -1708,6 +1708,7 @@
 <translation id="7481312909269577407">Avanti</translation>
 <translation id="7485870689360869515">Nessun dato trovato.</translation>
 <translation id="7495528107193238112">Questi contenuti sono bloccati. Contatta il proprietario del sito per risolvere il problema.</translation>
+<translation id="7498193950643227031">Se viene ridimensionata potrebbe avere un comportamento imprevisto. Ora puoi limitare la possibilità di ridimensionare le app nelle <ph name="SETTINGS" />.</translation>
 <translation id="7503664977220660814">Hai appena inserito la tua password su un sito ingannevole. Chromium ti consiglia di controllare le password salvate per <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> e altri siti su cui utilizzi questa password.</translation>
 <translation id="7508255263130623398">L'ID dispositivo della norma restituito è vuoto o non corrisponde all'ID dispositivo corrente</translation>
 <translation id="7508870219247277067">Verde pisello</translation>
@@ -1916,6 +1917,7 @@
 <translation id="8249296373107784235">Interrompi</translation>
 <translation id="8249320324621329438">Ultimo recupero:</translation>
 <translation id="8253091569723639551">Indirizzo di fatturazione obbligatorio</translation>
+<translation id="8257387598443225809">Questa app è stata progettata per i dispositivi mobili</translation>
 <translation id="825929999321470778">Mostra tutte le password salvate</translation>
 <translation id="8261506727792406068">Elimina</translation>
 <translation id="8262952874573525464">Impuntura in basso</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb
index 2436bb5c..7763f65 100644
--- a/components/strings/components_strings_ja.xtb
+++ b/components/strings/components_strings_ja.xtb
@@ -1701,6 +1701,7 @@
 <translation id="7481312909269577407">進む</translation>
 <translation id="7485870689360869515">データが見つかりません。</translation>
 <translation id="7495528107193238112">このコンテンツはブロックされました。サイト所有者に連絡して問題を解決してください。</translation>
+<translation id="7498193950643227031">サイズが変更された場合、予期しない動作をする可能性があります。<ph name="SETTINGS" />でアプリのサイズ変更を制限できるようになりました。</translation>
 <translation id="7503664977220660814">偽のサイトでパスワードを入力しました。<ph name="WEBSITE_1" />、<ph name="WEBSITE_2" /> のほか、このパスワードを使用しているサイトで、保存したパスワードを今すぐ確認することをおすすめします。</translation>
 <translation id="7508255263130623398">返されたポリシーのデバイス ID が空であるか、現在のデバイス ID と一致しません</translation>
 <translation id="7508870219247277067">アボカド グリーン</translation>
@@ -1909,6 +1910,7 @@
 <translation id="8249296373107784235">中止</translation>
 <translation id="8249320324621329438">前回の取得:</translation>
 <translation id="8253091569723639551">請求先住所が必要です</translation>
+<translation id="8257387598443225809">このアプリはモバイル向けに設計されています</translation>
 <translation id="825929999321470778">保存したパスワードをすべて表示</translation>
 <translation id="8261506727792406068">削除</translation>
 <translation id="8262952874573525464">端綴じ(下)</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb
index 7726591..6a662dd 100644
--- a/components/strings/components_strings_kk.xtb
+++ b/components/strings/components_strings_kk.xtb
@@ -1711,6 +1711,7 @@
 <translation id="7481312909269577407">Басқаға жіберу</translation>
 <translation id="7485870689360869515">Деректер табылмады.</translation>
 <translation id="7495528107193238112">Бұл мазмұн бөгелген. Мәселені шешу үшін сайт иесімен байланыс орнатыңыз.</translation>
+<translation id="7498193950643227031">Өлшемін өзгертсеңіз, дұрыс жұмыс істемеуі мүмкін. Қолданбалардың өлшемін өзгертуді <ph name="SETTINGS" /> бөлімінен шектеуіңізге болады.</translation>
 <translation id="7503664977220660814">Жаңа ғана құпия сөзіңізді жалған сайтқа енгіздіңіз. Chromium осы құпия сөз пайдаланылатын <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> және басқа сайттар үшін сақталған құпия сөздерді тексеруді ұсынады.</translation>
 <translation id="7508255263130623398">Қайтарылған құрылғының сервердегі идентификаторы бос немесе оның ағымдағы идентификаторына сәйкес келмейді</translation>
 <translation id="7508870219247277067">Қою жасыл</translation>
@@ -1919,6 +1920,7 @@
 <translation id="8249296373107784235">Доғару</translation>
 <translation id="8249320324621329438">Соңғы алынғаны:</translation>
 <translation id="8253091569723639551">Төлем мекенжайы қажет</translation>
+<translation id="8257387598443225809">Бұл қолданба мобильдік құрылғыға арналған</translation>
 <translation id="825929999321470778">Барлық сақталған құпия сөздерді көрсету</translation>
 <translation id="8261506727792406068">Жою</translation>
 <translation id="8262952874573525464">Төменгі жиегін тігу</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb
index 34a6055..ac59d6815 100644
--- a/components/strings/components_strings_ko.xtb
+++ b/components/strings/components_strings_ko.xtb
@@ -1700,6 +1700,7 @@
 <translation id="7481312909269577407">앞으로</translation>
 <translation id="7485870689360869515">데이터 없음</translation>
 <translation id="7495528107193238112">이 콘텐츠는 차단되어 있습니다. 문제를 해결하려면 사이트 소유자에게 문의하세요.</translation>
+<translation id="7498193950643227031">앱 크기를 조절하면 예상치 못한 동작이 발생할 수 있습니다. 이제 <ph name="SETTINGS" />에서 앱 크기 조절 기능을 제한할 수 있습니다.</translation>
 <translation id="7503664977220660814">사기성 사이트에 비밀번호를 입력했습니다. 지금 바로 <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> 등 동일한 비밀번호를 사용한 사이트에 저장된 비밀번호를 확인하는 것이 좋습니다.</translation>
 <translation id="7508255263130623398">반환된 정책 기기 ID가 비었거나 현재 기기 ID와 일치하지 않음</translation>
 <translation id="7508870219247277067">아보카도 녹색</translation>
@@ -1908,6 +1909,7 @@
 <translation id="8249296373107784235">중단</translation>
 <translation id="8249320324621329438">마지막으로 가져온 시간:</translation>
 <translation id="8253091569723639551">청구지 주소 필요</translation>
+<translation id="8257387598443225809">모바일용 앱</translation>
 <translation id="825929999321470778">저장된 비밀번호 모두 표시</translation>
 <translation id="8261506727792406068">삭제</translation>
 <translation id="8262952874573525464">하단 에지 스티치</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb
index d236d28..671935e 100644
--- a/components/strings/components_strings_ky.xtb
+++ b/components/strings/components_strings_ky.xtb
@@ -1711,6 +1711,7 @@
 <translation id="7481312909269577407">Багыттоо</translation>
 <translation id="7485870689360869515">Дайындар табылган жок.</translation>
 <translation id="7495528107193238112">Бул мазмун бөгөттөлгөн. Көйгөйдү чечүү үчүн сайттын ээсине байланышыңыз.</translation>
+<translation id="7498193950643227031">Эгер өлчөмүн өзгөртсөңүз, туура эмес иштеши мүмкүн. Эми колдонмолордун өлчөмүн өзгөртүүгө <ph name="SETTINGS" /> аркылуу чектөө койсоңуз болот.</translation>
 <translation id="7503664977220660814">Сырсөзүңүздү жаңы эле адаштыруучу сайтта киргиздиңиз. Chromium <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> жана башка сайттарда колдонгон ушул жана сакталган сырсөздөрүңүздү текшерүүнү сунуштайт.</translation>
 <translation id="7508255263130623398">Кайтарылган саясат түзмөгүнүн id'си бош же учурдагы түзмөктүн id'сине дал келбейт</translation>
 <translation id="7508870219247277067">Жашыл (авокадо)</translation>
@@ -1919,6 +1920,7 @@
 <translation id="8249296373107784235">Токтотуу</translation>
 <translation id="8249320324621329438">Акыркы алынган:</translation>
 <translation id="8253091569723639551">Төлөмдүн дареги талап кылынат</translation>
+<translation id="8257387598443225809">Бул колдонмо мобилдик түзмөк үчүн түзүлгөн</translation>
 <translation id="825929999321470778">Бардык сакталган сырсөздөрдү көрсөтүү</translation>
 <translation id="8261506727792406068">Жок кылуу</translation>
 <translation id="8262952874573525464">Төмөнкү четин жамоо</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb
index 6af200e..e6ce347 100644
--- a/components/strings/components_strings_ml.xtb
+++ b/components/strings/components_strings_ml.xtb
@@ -1704,6 +1704,7 @@
 <translation id="7481312909269577407">മുന്നോട്ട്</translation>
 <translation id="7485870689360869515">ഡാറ്റകളൊന്നും കണ്ടെത്തിയില്ല.</translation>
 <translation id="7495528107193238112">ഈ ഉള്ളടക്കം ബ്ലോക്ക് ചെയ്‌തിരിക്കുന്നു. പ്രശ്‌നം പരിഹരിക്കാൻ സൈറ്റിന്റെ ഉടമയുമായി ബന്ധപ്പെടുക.</translation>
+<translation id="7498193950643227031">വലുപ്പം മാറ്റിയാൽ അത് അപ്രതീക്ഷിതമായ രീതിയിൽ പ്രവർത്തിച്ചേക്കാം. ആപ്പുകളുടെ വലുപ്പം മാറ്റാനുള്ള ശേഷി നിങ്ങൾക്ക് ഇപ്പോൾ <ph name="SETTINGS" /> എന്നതിൽ പരിമിതപ്പെടുത്താം.</translation>
 <translation id="7503664977220660814">വഞ്ചനാപരമായ സൈറ്റിൽ നിങ്ങൾ ഇപ്പോൾ പാസ്‍വേഡ് നൽകി. <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, കൂടാതെ നിങ്ങൾ ഇപ്പോൾ ഈ പാസ്‌വേഡ് ഉപയോഗിക്കുന്ന മറ്റ് സൈറ്റുകൾ എന്നിവയ്‌ക്കായി നിങ്ങളുടെ സംരക്ഷിച്ച പാസ്‌വേഡുകൾ പരിശോധിക്കാൻ Chromium നിർദ്ദേശിക്കുന്നു.</translation>
 <translation id="7508255263130623398">നൽകിയ നയ ഉപകരണ ഐഡി ശൂന്യമാണ് അല്ലെങ്കിൽ നിലവിലെ ഉപകരണ ഐഡിയുമായി യോജിക്കുന്നില്ല</translation>
 <translation id="7508870219247277067">അവക്കാഡോ പച്ച</translation>
@@ -1912,6 +1913,7 @@
 <translation id="8249296373107784235">ഉപേക്ഷിക്കുക</translation>
 <translation id="8249320324621329438">അവസാനം ലഭ്യമായത്:</translation>
 <translation id="8253091569723639551">ബില്ലിംഗ് വിലാസം ആവശ്യമാണ്</translation>
+<translation id="8257387598443225809">ഈ ആപ്പ് മൊബൈലിനായി രൂപകൽപ്പന ചെയ്തിരിക്കുന്നു</translation>
 <translation id="825929999321470778">സംരക്ഷിച്ച എല്ലാ പാസ്‌വേഡുകളും കാണിക്കുക</translation>
 <translation id="8261506727792406068">ഇല്ലാതാക്കുക</translation>
 <translation id="8262952874573525464">താഴെ അരിക് കൂട്ടിച്ചേർക്കൽ</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb
index 9735be6..90b78aa 100644
--- a/components/strings/components_strings_ne.xtb
+++ b/components/strings/components_strings_ne.xtb
@@ -218,6 +218,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706954506755087368">{1,plural, =1{ यो सर्भरले यो <ph name="DOMAIN" /> हो भनेर प्रमाणित गर्न सकेन; यसको सुरक्षा प्रमाणपत्रलाई भोलिबाट मानिन्छ। गलत कन्फिगुरेसन वा कुनै आक्रमणकारीले तपाईँको जडानमा अवरोध गरिरहेको कारणले यसो भएको हुन सक्छ।}other{ यो सर्भरले यो <ph name="DOMAIN" /> हो भनेर प्रमाणित गर्न सकेन; यसको सुरक्षा प्रमाणपत्रलाई # दिनबाट शुरू हुन्छ भनेर मानिन्छ। गलत कन्फिगुरेसन वा कुनै आक्रमणकारीले तपाईँको जडानमा अवरोध गरिरहेको कारणले यसो भएको हुन सक्छ।}}</translation>
 <translation id="1710259589646384581">OS</translation>
+<translation id="1711234383449478798"><ph name="POLICY_NAME" /> अन्तर्गत <ph name="VALUE" /> सेट नगरिएको हुनाले सो नीति बेवास्ता गरिएको छ।</translation>
 <translation id="1712552549805331520"><ph name="URL" /> तपाईंको स्थानीय कम्प्युटरमा स्थायी रूपमा डेटा भण्डारण गर्न चाहन्छ</translation>
 <translation id="1713628304598226412">ट्रे २</translation>
 <translation id="1715874602234207">F</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb
index 08999387..d805454 100644
--- a/components/strings/components_strings_nl.xtb
+++ b/components/strings/components_strings_nl.xtb
@@ -1697,6 +1697,7 @@
 <translation id="7481312909269577407">Vooruit</translation>
 <translation id="7485870689360869515">Geen gegevens gevonden.</translation>
 <translation id="7495528107193238112">Deze content is geblokkeerd. Neem contact op met de site-eigenaar om het probleem op te lossen.</translation>
+<translation id="7498193950643227031">Er kan onverwacht gedrag optreden als het formaat wordt aangepast. Je kunt de mogelijkheid om het formaat van apps aan te passen nu beperken in <ph name="SETTINGS" />.</translation>
 <translation id="7503664977220660814">Je hebt zojuist je wachtwoord opgegeven op een misleidende site. Chromium raadt je aan je opgeslagen wachtwoorden voor <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> en andere sites waarop je dit wachtwoord gebruikt, nu te checken.</translation>
 <translation id="7508255263130623398">Geretourneerde apparaat-ID voor beleid is leeg of komt niet overeen met de huidige apparaat-ID</translation>
 <translation id="7508870219247277067">Avocadogroen</translation>
@@ -1905,6 +1906,7 @@
 <translation id="8249296373107784235">Annuleren</translation>
 <translation id="8249320324621329438">Laatst opgehaald:</translation>
 <translation id="8253091569723639551">Factuuradres vereist</translation>
+<translation id="8257387598443225809">Deze app is ontworpen voor mobiel</translation>
 <translation id="825929999321470778">Alle opgeslagen wachtwoorden tonen</translation>
 <translation id="8261506727792406068">Verwijderen</translation>
 <translation id="8262952874573525464">Inbinden met nietjes onder</translation>
diff --git a/components/strings/components_strings_pa.xtb b/components/strings/components_strings_pa.xtb
index 7ae96fc..1320bab 100644
--- a/components/strings/components_strings_pa.xtb
+++ b/components/strings/components_strings_pa.xtb
@@ -1698,6 +1698,7 @@
 <translation id="7481312909269577407">ਅੱਗੇ ਭੇਜੋ</translation>
 <translation id="7485870689360869515">ਕੋਈ ਡਾਟਾ ਨਹੀਂ ਮਿਲਿਆ।</translation>
 <translation id="7495528107193238112">ਇਹ ਸਮੱਗਰੀ ਬਲਾਕ ਕੀਤੀ ਗਈ ਹੈ। ਸਮੱਸਿਆ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਸਾਈਟ ਦੇ ਮਾਲਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।</translation>
+<translation id="7498193950643227031">ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਆਕਾਰ ਬਦਲੇ ਜਾਣ 'ਤੇ ਇਹ ਅਣਕਿਆਸੇ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰੇ। ਤੁਸੀਂ ਹੁਣ <ph name="SETTINGS" /> ਵਿੱਚ ਐਪਾਂ ਦਾ ਆਕਾਰ ਬਦਲਣ ਦੀ ਸਮਰੱਥਾ ਨੂੰ ਸੀਮਤ ਕਰ ਸਕਦੇ ਹੋ।</translation>
 <translation id="7503664977220660814">ਤੁਸੀਂ ਹੁਣੇ-ਹੁਣੇ ਕਿਸੇ ਭਰਮਪੂਰਨ ਸਾਈਟ 'ਤੇ ਆਪਣਾ ਪਾਸਵਰਡ ਦਾਖਲ ਕੀਤਾ ਹੈ। Chromium ਵੱਲੋਂ <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ਅਤੇ ਉਹਨਾਂ ਹੋਰ ਸਾਈਟਾਂ 'ਤੇ ਆਪਣੇ ਰੱਖਿਅਤ ਪਾਸਵਰਡਾਂ ਨੂੰ ਜਾਂਚਣ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜਿੱਥੇ ਹੁਣ ਤੁਸੀਂ ਇਹ ਪਾਸਵਰਡ ਵਰਤਦੇ ਹੋ।</translation>
 <translation id="7508255263130623398">ਵਾਪਸੀ ਸੰਬੰਧੀ ਨੀਤੀ ਡੀਵਾਈਸ ਆਈ.ਡੀ. ਖਾਲੀ ਹੈ ਜਾਂ ਵਰਤਮਾਨ ਡੀਵਾਈਸ ਆਈ.ਡੀ. ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੀ ਹੈ</translation>
 <translation id="7508870219247277067">ਐਵੋਕਾਡੋ ਹਰਾ</translation>
@@ -1906,6 +1907,7 @@
 <translation id="8249296373107784235">ਰੋਕੋ</translation>
 <translation id="8249320324621329438">ਪਿਛਲੀ ਵਾਰ ਪ੍ਰਾਪਤ ਕੀਤੇ:</translation>
 <translation id="8253091569723639551">ਬਿਲਿੰਗ ਪਤਾ ਲੋੜੀਂਦਾ ਹੈ</translation>
+<translation id="8257387598443225809">ਇਹ ਐਪ ਮੋਬਾਈਲ ਲਈ ਤਿਆਰ ਕੀਤੀ ਗਈ ਹੈ</translation>
 <translation id="825929999321470778">ਸਾਰੇ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡ ਦਿਖਾਓ</translation>
 <translation id="8261506727792406068">ਮਿਟਾਓ</translation>
 <translation id="8262952874573525464">ਹੇਠਾਂ ਕਿਨਾਰੇ ਤੋਂ ਸਿਲਾਈ</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb
index f8302e6..d76b2bc 100644
--- a/components/strings/components_strings_ru.xtb
+++ b/components/strings/components_strings_ru.xtb
@@ -1700,6 +1700,7 @@
 <translation id="7481312909269577407">Вперед</translation>
 <translation id="7485870689360869515">Данные не найдены.</translation>
 <translation id="7495528107193238112">Этот контент заблокирован. Чтобы устранить неполадку, свяжитесь с владельцем сайта.</translation>
+<translation id="7498193950643227031">Приложения могут работать некорректно в случае изменения масштаба изображения. Теперь в разделе "<ph name="SETTINGS" />" можно запретить такое изменение.</translation>
 <translation id="7503664977220660814">Вы только что ввели пароль на поддельном сайте. Рекомендуем проверить сохраненные пароли для <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> и других сайтов, на которых вы используете этот пароль.</translation>
 <translation id="7508255263130623398">Возвращенный идентификатор устройства пуст или не соответствует имеющемуся</translation>
 <translation id="7508870219247277067">Зеленый (авокадо)</translation>
@@ -1908,6 +1909,7 @@
 <translation id="8249296373107784235">Отмена</translation>
 <translation id="8249320324621329438">Время последней загрузки:</translation>
 <translation id="8253091569723639551">Необходимо указать платежный адрес</translation>
+<translation id="8257387598443225809">Это приложение для мобильных устройств</translation>
 <translation id="825929999321470778">Показать все сохраненные пароли</translation>
 <translation id="8261506727792406068">Удалить</translation>
 <translation id="8262952874573525464">Скобы по нижнему краю</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb
index 9713bf4d..724ba88 100644
--- a/components/strings/components_strings_sq.xtb
+++ b/components/strings/components_strings_sq.xtb
@@ -1706,6 +1706,7 @@
 <translation id="7481312909269577407">Përpara</translation>
 <translation id="7485870689360869515">Nuk u gjetën të dhëna.</translation>
 <translation id="7495528107193238112">Kjo përmbajtje është bllokuar. Kontakto me zotëruesin e sajtit për të rregulluar problemin.</translation>
+<translation id="7498193950643227031">Mund të shfaqë sjellje të papritura nëse ndryshohen përmasat. Tani mund ta kufizosh aftësinë për ndryshimin e përmasave të aplikacioneve te <ph name="SETTINGS" />.</translation>
 <translation id="7503664977220660814">Sapo e fute fjalëkalimin tënd në një sajt mashtrues. Chromium të rekomandon t'i kontrollosh fjalëkalimet e tua të ruajtura për <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> dhe sajte të tjera ku e përdor këtë fjalëkalim tani.</translation>
 <translation id="7508255263130623398">ID-ja e kthyer e pajisjes së politikës është bosh ose nuk përputhet me ID-në e pajisjes aktuale</translation>
 <translation id="7508870219247277067">Jeshile avokadoje</translation>
@@ -1914,6 +1915,7 @@
 <translation id="8249296373107784235">Ndërprite</translation>
 <translation id="8249320324621329438">Marrja e fundit:</translation>
 <translation id="8253091569723639551">Adresa e faturimit është e detyrueshme</translation>
+<translation id="8257387598443225809">Ky aplikacion është projektuar për celular</translation>
 <translation id="825929999321470778">Shfaq të gjitha fjalëkalimet e ruajtura</translation>
 <translation id="8261506727792406068">Fshi</translation>
 <translation id="8262952874573525464">Qepje anësore poshtë</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb
index 48329d7..f341e6d 100644
--- a/components/strings/components_strings_sv.xtb
+++ b/components/strings/components_strings_sv.xtb
@@ -49,7 +49,7 @@
 <translation id="1156303062776767266">Detta är en lokal eller delad fil</translation>
 <translation id="1158211211994409885"><ph name="HOST_NAME" /> stängde oväntat ner anslutningen.</translation>
 <translation id="115926840831309955">Kontrollera CVC-koden och försök igen eller uppdatera sista giltighetsdatum</translation>
-<translation id="1161325031994447685">återansluta till Wi-Fi</translation>
+<translation id="1161325031994447685">återansluta till wifi</translation>
 <translation id="1165039591588034296">Fel</translation>
 <translation id="1165174597379888365">En sida besöks</translation>
 <translation id="1174723505405632867">Vill du tillåta att <ph name="EMBEDDED_URL" /> använder cookies och webbplatsdata på <ph name="TOP_LEVEL_URL" />?
@@ -158,7 +158,7 @@
 <translation id="1484290072879560759">Välj leveransadress</translation>
 <translation id="1492194039220927094">Skicka principer:</translation>
 <translation id="1501859676467574491">Visa kort från ditt Google-konto</translation>
-<translation id="1507202001669085618">&lt;p&gt;Felmeddelandet visas om du använder en Wi-Fi-portal där du måste logga in innan du kommer ut på internet.&lt;/p&gt;
+<translation id="1507202001669085618">&lt;p&gt;Felmeddelandet visas om du använder en wifi-portal där du måste logga in innan du kommer ut på internet.&lt;/p&gt;
     &lt;p&gt;Åtgärda problemet genom att klicka på &lt;strong&gt;Anslut&lt;/strong&gt; på sidan du försöker öppna.&lt;/p&gt;</translation>
 <translation id="1513706915089223971">Lista över historikposter</translation>
 <translation id="1517433312004943670">Telefonnummer är obligatoriskt</translation>
@@ -210,7 +210,7 @@
 <translation id="1662550410081243962">Spara och fyll i betalningsmetoder</translation>
 <translation id="1663943134801823270">Kort och adresser har hämtats från Chrome. Du hanterar dessa under <ph name="BEGIN_LINK" />Inställningar<ph name="END_LINK" />.</translation>
 <translation id="1671391448414634642">Sidor på <ph name="SOURCE_LANGUAGE" /> översätts till <ph name="TARGET_LANGUAGE" /> från och med nu.</translation>
-<translation id="1676269943528358898">På <ph name="SITE" /> används vanligtvis kryptering (SSL) för att skydda din information. När Chrome försökte ansluta till <ph name="SITE" /> den här gången skickade webbplatsen tillbaka ovanliga och felaktiga uppgifter. Sådant kan hända när en angripare utger sig för att vara <ph name="SITE" /> eller när anslutningen har avbrutits av en Wi-Fi-inloggningsskärm. Din information är fortfarande säker eftersom Chrome avbröt anslutningen innan någon data utbyttes.</translation>
+<translation id="1676269943528358898">På <ph name="SITE" /> används vanligtvis kryptering (SSL) för att skydda din information. När Chrome försökte ansluta till <ph name="SITE" /> den här gången skickade webbplatsen tillbaka ovanliga och felaktiga uppgifter. Sådant kan hända när en angripare utger sig för att vara <ph name="SITE" /> eller när anslutningen har avbrutits av en wifi-inloggningsskärm. Din information är fortfarande säker eftersom Chrome avbröt anslutningen innan någon data utbyttes.</translation>
 <translation id="1682696192498422849">Kortsidan först</translation>
 <translation id="168693727862418163">Principen ignoreras eftersom den inte gick att validera mot schemat.</translation>
 <translation id="168841957122794586">Servercertifikatet innehåller en svag kryptografisk nyckel.</translation>
@@ -574,7 +574,7 @@
 <translation id="3154506275960390542">Den här sidan innehåller ett formulär som kanske inte kan skickas säkert. Data som skickas kan visas av andra vid överföringen eller modifieras av en obehörig innan den tas emot av servern.</translation>
 <translation id="315504272643575312">Kontot hanteras av <ph name="MANAGER" />.</translation>
 <translation id="3157931365184549694">Återställ</translation>
-<translation id="3162559335345991374">Wi-Fi-nätverket du använder kanske kräver att du besöker dess inloggningssida.</translation>
+<translation id="3162559335345991374">wifi-nätverket du använder kanske kräver att du besöker dess inloggningssida.</translation>
 <translation id="3167968892399408617">Sidor som visas på flikar i inkognitoläget försvinner från webbhistoriken, från dina cookies och från sökhistoriken när alla inkognitoflikar har stängts. Alla filer som du laddar ned eller bokmärken som du skapar sparas.</translation>
 <translation id="3169472444629675720">Discover</translation>
 <translation id="3174168572213147020">Ö</translation>
@@ -733,8 +733,8 @@
 <translation id="3709599264800900598">Texten som du kopierade</translation>
 <translation id="3711895659073496551">Stäng av</translation>
 <translation id="3712624925041724820">Licenserna har tagit slut</translation>
-<translation id="3714780639079136834">aktivera mobildata eller Wi-Fi</translation>
-<translation id="3715597595485130451">Anslut till Wi-Fi</translation>
+<translation id="3714780639079136834">aktivera mobildata eller wifi</translation>
+<translation id="3715597595485130451">Anslut till wifi</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />kontrollera proxyn, brandväggen och DNS-konfigureringen<ph name="END_LINK" /></translation>
 <translation id="372429172604983730">Det här problemet kan orsakas av bland annat antivirusprogram, brandväggar, webbfiltrerings- och proxyprogram.</translation>
 <translation id="373042150751172459">B4 (kuvert)</translation>
@@ -866,7 +866,7 @@
 <translation id="4220128509585149162">Kraschar</translation>
 <translation id="422022731706691852">Angripare på <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> kan försöka lura dig att installera program som stör dig när du surfar (t.ex. genom att ändra startsidan eller visa extra annonser på webbplatser du besöker). <ph name="BEGIN_LEARN_MORE_LINK" />Läs mer<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="4221630205957821124">&lt;h4&gt;Steg 1: Logga in på portalen&lt;/h4&gt;
-    &lt;p&gt;När du använder Wi-Fi-nätverk på exempelvis kaféer eller flygplatser behöver du logga in. Inloggningssidan visas om du försöker öppna en sida som använder &lt;code&gt;http://&lt;/code&gt;.&lt;/p&gt;
+    &lt;p&gt;När du använder wifi-nätverk på exempelvis kaféer eller flygplatser behöver du logga in. Inloggningssidan visas om du försöker öppna en sida som använder &lt;code&gt;http://&lt;/code&gt;.&lt;/p&gt;
     &lt;ol&gt;
     &lt;li&gt;Öppna en webbplats som börjar med &lt;code&gt;http://&lt;/code&gt;, till exempel&lt;a href="http://example.com" target="_blank"&gt;http://example.com&lt;/a&gt;.&lt;/li&gt;
     &lt;li&gt;När inloggningssidan visas loggar du in så att du kommer ut på internet.&lt;/li&gt;
@@ -1716,7 +1716,7 @@
 <translation id="7503664977220660814">Du angav just ditt lösenord på en bedräglig webbplats. Chromium rekommenderar att du kontrollerar dina sparade lösenord för <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> och andra webbplatser där du använder lösenordet nu.</translation>
 <translation id="7508255263130623398">Enhets-id för returnerad princip är tomt eller matchar inte nuvarande enhets-id</translation>
 <translation id="7508870219247277067">Avokadogrön</translation>
-<translation id="7511955381719512146">Wi-Fi-nätverket du använder kanske kräver att du besöker <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation>
+<translation id="7511955381719512146">wifi-nätverket du använder kanske kräver att du besöker <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation>
 <translation id="7512685745044087310">Denna princip kan inte vara inställd på Sant och vara obligatorisk. Den har därför ändrats till Rekommenderad.</translation>
 <translation id="7514365320538308">Ladda ned</translation>
 <translation id="7518003948725431193">Det fanns ingen webbsida på webbadressen: <ph name="URL" /></translation>
@@ -1812,7 +1812,7 @@
 <translation id="7813600968533626083">Vill du ta bort formulärförslaget från Chrome?</translation>
 <translation id="781440967107097262">Vill du dela urklipp?</translation>
 <translation id="7815407501681723534">Hittade <ph name="NUMBER_OF_RESULTS" /> <ph name="SEARCH_RESULTS" /> för <ph name="SEARCH_STRING" /></translation>
-<translation id="782886543891417279">Wi-Fi-nätverket du använder (<ph name="WIFI_NAME" />) kanske kräver att du besöker dess inloggningssida.</translation>
+<translation id="782886543891417279">wifi-nätverket du använder (<ph name="WIFI_NAME" />) kanske kräver att du besöker dess inloggningssida.</translation>
 <translation id="7836231406687464395">Postfix (kuvert)</translation>
 <translation id="7844689747373518809">{COUNT,plural, =0{Inga}=1{1 app (<ph name="EXAMPLE_APP_1" />)}=2{2 appar (<ph name="EXAMPLE_APP_1" />, <ph name="EXAMPLE_APP_2" />)}other{# appar (<ph name="EXAMPLE_APP_1" />, <ph name="EXAMPLE_APP_2" />, <ph name="AND_MORE" />)}}</translation>
 <translation id="785549533363645510">Men du är inte osynlig. Inkognitoläget döljer inte webbhistoriken för din arbetsgivare, internetleverantören eller webbplatserna du besöker.</translation>
@@ -1939,7 +1939,7 @@
 <translation id="8289355894181816810">Kontakta din nätverksadministratör om du är osäker på vad det här innebär.</translation>
 <translation id="8293206222192510085">Lägg till bokmärke</translation>
 <translation id="8294431847097064396">Källa</translation>
-<translation id="8298115750975731693">Wi-Fi-nätverket du använder (<ph name="WIFI_NAME" />) kanske kräver att du besöker <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation>
+<translation id="8298115750975731693">wifi-nätverket du använder (<ph name="WIFI_NAME" />) kanske kräver att du besöker <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation>
 <translation id="8299269255470343364">japanska</translation>
 <translation id="8303854710873047864">Avsnittet <ph name="SECTION" /> visades</translation>
 <translation id="830498451218851433">Enkelfalsning</translation>
@@ -2140,7 +2140,7 @@
 <translation id="9089260154716455634">Princip för användning utanför arbetstid:</translation>
 <translation id="9095388113577226029">Fler språk …</translation>
 <translation id="9101630580131696064">Fack 1</translation>
-<translation id="9103872766612412690">På <ph name="SITE" /> används normalt kryptering (SSL) för att skydda din information. När Chromium försökte ansluta till <ph name="SITE" /> den här gången skickade webbplatsen tillbaka ovanliga och felaktiga uppgifter. Sådant kan hända när en angripare utger sig för att vara <ph name="SITE" /> eller när anslutningen har avbrutits av en Wi-Fi-inloggningsskärm. Din information är fortfarande säker eftersom Chromium avbröt anslutningen innan någon data utbyttes.</translation>
+<translation id="9103872766612412690">På <ph name="SITE" /> används normalt kryptering (SSL) för att skydda din information. När Chromium försökte ansluta till <ph name="SITE" /> den här gången skickade webbplatsen tillbaka ovanliga och felaktiga uppgifter. Sådant kan hända när en angripare utger sig för att vara <ph name="SITE" /> eller när anslutningen har avbrutits av en wifi-inloggningsskärm. Din information är fortfarande säker eftersom Chromium avbröt anslutningen innan någon data utbyttes.</translation>
 <translation id="9106062320799175032">Lägg till faktureringsadress</translation>
 <translation id="9107467864910557787">Din webbläsare hanteras av <ph name="MANAGER" /></translation>
 <translation id="91108059142052966">Administratören har angett en princip som inaktiverar skärmdelning med <ph name="APPLICATION_TITLE" /> när konfidentiellt innehåll visas på skärmen</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb
index 13a8895..50828a1 100644
--- a/components/strings/components_strings_ta.xtb
+++ b/components/strings/components_strings_ta.xtb
@@ -1705,6 +1705,7 @@
 <translation id="7481312909269577407">அடுத்த பக்கம்</translation>
 <translation id="7485870689360869515">தரவு எதுவும் இல்லை.</translation>
 <translation id="7495528107193238112">இந்த உள்ளடக்கம் தடுக்கப்பட்டுள்ளது. இந்தச் சிக்கலைச் சரிசெய்ய, தளத்தின் உரிமையாளரைத் தொடர்புகொள்ளவும்.</translation>
+<translation id="7498193950643227031">அளவு மாற்றப்பட்டால் இது சரியாகச் செயல்படாமல் போகக்கூடும். ஆப்ஸ் காட்டப்படும் அளவைத் தற்போது <ph name="SETTINGS" /> இல் கட்டுப்படுத்தலாம்.</translation>
 <translation id="7503664977220660814">மோசடி செய்யும் தளத்தில் உங்கள் கடவுச்சொல்லை உள்ளிட்டுள்ளீர்கள். இந்தக் கடவுச்சொல்லைப் பயன்படுத்தும் <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />மற்றும் பிற தளங்களுக்குச் சென்று அங்கு சேமித்துள்ள கடவுச்சொற்களைச் சரிபார்க்கும்படி Chromium பரிந்துரைக்கிறது.</translation>
 <translation id="7508255263130623398">கிடைத்த பாலிசி சாதன ஐடி காலியாக உள்ளது அல்லது தற்போதைய சாதன ஐடியுடன் பொருந்தவில்லை</translation>
 <translation id="7508870219247277067">அவகாடோ பச்சை</translation>
@@ -1913,6 +1914,7 @@
 <translation id="8249296373107784235">கைவிடு</translation>
 <translation id="8249320324621329438">கடைசியாக எடுத்தது:</translation>
 <translation id="8253091569723639551">பில்லிங் முகவரி தேவை</translation>
+<translation id="8257387598443225809">இந்த ஆப்ஸ், மொபைலுக்காக வடிவமைக்கப்பட்டது</translation>
 <translation id="825929999321470778">சேமித்த எல்லாக் கடவுச்சொற்களையும் காட்டு</translation>
 <translation id="8261506727792406068">நீக்கு</translation>
 <translation id="8262952874573525464">எட்ஜ் ஸ்டிட்ச் பாட்டம்</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb
index 7a3d0be..6e981bf9 100644
--- a/components/strings/components_strings_tr.xtb
+++ b/components/strings/components_strings_tr.xtb
@@ -1703,6 +1703,7 @@
 <translation id="7481312909269577407">İleri</translation>
 <translation id="7485870689360869515">Hiçbir veri bulunamadı.</translation>
 <translation id="7495528107193238112">Bu içerik engellenmiştir. Sorunu gidermek için site sahibiyle iletişime geçin.</translation>
+<translation id="7498193950643227031">Yeniden boyutlandırılırsa beklenmeyen şekilde davranabilir. Artık uygulamaları yeniden boyutlandırma özelliğini <ph name="SETTINGS" /> bölümünde sınırlandırabilirsiniz.</translation>
 <translation id="7503664977220660814">Az önce şifrenizi yanıltıcı bir sitede girdiniz. Chromium, <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ve bu şifreyi kullandığınız diğer sitelerdeki kayıtlı şifrelerinizi hemen kontrol etmenizi öneriyor.</translation>
 <translation id="7508255263130623398">Döndürülen politika cihaz kimliği boş veya mevcut cihaz kimliğiyle eşleşmiyor</translation>
 <translation id="7508870219247277067">Avokado Yeşili</translation>
@@ -1911,6 +1912,7 @@
 <translation id="8249296373107784235">İptal Et</translation>
 <translation id="8249320324621329438">Son getirilen:</translation>
 <translation id="8253091569723639551">Fatura adresi gerekli</translation>
+<translation id="8257387598443225809">Bu uygulama mobil cihazlar için tasarlanmıştır</translation>
 <translation id="825929999321470778">Tüm Kayıtlı Şifreleri Göster</translation>
 <translation id="8261506727792406068">Sil</translation>
 <translation id="8262952874573525464">Altta kenar dikişi</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb
index 9d2f4c9..ae0d9bf4 100644
--- a/components/strings/components_strings_uk.xtb
+++ b/components/strings/components_strings_uk.xtb
@@ -1710,6 +1710,7 @@
 <translation id="7481312909269577407">Переслати</translation>
 <translation id="7485870689360869515">Даних не знайдено.</translation>
 <translation id="7495528107193238112">Підключення заблоковано. Щоб вирішити проблему, зв'яжіться з власником сайту.</translation>
+<translation id="7498193950643227031">Після зміни розмірів робота додатка може бути непередбачуваною. Тепер можна обмежувати можливість змінювати розміри додатків, відкривши <ph name="SETTINGS" />.</translation>
 <translation id="7503664977220660814">Щойно ви ввели пароль на оманливому сайті. Chromium радить перевірити збережені паролі для <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> та інших сайтів, де використовується цей пароль.</translation>
 <translation id="7508255263130623398">Отриманий ідентифікатор правил пристрою порожній або не збігається з поточним ідентифікатором пристрою</translation>
 <translation id="7508870219247277067">Світло-зелений</translation>
@@ -1918,6 +1919,7 @@
 <translation id="8249296373107784235">Скасувати</translation>
 <translation id="8249320324621329438">Востаннє отримано:</translation>
 <translation id="8253091569723639551">Потрібно вказати платіжну адресу</translation>
+<translation id="8257387598443225809">Цей додаток створено для мобільних пристроїв</translation>
 <translation id="825929999321470778">Показати всі збережені паролі</translation>
 <translation id="8261506727792406068">Видалити</translation>
 <translation id="8262952874573525464">Зшити вздовж нижнього краю</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb
index b64bfff5..074a26ec 100644
--- a/components/strings/components_strings_vi.xtb
+++ b/components/strings/components_strings_vi.xtb
@@ -1712,6 +1712,7 @@
 <translation id="7481312909269577407">Chuyển tiếp</translation>
 <translation id="7485870689360869515">Không tìm thấy dữ liệu.</translation>
 <translation id="7495528107193238112">Nội dung này bị chặn. Hãy liên hệ với chủ sở hữu trang web để khắc phục sự cố.</translation>
+<translation id="7498193950643227031">Ứng dụng có thể không hoạt động như mong đợi khi bị đổi kích thước. Giờ đây, bạn có thể hạn chế khả năng đổi kích thước các ứng dụng trong phần <ph name="SETTINGS" />.</translation>
 <translation id="7503664977220660814">Bạn vừa nhập mật khẩu vào một trang web lừa đảo. Chromium khuyên bạn nên kiểm tra ngay những mật khẩu bạn đã lưu cho <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> và các trang web khác mà bạn sử dụng mật khẩu này.</translation>
 <translation id="7508255263130623398">ID thiết bị thuộc chính sách trả lại trống hoặc không khớp với ID của thiết bị hiện tại</translation>
 <translation id="7508870219247277067">Xanh quả bơ</translation>
@@ -1920,6 +1921,7 @@
 <translation id="8249296373107784235">Hủy bỏ</translation>
 <translation id="8249320324621329438">Tìm nạp lần cuối:</translation>
 <translation id="8253091569723639551">Yêu cầu địa chỉ thanh toán</translation>
+<translation id="8257387598443225809">Ứng dụng này được thiết kế cho thiết bị di động</translation>
 <translation id="825929999321470778">Hiển thị tất cả các mật khẩu đã lưu</translation>
 <translation id="8261506727792406068">Xóa</translation>
 <translation id="8262952874573525464">May viền ở dưới cùng</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb
index 7fad7d4..9d7b498 100644
--- a/components/strings/components_strings_zh-HK.xtb
+++ b/components/strings/components_strings_zh-HK.xtb
@@ -1700,6 +1700,7 @@
 <translation id="7481312909269577407">向前</translation>
 <translation id="7485870689360869515">找不到任何數據。</translation>
 <translation id="7495528107193238112">此內容已被封鎖。如要修正問題,請聯絡網站擁有者。</translation>
+<translation id="7498193950643227031">調整大小可能導致應用程式無法正常運作。您現在可以在「<ph name="SETTINGS" />」中限制調整應用程式大小的功能。</translation>
 <translation id="7503664977220660814">您剛才在欺詐網站上輸入了密碼。Chromium 建議您立即檢查已儲存在 <ph name="WEBSITE_1" />、<ph name="WEBSITE_2" /> 以及其他您使用此密碼的網站。</translation>
 <translation id="7508255263130623398">傳回的政策裝置識別碼為空白或與目前裝置識別碼不符</translation>
 <translation id="7508870219247277067">牛油果色</translation>
@@ -1908,6 +1909,7 @@
 <translation id="8249296373107784235">取消</translation>
 <translation id="8249320324621329438">上次擷取時間:</translation>
 <translation id="8253091569723639551">必須提供帳單地址</translation>
+<translation id="8257387598443225809">此應用程式專為流動裝置而設</translation>
 <translation id="825929999321470778">顯示所有已儲存的密碼</translation>
 <translation id="8261506727792406068">刪除</translation>
 <translation id="8262952874573525464">邊緣裝訂 (底部)</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb
index 4657ebd..6593df0e 100644
--- a/components/strings/components_strings_zh-TW.xtb
+++ b/components/strings/components_strings_zh-TW.xtb
@@ -1701,6 +1701,7 @@
 <translation id="7481312909269577407">往前</translation>
 <translation id="7485870689360869515">找不到任何資料。</translation>
 <translation id="7495528107193238112">這項內容已遭到封鎖,請聯絡網站擁有者以修正問題。</translation>
+<translation id="7498193950643227031">調整大小可能導致應用程式無法正常運作。你可以在<ph name="SETTINGS" />中針對調整應用程式大小的功能設限。</translation>
 <translation id="7503664977220660814">你剛才在詐騙網站上輸入了密碼。Chromium 建議你立即檢查為以下網站儲存的密碼:<ph name="WEBSITE_1" />、<ph name="WEBSITE_2" />,以及使用這組密碼的其他網站。</translation>
 <translation id="7508255263130623398">傳回的政策裝置 ID 沒有任何內容,或是與目前的裝置 ID 不符</translation>
 <translation id="7508870219247277067">酪梨綠</translation>
@@ -1909,6 +1910,7 @@
 <translation id="8249296373107784235">取消</translation>
 <translation id="8249320324621329438">上次擷取時間:</translation>
 <translation id="8253091569723639551">請提供帳單地址</translation>
+<translation id="8257387598443225809">這是專為行動裝置設計的應用程式</translation>
 <translation id="825929999321470778">顯示所有已儲存的密碼</translation>
 <translation id="8261506727792406068">刪除</translation>
 <translation id="8262952874573525464">邊緣裝訂 (底部)</translation>
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager_unittest.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager_unittest.cc
index 83bab6c..2aafd14 100644
--- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager_unittest.cc
+++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager_unittest.cc
@@ -68,19 +68,6 @@
   WILL_PROCESS_RESPONSE,
 };
 
-class TestInfoBarManager : public infobars::ContentInfoBarManager {
- public:
-  explicit TestInfoBarManager(content::WebContents* web_contents)
-      : ContentInfoBarManager(web_contents) {}
-
-  // infobars::InfoBarManager:
-  std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate> delegate) override {
-    NOTREACHED();
-    return nullptr;
-  }
-};
-
 class FakeSubresourceFilterAgent : public mojom::SubresourceFilterAgent {
  public:
   FakeSubresourceFilterAgent() = default;
@@ -223,7 +210,8 @@
     // ShowNotification() being invoked.
     client_->SetShouldUseSmartUI(false);
 
-    infobar_manager_ = std::make_unique<TestInfoBarManager>(web_contents);
+    infobar_manager_ =
+        std::make_unique<infobars::ContentInfoBarManager>(web_contents);
     throttle_manager_ =
         std::make_unique<ContentSubresourceFilterThrottleManager>(
             std::move(subresource_filter_client), client_->profile_context(),
@@ -364,7 +352,7 @@
   testing::TestRulesetCreator test_ruleset_creator_;
   testing::TestRulesetPair test_ruleset_pair_;
   TestSubresourceFilterClient* client_;
-  std::unique_ptr<TestInfoBarManager> infobar_manager_;
+  std::unique_ptr<infobars::ContentInfoBarManager> infobar_manager_;
 
   std::unique_ptr<VerifiedRulesetDealer::Handle> dealer_handle_;
 
@@ -832,7 +820,7 @@
       std::make_unique<TestSubresourceFilterClient>(web_contents.get());
   SubresourceFilterProfileContext* profile_context = client->profile_context();
   auto infobar_manager =
-      std::make_unique<TestInfoBarManager>(web_contents.get());
+      std::make_unique<infobars::ContentInfoBarManager>(web_contents.get());
 
   {
     base::test::ScopedFeatureList scoped_feature;
diff --git a/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc b/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc
index 2c41cb1..8fd19f4d 100644
--- a/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc
+++ b/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc
@@ -69,19 +69,6 @@
     "SubresourceFilter.PageLoad.ActivationList";
 const char kSubresourceFilterActionsHistogram[] = "SubresourceFilter.Actions2";
 
-class TestInfoBarManager : public infobars::ContentInfoBarManager {
- public:
-  explicit TestInfoBarManager(content::WebContents* web_contents)
-      : ContentInfoBarManager(web_contents) {}
-
-  // infobars::InfoBarManager:
-  std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate> delegate) override {
-    NOTREACHED();
-    return nullptr;
-  }
-};
-
 class TestSafeBrowsingActivationThrottleDelegate
     : public SubresourceFilterSafeBrowsingActivationThrottle::Delegate {
  public:
@@ -180,7 +167,8 @@
     auto subresource_filter_client =
         std::make_unique<TestSubresourceFilterClient>(contents);
     client_ = subresource_filter_client.get();
-    infobar_manager_ = std::make_unique<TestInfoBarManager>(contents);
+    infobar_manager_ =
+        std::make_unique<infobars::ContentInfoBarManager>(contents);
     throttle_manager_ =
         std::make_unique<ContentSubresourceFilterThrottleManager>(
             std::move(subresource_filter_client), client_->profile_context(),
@@ -370,7 +358,7 @@
 
   std::unique_ptr<content::NavigationSimulator> navigation_simulator_;
   TestSubresourceFilterClient* client_;
-  std::unique_ptr<TestInfoBarManager> infobar_manager_;
+  std::unique_ptr<infobars::ContentInfoBarManager> infobar_manager_;
   std::unique_ptr<TestSubresourceFilterObserver> observer_;
   scoped_refptr<FakeSafeBrowsingDatabaseManager> fake_safe_browsing_database_;
   base::HistogramTester tester_;
diff --git a/components/subresource_filter/content/browser/subresource_filter_test_harness.cc b/components/subresource_filter/content/browser/subresource_filter_test_harness.cc
index 3e4f25ae..db3e8c5a 100644
--- a/components/subresource_filter/content/browser/subresource_filter_test_harness.cc
+++ b/components/subresource_filter/content/browser/subresource_filter_test_harness.cc
@@ -38,23 +38,6 @@
 
 namespace subresource_filter {
 
-namespace {
-
-class TestInfoBarManager : public infobars::ContentInfoBarManager {
- public:
-  explicit TestInfoBarManager(content::WebContents* web_contents)
-      : ContentInfoBarManager(web_contents) {}
-
-  // infobars::InfoBarManager:
-  std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate> delegate) override {
-    NOTREACHED();
-    return nullptr;
-  }
-};
-
-}  // namespace
-
 constexpr char const SubresourceFilterTestHarness::kDefaultAllowedSuffix[];
 constexpr char const SubresourceFilterTestHarness::kDefaultDisallowedSuffix[];
 constexpr char const SubresourceFilterTestHarness::kDefaultDisallowedUrl[];
@@ -109,7 +92,8 @@
   auto client = std::make_unique<TestSubresourceFilterClient>(web_contents());
   client_ = client.get();
   database_manager_ = base::MakeRefCounted<FakeSafeBrowsingDatabaseManager>();
-  infobar_manager_ = std::make_unique<TestInfoBarManager>(web_contents());
+  infobar_manager_ =
+      std::make_unique<infobars::ContentInfoBarManager>(web_contents());
   ContentSubresourceFilterThrottleManager::CreateForWebContents(
       web_contents(), std::move(client), client_->profile_context(),
       infobar_manager_.get(), database_manager_, dealer);
diff --git a/components/sync/engine/sync_encryption_handler.h b/components/sync/engine/sync_encryption_handler.h
index a1cdfc26..f477b899c6 100644
--- a/components/sync/engine/sync_encryption_handler.h
+++ b/components/sync/engine/sync_encryption_handler.h
@@ -55,7 +55,9 @@
         const sync_pb::EncryptedData& pending_keys) = 0;
 
     // Called when the passphrase provided by the user has been accepted and is
-    // now used to encrypt sync data.
+    // now used to encrypt sync data. This gets invoked last, relative to other
+    // relevant notifications corresponding to the same event, e.g.
+    // OnCryptographerStateChanged().
     virtual void OnPassphraseAccepted() = 0;
 
     // Called when decryption keys are required in order to decrypt pending
diff --git a/components/sync/nigori/nigori_sync_bridge_impl.cc b/components/sync/nigori/nigori_sync_bridge_impl.cc
index 5d876da..e61067c6 100644
--- a/components/sync/nigori/nigori_sync_bridge_impl.cc
+++ b/components/sync/nigori/nigori_sync_bridge_impl.cc
@@ -684,9 +684,9 @@
     }
 
     if (!state_.pending_keys.has_value()) {
-      broadcasting_observer_->OnPassphraseAccepted();
       broadcasting_observer_->OnCryptographerStateChanged(
           state_.cryptographer.get(), state_.pending_keys.has_value());
+      broadcasting_observer_->OnPassphraseAccepted();
     }
   }
 
@@ -825,16 +825,6 @@
     return error;
   }
 
-  // TODO(crbug.com/1057655): issuing OnPassphraseAccepted() should be allowed
-  // for all passphrase types, but going out from |pending_keys| state might
-  // be disallowed for some circumstances (such as CUSTOM_PASSPHRASE ->
-  // CUSTOM_PASSPHRASE updates). Keep temporarily as is to avoid behavioral
-  // changes.
-  if (!state_.pending_keys.has_value() && had_pending_keys_before_update &&
-      state_.passphrase_type == NigoriSpecifics::KEYSTORE_PASSPHRASE) {
-    broadcasting_observer_->OnPassphraseAccepted();
-  }
-
   if (passphrase_type_changed) {
     broadcasting_observer_->OnPassphraseTypeChanged(
         *ProtoPassphraseInt32ToEnum(state_.passphrase_type),
@@ -849,6 +839,16 @@
   broadcasting_observer_->OnCryptographerStateChanged(
       state_.cryptographer.get(), state_.pending_keys.has_value());
 
+  // TODO(crbug.com/1057655): issuing OnPassphraseAccepted() should be allowed
+  // for all passphrase types, but going out from |pending_keys| state might
+  // be disallowed for some circumstances (such as CUSTOM_PASSPHRASE ->
+  // CUSTOM_PASSPHRASE updates). Keep temporarily as is to avoid behavioral
+  // changes.
+  if (!state_.pending_keys.has_value() && had_pending_keys_before_update &&
+      state_.passphrase_type == NigoriSpecifics::KEYSTORE_PASSPHRASE) {
+    broadcasting_observer_->OnPassphraseAccepted();
+  }
+
   MaybeNotifyOfPendingKeys();
 
   // There might be pending local commits, so make attempt to apply them on top
diff --git a/components/sync/nigori/nigori_sync_bridge_impl_unittest.cc b/components/sync/nigori/nigori_sync_bridge_impl_unittest.cc
index 88963d1..ee30673 100644
--- a/components/sync/nigori/nigori_sync_bridge_impl_unittest.cc
+++ b/components/sync/nigori/nigori_sync_bridge_impl_unittest.cc
@@ -422,9 +422,10 @@
   EXPECT_THAT(bridge()->MergeSyncData(std::move(entity_data)),
               Eq(base::nullopt));
 
-  EXPECT_CALL(*observer(), OnPassphraseAccepted());
+  testing::InSequence seq;
   EXPECT_CALL(*observer(), OnCryptographerStateChanged(
                                NotNull(), /*has_pending_keys=*/false));
+  EXPECT_CALL(*observer(), OnPassphraseAccepted());
   bridge()->SetDecryptionPassphrase(kKeyParams.password);
 
   EXPECT_THAT(*cryptographer(), CanDecryptWith(kKeyParams));
@@ -696,6 +697,7 @@
               Eq(base::nullopt));
   EXPECT_FALSE(cryptographer()->CanEncrypt());
 
+  testing::InSequence seq;
   EXPECT_CALL(*observer(), OnCryptographerStateChanged(
                                NotNull(), /*has_pending_keys=*/false));
   EXPECT_CALL(*observer(), OnPassphraseAccepted());
@@ -724,6 +726,7 @@
   ASSERT_THAT(bridge()->MergeSyncData(std::move(entity_data)),
               Eq(base::nullopt));
 
+  testing::InSequence seq;
   EXPECT_CALL(*observer(), OnCryptographerStateChanged(
                                NotNull(), /*has_pending_keys=*/false));
   EXPECT_CALL(*observer(), OnPassphraseAccepted());
@@ -980,9 +983,10 @@
   ASSERT_THAT(bridge()->MergeSyncData(std::move(entity_data)),
               Eq(base::nullopt));
 
-  EXPECT_CALL(*observer(), OnPassphraseAccepted());
+  testing::InSequence seq;
   EXPECT_CALL(*observer(), OnCryptographerStateChanged(
                                NotNull(), /*has_pending_keys=*/false));
+  EXPECT_CALL(*observer(), OnPassphraseAccepted());
   EXPECT_CALL(*observer(), OnBootstrapTokenUpdated(Ne(std::string()),
                                                    PASSPHRASE_BOOTSTRAP_TOKEN));
   bridge()->SetDecryptionPassphrase(passphrase_key_params.password);
@@ -1088,15 +1092,16 @@
   EXPECT_THAT(bridge()->GetData(), HasCustomPassphraseNigori());
 
   // Mimic commit completion.
-  EXPECT_CALL(*observer(), OnPassphraseAccepted());
-  EXPECT_CALL(*observer(), OnEncryptedTypesChanged(
-                               /*encrypted_types=*/EncryptableUserTypes(),
-                               /*encrypt_everything=*/true));
-  EXPECT_CALL(*observer(), OnCryptographerStateChanged(
-                               NotNull(), /*has_pending_keys=*/false));
+  testing::InSequence seq;
   EXPECT_CALL(*observer(),
               OnPassphraseTypeChanged(PassphraseType::kCustomPassphrase,
                                       /*passphrase_time=*/Not(NullTime())));
+  EXPECT_CALL(*observer(), OnCryptographerStateChanged(
+                               NotNull(), /*has_pending_keys=*/false));
+  EXPECT_CALL(*observer(), OnEncryptedTypesChanged(
+                               /*encrypted_types=*/EncryptableUserTypes(),
+                               /*encrypt_everything=*/true));
+  EXPECT_CALL(*observer(), OnPassphraseAccepted());
   EXPECT_CALL(*observer(), OnBootstrapTokenUpdated(Ne(std::string()),
                                                    PASSPHRASE_BOOTSTRAP_TOKEN));
   EXPECT_THAT(bridge()->ApplySyncChanges(base::nullopt), Eq(base::nullopt));
@@ -1435,15 +1440,16 @@
   EXPECT_THAT(bridge()->GetData(), HasCustomPassphraseNigori());
 
   // Mimic commit completion.
-  EXPECT_CALL(*observer(), OnPassphraseAccepted());
-  EXPECT_CALL(*observer(), OnEncryptedTypesChanged(
-                               /*encrypted_types=*/EncryptableUserTypes(),
-                               /*encrypt_everything=*/true));
-  EXPECT_CALL(*observer(), OnCryptographerStateChanged(
-                               NotNull(), /*has_pending_keys=*/false));
+  testing::InSequence seq;
   EXPECT_CALL(*observer(),
               OnPassphraseTypeChanged(PassphraseType::kCustomPassphrase,
                                       /*passphrase_time=*/Not(NullTime())));
+  EXPECT_CALL(*observer(), OnCryptographerStateChanged(
+                               NotNull(), /*has_pending_keys=*/false));
+  EXPECT_CALL(*observer(), OnEncryptedTypesChanged(
+                               /*encrypted_types=*/EncryptableUserTypes(),
+                               /*encrypt_everything=*/true));
+  EXPECT_CALL(*observer(), OnPassphraseAccepted());
   EXPECT_CALL(*observer(), OnBootstrapTokenUpdated(Ne(std::string()),
                                                    PASSPHRASE_BOOTSTRAP_TOKEN));
   EXPECT_THAT(bridge()->ApplySyncChanges(base::nullopt), Eq(base::nullopt));
@@ -1540,9 +1546,9 @@
               Eq(base::nullopt));
   EXPECT_TRUE(bridge()->HasPendingKeysForTesting());
 
-  EXPECT_CALL(*observer(), OnPassphraseAccepted());
   EXPECT_CALL(*observer(), OnCryptographerStateChanged(
                                NotNull(), /*has_pending_keys=*/false));
+  EXPECT_CALL(*observer(), OnPassphraseAccepted());
   EXPECT_CALL(*observer(), OnBootstrapTokenUpdated(Ne(std::string()),
                                                    PASSPHRASE_BOOTSTRAP_TOKEN));
   bridge()->SetDecryptionPassphrase(kCustomPassphraseKeyParams.password);
diff --git a/components/translate/core/browser/translate_infobar_delegate_unittest.cc b/components/translate/core/browser/translate_infobar_delegate_unittest.cc
index 5336cf9..9a47dd8b 100644
--- a/components/translate/core/browser/translate_infobar_delegate_unittest.cc
+++ b/components/translate/core/browser/translate_infobar_delegate_unittest.cc
@@ -8,7 +8,6 @@
 #include <vector>
 
 #include "base/test/task_environment.h"
-#include "components/infobars/core/confirm_infobar_delegate.h"
 #include "components/infobars/core/infobar.h"
 #include "components/infobars/core/infobar_manager.h"
 #include "components/language/core/browser/language_model.h"
@@ -48,12 +47,6 @@
   ~TestInfoBarManager() override {}
 
   // infobars::InfoBarManager:
-  std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate> delegate) override {
-    return std::make_unique<infobars::InfoBar>(std::move(delegate));
-  }
-
-  // infobars::InfoBarManager:
   int GetActiveEntryID() override { return 0; }
 
   // infobars::InfoBarManager:
diff --git a/components/viz/common/quads/render_pass_io.cc b/components/viz/common/quads/render_pass_io.cc
index 44fa55f..2c76afe 100644
--- a/components/viz/common/quads/render_pass_io.cc
+++ b/components/viz/common/quads/render_pass_io.cc
@@ -383,11 +383,10 @@
   // No need to populate the SerializeOptions here since the security
   // constraints explicitly disable serializing images using the transfer cache
   // and serialization of PaintRecords.
-  cc::PaintOp::SerializeOptions options(nullptr, nullptr, nullptr, nullptr,
-                                        nullptr, nullptr, false, false, 0);
+  cc::PaintOp::SerializeOptions options;
   cc::PaintOpWriter writer(buffer.data(), buffer.size(), options,
                            true /* enable_security_constraints */);
-  writer.Write(filter.get());
+  writer.Write(filter.get(), SkM44());
   if (writer.size() == 0)
     return "";
   buffer.resize(writer.size());
diff --git a/content/browser/conversions/conversion_host_unittest.cc b/content/browser/conversions/conversion_host_unittest.cc
index 72e0ff2..3d5357a5 100644
--- a/content/browser/conversions/conversion_host_unittest.cc
+++ b/content/browser/conversions/conversion_host_unittest.cc
@@ -329,7 +329,9 @@
   SetBrowserClientForTesting(old_browser_client);
 }
 
-TEST_F(ConversionHostTest, EmbedderDisabledContext_ImpressionDisallowed) {
+// TODO(crbug.com/1203592): Disabled due to flakiness.
+TEST_F(ConversionHostTest,
+       DISABLED_EmbedderDisabledContext_ImpressionDisallowed) {
   ConfigurableConversionTestBrowserClient browser_client;
   ContentBrowserClient* old_browser_client =
       SetBrowserClientForTesting(&browser_client);
@@ -474,7 +476,8 @@
   EXPECT_EQ(0u, test_manager_.num_impressions());
 }
 
-TEST_F(ConversionHostTest, ValidImpression_ForwardedToManager) {
+// TODO(crbug.com/1203601): Disabled due to flakiness.
+TEST_F(ConversionHostTest, DISABLED_ValidImpression_ForwardedToManager) {
   contents()->NavigateAndCommit(GURL("https://secure_impression.com"));
   auto navigation = NavigationSimulatorImpl::CreateRendererInitiated(
       GURL(kConversionUrl), main_rfh());
@@ -574,8 +577,9 @@
   EXPECT_EQ(0u, test_manager_.num_impressions());
 }
 
+// TODO(crbug.com/1203544): Disabled due to flakiness.
 TEST_F(ConversionHostTest,
-       ImpressionNavigation_OriginTrustworthyChecksPerformed) {
+       DISABLED_ImpressionNavigation_OriginTrustworthyChecksPerformed) {
   const char kLocalHost[] = "http://localhost";
 
   struct {
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
index 07e01f3..7994bad 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -2712,6 +2712,34 @@
   }
 }
 
+// Verifies that when synchronizing the visual properties after disabling the
+// auto resize mode, both the view size and the auto resize state get updated at
+// the same time (https://crbug.com/1200601).
+TEST_F(RenderWidgetHostViewAuraTest,
+       VerifyVisualPropertiesWhenDisablingAutoResize) {
+  InitViewForFrame(nullptr);
+  aura::client::ParentWindowWithContext(
+      view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
+      gfx::Rect());
+
+  // Enable the auto resize.
+  widget_host_->ClearVisualProperties();
+  view_->EnableAutoResize(gfx::Size(50, 50), gfx::Size(100, 100));
+  base::RunLoop().RunUntilIdle();
+  ASSERT_EQ(1u, widget_host_->visual_properties().size());
+
+  widget_host_->ClearVisualProperties();
+
+  // Disable the auto resize and verify the received visual properties.
+  const gfx::Size size_after_disabling(200, 200);
+  view_->DisableAutoResize(size_after_disabling);
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(1u, widget_host_->visual_properties().size());
+  const auto& received_property = widget_host_->visual_properties()[0];
+  EXPECT_EQ(false, received_property.auto_resize_enabled);
+  EXPECT_EQ(size_after_disabling, received_property.new_size);
+}
+
 // This test verifies that in AutoResize mode a new
 // blink::mojom::Widget::UpdateVisualProperties message is sent when size
 // changes.
diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc
index 7655571..fe8443d 100644
--- a/content/browser/renderer_host/render_widget_host_view_base.cc
+++ b/content/browser/renderer_host/render_widget_host_view_base.cc
@@ -550,9 +550,15 @@
 }
 
 void RenderWidgetHostViewBase::DisableAutoResize(const gfx::Size& new_size) {
+  // Note that for some subclasses, such as RenderWidgetHostViewAura, setting
+  // the view size may trigger the synchronization on the visual properties. As
+  // a result, it may crete the intermediate status that the view size has
+  // changed while the auto resize status is obsolete, and then brings
+  // unnecessary updates in view layout. Hence we should disable the auto
+  // resize before setting the view size.
+  host()->SetAutoResize(false, gfx::Size(), gfx::Size());
   if (!new_size.IsEmpty())
     SetSize(new_size);
-  host()->SetAutoResize(false, gfx::Size(), gfx::Size());
   host()->SynchronizeVisualProperties();
 }
 
diff --git a/content/common/partition_alloc_support.cc b/content/common/partition_alloc_support.cc
index af7b78a..9ffd60b 100644
--- a/content/common/partition_alloc_support.cc
+++ b/content/common/partition_alloc_support.cc
@@ -47,7 +47,7 @@
   }();
 
   if (name) {
-    base::internal::PCScan::Instance().SetProcessName(name);
+    base::internal::PCScan::SetProcessName(name);
   }
 }
 
@@ -207,9 +207,8 @@
     EnablePCScanForMallocPartitionsInBrowserProcessIfNeeded();
   }
 #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
-  auto& pcscan = base::internal::PCScan::Instance();
   // Notify PCScan about the main thread.
-  pcscan.NotifyThreadCreated(base::internal::GetStackTop());
+  base::internal::PCScan::NotifyThreadCreated(base::internal::GetStackTop());
 #endif  // BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
   SetProcessNameForPCScan(process_type);
 }
@@ -278,11 +277,11 @@
     // Assign PCScan a task-based scheduling backend.
     static base::NoDestructor<base::internal::MUAwareTaskBasedBackend>
         mu_aware_task_based_backend{
-            base::internal::PCScan::Instance().scheduler(),
+            base::internal::PCScan::scheduler(),
             base::BindRepeating([](base::TimeDelta delay) {
-              base::internal::PCScan::Instance().PerformDelayedScan(delay);
+              base::internal::PCScan::PerformDelayedScan(delay);
             })};
-    base::internal::PCScan::Instance().scheduler().SetNewSchedulingBackend(
+    base::internal::PCScan::scheduler().SetNewSchedulingBackend(
         *mu_aware_task_based_backend.get());
   }
 }
diff --git a/google_apis/gaia/fake_gaia.cc b/google_apis/gaia/fake_gaia.cc
index bacf4c0..ec154d1 100644
--- a/google_apis/gaia/fake_gaia.cc
+++ b/google_apis/gaia/fake_gaia.cc
@@ -63,6 +63,7 @@
     "; Path=/; HttpOnly; SameSite=None; Secure";
 
 const char kDefaultGaiaId[] = "12345";
+const char kDefaultEmail[] = "email12345@foo.com";
 
 const base::FilePath::CharType kEmbeddedSetupChromeos[] =
     FILE_PATH_LITERAL("google_apis/test/embedded_setup_chromeos.html");
@@ -71,9 +72,11 @@
 const char kAuthHeaderBearer[] = "Bearer ";
 const char kAuthHeaderOAuth[] = "OAuth ";
 
-const char kListAccountsResponseFormat[] =
-    "[\"gaia.l.a.r\",[[\"gaia.l.a\",1,\"\",\"%s\",\"\",1,1,0,0,1,\"12345\"]]]";
+const char kIndividualListedAccountResponseFormat[] =
+    "[\"gaia.l.a\",1,\"\",\"%s\",\"\",1,1,0,0,1,\"%s\",11,12,13,%d]";
+const char kListAccountsResponseFormat[] = "[\"gaia.l.a.r\",[%s]]";
 
+const char kDummyRemoveLocalAccountPath[] = "DummyRemoveLocalAccount";
 const char kDummySAMLContinuePath[] = "DummySAMLContinue";
 
 typedef std::map<std::string, std::string> CookieMap;
@@ -185,6 +188,9 @@
   maybe_update_field(&MergeSessionParams::session_sid_cookie);
   maybe_update_field(&MergeSessionParams::session_lsid_cookie);
   maybe_update_field(&MergeSessionParams::email);
+
+  if (!update.signed_out_gaia_ids.empty())
+    signed_out_gaia_ids = update.signed_out_gaia_ids;
 }
 
 FakeGaia::SyncTrustedVaultKeys::SyncTrustedVaultKeys() = default;
@@ -247,6 +253,14 @@
       it->second;
 }
 
+std::string FakeGaia::GetEmailOfGaiaId(const std::string& gaia_id) const {
+  for (const auto& email_and_gaia_id : email_to_gaia_id_map_) {
+    if (email_and_gaia_id.second == gaia_id)
+      return email_and_gaia_id.first;
+  }
+  return kDefaultEmail;
+}
+
 void FakeGaia::AddGoogleAccountsSigninHeader(BasicHttpResponse* http_response,
                                              const std::string& email) const {
   DCHECK(http_response);
@@ -360,6 +374,11 @@
   // Handles ReAuth API token fetch call.
   REGISTER_RESPONSE_HANDLER(gaia_urls->reauth_api_url(),
                             HandleGetReAuthProofToken);
+
+  // Handles API for browser tests to manually remove local accounts.
+  REGISTER_RESPONSE_HANDLER(
+      gaia_urls->gaia_url().Resolve(kDummyRemoveLocalAccountPath),
+      HandleDummyRemoveLocalAccount);
 }
 
 FakeGaia::RequestHandlerMap::iterator FakeGaia::FindHandlerByPathPrefix(
@@ -442,6 +461,12 @@
   error_responses_[gaia_url.path()] = http_status_code;
 }
 
+GURL FakeGaia::GetDummyRemoveLocalAccountURL(const std::string& gaia_id) const {
+  GURL url =
+      GaiaUrls::GetInstance()->gaia_url().Resolve(kDummyRemoveLocalAccountPath);
+  return net::AppendQueryParameter(url, "gaia_id", gaia_id);
+}
+
 void FakeGaia::SetRefreshTokenToDeviceIdMap(
     const RefreshTokenToDeviceIdMap& refresh_token_to_device_id_map) {
   refresh_token_to_device_id_map_ = refresh_token_to_device_id_map;
@@ -859,8 +884,26 @@
 
 void FakeGaia::HandleListAccounts(const HttpRequest& request,
                                   BasicHttpResponse* http_response) {
-  http_response->set_content(base::StringPrintf(
-      kListAccountsResponseFormat, merge_session_params_.email.c_str()));
+  const int kAccountIsSignedIn = 0;
+  const int kAccountIsSignedOut = 1;
+
+  std::vector<std::string> listed_accounts;
+  listed_accounts.push_back(base::StringPrintf(
+      kIndividualListedAccountResponseFormat,
+      merge_session_params_.email.c_str(), kDefaultGaiaId, kAccountIsSignedIn));
+
+  for (const std::string& gaia_id : merge_session_params_.signed_out_gaia_ids) {
+    DCHECK_NE(kDefaultGaiaId, gaia_id);
+
+    const std::string email = GetEmailOfGaiaId(gaia_id);
+    listed_accounts.push_back(base::StringPrintf(
+        kIndividualListedAccountResponseFormat, email.c_str(), gaia_id.c_str(),
+        kAccountIsSignedOut));
+  }
+
+  http_response->set_content(
+      base::StringPrintf(kListAccountsResponseFormat,
+                         base::JoinString(listed_accounts, ",").c_str()));
   http_response->set_code(net::HTTP_OK);
 }
 
@@ -1004,6 +1047,26 @@
   http_response->set_code(net::HTTP_OK);
 }
 
+void FakeGaia::HandleDummyRemoveLocalAccount(
+    const net::test_server::HttpRequest& request,
+    net::test_server::BasicHttpResponse* http_response) {
+  DCHECK(http_response);
+
+  std::string gaia_id;
+  GetQueryParameter(request.GetURL().query(), "gaia_id", &gaia_id);
+
+  if (!base::Erase(merge_session_params_.signed_out_gaia_ids, gaia_id)) {
+    http_response->set_code(net::HTTP_BAD_REQUEST);
+    return;
+  }
+
+  http_response->AddCustomHeader(
+      "Google-Accounts-RemoveLocalAccount",
+      base::StringPrintf("obfuscatedid=\"%s\"", gaia_id.c_str()));
+  http_response->set_content("");
+  http_response->set_code(net::HTTP_OK);
+}
+
 std::string FakeGaia::GetEmbeddedSetupChromeosResponseContent() const {
   if (embedded_setup_chromeos_iframe_url_.is_empty())
     return embedded_setup_chromeos_response_;
diff --git a/google_apis/gaia/fake_gaia.h b/google_apis/gaia/fake_gaia.h
index 4b5b250d0..92d47d0 100644
--- a/google_apis/gaia/fake_gaia.h
+++ b/google_apis/gaia/fake_gaia.h
@@ -85,6 +85,9 @@
 
     // The e-mail address returned by /ListAccounts.
     std::string email;
+
+    // List of signed out gaia IDs returned by /ListAccounts.
+    std::vector<std::string> signed_out_gaia_ids;
   };
 
   struct SyncTrustedVaultKeys {
@@ -194,6 +197,10 @@
   // Returns the is_device_owner param from the reauth URL if any.
   const std::string& is_device_owner() { return is_device_owner_; }
 
+  // Returns the fake server's URL that browser tests can visit to trigger a
+  // RemoveLocalAccount event.
+  GURL GetDummyRemoveLocalAccountURL(const std::string& gaia_id) const;
+
  protected:
   // HTTP handler for /MergeSession.
   virtual void HandleMergeSession(
@@ -209,6 +216,7 @@
       std::map<std::string, SyncTrustedVaultKeys>;
 
   std::string GetGaiaIdOfEmail(const std::string& email) const;
+  std::string GetEmailOfGaiaId(const std::string& email) const;
 
   void AddGoogleAccountsSigninHeader(
       net::test_server::BasicHttpResponse* http_response,
@@ -298,6 +306,9 @@
   // HTTP handler for /OAuth/Multilogin.
   void HandleMultilogin(const net::test_server::HttpRequest& request,
                         net::test_server::BasicHttpResponse* http_response);
+  void HandleDummyRemoveLocalAccount(
+      const net::test_server::HttpRequest& request,
+      net::test_server::BasicHttpResponse* http_response);
 
   // Returns the access token associated with |auth_token| that matches the
   // given |client_id| and |scope_string|. If |scope_string| is empty, the first
diff --git a/gpu/command_buffer/client/raster_implementation.cc b/gpu/command_buffer/client/raster_implementation.cc
index 7a6cfac42..ba08253b 100644
--- a/gpu/command_buffer/client/raster_implementation.cc
+++ b/gpu/command_buffer/client/raster_implementation.cc
@@ -248,12 +248,13 @@
   size_t Serialize(const cc::PaintOp* op,
                    const cc::PaintOp::SerializeOptions& options,
                    const cc::PaintFlags* flags_to_serialize,
+                   const SkM44& current_ctm,
                    const SkM44& original_ctm) {
     if (!valid())
       return 0;
 
     size_t size = op->Serialize(buffer_ + written_bytes_, free_bytes_, options,
-                                flags_to_serialize, original_ctm);
+                                flags_to_serialize, current_ctm, original_ctm);
     size_t block_size = *max_op_size_hint_;
 
     if (!size) {
@@ -272,7 +273,7 @@
         }
 
         size = op->Serialize(buffer_ + written_bytes_, free_bytes_, options,
-                             flags_to_serialize, original_ctm);
+                             flags_to_serialize, current_ctm, original_ctm);
         if (size) {
           *max_op_size_hint_ = std::max(size, *max_op_size_hint_);
           break;
@@ -1227,17 +1228,15 @@
                                   &transfer_cache_serialize_helper,
                                   &font_manager_, max_op_size_hint);
 
-  cc::PaintOp::SerializeOptions options(
-      &stashing_image_provider, &transfer_cache_serialize_helper,
-      GetOrCreatePaintCache(), /*canvas=*/nullptr,
-      font_manager_.strike_server(), raster_properties_->color_space,
-      raster_properties_->can_use_lcd_text,
-      capabilities().context_supports_distance_field_text,
-      capabilities().max_texture_size);
   cc::PaintOpBufferSerializer serializer(
       base::BindRepeating(&PaintOpSerializer::Serialize,
                           base::Unretained(&op_serializer)),
-      options);
+      cc::PaintOp::SerializeOptions(
+          &stashing_image_provider, &transfer_cache_serialize_helper,
+          GetOrCreatePaintCache(), font_manager_.strike_server(),
+          raster_properties_->color_space, raster_properties_->can_use_lcd_text,
+          capabilities().context_supports_distance_field_text,
+          capabilities().max_texture_size));
   serializer.Serialize(&list->paint_op_buffer_, &temp_raster_offsets_,
                        preamble);
   // TODO(piman): raise error if !serializer.valid()?
diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json
index f6aafaa8..125d57b 100644
--- a/gpu/config/gpu_driver_bug_list.json
+++ b/gpu/config/gpu_driver_bug_list.json
@@ -711,8 +711,8 @@
           "value2": "5.1.99"
         }
       },
-      "gl_vendor": "Imagination.*",
-      "gl_renderer": "PowerVR Rogue.*",
+      "gl_vendor": ".*Imagination.*",
+      "gl_renderer": ".*PowerVR Rogue.*",
       "driver_version": {
         "op": "between",
         "value": "1.3",
diff --git a/ios/chrome/app/BUILD.gn b/ios/chrome/app/BUILD.gn
index 2f6ab78c..1e0954eb 100644
--- a/ios/chrome/app/BUILD.gn
+++ b/ios/chrome/app/BUILD.gn
@@ -287,6 +287,7 @@
     "//ios/chrome/browser/ui/commands",
     "//ios/chrome/browser/ui/download",
     "//ios/chrome/browser/ui/first_run",
+    "//ios/chrome/browser/ui/first_run:utils",
     "//ios/chrome/browser/ui/main",
     "//ios/chrome/browser/ui/main:scene",
     "//ios/chrome/browser/ui/tab_switcher/tab_grid",
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd
index 99c93b0..ecfa303 100644
--- a/ios/chrome/app/strings/ios_strings.grd
+++ b/ios/chrome/app/strings/ios_strings.grd
@@ -2196,9 +2196,24 @@
       <message name="IDS_IOS_NOT_SIGNED_IN_SETTING_TITLE" desc="The title shown when the user has disabled Chrome sign-in [iOS only]">
         Sign-in Is Disabled
       </message>
+      <message name="IDS_IOS_SIGN_IN_AGAIN" desc="Title displayed when there is an authentication failure in sign-in and the user needs to attempt to sign in again. [Length: 20em] [iOS only]">
+        Sign in again
+      </message>
+      <message name="IDS_IOS_SIGN_IN_TRY_AGAIN" desc="Title displayed when there is an unknown failure in sign-in and the user needs to attempt to sign in again. [Length: 20em] [iOS only]">
+        Try again
+      </message>
+      <message name="IDS_IOS_SIGN_IN_WRONG_CREDENTIALS" desc="Message displayed when the user enters incorrect credentials. [iOS only]">
+        Sorry we couldn't validate your credentials
+      </message>
+      <message name="IDS_IOS_SIGN_IN_AUTH_FAILURE" desc="Message displayed when the user attempts to sign in, but the authentication step fails for an unknown reason. [iOS only]">
+        Chrome couldn't verify your information
+      </message>
       <message name="IDS_IOS_SIGN_IN_FAILED" desc="Explanatory message shown when Sign in to Chrome failed for an unknown technical reason.  [Length: 50em] [iOS only]">
         Failed to sign in. Please try again later.
       </message>
+      <message name="IDS_IOS_SIGN_IN_FAILURE_TITLE" desc="Title displayed when sign in fails due to an authentication issue. [iOS only]">
+        Something went wrong
+      </message>
       <message name="IDS_IOS_SIGN_IN_TO_CHROME_SETTING_SUBTITLE" desc="The subtitle for the setting item to Sign in to Chrome [iOS only]">
         Get your bookmarks, history, passwords, and other settings on all your devices.
       </message>
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_AGAIN.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_AGAIN.png.sha1
new file mode 100644
index 0000000..4478f4a
--- /dev/null
+++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_AGAIN.png.sha1
@@ -0,0 +1 @@
+ebc3eaedbbaadff0d0bbb285c1487a86fab00134
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_AUTH_FAILURE.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_AUTH_FAILURE.png.sha1
new file mode 100644
index 0000000..d447b124
--- /dev/null
+++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_AUTH_FAILURE.png.sha1
@@ -0,0 +1 @@
+758f82d0fe6f92bd7137ef1ff248035d1e1a4bf4
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_FAILURE_TITLE.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_FAILURE_TITLE.png.sha1
new file mode 100644
index 0000000..4478f4a
--- /dev/null
+++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_FAILURE_TITLE.png.sha1
@@ -0,0 +1 @@
+ebc3eaedbbaadff0d0bbb285c1487a86fab00134
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_TRY_AGAIN.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_TRY_AGAIN.png.sha1
new file mode 100644
index 0000000..d447b124
--- /dev/null
+++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_TRY_AGAIN.png.sha1
@@ -0,0 +1 @@
+758f82d0fe6f92bd7137ef1ff248035d1e1a4bf4
\ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_WRONG_CREDENTIALS.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_WRONG_CREDENTIALS.png.sha1
new file mode 100644
index 0000000..4478f4a
--- /dev/null
+++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_SIGN_IN_WRONG_CREDENTIALS.png.sha1
@@ -0,0 +1 @@
+ebc3eaedbbaadff0d0bbb285c1487a86fab00134
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ne.xtb
index b3fefc0d..b7b1c6b2 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ne.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ne.xtb
@@ -9,6 +9,7 @@
 <translation id="1431818719585918472">Chromium लाई आफ्ना इन्कोग्निटो ट्याबहरू लक गर्ने अनुमति दिनुहोस्।</translation>
 <translation id="1472013873724362412">तपाईंको खाताले Chromium मा काम गर्दैन। कृपया साइन इन गर्न आफ्नो डोमेन प्रशासकलाई सम्पर्क गर्नुहोस् वा नियमित Google खाता प्रयोग गर्नुहोस्।</translation>
 <translation id="1507010443238049608">Chromium का सुविधा तथा कार्यसम्पादनको गुणस्तर सुधार्न मद्दत गर्नुहोस्</translation>
+<translation id="1531155317299575425">Chromium मा साइन इन गर्ने निर्देशन देखाउँछ।</translation>
 <translation id="1617663976202781617">Chromium सिंकको डेटा</translation>
 <translation id="1736662517232558588">Chromium सम्बन्धी डेटा हटाइयो</translation>
 <translation id="1838412507805038478">Chromium ले <ph name="ISSUER" /> ले यस वेबसाइटको प्रमाणपत्र जारी गरेको हो भन्ने कुरा पुष्टि गरेको छ।</translation>
@@ -48,6 +49,7 @@
 <translation id="5396916991083608703">Chromium लाई डिफल्ट ब्राउजरका रूपमा प्रयोग गर्ने हो?</translation>
 <translation id="5521125884468363740">आफूले Chromium प्रयोग गर्ने सबै डिभाइसमा खोलिएका ट्याबहरू हेर्न साइन इन गर्नुहोस् र सिंक गर्ने सुविधा अन गर्नुहोस्</translation>
 <translation id="5573014823074921752">Chromium सम्बन्धी सुझाव। ट्याबसम्बन्धी थप विकल्पहरू हेर्न तपाईंको स्क्रिनको सिरान वा पुछारमा रहेको उपकरणपट्टीमा ट्याबहरू देखाउनुहोस् नामक बटनमा टच एण्ड होल्ड गर्नुहोस्।</translation>
+<translation id="5651741435382092412">यो साइट, आफ्नो Google खाता र Chromium मा साइन इन गर्नुहोस्। तपाईं सिंक गर्ने सुविधा पछि अन गर्न सक्नुहुन्छ।</translation>
 <translation id="5700709190537129682">Chromium ले तपाईंका पासवर्डहरू जाँच्न सकेन</translation>
 <translation id="5742135483959137648">लिंकहरू खोल्न Chromium प्रयोग गर्नुहोस्</translation>
 <translation id="5777187867430702742">Chromium को पृष्ठ</translation>
@@ -59,6 +61,7 @@
 २. 'डिफल्ट ब्राउजर एप'मा ट्याप गर्नुहोस्
 ३. Chromium चयन गर्नुहोस्।</translation>
 <translation id="6268381023930128611">Chromium बाट साइन आउट गर्ने हो?</translation>
+<translation id="632825460376924298">Chromium मा साइन इन गर्ने अनुमति दिनुहोस्</translation>
 <translation id="6337530241089703714">तपाईं Chromium मा भएको आफ्नो डेटा यो डिभाइसमा राख्न चाहनुहुन्छ कि यसबाट हटाउन चाहनुहुन्छ भन्ने कुरा छनौट गर्नुहोस्</translation>
 <translation id="6424492062988593837">Chromium भर्खरै झन राम्रो भयो! एक नयाँ संस्करण उपलब्ध छ।</translation>
 <translation id="6820823224820483452">Chromium ले सबै पासवर्डहरू जाँच्न सकेन। भोलि फेरि प्रयास गर्नुहोस्।</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ne.xtb
index 0d88ed1..08bea5f 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ne.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ne.xtb
@@ -58,6 +58,7 @@
 <translation id="5876773482963502140">तपाईंले Chrome लाई आफ्नो स्थानसम्बन्धी जानकारी हेर्ने अनुमति दिनुभयो भने Chrome ले उक्त जानकारी तपाईंले सो अनुमति दिनुभएका सबै साइटहरूमा पठाउने छ। साइटहरूसँग तपाईंलाई देखाउन सकिने स्थानीय जानकारी भएका खण्डमा तिनले तपाईंसँग तपाईंको स्थानसम्बन्धी जानकारी माग्न सक्छन्। स्थानीय जानकारीअन्तर्गत छेउछाउका पसलसम्बन्धी जानकारी वा समाचार जस्ता कुराहरू पर्छन्।</translation>
 <translation id="6036420186814142909">Google Chrome मा सुविधाहरू छन् जसले तपाईंलाई आफ्नो इन्टर्नेट डेटा व्यवस्थित गर्न र तपाईंलाई वेबपृष्ठहरूलाई द्रुत लोड गर्न मद्दत गर्दछन्।
 <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation>
+<translation id="6063091872902370735">Chrome मा साइन इन गर्ने अनुमति दिनुहोस्</translation>
 <translation id="6181930887571472871">Chrome प्रयोग गर्न थाल्नुहोस्</translation>
 <translation id="6238746320622508509">Chrome लाई आफ्ना इन्कोग्निटो ट्याबहरू लक गर्ने अनुमति दिनुहोस्।</translation>
 <translation id="6573431926118603307">तपाईँले आफ्ना अन्य डिभाइसमा Chrome मा खोल्नुभएका ट्याबहरू यहाँ देखिनेछन्।</translation>
@@ -96,5 +97,6 @@
   ३. Chrome चयन गर्नुहोस्।</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8736550665979974340">Google Chrome प्रयोग गरी सुरक्षित रहनुहोस्</translation>
+<translation id="8772179140489533211">Chrome मा साइन इन गर्ने निर्देशन देखाउँछ।</translation>
 <translation id="9112744793181547300">Chrome लाई डिफल्ट ब्राउजरका रूपमा प्रयोग गर्ने हो?</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_strings_az.xtb b/ios/chrome/app/strings/resources/ios_strings_az.xtb
index bfe932b6..719ceae6 100644
--- a/ios/chrome/app/strings/resources/ios_strings_az.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_az.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Link kopyalandı</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" /> təklifdən <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation>
+<translation id="3261971309013797455">Oxu siyahısı oflayn əlçatandır. Oxu siyahısına səhifə əlavə etmək üçün <ph name="SHARE_OPENING_ICON" /> ikonasına, sonra isə <ph name="ADD_TO_READING_LIST_TEXT" /> ikonasına klikləyin.</translation>
 <translation id="3268451620468152448">Panelləri Açın</translation>
 <translation id="3272527697863656322">Ləğv edin</translation>
 <translation id="3277021493514034324">Sayt ünvanı kopyalandı</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb
index 6697236..b5d4aa2 100644
--- a/ios/chrome/app/strings/resources/ios_strings_de.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Link wurde kopiert.</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> von <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">Ihre Leseliste ist offline verfügbar. Sie können eine Seite Ihrer Leseliste hinzufügen, indem Sie auf <ph name="SHARE_OPENING_ICON" /> &gt; <ph name="ADD_TO_READING_LIST_TEXT" /> tippen.</translation>
 <translation id="3268451620468152448">Geöffnete Tabs</translation>
 <translation id="3272527697863656322">Abbrechen</translation>
 <translation id="3277021493514034324">Websiteadresse kopiert</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 290ca53..471f4888 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Vínculo copiado</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> de <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">Tu lista de lectura está disponible sin conexión. Para agregar una página a la lista, presiona <ph name="SHARE_OPENING_ICON" /> y, luego, <ph name="ADD_TO_READING_LIST_TEXT" />.</translation>
 <translation id="3268451620468152448">Pestañas abiertas</translation>
 <translation id="3272527697863656322">Cancelar</translation>
 <translation id="3277021493514034324">Se copió la dirección del sitio</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb
index a467ee5b..1c9f9f1c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Enlace copiado</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> de <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">Tu lista de lectura está disponible sin conexión. Para añadir una página a la lista, toca <ph name="SHARE_OPENING_ICON" /> y, a continuación, <ph name="ADD_TO_READING_LIST_TEXT" />.</translation>
 <translation id="3268451620468152448">Pestañas abiertas</translation>
 <translation id="3272527697863656322">Cancelar</translation>
 <translation id="3277021493514034324">Se ha copiado la dirección del sitio web</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
index bafab828..797e48c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Le lien a bien été copié.</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> sur <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">Votre liste de lecture est disponible hors connexion. Pour y ajouter une page, appuyez sur <ph name="SHARE_OPENING_ICON" />, puis sur <ph name="ADD_TO_READING_LIST_TEXT" />.</translation>
 <translation id="3268451620468152448">Onglets ouverts</translation>
 <translation id="3272527697863656322">Annuler</translation>
 <translation id="3277021493514034324">Adresse du site copiée</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb
index 674879c..3c7f4b1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_id.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Tautan disalin</translation>
 <translation id="3244271242291266297">BB</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> dari <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">Daftar bacaan Anda tersedia secara offline. Untuk menambahkan halaman ke daftar bacaan, ketuk <ph name="SHARE_OPENING_ICON" /> lalu <ph name="ADD_TO_READING_LIST_TEXT" />.</translation>
 <translation id="3268451620468152448">Tab Terbuka</translation>
 <translation id="3272527697863656322">Batal</translation>
 <translation id="3277021493514034324">Alamat situs disalin</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_it.xtb b/ios/chrome/app/strings/resources/ios_strings_it.xtb
index 14fb863..ad0e126 100644
--- a/ios/chrome/app/strings/resources/ios_strings_it.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_it.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Link copiato</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> di <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">Il tuo elenco di lettura è disponibile offline. Per aggiungere una pagina all'elenco di lettura, tocca <ph name="SHARE_OPENING_ICON" />, quindi <ph name="ADD_TO_READING_LIST_TEXT" />.</translation>
 <translation id="3268451620468152448">Schede aperte</translation>
 <translation id="3272527697863656322">Annulla</translation>
 <translation id="3277021493514034324">Indirizzo del sito copiato</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
index 5d07166..6aaadd63 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ja.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">リンクをコピーしました</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />、<ph name="ADDITIONAL_INFO" />、<ph name="INDEX" /> / <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">リーディング リストをオフラインで利用できます。リーディング リストにページを追加するには、<ph name="SHARE_OPENING_ICON" /> &gt; [<ph name="ADD_TO_READING_LIST_TEXT" />] をタップします。</translation>
 <translation id="3268451620468152448">開いているタブ</translation>
 <translation id="3272527697863656322">キャンセル</translation>
 <translation id="3277021493514034324">サイトのアドレスがコピーされました</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kk.xtb b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
index 13ebcb0..49b4c23 100644
--- a/ios/chrome/app/strings/resources/ios_strings_kk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Сілтеме көшірілді</translation>
 <translation id="3244271242291266297">АА</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" /> ішінен <ph name="INDEX" /></translation>
+<translation id="3261971309013797455">Оқу тізіміңіз офлайн режимде қолжетімді. Оқу тізіміне бет енгізу үшін <ph name="SHARE_OPENING_ICON" /> белгішесін, одан кейін <ph name="ADD_TO_READING_LIST_TEXT" /> мәтінін түртіңіз.</translation>
 <translation id="3268451620468152448">Ашық қойындылар</translation>
 <translation id="3272527697863656322">Жабу</translation>
 <translation id="3277021493514034324">Сайт мекенжайы көшірілді</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
index 76b9f4da..a690217 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ko.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">링크 복사됨</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" />/<ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">읽기 목록을 오프라인으로 사용할 수 있습니다. 읽기 목록에 페이지를 추가하려면 <ph name="SHARE_OPENING_ICON" />, <ph name="ADD_TO_READING_LIST_TEXT" /> 옵션을 차례로 탭하세요.</translation>
 <translation id="3268451620468152448">열린 탭</translation>
 <translation id="3272527697863656322">취소</translation>
 <translation id="3277021493514034324">사이트 주소가 복사되었습니다.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
index 2bb20504..5966a71 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ky.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Шилтеме көчүрүлдү</translation>
 <translation id="3244271242291266297">АА</translation>
 <translation id="3252394070589632019"><ph name="NUM_SUGGESTIONS" /> ичинен <ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /></translation>
+<translation id="3261971309013797455">Окуу тизмеңиз оффлайн режиминде да иштейт. Окуу тизмеңизге баракты кошуу үчүн <ph name="SHARE_OPENING_ICON" />, андан кийин <ph name="ADD_TO_READING_LIST_TEXT" /> баскычын таптап коюңуз.</translation>
 <translation id="3268451620468152448">Ачык өтмөктөр</translation>
 <translation id="3272527697863656322">Жокко чыгаруу</translation>
 <translation id="3277021493514034324">Сайттын дареги көчүрүлдү</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
index 38ac79b..5458abe8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">ലിങ്ക് പകർത്തി</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> / <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">വായിക്കാനുള്ളവയുടെ ലിസ്‌റ്റ് ഓഫ്‌ലൈനിൽ ലഭ്യമാണ്. വായിക്കാനുള്ളവയുടെ ലിസ്‌റ്റിലേക്ക് ഒരു പേജ് ചേർക്കാൻ  <ph name="SHARE_OPENING_ICON" />  ടാപ്പ് ചെയ്യുക, തുടർന്ന് <ph name="ADD_TO_READING_LIST_TEXT" /> ടാപ്പ് ചെയ്യുക.</translation>
 <translation id="3268451620468152448">ഓപ്പൺ ടാബുകൾ</translation>
 <translation id="3272527697863656322">റദ്ദാക്കുക</translation>
 <translation id="3277021493514034324">സൈറ്റ് വിലാസം പകർത്തി</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
index aa80e42..39fe82a 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ne.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
@@ -448,6 +448,7 @@
 <translation id="5782227691023083829">अनुवाद गर्दै...</translation>
 <translation id="5803566855766646066">तपाईंले यो नयाँ कार्ड हटाउन खोज्नुभएकै हो?</translation>
 <translation id="5816228676161003208">यसले तपाईँलाई आफ्नो आवाजको प्रयोग गरी अझ छिटो खोज्न दिन्छ।</translation>
+<translation id="581659025233126501">सिंक गर्ने सुविधा अन गर्नुहोस्</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" /> ले व्यवस्थापन गर्छ। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation>
 <translation id="5846482154967366008">सर्च इन्जिन</translation>
 <translation id="5854790677617711513">३० दिनभन्दा पुरानो</translation>
@@ -494,6 +495,7 @@
 <translation id="6196207969502475924">आवाज खोज</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} वटा ट्याब बन्द गर्नुहोस्}other{{COUNT} वटा ट्याब बन्द गर्नुहोस्}}</translation>
 <translation id="6219688215832490856">कहिल्यै पनि अनुवाद नगर्नुहोस्</translation>
+<translation id="6223816392543092032">आफ्ना बुकमार्क, इतिहास, पासवर्ड र अन्य सेटिङ आफ्ना सबै डिभाइसहरूमा उपलब्ध गराउनुहोस्।</translation>
 <translation id="6254066287920239840">लिंंकहरूलाई ब्राउजरको सट्टा यो अनुप्रयोगमा खोल्नुहोस्।</translation>
 <translation id="6255097610484507482">क्रेडिट कार्ड सम्पादन गर्नुहोस्</translation>
 <translation id="6284652193729350524"><ph name="LANGUAGE" /> भाषा अनुवाद गर्न प्रस्ताव गर्नुहोस्</translation>
@@ -527,6 +529,7 @@
 <translation id="6445981559479772097">सन्देश पठाइयो।</translation>
 <translation id="6447842834002726250">कुकीहरू</translation>
 <translation id="6453018583485750254">कहिल्यै पनि जाँच गरिएको छैन।</translation>
+<translation id="6459307836338400162">गोपनीयता, सुरक्षा र डेटाको सङ्कलनसँग सम्बन्धित थप सेटिङका लागि <ph name="BEGIN_LINK" />सिंक<ph name="END_LINK" /> तथा <ph name="BEGIN_LINK" />Google का सेवाहरू<ph name="END_LINK" /> नामक दुवै खण्ड हेर्नुहोस्।</translation>
 <translation id="6464071786529933911">नयाँ इन्कोग्निटो ट्याबमा खोल्नुहोस्</translation>
 <translation id="6464397691496239022">साइटहरूले तपाईंलाई राम्रो ब्राउजिङको अनुभव प्रदान गर्न कुकीहरूको प्रयोग गर्न सक्छन्। उदाहरणको लागि साइटहरूले कुकीहरूको प्रयोग गरी तपाईंलाई साइन इन अवस्थामै राख्न वा तपाईंको किनमेलको कार्टमा भएका वस्तुहरू सम्झन सक्छन्।
 
@@ -709,6 +712,7 @@
 <translation id="8281886186245836920">त्याग्नुहोस्</translation>
 <translation id="8283172974887967105">सेट गर्नुहोस्…</translation>
 <translation id="8299417921174340354">पासवर्डहरू प्रयोग गर्न सर्वप्रथम तपाईंले आफ्नो यन्त्रमा अनिवार्य रूपमा कुनै पासकोड सेट गर्नु पर्छ।</translation>
+<translation id="83100941411593607">साइन इन गर्ने सुविधा अफ गरिएको छ</translation>
 <translation id="8319076807703933069">नयाँ खोज</translation>
 <translation id="8323906514956095947">ट्याबसम्बन्धी थप विकल्पहरू हेर्न टच एण्ड होल्ड गर्नुहोस्</translation>
 <translation id="8328777765163860529">सबै बन्द गर्नुहोस्</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
index 4bda0ae..d11c6df 100644
--- a/ios/chrome/app/strings/resources/ios_strings_nl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Link gekopieerd</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> van <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">Je leeslijst is offline beschikbaar. Tik op <ph name="SHARE_OPENING_ICON" /> en daarna op <ph name="ADD_TO_READING_LIST_TEXT" /> om een pagina toe te voegen aan je leeslijst.</translation>
 <translation id="3268451620468152448">Geopende tabbladen</translation>
 <translation id="3272527697863656322">Annuleren</translation>
 <translation id="3277021493514034324">Siteadres gekopieerd</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
index 885cf258..b2b3b34 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">ਲਿੰਕ ਕਾਪੀ ਕੀਤਾ</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="NUM_SUGGESTIONS" /> ਵਿੱਚੋਂ <ph name="INDEX" /></translation>
+<translation id="3261971309013797455">ਤੁਹਾਡੀ ਪੜ੍ਹਨ-ਸੂਚੀ ਆਫ਼ਲਾਈਨ ਉਪਲਬਧ ਹੈ। ਤੁਹਾਡੀ ਪੜ੍ਹਨ-ਸੂਚੀ ਵਿੱਚ ਇੱਕ ਪੰਨਾ ਸ਼ਾਮਲ ਕਰਨ ਲਈ, ਪਹਿਲਾਂ <ph name="SHARE_OPENING_ICON" /> 'ਤੇ ਟੈਪ ਕਰੋ ਅਤੇ ਬਾਅਦ ਵਿੱਚ <ph name="ADD_TO_READING_LIST_TEXT" /> 'ਤੇ।</translation>
 <translation id="3268451620468152448">ਟੈਬਸ ਖੋਲ੍ਹੋ</translation>
 <translation id="3272527697863656322">ਰੱਦ ਕਰੋ</translation>
 <translation id="3277021493514034324">ਸਾਈਟ ਦਾ ਪਤਾ ਕਾਪੀ ਕੀਤਾ ਗਿਆ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
index 5fc5233..afe21fd5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ru.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Готово</translation>
 <translation id="3244271242291266297">ММ</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> из <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">Список для чтения доступен без подключения к интернету. Чтобы добавить в него страницу, нажмите <ph name="SHARE_OPENING_ICON" />, а затем "<ph name="ADD_TO_READING_LIST_TEXT" />".</translation>
 <translation id="3268451620468152448">Вкладки</translation>
 <translation id="3272527697863656322">Отмена</translation>
 <translation id="3277021493514034324">Адрес сайта скопирован</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
index af06bce0..f2a4400 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sq.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Lidhja u kopjua</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> nga <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">Lista jote e leximit ofrohet jashtë linje. Për të shtuar një faqe në listën tënde të leximit, trokit te <ph name="SHARE_OPENING_ICON" /> dhe më pas te <ph name="ADD_TO_READING_LIST_TEXT" />.</translation>
 <translation id="3268451620468152448">Hap skedat</translation>
 <translation id="3272527697863656322">Anulo</translation>
 <translation id="3277021493514034324">Adresa e sajtit u kopjua</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
index 3850ed1c..ea414962 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sv.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
@@ -162,7 +162,7 @@
 <translation id="2704606927547763573">Kopierat</translation>
 <translation id="2709516037105925701">Autofyll</translation>
 <translation id="2712127207578915686">Det gick inte att öppna filen</translation>
-<translation id="2718352093833049315">Endast på Wi-Fi</translation>
+<translation id="2718352093833049315">Endast på wifi</translation>
 <translation id="2747003861858887689">Föregående fält</translation>
 <translation id="2764831210418622012">nyss</translation>
 <translation id="2773292004659987824">Inkognitosökning</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
index fd8d022..3c8e4b8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">இணைப்பு நகலெடுக்கப்பட்டது</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> / <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">உங்கள் வாசிப்புப் பட்டியலை ஆஃப்லைனில் அணுகலாம். வாசிப்புப் பட்டியலில் பக்கத்தைச் சேர்க்க, <ph name="SHARE_OPENING_ICON" /> ஐகானைத் தட்டி <ph name="ADD_TO_READING_LIST_TEXT" /> என்பதைத் தட்டவும்.</translation>
 <translation id="3268451620468152448">திறந்த தத்தல்கள்</translation>
 <translation id="3272527697863656322">ரத்துசெய்</translation>
 <translation id="3277021493514034324">தள முகவரி நகலெடுக்கப்பட்டது</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
index c9bdd95..cf8e1e3 100644
--- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Bağlantı kopyalandı</translation>
 <translation id="3244271242291266297">AA</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> / <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">Okuma listeniz çevrimdışı olarak kullanılabilir. Okuma listenize sayfa eklemek için önce <ph name="SHARE_OPENING_ICON" />, ardından <ph name="ADD_TO_READING_LIST_TEXT" /> öğesine dokunun.</translation>
 <translation id="3268451620468152448">Açık Sekmeler</translation>
 <translation id="3272527697863656322">İptal</translation>
 <translation id="3277021493514034324">Site adresi kopyalandı</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
index 3c74763..f8e4529 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Посилання скопійовано</translation>
 <translation id="3244271242291266297">ММ</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> з <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">Ваш список читання доступний офлайн. Щоб додати до нього сторінку, торкніться значка <ph name="SHARE_OPENING_ICON" /> і виберіть <ph name="ADD_TO_READING_LIST_TEXT" />.</translation>
 <translation id="3268451620468152448">Відкриті вкладки</translation>
 <translation id="3272527697863656322">Скасувати</translation>
 <translation id="3277021493514034324">Адресу сайту скопійовано</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
index 9d0f7f3..c254a490 100644
--- a/ios/chrome/app/strings/resources/ios_strings_vi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">Đã sao chép đường liên kết</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> trong số <ph name="NUM_SUGGESTIONS" /></translation>
+<translation id="3261971309013797455">Danh sách đọc của bạn vẫn dùng được khi không có mạng. Để thêm một trang vào danh sách đọc, hãy nhấn vào biểu tượng <ph name="SHARE_OPENING_ICON" /> rồi nhấn vào <ph name="ADD_TO_READING_LIST_TEXT" />.</translation>
 <translation id="3268451620468152448">Thẻ đang mở</translation>
 <translation id="3272527697863656322">Hủy</translation>
 <translation id="3277021493514034324">Đã sao chép địa chỉ trang web</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 cdfe19b..e03c6695 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">連結已複製</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />,<ph name="ADDITIONAL_INFO" /> (第 <ph name="INDEX" /> 項建議,共 <ph name="NUM_SUGGESTIONS" /> 項)</translation>
+<translation id="3261971309013797455">閱讀清單現可供離線瀏覽。如要將網頁加入您的閱讀清單,請輕按 <ph name="SHARE_OPENING_ICON" />,然後輕按 [<ph name="ADD_TO_READING_LIST_TEXT" />]。</translation>
 <translation id="3268451620468152448">開啟的分頁</translation>
 <translation id="3272527697863656322">取消</translation>
 <translation id="3277021493514034324">已複製網站網址</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 297a0e6..cb1e5783 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -220,6 +220,7 @@
 <translation id="3240426699337459095">連結已複製</translation>
 <translation id="3244271242291266297">月</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />,<ph name="ADDITIONAL_INFO" /> (第 <ph name="INDEX" /> 項建議,共 <ph name="NUM_SUGGESTIONS" /> 項)</translation>
+<translation id="3261971309013797455">閱讀清單可供離線存取。如要將網頁加入閱讀清單,請依序輕觸 <ph name="SHARE_OPENING_ICON" /> &gt; [<ph name="ADD_TO_READING_LIST_TEXT" />]。</translation>
 <translation id="3268451620468152448">開啟的分頁</translation>
 <translation id="3272527697863656322">取消</translation>
 <translation id="3277021493514034324">已複製網站網址</translation>
diff --git a/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_impl.cc b/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_impl.cc
index f853247..c526d118 100644
--- a/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_impl.cc
+++ b/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_impl.cc
@@ -5,6 +5,7 @@
 #include "ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_impl.h"
 
 #include "base/metrics/histogram_functions.h"
+#include "base/metrics/user_metrics.h"
 #include "base/notreached.h"
 #include "base/sequenced_task_runner.h"
 #include "base/task/post_task.h"
@@ -37,6 +38,7 @@
       this);
   profile_metrics::SetBrowserProfileType(
       this, profile_metrics::BrowserProfileType::kIncognito);
+  base::RecordAction(base::UserMetricsAction("IncognitoMode_Started"));
 }
 
 OffTheRecordChromeBrowserStateImpl::~OffTheRecordChromeBrowserStateImpl() {
diff --git a/ios/chrome/browser/geolocation/omnibox_geolocation_controller.h b/ios/chrome/browser/geolocation/omnibox_geolocation_controller.h
index 1281c9f..ae2a0a5 100644
--- a/ios/chrome/browser/geolocation/omnibox_geolocation_controller.h
+++ b/ios/chrome/browser/geolocation/omnibox_geolocation_controller.h
@@ -27,9 +27,6 @@
 // authorization is not yet determined.
 - (void)triggerSystemPrompt;
 
-// Notifies the receiver that the location bar became the first responder.
-- (void)locationBarDidBecomeFirstResponder:(ChromeBrowserState*)browserState;
-
 // Notifies the receiver that the browser finished loading the page for
 // |webState|. |loadSuccess| whether the web state loaded successfully.
 // |webState| can't be null.
diff --git a/ios/chrome/browser/geolocation/omnibox_geolocation_controller.mm b/ios/chrome/browser/geolocation/omnibox_geolocation_controller.mm
index 9a4fd4a..bd1103d0 100644
--- a/ios/chrome/browser/geolocation/omnibox_geolocation_controller.mm
+++ b/ios/chrome/browser/geolocation/omnibox_geolocation_controller.mm
@@ -100,51 +100,9 @@
   }
 }
 
-- (void)locationBarDidBecomeFirstResponder:(ChromeBrowserState*)browserState {
-  if (self.locationServicesEnabled && browserState &&
-      !browserState->IsOffTheRecord()) {
-    [self requestPermission];
-  }
-}
-
 - (void)finishPageLoadForWebState:(web::WebState*)webState
                       loadSuccess:(BOOL)loadSuccess {
-  if (!loadSuccess || !webState->GetBrowserState() ||
-      webState->GetBrowserState()->IsOffTheRecord()) {
-    return;
-  }
-
-  web::NavigationItem* item =
-      webState->GetNavigationManager()->GetVisibleItem();
-
-  if (!item) {
-    // TODO(crbug.com/899827): remove this early return once committed
-    // navigation item always exists after WebStateObserver::PageLoaded.
-    return;
-  }
-
-  if (![self URLIsAuthorizationPromptingURL:item->GetURL()] ||
-      !self.locationServicesEnabled) {
-    return;
-  }
-
-  switch (CLLocationManager.authorizationStatus) {
-    case kCLAuthorizationStatusNotDetermined:
-      // Prompt the user with the iOS system location authorization alert.
-      //
-      // Set |systemPrompt_|, so that
-      // locationManagerDidChangeAuthorization: will know that any
-      // CLAuthorizationStatus changes are coming from this specific prompt.
-      _systemPrompt = YES;
-      [self requestPermission];
-      break;
-
-    case kCLAuthorizationStatusRestricted:
-    case kCLAuthorizationStatusDenied:
-    case kCLAuthorizationStatusAuthorizedAlways:
-    case kCLAuthorizationStatusAuthorizedWhenInUse:
-      break;
-  }
+  // Don't ask for permission on page loads.
 }
 
 - (void)systemPromptSkippedForNewUser {
diff --git a/ios/chrome/browser/infobars/infobar_manager_impl.h b/ios/chrome/browser/infobars/infobar_manager_impl.h
index 4922286..cc0d1f3 100644
--- a/ios/chrome/browser/infobars/infobar_manager_impl.h
+++ b/ios/chrome/browser/infobars/infobar_manager_impl.h
@@ -12,10 +12,6 @@
 #include "ios/web/public/web_state_observer.h"
 #import "ios/web/public/web_state_user_data.h"
 
-namespace infobars {
-class InfoBar;
-}
-
 namespace web {
 class WebState;
 }
@@ -38,8 +34,6 @@
 
   // InfoBarManager implementation.
   int GetActiveEntryID() override;
-  std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate> delegate) override;
 
   // web::WebStateObserver implementation.
   void DidFinishNavigation(web::WebState* web_state,
diff --git a/ios/chrome/browser/infobars/infobar_manager_impl.mm b/ios/chrome/browser/infobars/infobar_manager_impl.mm
index 96deedc0..23b1b3e 100644
--- a/ios/chrome/browser/infobars/infobar_manager_impl.mm
+++ b/ios/chrome/browser/infobars/infobar_manager_impl.mm
@@ -63,11 +63,6 @@
   return visible_item ? visible_item->GetUniqueID() : 0;
 }
 
-std::unique_ptr<infobars::InfoBar> InfoBarManagerImpl::CreateConfirmInfoBar(
-    std::unique_ptr<ConfirmInfoBarDelegate> delegate) {
-  return ::CreateConfirmInfoBar(std::move(delegate));
-}
-
 void InfoBarManagerImpl::DidFinishNavigation(
     web::WebState* web_state,
     web::NavigationContext* navigation_context) {
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_store_factory.cc b/ios/chrome/browser/passwords/ios_chrome_password_store_factory.cc
index a4414140..00a07db 100644
--- a/ios/chrome/browser/passwords/ios_chrome_password_store_factory.cc
+++ b/ios/chrome/browser/passwords/ios_chrome_password_store_factory.cc
@@ -20,6 +20,7 @@
 #include "components/password_manager/core/browser/password_manager_util.h"
 #include "components/password_manager/core/browser/password_store_factory_util.h"
 #include "components/password_manager/core/browser/password_store_impl.h"
+#include "components/password_manager/core/common/password_manager_features.h"
 #include "components/sync/driver/sync_service.h"
 #include "ios/chrome/browser/application_context.h"
 #include "ios/chrome/browser/browser_state/browser_state_otr_helper.h"
@@ -104,6 +105,19 @@
       CredentialsCleanerRunnerFactory::GetForBrowserState(context), store,
       ChromeBrowserState::FromBrowserState(context)->GetPrefs(),
       base::TimeDelta::FromSeconds(60), base::NullCallback());
+
+  if (base::FeatureList::IsEnabled(
+          password_manager::features::kFillingAcrossAffiliatedWebsites)) {
+    // Try to create affiliation service without awaiting synced state changes.
+    // TODO(crbug.com/1202699): Remove sync service completely after
+    // launching HashAffiliationLookup.
+    password_manager::ToggleAffiliationBasedMatchingBasedOnPasswordSyncedState(
+        store.get(), /*sync_service=*/nullptr,
+        context->GetSharedURLLoaderFactory(),
+        GetApplicationContext()->GetNetworkConnectionTracker(),
+        context->GetStatePath());
+  }
+
   return store;
 }
 
diff --git a/ios/chrome/browser/passwords/password_tab_helper.h b/ios/chrome/browser/passwords/password_tab_helper.h
index 8fd7d74..ab2d76c 100644
--- a/ios/chrome/browser/passwords/password_tab_helper.h
+++ b/ios/chrome/browser/passwords/password_tab_helper.h
@@ -20,6 +20,7 @@
 namespace password_manager {
 class PasswordGenerationFrameHelper;
 class PasswordManager;
+class PasswordManagerClient;
 }
 
 // Class binding a PasswordController to a WebState.
@@ -50,6 +51,9 @@
   // Returns the PasswordManager owned by the PasswordController.
   password_manager::PasswordManager* GetPasswordManager();
 
+  // Returns the PasswordManagerClient owned by the PasswordController.
+  password_manager::PasswordManagerClient* GetPasswordManagerClient();
+
   // Returns an object that can provide password generation from the
   // PasswordController. May return nil.
   id<PasswordGenerationProvider> GetPasswordGenerationProvider();
diff --git a/ios/chrome/browser/passwords/password_tab_helper.mm b/ios/chrome/browser/passwords/password_tab_helper.mm
index 78a7c6ec..3c71695 100644
--- a/ios/chrome/browser/passwords/password_tab_helper.mm
+++ b/ios/chrome/browser/passwords/password_tab_helper.mm
@@ -51,6 +51,11 @@
   return controller_.passwordManager;
 }
 
+password_manager::PasswordManagerClient*
+PasswordTabHelper::GetPasswordManagerClient() {
+  return controller_.passwordManagerClient;
+}
+
 id<PasswordGenerationProvider>
 PasswordTabHelper::GetPasswordGenerationProvider() {
   return controller_.generationProvider;
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/BUILD.gn b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/BUILD.gn
index 0428dbf3..208763f 100644
--- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/BUILD.gn
@@ -19,6 +19,7 @@
     "//ios/chrome/browser/ui/authentication/signin:signin_protected",
     "//ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/bottom_sheet",
     "//ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account",
+    "//ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error",
     "//ios/chrome/browser/ui/image_util",
     "//ios/chrome/browser/ui/util",
     "//ios/chrome/common/ui/colors",
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_promo_signin_coordinator.mm b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_promo_signin_coordinator.mm
index 6e2d2e3..68c38523 100644
--- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_promo_signin_coordinator.mm
+++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_promo_signin_coordinator.mm
@@ -17,6 +17,7 @@
 #import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/bottom_sheet/bottom_sheet_presentation_controller.h"
 #import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/bottom_sheet/bottom_sheet_slide_transition_animator.h"
 #import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account/consistency_default_account_coordinator.h"
+#import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_coordinator.h"
 #import "ios/chrome/browser/ui/authentication/signin/signin_coordinator+protected.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 
@@ -27,6 +28,7 @@
 @interface ConsistencyPromoSigninCoordinator () <
     BottomSheetPresentationControllerPresentationDelegate,
     ConsistencyDefaultAccountCoordinatorDelegate,
+    ConsistencySigninErrorCoordinatorDelegate,
     IdentityManagerObserverBridgeDelegate,
     UINavigationControllerDelegate,
     UIViewControllerTransitioningDelegate>
@@ -41,6 +43,9 @@
 // Coordinator for the first screen.
 @property(nonatomic, strong)
     ConsistencyDefaultAccountCoordinator* defaultAccountCoordinator;
+// Coordinator for error screens.
+@property(nonatomic, strong)
+    ConsistencySigninErrorCoordinator* signinErrorCoordinator;
 // Chrome interface to the iOS shared authentication library.
 @property(nonatomic, assign) AuthenticationService* authenticationService;
 // Manager for user's Google identities.
@@ -128,6 +133,7 @@
                                          SigninCoordinatorResultCanceledByUser
                                                identity:nil];
                          }];
+  self.primaryAccountSetCompletion = nil;
 }
 
 // Calls the sign-in completion block.
@@ -177,11 +183,41 @@
   }
 }
 
+- (void)signinWithIdentity:(ChromeIdentity*)identity {
+  __weak __typeof(self) weakSelf = self;
+  // |onPrimaryAccountChanged| notification is sent immediately after calling
+  // SignIn. All callbacks should be set prior to this operation.
+  self.primaryAccountSetCompletion = ^(BOOL success) {
+    [weakSelf.navigationController
+        dismissViewControllerAnimated:YES
+                           completion:^() {
+                             [weakSelf finishedWithResult:
+                                           SigninCoordinatorResultSuccess
+                                                 identity:identity];
+                           }];
+  };
+
+  self.authenticationService->SignIn(identity);
+}
+
 #pragma mark - BottomSheetPresentationControllerPresentationDelegate
 
 - (void)bottomSheetPresentationControllerDismissViewController:
     (BottomSheetPresentationController*)controller {
   [self dismissNavigationViewController];
+
+  [self.signinErrorCoordinator stop];
+  self.signinErrorCoordinator = nil;
+}
+
+#pragma mark - ConsistencySigninErrorCoordinatorDelegate
+
+- (void)consistencySigninErrorCoordinatorRetrySignin {
+  DCHECK(self.signinErrorCoordinator);
+  [self.navigationController popViewControllerAnimated:YES];
+
+  [self.signinErrorCoordinator stop];
+  self.signinErrorCoordinator = nil;
 }
 
 #pragma mark - ConsistencyDefaultAccountCoordinatorDelegate
@@ -198,20 +234,9 @@
 
 - (void)consistencyDefaultAccountCoordinatorSignin:
     (ConsistencyDefaultAccountCoordinator*)coordinator {
+  DCHECK_EQ(coordinator, self.defaultAccountCoordinator);
   ChromeIdentity* identity = self.defaultAccountCoordinator.selectedIdentity;
-  __weak __typeof(self) weakSelf = self;
-  // |onPrimaryAccountChanged| notification is sent immediately after calling
-  // SignIn. All callbacks should be set prior to this operation.
-  self.primaryAccountSetCompletion = ^(BOOL success) {
-    [weakSelf.navigationController
-        dismissViewControllerAnimated:YES
-                           completion:^() {
-                             [weakSelf finishedWithResult:
-                                           SigninCoordinatorResultSuccess
-                                                 identity:identity];
-                           }];
-  };
-  self.authenticationService->SignIn(identity);
+  [self signinWithIdentity:identity];
 }
 
 #pragma mark - IdentityManagerObserverBridgeDelegate
@@ -230,6 +255,28 @@
   self.primaryAccountSetCompletion = nil;
 }
 
+- (void)onAccountsInCookieUpdated:
+            (const signin::AccountsInCookieJarInfo&)accountsInCookieJarInfo
+                            error:(const GoogleServiceAuthError&)error {
+  if (error.state() == GoogleServiceAuthError::State::NONE) {
+    return;
+  }
+
+  self.signinErrorCoordinator = [[ConsistencySigninErrorCoordinator alloc]
+      initWithBaseViewController:self.navigationController
+                         browser:self.browser
+                      errorState:error.state()];
+  self.signinErrorCoordinator.delegate = self;
+  [self.signinErrorCoordinator start];
+
+  // The account was not set because of an error. Reset the completion callback.
+  self.primaryAccountSetCompletion = nil;
+
+  [self.navigationController
+      pushViewController:self.signinErrorCoordinator.viewController
+                animated:YES];
+}
+
 #pragma mark - UINavigationControllerDelegate
 
 - (id<UIViewControllerAnimatedTransitioning>)
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/BUILD.gn b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/BUILD.gn
new file mode 100644
index 0000000..0c7a4362
--- /dev/null
+++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/BUILD.gn
@@ -0,0 +1,30 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/chrome_build.gni")
+
+source_set("consistency_signin_error") {
+  configs += [ "//build/config/compiler:enable_arc" ]
+  sources = [
+    "consistency_signin_error_coordinator.h",
+    "consistency_signin_error_coordinator.mm",
+    "consistency_signin_error_view_controller.h",
+    "consistency_signin_error_view_controller.mm",
+  ]
+  deps = [
+    "//ios/chrome/app/strings",
+    "//ios/chrome/browser",
+    "//ios/chrome/browser/signin",
+    "//ios/chrome/browser/ui/authentication",
+    "//ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/bottom_sheet",
+    "//ios/chrome/browser/ui/authentication/views",
+    "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
+    "//ios/chrome/browser/ui/table_view",
+    "//ios/chrome/common/ui/colors",
+    "//ios/chrome/common/ui/util",
+    "//ios/public/provider/chrome/browser",
+    "//ios/public/provider/chrome/browser/signin",
+    "//ui/base",
+  ]
+}
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_coordinator.h b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_coordinator.h
new file mode 100644
index 0000000..7ab32ce
--- /dev/null
+++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_coordinator.h
@@ -0,0 +1,42 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_CONSISTENCY_PROMO_SIGNIN_CONSISTENCY_SIGNIN_ERROR_CONSISTENCY_SIGNIN_ERROR_COORDINATOR_H_
+#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_CONSISTENCY_PROMO_SIGNIN_CONSISTENCY_SIGNIN_ERROR_CONSISTENCY_SIGNIN_ERROR_COORDINATOR_H_
+
+#import <UIKit/UIKit.h>
+
+#import "google_apis/gaia/google_service_auth_error.h"
+#import "ios/chrome/browser/ui/coordinators/chrome_coordinator.h"
+
+@class ConsistencySigninErrorCoordinator;
+
+@protocol ConsistencySigninErrorCoordinatorDelegate <NSObject>
+
+// Retries the sign-in in case of an authentication error.
+- (void)consistencySigninErrorCoordinatorRetrySignin;
+
+@end
+
+// Coordinator that presents an error message to the user based on the
+// authentication service error state.
+@interface ConsistencySigninErrorCoordinator : ChromeCoordinator
+
+- (instancetype)initWithBaseViewController:(UIViewController*)viewController
+                                   browser:(Browser*)browser NS_UNAVAILABLE;
+
+// Designated initializer.
+- (instancetype)initWithBaseViewController:(UIViewController*)viewController
+                                   browser:(Browser*)browser
+                                errorState:
+                                    (GoogleServiceAuthError::State)errorState
+    NS_DESIGNATED_INITIALIZER;
+
+@property(nonatomic, strong, readonly) UIViewController* viewController;
+@property(nonatomic, weak) id<ConsistencySigninErrorCoordinatorDelegate>
+    delegate;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_CONSISTENCY_PROMO_SIGNIN_CONSISTENCY_SIGNIN_ERROR_CONSISTENCY_SIGNIN_ERROR_COORDINATOR_H_
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_coordinator.mm b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_coordinator.mm
new file mode 100644
index 0000000..ecddf82
--- /dev/null
+++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_coordinator.mm
@@ -0,0 +1,60 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_coordinator.h"
+
+#import "google_apis/gaia/google_service_auth_error.h"
+#import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_view_controller.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+@interface ConsistencySigninErrorCoordinator () <
+    ConsistencySigninErrorViewControllerDelegate>
+
+// Error state.
+@property(nonatomic, assign) GoogleServiceAuthError::State errorState;
+// View controller to display sign-in errors.
+@property(nonatomic, strong)
+    ConsistencySigninErrorViewController* errorViewController;
+@end
+
+@implementation ConsistencySigninErrorCoordinator
+@synthesize errorViewController = _errorViewController;
+
+- (instancetype)initWithBaseViewController:(UIViewController*)viewController
+                                   browser:(Browser*)browser
+                                errorState:
+                                    (GoogleServiceAuthError::State)errorState {
+  self = [super initWithBaseViewController:viewController browser:browser];
+  if (self) {
+    _errorState = errorState;
+  }
+  return self;
+}
+
+- (void)start {
+  DCHECK(self.errorState);
+  self.errorViewController = [[ConsistencySigninErrorViewController alloc]
+      initWithAuthErrorState:self.errorState];
+  self.errorViewController.delegate = self;
+  [self.errorViewController view];
+}
+
+#pragma mark - ConsistencySigninErrorViewControllerDelegate
+
+- (void)consistencySigninErrorViewControllerDidTapRetrySignin:
+    (ConsistencySigninErrorViewController*)viewController {
+  DCHECK_EQ(viewController, self.errorViewController);
+  [self.delegate consistencySigninErrorCoordinatorRetrySignin];
+}
+
+#pragma mark - Properties
+
+- (UIViewController*)viewController {
+  return self.errorViewController;
+}
+
+@end
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_view_controller.h b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_view_controller.h
new file mode 100644
index 0000000..49ebde6
--- /dev/null
+++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_view_controller.h
@@ -0,0 +1,41 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_CONSISTENCY_PROMO_SIGNIN_CONSISTENCY_SIGNIN_ERROR_CONSISTENCY_SIGNIN_ERROR_VIEW_CONTROLLER_H_
+#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_CONSISTENCY_PROMO_SIGNIN_CONSISTENCY_SIGNIN_ERROR_CONSISTENCY_SIGNIN_ERROR_VIEW_CONTROLLER_H_
+
+#import <UIKit/UIKit.h>
+
+#import "google_apis/gaia/google_service_auth_error.h"
+#import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/bottom_sheet/child_bottom_sheet_view_controller.h"
+
+@class ConsistencySigninErrorViewController;
+
+@protocol ConsistencySigninErrorViewControllerDelegate <NSObject>
+
+// Retries the sign-in in the case of an authentication error.
+- (void)consistencySigninErrorViewControllerDidTapRetrySignin:
+    (ConsistencySigninErrorViewController*)viewController;
+
+@end
+
+// Displays a sign-in error message based on the error state.
+@interface ConsistencySigninErrorViewController
+    : UIViewController <ChildBottomSheetViewController>
+
+- (instancetype)init NS_UNAVAILABLE;
+- (instancetype)initWithCoder:(NSCoder*)coder NS_UNAVAILABLE;
+- (instancetype)initWithNibName:(NSString*)nibNAme
+                         bundle:(NSBundle*)nibBundle NS_UNAVAILABLE;
+
+// Designated initializer.
+- (instancetype)initWithAuthErrorState:
+    (const GoogleServiceAuthError::State&)errorState NS_DESIGNATED_INITIALIZER;
+
+@property(nonatomic, weak) id<ConsistencySigninErrorViewControllerDelegate>
+    delegate;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_CONSISTENCY_PROMO_SIGNIN_CONSISTENCY_SIGNIN_ERROR_CONSISTENCY_SIGNIN_ERROR_VIEW_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_view_controller.mm b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_view_controller.mm
new file mode 100644
index 0000000..837f996
--- /dev/null
+++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_view_controller.mm
@@ -0,0 +1,134 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_signin_error/consistency_signin_error_view_controller.h"
+
+#import "google_apis/gaia/google_service_auth_error.h"
+#import "ios/chrome/common/ui/colors/semantic_color_names.h"
+#import "ios/chrome/common/ui/util/button_util.h"
+#import "ios/chrome/common/ui/util/constraints_ui_util.h"
+#import "ios/chrome/grit/ios_strings.h"
+#import "ui/base/l10n/l10n_util.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+namespace {
+
+NSString* const kSigninErrorImageName = @"settings_error";
+
+// Layout properties for error message.
+constexpr CGFloat kContentSpacing = 16.;
+constexpr CGFloat kContentMargin = 16.;
+
+}  // namespace
+
+@interface ConsistencySigninErrorViewController ()
+
+// Authentication error.
+@property(nonatomic, assign) GoogleServiceAuthError::State errorState;
+
+// Views for the error message.
+@property(nonatomic, strong) UIStackView* contentView;
+@property(nonatomic, strong) UIButton* retrySigninButton;
+
+@end
+
+@implementation ConsistencySigninErrorViewController
+
+- (instancetype)initWithAuthErrorState:
+    (const GoogleServiceAuthError::State&)errorState {
+  self = [super initWithNibName:nil bundle:nil];
+  if (self) {
+    _errorState = errorState;
+  }
+  return self;
+}
+
+- (void)dealloc {
+  [self.retrySigninButton removeTarget:self
+                                action:@selector(onRetrySigninButtonPressed:)
+                      forControlEvents:UIControlEventTouchDown];
+}
+
+#pragma mark - UIViewController
+
+- (void)viewDidLoad {
+  [super viewDidLoad];
+
+  NSString* title;
+  NSString* labelText;
+  if (self.errorState ==
+      GoogleServiceAuthError::State::INVALID_GAIA_CREDENTIALS) {
+    title = l10n_util::GetNSString(IDS_IOS_SIGN_IN_AGAIN);
+    labelText = l10n_util::GetNSString(IDS_IOS_SIGN_IN_WRONG_CREDENTIALS);
+  } else {
+    title = l10n_util::GetNSString(IDS_IOS_SIGN_IN_TRY_AGAIN);
+    labelText = l10n_util::GetNSString(IDS_IOS_SIGN_IN_AUTH_FAILURE);
+    ;
+  }
+
+  UIImageView* errorImage = [[UIImageView alloc] init];
+  errorImage.translatesAutoresizingMaskIntoConstraints = NO;
+  errorImage.image = [UIImage imageNamed:kSigninErrorImageName];
+
+  self.retrySigninButton =
+      PrimaryActionButton(/* pointer_interaction_enabled */ YES);
+  [self.retrySigninButton setTitle:title forState:UIControlStateNormal];
+  [self.retrySigninButton addTarget:self
+                             action:@selector(onRetrySigninButtonPressed:)
+                   forControlEvents:UIControlEventTouchUpInside];
+  self.retrySigninButton.translatesAutoresizingMaskIntoConstraints = NO;
+
+  UILabel* messageTitle = [[UILabel alloc] init];
+  messageTitle.font =
+      [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
+  messageTitle.text = l10n_util::GetNSString(IDS_IOS_SIGN_IN_FAILURE_TITLE);
+  messageTitle.translatesAutoresizingMaskIntoConstraints = NO;
+
+  UILabel* messageSubtitle = [[UILabel alloc] init];
+  messageSubtitle.font =
+      [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
+  messageSubtitle.text = labelText;
+  messageSubtitle.translatesAutoresizingMaskIntoConstraints = NO;
+
+  self.contentView = [[UIStackView alloc] initWithArrangedSubviews:@[
+    errorImage, messageTitle, messageSubtitle, self.retrySigninButton
+  ]];
+  self.contentView.axis = UILayoutConstraintAxisVertical;
+  self.contentView.alignment = UIStackViewAlignmentCenter;
+  self.contentView.spacing = kContentSpacing;
+  self.contentView.translatesAutoresizingMaskIntoConstraints = NO;
+  [self.view addSubview:self.contentView];
+
+  AddSameCenterConstraints(self.view, self.contentView);
+  [NSLayoutConstraint
+      activateConstraints:@[ [self.retrySigninButton.widthAnchor
+                              constraintEqualToAnchor:self.view.widthAnchor
+                                             constant:-kContentMargin] ]];
+}
+
+- (void)onRetrySigninButtonPressed:(id)sender {
+  [self.delegate consistencySigninErrorViewControllerDidTapRetrySignin:self];
+}
+
+#pragma mark - ChildBottomSheetViewController
+
+- (CGFloat)layoutFittingHeightForWidth:(CGFloat)width {
+  CGFloat contentViewWidth = width - self.view.safeAreaInsets.left -
+                             self.view.safeAreaInsets.right -
+                             kContentMargin * 2;
+  CGSize size = CGSizeMake(contentViewWidth, 0);
+  size = [self.contentView
+        systemLayoutSizeFittingSize:size
+      withHorizontalFittingPriority:UILayoutPriorityRequired
+            verticalFittingPriority:UILayoutPriorityFittingSizeLevel];
+  return size.height +
+         self.navigationController.navigationBar.frame.size.height +
+         self.navigationController.view.window.safeAreaInsets.bottom +
+         kContentMargin * 2;
+}
+
+@end
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_all_password_coordinator.mm b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_all_password_coordinator.mm
index 9711881..45e8046 100644
--- a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_all_password_coordinator.mm
+++ b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_all_password_coordinator.mm
@@ -57,13 +57,14 @@
       self.browser->GetWebStateList()->GetActiveWebState();
   SyncSetupService* syncService = SyncSetupServiceFactory::GetForBrowserState(
       self.browser->GetBrowserState());
-  self.passwordMediator =
-      [[ManualFillPasswordMediator alloc] initWithPasswordStore:passwordStore
-                                                  faviconLoader:faviconLoader
-                                                       webState:webState
-                                                    syncService:syncService
-                                         invokedOnPasswordField:NO];
-  [self.passwordMediator fetchPasswordsForURL:GURL::EmptyGURL()];
+  self.passwordMediator = [[ManualFillPasswordMediator alloc]
+       initWithPasswordStore:passwordStore
+               faviconLoader:faviconLoader
+                    webState:webState
+                 syncService:syncService
+                         URL:GURL::EmptyGURL()
+      invokedOnPasswordField:NO];
+  [self.passwordMediator fetchPasswords];
   self.passwordMediator.actionSectionEnabled = NO;
   self.passwordMediator.consumer = self.passwordViewController;
   self.passwordMediator.contentInjector = self.injectionHandler;
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_coordinator.mm b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_coordinator.mm
index 6fc5565b..6c5b83c2 100644
--- a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_coordinator.mm
+++ b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_coordinator.mm
@@ -72,8 +72,9 @@
                  faviconLoader:faviconLoader
                       webState:browser->GetWebStateList()->GetActiveWebState()
                    syncService:syncService
+                           URL:URL
         invokedOnPasswordField:invokedOnPasswordField];
-    [_passwordMediator fetchPasswordsForURL:URL];
+    [_passwordMediator fetchPasswords];
     _passwordMediator.actionSectionEnabled = YES;
     _passwordMediator.consumer = _passwordViewController;
     _passwordMediator.navigator = self;
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_mediator.h b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_mediator.h
index 38ac4b7..f74f6ef4 100644
--- a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_mediator.h
+++ b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_mediator.h
@@ -69,15 +69,16 @@
                         faviconLoader:(FaviconLoader*)faviconLoader
                              webState:(web::WebState*)webState
                           syncService:(SyncSetupService*)syncService
+                                  URL:(const GURL&)URL
                invokedOnPasswordField:(BOOL)invokedOnPasswordField
     NS_DESIGNATED_INITIALIZER;
 
 // Unavailable. Use |initWithPasswordStore:faviconLoader:|.
 - (instancetype)init NS_UNAVAILABLE;
 
-// Fetches passwords using |origin| as the filter. If origin is empty (invalid)
-// it will fetch all the passwords.
-- (void)fetchPasswordsForURL:(const GURL&)URL;
+// Fetches passwords using the URL provided at initialisation as the filter.
+// If the URL is empty (invalid) it will fetch all the passwords.
+- (void)fetchPasswords;
 
 @end
 
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_mediator.mm b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_mediator.mm
index 8072d12a..dff5082 100644
--- a/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_mediator.mm
+++ b/ios/chrome/browser/ui/autofill/manual_fill/manual_fill_password_mediator.mm
@@ -11,6 +11,7 @@
 #import "components/autofill/ios/browser/autofill_util.h"
 #import "components/autofill/ios/form_util/form_activity_observer_bridge.h"
 #include "components/autofill/ios/form_util/form_activity_params.h"
+#include "components/password_manager/core/browser/password_manager_client.h"
 #include "components/password_manager/core/browser/password_store.h"
 #include "components/password_manager/core/common/password_manager_features.h"
 #import "components/password_manager/ios/password_generation_provider.h"
@@ -100,6 +101,9 @@
   // Bridge to observe form activity in |_webState|.
   std::unique_ptr<autofill::FormActivityObserverBridge>
       _formActivityObserverBridge;
+
+  // Origin to fetch passwords for.
+  GURL _URL;
 }
 
 - (instancetype)initWithPasswordStore:
@@ -108,6 +112,7 @@
                         faviconLoader:(FaviconLoader*)faviconLoader
                              webState:(web::WebState*)webState
                           syncService:(SyncSetupService*)syncService
+                                  URL:(const GURL&)URL
                invokedOnPasswordField:(BOOL)invokedOnPasswordField {
   self = [super init];
   if (self) {
@@ -116,6 +121,7 @@
     _faviconLoader = faviconLoader;
     _webState = webState;
     _syncService = syncService;
+    _URL = URL;
     _activeFieldIsPassword = invokedOnPasswordField;
     _webStateObserverBridge =
         std::make_unique<web::WebStateObserverBridge>(self);
@@ -132,12 +138,12 @@
   }
 }
 
-- (void)fetchPasswordsForURL:(const GURL&)URL {
+- (void)fetchPasswords {
   self.credentials = @[];
   self.passwordFetcher =
       [[PasswordFetcher alloc] initWithPasswordStore:_passwordStore
                                             delegate:self
-                                                 URL:URL];
+                                                 URL:_URL];
 }
 
 #pragma mark - PasswordFetcherDelegate
@@ -231,9 +237,15 @@
         [[NSMutableArray alloc] init];
     __weak __typeof(self) weakSelf = self;
 
+    password_manager::PasswordManagerClient* passwordManagerClient =
+        _webState ? PasswordTabHelper::FromWebState(_webState)
+                        ->GetPasswordManagerClient()
+                  : nullptr;
     if (base::FeatureList::IsEnabled(
             password_manager::features::kEnableManualPasswordGeneration) &&
         _syncService && _syncService->IsSyncEnabled() &&
+        passwordManagerClient &&
+        passwordManagerClient->IsSavingAndFillingEnabled(_URL) &&
         _activeFieldIsPassword) {
       NSString* suggestPasswordTitleString = l10n_util::GetNSString(
           IDS_IOS_MANUAL_FALLBACK_SUGGEST_PASSWORD_WITH_DOTS);
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/password_view_controller_egtest.mm b/ios/chrome/browser/ui/autofill/manual_fill/password_view_controller_egtest.mm
index c8effd0..8da3597 100644
--- a/ios/chrome/browser/ui/autofill/manual_fill/password_view_controller_egtest.mm
+++ b/ios/chrome/browser/ui/autofill/manual_fill/password_view_controller_egtest.mm
@@ -243,7 +243,8 @@
 }
 
 // Tests that the "Use Other Password..." screen won't open if canceled.
-- (void)testUseOtherPasswordActionCloses {
+// TODO(crbug.com/1203415): Disabled due to flakiness.
+- (void)DISABLED_testUseOtherPasswordActionCloses {
   // Bring up the keyboard.
   [[EarlGrey selectElementWithMatcher:chrome_test_util::WebViewMatcher()]
       performAction:TapWebElementWithId(kFormElementUsername)];
diff --git a/ios/chrome/browser/ui/browser_view/BUILD.gn b/ios/chrome/browser/ui/browser_view/BUILD.gn
index 1d57be4c..1281b59 100644
--- a/ios/chrome/browser/ui/browser_view/BUILD.gn
+++ b/ios/chrome/browser/ui/browser_view/BUILD.gn
@@ -106,6 +106,7 @@
     "//ios/chrome/browser/ui/elements:elements_internal",
     "//ios/chrome/browser/ui/find_bar",
     "//ios/chrome/browser/ui/first_run",
+    "//ios/chrome/browser/ui/first_run:utils",
     "//ios/chrome/browser/ui/fullscreen",
     "//ios/chrome/browser/ui/fullscreen:feature_flags",
     "//ios/chrome/browser/ui/fullscreen:ui",
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 df26d76..a47349b1 100644
--- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
@@ -4430,8 +4430,6 @@
                        [self.typingShield setAlpha:1.0];
                      }];
   }
-  [[OmniboxGeolocationController sharedInstance]
-      locationBarDidBecomeFirstResponder:self.browserState];
 
   [self.primaryToolbarCoordinator transitionToLocationBarFocusedState:YES];
 
diff --git a/ios/chrome/browser/ui/download/pass_kit_coordinator.mm b/ios/chrome/browser/ui/download/pass_kit_coordinator.mm
index 7291ea5f..a9dd554 100644
--- a/ios/chrome/browser/ui/download/pass_kit_coordinator.mm
+++ b/ios/chrome/browser/ui/download/pass_kit_coordinator.mm
@@ -7,9 +7,11 @@
 #include <memory>
 
 #include "base/metrics/histogram_functions.h"
+#include "components/infobars/core/infobar.h"
 #include "components/infobars/core/infobar_manager.h"
 #include "components/infobars/core/simple_alert_infobar_delegate.h"
 #include "ios/chrome/browser/infobars/infobar_manager_impl.h"
+#include "ios/chrome/browser/infobars/infobar_utils.h"
 #include "ios/chrome/grit/ios_strings.h"
 #import "ios/web/public/web_state_observer_bridge.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -115,12 +117,13 @@
 
 // Presents "failed to add pkpass" infobar.
 - (void)presentErrorUI {
-  DCHECK(InfoBarManagerImpl::FromWebState(_webState));
-  SimpleAlertInfoBarDelegate::Create(
-      InfoBarManagerImpl::FromWebState(_webState),
-      infobars::InfoBarDelegate::SHOW_PASSKIT_ERROR_INFOBAR_DELEGATE_IOS,
-      /*vector_icon=*/nullptr,
-      l10n_util::GetStringUTF16(IDS_IOS_GENERIC_PASSKIT_ERROR));
+  InfoBarManagerImpl::FromWebState(_webState)->AddInfoBar(
+      CreateConfirmInfoBar(std::make_unique<SimpleAlertInfoBarDelegate>(
+          infobars::InfoBarDelegate::SHOW_PASSKIT_ERROR_INFOBAR_DELEGATE_IOS,
+          /*vector_icon=*/nullptr,
+          l10n_util::GetStringUTF16(IDS_IOS_GENERIC_PASSKIT_ERROR),
+          /*auto_expire=*/true,
+          /*should_animate=*/true)));
 
   // Infobar does not provide callback on dismissal.
   [self stop];
diff --git a/ios/chrome/browser/ui/first_run/BUILD.gn b/ios/chrome/browser/ui/first_run/BUILD.gn
index 9bcd76b..bf065f4 100644
--- a/ios/chrome/browser/ui/first_run/BUILD.gn
+++ b/ios/chrome/browser/ui/first_run/BUILD.gn
@@ -29,8 +29,6 @@
     "first_run_screen_provider.h",
     "first_run_screen_provider.mm",
     "first_run_screen_type.h",
-    "first_run_util.h",
-    "first_run_util.mm",
     "location_permissions_commands.h",
     "location_permissions_coordinator.h",
     "location_permissions_coordinator.mm",
@@ -38,14 +36,6 @@
     "location_permissions_view_controller.mm",
     "orientation_limiting_navigation_controller.h",
     "orientation_limiting_navigation_controller.mm",
-    "signin_screen_consumer.h",
-    "signin_screen_coordinator.h",
-    "signin_screen_coordinator.mm",
-    "signin_screen_mediator.h",
-    "signin_screen_mediator.mm",
-    "signin_screen_mediator_delegate.h",
-    "signin_screen_view_controller.h",
-    "signin_screen_view_controller.mm",
     "static_file_view_controller.h",
     "static_file_view_controller.mm",
     "welcome_screen_coordinator.h",
@@ -62,6 +52,7 @@
     ":field_trial",
     ":first_run_ui",
     ":screen_delegate",
+    ":utils",
     "resources:checkbox",
     "resources:checkbox_checked",
     "resources:first_run_location_permissions",
@@ -91,6 +82,7 @@
     "//ios/chrome/browser/ui/elements",
     "//ios/chrome/browser/ui/elements:elements_internal",
     "//ios/chrome/browser/ui/fancy_ui",
+    "//ios/chrome/browser/ui/first_run/signin",
     "//ios/chrome/browser/ui/first_run/sync",
     "//ios/chrome/browser/ui/icons",
     "//ios/chrome/browser/ui/material_components",
@@ -115,6 +107,29 @@
   frameworks = [ "UIKit.framework" ]
 }
 
+source_set("utils") {
+  configs += [ "//build/config/compiler:enable_arc" ]
+  sources = [
+    "first_run_util.h",
+    "first_run_util.mm",
+  ]
+  deps = [
+    "//base",
+    "//components/signin/public/identity_manager",
+    "//ios/chrome/app:tests_hook",
+    "//ios/chrome/browser:utils",
+    "//ios/chrome/browser/browser_state",
+    "//ios/chrome/browser/crash_report",
+    "//ios/chrome/browser/first_run",
+    "//ios/chrome/browser/signin",
+    "//ios/chrome/browser/ui:feature_flags",
+    "//ios/chrome/browser/ui/settings/sync/utils",
+    "//ios/chrome/browser/ui/util",
+    "//ios/web/public/thread",
+    "//ui/gfx",
+  ]
+}
+
 source_set("constants") {
   configs += [ "//build/config/compiler:enable_arc" ]
   sources = [
@@ -145,10 +160,7 @@
 source_set("unit_tests") {
   configs += [ "//build/config/compiler:enable_arc" ]
   testonly = true
-  sources = [
-    "signin_screen_mediator_unittest.mm",
-    "welcome_to_chrome_view_controller_unittest.mm",
-  ]
+  sources = [ "welcome_to_chrome_view_controller_unittest.mm" ]
   deps = [
     ":first_run",
     "//base",
diff --git a/ios/chrome/browser/ui/first_run/first_run_coordinator.mm b/ios/chrome/browser/ui/first_run/first_run_coordinator.mm
index cea0225b..fe061fb 100644
--- a/ios/chrome/browser/ui/first_run/first_run_coordinator.mm
+++ b/ios/chrome/browser/ui/first_run/first_run_coordinator.mm
@@ -11,7 +11,7 @@
 #import "ios/chrome/browser/ui/first_run/first_run_screen_delegate.h"
 #import "ios/chrome/browser/ui/first_run/first_run_screen_provider.h"
 #import "ios/chrome/browser/ui/first_run/first_run_screen_type.h"
-#import "ios/chrome/browser/ui/first_run/signin_screen_coordinator.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_coordinator.h"
 #import "ios/chrome/browser/ui/first_run/sync/sync_screen_coordinator.h"
 #import "ios/chrome/browser/ui/first_run/welcome_screen_coordinator.h"
 
diff --git a/ios/chrome/browser/ui/first_run/signin/BUILD.gn b/ios/chrome/browser/ui/first_run/signin/BUILD.gn
new file mode 100644
index 0000000..e729fc6
--- /dev/null
+++ b/ios/chrome/browser/ui/first_run/signin/BUILD.gn
@@ -0,0 +1,64 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+source_set("signin") {
+  configs += [ "//build/config/compiler:enable_arc" ]
+  sources = [
+    "signin_screen_coordinator.h",
+    "signin_screen_coordinator.mm",
+    "signin_screen_mediator.h",
+    "signin_screen_mediator.mm",
+    "signin_screen_mediator_delegate.h",
+  ]
+  deps = [
+    ":signin_ui",
+    "//ios/chrome/browser",
+    "//ios/chrome/browser/first_run",
+    "//ios/chrome/browser/main:public",
+    "//ios/chrome/browser/signin",
+    "//ios/chrome/browser/ui/authentication",
+    "//ios/chrome/browser/ui/authentication/signin/add_account_signin",
+    "//ios/chrome/browser/ui/authentication/signin/user_signin/logging",
+    "//ios/chrome/browser/ui/authentication/unified_consent/identity_chooser",
+    "//ios/chrome/browser/ui/commands",
+    "//ios/chrome/browser/ui/first_run:screen_delegate",
+    "//ios/chrome/browser/ui/first_run:utils",
+    "//ios/public/provider/chrome/browser",
+    "//ios/public/provider/chrome/browser/signin",
+  ]
+}
+
+source_set("signin_ui") {
+  configs += [ "//build/config/compiler:enable_arc" ]
+  sources = [
+    "signin_screen_consumer.h",
+    "signin_screen_view_controller.h",
+    "signin_screen_view_controller.mm",
+  ]
+  deps = [
+    "//ios/chrome/browser/ui/authentication",
+    "//ios/chrome/browser/ui/authentication/views",
+    "//ios/chrome/browser/ui/elements:elements_internal",
+    "//ios/chrome/browser/ui/first_run:first_run_ui",
+    "//ios/chrome/common/ui/util",
+  ]
+}
+
+source_set("unit_tests") {
+  configs += [ "//build/config/compiler:enable_arc" ]
+  testonly = true
+  sources = [ "signin_screen_mediator_unittest.mm" ]
+  deps = [
+    ":signin",
+    ":signin_ui",
+    "//base",
+    "//base/test:test_support",
+    "//ios/chrome/browser/main:test_support",
+    "//ios/chrome/browser/ui/authentication",
+    "//ios/public/provider/chrome/browser:test_support",
+    "//ios/public/provider/chrome/browser/signin:fake_chrome_identity",
+    "//ios/public/provider/chrome/browser/signin:test_support",
+    "//third_party/ocmock",
+  ]
+}
diff --git a/ios/chrome/browser/ui/first_run/signin_screen_consumer.h b/ios/chrome/browser/ui/first_run/signin/signin_screen_consumer.h
similarity index 76%
rename from ios/chrome/browser/ui/first_run/signin_screen_consumer.h
rename to ios/chrome/browser/ui/first_run/signin/signin_screen_consumer.h
index a525fb14..63f09043 100644
--- a/ios/chrome/browser/ui/first_run/signin_screen_consumer.h
+++ b/ios/chrome/browser/ui/first_run/signin/signin_screen_consumer.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_FIRST_RUN_SIGNIN_SCREEN_CONSUMER_H_
-#define IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SCREEN_CONSUMER_H_
+#ifndef IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_CONSUMER_H_
+#define IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_CONSUMER_H_
 
 #import <UIKit/UIKit.h>
 
@@ -25,4 +25,4 @@
 
 @end
 
-#endif  // IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SCREEN_CONSUMER_H_
+#endif  // IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_CONSUMER_H_
diff --git a/ios/chrome/browser/ui/first_run/signin_screen_coordinator.h b/ios/chrome/browser/ui/first_run/signin/signin_screen_coordinator.h
similarity index 81%
rename from ios/chrome/browser/ui/first_run/signin_screen_coordinator.h
rename to ios/chrome/browser/ui/first_run/signin/signin_screen_coordinator.h
index e0f8c78..b3770ec4 100644
--- a/ios/chrome/browser/ui/first_run/signin_screen_coordinator.h
+++ b/ios/chrome/browser/ui/first_run/signin/signin_screen_coordinator.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_FIRST_RUN_SIGNIN_SCREEN_COORDINATOR_H_
-#define IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SCREEN_COORDINATOR_H_
+#ifndef IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_COORDINATOR_H_
+#define IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_COORDINATOR_H_
 
 #import "ios/chrome/browser/ui/coordinators/chrome_coordinator.h"
 
@@ -26,4 +26,4 @@
 
 @end
 
-#endif  // IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SCREEN_COORDINATOR_H_
+#endif  // IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_COORDINATOR_H_
diff --git a/ios/chrome/browser/ui/first_run/signin_screen_coordinator.mm b/ios/chrome/browser/ui/first_run/signin/signin_screen_coordinator.mm
similarity index 95%
rename from ios/chrome/browser/ui/first_run/signin_screen_coordinator.mm
rename to ios/chrome/browser/ui/first_run/signin/signin_screen_coordinator.mm
index ba5cde4..0291d23a 100644
--- a/ios/chrome/browser/ui/first_run/signin_screen_coordinator.mm
+++ b/ios/chrome/browser/ui/first_run/signin/signin_screen_coordinator.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/first_run/signin_screen_coordinator.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_coordinator.h"
 
 #include "ios/chrome/browser/first_run/first_run_metrics.h"
 #include "ios/chrome/browser/main/browser.h"
@@ -14,10 +14,10 @@
 #import "ios/chrome/browser/ui/commands/browsing_data_commands.h"
 #import "ios/chrome/browser/ui/commands/command_dispatcher.h"
 #import "ios/chrome/browser/ui/first_run/first_run_util.h"
-#import "ios/chrome/browser/ui/first_run/signin_screen_consumer.h"
-#import "ios/chrome/browser/ui/first_run/signin_screen_mediator.h"
-#import "ios/chrome/browser/ui/first_run/signin_screen_mediator_delegate.h"
-#import "ios/chrome/browser/ui/first_run/signin_screen_view_controller.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_consumer.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_mediator.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_mediator_delegate.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_view_controller.h"
 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
 #include "ios/public/provider/chrome/browser/signin/chrome_identity_service.h"
 
diff --git a/ios/chrome/browser/ui/first_run/signin_screen_mediator.h b/ios/chrome/browser/ui/first_run/signin/signin_screen_mediator.h
similarity index 81%
rename from ios/chrome/browser/ui/first_run/signin_screen_mediator.h
rename to ios/chrome/browser/ui/first_run/signin/signin_screen_mediator.h
index b19d878..5c60e8f 100644
--- a/ios/chrome/browser/ui/first_run/signin_screen_mediator.h
+++ b/ios/chrome/browser/ui/first_run/signin/signin_screen_mediator.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_FIRST_RUN_SIGNIN_SCREEN_MEDIATOR_H_
-#define IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SCREEN_MEDIATOR_H_
+#ifndef IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_MEDIATOR_H_
+#define IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_MEDIATOR_H_
 
 #import <Foundation/Foundation.h>
 
@@ -35,4 +35,4 @@
 
 @end
 
-#endif  // IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SCREEN_MEDIATOR_H_
+#endif  // IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_MEDIATOR_H_
diff --git a/ios/chrome/browser/ui/first_run/signin_screen_mediator.mm b/ios/chrome/browser/ui/first_run/signin/signin_screen_mediator.mm
similarity index 95%
rename from ios/chrome/browser/ui/first_run/signin_screen_mediator.mm
rename to ios/chrome/browser/ui/first_run/signin/signin_screen_mediator.mm
index 4c339fe..65f98d2 100644
--- a/ios/chrome/browser/ui/first_run/signin_screen_mediator.mm
+++ b/ios/chrome/browser/ui/first_run/signin/signin_screen_mediator.mm
@@ -2,15 +2,15 @@
 // 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/first_run/signin_screen_mediator.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_mediator.h"
 
 #include "ios/chrome/browser/chrome_browser_provider_observer_bridge.h"
 #include "ios/chrome/browser/signin/chrome_identity_service_observer_bridge.h"
 #import "ios/chrome/browser/ui/authentication/authentication_flow.h"
 #import "ios/chrome/browser/ui/authentication/signin/user_signin/logging/first_run_signin_logger.h"
 #import "ios/chrome/browser/ui/authentication/signin/user_signin/logging/user_signin_logger.h"
-#import "ios/chrome/browser/ui/first_run/signin_screen_consumer.h"
-#import "ios/chrome/browser/ui/first_run/signin_screen_mediator_delegate.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_consumer.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_mediator_delegate.h"
 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
 #import "ios/public/provider/chrome/browser/signin/chrome_identity.h"
 #include "ios/public/provider/chrome/browser/signin/chrome_identity_service.h"
diff --git a/ios/chrome/browser/ui/first_run/signin_screen_mediator_delegate.h b/ios/chrome/browser/ui/first_run/signin/signin_screen_mediator_delegate.h
similarity index 69%
rename from ios/chrome/browser/ui/first_run/signin_screen_mediator_delegate.h
rename to ios/chrome/browser/ui/first_run/signin/signin_screen_mediator_delegate.h
index 475ee26..4fe0744f 100644
--- a/ios/chrome/browser/ui/first_run/signin_screen_mediator_delegate.h
+++ b/ios/chrome/browser/ui/first_run/signin/signin_screen_mediator_delegate.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_FIRST_RUN_SIGNIN_SCREEN_MEDIATOR_DELEGATE_H_
-#define IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SCREEN_MEDIATOR_DELEGATE_H_
+#ifndef IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_MEDIATOR_DELEGATE_H_
+#define IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_MEDIATOR_DELEGATE_H_
 
 #import "ios/chrome/browser/ui/authentication/signin/signin_constants.h"
 
@@ -18,4 +18,4 @@
 
 @end
 
-#endif  // IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SCREEN_MEDIATOR_DELEGATE_H_
+#endif  // IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_MEDIATOR_DELEGATE_H_
diff --git a/ios/chrome/browser/ui/first_run/signin_screen_mediator_unittest.mm b/ios/chrome/browser/ui/first_run/signin/signin_screen_mediator_unittest.mm
similarity index 97%
rename from ios/chrome/browser/ui/first_run/signin_screen_mediator_unittest.mm
rename to ios/chrome/browser/ui/first_run/signin/signin_screen_mediator_unittest.mm
index b7c4689b..dba67c0 100644
--- a/ios/chrome/browser/ui/first_run/signin_screen_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/first_run/signin/signin_screen_mediator_unittest.mm
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#import "ios/chrome/browser/ui/first_run/signin_screen_mediator.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_mediator.h"
 
 #import "base/test/ios/wait_util.h"
 #import "base/test/task_environment.h"
 #import "ios/chrome/browser/main/test_browser.h"
 #import "ios/chrome/browser/ui/authentication/authentication_flow.h"
-#import "ios/chrome/browser/ui/first_run/signin_screen_consumer.h"
-#import "ios/chrome/browser/ui/first_run/signin_screen_mediator_delegate.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_consumer.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_mediator_delegate.h"
 #import "ios/public/provider/chrome/browser/signin/fake_chrome_identity.h"
 #import "ios/public/provider/chrome/browser/signin/fake_chrome_identity_service.h"
 #include "ios/public/provider/chrome/browser/test_chrome_browser_provider.h"
diff --git a/ios/chrome/browser/ui/first_run/signin_screen_view_controller.h b/ios/chrome/browser/ui/first_run/signin/signin_screen_view_controller.h
similarity index 73%
rename from ios/chrome/browser/ui/first_run/signin_screen_view_controller.h
rename to ios/chrome/browser/ui/first_run/signin/signin_screen_view_controller.h
index 4c1bc98b..8cc4511 100644
--- a/ios/chrome/browser/ui/first_run/signin_screen_view_controller.h
+++ b/ios/chrome/browser/ui/first_run/signin/signin_screen_view_controller.h
@@ -2,14 +2,14 @@
 // 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_FIRST_RUN_SIGNIN_SCREEN_VIEW_CONTROLLER_H_
-#define IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SCREEN_VIEW_CONTROLLER_H_
+#ifndef IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_VIEW_CONTROLLER_H_
+#define IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_VIEW_CONTROLLER_H_
 
 #import <UIKit/UIKit.h>
 
 #import "ios/chrome/browser/ui/authentication/authentication_flow.h"
 #import "ios/chrome/browser/ui/first_run/first_run_screen_view_controller.h"
-#import "ios/chrome/browser/ui/first_run/signin_screen_consumer.h"
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_consumer.h"
 
 // Delegate of sign-in screen view controller.
 @protocol
@@ -29,4 +29,4 @@
 
 @end
 
-#endif  // IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SCREEN_VIEW_CONTROLLER_H_
+#endif  // IOS_CHROME_BROWSER_UI_FIRST_RUN_SIGNIN_SIGNIN_SCREEN_VIEW_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/first_run/signin_screen_view_controller.mm b/ios/chrome/browser/ui/first_run/signin/signin_screen_view_controller.mm
similarity index 97%
rename from ios/chrome/browser/ui/first_run/signin_screen_view_controller.mm
rename to ios/chrome/browser/ui/first_run/signin/signin_screen_view_controller.mm
index f4d741c..a288905b 100644
--- a/ios/chrome/browser/ui/first_run/signin_screen_view_controller.mm
+++ b/ios/chrome/browser/ui/first_run/signin/signin_screen_view_controller.mm
@@ -2,8 +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/first_run/signin_screen_view_controller.h"
-
+#import "ios/chrome/browser/ui/first_run/signin/signin_screen_view_controller.h"
 
 #import "ios/chrome/browser/ui/authentication/views/identity_button_control.h"
 #import "ios/chrome/browser/ui/elements/activity_overlay_view.h"
diff --git a/ios/chrome/browser/ui/main/BUILD.gn b/ios/chrome/browser/ui/main/BUILD.gn
index bf7e629..8bd91595 100644
--- a/ios/chrome/browser/ui/main/BUILD.gn
+++ b/ios/chrome/browser/ui/main/BUILD.gn
@@ -147,6 +147,7 @@
     "//ios/chrome/browser/ui/default_promo:utils",
     "//ios/chrome/browser/ui/first_run",
     "//ios/chrome/browser/ui/first_run:field_trial",
+    "//ios/chrome/browser/ui/first_run:utils",
     "//ios/chrome/browser/ui/history",
     "//ios/chrome/browser/ui/incognito_reauth:incognito_reauth_scene_agent",
     "//ios/chrome/browser/ui/settings:settings_root",
diff --git a/ios/chrome/browser/ui/scanner/BUILD.gn b/ios/chrome/browser/ui/scanner/BUILD.gn
index cbafd6d..c054950 100644
--- a/ios/chrome/browser/ui/scanner/BUILD.gn
+++ b/ios/chrome/browser/ui/scanner/BUILD.gn
@@ -3,10 +3,7 @@
 # found in the LICENSE file.
 
 source_set("scanner") {
-  configs += [
-    "//build/config/compiler:enable_arc",
-    "//build/config/ios:disable_implicit_retain_self_warning",
-  ]
+  configs += [ "//build/config/compiler:enable_arc" ]
   sources = [
     "camera_controller.h",
     "camera_controller.mm",
diff --git a/ios/chrome/browser/ui/scanner/camera_controller.mm b/ios/chrome/browser/ui/scanner/camera_controller.mm
index 201492b2..5fd5db6 100644
--- a/ios/chrome/browser/ui/scanner/camera_controller.mm
+++ b/ios/chrome/browser/ui/scanner/camera_controller.mm
@@ -111,7 +111,7 @@
     }
     strongSelf.viewportRect = viewportRect;
     if (strongSelf.metadataOutput) {
-      [strongSelf.metadataOutput setRectOfInterest:_viewportRect];
+      [strongSelf.metadataOutput setRectOfInterest:strongSelf->_viewportRect];
     }
   });
 }
diff --git a/ios/chrome/browser/ui/scanner/scanner_view_controller.mm b/ios/chrome/browser/ui/scanner/scanner_view_controller.mm
index bb0db56..95d0c97c65 100644
--- a/ios/chrome/browser/ui/scanner/scanner_view_controller.mm
+++ b/ios/chrome/browser/ui/scanner/scanner_view_controller.mm
@@ -227,14 +227,18 @@
               l10n_util::GetNSString(
                   IDS_IOS_SCANNER_SCANNED_ACCESSIBILITY_ANNOUNCEMENT)]) {
     DCHECK(_result);
+    __weak ScannerViewController* weakSelf = self;
     [self dismissForReason:scannerViewController::SCAN_COMPLETE
             withCompletion:^{
-              [self.queryLoader loadQuery:_result
-                              immediately:self.loadResultImmediately];
+              [weakSelf dismissForReasonCompletion];
             }];
   }
 }
 
+- (void)dismissForReasonCompletion {
+  [self.queryLoader loadQuery:_result immediately:self.loadResultImmediately];
+}
+
 #pragma mark - CameraControllerDelegate
 
 - (void)captureSessionIsConnected {
diff --git a/ios/chrome/test/BUILD.gn b/ios/chrome/test/BUILD.gn
index fae68b6a..0315c05 100644
--- a/ios/chrome/test/BUILD.gn
+++ b/ios/chrome/test/BUILD.gn
@@ -260,6 +260,7 @@
     "//ios/chrome/browser/ui/elements:unit_tests",
     "//ios/chrome/browser/ui/fancy_ui:unit_tests",
     "//ios/chrome/browser/ui/first_run:unit_tests",
+    "//ios/chrome/browser/ui/first_run/signin:unit_tests",
     "//ios/chrome/browser/ui/fullscreen:unit_tests",
     "//ios/chrome/browser/ui/gestures:unit_tests",
     "//ios/chrome/browser/ui/history:unit_tests",
diff --git a/ios/chrome/test/wpt/cwt_request_handler.h b/ios/chrome/test/wpt/cwt_request_handler.h
index 51ad0f6..ed874a2 100644
--- a/ios/chrome/test/wpt/cwt_request_handler.h
+++ b/ios/chrome/test/wpt/cwt_request_handler.h
@@ -108,6 +108,9 @@
   // image.
   base::Value GetSnapshot();
 
+  // Returns the Chrome version and revision number for the current build.
+  base::Value GetVersionInfo();
+
   // Set the target tab's position and size. This is currently a no-op since
   // tabs cannot be arbitrarily sized or positioned on iOS. It may make sense
   // to implement this in the future on iPad-only, once multiwindow support on
diff --git a/ios/chrome/test/wpt/cwt_request_handler.mm b/ios/chrome/test/wpt/cwt_request_handler.mm
index 0cf526e6..401c699 100644
--- a/ios/chrome/test/wpt/cwt_request_handler.mm
+++ b/ios/chrome/test/wpt/cwt_request_handler.mm
@@ -56,6 +56,10 @@
 // the given file is copied and served from a local EmbeddedTestServer.
 const char kChromeCrashTestCommand[] = "chrome_crashtest";
 
+// This returns the Chrome version (e.g., "92.0.4483.0") along with the
+// revision number (e.g, "872495") used for the current build.
+const char kChromeVersionInfoCommand[] = "chrome_versionInfo";
+
 // WebDriver error codes.
 const char kWebDriverInvalidArgumentError[] = "invalid argument";
 const char kWebDriverInvalidSessionError[] = "invalid session id";
@@ -118,6 +122,8 @@
 // Non-standard value field names, used only when testing Chrome.
 // Stderr output from the app.
 const char kChromeStderrValueField[] = "chrome_stderr";
+// The revision number used for the current build.
+const char kChromeRevisionNumberField[] = "chrome_revisionNumber";
 
 // Field names for the "capabilities" struct that's included in the response
 // when creating a session.
@@ -188,6 +194,9 @@
     if (command == kWebDriverScreenshotCommand)
       return GetSnapshot();
 
+    if (command == kChromeVersionInfoCommand)
+      return GetVersionInfo();
+
     return base::nullopt;
   }
 
@@ -546,3 +555,23 @@
 base::Value CWTRequestHandler::SetWindowRect(const base::Value& rect) {
   return base::Value();
 }
+
+base::Value CWTRequestHandler::GetVersionInfo() {
+  base::Value result(base::Value::Type::DICTIONARY);
+  result.SetStringKey(kCapabilitiesBrowserVersionField,
+                      version_info::GetVersionNumber());
+
+  // The full revision starts with a git hash and ends with the revision
+  // number in the following format: @{#123456}
+  std::string full_revision = version_info::GetLastChange();
+  size_t start_position = full_revision.rfind("#") + 1;
+
+  if (start_position == std::string::npos) {
+    result.SetStringKey(kChromeRevisionNumberField, "0");
+  } else {
+    size_t length = full_revision.size() - start_position - 1;
+    result.SetStringKey(kChromeRevisionNumberField,
+                        full_revision.substr(start_position, length));
+  }
+  return result;
+}
diff --git a/ios/chrome/test/wpt/tools/run_fuzz_test.py b/ios/chrome/test/wpt/tools/run_fuzz_test.py
index 241c2b7..c576807 100755
--- a/ios/chrome/test/wpt/tools/run_fuzz_test.py
+++ b/ios/chrome/test/wpt/tools/run_fuzz_test.py
@@ -6,6 +6,8 @@
 import argparse
 import json
 import os
+import psutil
+import re
 import requests
 import subprocess
 import time
@@ -18,31 +20,24 @@
 def GetDefaultBuildDir():
   return os.path.join(GetChromiumSrcDir(), 'out', 'Release-iphonesimulator')
 
-def EnsureServerStarted(port, build_dir):
-  # Check if the server is already running. If not, launch the server and wait
-  # for it to be ready.
-  server_url = 'http://localhost:' + port
-  try:
-    requests.post(server_url + '/session', json = {})
-    response = requests.get(server_url + '/session/handles')
-    assert response.status_code == 200
-    # Use a page load timeout of 10 seconds.
-    response = requests.post(
-        server_url + '/session/timeouts', json = {'pageLoad': 10000})
-    return response.status_code == 200
-  except requests.exceptions.ConnectionError:
-    cwt_chromedriver_path = os.path.join(os.path.dirname(__file__),
-                                         'run_cwt_chromedriver.py')
-    subprocess.Popen(cwt_chromedriver_path + ' --asan-build --build-dir ' +
-                     build_dir + ' --port ' + port + ' >/dev/null 2>&1 &',
-                     shell=True)
-    time.sleep(15)
+def StartServer(port, build_dir):
+  cwt_chromedriver_path = os.path.join(os.path.dirname(__file__),
+                                       'run_cwt_chromedriver.py')
+  subprocess.Popen(cwt_chromedriver_path + ' --asan-build --build-dir ' +
+                   build_dir + ' --port ' + port + ' >/dev/null 2>&1 &',
+                   shell=True)
+  time.sleep(15)
 
   # Wait up to 150 seconds for the server to be ready.
+  server_url = 'http://localhost:' + port
   for attempt in range (0, 150):
     try:
       requests.post(server_url + '/session', json= {})
       response = requests.get(server_url + '/session/handles')
+      assert response.status_code == 200
+      # Use a page load timeout of 10 seconds.
+      response = requests.post(
+        server_url + '/session/timeouts', json = {'pageLoad': 10000})
       return response.status_code == 200
     except:
       if attempt == 149:
@@ -50,7 +45,66 @@
       else:
         time.sleep(1)
 
-  return False
+def IsCurrentVersion(version, revision, build_dir):
+  plist_path = os.path.join(build_dir, 'ios_cwt_chromedriver_tests.app',
+                            'Info.plist')
+  version_command = 'defaults read ' + plist_path + ' CFBundleVersion'
+  completed_process = subprocess.run(version_command, shell=True,
+                                     capture_output=True)
+  current_version = completed_process.stdout.decode('utf-8').strip()
+
+  if version != current_version:
+    return False
+
+  revision_command = 'defaults read ' + plist_path + ' SCMRevision'
+  completed_process = subprocess.run(revision_command, shell=True,
+                                     capture_output=True)
+  full_revision = completed_process.stdout.decode('utf-8').strip()
+  current_revision = re.search('.*{#(.+?)}', full_revision).group(1)
+
+  return current_revision == revision
+
+def KillServer():
+  # Gather all running run_cwt_chromedriver.py and xcodebuild instances. There
+  # should only ever be at most one process of each type, but handle the case
+  # of multiple such processes for extra robustness.
+  cwt_chromedriver_procs = []
+  xcodebuild_procs = []
+  for proc in psutil.process_iter(attrs=['pid', 'cmdline', 'name'],
+                                  ad_value=[]):
+    cmd_line = proc.info['cmdline']
+    if proc.info['name'] == 'xcodebuild':
+      xcodebuild_procs.append(proc)
+    elif len(cmd_line) > 1 and "run_cwt_chromedriver.py" in cmd_line[1]:
+      cwt_chromedriver_procs.append(proc)
+
+  # It's important to kill instances of run_cwt_chromedriver.py before killing
+  # xcodebuild, since if xcodebuild is killed first, run_cwt_chromedriver.py
+  # will detect this and launch another instance.
+  for proc in cwt_chromedriver_procs:
+    proc.kill()
+
+  for proc in xcodebuild_procs:
+    proc.kill()
+
+def EnsureServerStarted(port, build_dir):
+  # Check if the server is already running. If not, launch the server and wait
+  # for it to be ready. If the server is running but its version doesn't match
+  # the current build, kill the running server and relaunch.
+  server_url = 'http://localhost:' + port
+  try:
+    requests.post(server_url + '/session', json = {})
+    response = requests.get(server_url + '/session/chrome_versionInfo')
+    assert response.status_code == 200
+    chrome_version = response.json()['value']['browserVersion']
+    chrome_revision = response.json()['value']['chrome_revisionNumber']
+    if IsCurrentVersion(chrome_version, chrome_revision, build_dir):
+      return True
+    else:
+      KillServer()
+      return StartServer(port, build_dir)
+  except requests.exceptions.ConnectionError:
+    return StartServer(port, build_dir)
 
 parser=argparse.ArgumentParser(
     formatter_class=argparse.ArgumentDefaultsHelpFormatter)
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
index e7b8019..498d338 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-3056951d04477c38eb3a5d62e80c97cb18c5a6fd
\ No newline at end of file
+3af764b5cafbad302990f6161286ce59415de9bf
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
index dd1628d..cd81241 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-e0caf0b2d04f2d529cdedf3568e992e9bfee142e
\ No newline at end of file
+dc921cac5f38aec2178e38f85766a64d7a2cd533
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
index 7021a2f..2c476f6 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-f051a597a4313e06a380f691bb1fb739d2f0d727
\ No newline at end of file
+5efeaaf3854bb85b70a973815de1d0110bb5b453
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
index af445ed..d1b1a6bc 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-79214851b0759eede744e88b3fec1cac587b3285
\ No newline at end of file
+25c7512eafc3b56559e805ab83e03616775ada8c
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
index 04b005a..0f2bc06 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-5cef7e714f2e0ca6c57e463c87cc44bdc92ea6e6
\ No newline at end of file
+de284b7be312a5c654af991d7d44d50998c38302
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
index 97e9222..26be152 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-40c337e183663b2d339250be20f4fd1da0cbc62e
\ No newline at end of file
+713f5d59a9e4ec40c49bfd93c8703c959e6e4c64
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
index 34cc0a8..76e29a0 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-6e4b71c4aae0bf184d6037f1159b28f78ee1c993
\ No newline at end of file
+76e6f691d673373fc5a27fa740c319f0076b6491
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
index c5ce7a8a..b14edad 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-30c31bb0a486fde505619ddc01824ad1444f5456
\ No newline at end of file
+eeda5868e070ecc52ea1c0bc37dbaf94335cb7ef
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
index 5d2d560..de21e149 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-6a3f11191d5b064b6c2b8774263e670def4fb389
\ No newline at end of file
+6f2ca0aabbd83f8ece3e93e2a99c6e4c5c4a094f
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
index 03da8fa..e52f38b 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-d588fa403159ae7b127283d572ca700c65771e1a
\ No newline at end of file
+1d1b24d0f0266f301d07ae5505598b091cfe358d
\ No newline at end of file
diff --git a/ios/web/web_state/ui/crw_web_controller.mm b/ios/web/web_state/ui/crw_web_controller.mm
index 051ede3..438d953 100644
--- a/ios/web/web_state/ui/crw_web_controller.mm
+++ b/ios/web/web_state/ui/crw_web_controller.mm
@@ -947,6 +947,8 @@
   return YES;
 #pragma clang diagnostic pop
 #endif  // BUILDFLAG(WEBKIT_SESSION_RESTORE)
+#else   // BUILDFLAG(CHROMIUM_BRANDING)
+  return NO;
 #endif  // BUILDFLAG(CHROMIUM_BRANDING)
 }
 
diff --git a/media/gpu/v4l2/v4l2_h264_accelerator.cc b/media/gpu/v4l2/v4l2_h264_accelerator.cc
index 7c97840..2661655 100644
--- a/media/gpu/v4l2/v4l2_h264_accelerator.cc
+++ b/media/gpu/v4l2/v4l2_h264_accelerator.cc
@@ -296,14 +296,6 @@
   SHDR_TO_V4L2DPARM(pic_order_cnt_bit_size);
 #undef SHDR_TO_V4L2DPARM
 
-#define SET_V4L2_DPARM_FLAG_IF(cond, flag) \
-  priv_->v4l2_decode_param.flags |= ((slice_hdr->cond) ? (flag) : 0)
-  SET_V4L2_DPARM_FLAG_IF(idr_pic_flag, V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC);
-  SET_V4L2_DPARM_FLAG_IF(field_pic_flag, V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC);
-  SET_V4L2_DPARM_FLAG_IF(bottom_field_flag,
-                         V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD);
-#undef SET_V4L2_DPARM_FLAG_IF
-
   scoped_refptr<V4L2DecodeSurface> dec_surface =
       H264PictureToV4L2DecodeSurface(pic.get());
 
@@ -327,9 +319,24 @@
   scoped_refptr<V4L2DecodeSurface> dec_surface =
       H264PictureToV4L2DecodeSurface(pic.get());
 
-  if (pic->idr) {
-    priv_->v4l2_decode_param.flags |= 1;
+
+  switch (pic->field) {
+    case H264Picture::FIELD_NONE:
+      priv_->v4l2_decode_param.flags = 0;
+      break;
+    case H264Picture::FIELD_TOP:
+      priv_->v4l2_decode_param.flags = V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC;
+      break;
+    case H264Picture::FIELD_BOTTOM:
+      priv_->v4l2_decode_param.flags =
+          (V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC |
+           V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD);
+      break;
   }
+
+  if (pic->idr)
+    priv_->v4l2_decode_param.flags |= V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC;
+
   priv_->v4l2_decode_param.top_field_order_cnt = pic->top_field_order_cnt;
   priv_->v4l2_decode_param.bottom_field_order_cnt = pic->bottom_field_order_cnt;
 
diff --git a/media/gpu/v4l2/v4l2_video_decoder_backend_stateless.cc b/media/gpu/v4l2/v4l2_video_decoder_backend_stateless.cc
index 81b55ff3..f25d7d2e 100644
--- a/media/gpu/v4l2/v4l2_video_decoder_backend_stateless.cc
+++ b/media/gpu/v4l2/v4l2_video_decoder_backend_stateless.cc
@@ -490,6 +490,7 @@
         DVLOGF(2) << "Flush finished.";
         std::move(flush_cb_).Run(DecodeStatus::OK);
         resume_decode = true;
+        client_->CompleteFlush();
         break;
 
       case OutputRequest::kChangeResolutionFence:
@@ -508,7 +509,6 @@
   }
 
   if (resume_decode) {
-    client_->CompleteFlush();
     task_runner_->PostTask(
         FROM_HERE,
         base::BindOnce(&V4L2StatelessVideoDecoderBackend::DoDecodeWork,
diff --git a/mojo/core/channel.cc b/mojo/core/channel.cc
index ef456cd..24dc374 100644
--- a/mojo/core/channel.cc
+++ b/mojo/core/channel.cc
@@ -21,6 +21,7 @@
 #include "build/build_config.h"
 #include "mojo/core/configuration.h"
 #include "mojo/core/core.h"
+#include "mojo/core/embedder/features.h"
 
 #if defined(OS_MAC)
 #include "base/mac/mach_logging.h"
@@ -33,6 +34,8 @@
 
 namespace {
 
+std::atomic_bool g_use_trivial_messages{false};
+
 static_assert(
     IsAlignedForChannelMessage(sizeof(Channel::Message::LegacyHeader)),
     "Invalid LegacyHeader size.");
@@ -72,6 +75,8 @@
   return Channel::AlignedBuffer(static_cast<char*>(ptr));
 }
 
+struct TrivialMessage;
+
 // A complex message can be large or contain file handles.
 struct ComplexMessage : public Channel::Message {
   ComplexMessage() = default;
@@ -86,13 +91,16 @@
   void SetHandles(std::vector<PlatformHandleInTransit> new_handles) override;
   std::vector<PlatformHandleInTransit> TakeHandles() override;
   size_t NumHandlesForTransit() const override;
-  const void* data() const override;
-  void* mutable_data() const override;
+
+  const void* data() const override { return data_.get(); }
+  void* mutable_data() const override { return data_.get(); }
   size_t capacity() const override;
-  void ExtendPayload(size_t new_payload_size) override;
+
+  bool ExtendPayload(size_t new_payload_size) override;
 
  private:
   friend struct Channel::Message;
+  friend struct TrivialMessage;
 
   // The message data buffer.
   Channel::AlignedBuffer data_;
@@ -112,10 +120,45 @@
   // On OSX, handles are serialised into the extra header section.
   MachPortsExtraHeader* mach_ports_header_ = nullptr;
 #endif
-
   DISALLOW_COPY_AND_ASSIGN(ComplexMessage);
 };
 
+struct TrivialMessage : public Channel::Message {
+  ~TrivialMessage() override = default;
+
+  // TryConstruct should be used to build a TrivialMessage.
+  static Channel::MessagePtr TryConstruct(size_t payload_size,
+                                          MessageType message_type);
+
+  // Message impl:
+  const void* data() const override { return &data_[0]; }
+  void* mutable_data() const override {
+    return const_cast<uint8_t*>(&data_[0]);
+  }
+
+  size_t capacity() const override;
+
+  bool ExtendPayload(size_t new_payload_size) override;
+
+  // The following interface methods are NOT supported on a Trivial message.
+  void SetHandles(std::vector<PlatformHandle> new_handles) override;
+  void SetHandles(std::vector<PlatformHandleInTransit> new_handles) override;
+  std::vector<PlatformHandleInTransit> TakeHandles() override;
+  size_t NumHandlesForTransit() const override;
+
+ private:
+  friend struct Channel::Message;
+  TrivialMessage() = default;
+
+  alignas(sizeof(void*)) uint8_t data_[256 - sizeof(Channel::Message)];
+
+  static constexpr size_t kInternalCapacity = sizeof(data_);
+  DISALLOW_COPY_AND_ASSIGN(TrivialMessage);
+};
+
+static_assert(sizeof(TrivialMessage) == 256,
+              "Expected TrivialMessage to be 256 bytes");
+
 }  // namespace
 
 // static
@@ -149,11 +192,28 @@
                                                     size_t payload_size,
                                                     size_t max_handles,
                                                     MessageType message_type) {
+  if (g_use_trivial_messages &&
+      (capacity + std::max(sizeof(Header), sizeof(LegacyHeader))) <=
+          TrivialMessage::kInternalCapacity &&
+      max_handles == 0) {
+    // The TrivialMessage has a fixed capacity so if the requested capacity
+    // plus a header can fit then we can try to construct a TrivialMessage.
+    auto msg = TrivialMessage::TryConstruct(payload_size, message_type);
+    if (msg) {
+      return msg;
+    }
+  }
+
   return base::WrapUnique<Channel::Message>(
       new ComplexMessage(capacity, payload_size, max_handles, message_type));
 }
 
 // static
+void Channel::set_use_trivial_messages(bool use_trivial_messages) {
+  g_use_trivial_messages = use_trivial_messages;
+}
+
+// static
 Channel::MessagePtr Channel::Message::CreateRawForFuzzing(
     base::span<const unsigned char> data) {
   auto message = std::make_unique<ComplexMessage>();
@@ -290,6 +350,24 @@
   return message;
 }
 
+// static
+void Channel::Message::ExtendPayload(MessagePtr& message,
+                                     size_t new_payload_size) {
+  if (message->ExtendPayload(new_payload_size)) {
+    return;
+  }
+
+  // ComplexMessage will never fail to extend the payload; therefore, if we do
+  // fail it's because the message is a TrivialMessage which has run out of
+  // space. In which case we will upgrade the message type to a ComplexMessage.
+  size_t capacity_without_header = message->capacity();
+  auto m = base::WrapUnique<Channel::Message>(
+      new ComplexMessage(new_payload_size, new_payload_size, 0,
+                         message->legacy_header()->message_type));
+  memcpy(m->mutable_payload(), message->payload(), capacity_without_header);
+  message.swap(m);
+}
+
 const void* Channel::Message::extra_header() const {
   DCHECK(!is_legacy_message());
   return reinterpret_cast<const uint8_t*>(data()) + sizeof(Header);
@@ -390,7 +468,7 @@
   // performance issue when dealing with large messages. Any sanitizer errors
   // complaining about an uninitialized read in the payload area should be
   // treated as an error and fixed.
-  memset(data_.get(), 0, header_size + extra_header_size);
+  memset(mutable_data(), 0, header_size + extra_header_size);
 
   DCHECK(base::IsValueInRangeForNumericType<uint32_t>(size_));
   legacy_header()->num_bytes = static_cast<uint32_t>(size_);
@@ -430,15 +508,7 @@
   return capacity_ - header()->num_header_bytes;
 }
 
-const void* ComplexMessage::data() const {
-  return mutable_data();
-}
-
-void* ComplexMessage::mutable_data() const {
-  return data_.get();
-}
-
-void ComplexMessage::ExtendPayload(size_t new_payload_size) {
+bool ComplexMessage::ExtendPayload(size_t new_payload_size) {
   size_t capacity_without_header = capacity();
   size_t header_size = capacity_ - capacity_without_header;
   if (new_payload_size > capacity_without_header) {
@@ -463,6 +533,8 @@
   size_ = header_size + new_payload_size;
   DCHECK(base::IsValueInRangeForNumericType<uint32_t>(size_));
   legacy_header()->num_bytes = static_cast<uint32_t>(size_);
+
+  return true;
 }
 
 void ComplexMessage::SetHandles(std::vector<PlatformHandle> new_handles) {
@@ -527,6 +599,72 @@
   return handle_vector_.size();
 }
 
+// static
+Channel::MessagePtr TrivialMessage::TryConstruct(size_t payload_size,
+                                                 MessageType message_type) {
+  const bool is_legacy_message = (message_type == MessageType::NORMAL_LEGACY);
+  const size_t header_size =
+      is_legacy_message ? sizeof(LegacyHeader) : sizeof(Header);
+
+  size_t size = header_size + payload_size;
+  if (size > kInternalCapacity) {
+    return nullptr;
+  }
+
+  auto message = base::WrapUnique(new TrivialMessage);
+  memset(message->mutable_data(), 0, sizeof(TrivialMessage::data_));
+
+  DCHECK(base::IsValueInRangeForNumericType<uint32_t>(size));
+  message->size_ = size;
+  message->legacy_header()->num_bytes = static_cast<uint32_t>(size);
+  message->legacy_header()->message_type = message_type;
+
+  if (!is_legacy_message) {
+    DCHECK(base::IsValueInRangeForNumericType<uint16_t>(header_size));
+    message->header()->num_header_bytes = static_cast<uint16_t>(header_size);
+  }
+
+  return base::WrapUnique<Channel::Message>(message.release());
+}
+
+size_t TrivialMessage::capacity() const {
+  if (is_legacy_message())
+    return kInternalCapacity - sizeof(LegacyHeader);
+  return kInternalCapacity - header()->num_header_bytes;
+}
+
+bool TrivialMessage::ExtendPayload(size_t new_payload_size) {
+  size_t capacity_without_header = capacity();
+  size_t header_size = kInternalCapacity - capacity_without_header;
+  size_t required_size = new_payload_size + header_size;
+  if (required_size > kInternalCapacity) {
+    return false;
+  }
+
+  // We can just bump up the internal size as it's less than the capacity.
+  size_ = required_size;
+  DCHECK(base::IsValueInRangeForNumericType<uint32_t>(size_));
+  legacy_header()->num_bytes = static_cast<uint32_t>(size_);
+  return true;
+}
+
+void TrivialMessage::SetHandles(std::vector<PlatformHandle> new_handles) {
+  CHECK(new_handles.empty());
+}
+
+void TrivialMessage::SetHandles(
+    std::vector<PlatformHandleInTransit> new_handles) {
+  CHECK(new_handles.empty());
+}
+
+std::vector<PlatformHandleInTransit> TrivialMessage::TakeHandles() {
+  return std::vector<PlatformHandleInTransit>();
+}
+
+size_t TrivialMessage::NumHandlesForTransit() const {
+  return 0;
+}
+
 // Helper class for managing a Channel's read buffer allocations. This maintains
 // a single contiguous buffer with the layout:
 //
diff --git a/mojo/core/channel.h b/mojo/core/channel.h
index c401542..88761dd 100644
--- a/mojo/core/channel.h
+++ b/mojo/core/channel.h
@@ -172,6 +172,15 @@
                                     size_t max_handles,
                                     size_t payload_size,
                                     MessageType message_type);
+
+    // Extends the portion of the total message capacity which contains
+    // meaningful payload data. Storage capacity which falls outside of this
+    // range is not transmitted when the message is sent.
+    //
+    // If the message's current capacity is not large enough to accommodate the
+    // new payload size, it will be reallocated accordingly.
+    static void ExtendPayload(MessagePtr& message, size_t new_payload_size);
+
     static MessagePtr CreateRawForFuzzing(base::span<const unsigned char> data);
 
     // Constructs a Message from serialized message data, optionally coming from
@@ -182,20 +191,14 @@
         base::ProcessHandle from_process = base::kNullProcessHandle);
 
     virtual const void* data() const = 0;
+    virtual void* mutable_data() const = 0;
+
     size_t data_num_bytes() const { return size_; }
 
     // The current capacity of the message buffer, not counting internal header
     // data.
     virtual size_t capacity() const = 0;
 
-    // Extends the portion of the total message capacity which contains
-    // meaningful payload data. Storage capacity which falls outside of this
-    // range is not transmitted when the message is sent.
-    //
-    // If the message's current capacity is not large enough to accommodate the
-    // new payload size, it will be reallocated accordingly.
-    virtual void ExtendPayload(size_t new_payload_size) = 0;
-
     const void* extra_header() const;
     void* mutable_extra_header();
     size_t extra_header_size() const;
@@ -224,7 +227,7 @@
    protected:
     Message() = default;
 
-    virtual void* mutable_data() const = 0;
+    virtual bool ExtendPayload(size_t new_payload_size) = 0;
 
     // The size of the message. This is the portion of |data_| that should
     // be transmitted if the message is written to a channel. Includes all
@@ -281,6 +284,8 @@
   static void set_posix_use_writev(bool use_writev);
 #endif  // defined(OS_POSIX) && !defined(OS_NACL) && !defined(OS_MAC)
 
+  static void set_use_trivial_messages(bool use_trivial_messages);
+
   // SupportsChannelUpgrade will return true if this channel is capable of being
   // upgraded.
   static bool SupportsChannelUpgrade();
diff --git a/mojo/core/embedder/embedder.cc b/mojo/core/embedder/embedder.cc
index 6ea40b7..6a1ebad 100644
--- a/mojo/core/embedder/embedder.cc
+++ b/mojo/core/embedder/embedder.cc
@@ -51,6 +51,9 @@
                                        use_zero_on_wake);
 #endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #endif  // defined(OS_POSIX) && !defined(OS_NACL) && !defined(OS_MAC)
+
+  Channel::set_use_trivial_messages(
+      base::FeatureList::IsEnabled(kMojoInlineMessagePayloads));
 }
 
 void Init(const Configuration& configuration) {
diff --git a/mojo/core/embedder/features.cc b/mojo/core/embedder/features.cc
index 4869f8e5..5ad25e6 100644
--- a/mojo/core/embedder/features.cc
+++ b/mojo/core/embedder/features.cc
@@ -9,22 +9,21 @@
 
 #if defined(OS_POSIX) && !defined(OS_NACL) && !defined(OS_MAC)
 #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
-COMPONENT_EXPORT(MOJO_CORE_EMBEDDER_FEATURES)
 const base::Feature kMojoLinuxChannelSharedMem{
     "MojoLinuxChannelSharedMem", base::FEATURE_DISABLED_BY_DEFAULT};
-COMPONENT_EXPORT(MOJO_CORE_EMBEDDER_FEATURES)
 const base::FeatureParam<int> kMojoLinuxChannelSharedMemPages{
     &kMojoLinuxChannelSharedMem, "MojoLinuxChannelSharedMemPages", 4};
-COMPONENT_EXPORT(MOJO_CORE_EMBEDDER_FEATURES)
 const base::FeatureParam<bool> kMojoLinuxChannelSharedMemEfdZeroOnWake{
     &kMojoLinuxChannelSharedMem, "MojoLinuxChannelSharedMemEfdZeroOnWake",
     false};
 #endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 
-COMPONENT_EXPORT(MOJO_CORE_EMBEDDER_FEATURES)
 const base::Feature kMojoPosixUseWritev{"MojoPosixUseWritev",
                                         base::FEATURE_DISABLED_BY_DEFAULT};
 #endif  // defined(OS_POSIX) && !defined(OS_NACL) && !defined(OS_MAC)
 
+const base::Feature kMojoInlineMessagePayloads{
+    "MojoInlineMessagePayloads", base::FEATURE_DISABLED_BY_DEFAULT};
+
 }  // namespace core
 }  // namespace mojo
diff --git a/mojo/core/embedder/features.h b/mojo/core/embedder/features.h
index cfea4db..52eb886 100644
--- a/mojo/core/embedder/features.h
+++ b/mojo/core/embedder/features.h
@@ -15,14 +15,24 @@
 
 #if defined(OS_POSIX) && !defined(OS_NACL) && !defined(OS_MAC)
 #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
+COMPONENT_EXPORT(MOJO_CORE_EMBEDDER_FEATURES)
 extern const base::Feature kMojoLinuxChannelSharedMem;
+
+COMPONENT_EXPORT(MOJO_CORE_EMBEDDER_FEATURES)
 extern const base::FeatureParam<int> kMojoLinuxChannelSharedMemPages;
+
+COMPONENT_EXPORT(MOJO_CORE_EMBEDDER_FEATURES)
 extern const base::FeatureParam<bool> kMojoLinuxChannelSharedMemEfdZeroOnWake;
 #endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 
+COMPONENT_EXPORT(MOJO_CORE_EMBEDDER_FEATURES)
 extern const base::Feature kMojoPosixUseWritev;
+
 #endif  // defined(OS_POSIX) && !defined(OS_NACL) && !defined(OS_MAC)
 
+COMPONENT_EXPORT(MOJO_CORE_EMBEDDER_FEATURES)
+extern const base::Feature kMojoInlineMessagePayloads;
+
 }  // namespace core
 }  // namespace mojo
 
diff --git a/mojo/core/user_message_impl.cc b/mojo/core/user_message_impl.cc
index f96c9207..ec0686b 100644
--- a/mojo/core/user_message_impl.cc
+++ b/mojo/core/user_message_impl.cc
@@ -511,8 +511,9 @@
       size_t user_payload_offset =
           static_cast<uint8_t*>(user_payload_) -
           static_cast<const uint8_t*>(channel_message_->payload());
-      channel_message_->ExtendPayload(user_payload_offset + user_payload_size_ +
-                                      additional_payload_size);
+      Channel::Message::ExtendPayload(
+          channel_message_,
+          user_payload_offset + user_payload_size_ + additional_payload_size);
       header_ = static_cast<uint8_t*>(channel_message_->mutable_payload()) +
                 header_offset;
       user_payload_ =
diff --git a/services/viz/public/cpp/compositing/paint_filter_mojom_traits.cc b/services/viz/public/cpp/compositing/paint_filter_mojom_traits.cc
index 42610db..812f8cd 100644
--- a/services/viz/public/cpp/compositing/paint_filter_mojom_traits.cc
+++ b/services/viz/public/cpp/compositing/paint_filter_mojom_traits.cc
@@ -18,11 +18,10 @@
   // No need to populate the SerializeOptions here since the security
   // constraints explicitly disable serializing images using the transfer cache
   // and serialization of PaintRecords.
-  cc::PaintOp::SerializeOptions options(nullptr, nullptr, nullptr, nullptr,
-                                        nullptr, nullptr, false, false, 0);
+  cc::PaintOp::SerializeOptions options;
   cc::PaintOpWriter writer(memory.data(), memory.size(), options,
                            true /* enable_security_constraints */);
-  writer.Write(filter.get());
+  writer.Write(filter.get(), SkM44());
 
   if (writer.size() == 0)
     return base::nullopt;
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json
index 991b2de..2973052 100644
--- a/testing/buildbot/chromium.android.fyi.json
+++ b/testing/buildbot/chromium.android.fyi.json
@@ -4754,11 +4754,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.27"
+            "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.28"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.27",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.28",
         "resultdb": {
           "enable": true
         },
@@ -4768,7 +4768,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M91",
-              "revision": "version:91.0.4472.27"
+              "revision": "version:91.0.4472.28"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -4991,11 +4991,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.27"
+            "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.28"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.27",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.28",
         "resultdb": {
           "enable": true
         },
@@ -5005,7 +5005,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M91",
-              "revision": "version:91.0.4472.27"
+              "revision": "version:91.0.4472.28"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -5235,11 +5235,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_with_chrome_apk_Client Library Skew Tests For 91.0.4472.27"
+            "weblayer_instrumentation_test_versions_with_chrome_apk_Client Library Skew Tests For 91.0.4472.28"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_with_chrome_apk_Client Library Skew Tests For 91.0.4472.27",
+        "name": "weblayer_instrumentation_test_versions_with_chrome_apk_Client Library Skew Tests For 91.0.4472.28",
         "resultdb": {
           "enable": true
         },
@@ -5249,7 +5249,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M91",
-              "revision": "version:91.0.4472.27"
+              "revision": "version:91.0.4472.28"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -5475,11 +5475,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_with_chrome_apk_Implementation Library Skew Tests For 91.0.4472.27"
+            "weblayer_instrumentation_test_versions_with_chrome_apk_Implementation Library Skew Tests For 91.0.4472.28"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_with_chrome_apk_Implementation Library Skew Tests For 91.0.4472.27",
+        "name": "weblayer_instrumentation_test_versions_with_chrome_apk_Implementation Library Skew Tests For 91.0.4472.28",
         "resultdb": {
           "enable": true
         },
@@ -5489,7 +5489,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M91",
-              "revision": "version:91.0.4472.27"
+              "revision": "version:91.0.4472.28"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json
index 073b9a3..75888be 100644
--- a/testing/buildbot/chromium.android.json
+++ b/testing/buildbot/chromium.android.json
@@ -54030,11 +54030,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.27"
+            "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.28"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.27",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.28",
         "resultdb": {
           "enable": true
         },
@@ -54044,7 +54044,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M91",
-              "revision": "version:91.0.4472.27"
+              "revision": "version:91.0.4472.28"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -54267,11 +54267,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.27"
+            "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.28"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.27",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.28",
         "resultdb": {
           "enable": true
         },
@@ -54281,7 +54281,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M91",
-              "revision": "version:91.0.4472.27"
+              "revision": "version:91.0.4472.28"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -54571,11 +54571,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.27"
+            "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.28"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.27",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.28",
         "resultdb": {
           "enable": true
         },
@@ -54585,7 +54585,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M91",
-              "revision": "version:91.0.4472.27"
+              "revision": "version:91.0.4472.28"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -54808,11 +54808,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.27"
+            "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.28"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.27",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.28",
         "resultdb": {
           "enable": true
         },
@@ -54822,7 +54822,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M91",
-              "revision": "version:91.0.4472.27"
+              "revision": "version:91.0.4472.28"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl
index 00cffd7..47a8db3 100644
--- a/testing/buildbot/variants.pyl
+++ b/testing/buildbot/variants.pyl
@@ -331,13 +331,13 @@
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
       '--impl-version=91',
     ],
-    'identifier': 'Implementation Library Skew Tests For 91.0.4472.27',
+    'identifier': 'Implementation Library Skew Tests For 91.0.4472.28',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M91',
-          'revision': 'version:91.0.4472.27',
+          'revision': 'version:91.0.4472.28',
         }
       ],
     },
@@ -403,13 +403,13 @@
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
       '--impl-version=91',
     ],
-    'identifier': 'Implementation Library Skew Tests For 91.0.4472.27',
+    'identifier': 'Implementation Library Skew Tests For 91.0.4472.28',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M91',
-          'revision': 'version:91.0.4472.27',
+          'revision': 'version:91.0.4472.28',
         }
       ],
     },
@@ -475,13 +475,13 @@
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
       '--client-version=91',
     ],
-    'identifier': 'Client Library Skew Tests For 91.0.4472.27',
+    'identifier': 'Client Library Skew Tests For 91.0.4472.28',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M91',
-          'revision': 'version:91.0.4472.27',
+          'revision': 'version:91.0.4472.28',
         }
       ],
     },
diff --git a/testing/scripts/representative_perf_test_data/representatives_frame_times_upper_limit.json b/testing/scripts/representative_perf_test_data/representatives_frame_times_upper_limit.json
index 27d2eba94..2080be4 100644
--- a/testing/scripts/representative_perf_test_data/representatives_frame_times_upper_limit.json
+++ b/testing/scripts/representative_perf_test_data/representatives_frame_times_upper_limit.json
@@ -111,7 +111,9 @@
     "css_value_type_shadow": {
       "ci_095": 10.26,
       "avg": 52.122,
-      "cpu_wall_time_ratio": 0.553
+      "cpu_wall_time_ratio": 0.553,
+      "experimental": true,
+      "_comment": "crbug.com/1139155"
     },
     "animometer_webgl_attrib_arrays": {
       "ci_095": 0.422,
@@ -132,7 +134,9 @@
     "ie_chalkboard": {
       "ci_095": 34.584,
       "avg": 101.084,
-      "cpu_wall_time_ratio": 0.095
+      "cpu_wall_time_ratio": 0.095,
+      "experimental": true,
+      "_comment": "crbug.com/1133599"
     },
     "new_tilings": {
       "ci_095": 0.334,
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 338a566..551f2e3 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -817,47 +817,81 @@
             ],
             "experiments": [
                 {
-                    "name": "AutofillFixFillableFieldTypes_2021-02-12",
+                    "name": "AutofillFixFillableFieldTypes_2021-05-01",
                     "enable_features": [
                         "AutofillFixFillableFieldTypes"
                     ],
                     "disable_features": [
                         "AutofillEnableDependentLocalityParsing",
+                        "AutofillEnableImportWhenMultiplePhoneNumbers",
                         "AutofillEnableLabelPrecedenceForTurkishAddresses",
-                        "AutofillSectionUponRedundantNameInfo"
+                        "AutofillSectionUponRedundantNameInfo",
+                        "AutofillUseAlternativeStateNameMap"
                     ]
                 },
                 {
-                    "name": "EnableAutofillSectionUponRedundantNameInfo_2021-02-12",
+                    "name": "EnableAutofillSectionUponRedundantNameInfo_2021-05-01",
                     "enable_features": [
                         "AutofillSectionUponRedundantNameInfo"
                     ],
                     "disable_features": [
                         "AutofillEnableDependentLocalityParsing",
+                        "AutofillEnableImportWhenMultiplePhoneNumbers",
                         "AutofillEnableLabelPrecedenceForTurkishAddresses",
-                        "AutofillFixFillableFieldTypes"
+                        "AutofillFixFillableFieldTypes",
+                        "AutofillUseAlternativeStateNameMap"
                     ]
                 },
                 {
-                    "name": "AutofillEnableLabelPrecedenceForTurkishAddresses_2021-02-12",
+                    "name": "AutofillEnableLabelPrecedenceForTurkishAddresses_2021-05-01",
                     "enable_features": [
                         "AutofillEnableLabelPrecedenceForTurkishAddresses"
                     ],
                     "disable_features": [
                         "AutofillEnableDependentLocalityParsing",
+                        "AutofillEnableImportWhenMultiplePhoneNumbers",
+                        "AutofillFixFillableFieldTypes",
+                        "AutofillSectionUponRedundantNameInfo",
+                        "AutofillUseAlternativeStateNameMap"
+                    ]
+                },
+                {
+                    "name": "AutofillUseAlternativeStateNameMap_2021-05-01",
+                    "enable_features": [
+                        "AutofillUseAlternativeStateNameMap"
+                    ],
+                    "disable_features": [
+                        "AutofillEnableDependentLocalityParsing",
+                        "AutofillEnableImportWhenMultiplePhoneNumbers",
+                        "AutofillEnableLabelPrecedenceForTurkishAddresses",
                         "AutofillFixFillableFieldTypes",
                         "AutofillSectionUponRedundantNameInfo"
                     ]
                 },
                 {
-                    "name": "AutofillEnableDependentLocalityParsing_2021-02-12",
+                    "name": "AutofillEnableImportWhenMultiplePhoneNumbers_2021-05-01",
+                    "enable_features": [
+                        "AutofillEnableImportWhenMultiplePhoneNumbers"
+                    ],
+                    "disable_features": [
+                        "AutofillEnableDependentLocalityParsing",
+                        "AutofillEnableLabelPrecedenceForTurkishAddresses",
+                        "AutofillFixFillableFieldTypes",
+                        "AutofillSectionUponRedundantNameInfo",
+                        "AutofillUseAlternativeStateNameMap"
+                    ]
+                },
+                {
+                    "name": "AutofillEnableDependentLocalityParsing_2021-05-01",
                     "enable_features": [
                         "AutofillEnableDependentLocalityParsing"
                     ],
                     "disable_features": [
+                        "AutofillEnableImportWhenMultiplePhoneNumbers",
                         "AutofillEnableLabelPrecedenceForTurkishAddresses",
                         "AutofillFixFillableFieldTypes",
-                        "AutofillSectionUponRedundantNameInfo"
+                        "AutofillSectionUponRedundantNameInfo",
+                        "AutofillUseAlternativeStateNameMap"
                     ]
                 }
             ]
@@ -2337,6 +2371,21 @@
             ]
         }
     ],
+    "DeprecateMenagerieAPI": [
+        {
+            "platforms": [
+                "android"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "DeprecateMenagerieAPI"
+                    ]
+                }
+            ]
+        }
+    ],
     "DesktopNtpModules": [
         {
             "platforms": [
@@ -3204,6 +3253,27 @@
             ]
         }
     ],
+    "FillingAcrossAffiliatedWebsites": [
+        {
+            "platforms": [
+                "android",
+                "chromeos",
+                "chromeos_lacros",
+                "ios",
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "FillingAcrossAffiliatedWebsites"
+                    ]
+                }
+            ]
+        }
+    ],
     "FillingPasswordsFromAnyOrigin": [
         {
             "platforms": [
@@ -3588,6 +3658,21 @@
             ]
         }
     ],
+    "IOSPasswordReuseDetection": [
+        {
+            "platforms": [
+                "ios"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "PasswordReuseDetectionEnabled"
+                    ]
+                }
+            ]
+        }
+    ],
     "IOSRequestDesktopByDefault": [
         {
             "platforms": [
@@ -4656,7 +4741,6 @@
                     },
                     "enable_features": [
                         "OmniboxBookmarkPaths",
-                        "OmniboxDisplayTitleForCurrentUrl",
                         "OmniboxEntitySuggestionsReduceLatency",
                         "OmniboxHistoryQuickProviderAblateInMemoryURLIndexCacheFile",
                         "OmniboxMaxURLMatches",
diff --git a/third_party/blink/renderer/bindings/BUILD.gn b/third_party/blink/renderer/bindings/BUILD.gn
index 385c9d0..92e841cb 100644
--- a/third_party/blink/renderer/bindings/BUILD.gn
+++ b/third_party/blink/renderer/bindings/BUILD.gn
@@ -244,6 +244,45 @@
       generated_union_sources_for_testing_in_core
 }
 
+action_with_pydeps("validate_web_idl") {
+  script = "${bindings_scripts_dir}/validate_web_idl.py"
+
+  web_idl_database_outputs = get_target_outputs(":web_idl_database")
+  web_idl_database = web_idl_database_outputs[0]
+  idl_syntax_known_issues = "idl_syntax_known_issues.txt"
+  validate_web_idl_result =
+      "${bindings_output_dir}/validate_web_idl_results.txt"
+
+  inputs = [
+    web_idl_database,
+    idl_syntax_known_issues,
+  ]
+  outputs = [ validate_web_idl_result ]
+
+  args = [
+    "--web_idl_database",
+    rebase_path(web_idl_database, root_build_dir),
+    "--idl_syntax_known_issues",
+    rebase_path(idl_syntax_known_issues, root_build_dir),
+    "--output",
+    rebase_path(validate_web_idl_result, root_build_dir),
+  ]
+
+  deps = [
+    # A lot of C++ compile tasks are waiting for the completion of the
+    # bindings generator because most Blink C++ source files directly or
+    # indirectly depend on the generated bindings files.  Since we'd like
+    # `generate_bindings_all` to use the most CPU power and memory so that
+    # it unblocks Blink C++ compile tasks as soon as possible, we do not like
+    # `validate_web_idl` running in parallel to `generate_bindings_all`.
+    #
+    # This trick (unnecessary dependency to `generate_bindings_all`) makes
+    # `validate_web_idl` wait for the completion of `generate_bindings_all`.
+    ":generate_bindings_all",
+    ":web_idl_database",
+  ]
+}
+
 # Exposes the libraries that affect the resulting blob image of the V8 context
 # snapshot.
 group("v8_context_snapshot_influential_libs") {
diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni
index 9016716f..717643e 100644
--- a/third_party/blink/renderer/bindings/generated_in_modules.gni
+++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -1478,6 +1478,8 @@
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_data_transfer_item.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_database.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_database.h",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_datagram_duplex_stream.cc",
+  "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_datagram_duplex_stream.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_decompression_stream.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_decompression_stream.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_dedicated_worker_global_scope.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni
index c9872f9..8c28c97 100644
--- a/third_party/blink/renderer/bindings/idl_in_modules.gni
+++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -1031,6 +1031,7 @@
           "//third_party/blink/renderer/modules/websockets/websocket_stream.idl",
           "//third_party/blink/renderer/modules/websockets/websocket_stream_options.idl",
           "//third_party/blink/renderer/modules/webtransport/bidirectional_stream.idl",
+          "//third_party/blink/renderer/modules/webtransport/datagram_duplex_stream.idl",
           "//third_party/blink/renderer/modules/webtransport/receive_stream.idl",
           "//third_party/blink/renderer/modules/webtransport/send_stream.idl",
           "//third_party/blink/renderer/modules/webtransport/stream_abort_info.idl",
diff --git a/third_party/blink/renderer/bindings/scripts/validate_web_idl.py b/third_party/blink/renderer/bindings/scripts/validate_web_idl.py
index a5721701..f3b98074 100644
--- a/third_party/blink/renderer/bindings/scripts/validate_web_idl.py
+++ b/third_party/blink/renderer/bindings/scripts/validate_web_idl.py
@@ -21,9 +21,15 @@
     parser.add_option("--idl_syntax_known_issues",
                       type="string",
                       help="filepath of the idl errors already known")
+    parser.add_option("--output",
+                      type="string",
+                      help="filepath of the file for the purpose of timestamp")
     options, args = parser.parse_args()
 
-    required_option_names = ["web_idl_database", "idl_syntax_known_issues"]
+    required_option_names = [
+        "web_idl_database",
+        "idl_syntax_known_issues",
+    ]
     for required_option_name in required_option_names:
         if getattr(options, required_option_name) is None:
             parser.error("--{} is a required option.".format(opt_name))
@@ -96,6 +102,22 @@
     if error_counts[0] - skipped_error_counts[0] > 0:
         sys.exit("Error: Some IDL files violate the Web IDL rules")
 
+    # Create a file for the purpose of timestamp of a successful completion.
+    if options.output:
+        with open(options.output, mode="w") as file_obj:
+            file_obj.write("""\
+# This file was created just for the purpose of timestamp of a successful
+# completion, mainly in order to corporate with a build system.
+
+
+""")
+            file_obj.write("Command line arguments:\n")
+            file_obj.write("  --web_idl_database = {}\n".format(
+                options.web_idl_database))
+            file_obj.write("  --idl_syntax_known_issues = {}\n".format(
+                options.idl_syntax_known_issues))
+            file_obj.write("Results:\n  No new error\n")
+
 
 if __name__ == '__main__':
     main()
diff --git a/third_party/blink/renderer/core/editing/local_caret_rect_test.cc b/third_party/blink/renderer/core/editing/local_caret_rect_test.cc
index b3d7f1c..b5fd1359 100644
--- a/third_party/blink/renderer/core/editing/local_caret_rect_test.cc
+++ b/third_party/blink/renderer/core/editing/local_caret_rect_test.cc
@@ -949,6 +949,8 @@
 
 // See also NGCaretPositionTest.MultiColumnSingleText
 TEST_P(ParameterizedLocalCaretRectTest, MultiColumnSingleText) {
+  RuntimeEnabledFeaturesTestHelpers::ScopedLayoutNGBlockFragmentation
+      block_fragmentation(LayoutNGEnabled());
   LoadAhem();
   InsertStyleElement(
       "div { font: 10px/15px Ahem; column-count: 3; width: 20ch; }");
@@ -959,7 +961,7 @@
   const auto& target = *GetElementById("target");
   const Text& text = *To<Text>(target.firstChild());
   const bool block_fragmentation_enabled =
-      target.GetLayoutObject()->IsLayoutNGObject();
+      RuntimeEnabledFeatures::LayoutNGBlockFragmentationEnabled();
 
   // Note: Legacy layout caret rect is in stitch coordinate space == as if
   // columns are laid out vertically.
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 8eead00..6db5945 100644
--- a/third_party/blink/renderer/core/frame/web_frame_test.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_test.cc
@@ -9688,56 +9688,12 @@
   Reset();
 }
 
-class RemoteFrameHostInterceptor : public mojom::blink::RemoteFrameHost {
+class RemoteFrameHostInterceptor : public FakeRemoteFrameHost {
  public:
-  explicit RemoteFrameHostInterceptor(
-      blink::AssociatedInterfaceProvider* provider) {
-    provider->OverrideBinderForTesting(
-        mojom::blink::RemoteFrameHost::Name_,
-        base::BindRepeating(
-            &RemoteFrameHostInterceptor::BindRemoteFrameHostReceiver,
-            base::Unretained(this)));
-  }
+  RemoteFrameHostInterceptor() = default;
   ~RemoteFrameHostInterceptor() override = default;
 
-  void BindRemoteFrameHostReceiver(mojo::ScopedInterfaceEndpointHandle handle) {
-    receiver_.Bind(
-        mojo::PendingAssociatedReceiver<mojom::blink::RemoteFrameHost>(
-            std::move(handle)));
-  }
-
-  void SetInheritedEffectiveTouchAction(cc::TouchAction touch_action) override {
-  }
-  void UpdateRenderThrottlingStatus(bool is_throttled,
-                                    bool subtree_throttled,
-                                    bool display_locked) override {}
-  void VisibilityChanged(mojom::blink::FrameVisibility visibility) override {}
-  void DidFocusFrame() override {}
-  void CheckCompleted() override {}
-  void CapturePaintPreviewOfCrossProcessSubframe(
-      const gfx::Rect& clip_rect,
-      const base::UnguessableToken& guid) override {}
-  void SetIsInert(bool inert) override {}
-  void DidChangeOpener(
-      const base::Optional<LocalFrameToken>& opener_frame) override {}
-  void AdvanceFocus(blink::mojom::FocusType focus_type,
-                    const LocalFrameToken& source_frame_token) override {}
-  void RouteMessageEvent(
-      const base::Optional<LocalFrameToken>& source_frame_token,
-      const String& source_origin,
-      const String& target_origin,
-      BlinkTransferableMessage message) override {}
-  void PrintCrossProcessSubframe(const gfx::Rect& rect,
-                                 int document_cookie) override {}
-  void Detach() override {}
-  void UpdateViewportIntersection(
-      blink::mojom::blink::ViewportIntersectionStatePtr intersection_state,
-      const base::Optional<FrameVisualProperties>& visual_properties) override {
-  }
-
-  void SynchronizeVisualProperties(
-      const blink::FrameVisualProperties& properties) override {}
-
+  // FakeRemoteFrameHost:
   void OpenURL(mojom::blink::OpenURLParamsPtr params) override {
     intercepted_params_ = std::move(params);
   }
@@ -9747,7 +9703,6 @@
   }
 
  private:
-  mojo::AssociatedReceiver<mojom::blink::RemoteFrameHost> receiver_{this};
   mojom::blink::OpenURLParamsPtr intercepted_params_;
 };
 
@@ -9760,8 +9715,8 @@
   ASSERT_TRUE(MainFrame()->FirstChild());
   ASSERT_EQ(MainFrame()->FirstChild(), remote_frame);
 
-  RemoteFrameHostInterceptor interceptor(
-      client.GetRemoteAssociatedInterfaces());
+  RemoteFrameHostInterceptor interceptor;
+  interceptor.Init(client.GetRemoteAssociatedInterfaces());
   remote_frame->SetReplicatedOrigin(
       WebSecurityOrigin::CreateFromString("http://127.0.0.1"), false);
   MainFrame()->ExecuteScript(
@@ -9789,8 +9744,8 @@
   LocalDOMWindow* main_window =
       To<WebLocalFrameImpl>(MainFrame())->GetFrame()->DomWindow();
 
-  RemoteFrameHostInterceptor interceptor(
-      remote_client.GetRemoteAssociatedInterfaces());
+  RemoteFrameHostInterceptor interceptor;
+  interceptor.Init(remote_client.GetRemoteAssociatedInterfaces());
   String destination = "data:text/html:destination";
   NonThrowableExceptionState exception_state;
   ScriptState* script_state =
diff --git a/third_party/blink/renderer/core/inspector/inspector_audits_agent.cc b/third_party/blink/renderer/core/inspector/inspector_audits_agent.cc
index ab78c4b8..bf237e04 100644
--- a/third_party/blink/renderer/core/inspector/inspector_audits_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_audits_agent.cc
@@ -13,8 +13,6 @@
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/html/html_anchor_element.h"
 #include "third_party/blink/renderer/core/inspector/identifiers_factory.h"
-#include "third_party/blink/renderer/core/inspector/inspector_issue.h"
-#include "third_party/blink/renderer/core/inspector/inspector_issue_conversion.h"
 #include "third_party/blink/renderer/core/inspector/inspector_issue_storage.h"
 #include "third_party/blink/renderer/core/inspector/inspector_network_agent.h"
 #include "third_party/blink/renderer/core/inspector/protocol/Audits.h"
@@ -72,10 +70,9 @@
   return image_to_encode->EncodeImage(mime_type, quality, output);
 }
 
-mojom::blink::InspectorIssueInfoPtr CreateLowTextContrastIssue(
+std::unique_ptr<protocol::Audits::InspectorIssue> CreateLowTextContrastIssue(
     const ContrastInfo& info) {
   Element* element = info.element;
-  auto low_text_contrast_details = mojom::blink::LowTextContrastIssue::New();
 
   StringBuilder sb;
   auto element_id = element->getAttribute("id").LowerASCII();
@@ -89,20 +86,23 @@
     sb.Append(element->classList().item(i));
   }
 
-  low_text_contrast_details->threshold_aa = info.threshold_aa;
-  low_text_contrast_details->threshold_aaa = info.threshold_aaa;
-  low_text_contrast_details->font_size = info.font_size;
-  low_text_contrast_details->font_weight = info.font_weight;
-  low_text_contrast_details->violating_node_id = DOMNodeIds::IdForNode(element);
-  low_text_contrast_details->violating_node_selector = sb.ToString();
-  low_text_contrast_details->contrast_ratio = info.contrast_ratio;
+  auto issue_details = protocol::Audits::InspectorIssueDetails::create();
+  auto low_contrast_details =
+      protocol::Audits::LowTextContrastIssueDetails::create()
+          .setThresholdAA(info.threshold_aa)
+          .setThresholdAAA(info.threshold_aaa)
+          .setFontSize(info.font_size)
+          .setFontWeight(info.font_weight)
+          .setContrastRatio(info.contrast_ratio)
+          .setViolatingNodeSelector(sb.ToString())
+          .setViolatingNodeId(DOMNodeIds::IdForNode(element))
+          .build();
+  issue_details.setLowTextContrastIssueDetails(std::move(low_contrast_details));
 
-  auto details = mojom::blink::InspectorIssueDetails::New();
-  details->low_text_contrast_details = std::move(low_text_contrast_details);
-
-  return mojom::blink::InspectorIssueInfo::New(
-      mojom::blink::InspectorIssueCode::kLowTextContrastIssue,
-      std::move(details));
+  return protocol::Audits::InspectorIssue::create()
+      .setCode(protocol::Audits::InspectorIssueCodeEnum::LowTextContrastIssue)
+      .setDetails(issue_details.build())
+      .build();
 }
 
 }  // namespace
@@ -171,9 +171,9 @@
   unsigned max_elements = 100;
   for (ContrastInfo info :
        contrast.GetElementsWithContrastIssues(report_aaa, max_elements)) {
-    InspectorIssueAdded(
-        InspectorIssue::Create(CreateLowTextContrastIssue(info)));
+    GetFrontend()->issueAdded(CreateLowTextContrastIssue(info));
   }
+  GetFrontend()->flush();
 }
 
 Response InspectorAuditsAgent::checkContrast(protocol::Maybe<bool> report_aaa) {
@@ -222,10 +222,9 @@
     InspectorIssueAdded(inspector_issue_storage_->at(i));
 }
 
-void InspectorAuditsAgent::InspectorIssueAdded(InspectorIssue* issue) {
-  auto inspector_issue = ConvertInspectorIssueToProtocolFormat(issue);
-
-  GetFrontend()->issueAdded(std::move(inspector_issue));
+void InspectorAuditsAgent::InspectorIssueAdded(
+    protocol::Audits::InspectorIssue* issue) {
+  GetFrontend()->issueAdded(issue->Clone());
   GetFrontend()->flush();
 }
 
diff --git a/third_party/blink/renderer/core/inspector/inspector_audits_agent.h b/third_party/blink/renderer/core/inspector/inspector_audits_agent.h
index 53ea3e7..9feab0eb 100644
--- a/third_party/blink/renderer/core/inspector/inspector_audits_agent.h
+++ b/third_party/blink/renderer/core/inspector/inspector_audits_agent.h
@@ -28,7 +28,7 @@
 
   void Trace(Visitor*) const override;
 
-  void InspectorIssueAdded(InspectorIssue*);
+  void InspectorIssueAdded(protocol::Audits::InspectorIssue*);
 
   // Protocol methods.
   protocol::Response enable() override;
diff --git a/third_party/blink/renderer/core/inspector/inspector_issue_storage.cc b/third_party/blink/renderer/core/inspector/inspector_issue_storage.cc
index b11773c..692d8f4 100644
--- a/third_party/blink/renderer/core/inspector/inspector_issue_storage.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_issue_storage.cc
@@ -5,6 +5,7 @@
 #include "third_party/blink/renderer/core/inspector/inspector_issue_storage.h"
 
 #include "third_party/blink/renderer/core/inspector/inspector_issue.h"
+#include "third_party/blink/renderer/core/inspector/inspector_issue_conversion.h"
 #include "third_party/blink/renderer/core/probe/core_probes.h"
 
 namespace blink {
@@ -13,14 +14,20 @@
 
 InspectorIssueStorage::InspectorIssueStorage() = default;
 
-void InspectorIssueStorage::AddInspectorIssue(CoreProbeSink* sink,
-                                              InspectorIssue* issue) {
+void InspectorIssueStorage::AddInspectorIssue(
+    CoreProbeSink* sink,
+    std::unique_ptr<protocol::Audits::InspectorIssue> issue) {
   DCHECK(issues_.size() <= kMaxIssueCount);
-  probe::InspectorIssueAdded(sink, issue);
+  probe::InspectorIssueAdded(sink, issue.get());
   if (issues_.size() == kMaxIssueCount) {
     issues_.pop_front();
   }
-  issues_.push_back(issue);
+  issues_.push_back(std::move(issue));
+}
+
+void InspectorIssueStorage::AddInspectorIssue(CoreProbeSink* sink,
+                                              InspectorIssue* issue) {
+  AddInspectorIssue(sink, ConvertInspectorIssueToProtocolFormat(issue));
 }
 
 void InspectorIssueStorage::AddInspectorIssue(
@@ -40,16 +47,16 @@
   issues_.clear();
 }
 
-wtf_size_t InspectorIssueStorage::size() const {
+size_t InspectorIssueStorage::size() const {
   return issues_.size();
 }
 
-InspectorIssue* InspectorIssueStorage::at(wtf_size_t index) const {
-  return issues_[index].Get();
+protocol::Audits::InspectorIssue* InspectorIssueStorage::at(
+    size_t index) const {
+  return issues_[index].get();
 }
 
 void InspectorIssueStorage::Trace(Visitor* visitor) const {
-  visitor->Trace(issues_);
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/inspector/inspector_issue_storage.h b/third_party/blink/renderer/core/inspector/inspector_issue_storage.h
index 83f06bc0..33a4b74 100644
--- a/third_party/blink/renderer/core/inspector/inspector_issue_storage.h
+++ b/third_party/blink/renderer/core/inspector/inspector_issue_storage.h
@@ -8,6 +8,7 @@
 #include "base/macros.h"
 #include "third_party/blink/public/mojom/devtools/inspector_issue.mojom-blink-forward.h"
 #include "third_party/blink/renderer/core/core_export.h"
+#include "third_party/blink/renderer/core/inspector/protocol/Audits.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/wtf/forward.h"
 
@@ -22,18 +23,22 @@
  public:
   InspectorIssueStorage();
 
+  void AddInspectorIssue(CoreProbeSink*,
+                         std::unique_ptr<protocol::Audits::InspectorIssue>);
   void AddInspectorIssue(CoreProbeSink*, InspectorIssue*);
   void AddInspectorIssue(CoreProbeSink*, mojom::blink::InspectorIssueInfoPtr);
   void AddInspectorIssue(ExecutionContext*,
                          mojom::blink::InspectorIssueInfoPtr);
   void Clear();
-  wtf_size_t size() const;
-  InspectorIssue* at(wtf_size_t index) const;
+  size_t size() const;
+  protocol::Audits::InspectorIssue* at(size_t index) const;
 
   void Trace(Visitor*) const;
 
+  virtual ~InspectorIssueStorage() = default;
+
  private:
-  HeapDeque<Member<InspectorIssue>> issues_;
+  Deque<std::unique_ptr<protocol::Audits::InspectorIssue>> issues_;
 
   DISALLOW_COPY_AND_ASSIGN(InspectorIssueStorage);
 };
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_caret_position_test.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_caret_position_test.cc
index 9ff8706..f667167 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_caret_position_test.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_caret_position_test.cc
@@ -320,6 +320,8 @@
 
 // See also ParameterizedLocalCaretRectTest.MultiColumnSingleText
 TEST_F(NGCaretPositionTest, MultiColumnSingleText) {
+  RuntimeEnabledFeaturesTestHelpers::ScopedLayoutNGBlockFragmentation
+      block_fragmentation(true);
   LoadAhem();
   InsertStyleElement(
       "div { font: 10px/15px Ahem; column-count: 3; width: 20ch; }");
@@ -329,8 +331,6 @@
   //    def jkl
   const auto& target = *GetElementById("target");
   const Text& text = *To<Text>(target.firstChild());
-  if (!target.GetLayoutObject()->IsLayoutNGObject())
-    return;
 
   NGInlineCursor cursor;
   cursor.MoveTo(*text.GetLayoutObject());
diff --git a/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc
index 648d8ac..e243d16 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc
@@ -791,7 +791,8 @@
 
 // Computes size for a replaced element.
 LogicalSize ComputeReplacedSize(const NGBlockNode& node,
-                                const NGConstraintSpace& space) {
+                                const NGConstraintSpace& space,
+                                ReplacedSizeMode mode) {
   DCHECK(node.IsReplaced());
 
   const ComputedStyle& style = node.Style();
@@ -810,38 +811,45 @@
     percentage_resolution_size = space.AvailableSize().block_size;
 
   const Length& block_length = style.LogicalHeight();
-  const MinMaxSizes block_min_max_sizes = {
-      ResolveMinBlockLength(space, style, border_padding,
-                            style.LogicalMinHeight(),
-                            /* available_block_size_adjustment */ LayoutUnit(),
-                            &percentage_resolution_size),
-      ResolveMaxBlockLength(space, style, border_padding,
-                            style.LogicalMaxHeight(),
-                            /* available_block_size_adjustment */ LayoutUnit(),
-                            &percentage_resolution_size)};
+  MinMaxSizes block_min_max_sizes;
   base::Optional<LayoutUnit> replaced_block;
-  if (space.IsFixedBlockSize()) {
-    replaced_block = space.AvailableSize().block_size;
-    DCHECK_GE(*replaced_block, 0);
-  } else if (!block_length.IsAutoOrContentOrIntrinsic() ||
-             space.StretchBlockSizeIfAuto()) {
-    Length block_length_to_resolve = block_length;
-    if (block_length_to_resolve.IsAuto()) {
-      // TODO(dgrogan): This code block (and its corresponding inline version
-      // below) didn't make any tests pass when written so it may be unnecessary
-      // or untested. Check again when launching ReplacedNG.
-      DCHECK(space.StretchBlockSizeIfAuto());
-      DCHECK(space.AvailableSize().block_size != kIndefiniteSize);
-      block_length_to_resolve = Length::FillAvailable();
-    }
+  if (mode == ReplacedSizeMode::kIgnoreBlockLengths) {
+    // Don't resolve any block lengths or constraints.
+    block_min_max_sizes = {LayoutUnit(), LayoutUnit::Max()};
+  } else {
+    block_min_max_sizes = {
+        ResolveMinBlockLength(
+            space, style, border_padding, style.LogicalMinHeight(),
+            /* available_block_size_adjustment */ LayoutUnit(),
+            &percentage_resolution_size),
+        ResolveMaxBlockLength(
+            space, style, border_padding, style.LogicalMaxHeight(),
+            /* available_block_size_adjustment */ LayoutUnit(),
+            &percentage_resolution_size)};
 
-    if (!BlockLengthUnresolvable(space, block_length_to_resolve)) {
-      replaced_block = ResolveMainBlockLength(
-          space, style, border_padding, block_length_to_resolve,
-          /* intrinsic_size */ kIndefiniteSize);
-      DCHECK_NE(*replaced_block, kIndefiniteSize);
-      replaced_block =
-          block_min_max_sizes.ClampSizeToMinAndMax(*replaced_block);
+    if (space.IsFixedBlockSize()) {
+      replaced_block = space.AvailableSize().block_size;
+      DCHECK_GE(*replaced_block, 0);
+    } else if (!block_length.IsAutoOrContentOrIntrinsic() ||
+               space.StretchBlockSizeIfAuto()) {
+      Length block_length_to_resolve = block_length;
+      if (block_length_to_resolve.IsAuto()) {
+        // TODO(dgrogan): This code block (and its corresponding inline version
+        // below) didn't make any tests pass when written so it may be
+        // unnecessary or untested. Check again when launching ReplacedNG.
+        DCHECK(space.StretchBlockSizeIfAuto());
+        DCHECK(space.AvailableSize().block_size != kIndefiniteSize);
+        block_length_to_resolve = Length::FillAvailable();
+      }
+
+      if (!BlockLengthUnresolvable(space, block_length_to_resolve)) {
+        replaced_block = ResolveMainBlockLength(
+            space, style, border_padding, block_length_to_resolve,
+            /* intrinsic_size */ kIndefiniteSize);
+        DCHECK_NE(*replaced_block, kIndefiniteSize);
+        replaced_block =
+            block_min_max_sizes.ClampSizeToMinAndMax(*replaced_block);
+      }
     }
   }
 
@@ -907,32 +915,39 @@
   };
 
   const Length& inline_length = style.LogicalWidth();
-  const MinMaxSizes inline_min_max_sizes = {
-      ResolveMinInlineLength(space, style, border_padding, MinMaxSizesFunc,
-                             style.LogicalMinWidth(),
-                             available_inline_size_adjustment),
-      ResolveMaxInlineLength(space, style, border_padding, MinMaxSizesFunc,
-                             style.LogicalMaxWidth(),
-                             available_inline_size_adjustment)};
+  MinMaxSizes inline_min_max_sizes;
   base::Optional<LayoutUnit> replaced_inline;
-  if (space.IsFixedInlineSize()) {
-    replaced_inline = space.AvailableSize().inline_size;
-    DCHECK_GE(*replaced_inline, 0);
-  } else if (!inline_length.IsAuto() || space.StretchInlineSizeIfAuto()) {
-    Length inline_length_to_resolve = inline_length;
-    if (inline_length_to_resolve.IsAuto()) {
-      DCHECK(space.StretchInlineSizeIfAuto());
-      DCHECK(space.AvailableSize().inline_size != kIndefiniteSize);
-      inline_length_to_resolve = Length::FillAvailable();
-    }
+  if (mode == ReplacedSizeMode::kIgnoreInlineLengths) {
+    // Don't resolve any inline lengths or constraints.
+    inline_min_max_sizes = {LayoutUnit(), LayoutUnit::Max()};
+  } else {
+    inline_min_max_sizes = {
+        ResolveMinInlineLength(space, style, border_padding, MinMaxSizesFunc,
+                               style.LogicalMinWidth(),
+                               available_inline_size_adjustment),
+        ResolveMaxInlineLength(space, style, border_padding, MinMaxSizesFunc,
+                               style.LogicalMaxWidth(),
+                               available_inline_size_adjustment)};
 
-    if (!InlineLengthUnresolvable(space, inline_length_to_resolve)) {
-      replaced_inline = ResolveMainInlineLength(
-          space, style, border_padding, MinMaxSizesFunc,
-          inline_length_to_resolve, available_inline_size_adjustment);
-      DCHECK_NE(*replaced_inline, kIndefiniteSize);
-      replaced_inline =
-          inline_min_max_sizes.ClampSizeToMinAndMax(*replaced_inline);
+    if (space.IsFixedInlineSize()) {
+      replaced_inline = space.AvailableSize().inline_size;
+      DCHECK_GE(*replaced_inline, 0);
+    } else if (!inline_length.IsAuto() || space.StretchInlineSizeIfAuto()) {
+      Length inline_length_to_resolve = inline_length;
+      if (inline_length_to_resolve.IsAuto()) {
+        DCHECK(space.StretchInlineSizeIfAuto());
+        DCHECK(space.AvailableSize().inline_size != kIndefiniteSize);
+        inline_length_to_resolve = Length::FillAvailable();
+      }
+
+      if (!InlineLengthUnresolvable(space, inline_length_to_resolve)) {
+        replaced_inline = ResolveMainInlineLength(
+            space, style, border_padding, MinMaxSizesFunc,
+            inline_length_to_resolve, available_inline_size_adjustment);
+        DCHECK_NE(*replaced_inline, kIndefiniteSize);
+        replaced_inline =
+            inline_min_max_sizes.ClampSizeToMinAndMax(*replaced_inline);
+      }
     }
   }
 
diff --git a/third_party/blink/renderer/core/layout/ng/ng_length_utils.h b/third_party/blink/renderer/core/layout/ng/ng_length_utils.h
index 02d4766..c117a949 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_length_utils.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_length_utils.h
@@ -464,6 +464,14 @@
                           const NGBlockNode& node,
                           const NGBoxStrut& border_scrollbar_padding);
 
+// Flex layout is interested in ignoring lengths in a particular axis. This
+// enum is used to control this behaviour.
+enum class ReplacedSizeMode {
+  kNormal,
+  kIgnoreInlineLengths,  // Used for determining the min/max content size.
+  kIgnoreBlockLengths    // Used for determining the "intrinsic" block-size.
+};
+
 // Computes the size for a replaced element. See:
 // https://www.w3.org/TR/CSS2/visudet.html#inline-replaced-width
 // https://www.w3.org/TR/CSS2/visudet.html#inline-replaced-height
@@ -473,8 +481,10 @@
 // This will handle both intrinsic, and layout calculations depending on the
 // space provided. (E.g. if the available inline-size is indefinite it will
 // return the intrinsic size).
-CORE_EXPORT LogicalSize ComputeReplacedSize(const NGBlockNode&,
-                                            const NGConstraintSpace&);
+CORE_EXPORT LogicalSize
+ComputeReplacedSize(const NGBlockNode&,
+                    const NGConstraintSpace&,
+                    ReplacedSizeMode = ReplacedSizeMode::kNormal);
 
 // Based on available inline size, CSS computed column-width, CSS computed
 // column-count and CSS used column-gap, return CSS used column-count.
diff --git a/third_party/blink/renderer/core/layout/ng/ng_replaced_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_replaced_layout_algorithm.cc
index e2b05da..dc04e66b 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_replaced_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_replaced_layout_algorithm.cc
@@ -11,35 +11,33 @@
 
 NGReplacedLayoutAlgorithm::NGReplacedLayoutAlgorithm(
     const NGLayoutAlgorithmParams& params)
-    : NGLayoutAlgorithm(params),
-      // TODO(dgrogan): Use something from NGLayoutInputNode instead of
-      // accessing LayoutBox directly.
-      natural_size_(PhysicalSize(Node().GetLayoutBox()->IntrinsicSize())
-                        .ConvertToLogical(Style().GetWritingMode())) {}
+    : NGLayoutAlgorithm(params) {}
 
 const NGLayoutResult* NGReplacedLayoutAlgorithm::Layout() {
   DCHECK(!BreakToken() || BreakToken()->IsBreakBefore());
   // Set this as a legacy root so that legacy painters are used.
   container_builder_.SetIsLegacyLayoutRoot();
 
-  // TODO(dgrogan): |natural_size_.block_size| is frequently not the correct
-  // intrinsic block size. Move |ComputeIntrinsicBlockSizeForAspectRatioElement|
-  // from NGFlexLayoutAlgorithm to ng_length_utils and call it here.
-  LayoutUnit intrinsic_block_size = natural_size_.block_size;
-  container_builder_.SetIntrinsicBlockSize(intrinsic_block_size +
-                                           BorderPadding().BlockSum());
+  const LayoutUnit intrinsic_block_size =
+      ComputeReplacedSize(Node(), ConstraintSpace(),
+                          ReplacedSizeMode::kIgnoreBlockLengths)
+          .block_size;
+  container_builder_.SetIntrinsicBlockSize(intrinsic_block_size);
 
   return container_builder_.ToBoxFragment();
 }
 
-// TODO(dgrogan): |natural_size_.inline_size| is frequently not the correct
-// intrinsic inline size. Move NGFlexLayoutAlgorithm's
-// |ComputeIntrinsicInlineSizeForAspectRatioElement| to here.
 MinMaxSizesResult NGReplacedLayoutAlgorithm::ComputeMinMaxSizes(
     const MinMaxSizesFloatInput&) const {
-  MinMaxSizes sizes({natural_size_.inline_size, natural_size_.inline_size});
-  sizes += BorderScrollbarPadding().InlineSum();
-  return {sizes, false};
+  // Most layouts are interested in the min/max content contribution which will
+  // call |ComputeReplacedSize| directly. (Which doesn't invoke the code below).
+  // This is only used by flex, which expects inline-lengths to be ignored for
+  // the min/max content size.
+  MinMaxSizes sizes;
+  sizes = ComputeReplacedSize(Node(), ConstraintSpace(),
+                              ReplacedSizeMode::kIgnoreInlineLengths)
+              .inline_size;
+  return {sizes, /* depends_on_block_constraints */ false};
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/ng_replaced_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/ng_replaced_layout_algorithm.h
index 81f49ef..f6e8abb 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_replaced_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_replaced_layout_algorithm.h
@@ -24,9 +24,6 @@
   MinMaxSizesResult ComputeMinMaxSizes(
       const MinMaxSizesFloatInput&) const override;
   const NGLayoutResult* Layout() override;
-
- private:
-  const LogicalSize natural_size_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/probe/core_probes.h b/third_party/blink/renderer/core/probe/core_probes.h
index 585eb0de..a8d5e72 100644
--- a/third_party/blink/renderer/core/probe/core_probes.h
+++ b/third_party/blink/renderer/core/probe/core_probes.h
@@ -53,6 +53,12 @@
 class CoreProbeSink;
 class ThreadDebugger;
 
+namespace protocol {
+namespace Audits {
+class InspectorIssue;
+}  // namespace Audits
+}  // namespace protocol
+
 namespace probe {
 
 class AsyncTaskId;
diff --git a/third_party/blink/renderer/core/probe/core_probes.pidl b/third_party/blink/renderer/core/probe/core_probes.pidl
index 2b90ec13..902093a9 100644
--- a/third_party/blink/renderer/core/probe/core_probes.pidl
+++ b/third_party/blink/renderer/core/probe/core_probes.pidl
@@ -53,7 +53,6 @@
 
 interface CoreProbes {
 
-  class InspectorIssue;
   class ConsoleMessage;
   class FontCustomPlatformData;
   class FontFace;
@@ -149,7 +148,7 @@
   void AnimationPlayStateChanged(Document*, Animation*, Animation::AnimationPlayState old_play_state, Animation::AnimationPlayState new_play_state);
   void WindowOpen(ExecutionContext*, const KURL& url, const AtomicString& window_name, const WebWindowFeatures& window_features, bool user_gestrue);
   void ConsoleMessageAdded(ExecutionContext*, ConsoleMessage*);
-  void InspectorIssueAdded(CoreProbeSink*, InspectorIssue*);
+  void InspectorIssueAdded(CoreProbeSink*, protocol::Audits::InspectorIssue*);
   void WillRunJavaScriptDialog(LocalFrame* frame);
   void DidRunJavaScriptDialog(LocalFrame* frame);
   void DocumentWriteFetchScript([Keep] Document*);
diff --git a/third_party/blink/renderer/modules/manifest/BUILD.gn b/third_party/blink/renderer/modules/manifest/BUILD.gn
index f5920206..357b88e 100644
--- a/third_party/blink/renderer/modules/manifest/BUILD.gn
+++ b/third_party/blink/renderer/modules/manifest/BUILD.gn
@@ -23,7 +23,6 @@
   ]
 
   deps = [
-    "//build:chromeos_buildflags",
     "//net",
     "//third_party/blink/renderer/modules/navigatorcontentutils:navigatorcontentutils",
     "//url",
diff --git a/third_party/blink/renderer/modules/manifest/manifest_parser.cc b/third_party/blink/renderer/modules/manifest/manifest_parser.cc
index 30bb8293..6351c9e 100644
--- a/third_party/blink/renderer/modules/manifest/manifest_parser.cc
+++ b/third_party/blink/renderer/modules/manifest/manifest_parser.cc
@@ -7,7 +7,6 @@
 #include <string>
 
 #include "base/feature_list.h"
-#include "build/chromeos_buildflags.h"
 #include "net/base/mime_util.h"
 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
 #include "third_party/blink/public/common/features.h"
@@ -1288,18 +1287,10 @@
 
 mojom::blink::CaptureLinks ManifestParser::ParseCaptureLinks(
     const JSONObject* object) {
-#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
-  bool origin_trial_enabled =
-      RuntimeEnabledFeatures::WebAppLinkCapturingEnabled(feature_context_);
-#else
-  bool origin_trial_enabled = false;
-  ALLOW_UNUSED_LOCAL(feature_context_);
-#endif  // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
-
   // Parse if either the command line flag is passed (for about:flags) or the
   // runtime enabled feature is turned on (for origin trial).
   if (!base::FeatureList::IsEnabled(features::kWebAppEnableLinkCapturing) &&
-      !origin_trial_enabled) {
+      !RuntimeEnabledFeatures::WebAppLinkCapturingEnabled(feature_context_)) {
     return mojom::blink::CaptureLinks::kUndefined;
   }
 
diff --git a/third_party/blink/renderer/modules/sanitizer_api/sanitizer.cc b/third_party/blink/renderer/modules/sanitizer_api/sanitizer.cc
index 30db5370..3ca50f9f 100644
--- a/third_party/blink/renderer/modules/sanitizer_api/sanitizer.cc
+++ b/third_party/blink/renderer/modules/sanitizer_api/sanitizer.cc
@@ -235,6 +235,11 @@
       node = DropElement(node, fragment);
       UseCounter::Count(window->GetExecutionContext(),
                         WebFeature::kSanitizerAPIActionTaken);
+    } else if (!node->IsHTMLElement()) {
+      // Presently unspec-ed: If |node| is in a non-HTML namespace: Drop.
+      node = DropElement(node, fragment);
+      UseCounter::Count(window->GetExecutionContext(),
+                        WebFeature::kSanitizerAPIActionTaken);
     } else if (drop_elements_.Contains(name)) {
       // 5. If |name| is in |config|'s [=element drop list=] then 'drop'.
       node = DropElement(node, fragment);
diff --git a/third_party/blink/renderer/modules/sanitizer_api/sanitizer.h b/third_party/blink/renderer/modules/sanitizer_api/sanitizer.h
index b4f729a9..748456a 100644
--- a/third_party/blink/renderer/modules/sanitizer_api/sanitizer.h
+++ b/third_party/blink/renderer/modules/sanitizer_api/sanitizer.h
@@ -76,8 +76,9 @@
 
   // TODO(lyf): make it all-oilpan.
   const HashSet<String> baseline_drop_elements_ = {
-      "APPLET",  "BASE",   "EMBED", "IFRAME",   "NOEMBED", "NOFRAMES",
-      "NOLAYER", "OBJECT", "FRAME", "FRAMESET", "PARAM",   "SCRIPT"};
+      "APPLET",   "BASE",    "EMBED",    "IFRAME", "NOEMBED",
+      "NOFRAMES", "NOLAYER", "NOSCRIPT", "OBJECT", "FRAME",
+      "FRAMESET", "PARAM",   "SCRIPT"};
   const HashSet<String> default_allow_elements_ = {
       "A",          "ABBR",    "ACRONYM", "ADDRESS",  "AREA",     "ARTICLE",
       "ASIDE",      "AUDIO",   "B",       "BDI",      "BDO",      "BIG",
@@ -90,14 +91,14 @@
       "HGROUP",     "HR",      "HTML",    "I",        "IMG",      "INPUT",
       "INS",        "KBD",     "KEYGEN",  "LABEL",    "LEGEND",   "LI",
       "LINK",       "LISTING", "MAP",     "MARK",     "MENU",     "META",
-      "METER",      "NAV",     "NOBR",    "NOSCRIPT", "OL",       "OPTGROUP",
-      "OPTION",     "OUTPUT",  "P",       "PICTURE",  "PRE",      "PROGRESS",
-      "Q",          "RB",      "RP",      "RT",       "RTC",      "RUBY",
-      "S",          "SAMP",    "SECTION", "SELECT",   "SMALL",    "SOURCE",
-      "SPAN",       "STRIKE",  "STRONG",  "SUB",      "SUMMARY",  "SUP",
-      "STYLE",      "TABLE",   "TBODY",   "TD",       "TEXTAREA", "TFOOT",
-      "TH",         "THEAD",   "TIME",    "TR",       "TRACK",    "TT",
-      "U",          "UL",      "VAR",     "VIDEO",    "WBR"};
+      "METER",      "NAV",     "NOBR",    "OL",       "OPTGROUP", "OPTION",
+      "OUTPUT",     "P",       "PICTURE", "PRE",      "PROGRESS", "Q",
+      "RB",         "RP",      "RT",      "RTC",      "RUBY",     "S",
+      "SAMP",       "SECTION", "SELECT",  "SMALL",    "SOURCE",   "SPAN",
+      "STRIKE",     "STRONG",  "SUB",     "SUMMARY",  "SUP",      "STYLE",
+      "TABLE",      "TBODY",   "TD",      "TEXTAREA", "TFOOT",    "TH",
+      "THEAD",      "TIME",    "TR",      "TRACK",    "TT",       "U",
+      "UL",         "VAR",     "VIDEO",   "WBR"};
   const Vector<String> kVectorStar = Vector<String>({"*"});
   const HashMap<String, Vector<String>> baseline_drop_attributes_ = {
       {"onabort", kVectorStar},
@@ -216,7 +217,82 @@
       {"onwebkitfullscreenchange", kVectorStar},
       {"onwebkitfullscreenerror", kVectorStar},
       {"onwebkittransitionend", kVectorStar},
-      {"onwheel", kVectorStar}};
+      {"onwheel", kVectorStar},
+
+      // SVG events: Un-specced. This is temporarily here until the spec has
+      // a full solution to SVG.
+      {"onbegin", kVectorStar},
+      {"onend", kVectorStar},
+      {"onrepeat", kVectorStar},
+      {"onabort", kVectorStar},
+      {"onerror", kVectorStar},
+      {"onresize", kVectorStar},
+      {"onscroll", kVectorStar},
+      {"onunload", kVectorStar},
+      {"oncopy", kVectorStar},
+      {"oncut", kVectorStar},
+      {"onpaste", kVectorStar},
+      {"oncancel", kVectorStar},
+      {"oncanplay", kVectorStar},
+      {"oncanplaythrough", kVectorStar},
+      {"onchange", kVectorStar},
+      {"onclick", kVectorStar},
+      {"onclose", kVectorStar},
+      {"oncuechange", kVectorStar},
+      {"ondblclick", kVectorStar},
+      {"ondrag", kVectorStar},
+      {"ondragend", kVectorStar},
+      {"ondragenter", kVectorStar},
+      {"ondragexit", kVectorStar},
+      {"ondragleave", kVectorStar},
+      {"ondragover", kVectorStar},
+      {"ondragstart", kVectorStar},
+      {"ondrop", kVectorStar},
+      {"ondurationchange", kVectorStar},
+      {"onemptied", kVectorStar},
+      {"onended", kVectorStar},
+      {"onerror", kVectorStar},
+      {"onfocus", kVectorStar},
+      {"oninput", kVectorStar},
+      {"oninvalid", kVectorStar},
+      {"onkeydown", kVectorStar},
+      {"onkeypress", kVectorStar},
+      {"onkeyup", kVectorStar},
+      {"onload", kVectorStar},
+      {"onloadeddata", kVectorStar},
+      {"onloadedmetadata", kVectorStar},
+      {"onloadstart", kVectorStar},
+      {"onmousedown", kVectorStar},
+      {"onmouseenter", kVectorStar},
+      {"onmouseleave", kVectorStar},
+      {"onmousemove", kVectorStar},
+      {"onmouseout", kVectorStar},
+      {"onmouseover", kVectorStar},
+      {"onmouseup", kVectorStar},
+      {"onmousewheel", kVectorStar},
+      {"onpause", kVectorStar},
+      {"onplay", kVectorStar},
+      {"onplaying", kVectorStar},
+      {"onprogress", kVectorStar},
+      {"onratechange", kVectorStar},
+      {"onreset", kVectorStar},
+      {"onresize", kVectorStar},
+      {"onscroll", kVectorStar},
+      {"onseeked", kVectorStar},
+      {"onseeking", kVectorStar},
+      {"onselect", kVectorStar},
+      {"onshow", kVectorStar},
+      {"onstalled", kVectorStar},
+      {"onsubmit", kVectorStar},
+      {"onsuspend", kVectorStar},
+      {"ontimeupdate", kVectorStar},
+      {"ontoggle", kVectorStar},
+      {"onvolumechange", kVectorStar},
+      {"onwaiting", kVectorStar},
+      {"onactivate", kVectorStar},
+      {"onfocusin", kVectorStar},
+      {"onfocusout", kVectorStar},
+  };
   const HashMap<String, Vector<String>> default_allow_attributes_ = {
       {"abbr", kVectorStar},
       {"accept", kVectorStar},
diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
index 4a95dc9..6b94e2b 100644
--- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
+++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
@@ -32,6 +32,7 @@
 
 #include <string.h>
 #include <algorithm>
+#include <atomic>
 #include <limits>
 #include <memory>
 
@@ -80,6 +81,12 @@
 
 namespace {
 
+// The number of connecting or connected WebSocketChannelImpl objects that
+// currently exist. This needs to be threadsafe because there may also be
+// Workers in the same process. This is default-initialised to 0 because it has
+// static storage.
+std::atomic_size_t g_connection_count;
+
 enum WebSocketOpCode {
   kOpCodeText = 0x1,
   kOpCodeBinary = 0x2,
@@ -285,8 +292,8 @@
         "Connecting to a non-secure WebSocket server from a secure origin is "
         "deprecated.";
     execution_context_->AddConsoleMessage(MakeGarbageCollected<ConsoleMessage>(
-        mojom::ConsoleMessageSource::kJavaScript,
-        mojom::ConsoleMessageLevel::kWarning, message));
+        mojom::blink::ConsoleMessageSource::kJavaScript,
+        mojom::blink::ConsoleMessageLevel::kWarning, message));
   }
 
   url_ = url;
@@ -310,6 +317,25 @@
     return true;
   }
 
+  // Restrict the number of simultaneous connections to avoid a DoS attack on
+  // the browser process. Fail asynchronously, to match the behaviour when we
+  // are throttled by the network service.
+  if (connection_count_tracker_handle_.IncrementAndCheckStatus() ==
+      ConnectionCountTrackerHandle::CountStatus::SHOULD_NOT_CONNECT) {
+    StringBuilder message;
+    message.Append("WebSocket connection to '");
+    message.Append(url.GetString());
+    message.Append("' failed: Insufficient resources");
+    execution_context_->AddConsoleMessage(MakeGarbageCollected<ConsoleMessage>(
+        mojom::blink::ConsoleMessageSource::kJavaScript,
+        mojom::blink::ConsoleMessageLevel::kError, message.ToString()));
+    execution_context_->GetTaskRunner(TaskType::kNetworking)
+        ->PostTask(FROM_HERE,
+                   WTF::Bind(&WebSocketChannelImpl::TearDownFailedConnection,
+                             WrapPersistent(this)));
+    return true;
+  }
+
   mojo::Remote<mojom::blink::WebSocketConnector> connector;
   execution_context_->GetBrowserInterfaceBroker().GetInterface(
       connector.BindNewPipeAndPassReceiver(
@@ -733,6 +759,28 @@
   return std::move(completion_callback_);
 }
 
+// This could be done directly in WebSocketChannelImpl, but is a separate class
+// to make it easier to verify correctness.
+WebSocketChannelImpl::ConnectionCountTrackerHandle::CountStatus
+WebSocketChannelImpl::ConnectionCountTrackerHandle::IncrementAndCheckStatus() {
+  DCHECK(!incremented_);
+  incremented_ = true;
+  const size_t old_count =
+      g_connection_count.fetch_add(1, std::memory_order_relaxed);
+  return old_count >= kMaxWebSocketsPerRenderProcess
+             ? CountStatus::SHOULD_NOT_CONNECT
+             : CountStatus::OKAY_TO_CONNECT;
+}
+
+void WebSocketChannelImpl::ConnectionCountTrackerHandle::Decrement() {
+  if (incremented_) {
+    incremented_ = false;
+    const size_t old_count =
+        g_connection_count.fetch_sub(1, std::memory_order_relaxed);
+    DCHECK_NE(old_count, 0u);
+  }
+}
+
 bool WebSocketChannelImpl::MaybeSendSynchronously(
     network::mojom::blink::WebSocketMessageType frame_type,
     base::span<const char>* data) {
@@ -1166,6 +1214,7 @@
 }
 
 void WebSocketChannelImpl::Dispose() {
+  connection_count_tracker_handle_.Decrement();
   message_chunks_.Reset();
   has_initiated_opening_handshake_ = true;
   feature_handle_for_scheduler_.reset();
diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.h b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.h
index 7207d42f..7c23a83 100644
--- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.h
+++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.h
@@ -78,6 +78,9 @@
   USING_PRE_FINALIZER(WebSocketChannelImpl, Dispose);
 
  public:
+  // Public for use in tests.
+  static constexpr size_t kMaxWebSocketsPerRenderProcess = 255u;
+
   // You can specify the source file and the line number information
   // explicitly by passing the last parameter.
   // In the usual case, they are set automatically and you don't have to
@@ -267,6 +270,38 @@
     base::OnceClosure completion_callback_;
   };
 
+  // A handle to a global count of the number of WebSockets that have been
+  // created. Can be used to limit the total number of WebSockets that have been
+  // created in this render process.
+  class ConnectionCountTrackerHandle {
+    DISALLOW_NEW();
+
+   public:
+    enum class CountStatus {
+      OKAY_TO_CONNECT,
+      SHOULD_NOT_CONNECT,
+    };
+
+    ConnectionCountTrackerHandle() = default;
+    ~ConnectionCountTrackerHandle() = default;
+
+    ConnectionCountTrackerHandle(const ConnectionCountTrackerHandle&) = delete;
+    ConnectionCountTrackerHandle& operator=(
+        const ConnectionCountTrackerHandle&) = delete;
+
+    // Increments the count and returns SHOULD_NOT_CONNECT if it exceeds
+    // kMaxWebSocketsPerRenderProcess. Should only be called once.
+    CountStatus IncrementAndCheckStatus();
+
+    // Decrements the count. Should be called at least once. If there is no
+    // matching call to IncrementAndCheckStatus() it does nothing, so it is safe
+    // to call multiple times.
+    void Decrement();
+
+   private:
+    bool incremented_ = false;
+  };
+
   // The state is defined to see the conceptual state more clearly than checking
   // various members (for DCHECKs for example). This is only used internally.
   enum class State {
@@ -364,6 +399,7 @@
   mojo::ScopedDataPipeProducerHandle writable_;
   mojo::SimpleWatcher writable_watcher_;
   bool wait_for_writable_ = false;
+  ConnectionCountTrackerHandle connection_count_tracker_handle_;
 
   const scoped_refptr<base::SingleThreadTaskRunner> file_reading_task_runner_;
 };
diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_impl_test.cc b/third_party/blink/renderer/modules/websockets/websocket_channel_impl_test.cc
index 76757ad..951725f 100644
--- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl_test.cc
+++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl_test.cc
@@ -13,6 +13,7 @@
 #include "base/memory/ptr_util.h"
 #include "base/memory/weak_ptr.h"
 #include "mojo/public/cpp/bindings/receiver_set.h"
+#include "mojo/public/cpp/bindings/remote_set.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
@@ -34,23 +35,24 @@
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 #include "third_party/blink/renderer/platform/wtf/wtf_size_t.h"
 
-using testing::_;
-using testing::InSequence;
-using testing::PrintToString;
-using testing::AnyNumber;
-using testing::SaveArg;
+using ::testing::_;
+using ::testing::AnyNumber;
+using ::testing::InSequence;
+using ::testing::PrintToString;
+using ::testing::SaveArg;
+using ::testing::StrictMock;
+using ::testing::Unused;
 
 namespace blink {
 
-typedef testing::StrictMock<testing::MockFunction<void(int)>> Checkpoint;
+typedef StrictMock<testing::MockFunction<void(int)>> Checkpoint;
 
 class MockWebSocketChannelClient
     : public GarbageCollected<MockWebSocketChannelClient>,
       public WebSocketChannelClient {
  public:
   static MockWebSocketChannelClient* Create() {
-    return MakeGarbageCollected<
-        testing::StrictMock<MockWebSocketChannelClient>>();
+    return MakeGarbageCollected<StrictMock<MockWebSocketChannelClient>>();
   }
 
   MockWebSocketChannelClient() = default;
@@ -92,7 +94,37 @@
   MOCK_METHOD0(Destructor, void());
 };
 
-class WebSocketChannelImplTest : public PageTestBase {
+// The base class sets up the page.
+class WebSocketChannelImplTestBase : public PageTestBase {
+ public:
+  void SetUp() override {
+    local_frame_client_ = MakeGarbageCollected<EmptyLocalFrameClient>();
+    local_frame_client_->GetBrowserInterfaceBroker().SetBinderForTesting(
+        mojom::blink::WebSocketConnector::Name_,
+        base::BindRepeating(
+            &WebSocketChannelImplTestBase::BindWebSocketConnector,
+            GetWeakPtr()));
+
+    PageTestBase::SetupPageWithClients(nullptr /* page_clients */,
+                                       local_frame_client_.Get());
+    const KURL page_url("http://example.com/");
+    NavigateTo(page_url);
+  }
+
+  void TearDown() override {
+    local_frame_client_->GetBrowserInterfaceBroker().SetBinderForTesting(
+        mojom::blink::WebSocketConnector::Name_, {});
+  }
+
+  // These need to be implemented in the subclass.
+  virtual base::WeakPtr<WebSocketChannelImplTestBase> GetWeakPtr() = 0;
+  virtual void BindWebSocketConnector(mojo::ScopedMessagePipeHandle handle) = 0;
+
+ private:
+  Persistent<EmptyLocalFrameClient> local_frame_client_;
+};
+
+class WebSocketChannelImplTest : public WebSocketChannelImplTestBase {
  public:
   using WebSocketMessageType = network::mojom::WebSocketMessageType;
   class TestWebSocket final : public network::mojom::blink::WebSocket {
@@ -215,7 +247,11 @@
 
   ~WebSocketChannelImplTest() override { Channel()->Disconnect(); }
 
-  void BindWebSocketConnector(mojo::ScopedMessagePipeHandle handle) {
+  base::WeakPtr<WebSocketChannelImplTestBase> GetWeakPtr() override {
+    return weak_ptr_factory_.GetWeakPtr();
+  }
+
+  void BindWebSocketConnector(mojo::ScopedMessagePipeHandle handle) override {
     connector_.Bind(mojo::PendingReceiver<mojom::blink::WebSocketConnector>(
         std::move(handle)));
   }
@@ -256,26 +292,12 @@
   }
 
   void SetUp() override {
-    local_frame_client_ = MakeGarbageCollected<EmptyLocalFrameClient>();
-    local_frame_client_->GetBrowserInterfaceBroker().SetBinderForTesting(
-        mojom::blink::WebSocketConnector::Name_,
-        base::BindRepeating(&WebSocketChannelImplTest::BindWebSocketConnector,
-                            weak_ptr_factory_.GetWeakPtr()));
-
-    PageTestBase::SetupPageWithClients(nullptr /* page_clients */,
-                                       local_frame_client_.Get());
-    const KURL page_url("http://example.com/");
-    NavigateTo(page_url);
+    WebSocketChannelImplTestBase::SetUp();
     channel_ = WebSocketChannelImpl::CreateForTesting(
         GetFrame().DomWindow(), channel_client_.Get(),
         SourceLocation::Capture(), std::move(handshake_throttle_));
   }
 
-  void TearDown() override {
-    local_frame_client_->GetBrowserInterfaceBroker().SetBinderForTesting(
-        mojom::blink::WebSocketConnector::Name_, {});
-  }
-
   MockWebSocketChannelClient* ChannelClient() { return channel_client_.Get(); }
 
   WebSocketChannelImpl* Channel() { return channel_.Get(); }
@@ -358,7 +380,6 @@
   }
 
   WebSocketConnector connector_;
-  Persistent<EmptyLocalFrameClient> local_frame_client_;
   Persistent<MockWebSocketChannelClient> channel_client_;
   std::unique_ptr<MockWebSocketHandshakeThrottle> handshake_throttle_;
   MockWebSocketHandshakeThrottle* const raw_handshake_throttle_;
@@ -1286,8 +1307,7 @@
  public:
   WebSocketChannelImplHandshakeThrottleTest()
       : WebSocketChannelImplTest(
-            std::make_unique<
-                testing::StrictMock<MockWebSocketHandshakeThrottle>>()) {}
+            std::make_unique<StrictMock<MockWebSocketHandshakeThrottle>>()) {}
 
   static KURL url() { return KURL("ws://localhost/"); }
 };
@@ -1544,4 +1564,136 @@
   test::RunPendingTasks();
 }
 
+class MockWebSocketConnector : public mojom::blink::WebSocketConnector {
+ public:
+  MOCK_METHOD(
+      void,
+      Connect,
+      (const KURL&,
+       const Vector<String>&,
+       const net::SiteForCookies&,
+       const String&,
+       mojo::PendingRemote<network::mojom::blink::WebSocketHandshakeClient>));
+};
+
+// This can't use WebSocketChannelImplTest because it requires multiple
+// WebSocketChannels to be connected.
+class WebSocketChannelImplMultipleTest : public WebSocketChannelImplTestBase {
+ public:
+  base::WeakPtr<WebSocketChannelImplTestBase> GetWeakPtr() override {
+    return weak_ptr_factory_.GetWeakPtr();
+  }
+
+  void BindWebSocketConnector(mojo::ScopedMessagePipeHandle handle) override {
+    connector_receiver_set_.Add(
+        &connector_, mojo::PendingReceiver<mojom::blink::WebSocketConnector>(
+                         std::move(handle)));
+  }
+
+ protected:
+  mojo::ReceiverSet<mojom::blink::WebSocketConnector> connector_receiver_set_;
+  StrictMock<MockWebSocketConnector> connector_;
+
+  base::WeakPtrFactory<WebSocketChannelImplMultipleTest> weak_ptr_factory_{
+      this};
+};
+
+TEST_F(WebSocketChannelImplMultipleTest, ConnectionLimit) {
+  Checkpoint checkpoint;
+
+  // We need to keep the handshake clients alive otherwise they will cause
+  // connection failures.
+  mojo::RemoteSet<network::mojom::blink::WebSocketHandshakeClient>
+      handshake_clients;
+  auto handshake_client_add_action =
+      [&handshake_clients](
+          Unused, Unused, Unused, Unused,
+          mojo::PendingRemote<network::mojom::blink::WebSocketHandshakeClient>
+              handshake_client) {
+        handshake_clients.Add(std::move(handshake_client));
+      };
+
+  auto failure_handshake_throttle =
+      std::make_unique<StrictMock<MockWebSocketHandshakeThrottle>>();
+  auto* failure_channel_client = MockWebSocketChannelClient::Create();
+
+  auto successful_handshake_throttle =
+      std::make_unique<StrictMock<MockWebSocketHandshakeThrottle>>();
+  auto* successful_channel_client = MockWebSocketChannelClient::Create();
+
+  auto url = KURL("ws://localhost/");
+
+  {
+    InSequence s;
+    EXPECT_CALL(connector_, Connect(_, _, _, _, _))
+        .Times(WebSocketChannelImpl::kMaxWebSocketsPerRenderProcess)
+        .WillRepeatedly(handshake_client_add_action);
+
+    EXPECT_CALL(checkpoint, Call(1));
+
+    EXPECT_CALL(*failure_channel_client, DidError());
+    EXPECT_CALL(
+        *failure_channel_client,
+        DidClose(WebSocketChannelClient::kClosingHandshakeIncomplete,
+                 WebSocketChannel::kCloseEventCodeAbnormalClosure, String()));
+    EXPECT_CALL(*failure_handshake_throttle, Destructor());
+
+    EXPECT_CALL(checkpoint, Call(2));
+
+    EXPECT_CALL(*successful_handshake_throttle, ThrottleHandshake(_, _));
+    EXPECT_CALL(connector_, Connect(_, _, _, _, _))
+        .WillOnce(handshake_client_add_action);
+    EXPECT_CALL(*successful_handshake_throttle, Destructor());
+  }
+
+  WebSocketChannelImpl*
+      channels[WebSocketChannelImpl::kMaxWebSocketsPerRenderProcess] = {};
+  for (WebSocketChannelImpl*& channel : channels) {
+    auto handshake_throttle =
+        std::make_unique<StrictMock<MockWebSocketHandshakeThrottle>>();
+    EXPECT_CALL(*handshake_throttle, ThrottleHandshake(_, _));
+    EXPECT_CALL(*handshake_throttle, Destructor());
+
+    // This is kept alive by WebSocketChannelImpl so we don't need to retain
+    // our own reference.
+    auto* channel_client = MockWebSocketChannelClient::Create();
+
+    channel = WebSocketChannelImpl::CreateForTesting(
+        GetFrame().DomWindow(), channel_client, SourceLocation::Capture(),
+        std::move(handshake_throttle));
+    channel->Connect(url, "");
+  }
+
+  // Connect() is called via mojo and so asynchronously.
+  test::RunPendingTasks();
+
+  auto* failing_channel = WebSocketChannelImpl::CreateForTesting(
+      GetFrame().DomWindow(), failure_channel_client, SourceLocation::Capture(),
+      std::move(failure_handshake_throttle));
+  failing_channel->Connect(url, "");
+
+  checkpoint.Call(1);
+
+  // Give DidClose() a chance to be called.
+  test::RunPendingTasks();
+
+  // Abort all the pending connections to permit more to be created.
+  for (auto* channel : channels) {
+    channel->Disconnect();
+  }
+
+  checkpoint.Call(2);
+
+  auto* successful_channel = WebSocketChannelImpl::CreateForTesting(
+      GetFrame().DomWindow(), successful_channel_client,
+      SourceLocation::Capture(), std::move(successful_handshake_throttle));
+  successful_channel->Connect(url, "");
+
+  // Let the connect be passed through mojo.
+  test::RunPendingTasks();
+
+  // Destroy the channel to stop it interfering with other tests.
+  successful_channel->Disconnect();
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/webtransport/BUILD.gn b/third_party/blink/renderer/modules/webtransport/BUILD.gn
index c94cf58..66edac2 100644
--- a/third_party/blink/renderer/modules/webtransport/BUILD.gn
+++ b/third_party/blink/renderer/modules/webtransport/BUILD.gn
@@ -8,6 +8,7 @@
   sources = [
     "bidirectional_stream.cc",
     "bidirectional_stream.h",
+    "datagram_duplex_stream.h",
     "incoming_stream.cc",
     "incoming_stream.h",
     "outgoing_stream.cc",
diff --git a/third_party/blink/renderer/modules/webtransport/datagram_duplex_stream.h b/third_party/blink/renderer/modules/webtransport/datagram_duplex_stream.h
new file mode 100644
index 0000000..8f659550
--- /dev/null
+++ b/third_party/blink/renderer/modules/webtransport/datagram_duplex_stream.h
@@ -0,0 +1,48 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBTRANSPORT_DATAGRAM_DUPLEX_STREAM_H_
+#define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBTRANSPORT_DATAGRAM_DUPLEX_STREAM_H_
+
+#include "third_party/blink/renderer/modules/modules_export.h"
+#include "third_party/blink/renderer/modules/webtransport/web_transport.h"
+#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
+#include "third_party/blink/renderer/platform/heap/visitor.h"
+
+namespace blink {
+
+class ReadableStream;
+class WritableStream;
+
+class MODULES_EXPORT DatagramDuplexStream : public ScriptWrappable {
+  DEFINE_WRAPPERTYPEINFO();
+
+ public:
+  // Currently we delegate to the WebTransport object rather than store the
+  // readable and writable separately.
+  // TODO(ricea): Once the legacy getters are removed from WebTransport, store
+  // the readable and writable in this object.
+  explicit DatagramDuplexStream(WebTransport* web_transport)
+      : web_transport_(web_transport) {}
+
+  ReadableStream* readable() const {
+    return web_transport_->datagramReadable();
+  }
+
+  WritableStream* writable() const {
+    return web_transport_->datagramWritable();
+  }
+
+  void Trace(Visitor* visitor) const override {
+    visitor->Trace(web_transport_);
+    ScriptWrappable::Trace(visitor);
+  }
+
+ private:
+  const Member<WebTransport> web_transport_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_WEBTRANSPORT_DATAGRAM_DUPLEX_STREAM_H_
diff --git a/third_party/blink/renderer/modules/webtransport/datagram_duplex_stream.idl b/third_party/blink/renderer/modules/webtransport/datagram_duplex_stream.idl
new file mode 100644
index 0000000..2a3f5ec
--- /dev/null
+++ b/third_party/blink/renderer/modules/webtransport/datagram_duplex_stream.idl
@@ -0,0 +1,12 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/webtransport/#duplex-stream
+[
+    Exposed=(Window,Worker),
+    RuntimeEnabled=WebTransport
+] interface DatagramDuplexStream {
+  readonly attribute ReadableStream readable;
+  readonly attribute WritableStream writable;
+};
diff --git a/third_party/blink/renderer/modules/webtransport/idls.gni b/third_party/blink/renderer/modules/webtransport/idls.gni
index a108580..bc2c3df9 100644
--- a/third_party/blink/renderer/modules/webtransport/idls.gni
+++ b/third_party/blink/renderer/modules/webtransport/idls.gni
@@ -4,6 +4,7 @@
 
 modules_idl_files = [
   "bidirectional_stream.idl",
+  "datagram_duplex_stream.idl",
   "receive_stream.idl",
   "send_stream.idl",
   "web_transport.idl",
diff --git a/third_party/blink/renderer/modules/webtransport/web_transport.cc b/third_party/blink/renderer/modules/webtransport/web_transport.cc
index 24eb5f4..6b00defe 100644
--- a/third_party/blink/renderer/modules/webtransport/web_transport.cc
+++ b/third_party/blink/renderer/modules/webtransport/web_transport.cc
@@ -31,6 +31,7 @@
 #include "third_party/blink/renderer/core/streams/writable_stream.h"
 #include "third_party/blink/renderer/core/typed_arrays/dom_typed_array.h"
 #include "third_party/blink/renderer/modules/webtransport/bidirectional_stream.h"
+#include "third_party/blink/renderer/modules/webtransport/datagram_duplex_stream.h"
 #include "third_party/blink/renderer/modules/webtransport/receive_stream.h"
 #include "third_party/blink/renderer/modules/webtransport/send_stream.h"
 #include "third_party/blink/renderer/modules/webtransport/web_transport_stream.h"
@@ -474,6 +475,11 @@
   return received_bidirectional_streams_;
 }
 
+DatagramDuplexStream* WebTransport::datagrams() {
+  GetExecutionContext()->CountUse(WebFeature::kQuicTransportDatagramApis);
+  return datagrams_;
+}
+
 WritableStream* WebTransport::datagramWritable() {
   GetExecutionContext()->CountUse(WebFeature::kQuicTransportDatagramApis);
   return outgoing_datagrams_;
@@ -628,6 +634,7 @@
 }
 
 void WebTransport::Trace(Visitor* visitor) const {
+  visitor->Trace(datagrams_);
   visitor->Trace(received_datagrams_);
   visitor->Trace(received_datagrams_controller_);
   visitor->Trace(outgoing_datagrams_);
@@ -726,6 +733,8 @@
 
   probe::WebTransportCreated(execution_context, inspector_transport_id_, url_);
 
+  datagrams_ = MakeGarbageCollected<DatagramDuplexStream>(this);
+
   // The choice of 1 for the ReadableStream means that it will queue one
   // datagram even when read() is not being called. Unfortunately, that datagram
   // may become arbitrarily stale.
diff --git a/third_party/blink/renderer/modules/webtransport/web_transport.h b/third_party/blink/renderer/modules/webtransport/web_transport.h
index d6805f0..50e6045 100644
--- a/third_party/blink/renderer/modules/webtransport/web_transport.h
+++ b/third_party/blink/renderer/modules/webtransport/web_transport.h
@@ -27,6 +27,7 @@
 
 namespace blink {
 
+class DatagramDuplexStream;
 class ExceptionState;
 class ReadableStream;
 class ReadableStreamDefaultControllerWithScriptScope;
@@ -65,6 +66,7 @@
   ScriptPromise createBidirectionalStream(ScriptState*, ExceptionState&);
   ReadableStream* incomingBidirectionalStreams();
 
+  DatagramDuplexStream* datagrams();
   WritableStream* datagramWritable();
   ReadableStream* datagramReadable();
   void close(const WebTransportCloseInfo*);
@@ -129,6 +131,9 @@
                                            uint32_t stream_id);
 
   bool cleanly_closed_ = false;
+
+  Member<DatagramDuplexStream> datagrams_;
+
   Member<ReadableStream> received_datagrams_;
   Member<ReadableStreamDefaultControllerWithScriptScope>
       received_datagrams_controller_;
diff --git a/third_party/blink/renderer/modules/webtransport/web_transport_test.cc b/third_party/blink/renderer/modules/webtransport/web_transport_test.cc
index 0af5884..1d51198 100644
--- a/third_party/blink/renderer/modules/webtransport/web_transport_test.cc
+++ b/third_party/blink/renderer/modules/webtransport/web_transport_test.cc
@@ -39,6 +39,7 @@
 #include "third_party/blink/renderer/core/streams/writable_stream_default_writer.h"
 #include "third_party/blink/renderer/core/typed_arrays/dom_array_buffer.h"
 #include "third_party/blink/renderer/core/typed_arrays/dom_typed_array.h"
+#include "third_party/blink/renderer/modules/webtransport/datagram_duplex_stream.h"
 #include "third_party/blink/renderer/modules/webtransport/receive_stream.h"
 #include "third_party/blink/renderer/modules/webtransport/send_stream.h"
 #include "third_party/blink/renderer/modules/webtransport/test_utils.h"
@@ -607,7 +608,7 @@
         std::move(callback).Run(true);
       }));
 
-  auto* writable = web_transport->datagramWritable();
+  auto* writable = web_transport->datagrams()->writable();
   auto* script_state = scope.GetScriptState();
   auto* writer = writable->getWriter(script_state, ASSERT_NO_EXCEPTION);
   auto* chunk = DOMUint8Array::Create(1);
@@ -636,7 +637,7 @@
             std::move(callback).Run(true);
           }));
 
-  auto* writable = web_transport->datagramWritable();
+  auto* writable = web_transport->datagrams()->writable();
   auto* script_state = scope.GetScriptState();
   auto* writer = writable->getWriter(script_state, ASSERT_NO_EXCEPTION);
 
@@ -692,7 +693,7 @@
   V8TestingScope scope;
   auto* web_transport = Create(scope, "https://example.com", EmptyOptions());
 
-  auto* writable = web_transport->datagramWritable();
+  auto* writable = web_transport->datagrams()->writable();
   auto* script_state = scope.GetScriptState();
   auto* writer = writable->getWriter(script_state, ASSERT_NO_EXCEPTION);
   auto* chunk = DOMUint8Array::Create(1);
@@ -719,7 +720,7 @@
   web_transport->close(nullptr);
   test::RunPendingTasks();
 
-  auto* writable = web_transport->datagramWritable();
+  auto* writable = web_transport->datagrams()->writable();
   auto* script_state = scope.GetScriptState();
   auto* writer = writable->getWriter(script_state, ASSERT_NO_EXCEPTION);
 
@@ -770,7 +771,7 @@
 
   test::RunPendingTasks();
 
-  auto* readable = web_transport->datagramReadable();
+  auto* readable = web_transport->datagrams()->readable();
   auto* script_state = scope.GetScriptState();
   auto* reader =
       readable->GetDefaultReaderForTesting(script_state, ASSERT_NO_EXCEPTION);
@@ -786,7 +787,7 @@
   V8TestingScope scope;
   auto* web_transport =
       CreateAndConnectSuccessfully(scope, "https://example.com");
-  auto* readable = web_transport->datagramReadable();
+  auto* readable = web_transport->datagrams()->readable();
   auto* script_state = scope.GetScriptState();
   auto* reader =
       readable->GetDefaultReaderForTesting(script_state, ASSERT_NO_EXCEPTION);
@@ -820,7 +821,7 @@
   // Make sure that the calls have run.
   test::RunPendingTasks();
 
-  auto* readable = web_transport->datagramReadable();
+  auto* readable = web_transport->datagrams()->readable();
   auto* script_state = scope.GetScriptState();
   auto* reader =
       readable->GetDefaultReaderForTesting(script_state, ASSERT_NO_EXCEPTION);
diff --git a/third_party/blink/renderer/platform/graphics/identifiability_paint_op_digest.cc b/third_party/blink/renderer/platform/graphics/identifiability_paint_op_digest.cc
index 27f8801..446bfff 100644
--- a/third_party/blink/renderer/platform/graphics/identifiability_paint_op_digest.cc
+++ b/third_party/blink/renderer/platform/graphics/identifiability_paint_op_digest.cc
@@ -39,11 +39,9 @@
     : max_digest_ops_(max_digest_ops),
       size_(size),
       paint_cache_(cc::ClientPaintCache::kNoCachingBudget),
-      nodraw_canvas_(size_.Width(), size_.Height()),
       serialize_options_(&image_provider_,
                          /*transfer_cache=*/nullptr,
                          &paint_cache_,
-                         &nodraw_canvas_,
                          /*strike_server=*/nullptr,
                          /*color_space=*/nullptr,
                          /*can_use_lcd_text=*/false,
@@ -114,7 +112,7 @@
     size_t serialized_size;
     while ((serialized_size = op->Serialize(
                 SerializationBuffer().data(), SerializationBuffer().size(),
-                serialize_options_, nullptr, SkM44())) == 0) {
+                serialize_options_, nullptr, SkM44(), SkM44())) == 0) {
       constexpr size_t kMaxBufferSize =
           gpu::raster::RasterInterface::kDefaultMaxOpSizeHint << 2;
       if (SerializationBuffer().size() >= kMaxBufferSize) {
diff --git a/third_party/blink/renderer/platform/graphics/identifiability_paint_op_digest.h b/third_party/blink/renderer/platform/graphics/identifiability_paint_op_digest.h
index 9326ce6d..df5bb08 100644
--- a/third_party/blink/renderer/platform/graphics/identifiability_paint_op_digest.h
+++ b/third_party/blink/renderer/platform/graphics/identifiability_paint_op_digest.h
@@ -94,9 +94,6 @@
   // Real paint cache with Put() disabled.
   cc::ClientPaintCache paint_cache_;
 
-  // Fake canvas needed for null checks.
-  SkNoDrawCanvas nodraw_canvas_;
-
   // Used for PaintOp::Serialize() -- several options are not needed, since we
   // just need to compute a digest.
   cc::PaintOp::SerializeOptions serialize_options_;
diff --git a/third_party/blink/renderer/platform/wtf/allocator/partitions.cc b/third_party/blink/renderer/platform/wtf/allocator/partitions.cc
index e4c83dac..adced4d 100644
--- a/third_party/blink/renderer/platform/wtf/allocator/partitions.cc
+++ b/third_party/blink/renderer/platform/wtf/allocator/partitions.cc
@@ -115,12 +115,11 @@
 #if PA_ALLOW_PCSCAN
   if (base::FeatureList::IsEnabled(base::features::kPartitionAllocPCScan) ||
       base::FeatureList::IsEnabled(kPCScanBlinkPartitions)) {
-    auto& pcscan = base::internal::PCScan::Instance();
-    pcscan.RegisterNonScannableRoot(array_buffer_root_);
+    base::internal::PCScan::RegisterNonScannableRoot(array_buffer_root_);
 #if !BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
-    pcscan.RegisterScannableRoot(fast_malloc_root_);
+    base::internal::PCScan::RegisterScannableRoot(fast_malloc_root_);
 #endif
-    pcscan.RegisterScannableRoot(buffer_root_);
+    base::internal::PCScan::RegisterScannableRoot(buffer_root_);
   }
 #endif
 
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index f5210b6..ebaa51f 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -176,20 +176,19 @@
 # --- End CompositeAfterPaint Tests --
 
 # --- BEGIN OOP-R Canvas tests ---
-crbug.com/1081534 virtual/oopr-canvas2d/fast/canvas/canvas-transform-skewed.html [ Failure ]
+crbug.com/1081534 [ Win7 ] virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow.html [ Pass Failure ]
+crbug.com/1081534 [ Win ] virtual/oopr-canvas2d/fast/canvas/canvas-incremental-repaint.html [ Failure ]
+crbug.com/1081534 [ Win ] virtual/oopr-canvas2d/fast/canvas/canvas-partial-invalidation-zoomed.html [ Pass Failure ]
+crbug.com/1081534 [ Win ] virtual/oopr-canvas2d/fast/canvas/canvas-state-persistence-no-dirty.html [ Pass Failure ]
+crbug.com/1081534 [ Win ] virtual/oopr-canvas2d/fast/canvas/canvas-transform-skewed.html [ Failure ]
+crbug.com/1081534 [ Linux ] virtual/oopr-canvas2d/fast/canvas/canvas-transform-skewed.html [ Failure ]
+crbug.com/1081534 [ Win ] virtual/oopr-canvas2d/fast/canvas/OffscreenCanvas-text-FontFace.html [ Pass Failure ]
 
-# Flaky tests
-crbug.com/1081534 virtual/oopr-canvas2d/fast/canvas/OffscreenCanvas-Bitmaprenderer-toBlob-worker.html [ Pass Failure ]
-crbug.com/1081534 [ Linux ] virtual/oopr-canvas2d/fast/canvas/canvas-getImageData.html [ Pass Failure ]
-crbug.com/1081534 virtual/oopr-canvas2d/fast/canvas/OffscreenCanvas-text-FontFace.html [ Pass Failure ]
-crbug.com/1081534 virtual/oopr-canvas2d/fast/canvas/canvas-state-persistence-no-dirty.html [ Pass Failure ]
-crbug.com/1081534 virtual/oopr-canvas2d/fast/canvas/canvas-partial-invalidation-zoomed.html [ Pass Failure ]
-crbug.com/1081534 virtual/oopr-canvas2d/fast/canvas/canvas-incremental-repaint.html [ Pass Failure ]
-crbug.com/1081534 virtual/oopr-canvas2d/fast/canvas/canvas-text-alignment.html [ Pass Failure ]
+# Flakey tests
+crbug.com/1081534 [ Win ] virtual/oopr-canvas2d/fast/canvas/OffscreenCanvas-Bitmaprenderer-toBlob-worker.html [ Pass Failure ]
+crbug.com/1081534 [ Win ] virtual/oopr-canvas2d/fast/canvas/canvas-clearRect.html [ Pass Failure ]
+crbug.com/1081534 [ Win ] virtual/oopr-canvas2d/fast/canvas/canvas-getImageData.html [ Pass Failure ]
 
-# We're rolling these tests out on Windows first, other platforms to follow. When removing [ Skip ]
-# for a platform please add the platform tag to the failing tests above.
-crbug.com/1081534 [ Fuchsia ] virtual/oopr-canvas2d/* [ Skip ]
 crbug.com/1081534 [ Mac ] virtual/oopr-canvas2d/* [ Skip ]
 # --- END OOP-R Canvas Tests
 
@@ -3558,7 +3557,6 @@
 crbug.com/1203344 [ Mac10.13 ] external/wpt/css/css-paint-api/idlharness.html [ Failure ]
 crbug.com/1203344 [ Mac10.14 ] external/wpt/html/dom/idlharness.https.html?include=(Document|Window) [ Failure ]
 crbug.com/1203344 [ Mac10.14 ] external/wpt/mst-content-hint/idlharness.window.html [ Failure Timeout ]
-crbug.com/1203344 [ Mac10.14 ] virtual/layout_ng_svg_text/external/wpt/svg/idlharness.window.html [ Failure ]
 crbug.com/1203344 [ Mac10.14 ] external/wpt/animation-worklet/idlharness.any.worker.html [ Failure Timeout ]
 crbug.com/1203344 [ Mac10.14 ] external/wpt/badging/idlharness.https.any.worker.html [ Timeout Failure ]
 crbug.com/1203344 [ Mac10.14 ] external/wpt/dom/idlharness.window.html?exclude=Node [ Timeout Failure ]
@@ -5030,6 +5028,12 @@
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/zoom/page/zoom-zoom-coords.xhtml [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/zoom/text/lowdpi-zoom-text.html [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/zoom/zoomed-text-in-clippath.html [ Failure ]
+# Ignore older OSes during SVGTextNG development
+crbug.com/1179585 [ Mac10.12 ] virtual/layout_ng_svg_text/* [ Skip ]
+crbug.com/1179585 [ Mac10.13 ] virtual/layout_ng_svg_text/* [ Skip ]
+crbug.com/1179585 [ Mac10.14 ] virtual/layout_ng_svg_text/* [ Skip ]
+crbug.com/1179585 [ Mac11.0 ] virtual/layout_ng_svg_text/* [ Skip ]
+crbug.com/1179585 [ Win7 ] virtual/layout_ng_svg_text/* [ Skip ]
 
 # [css-animations]
 crbug.com/993365 external/wpt/css/css-transitions/Element-getAnimations.tentative.html [ Failure Pass ]
@@ -6240,7 +6244,7 @@
 crbug.com/1046784 http/tests/inspector-protocol/service-worker/target-reloaded-after-crash.js [ Pass Failure Timeout ]
 
 # Disabled to unblock https://crrev.com/c/2846892
-crbug.com/1195927 http/tests/devtools/sources/debugger/live-edit.js [ Pass Failure ]
+crbug.com/1195927 http/tests/devtools/sources/debugger/live-edit.js [ Pass Failure Timeout ]
 
 # Sheriff 2020-01-28
 crbug.com/1046201 [ Mac ] fast/forms/calendar-picker/calendar-picker-appearance-zoom125.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/WebGPUExpectations b/third_party/blink/web_tests/WebGPUExpectations
index caee6f3..0342ded9 100644
--- a/third_party/blink/web_tests/WebGPUExpectations
+++ b/third_party/blink/web_tests/WebGPUExpectations
@@ -122,13 +122,11 @@
 # These tests aren't working on CQ, unclear whether the test or harness (or Chrome) is broken.
 # Mac: mostly works
 # Linux: actual is white/blank - is actually crashing silently
-crbug.com/1083478 [ Linux ] wpt_internal/webgpu/web_platform/reftests/canvas_clear.html [ Skip ]
-crbug.com/1083478 [ Linux ] wpt_internal/webgpu/web_platform/reftests/canvas_complex_bgra8unorm.html [ Skip ]
+crbug.com/1083478 [ Linux ] wpt_internal/webgpu/webgpu/web_platform/reftests/canvas_clear.html [ Skip ]
+crbug.com/1083478 [ Linux ] wpt_internal/webgpu/webgpu/web_platform/reftests/canvas_complex_bgra8unorm.html [ Skip ]
 # Win: takeScreenshot crashes
-crbug.com/1083478 [ Win ] wpt_internal/webgpu/web_platform/reftests/canvas_clear.html [ Skip ]
-crbug.com/1083478 [ Win ] wpt_internal/webgpu/web_platform/reftests/canvas_complex_bgra8unorm.html [ Skip ]
-# Mac: Shifted by about half a pixel
-crbug.com/1083478 [ Mac ] wpt_internal/webgpu/web_platform/reftests/canvas_complex_bgra8unorm.html [ Failure ]
+crbug.com/1083478 [ Win ] wpt_internal/webgpu/webgpu/web_platform/reftests/canvas_clear.html [ Skip ]
+crbug.com/1083478 [ Win ] wpt_internal/webgpu/webgpu/web_platform/reftests/canvas_complex_bgra8unorm.html [ Skip ]
 
 # Spec was changed so BGLs should eagerly apply per-pipeline limits. Tests need fixing, then Dawn
 # needs to pass them. https://github.com/gpuweb/cts/issues/230
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/SO-XO-SO-redirect-chain-tao.https.html b/third_party/blink/web_tests/external/wpt/resource-timing/SO-XO-SO-redirect-chain-tao.https.html
new file mode 100644
index 0000000..e656891
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/resource-timing/SO-XO-SO-redirect-chain-tao.https.html
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta charset="utf-8" />
+<title>This test validates resource timing information for a same-origin=>cross-origin=>same-origin redirect chain without Timing-Allow-Origin.</title>
+<link rel="help" href="https://www.w3.org/TR/resource-timing-2/#sec-cross-origin-resources"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/resource-loaders.js"></script>
+<script src="resources/entry-invariants.js"></script>
+</head>
+<body>
+<script>
+const {HTTPS_REMOTE_ORIGIN} = get_host_info();
+const SAME_ORIGIN = location.origin;
+// Same-Origin => Cross-Origin => Same-Origin => Same-Origin redirect chain
+let destUrl = `${SAME_ORIGIN}/resource-timing/resources/multi_redirect.py?`;
+destUrl += `page_origin=${SAME_ORIGIN}`;
+destUrl += `&cross_origin=${HTTPS_REMOTE_ORIGIN}`;
+destUrl += `&final_resource=/resource-timing/resources/blank_page_green.htm`;
+
+// No TAO in the redirect chain
+attribute_test(
+  load.iframe, destUrl,
+  invariants.assert_cross_origin_redirected_resource,
+  "Verify that cross origin resources' timings are not exposed when " +
+  "same-origin=>cross-origin=>same-origin redirects have no " +
+  "`Timing-Allow-Origin:` headers.");
+
+// Partial TAO in the redirect chain
+destUrl += '&tao_steps=2';
+attribute_test(
+  load.iframe, destUrl,
+  invariants.assert_cross_origin_redirected_resource,
+  "Verify that cross origin resources' timings are not exposed when " +
+  "same-origin=>cross-origin=>same-origin redirects have " +
+  "`Timing-Allow-Origin:` headers only on some of the responses.");
+
+// Cross-origin => Cross-Origin => Same-Origin => Same-Origin redirect chain.
+destUrl = `${HTTPS_REMOTE_ORIGIN}/resource-timing/resources/multi_redirect.py?`;
+destUrl += `page_origin=${SAME_ORIGIN}`;
+destUrl += `&cross_origin=${HTTPS_REMOTE_ORIGIN}`;
+destUrl += `&final_resource=/resource-timing/resources/blue-with-tao.png`;
+destUrl += `&tao_steps=3`;
+
+// Full redirect chain with `TAO: *`.
+attribute_test(
+  load.image, destUrl,
+  invariants.assert_tao_enabled_cross_origin_redirected_resource,
+  "Verify that cross origin resources' timings are exposed when cross-origin " +
+  "redirects have `Timing-Allow-Origin: *` headers");
+
+// TAO with a specific origin
+destUrl += `&tao_value=${SAME_ORIGIN}`;
+attribute_test(
+  load.image, destUrl,
+  invariants.assert_cross_origin_redirected_resource,
+  "Verify that cross origin resources' timings are not exposed when " +
+  "same-origin=>cross-origin=>same-origin redirects have " +
+  "`Timing-Allow-Origin:` headers with a specific origin.");
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/crossorigin-sandwich-no-TAO.sub.html b/third_party/blink/web_tests/external/wpt/resource-timing/crossorigin-sandwich-no-TAO.sub.html
deleted file mode 100644
index 0c1d096..0000000
--- a/third_party/blink/web_tests/external/wpt/resource-timing/crossorigin-sandwich-no-TAO.sub.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset="utf-8" />
-<title>This test validates resource timing information for a same-origin=>cross-origin=>same-origin redirect chain without Timing-Allow-Origin.</title>
-<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/common/get-host-info.sub.js"></script>
-<script src="resources/webperftestharness.js"></script>
-<script src="resources/webperftestharnessextension.js"></script>
-
-<script>
-    setup({explicit_done: true});
-    test_namespace('getEntriesByName');
-    const pageOrigin = get_host_info()['ORIGIN'];
-    const crossOrigin = get_host_info()['REMOTE_ORIGIN'];
-
-    function onload_test()
-    {
-        const entries = performance.getEntriesByName(document.getElementById('frameContext').src, 'resource');
-        test_equals(entries.length, 1, 'There should be one entry.');
-        const entry = entries[0];
-
-        test_tao_fail(entry);
-        done();
-    }
-</script>
-
-</head>
-<body>
-<iframe id="frameContext" src="" style="width: 250px; height: 250px;"></iframe>
-<script>
-    let destUrl = pageOrigin + '/resource-timing/resources/multi_redirect.py?';
-    destUrl += 'page_origin=' + pageOrigin;
-    destUrl += '&cross_origin=' + crossOrigin;
-    destUrl += '&final_resource=' + "/resource-timing/resources/blank-with-tao.html";
-    const frameContext = document.getElementById('frameContext');
-    frameContext.onload = onload_test;
-    frameContext.src = destUrl;
-</script>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/crossorigin-sandwich-partial-TAO.sub.html b/third_party/blink/web_tests/external/wpt/resource-timing/crossorigin-sandwich-partial-TAO.sub.html
deleted file mode 100644
index 2f44b78..0000000
--- a/third_party/blink/web_tests/external/wpt/resource-timing/crossorigin-sandwich-partial-TAO.sub.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset="utf-8" />
-<title>This test validates resource timing information for a same-origin=>cross-origin=>same-origin redirect chain with Timing-Allow-Origin.</title>
-<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/common/get-host-info.sub.js"></script>
-<script src="resources/webperftestharness.js"></script>
-<script src="resources/webperftestharnessextension.js"></script>
-
-<script>
-    setup({explicit_done: true});
-    test_namespace('getEntriesByName');
-    const pageOrigin = get_host_info()['ORIGIN'];
-    const crossOrigin = get_host_info()['REMOTE_ORIGIN'];
-
-    function onload_test()
-    {
-        const entries = performance.getEntriesByName(document.getElementById('frameContext').src, 'resource');
-        test_equals(entries.length, 1, 'There should be one entry.');
-        const entry = entries[0];
-
-        test_tao_fail(entry);
-        done();
-    }
-</script>
-
-</head>
-<body>
-<iframe id="frameContext" src="" style="width: 250px; height: 250px;"></iframe>
-<script>
-    let destUrl = pageOrigin + '/resource-timing/resources/multi_redirect.py?';
-    destUrl += 'page_origin=' + pageOrigin;
-    destUrl += '&cross_origin=' + crossOrigin;
-    destUrl += '&final_resource=' + "/resource-timing/resources/blank-with-tao.html";
-    destUrl += '&tao_steps=2';
-    const frameContext = document.getElementById('frameContext');
-    frameContext.onload = onload_test;
-    frameContext.src = destUrl;
-</script>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/tao-origin-SO-XO-SO-redirect-chain.https.html b/third_party/blink/web_tests/external/wpt/resource-timing/tao-origin-SO-XO-SO-redirect-chain.https.html
deleted file mode 100644
index 5491298a..0000000
--- a/third_party/blink/web_tests/external/wpt/resource-timing/tao-origin-SO-XO-SO-redirect-chain.https.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset="utf-8" />
-<title>This test validates resource timing information for a same-origin=>cross-origin=>same-origin redirect chain with Timing-Allow-Origin.</title>
-<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/common/get-host-info.sub.js"></script>
-<script src="resources/resource-loaders.js"></script>
-<script src="resources/entry-invariants.js"></script>
-</head>
-<body>
-<script>
-const {HTTPS_REMOTE_ORIGIN} = get_host_info();
-const SAME_ORIGIN = location.origin;
-let destUrl = `${HTTPS_REMOTE_ORIGIN}/resource-timing/resources/multi_redirect.py?`;
-destUrl += `page_origin=${SAME_ORIGIN}`;
-destUrl += `&cross_origin=${HTTPS_REMOTE_ORIGIN}`;
-destUrl += `&final_resource=/resource-timing/resources/blue-with-tao.png`;
-destUrl += '&tao_steps=3';
-destUrl += '&tao_value=' + SAME_ORIGIN;
-
-attribute_test(
-  load.image, destUrl,
-  invariants.assert_cross_origin_redirected_resource,
-  "Verify that cross origin resources' timings are not exposed when " +
-  "same-origin=>cross-origin=>same-origin redirects have " +
-  "`Timing-Allow-Origin:` headers with a specific origin.");
-</script>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/tao-star-SO-XO-SO-redirect-chain.https.html b/third_party/blink/web_tests/external/wpt/resource-timing/tao-star-SO-XO-SO-redirect-chain.https.html
deleted file mode 100644
index 6e1b630..0000000
--- a/third_party/blink/web_tests/external/wpt/resource-timing/tao-star-SO-XO-SO-redirect-chain.https.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset="utf-8" />
-<title>This test validates resource timing information for a same-origin=>cross-origin=>same-origin redirect chain with Timing-Allow-Origin.</title>
-<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/common/get-host-info.sub.js"></script>
-<script src="resources/resource-loaders.js"></script>
-<script src="resources/entry-invariants.js"></script>
-</head>
-<body>
-<script>
-const {HTTPS_REMOTE_ORIGIN} = get_host_info();
-const SAME_ORIGIN = document.location.host;
-let destUrl = `${HTTPS_REMOTE_ORIGIN}/resource-timing/resources/multi_redirect.py?`;
-destUrl += `page_origin=http://${SAME_ORIGIN}`;
-destUrl += `&cross_origin=${HTTPS_REMOTE_ORIGIN}`;
-destUrl += `&final_resource=/resource-timing/resources/blue-with-tao.png`;
-destUrl += '&tao_steps=3';
-
-attribute_test(
-  load.image, destUrl,
-  invariants.assert_tao_enabled_cross_origin_redirected_resource,
-  "Verify that cross origin resources' timings are exposed when cross-origin " +
-  "redirects have `Timing-Allow-Origin: *` headers");
-</script>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/http/tests/devtools/network/har-content.js b/third_party/blink/web_tests/http/tests/devtools/network/har-content.js
index f6f89a9..a808415 100644
--- a/third_party/blink/web_tests/http/tests/devtools/network/har-content.js
+++ b/third_party/blink/web_tests/http/tests/devtools/network/har-content.js
@@ -18,7 +18,8 @@
   async function makeHAR() {
     var stream = new TestRunner.StringOutputStream(onSaved);
     var progress = new Common.Progress();
-    await Network.HARWriter.write(stream, NetworkTestRunner.networkRequests(), progress);
+    await NetworkTestRunner.writeHARLog(
+        stream, NetworkTestRunner.networkRequests(), progress);
     progress.done();
     stream.close();
   }
diff --git a/third_party/blink/web_tests/http/tests/devtools/network/har-post.js b/third_party/blink/web_tests/http/tests/devtools/network/har-post.js
index 891b05f..8e27a2c 100644
--- a/third_party/blink/web_tests/http/tests/devtools/network/har-post.js
+++ b/third_party/blink/web_tests/http/tests/devtools/network/har-post.js
@@ -33,7 +33,7 @@
     const stream = new TestRunner.StringOutputStream(resolve);
     const progress = new Common.Progress();
     const networkRequests = NetworkTestRunner.networkRequests();
-    await Network.HARWriter.write(stream, networkRequests, progress);
+    await NetworkTestRunner.writeHARLog(stream, networkRequests, progress);
     progress.done();
     stream.close();
   });
diff --git a/third_party/blink/web_tests/http/tests/devtools/websocket/har-websocket.js b/third_party/blink/web_tests/http/tests/devtools/websocket/har-websocket.js
index b360e2d..7e97b51b 100644
--- a/third_party/blink/web_tests/http/tests/devtools/websocket/har-websocket.js
+++ b/third_party/blink/web_tests/http/tests/devtools/websocket/har-websocket.js
@@ -35,7 +35,7 @@
   const harString = await new Promise(async resolve => {
     const stream = new TestRunner.StringOutputStream(resolve);
     const progress = new Common.Progress();
-    await Network.HARWriter.write(
+    await NetworkTestRunner.writeHARLog(
         stream, NetworkTestRunner.networkRequests(), progress);
     progress.done();
     stream.close();
diff --git a/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt b/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
index 332ac514..534f606 100644
--- a/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
+++ b/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
@@ -403,6 +403,11 @@
     method constructor
     method contains
     method item
+interface DatagramDuplexStream
+    attribute @@toStringTag
+    getter readable
+    getter writable
+    method constructor
 interface DecompressionStream
     attribute @@toStringTag
     getter readable
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt
index 71c3fab32..444e1bc 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt
@@ -382,6 +382,11 @@
 [Worker]     method constructor
 [Worker]     method contains
 [Worker]     method item
+[Worker] interface DatagramDuplexStream
+[Worker]     attribute @@toStringTag
+[Worker]     getter readable
+[Worker]     getter writable
+[Worker]     method constructor
 [Worker] interface DecompressionStream
 [Worker]     attribute @@toStringTag
 [Worker]     getter readable
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
index 12b3048..c2c7584 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -1638,6 +1638,11 @@
     method clear
     method constructor
     method remove
+interface DatagramDuplexStream
+    attribute @@toStringTag
+    getter readable
+    getter writable
+    method constructor
 interface DecompressionStream
     attribute @@toStringTag
     getter readable
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt
index 0d8572e..dd179638 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt
@@ -353,6 +353,11 @@
 [Worker]     method constructor
 [Worker]     method contains
 [Worker]     method item
+[Worker] interface DatagramDuplexStream
+[Worker]     attribute @@toStringTag
+[Worker]     getter readable
+[Worker]     getter writable
+[Worker]     method constructor
 [Worker] interface DecompressionStream
 [Worker]     attribute @@toStringTag
 [Worker]     getter readable
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/dedicated-worker.https.html b/third_party/blink/web_tests/wpt_internal/prerender/resources/dedicated-worker.https.html
new file mode 100644
index 0000000..22e31d79
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/prerender/resources/dedicated-worker.https.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="utils.js"></script>
+<script src="deferred-promise-utils.js"></script>
+<script>
+
+const params = new URLSearchParams(location.search);
+
+// The main test page (restriction-dedicated-worker.https.html) loads the
+// initiator page, then the initiator page will prerender itself with the
+// `prerendering` parameter.
+const isPrerendering = params.has('prerendering');
+
+if (!isPrerendering) {
+  loadInitiatorPage();
+} else {
+  const prerenderEventCollector = new PrerenderEventCollector();
+  const promise = new Promise(async (resolve, reject) => {
+    try {
+      const worker = new Worker('dedicated-worker.js');
+      worker.addEventListener('message', _ => resolve());
+      worker.addEventListener('error', _ => reject('Error on worker'));
+    } catch (e) {
+      reject(`Worker construction error: ${e.toString()}`);
+    }
+  });
+  prerenderEventCollector.start(promise, 'worker construction');
+}
+
+</script>
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/dedicated-worker.js b/third_party/blink/web_tests/wpt_internal/prerender/resources/dedicated-worker.js
new file mode 100644
index 0000000..00d716d
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/prerender/resources/dedicated-worker.js
@@ -0,0 +1 @@
+postMessage('loaded');
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/restriction-dedicated-worker.https.html b/third_party/blink/web_tests/wpt_internal/prerender/restriction-dedicated-worker.https.html
new file mode 100644
index 0000000..f2710b7
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/prerender/restriction-dedicated-worker.https.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<!--
+This file cannot be upstreamed to WPT until:
+* startPrerendering() usage is replaced with a WebDriver API
+-->
+<title>Access to the Dedicated Worker API is deferred</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+<body>
+<script>
+
+promise_test(async t => {
+  const bc = new BroadcastChannel('test-channel');
+  t.add_cleanup(_ => bc.close());
+
+  const gotMessage = new Promise(resolve => {
+    bc.addEventListener('message', e => {
+      resolve(e.data);
+    }, {
+      once: true
+    });
+  });
+  const url = `resources/dedicated-worker.https.html`;
+  window.open(url, '_blank', 'noopener');
+
+  const result = await gotMessage;
+  const expected = [
+    {
+      event: 'started waiting worker construction',
+      prerendering: true
+    },
+    {
+      event: 'prerendering change',
+      prerendering: false
+    },
+    {
+      event: 'finished waiting worker construction',
+      prerendering: false
+    },
+  ];
+  assert_equals(result.length, expected.length);
+  for (let i = 0; i < result.length; i++) {
+    assert_equals(result[i].event, expected[i].event, `event[${i}]`);
+    assert_equals(result[i].prerendering, expected[i].prerendering,
+      `prerendering[${i}]`);
+  }
+}, `The access to the Dedicated Worker API should be deferred until the
+    prerendered page is activated`);
+
+</script>
+</body>
diff --git a/third_party/blink/web_tests/wpt_internal/webgpu/web_platform/reftests/canvas_clear.html b/third_party/blink/web_tests/wpt_internal/webgpu/web_platform/reftests/canvas_clear.html
deleted file mode 100644
index 83a7535b..0000000
--- a/third_party/blink/web_tests/wpt_internal/webgpu/web_platform/reftests/canvas_clear.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html class="reftest-wait">
-  <base href="/gen/third_party/webgpu-cts/src/webgpu/web_platform/reftests/" />
-  <title>WebGPU canvas_clear</title>
-  <meta charset="utf-8" />
-  <link rel="help" href="https://gpuweb.github.io/gpuweb/" />
-  <meta name="assert" content="WebGPU cleared canvas should be presented correctly" />
-  <link rel="match" href="./ref/canvas_clear-ref.html" />
-  <canvas id="gpucanvas" width="10" height="10"></canvas>
-  <script src="/common/reftest-wait.js"></script>
-  <script type="module" src="canvas_clear.js"></script>
-</html>
diff --git a/third_party/blink/web_tests/wpt_internal/webgpu/web_platform/reftests/canvas_complex_bgra8unorm.html b/third_party/blink/web_tests/wpt_internal/webgpu/web_platform/reftests/canvas_complex_bgra8unorm.html
deleted file mode 100644
index 0d3b163..0000000
--- a/third_party/blink/web_tests/wpt_internal/webgpu/web_platform/reftests/canvas_complex_bgra8unorm.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<html class="reftest-wait">
-  <base href="/gen/third_party/webgpu-cts/src/webgpu/web_platform/reftests/" />
-  <title>WebGPU canvas_complex_bgra8unorm</title>
-  <meta charset="utf-8" />
-  <link rel="help" href="https://gpuweb.github.io/gpuweb/" />
-  <meta
-    name="assert"
-    content="WebGPU canvas should have correct orientation, components, scaling, filtering, color space"
-  />
-  <link rel="match" href="./ref/canvas_complex-ref.html" />
-
-  <canvas id="cvs" width="2" height="2" style="width: 20px; height: 20px;"></canvas>
-  <script src="/common/reftest-wait.js"></script>
-  <script type="module">
-    import { run } from './canvas_complex.js';
-    run('bgra8unorm');
-    // TODO: make a copy of this test for rgba16float
-  </script>
-</html>
diff --git a/third_party/blink/web_tests/wpt_internal/webgpu/web_platform/reftests/ref/canvas_clear-ref.html b/third_party/blink/web_tests/wpt_internal/webgpu/web_platform/reftests/ref/canvas_clear-ref.html
deleted file mode 100644
index a3b8706..0000000
--- a/third_party/blink/web_tests/wpt_internal/webgpu/web_platform/reftests/ref/canvas_clear-ref.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
-  <base href="/gen/third_party/webgpu-cts/src/webgpu/web_platform/reftests/ref/" />
-  <title>WebGPU canvas_clear (ref)</title>
-  <meta charset="utf-8" />
-  <link rel="help" href="https://gpuweb.github.io/gpuweb/" />
-  <canvas id="myCanvas" width="10" height="10"></canvas>
-  <script>
-    var c = document.getElementById('myCanvas');
-    var ctx = c.getContext('2d');
-    ctx.fillStyle = '#00FF00';
-    ctx.fillRect(0, 0, c.width, c.height);
-  </script>
-</html>
diff --git a/third_party/blink/web_tests/wpt_internal/webgpu/web_platform/reftests/ref/canvas_complex-ref.html b/third_party/blink/web_tests/wpt_internal/webgpu/web_platform/reftests/ref/canvas_complex-ref.html
deleted file mode 100644
index 15b1687..0000000
--- a/third_party/blink/web_tests/wpt_internal/webgpu/web_platform/reftests/ref/canvas_complex-ref.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<html>
-  <base href="/gen/third_party/webgpu-cts/src/webgpu/web_platform/reftests/ref/" />
-  <title>WebGPU canvas_complex (ref)</title>
-  <meta charset="utf-8" />
-  <link rel="help" href="https://gpuweb.github.io/gpuweb/" />
-  <canvas id="cvs" width="2" height="2" style="width: 20px; height: 20px;"></canvas>
-  <script>
-    const ctx = cvs.getContext('2d');
-    ctx.fillStyle = '#7F0000';
-    ctx.fillRect(0, 0, 1, 1);
-    ctx.fillStyle = '#007F00';
-    ctx.fillRect(1, 0, 1, 1);
-    ctx.fillStyle = '#00007F';
-    ctx.fillRect(0, 1, 1, 1);
-    ctx.fillStyle = '#7F7F00';
-    ctx.fillRect(1, 1, 1, 1);
-  </script>
-</html>
diff --git a/third_party/webgpu-cts/scripts/regenerate_internal_cts_html.py b/third_party/webgpu-cts/scripts/regenerate_internal_cts_html.py
index d3309b253..cb6778c 100755
--- a/third_party/webgpu-cts/scripts/regenerate_internal_cts_html.py
+++ b/third_party/webgpu-cts/scripts/regenerate_internal_cts_html.py
@@ -5,7 +5,6 @@
 
 import argparse
 import ast
-import errno
 import tempfile
 import os
 import shutil
@@ -18,23 +17,10 @@
 from compile_src import compile_src_for_node
 
 
-def check_or_write_file(filepath, content, check):
-    if check:
-        with open(filepath, 'rb') as dst:
-            if dst.read() != content:
-                raise RuntimeError(
-                    '%s is out of date. Please re-run //third_party/webgpu-cts/scripts/run_regenerate_internal_cts_html.py\n'
-                    % filepath)
-    else:
-        with open(filepath, 'wb') as dst:
-            dst.write(content)
-
-
-def generate_internal_cts_html(check):
+def generate_internal_cts_html():
     split_list_fd, split_list_fname = tempfile.mkstemp()
     cts_html_fd, cts_html_fname = tempfile.mkstemp()
     js_out_dir = tempfile.mkdtemp()
-    contents = None
     try:
         print('WebGPU CTS: Extracting expectation names...')
         old_sys_path = sys.path
@@ -76,7 +62,7 @@
         finally:
             sys.path = old_sys_path
 
-        print('WebGPU CTS: Generating cts.html...')
+        print('WebGPU CTS: Generating cts.html contents...')
         cmd = [
             os.path.join(js_out_dir,
                          'common/tools/gen_wpt_cts_html.js'), cts_html_fname,
@@ -89,76 +75,13 @@
         print(RunNode(cmd))
 
         with open(cts_html_fname, 'rb') as f:
-            contents = f.read()
+            return f.read()
 
     finally:
         os.close(split_list_fd)
         os.close(cts_html_fd)
         shutil.rmtree(js_out_dir)
 
-    out_cts_html = os.path.join(third_party_dir, 'blink', 'web_tests',
-                                'wpt_internal', 'webgpu', 'cts.html')
-
-    if not contents:
-        raise RuntimeError('Failed to generate %s' % out_cts_html)
-
-    check_or_write_file(out_cts_html, contents, check=check)
-
-
-def generate_reftest_html(check):
-    # Update this to add/remove subdirectories to check.
-    sub_dirs = ['web_platform']
-
-    for sub_dir in sub_dirs:
-        html_search_dir = os.path.join(third_party_dir, 'webgpu-cts', 'src',
-                                       'src', 'webgpu', sub_dir)
-        wpt_internal_dir = os.path.join(third_party_dir, 'blink', 'web_tests',
-                                        'wpt_internal', 'webgpu', sub_dir)
-
-        if not check:
-            shutil.rmtree(wpt_internal_dir)
-        print('WebGPU CTS: Generating HTML tests from %s...' % html_search_dir)
-        for root, dirnames, filenames in os.walk(html_search_dir):
-            for filename in filenames:
-                if filename.endswith('.html'):
-                    filepath = os.path.join(root, filename)
-                    relative_dir = os.path.relpath(os.path.dirname(filepath),
-                                                   html_search_dir)
-                    dst_dir = os.path.join(wpt_internal_dir, relative_dir)
-                    gen_base_dir = os.path.join(
-                        '/gen/third_party/webgpu-cts/src/webgpu', sub_dir,
-                        relative_dir)
-                    gen_base_dir = gen_base_dir.replace('\\', '/') + '/'
-
-                    try:
-                        os.makedirs(dst_dir)
-                    except OSError as e:
-                        if e.errno == errno.EEXIST and os.path.isdir(dst_dir):
-                            pass
-                        else:
-                            raise
-
-                    with open(filepath, 'rb') as src:
-                        src_content = src.read()
-
-                    # Find the starting html tag
-                    i = src_content.find('<html')
-                    assert i != -1
-
-                    # Then find the end of the starting html tag
-                    i = src_content.find('>', i)
-                    assert i != -1
-
-                    # Bump the index just past the starting <html> tag
-                    i = i + 1
-
-                    base_tag = b'\n  <base href="%s" />' % gen_base_dir
-                    dst_content = src_content[:i] + base_tag + src_content[i:]
-
-                    check_or_write_file(os.path.join(dst_dir, filename),
-                                        dst_content,
-                                        check=check)
-
 
 if __name__ == '__main__':
     parser = argparse.ArgumentParser()
@@ -168,8 +91,22 @@
     parser.add_argument('--stamp', help='Stamp file to write after success.')
     args = parser.parse_args()
 
-    generate_internal_cts_html(check=args.check)
-    generate_reftest_html(check=args.check)
+    out_cts_html = os.path.join(third_party_dir, 'blink', 'web_tests',
+                                'wpt_internal', 'webgpu', 'cts.html')
+    contents = generate_internal_cts_html()
+    if not contents:
+        raise RuntimeError('Failed to generate %s' % out_cts_html)
+
+    if args.check:
+        with open(out_cts_html, 'rb') as f:
+            if f.read() != contents:
+                print(contents)
+                raise RuntimeError(
+                    '%s is out of date. Please re-run //third_party/webgpu-cts/scripts/regenerate_internal_cts_html.py\n'
+                    % out_cts_html)
+    else:
+        with open(out_cts_html, 'wb') as f:
+            f.write(contents)
 
     if args.stamp:
         with open(args.stamp, 'w') as f:
diff --git a/third_party/zxcvbn-cpp/BUILD.gn b/third_party/zxcvbn-cpp/BUILD.gn
index 65a04dd..eae90999 100644
--- a/third_party/zxcvbn-cpp/BUILD.gn
+++ b/third_party/zxcvbn-cpp/BUILD.gn
@@ -14,11 +14,8 @@
     "native-src/zxcvbn/adjacency_graphs.cpp",
     "native-src/zxcvbn/adjacency_graphs.hpp",
     "native-src/zxcvbn/common.hpp",
-    "native-src/zxcvbn/feedback.cpp",
-    "native-src/zxcvbn/feedback.hpp",
     "native-src/zxcvbn/frequency_lists.cpp",
     "native-src/zxcvbn/frequency_lists.hpp",
-    "native-src/zxcvbn/frequency_lists_common.hpp",
     "native-src/zxcvbn/matching.cpp",
     "native-src/zxcvbn/matching.hpp",
     "native-src/zxcvbn/optional.hpp",
diff --git a/third_party/zxcvbn-cpp/native-src/zxcvbn/common.hpp b/third_party/zxcvbn-cpp/native-src/zxcvbn/common.hpp
index 31e2f7f..1f66367 100644
--- a/third_party/zxcvbn-cpp/native-src/zxcvbn/common.hpp
+++ b/third_party/zxcvbn-cpp/native-src/zxcvbn/common.hpp
@@ -66,7 +66,6 @@
 struct DictionaryMatch {
   static constexpr auto pattern = MatchPattern::DICTIONARY;
 
-  DictionaryTag dictionary_tag;
   std::string matched_word;
   rank_t rank;
   bool l33t;
diff --git a/third_party/zxcvbn-cpp/native-src/zxcvbn/feedback.cpp b/third_party/zxcvbn-cpp/native-src/zxcvbn/feedback.cpp
deleted file mode 100644
index 08198d740..0000000
--- a/third_party/zxcvbn-cpp/native-src/zxcvbn/feedback.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-#include <zxcvbn/feedback.hpp>
-
-#include <zxcvbn/frequency_lists.hpp>
-#include <zxcvbn/optional.hpp>
-#include <zxcvbn/scoring.hpp>
-#include <zxcvbn/util.hpp>
-
-#include <regex>
-
-namespace zxcvbn {
-
-static
-optional::optional<Feedback> get_match_feedback(const Match & match, bool is_sole_match);
-
-static
-Feedback get_dictionary_match_feedback(const Match & match, bool is_sole_match);
-
-Feedback get_feedback(score_t score,
-                      const std::vector<Match> & sequence) {
-  // starting feedback
-  if (!sequence.size()) {
-    return {
-        "",
-        {
-            "Use a few words, avoid common phrases",
-            "No need for symbols, digits, or uppercase letters",
-        },
-    };
-  }
-
-  // no feedback if score is good or great.
-  if (score > 2) return {"", {}};
-
-  // tie feedback to the longest match for longer sequences
-  auto longest_match = sequence.begin();
-  for (auto match = longest_match + 1; match != sequence.end(); ++match) {
-    if (match->token.length() > longest_match->token.length()) {
-      longest_match = match;
-    }
-  }
-
-  auto maybe_feedback = get_match_feedback(*longest_match, sequence.size() == 1);
-  auto extra_feedback = "Add another word or two. Uncommon words are better.";
-  if (maybe_feedback) {
-    auto & feedback = *maybe_feedback;
-
-    feedback.suggestions.insert(maybe_feedback->suggestions.begin(),
-                                extra_feedback);
-
-    return feedback;
-  }
-  else {
-    return {"", {extra_feedback}};
-  }
-}
-
-optional::optional<Feedback> get_match_feedback(const Match & match_, bool is_sole_match) {
-  switch (match_.get_pattern()) {
-  case MatchPattern::DICTIONARY: {
-    return get_dictionary_match_feedback(match_, is_sole_match);
-  }
-
-  case MatchPattern::SPATIAL: {
-    auto & match = match_.get_spatial();
-    auto warning = (match.turns == 1)
-      ? "Straight rows of keys are easy to guess"
-      : "Short keyboard patterns are easy to guess";
-
-    return Feedback{warning, {
-        "Use a longer keyboard pattern with more turns",
-          }};
-  }
-
-  case MatchPattern::REPEAT: {
-    auto warning = (match_.get_repeat().base_token.length() == 1)
-      ? "Repeats like \"aaa\" are easy to guess"
-      : "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"";
-
-    return Feedback{warning, {
-        "Avoid repeated words and characters",
-          }};
-  }
-
-  case MatchPattern::SEQUENCE: {
-    return Feedback{"Sequences like abc or 6543 are easy to guess",
-        {"Avoid sequences"},
-        };
-  }
-
-  case MatchPattern::REGEX: {
-    auto & match = match_.get_regex();
-    if (match.regex_tag == RegexTag::RECENT_YEAR) {
-      return Feedback{"Recent years are easy to guess", {
-          "Avoid recent years",
-          "Avoid years that are associated with you",
-        }};
-    }
-    break;
-  }
-
-  case MatchPattern::DATE: {
-    return Feedback{"Dates are often easy to guess", {
-        "Avoid dates and years that are associated with you",
-      }};
-  }
-  default:
-    break;
-  }
-  return optional::nullopt;
-}
-
-static
-Feedback get_dictionary_match_feedback(const Match & match_, bool is_sole_match) {
-  assert(match_.get_pattern() == MatchPattern::DICTIONARY);
-  auto & match = match_.get_dictionary();
-  auto warning = [&] {
-    if (match.dictionary_tag == DictionaryTag::PASSWORDS) {
-      if (is_sole_match and !match.l33t and !match.reversed) {
-        if (match.rank <= 10) {
-          return "This is a top-10 common password";
-        }
-        else if (match.rank <= 100) {
-          return "This is a top-100 common password";
-        }
-        else {
-          return "This is a very common password";
-        }
-      }
-      else if (match_.guesses_log10 <= 4) {
-        return "This is similar to a commonly used password";
-      }
-    }
-    else if (match.dictionary_tag == DictionaryTag::ENGLISH_WIKIPEDIA) {
-      if (is_sole_match) {
-        return "A word by itself is easy to guess";
-      }
-    }
-    else if (match.dictionary_tag == DictionaryTag::SURNAMES ||
-             match.dictionary_tag == DictionaryTag::MALE_NAMES ||
-             match.dictionary_tag == DictionaryTag::FEMALE_NAMES) {
-      if (is_sole_match) {
-        return "Names and surnames by themselves are easy to guess";
-      }
-      else {
-        return "Common names and surnames are easy to guess";
-      }
-    }
-
-    return "";
-  }();
-
-  std::vector<std::string> suggestions;
-  auto & word = match_.token;
-  if (std::regex_search(word, START_UPPER())) {
-    suggestions.push_back("Capitalization doesn't help very much");
-  } else if (std::regex_search(word, ALL_UPPER()) and
-             // XXX: UTF-8
-             util::ascii_lower(word) == word) {
-    suggestions.push_back("All-uppercase is almost as easy to guess as all-lowercase");
-  }
-
-  if (match.reversed and match_.token.length() >= 4) {
-    suggestions.push_back("Reversed words aren't much harder to guess");
-  }
-  if (match.l33t) {
-    suggestions.push_back("Predictable substitutions like '@' instead of 'a' don't help very much");
-  }
-
-  return {warning, suggestions};
-}
-
-}
diff --git a/third_party/zxcvbn-cpp/native-src/zxcvbn/feedback.hpp b/third_party/zxcvbn-cpp/native-src/zxcvbn/feedback.hpp
deleted file mode 100644
index 6f6b62b..0000000
--- a/third_party/zxcvbn-cpp/native-src/zxcvbn/feedback.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef __ZXCVBN__FEEDBACK_HPP
-#define __ZXCVBN__FEEDBACK_HPP
-
-#include <zxcvbn/common.hpp>
-
-#include <string>
-#include <vector>
-
-namespace zxcvbn {
-
-struct Feedback {
-  std::string warning;
-  std::vector<std::string> suggestions;
-};
-
-Feedback get_feedback(score_t score, const std::vector<Match> & sequence);
-
-}
-
-#endif
diff --git a/third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists.cpp b/third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists.cpp
index 4996f79..332673d 100644
--- a/third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists.cpp
+++ b/third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists.cpp
@@ -1,39 +1,205 @@
 #include <zxcvbn/frequency_lists.hpp>
 
+#include <memory>
 #include <utility>
 
-#include "base/containers/flat_map.h"
+#include "base/check.h"
+#include "base/logging.h"
 #include "base/no_destructor.h"
+#include "base/notreached.h"
 
 namespace zxcvbn {
 
 namespace {
 
-base::flat_map<DictionaryTag, RankedDict>& ranked_dicts() {
-  static base::NoDestructor<base::flat_map<DictionaryTag, RankedDict>>
-      ranked_dicts;
-  return *ranked_dicts;
-}
+// A big-endian 16-bit value, consisting of a 15-bit number and a marker bit in
+// the most significant position (in the first byte).
+// No alignment requirements.
+// This is used to store a "rank", which is the position at which a word
+// occurred in a wordlist.
+class MarkedBigEndianU15 {
+ public:
+  static constexpr size_t MAX_VALUE = (1 << 15) - 1;
+  static constexpr uint8_t MARKER_BIT = 0x80;
+  uint16_t get() const {
+    return (encoded_value[0] & ~MARKER_BIT) * 256 + encoded_value[1];
+  }
+  static void AppendToVector(uint16_t value, std::vector<char>& vec) {
+    CHECK(value <= MAX_VALUE);
+    vec.push_back((value >> 8) | MARKER_BIT);
+    vec.push_back(value & 0xff);
+  }
+  // Check whether the given byte has the high bit set.
+  // This always returns true for the first byte of a MarkedBigEndianU15, but
+  // may also be false-positive for the second byte.
+  // To reliably determine whether a given byte really is the start of a
+  // MarkedBigEndianU15, you need to also check the preceding byte if this
+  // returns true.
+  static bool IsPossibleMarkerByte(uint8_t c) { return (c & MARKER_BIT) != 0; }
 
-}  // namespace
+ private:
+  uint8_t encoded_value[2];
+};
+static_assert(
+    sizeof(MarkedBigEndianU15) == 2,
+    "object layout must fit with assumptions in the rest of this file");
 
-void SetRankedDicts(base::flat_map<DictionaryTag, RankedDict> dicts) {
-  ranked_dicts() = std::move(dicts);
-}
+struct MergedEntry {
+  size_t rank;
+  base::StringPiece value;
+};
 
-RankedDicts convert_to_ranked_dicts(
-    base::flat_map<DictionaryTag, RankedDict>& ranked_dicts) {
-  RankedDicts build;
+// A reference to an entry inside a dictionary.
+// The entry consists of a MarkedBigEndianU15 representing the word's rank
+// (the position at which the word appears in the original wordlist) and an
+// inline string (ASCII, terminated with a byte that has the MARKER_BIT set)
+// that stores the actual word.
+class RankedDictEntryRef {
+ public:
+  explicit RankedDictEntryRef(const std::vector<char>& vec, size_t offset) {
+    CHECK_LT(offset + sizeof(MarkedBigEndianU15), vec.size());
+    const char* raw_rank = vec.data() + offset;
+    rank_ = reinterpret_cast<const MarkedBigEndianU15*>(raw_rank)->get();
 
-  for (const auto & item : ranked_dicts) {
-    build.emplace(item.first, &item.second);
+    size_t value_start = offset + sizeof(MarkedBigEndianU15);
+    size_t value_end = value_start;
+    while (true) {
+      CHECK_LT(value_end, vec.size());
+      if (MarkedBigEndianU15::IsPossibleMarkerByte(vec[value_end]))
+        break;
+      value_end++;
+    }
+    value_ =
+        base::StringPiece(vec.data() + value_start, value_end - value_start);
+  }
+  RankedDictEntryRef(RankedDictEntryRef&) = delete;
+  RankedDictEntryRef& operator=(const RankedDictEntryRef&) = delete;
+
+  uint16_t rank() const { return rank_; }
+  base::StringPiece value() const { return value_; }
+
+  static void AppendToVector(MergedEntry entry, std::vector<char>& vec) {
+    if (entry.rank > MarkedBigEndianU15::MAX_VALUE) {
+      LOG(ERROR) << "MarkedBigEndianU15 clamping";
+      entry.rank = MarkedBigEndianU15::MAX_VALUE;
+    }
+    MarkedBigEndianU15::AppendToVector(entry.rank, vec);
+    vec.insert(vec.end(), entry.value.begin(), entry.value.end());
   }
 
-  return build;
+ private:
+  size_t rank_;
+  base::StringPiece value_;
+};
+}  // namespace
+
+RankedDicts::RankedDicts(
+    const std::vector<std::vector<base::StringPiece>>& ordered_dicts) {
+  std::vector<MergedEntry> merged_dicts;
+  for (const std::vector<base::StringPiece>& strings : ordered_dicts) {
+    size_t rank = 1;
+    for (const base::StringPiece& s : strings) {
+      bool clean_string = true;
+      for (char c : s) {
+        if (MarkedBigEndianU15::IsPossibleMarkerByte(c)) {
+          NOTREACHED() << "RankedDicts bad character "
+                       << static_cast<unsigned char>(c);
+          clean_string = false;
+        }
+      }
+      if (clean_string) {
+        merged_dicts.push_back({rank++, s});
+      }
+    }
+  }
+  std::sort(merged_dicts.begin(), merged_dicts.end(),
+            [](MergedEntry& a, MergedEntry& b) { return a.value < b.value; });
+
+  if (merged_dicts.size() == 0)
+    return;
+
+  // first pass: calculate required total size
+  size_t dict_size = sizeof(MarkedBigEndianU15) * merged_dicts.size();
+  for (MergedEntry& entry : merged_dicts)
+    dict_size += entry.value.size();
+
+  // 1 byte at the end for trailing marker byte (for finding last string size)
+  data_.reserve(dict_size + 1);
+
+  // second pass: place elements in allocated array
+  for (MergedEntry& entry : merged_dicts)
+    RankedDictEntryRef::AppendToVector(entry, data_);
+  CHECK_EQ(data_.size(), dict_size);
+  data_.push_back(MarkedBigEndianU15::MARKER_BIT);
 }
 
-RankedDicts default_ranked_dicts() {
-  return convert_to_ranked_dicts(ranked_dicts());
+// Performs a binary search over an array of variable-size elements.
+// To find an element in the middle between two others, we first locate the
+// *byte* in the middle, then seek forward until we hit a marker byte that
+// will only appear at the start of an allocation.
+base::Optional<rank_t> RankedDicts::Find(base::StringPiece needle) const {
+  // special case for empty dictionary
+  if (data_.size() == 0)
+    return base::nullopt;
+  CHECK_GE(data_.size(), 3UL);  // 2 bytes header, 1 byte trailing marker
+
+  // Create a range whose start and end point to marker bytes.
+  size_t range_start = 0;
+  size_t range_last = data_.size() - 2;
+  CHECK(IsRealMarker(0));
+  while (!IsRealMarker(range_last))
+    range_last--;
+
+  while (true) {
+    size_t midpoint = range_start + (range_last - range_start) / 2;
+    // Find a marker byte from the midpoint onwards. (There must be one, since
+    // there is one at range_last.)
+    size_t adjusted_midpoint = midpoint;
+    while (!IsRealMarker(adjusted_midpoint))
+      adjusted_midpoint++;
+
+    // Perform the actual comparison.
+    RankedDictEntryRef mid_entry(data_, adjusted_midpoint);
+    base::StringPiece mid_value = mid_entry.value();
+    int cmp_result = mid_value.compare(needle);
+    if (cmp_result == 0)
+      return mid_entry.rank();
+    if (cmp_result < 0) {
+      if (adjusted_midpoint == range_last)
+        return base::nullopt;
+      range_start = adjusted_midpoint + 1;
+      while (!IsRealMarker(range_start))
+        range_start++;
+    } else {
+      if (adjusted_midpoint == range_start)
+        return base::nullopt;
+      range_last = adjusted_midpoint - 1;
+      while (!IsRealMarker(range_last))
+        range_last--;
+    }
+  }
 }
 
+// Determine whether an entry starts at the given offset; in other words,
+// determine whether a MarkedBigEndianU15 starts there.
+bool RankedDicts::IsRealMarker(size_t offset) const {
+  CHECK_LT(offset, data_.size());
+  if (MarkedBigEndianU15::IsPossibleMarkerByte(data_[offset])) {
+    if (offset == 0)
+      return true;
+    if (!MarkedBigEndianU15::IsPossibleMarkerByte(data_[offset - 1]))
+      return true;
+  }
+  return false;
 }
+
+void SetRankedDicts(RankedDicts dicts) {
+  default_ranked_dicts() = std::move(dicts);
+}
+
+RankedDicts& default_ranked_dicts() {
+  static base::NoDestructor<RankedDicts> default_dicts;
+  return *default_dicts;
+}
+
+}  // namespace zxcvbn
diff --git a/third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists.hpp b/third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists.hpp
index 375748325..2b0f00f 100644
--- a/third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists.hpp
+++ b/third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists.hpp
@@ -1,36 +1,52 @@
 #ifndef __ZXCVBN__FREQUENCY_LISTS_HPP
 #define __ZXCVBN__FREQUENCY_LISTS_HPP
 
-#include <zxcvbn/frequency_lists_common.hpp>
-
 #include <cstdint>
+#include <memory>
+#include <vector>
 
+#include "base/optional.h"
 #include "base/strings/string_piece.h"
-#include "base/containers/flat_map.h"
 
 namespace zxcvbn {
 
-enum class DictionaryTag {
-  ENGLISH_WIKIPEDIA,
-  FEMALE_NAMES,
-  MALE_NAMES,
-  PASSWORDS,
-  SURNAMES,
-  US_TV_AND_FILM,
-  USER_INPUTS
+using rank_t = std::size_t;
+
+// Stores words from a set of dictionaries (originally ordered by word
+// frequency) in a sorted flat array.
+// Lookups run in roughly logarithmic time and, when a match is found, return
+// the position of the word in the original dictionary.
+// This data structure is optimized for memory efficiency over lookup speed.
+// It does not contain any pointers and its format is target-independent, so it
+// could theoretically directly be mapped from disk.
+//
+// Since this data structure sorts words alphabetically, the lookup code could
+// be extended to also answer the question "are there any entries that start
+// with the given prefix", which should permit speeding up dictionary_match().
+// That isn't implemented yet though.
+class RankedDicts {
+ public:
+  explicit RankedDicts(const std::vector<std::vector<base::StringPiece>> &ordered_dicts);
+  RankedDicts() = default;
+  RankedDicts(RankedDicts &&) = default;
+  RankedDicts(RankedDicts &) = delete;
+
+  RankedDicts& operator=(RankedDicts &&) = default;
+  RankedDicts& operator=(const RankedDicts &) = delete;
+
+  base::Optional<rank_t> Find(base::StringPiece needle) const;
+
+ private:
+  bool IsRealMarker(size_t offset) const;
+  // Buffer storing the dictionaries, see RankedDictEntryRef and the rest of
+  // frequency_lists.cpp for documentation of the data structure.
+  std::vector<char> data_;
 };
 
-}
+void SetRankedDicts(RankedDicts dicts);
 
-namespace zxcvbn {
+RankedDicts &default_ranked_dicts();
 
-using RankedDicts = base::flat_map<DictionaryTag, const RankedDict*>;
-
-void SetRankedDicts(base::flat_map<DictionaryTag, RankedDict> dicts);
-
-RankedDicts convert_to_ranked_dicts(base::flat_map<DictionaryTag, RankedDict> & ranked_dicts);
-RankedDicts default_ranked_dicts();
-
-}
+} // namespace zxcvbn
 
 #endif
diff --git a/third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists_common.hpp b/third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists_common.hpp
deleted file mode 100644
index d1c5177..0000000
--- a/third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists_common.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef __ZXCVBN__FREQUENCY_LISTS_COMMON_HPP
-#define __ZXCVBN__FREQUENCY_LISTS_COMMON_HPP
-
-#include <cstdint>
-#include <string>
-#include <vector>
-
-#include "base/containers/flat_map.h"
-
-namespace zxcvbn {
-
-using rank_t = std::size_t;
-using RankedDict = base::flat_map<std::string, rank_t>;
-
-template<class T>
-RankedDict build_ranked_dict(const T & ordered_list) {
-  std::vector<RankedDict::value_type> items;
-  items.reserve(ordered_list.size());
-  rank_t idx = 1; // rank starts at 1, not 0
-  for (const auto & word : ordered_list) {
-    items.emplace_back(word, idx);
-    idx += 1;
-  }
-  return RankedDict(std::move(items));
-}
-
-}
-
-#endif
diff --git a/third_party/zxcvbn-cpp/native-src/zxcvbn/matching.cpp b/third_party/zxcvbn-cpp/native-src/zxcvbn/matching.cpp
index 3d09857f..1692fe8b 100644
--- a/third_party/zxcvbn-cpp/native-src/zxcvbn/matching.cpp
+++ b/third_party/zxcvbn-cpp/native-src/zxcvbn/matching.cpp
@@ -122,13 +122,8 @@
   return util::ascii_lower(str);
 }
 
-std::vector<Match> omnimatch(const std::string & password,
-                             const std::vector<std::string> & ordered_list) {
-  auto ranked_dictionaries = default_ranked_dicts();
-
-  auto ranked_dict = build_ranked_dict(ordered_list);
-  ranked_dictionaries.insert(
-      std::make_pair(DictionaryTag::USER_INPUTS, &ranked_dict));
+std::vector<Match> omnimatch(const std::string& password) {
+  RankedDicts& ranked_dictionaries = default_ranked_dicts();
 
   std::vector<Match> matches;
   std::function<std::vector<Match>(const std::string&)> matchers[] = {
@@ -158,29 +153,22 @@
 std::vector<Match> dictionary_match(const std::string & password,
                                     const RankedDicts & ranked_dictionaries) {
   std::vector<Match> matches;
-  auto len = password.length();
-  auto password_lower = dict_normalize(password);
-  for (const auto & item : ranked_dictionaries) {
-    auto dictionary_tag = item.first;
-    auto& ranked_dict = *item.second;
-    for (decltype(len) i = 0, idx = 0; idx < len; util::utf8_decode(password, idx), ++i) {
-      for (decltype(len) j = i, jdx = idx; jdx < len; ++j) {
-        // j is inclusive, but jdx is not so eagerly iterate jdx
-        util::utf8_decode(password, jdx);
+  size_t len = password.length();
+  std::string password_lower = dict_normalize(password);
+  for (size_t i = 0, idx = 0; idx < len;
+       util::utf8_decode(password, idx), ++i) {
+    for (size_t j = i, jdx = idx; jdx < len; ++j) {
+      // j is inclusive, but jdx is not so eagerly iterate jdx
+      util::utf8_decode(password, jdx);
 
-        auto word = password_lower.substr(idx, jdx - idx);
-        auto it = ranked_dict.find(word);
-        if (it != ranked_dict.end()) {
-          auto rank = it->second;
-          matches.push_back(Match(i, j, password.substr(idx, jdx - idx),
-                                  DictionaryMatch{
-                                      dictionary_tag,
-                                      word, rank,
-                                      false,
-                                      false, {}, ""}));
-          matches.back().idx = idx;
-          matches.back().jdx = jdx;
-        }
+      std::string word = password_lower.substr(idx, jdx - idx);
+      base::Optional<rank_t> result = ranked_dictionaries.Find(word);
+      if (result.has_value()) {
+        rank_t rank = *result;
+        matches.emplace_back(i, j, password.substr(idx, jdx - idx),
+                             DictionaryMatch{word, rank, false, false, {}, ""});
+        matches.back().idx = idx;
+        matches.back().jdx = jdx;
       }
     }
   }
diff --git a/third_party/zxcvbn-cpp/native-src/zxcvbn/matching.hpp b/third_party/zxcvbn-cpp/native-src/zxcvbn/matching.hpp
index ba73b90..44860389 100644
--- a/third_party/zxcvbn-cpp/native-src/zxcvbn/matching.hpp
+++ b/third_party/zxcvbn-cpp/native-src/zxcvbn/matching.hpp
@@ -39,8 +39,7 @@
 
 std::vector<Match> date_match(const std::string & password);
 
-std::vector<Match> omnimatch(const std::string & password,
-                             const std::vector<std::string> & ordered_list = {});
+std::vector<Match> omnimatch(const std::string & password);
 
 }
 
diff --git a/third_party/zxcvbn-cpp/test/matching_unittest.cc b/third_party/zxcvbn-cpp/test/matching_unittest.cc
index ec21c41..1437216c 100644
--- a/third_party/zxcvbn-cpp/test/matching_unittest.cc
+++ b/third_party/zxcvbn-cpp/test/matching_unittest.cc
@@ -14,7 +14,6 @@
 #include "third_party/zxcvbn-cpp/native-src/zxcvbn/adjacency_graphs.hpp"
 #include "third_party/zxcvbn-cpp/native-src/zxcvbn/common.hpp"
 #include "third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists.hpp"
-#include "third_party/zxcvbn-cpp/native-src/zxcvbn/frequency_lists_common.hpp"
 
 using ::testing::ElementsAre;
 using ::testing::IsEmpty;
@@ -59,7 +58,6 @@
   idx_t j;
   std::string token;
 
-  DictionaryTag dictionary_tag;
   std::string matched_word;
   rank_t rank;
   bool l33t;
@@ -70,7 +68,6 @@
 bool operator==(const Match& lhs, const ExpectedDictionaryMatch& rhs) {
   return lhs.i == rhs.i && lhs.j == rhs.j && lhs.token == rhs.token &&
          lhs.get_pattern() == MatchPattern::DICTIONARY &&
-         lhs.get_dictionary().dictionary_tag == rhs.dictionary_tag &&
          lhs.get_dictionary().matched_word == rhs.matched_word &&
          lhs.get_dictionary().rank == rhs.rank &&
          lhs.get_dictionary().l33t == rhs.l33t &&
@@ -162,38 +159,22 @@
 }  // namespace
 
 TEST(ZxcvbnTest, DictionaryMatching) {
-  auto dict_1 = static_cast<DictionaryTag>(0);
-  auto dict_2 = static_cast<DictionaryTag>(1);
-  base::flat_map<DictionaryTag, RankedDict> test_dicts = {
-      {dict_1,
-       {
-           {"motherboard", 1},
-           {"mother", 2},
-           {"board", 3},
-           {"abcd", 4},
-           {"cdef", 5},
-       }},
-      {dict_2,
-       {
-           {"z", 1},
-           {"8", 2},
-           {"99", 3},
-           {"$", 4},
-           {"asdf1234&*", 5},
-       }},
+  std::vector<std::vector<base::StringPiece>> test_dicts = {
+      {"motherboard", "mother", "board", "abcd", "cdef"},
+      {"z", "8", "99", "$", "asdf1234&*"},
   };
 
   {
     // matches words that contain other words
     std::string password = "motherboard";
+    RankedDicts test_dicts_processed(test_dicts);
     std::vector<Match> matches =
-        dictionary_match(password, convert_to_ranked_dicts(test_dicts));
+        dictionary_match(password, test_dicts_processed);
     EXPECT_THAT(matches, ElementsAre(
                              ExpectedDictionaryMatch{
                                  .i = 0,
                                  .j = 5,
                                  .token = "mother",
-                                 .dictionary_tag = dict_1,
                                  .matched_word = "mother",
                                  .rank = 2,
                              },
@@ -201,7 +182,6 @@
                                  .i = 0,
                                  .j = 10,
                                  .token = "motherboard",
-                                 .dictionary_tag = dict_1,
                                  .matched_word = "motherboard",
                                  .rank = 1,
                              },
@@ -209,7 +189,6 @@
                                  .i = 6,
                                  .j = 10,
                                  .token = "board",
-                                 .dictionary_tag = dict_1,
                                  .matched_word = "board",
                                  .rank = 3,
                              }));
@@ -219,13 +198,12 @@
     // matches multiple words when they overlap
     std::string password = "abcdef";
     std::vector<Match> matches =
-        dictionary_match(password, convert_to_ranked_dicts(test_dicts));
+        dictionary_match(password, RankedDicts(test_dicts));
     EXPECT_THAT(matches, ElementsAre(
                              ExpectedDictionaryMatch{
                                  .i = 0,
                                  .j = 3,
                                  .token = "abcd",
-                                 .dictionary_tag = dict_1,
                                  .matched_word = "abcd",
                                  .rank = 4,
                              },
@@ -233,7 +211,6 @@
                                  .i = 2,
                                  .j = 5,
                                  .token = "cdef",
-                                 .dictionary_tag = dict_1,
                                  .matched_word = "cdef",
                                  .rank = 5,
                              }));
@@ -243,13 +220,12 @@
     // ignores uppercasing
     std::string password = "BoaRdZ";
     std::vector<Match> matches =
-        dictionary_match(password, convert_to_ranked_dicts(test_dicts));
+        dictionary_match(password, RankedDicts(test_dicts));
     EXPECT_THAT(matches, ElementsAre(
                              ExpectedDictionaryMatch{
                                  .i = 0,
                                  .j = 4,
                                  .token = "BoaRd",
-                                 .dictionary_tag = dict_1,
                                  .matched_word = "board",
                                  .rank = 3,
                              },
@@ -257,7 +233,6 @@
                                  .i = 5,
                                  .j = 5,
                                  .token = "Z",
-                                 .dictionary_tag = dict_2,
                                  .matched_word = "z",
                                  .rank = 1,
                              }));
@@ -267,13 +242,12 @@
     // identifies words surrounded by non-words
     std::string word = "asdf1234&*";
     for (const auto& variation : gen_pws(word, {"q", "%%"}, {"%", "qq"})) {
-      std::vector<Match> matches = dictionary_match(
-          variation.password, convert_to_ranked_dicts(test_dicts));
+      std::vector<Match> matches =
+          dictionary_match(variation.password, RankedDicts(test_dicts));
       EXPECT_THAT(matches, ElementsAre(ExpectedDictionaryMatch{
                                .i = variation.i,
                                .j = variation.j,
                                .token = word,
-                               .dictionary_tag = dict_2,
                                .matched_word = word,
                                .rank = 5,
                            }));
@@ -283,20 +257,21 @@
   {
     // matches against all words in provided dictionaries
     for (const auto& test_dict : test_dicts) {
-      for (const auto& ranked_word : test_dict.second) {
+      rank_t expected_rank = 0;
+      for (base::StringPiece ranked_word : test_dict) {
+        expected_rank++;
         // skip words that contain others
-        if (ranked_word.first == "motherboard")
+        if (ranked_word == "motherboard")
           continue;
 
-        std::vector<Match> matches = dictionary_match(
-            ranked_word.first, convert_to_ranked_dicts(test_dicts));
+        std::vector<Match> matches =
+            dictionary_match(std::string(ranked_word), RankedDicts(test_dicts));
         EXPECT_THAT(matches, ElementsAre(ExpectedDictionaryMatch{
                                  .i = 0,
-                                 .j = ranked_word.first.size() - 1,
-                                 .token = ranked_word.first,
-                                 .dictionary_tag = test_dict.first,
-                                 .matched_word = ranked_word.first,
-                                 .rank = ranked_word.second,
+                                 .j = ranked_word.size() - 1,
+                                 .token = std::string(ranked_word),
+                                 .matched_word = std::string(ranked_word),
+                                 .rank = expected_rank,
                              }));
       }
     }
@@ -304,66 +279,33 @@
 
   {
     // default dictionaries
-    SetRankedDicts({{DictionaryTag::US_TV_AND_FILM, {{"wow", 1}}}});
+    SetRankedDicts(RankedDicts({{"wow"}}));
     std::vector<Match> matches =
         dictionary_match("wow", default_ranked_dicts());
     EXPECT_THAT(matches, ElementsAre(ExpectedDictionaryMatch{
                              .i = 0,
                              .j = 2,
                              .token = "wow",
-                             .dictionary_tag = DictionaryTag::US_TV_AND_FILM,
                              .matched_word = "wow",
                              .rank = 1,
                          }));
   }
-
-  {
-    // matches with provided user input dictionary
-    SetRankedDicts({{DictionaryTag::USER_INPUTS, {{"foo", 1}, {"bar", 2}}}});
-    std::vector<Match> matches =
-        dictionary_match("foobar", default_ranked_dicts());
-    EXPECT_THAT(matches, ElementsAre(
-                             ExpectedDictionaryMatch{
-                                 .i = 0,
-                                 .j = 2,
-                                 .token = "foo",
-                                 .dictionary_tag = DictionaryTag::USER_INPUTS,
-                                 .matched_word = "foo",
-                                 .rank = 1,
-                             },
-                             ExpectedDictionaryMatch{
-                                 .i = 3,
-                                 .j = 5,
-                                 .token = "bar",
-                                 .dictionary_tag = DictionaryTag::USER_INPUTS,
-                                 .matched_word = "bar",
-                                 .rank = 2,
-                             }));
-  }
 }
 
 TEST(ZxcvbnTest, ReverseDictionaryMatching) {
-  auto dict_1 = static_cast<DictionaryTag>(0);
-  base::flat_map<DictionaryTag, RankedDict> test_dicts = {
-      {dict_1,
-       {
-           {"123", 1},
-           {"321", 2},
-           {"456", 3},
-           {"654", 4},
-       }},
+  std::vector<std::vector<base::StringPiece>> test_dicts = {
+      {"123", "321", "456", "654"},
   };
 
   // matches against reversed words
   std::string password = "0123456789";
   std::vector<Match> matches =
-      reverse_dictionary_match(password, convert_to_ranked_dicts(test_dicts));
+      reverse_dictionary_match(password, RankedDicts(test_dicts));
   EXPECT_THAT(matches, ElementsAre(
                            ExpectedDictionaryMatch{
                                .i = 1,
                                .j = 3,
                                .token = "123",
-                               .dictionary_tag = dict_1,
                                .matched_word = "321",
                                .rank = 2,
                                .reversed = true,
@@ -372,7 +314,6 @@
                                .i = 4,
                                .j = 6,
                                .token = "456",
-                               .dictionary_tag = dict_1,
                                .matched_word = "654",
                                .rank = 4,
                                .reversed = true,
@@ -428,24 +369,13 @@
   }
 
   {
-    auto words = static_cast<DictionaryTag>(0);
-    auto words2 = static_cast<DictionaryTag>(1);
-    base::flat_map<DictionaryTag, RankedDict> dicts = {
-        {words,
-         {
-             {"aac", 1},
-             {"password", 3},
-             {"paassword", 4},
-             {"asdf0", 5},
-         }},
-        {words2,
-         {
-             {"cgo", 1},
-         }},
+    std::vector<std::vector<base::StringPiece>> dicts = {
+        {"aac", "password", "paassword", "asdf0"},
+        {"cgo"},
     };
 
     auto lm = [&](const std::string& password) {
-      return l33t_match(password, convert_to_ranked_dicts(dicts), test_table);
+      return l33t_match(password, RankedDicts(dicts), test_table);
     };
 
     // doesn't match ""
@@ -459,29 +389,14 @@
       std::string password;
       std::string pattern;
       std::string word;
-      DictionaryTag dictionary_tag;
       rank_t rank;
       idx_t i;
       idx_t j;
       std::unordered_map<std::string, std::string> sub;
     } tests[] = {
-        {"p4ssword", "p4ssword", "password", words, 3, 0, 7, {{"4", "a"}}},
-        {"p@ssw0rd",
-         "p@ssw0rd",
-         "password",
-         words,
-         3,
-         0,
-         7,
-         {{"@", "a"}, {"0", "o"}}},
-        {"aSdfO{G0asDfO",
-         "{G0",
-         "cgo",
-         words2,
-         1,
-         5,
-         7,
-         {{"{", "c"}, {"0", "o"}}},
+        {"p4ssword", "p4ssword", "password", 2, 0, 7, {{"4", "a"}}},
+        {"p@ssw0rd", "p@ssw0rd", "password", 2, 0, 7, {{"@", "a"}, {"0", "o"}}},
+        {"aSdfO{G0asDfO", "{G0", "cgo", 1, 5, 7, {{"{", "c"}, {"0", "o"}}},
     };
 
     for (const auto& test : tests) {
@@ -489,7 +404,6 @@
                                          .i = test.i,
                                          .j = test.j,
                                          .token = test.pattern,
-                                         .dictionary_tag = test.dictionary_tag,
                                          .matched_word = test.word,
                                          .rank = test.rank,
                                          .l33t = true,
@@ -503,7 +417,6 @@
                                         .i = 0,
                                         .j = 2,
                                         .token = "@a(",
-                                        .dictionary_tag = words,
                                         .matched_word = "aac",
                                         .rank = 1,
                                         .l33t = true,
@@ -513,7 +426,6 @@
                                         .i = 2,
                                         .j = 4,
                                         .token = "(go",
-                                        .dictionary_tag = words2,
                                         .matched_word = "cgo",
                                         .rank = 1,
                                         .l33t = true,
@@ -523,7 +435,6 @@
                                         .i = 5,
                                         .j = 7,
                                         .token = "{G0",
-                                        .dictionary_tag = words2,
                                         .matched_word = "cgo",
                                         .rank = 1,
                                         .l33t = true,
@@ -1018,8 +929,7 @@
 TEST(ZxcvbnTest, Omnimatch) {
   EXPECT_THAT(omnimatch(""), IsEmpty());
 
-  SetRankedDicts(
-      {{DictionaryTag::ENGLISH_WIKIPEDIA, {{"rosebud", 1}, {"maelstrom", 2}}}});
+  SetRankedDicts(RankedDicts({{"rosebud", "maelstrom"}}));
   std::string password = "r0sebudmaelstrom11/20/91aaaa";
   std::vector<Match> matches = omnimatch(password);
 
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml
index 5f3c30a..ede9f38 100644
--- a/tools/metrics/actions/actions.xml
+++ b/tools/metrics/actions/actions.xml
@@ -12348,7 +12348,7 @@
 </action>
 
 <action name="ManageGoogleAccount_Clicked">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <description>
     Recorded when the user clicked the &quot;Manage your Google Account&quot;
@@ -19141,13 +19141,13 @@
 </action>
 
 <action name="Options_ShowPasswordCheck">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <description>Settings: passwords check</description>
 </action>
 
 <action name="Options_ShowPasswordManager">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <description>Settings: saved passwords</description>
 </action>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 9c4b26e..5db18c3 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -8480,6 +8480,11 @@
   <int value="1" label="Error"/>
 </enum>
 
+<enum name="BooleanEverConnected">
+  <int value="0" label="Never connected"/>
+  <int value="1" label="Previously connected"/>
+</enum>
+
 <enum name="BooleanEverWorked">
   <int value="0" label="Has never worked"/>
   <int value="1" label="Has worked at least once"/>
@@ -46403,6 +46408,7 @@
   <int value="-234687894"
       label="NonValidatingReloadOnRefreshContentV2:disabled"/>
   <int value="-234231190" label="SharingDeviceRegistration:enabled"/>
+  <int value="-233334129" label="BiometricTouchToFill:disabled"/>
   <int value="-231967261" label="AutofillUpdatedCardUnmaskPromptUi:disabled"/>
   <int value="-231922000" label="enable-renderer-mojo-channel"/>
   <int value="-231642350" label="EnableWindowsGamingInputDataFetcher:disabled"/>
@@ -48950,6 +48956,7 @@
   <int value="2005614493" label="tab-management-experiment-type-dill"/>
   <int value="2006413281"
       label="ContextualSuggestionsAlternateCardLayout:enabled"/>
+  <int value="2006856618" label="BiometricTouchToFill:enabled"/>
   <int value="2008599705" label="EnableFeedbackPanel:enabled"/>
   <int value="2008878342" label="TouchToFillAndroid:disabled"/>
   <int value="2009097351" label="memlog-sampling-rate"/>
diff --git a/tools/metrics/histograms/histograms_xml/network/histograms.xml b/tools/metrics/histograms/histograms_xml/network/histograms.xml
index 02cca6cb..7ffa43c 100644
--- a/tools/metrics/histograms/histograms_xml/network/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/network/histograms.xml
@@ -1527,6 +1527,19 @@
   </summary>
 </histogram>
 
+<histogram name="Network.Shill.WiFi.HiddenSSIDEverConnected"
+    enum="BooleanEverConnected" expires_after="2022-04-27">
+  <owner>tnagel@chromium.org</owner>
+  <owner>cros-network-metrics@google.com</owner>
+  <owner>cros-privacy-core@google.com</owner>
+  <summary>
+    Chrome OS network metric tracking whether WiFi networks configured with
+    hidden SSID have ever been connected. The metric includes networks from
+    system and user profile and it's recorded each time a user configuration
+    profile is loaded, such as when a user logs in.
+  </summary>
+</histogram>
+
 <histogram name="Network.Shill.WiFi.HiddenSSIDNetworkCount" units="units"
     expires_after="2021-12-01">
   <owner>tnagel@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/password/histograms.xml b/tools/metrics/histograms/histograms_xml/password/histograms.xml
index 9d13b97a..ac1c4e7 100644
--- a/tools/metrics/histograms/histograms_xml/password/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/password/histograms.xml
@@ -29,7 +29,7 @@
 <histogram name="PasswordBubble.CompromisedBubble.CheckClicked"
     enum="BooleanClicked" expires_after="2021-09-12">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <summary>
     Whether the user proceeded to the list of the left compromised passwords
     from the bubble following save/update password.
@@ -39,7 +39,7 @@
 <histogram name="PasswordBubble.CompromisedBubble.Type"
     enum="PasswordBubbleFollowupType" expires_after="2021-09-12">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <summary>
     The state of the bubble shown after users saves/updates a password. It
     notifies the user about leftover compromised passwords.
@@ -56,7 +56,7 @@
 
 <histogram name="PasswordGeneration.Event" enum="PasswordGenerationEvent"
     expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>kolos@chromium.org</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
@@ -93,14 +93,14 @@
 
 <histogram name="PasswordGeneration.PopupShown"
     enum="PasswordGenerationPopupShown" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
   <owner>kazinova@google.com</owner>
+  <owner>vasilii@chromium.org</owner>
   <summary>Records an entry if (and only if) a popup was shown.</summary>
 </histogram>
 
 <histogram name="PasswordGeneration.SubmissionAvailableEvent"
     enum="PasswordSubmissionEvent" expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>kolos@chromium.org</owner>
   <summary>
     Measures the frequency of submission events for passwords that could have
@@ -111,7 +111,7 @@
 
 <histogram name="PasswordGeneration.SubmissionEvent"
     enum="PasswordSubmissionEvent" expires_after="2021-09-12">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>kolos@chromium.org</owner>
   <summary>
     Measures the frequency of submission events for generated passwords. This is
@@ -122,7 +122,7 @@
 
 <histogram name="PasswordGeneration.UploadStarted" enum="Boolean"
     expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>kolos@chromium.org</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
@@ -165,7 +165,7 @@
 
 <histogram name="PasswordManager.AcceptedSaveUpdateSubmissionIndicatorEvent"
     enum="SubmissionIndicatorEvent" expires_after="2021-10-24">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The type of event that the Password Manager used for detecting a password
@@ -176,7 +176,7 @@
 
 <histogram name="PasswordManager.AccessPasswordInSettings"
     enum="AccessPasswordInSettingsEvent" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Recorded whenever the user accesses the passwords in the settings page.
@@ -186,7 +186,7 @@
 <histogram name="PasswordManager.AccountChooserDialogMultipleAccounts"
     enum="AccountChooserDismissalReason" expires_after="2021-08-29">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <summary>
     The dismissal reason of the account chooser with multiple accounts. Recorded
     when the account chooser is dismissed.
@@ -196,7 +196,7 @@
 <histogram name="PasswordManager.AccountChooserDialogOneAccount"
     enum="AccountChooserDismissalReason" expires_after="2021-08-29">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <summary>
     The dismissal reason of the account chooser with one account. Recorded when
     the account chooser is dismissed.
@@ -205,7 +205,7 @@
 
 <histogram base="true" name="PasswordManager.AccountsPerSiteHiRes"
     units="units" expires_after="2021-08-22">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The number of accounts stored per site in the password manager's
@@ -353,7 +353,6 @@
 
 <histogram base="true" name="PasswordManager.AccountStore.AccountsPerSiteHiRes"
     units="units" expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
   <owner>mamir@chromium.org</owner>
   <owner>treib@chromium.org</owner>
   <owner>vasilii@chromium.org</owner>
@@ -368,7 +367,6 @@
 <histogram base="true"
     name="PasswordManager.AccountStore.BlacklistedSitesHiRes" units="sites"
     expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
   <owner>mamir@chromium.org</owner>
   <owner>treib@chromium.org</owner>
   <owner>vasilii@chromium.org</owner>
@@ -382,7 +380,6 @@
 <histogram name="PasswordManager.AccountStore.EmptyUsernames.CountInDatabase"
     units="units" expires_after="M95">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
   <owner>mamir@chromium.org</owner>
   <owner>treib@chromium.org</owner>
   <summary>
@@ -405,7 +402,6 @@
 <histogram base="true" name="PasswordManager.AccountStore.TimesPasswordUsed"
     units="PasswordUses" expires_after="M95">
   <owner>battre@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
   <owner>mamir@chromium.org</owner>
   <owner>treib@chromium.org</owner>
   <summary>
@@ -742,7 +738,7 @@
 <histogram name="PasswordManager.AutoSigninFirstRunDialog"
     enum="AutoSigninFirstRun" expires_after="2021-08-29">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <summary>
     The dismissal reason of the auto-signin first run experience.
   </summary>
@@ -750,7 +746,7 @@
 
 <histogram base="true" name="PasswordManager.BlacklistedSitesHiRes"
     units="sites" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The total number of sites that the user has blacklisted. Recorded by
@@ -760,7 +756,7 @@
 
 <histogram name="PasswordManager.BubbleSuppression.AccountsInStatisticsTable"
     units="accounts" expires_after="2021-09-19">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The number of accounts stored in password_manager::StatisticsTable. These
@@ -773,7 +769,7 @@
 <histogram name="PasswordManager.BulkCheck.CanceledCredentials"
     units="credentials" expires_after="2021-07-01">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <summary>
     Count of credentials initially to be checked when the password bulk check
     was canceled.
@@ -783,7 +779,7 @@
 <histogram name="PasswordManager.BulkCheck.CanceledTime" units="ms"
     expires_after="2021-10-10">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <summary>
     The time the password bulk check was running until canceled by the user.
   </summary>
@@ -792,7 +788,7 @@
 <histogram name="PasswordManager.BulkCheck.CheckedCredentials"
     units="credentials" expires_after="2021-10-10">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <summary>
     Count of credentials analyzed when the password bulk check completed
     successfully.
@@ -802,14 +798,14 @@
 <histogram name="PasswordManager.BulkCheck.Error"
     enum="PasswordLeakDetectionError" expires_after="2021-10-10">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <summary>Error encountered during the password bulk check.</summary>
 </histogram>
 
 <histogram name="PasswordManager.BulkCheck.LeaksFound" units="credentials"
     expires_after="2021-10-10">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <summary>
     Count of leaked credentials found when the password bulk check completed.
   </summary>
@@ -817,7 +813,7 @@
 
 <histogram name="PasswordManager.BulkCheck.PasswordCheckReferrer"
     enum="PasswordCheckReferrer" expires_after="2021-09-19">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Referrer of a navigation to the Password Check page. Recorded when the user
@@ -838,7 +834,7 @@
 <histogram name="PasswordManager.BulkCheck.Time" units="ms"
     expires_after="2021-10-10">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <summary>
     The time it took for the password bulk check to complete successfully.
   </summary>
@@ -847,7 +843,7 @@
 <histogram name="PasswordManager.BulkCheck.TimePerCredential" units="ms"
     expires_after="2021-10-10">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <summary>
     The average time per credential when the password bulk check completed
     successfully.
@@ -856,7 +852,7 @@
 
 <histogram name="PasswordManager.BulkCheck.UserAction"
     enum="PasswordCheckInteraction" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>User actions performed on the Password Check settings page.</summary>
 </histogram>
@@ -887,7 +883,7 @@
 <histogram name="PasswordManager.CertificateErrorsWhileSeeingForms"
     enum="PasswordCertificateError" expires_after="M95">
   <owner>battre@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>chrome-password-manager-metrics-alerts@google.com</owner>
   <summary>
     When the password manager sees new forms on the page, it records in this
@@ -938,7 +934,7 @@
 <histogram name="PasswordManager.CompromisedCredentials.CountLeaked"
     units="credentials" expires_after="2021-10-04">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <summary>
     Count of known leaked credentials in the database on start-up.
   </summary>
@@ -948,7 +944,7 @@
     name="PasswordManager.CompromisedCredentials.CountLeakedAfterBulkCheck"
     units="credentials" expires_after="2021-10-04">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <summary>
     Count of known leaked credentials in the database on start-up if the
     password bulk check was executed at least once.
@@ -958,7 +954,7 @@
 <histogram name="PasswordManager.CompromisedCredentials.CountPhished"
     units="credentials" expires_after="2021-10-04">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <summary>
     Count of known phished credentials in the database on start-up.
   </summary>
@@ -1003,7 +999,7 @@
 
 <histogram name="PasswordManager.CredentialsWithDuplicates" units="units"
     expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The number of stored (non-blacklisted) credentials for which
@@ -1018,7 +1014,7 @@
 
 <histogram name="PasswordManager.CredentialsWithMismatchedDuplicates"
     units="units" expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The number of stored (non-blacklisted) credentials for which
@@ -1044,7 +1040,7 @@
 <histogram name="PasswordManager.DeleteUndecryptableLoginsReturnValue"
     enum="DeleteCorruptedPasswordsResult" expires_after="2021-10-04">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <summary>
     Records the return value of the DeleteUndecryptableLogins method in the
     LoginDatabase class. Called for sync user and for each profile when merging
@@ -1064,7 +1060,7 @@
 
 <histogram name="PasswordManager.DynamicFormChanges" units="units"
     expires_after="M92">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>battre@chromium.org</owner>
   <summary>
     Records a bitmask of password form changes after the first time this form is
@@ -1078,7 +1074,7 @@
 <histogram name="PasswordManager.EditsInSaveBubble"
     enum="PasswordManagerEditsInSaveBubbleEnum" expires_after="2021-08-29">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <summary>
     Indication whether users change the credentials (username and password) in
     the save bubble of the password manager, considering only cases where the
@@ -1092,7 +1088,7 @@
     Obsolete since M90.
   </obsolete>
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <summary>
     Number of password forms with empty username in the profile-scoped Login
     Database. This is recorded on startup.
@@ -1101,7 +1097,7 @@
 
 <histogram name="PasswordManager.Enabled" enum="BooleanEnabled"
     expires_after="2021-08-22">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Indicates whether the password manager is enabled when a tab is opened. This
@@ -1114,7 +1110,7 @@
   <obsolete>
     Obsolete since M92.
   </obsolete>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Records number of rows in FieldInfoTable, which contains locally learned
@@ -1124,7 +1120,7 @@
 
 <histogram name="PasswordManager.FilledCredentialWasFromAndroidApp"
     enum="PasswordManagerFilledAndroidCredentials" expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     When a credential is filled, whether it comes from an Android app.
@@ -1133,7 +1129,7 @@
 
 <histogram name="PasswordManager.FillingAssistance"
     enum="PasswordManagerFillingAssistance" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>battre@chromium.org</owner>
   <summary>
     This metric records the user experience with regards to passwords filling.
@@ -1169,7 +1165,7 @@
 
 <histogram name="PasswordManager.FillSuggestionsIncludeAndroidAppCredentials"
     enum="PasswordManagerOfferedAndroidCredentials" expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     When offering to fill the username and password, whether at least one of the
@@ -1179,7 +1175,7 @@
 
 <histogram name="PasswordManager.FirstRendererFillingResult"
     enum="PasswordManagerFirstRendererFillingResult" expires_after="2021-08-09">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>battre@chromium.org</owner>
   <summary>
     Records whether the PasswordAutofillAgent in the renderer manages to fill
@@ -1192,7 +1188,7 @@
 
 <histogram name="PasswordManager.FirstWaitForUsernameReason"
     enum="PasswordManagerFirstWaitForUsernameReason" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>battre@chromium.org</owner>
   <summary>
     This metric records why the browser instructs the renderer not to fill the
@@ -1205,7 +1201,7 @@
 
 <histogram name="PasswordManager.FormDataDeserializationStatus"
     enum="FormDataDeserializationStatus" expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The success or failure of deserializing saved FormData. Failure either
@@ -1236,7 +1232,7 @@
 
 <histogram name="PasswordManager.GeneratedFormHasNoFormManager"
     enum="BooleanFormManager" expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>kolos@chromium.org</owner>
   <summary>
     When the generation state of a password was changed, records whether an
@@ -1246,7 +1242,7 @@
 
 <histogram name="PasswordManager.GooglePasswordManager.NavigationResult"
     enum="GooglePasswordManagerNavigationResult" expires_after="2019-12-31">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The result of an attempted navigation to the Google Password Manager.
@@ -1257,7 +1253,7 @@
 
 <histogram name="PasswordManager.GooglePasswordManager.TimeToFailure"
     units="units" expires_after="2019-12-31">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The time it took for a failed navigation to the Google Password Manager.
@@ -1269,7 +1265,7 @@
 
 <histogram name="PasswordManager.GooglePasswordManager.TimeToSuccess"
     units="units" expires_after="2019-12-31">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The time it took for a successful navigation to the Google Password Manager.
@@ -1281,7 +1277,7 @@
 
 <histogram name="PasswordManager.HttpCredentials"
     enum="PasswordManagerHttpCredentialType" expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Breakdown of HTTP credentials with regard to the existence of a HTTPS
@@ -1293,7 +1289,7 @@
 
 <histogram name="PasswordManager.HttpPasswordMigrationCount"
     units="saved credentials" expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Number of HTTP saved passwords that were migrated to HTTPS. Recorded on
@@ -1303,7 +1299,7 @@
 
 <histogram name="PasswordManager.HttpPasswordMigrationMode"
     enum="HttpPasswordMigrationMode" expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The mode of migration applied to HTTP passwords migrating to HTTPS. Recorded
@@ -1393,7 +1389,7 @@
 
 <histogram name="PasswordManager.JavaScriptOnlyValueInSubmittedForm"
     enum="JavaScriptOnlyValueInPasswordForm" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>battre@chromium.org</owner>
   <summary>
     Records whether a successfully submitted password form has only values that
@@ -1601,7 +1597,7 @@
 
 <histogram name="PasswordManager.ManagePasswordsReferrer"
     enum="ManagePasswordsReferrer" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Referrer of a navigation to the &quot;Manage Passwords&quot; page. Recorded
@@ -1714,7 +1710,7 @@
 
 <histogram name="PasswordManager.NumFormManagersCleared" units="count"
     expires_after="2021-09-19">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vasilii@chromium.org</owner>
   <owner>kazinova@google.com</owner>
   <summary>
     Records how many FormManagers are deleted on the main frame navigation. This
@@ -1727,7 +1723,7 @@
   <obsolete>
     Removed in M79.
   </obsolete>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The password manager only shows those credentials that are considered the
@@ -1739,7 +1735,7 @@
 <histogram name="PasswordManager.OsPasswordStatus"
     enum="PasswordManagerOsPasswordStatus" expires_after="2021-10-04">
   <owner>vasilii@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <summary>
     Indicates whether the user's OS password is blank or not at browser startup.
   </summary>
@@ -1750,7 +1746,7 @@
   <obsolete>
     Obsolete since M90.
   </obsolete>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Breakdown of how other possible usernames are displayed. Recorded every time
@@ -1760,7 +1756,7 @@
 
 <histogram name="PasswordManager.PasswordDropdownItemSelected"
     enum="PasswordDropdownSelectedOption" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Logs the type of the suggestion in the password dropdown when selected.
@@ -1769,7 +1765,7 @@
 
 <histogram name="PasswordManager.PasswordDropdownShown"
     enum="PasswordDropdownState" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>Logs the state of the password dropdown when it's shown.</summary>
 </histogram>
@@ -1924,7 +1920,7 @@
 
 <histogram name="PasswordManager.PasswordSyncState" enum="PasswordSyncState"
     expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Whether the passwords are syncing and, if not, then what's causing sync
@@ -1946,7 +1942,7 @@
 
 <histogram name="PasswordManager.ProvisionalSaveFailure"
     enum="ProvisionalSaveFailure" expires_after="M87">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Breakdown of cases where a password is submitted, but we don't even try and
@@ -1956,7 +1952,7 @@
 
 <histogram name="PasswordManager.ReauthToAccessPasswordInSettings"
     enum="PasswordManager.ReauthResult" expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Recorded whenever the user interacts with reauthentication in order to
@@ -2081,7 +2077,7 @@
 
 <histogram name="PasswordManager.SavingOnUsernameFirstFlow"
     enum="SavingOnUsernameFirstFlow" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Records user actions when Chrome offers to save a username on a page which
@@ -2093,7 +2089,7 @@
 <histogram name="PasswordManager.StoreDecryptionResult"
     enum="PasswordDecryptionResult" expires_after="2021-08-09">
   <owner>cfroussios@chromium.org</owner>
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <summary>
     Describes the result of decrypting a password value from the LoginDatabase.
   </summary>
@@ -2125,7 +2121,7 @@
 
 <histogram name="PasswordManager.SubmittedFormFrame"
     enum="SubmittedPasswordFormFrame" expires_after="2021-08-22">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Records a frame type (eg. main frame, iframe with the same url as the main
@@ -2135,7 +2131,7 @@
 
 <histogram name="PasswordManager.SubmittedFormType" enum="PasswordFormType"
     expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>kolos@chromium.org</owner>
   <summary>
     The type (e.g. signup, login, change password) of all submitted password
@@ -2156,8 +2152,7 @@
 
 <histogram name="PasswordManager.SuccessfulLoginHappened"
     enum="BooleanSuccessfulLoginHappenedOnHttps" expires_after="2021-09-19">
-  <owner>jdoerrie@chromium.org</owner>
-  <owner>nepper@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>kolos@chromium.org</owner>
   <summary>
     For a successful login, whether the origin is HTTPS or HTTP. A succesful
@@ -2168,7 +2163,7 @@
 
 <histogram name="PasswordManager.SuccessfulSubmissionIndicatorEvent"
     enum="SubmissionIndicatorEvent" expires_after="2021-10-24">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The type of event that the Password Manager used for detecting a password
@@ -2178,7 +2173,7 @@
 
 <histogram name="PasswordManager.SyncingAccountState"
     enum="PasswordManagerSyncingAccountState" expires_after="M95">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <owner>chrome-password-manager-metrics-alerts@google.com</owner>
   <summary>
@@ -2209,7 +2204,7 @@
 
 <histogram name="PasswordManager.TimeBetweenStoreAndServer" units="ms"
     expires_after="2021-08-22">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>battre@chromium.org</owner>
   <summary>
     The time between receiving saved credentials from the password store and
@@ -2220,7 +2215,7 @@
 
 <histogram base="true" name="PasswordManager.TimesPasswordUsed"
     units="PasswordUses" expires_after="2021-06-30">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>battre@chromium.org</owner>
   <summary>
     The number of times each saved password from the profile-scoped storage has
@@ -2258,7 +2253,7 @@
 
 <histogram name="PasswordManager.TouchToFill.CredentialIndex" units="index"
     expires_after="2021-08-09">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>ioanap@chromium.org</owner>
   <owner>fhorschig@chromium.org</owner>
   <summary>
     The index of a selected credential in the Touch To Fill sheet. Only recorded
@@ -2268,7 +2263,7 @@
 
 <histogram name="PasswordManager.TouchToFill.DismissalReason"
     enum="BottomSheet.StateChangeReason" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>ioanap@chromium.org</owner>
   <owner>fhorschig@chromium.org</owner>
   <summary>
     The reason why a user dismissed the Touch To Fill sheet. Recorded once for
@@ -2278,14 +2273,14 @@
 
 <histogram name="PasswordManager.TouchToFill.NumCredentialsShown"
     units="credentials" expires_after="M92">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>ioanap@chromium.org</owner>
   <owner>fhorschig@chromium.org</owner>
   <summary>The number of credentials shown in the Touch To Fill sheet.</summary>
 </histogram>
 
 <histogram name="PasswordManager.TouchToFill.UserAction"
     enum="TouchToFill.UserAction" expires_after="M92">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>ioanap@chromium.org</owner>
   <owner>fhorschig@chromium.org</owner>
   <summary>
     The action a user took when interacting with the Touch To Fill sheet.
@@ -2324,7 +2319,7 @@
 
 <histogram name="PasswordManager.UsernameDetectionMethod"
     enum="UsernameDetectionMethod" expires_after="2021-09-19">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>kolos@chromium.org</owner>
   <summary>
     Measures what method was used for username field detection in the renderer
@@ -2339,7 +2334,7 @@
 
 <histogram name="PasswordManager.WeakCheck.CheckedPasswords" units="passwords"
     expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The number of passwords analyzed during the passwords weak check.
@@ -2348,7 +2343,7 @@
 
 <histogram name="PasswordManager.WeakCheck.PasswordScore"
     enum="PasswordWeaknessScore" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The score of the password that was checked by the passwords weak check. The
@@ -2358,14 +2353,14 @@
 
 <histogram name="PasswordManager.WeakCheck.Time" units="ms"
     expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>The time it took to complete the passwords weak check.</summary>
 </histogram>
 
 <histogram name="PasswordManager.WeakCheck.WeakPasswords" units="passwords"
     expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     The number of weak passwords found when the passwords weak check completed.
@@ -2375,7 +2370,7 @@
 <histogram
     name="PasswordManager.WellKnownChangePassword.GetChangePasswordUsage"
     enum="GetChangePasswordUrlMetric" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     A JSON file with change password form url is fetched from gstatic. This
@@ -2386,7 +2381,7 @@
 
 <histogram name="PasswordManager.WellKnownChangePassword.GstaticFetchErrorCode"
     enum="NetErrorCodes" expires_after="2021-09-05">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Logs the error code when the fetch to the gstatic file failed.
@@ -2396,7 +2391,7 @@
 <histogram
     name="PasswordManager.WellKnownChangePassword.GstaticFetchHttpResponseCode"
     enum="HttpResponseCode" expires_after="2021-09-05">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Logs the response code when the fetch to the gstatic file failed.
@@ -2405,7 +2400,7 @@
 
 <histogram name="PasswordManager.WellKnownChangePassword.GstaticFetchResult"
     enum="ChangePasswordUrlFetchResult" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Logs if the request for the gstatic file succeeded, failed or if the
@@ -2415,7 +2410,7 @@
 
 <histogram name="PasswordManager.WellKnownChangePassword.GstaticFetchTime"
     units="ms" expires_after="2021-10-10">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>vsemeniuk@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>Logs the loading time for the gstatic file request.</summary>
 </histogram>
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml
index dabaae0..e1b86a9 100644
--- a/tools/metrics/ukm/ukm.xml
+++ b/tools/metrics/ukm/ukm.xml
@@ -12196,7 +12196,7 @@
 </event>
 
 <event name="PasswordManager.WellKnownChangePasswordResult">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>vasilii@chromium.org</owner>
   <summary>
     Metrics related to the usage and support of .well-known/change-password. The
@@ -15425,7 +15425,7 @@
 </event>
 
 <event name="TouchToFill.Shown">
-  <owner>jdoerrie@chromium.org</owner>
+  <owner>kazinova@google.com</owner>
   <owner>fhorschig@chromium.org</owner>
   <summary>
     Recorded when the Touch To Fill sheet is shown to the user.
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index 1e8d0631..2698e616 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -9,8 +9,8 @@
             "remote_path": "perfetto_binaries/trace_processor_shell/mac/e01ad9a6a83bd8df88dc01bc86fd0ec9080296c7/trace_processor_shell"
         },
         "linux": {
-            "hash": "714da13e2699d98df93e72feb9f5eb855d281a40",
-            "remote_path": "perfetto_binaries/trace_processor_shell/linux/e01ad9a6a83bd8df88dc01bc86fd0ec9080296c7/trace_processor_shell"
+            "hash": "38a7401903f838271fc4cb6cfff67c90f25c2176",
+            "remote_path": "perfetto_binaries/trace_processor_shell/linux/05329d51861d086cbbfdcf6c298b91167393e3db/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/ui/chromeos/translations/ui_chromeos_strings_az.xtb b/ui/chromeos/translations/ui_chromeos_strings_az.xtb
index 2cb6f63..39e467a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_az.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_az.xtb
@@ -450,6 +450,7 @@
 <translation id="5602622065581044566">Fonetik klaviatura ilə Bolqar dili</translation>
 <translation id="5605830556594064952">ABŞ Dvorak</translation>
 <translation id="5625294776298156701">Tamil99 klaviaturası ilə Tamil dili</translation>
+<translation id="5633226425545095130">Bu elementi köçürsəniz, '<ph name="DESTINATION_NAME" />' paylaşılan qovluğunu görə bilən hər kəslə paylaşacaqdır.</translation>
 <translation id="5649768706273821470">Dinləyin</translation>
 <translation id="5678784840044122290">Linux tətbiqi Terminalda əlçatan olacaq və Başladıcınızda da işarə görünə bilər.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Arxiv və ya virtual diskdən əlaqəni silmək mümkün deyil<ph name="END_BOLD" />
@@ -722,6 +723,7 @@
 <translation id="8395901698320285466">Ölçülər</translation>
 <translation id="8437209419043462667">ABŞ</translation>
 <translation id="8456681095658380701">Yanlış ad</translation>
+<translation id="8459404855768962328">Bu elementi kopyalasanız, '<ph name="DESTINATION_NAME" />' paylaşılan qovluğunu görə bilən hər kəslə paylaşacaqdır.</translation>
 <translation id="8461467696380332069">Fayla sağ düymə ilə toxunun və rəfdəki fayllarınıza sürətli giriş üçün "Rəfə bərkidin" seçimini edin.</translation>
 <translation id="8463494891489624050">Vyetnam dili (VIQR)</translation>
 <translation id="8466234950814670489">Tar arxivi</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_de.xtb b/ui/chromeos/translations/ui_chromeos_strings_de.xtb
index 9ed91403..81c03c1e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_de.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_de.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">Bulgarisch mit phonetischer Tastatur</translation>
 <translation id="5605830556594064952">USA – Dvorak</translation>
 <translation id="5625294776298156701">Tamil mit Tamil99-Tastatur</translation>
+<translation id="5633226425545095130">Wenn Sie dieses Element verschieben, wird es für alle Personen freigegeben, die den freigegebenen Ordner „<ph name="DESTINATION_NAME" />“ sehen können.</translation>
 <translation id="5649768706273821470">Anhören</translation>
 <translation id="5678784840044122290">Die Linux-Anwendung ist in Ihrem Terminal verfügbar. Möglicherweise sehen Sie auch ein Symbol in Ihrem Launcher.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Die Verbindung zu einem Archiv oder einem virtuellen Datenträger kann nicht getrennt werden<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">Abmessungen</translation>
 <translation id="8437209419043462667">USA</translation>
 <translation id="8456681095658380701">Ungültiger Name</translation>
+<translation id="8459404855768962328">Wenn Sie dieses Element kopieren, wird es für alle Personen freigegeben, die den freigegebenen Ordner „<ph name="DESTINATION_NAME" />“ sehen können.</translation>
 <translation id="8461467696380332069">Klicke mit der rechten Maustaste auf eine Datei und wähle „An Ablage anpinnen“ aus, um über die Ablage schnell auf deine Dateien zugreifen zu können.</translation>
 <translation id="8463494891489624050">Vietnamesisch (VIQR)</translation>
 <translation id="8466234950814670489">Tar-Archiv</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
index 84b414f8..f9f6159 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">Búlgaro con teclado fonético</translation>
 <translation id="5605830556594064952">Inglés (Estados Unidos; Dvorak)</translation>
 <translation id="5625294776298156701">Tamil con teclado Tamil99</translation>
+<translation id="5633226425545095130">Si mueves este elemento, se compartirá con las personas que pueden ver la carpeta compartida "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="5649768706273821470">Escuchar</translation>
 <translation id="5678784840044122290">La app de Linux estará disponible en tu terminal y es posible que también muestre un ícono en el Selector.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />No se puede cerrar la conexión de un archivo o disco virtual<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">Dimensiones</translation>
 <translation id="8437209419043462667">Inglés (Estados Unidos)</translation>
 <translation id="8456681095658380701">Nombre no válido</translation>
+<translation id="8459404855768962328">Si copias este elemento, se compartirá con las personas que pueden ver la carpeta compartida "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="8461467696380332069">Haz clic con el botón derecho en un archivo y selecciona "Fijar en la barra" para crear un acceso rápido en la barra.</translation>
 <translation id="8463494891489624050">Vietnamita (VIQR)</translation>
 <translation id="8466234950814670489">Archivo Tar</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es.xtb b/ui/chromeos/translations/ui_chromeos_strings_es.xtb
index 0bbdb50..e36f939 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_es.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_es.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">Búlgaro con teclado fonético</translation>
 <translation id="5605830556594064952">Estados Unidos (Dvorak)</translation>
 <translation id="5625294776298156701">Tamil con teclado Tamil99</translation>
+<translation id="5633226425545095130">Si mueves este elemento, se compartirá con todos los usuarios que puedan ver la carpeta compartida "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="5649768706273821470">Escuchar</translation>
 <translation id="5678784840044122290">La aplicación de Linux estará disponible en tu terminal y también es posible que se te muestre un icono en el menú de aplicaciones.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />No se puede desconectar de un archivo o disco virtual<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">Dimensiones</translation>
 <translation id="8437209419043462667">EE. UU.</translation>
 <translation id="8456681095658380701">El nombre no es válido</translation>
+<translation id="8459404855768962328">Si copias este elemento, se compartirá con todos los usuarios que puedan ver la carpeta compartida "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="8461467696380332069">Haz clic con el botón derecho en un archivo y selecciona Fijar en la estantería para poder acceder con rapidez a los archivos de la estantería.</translation>
 <translation id="8463494891489624050">Vietnamita (VIQR)</translation>
 <translation id="8466234950814670489">Archivo tar</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
index f194b23d..4ccf4a5 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">Bulgare avec clavier phonétique</translation>
 <translation id="5605830556594064952">Dvorak américain</translation>
 <translation id="5625294776298156701">Tamoul (avec clavier Tamil99)</translation>
+<translation id="5633226425545095130">Si vous déplacez cet élément dans le dossier partagé "<ph name="DESTINATION_NAME" />", toute personne autorisée y aura accès.</translation>
 <translation id="5649768706273821470">Écouter</translation>
 <translation id="5678784840044122290">L'application Linux sera disponible dans votre terminal et une icône peut également apparaître dans votre lanceur d'applications.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Impossible de démonter l'archive ou le disque virtuel<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">Dimensions</translation>
 <translation id="8437209419043462667">Américain</translation>
 <translation id="8456681095658380701">Ce nom n'est pas valide.</translation>
+<translation id="8459404855768962328">Si vous copiez cet élément dans le dossier partagé "<ph name="DESTINATION_NAME" />", toute personne autorisée y aura accès.</translation>
 <translation id="8461467696380332069">Effectuez un clic droit sur un fichier, puis sélectionnez "Épingler sur l'étagère" pour y accéder ensuite plus rapidement.</translation>
 <translation id="8463494891489624050">Vietnamien (VIQR)</translation>
 <translation id="8466234950814670489">Archive TAR</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_id.xtb b/ui/chromeos/translations/ui_chromeos_strings_id.xtb
index a817da7..b1246b6 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_id.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_id.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">Bulgaria dengan keyboard Fonetik</translation>
 <translation id="5605830556594064952">Dvorak AS</translation>
 <translation id="5625294776298156701">Tamil dengan keyboard Tamil99</translation>
+<translation id="5633226425545095130">Memindahkan item ini akan membagikannya ke siapa saja yang dapat melihat folder bersama '<ph name="DESTINATION_NAME" />'.</translation>
 <translation id="5649768706273821470">Dengar</translation>
 <translation id="5678784840044122290">Aplikasi Linux akan tersedia dalam Terminal Anda dan juga mungkin menampilkan ikon di Peluncur.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Tidak dapat memutuskan hubungan dari arsip atau disk virtual<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">Dimensi</translation>
 <translation id="8437209419043462667">AS</translation>
 <translation id="8456681095658380701">Nama tidak valid</translation>
+<translation id="8459404855768962328">Menyalin item ini akan membagikannya ke siapa saja yang dapat melihat folder bersama '<ph name="DESTINATION_NAME" />'.</translation>
 <translation id="8461467696380332069">Klik kanan file, lalu pilih "Sematkan ke Rak" untuk mendapatkan akses cepat ke file Anda di rak.</translation>
 <translation id="8463494891489624050">VIQR Vietnam</translation>
 <translation id="8466234950814670489">Arsip Tar</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_it.xtb b/ui/chromeos/translations/ui_chromeos_strings_it.xtb
index 49c7c92..3918025d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_it.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_it.xtb
@@ -450,6 +450,7 @@
 <translation id="5602622065581044566">Bulgaro con tastiera fonetica</translation>
 <translation id="5605830556594064952">Dvorak USA</translation>
 <translation id="5625294776298156701">Tamil con tastiera Tamil99</translation>
+<translation id="5633226425545095130">Se lo sposti, questo elemento verrà condiviso con chiunque abbia accesso alla cartella condivisa "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="5649768706273821470">Ascolta</translation>
 <translation id="5678784840044122290">L'applicazione Linux sarà disponibile nel terminale e potrebbe anche essere visualizzata un'icona nell'Avvio app.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Impossibile disconnettere un archivio o un disco virtuale<ph name="END_BOLD" />
@@ -724,6 +725,7 @@
 <translation id="8395901698320285466">Dimensioni</translation>
 <translation id="8437209419043462667">USA</translation>
 <translation id="8456681095658380701">Nome non valido</translation>
+<translation id="8459404855768962328">Se lo copi, questo elemento verrà condiviso con chiunque abbia accesso alla cartella condivisa "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="8461467696380332069">Fai clic con il pulsante destro del mouse su un file e seleziona "Blocca sullo shelf" per accedervi rapidamente dallo shelf.</translation>
 <translation id="8463494891489624050">Vietnamita VIQR</translation>
 <translation id="8466234950814670489">Archivio Tar</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
index 9d8fa37..cf83fd5 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">ブルガリア語(表音)キーボード</translation>
 <translation id="5605830556594064952">US Dvorak 配列</translation>
 <translation id="5625294776298156701">タミル語(Tamil99)キーボード</translation>
+<translation id="5633226425545095130">このアイテムを移動すると、アイテムは共有フォルダ「<ph name="DESTINATION_NAME" />」を閲覧できるすべてのユーザーと共有されます。</translation>
 <translation id="5649768706273821470">聴く</translation>
 <translation id="5678784840044122290">Linux アプリケーションはお使いのデバイスでご利用いただけるようになります。ランチャーにアイコンが追加されている可能性もあります。</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />アーカイブまたは仮想ディスクから切断できません<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">サイズ</translation>
 <translation id="8437209419043462667">US</translation>
 <translation id="8456681095658380701">名前が無効です</translation>
+<translation id="8459404855768962328">このアイテムをコピーすると、アイテムは共有フォルダ「<ph name="DESTINATION_NAME" />」を閲覧できるすべてのユーザーと共有されます。</translation>
 <translation id="8461467696380332069">ファイルを右クリックして、[シェルフに固定] を選択すると、シェルフからファイルに簡単にアクセスできます。</translation>
 <translation id="8463494891489624050">ベトナム語(VIQR)</translation>
 <translation id="8466234950814670489">tar アーカイブ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
index 56952f2..be6cc24a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
@@ -450,6 +450,7 @@
 <translation id="5602622065581044566">Болгар (фонетикалық пернетақтамен)</translation>
 <translation id="5605830556594064952">АҚШ Дворак</translation>
 <translation id="5625294776298156701">Тамиль (Tamil99 пернетақтасымен)</translation>
+<translation id="5633226425545095130">Егер бұл элементті тасымалдасаңыз, ол "<ph name="DESTINATION_NAME" />" ортақ қалтасын көре алатын кез келген адаммен бөлісіледі.</translation>
 <translation id="5649768706273821470">Тыңдау</translation>
 <translation id="5678784840044122290">Linux қолданбасы терминалда қолжетімді болады және Launcher қолданбасында белгіше көрсетіледі.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Мұрағаттан немесе виртуалды дискіден ажырату мүмкін емес<ph name="END_BOLD" />
@@ -724,6 +725,7 @@
 <translation id="8395901698320285466">Өлшемдер</translation>
 <translation id="8437209419043462667">АҚШ</translation>
 <translation id="8456681095658380701">Жарамсыз атау</translation>
+<translation id="8459404855768962328">Егер бұл элементті көшірсеңіз, ол "<ph name="DESTINATION_NAME" />" ортақ қалтасын көре алатын кез келген адаммен бөлісіледі.</translation>
 <translation id="8461467696380332069">Сөредегі файлдарға жылдам кіру үшін файлды тінтуірдің оң жақ түймесімен басып, "Сөреге бекіту" тармағын таңдаңыз.</translation>
 <translation id="8463494891489624050">Вьетнам (VIQR)</translation>
 <translation id="8466234950814670489">TAR мұрағаты</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ko.xtb b/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
index 57308a22..f77e257 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">불가리아어(표음 키보드)</translation>
 <translation id="5605830556594064952">영어(미국) 드보락</translation>
 <translation id="5625294776298156701">타밀어(Tamil99 키보드)</translation>
+<translation id="5633226425545095130">이 항목을 옮기면 '<ph name="DESTINATION_NAME" />' 공유 폴더를 볼 수 있는 모든 사용자와 항목이 공유됩니다.</translation>
 <translation id="5649768706273821470">듣기</translation>
 <translation id="5678784840044122290">단말기 내에서 Linux 애플리케이션을 사용할 수 있게 되며 런처에 아이콘이 표시될 수도 있습니다.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />아카이브 또는 가상 디스크의 연결을 해제할 수 없습니다.<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">크기</translation>
 <translation id="8437209419043462667">영어(미국)</translation>
 <translation id="8456681095658380701">잘못된 이름입니다.</translation>
+<translation id="8459404855768962328">이 항목을 복사하면 '<ph name="DESTINATION_NAME" />' 공유 폴더를 볼 수 있는 모든 사용자와 항목이 공유됩니다.</translation>
 <translation id="8461467696380332069">파일을 마우스 오른쪽 버튼으로 클릭하고 실행기에서 파일에 빠르게 액세스할 수 있도록 '실행기에 고정'을 선택합니다.</translation>
 <translation id="8463494891489624050">베트남어(VIQR)</translation>
 <translation id="8466234950814670489">Tar 압축 파일</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
index f7bdedc..7b7398f 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
@@ -450,6 +450,7 @@
 <translation id="5602622065581044566">Болгарча (фонетикалык баскычтоп)</translation>
 <translation id="5605830556594064952">US Dvorak</translation>
 <translation id="5625294776298156701">Тамилче (Tamil99 баскычтобу)</translation>
+<translation id="5633226425545095130">Эгер бул нерсени жылдырсаңыз, ал "<ph name="DESTINATION_NAME" />" бөлүшүлгөн папкасын көрө алган адамдардын баары менен бөлүшүлөт.</translation>
 <translation id="5649768706273821470">Угуу</translation>
 <translation id="5678784840044122290">Linux колдонмосу Терминалыңызда жеткиликтүү болуп, Жүргүзгүчтө анын сүрөтчөсү көрүнүшү мүмкүн.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Архивден же виртуалдуу дисктен ажыратуу мүмкүн эмес<ph name="END_BOLD" />
@@ -724,6 +725,7 @@
 <translation id="8395901698320285466">Чен-өлчөмү</translation>
 <translation id="8437209419043462667">АКШ</translation>
 <translation id="8456681095658380701">Жараксыз ат</translation>
+<translation id="8459404855768962328">Эгер бул нерсени көчүрсөңүз, ал "<ph name="DESTINATION_NAME" />" бөлүшүлгөн папкасын көрө алган адамдардын баары менен бөлүшүлөт.</translation>
 <translation id="8461467696380332069">Текчедеги файлдарды ыкчам ачуу мүмкүнчүлүгү үчүн курсорду файлдын үстүнө алып келип, чычкандын оң баскычын басып, "Текчеге кадоо" дегенди тандаңыз.</translation>
 <translation id="8463494891489624050">Вьетнамча (VIQR)</translation>
 <translation id="8466234950814670489">Tar архиви</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ml.xtb b/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
index 5349c3e7..48ee3eb 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">ഫൊണറ്റിക് കീബോർഡ് ഉള്ള ബൾഗേറിയൻ</translation>
 <translation id="5605830556594064952">യുകെ ദ്വരോക്ക്</translation>
 <translation id="5625294776298156701">Tamil99 കീബോർഡ് ഉള്ള തമിഴ്</translation>
+<translation id="5633226425545095130">ഈ ഇനം നീക്കുന്നതിലൂടെ, '<ph name="DESTINATION_NAME" />' എന്ന പങ്കിട്ട ഫോൾഡർ കാണാനാകുന്ന എല്ലാവരുമായും അത് പങ്കിടും.</translation>
 <translation id="5649768706273821470">കേൾക്കുക</translation>
 <translation id="5678784840044122290">നിങ്ങളുടെ ടെർമിനലിനുള്ളിൽ Linux അപ്ലിക്കേഷൻ ലഭ്യമാകും, നിങ്ങളുടെ ലോഞ്ചറിൽ അതിന്റെ ഐക്കൺ കാണിച്ചേക്കാം.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />ഒരു ആർക്കൈവിൽ നിന്നോ വെർച്വൽ ഡിസ്‌ക്കിൽ നിന്നോ വിച്ഛേദിക്കാനാവുന്നില്ല<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">തലങ്ങൾ</translation>
 <translation id="8437209419043462667">യുഎസ്</translation>
 <translation id="8456681095658380701">അസാധുവായ പേര്</translation>
+<translation id="8459404855768962328">ഈ ഇനം പകർത്തുന്നതിലൂടെ, '<ph name="DESTINATION_NAME" />' എന്ന പങ്കിട്ട ഫോൾഡർ കാണാനാകുന്ന എല്ലാവരുമായും അത് പങ്കിടും.</translation>
 <translation id="8461467696380332069">ഷെൽഫിലെ നിങ്ങളുടെ ഫയലുകളിലേക്ക് അതിവേഗ ആക്‌സസ് ലഭിക്കാൻ, ഫയലിൽ വലത്-ക്ലിക്ക് ചെയ്ത് "ഷെൽഫിലേക്ക് പിൻ ചെയ്യുക" തിരഞ്ഞെടുക്കുക.</translation>
 <translation id="8463494891489624050">വിയറ്റ്‌നാമീസ് VIQR</translation>
 <translation id="8466234950814670489">Tar ആർക്കൈവ്</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
index c3202773..2b2fb9d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
@@ -41,6 +41,7 @@
 <translation id="1395262318152388157">सिक स्लाइडर</translation>
 <translation id="1404323374378969387">नर्वेली</translation>
 <translation id="1430915738399379752">प्रिन्ट गर्नुहोस्</translation>
+<translation id="1433628812591023318">फाइल ड्र्याग गरेर Parallels Desktop मा ड्रप गर्न सो फाइल सारेर 'Windows फाइलहरू' फोल्डरमा लैजानु पर्ने हुन्छ।</translation>
 <translation id="1435838927755162558">Parallels Desktop सँग फोल्डर सेयर गर्नुहोस्</translation>
 <translation id="1467432559032391204">बाँया</translation>
 <translation id="1471718551822868769">स्लोभाकियाली</translation>
@@ -610,6 +611,7 @@
 <translation id="7417453074306512035">इथियोपिक किबोर्ड</translation>
 <translation id="7417705661718309329">Google नक्सा</translation>
 <translation id="7460898608667578234">युक्रेनियन</translation>
+<translation id="7486315294984620427">फाइल ड्र्याग गरेर Parallels Desktop मा ड्रप गर्न सो फाइल कपी गरेर 'Windows फाइलहरू' फोल्डरमा पेस्ट गर्नु पर्ने हुन्छ।</translation>
 <translation id="7489215562877293245"><ph name="FILE_COUNT" /> फेला पर्‍यो
     <ph name="LINE_BREAK1" />
     <ph name="BEGIN_LINK" />Google ड्राइभ<ph name="END_LINK" /> मा ब्याकअप गर्न तयार</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_nl.xtb b/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
index d12f33d5..75e9cd5 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
@@ -452,6 +452,7 @@
 <translation id="5602622065581044566">Bulgaars met fonetisch toetsenbord</translation>
 <translation id="5605830556594064952">Amerikaans Dvorak</translation>
 <translation id="5625294776298156701">Tamil met Tamil99-toetsenbord</translation>
+<translation id="5633226425545095130">Als je dit item verplaatst, wordt het gedeeld met iedereen die de gedeelde map <ph name="DESTINATION_NAME" /> kan bekijken.</translation>
 <translation id="5649768706273821470">Luisteren</translation>
 <translation id="5678784840044122290">De Linux-app is beschikbaar in je terminal. Mogelijk staat er ook een icoon van de app in de Launcher.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Kan een archiveringsschijf of virtuele schijf niet deactiveren<ph name="END_BOLD" />
@@ -726,6 +727,7 @@
 <translation id="8395901698320285466">Afmetingen</translation>
 <translation id="8437209419043462667">Amerikaans</translation>
 <translation id="8456681095658380701">Ongeldige naam</translation>
+<translation id="8459404855768962328">Als je dit item kopieert, wordt het gedeeld met iedereen die de gedeelde map <ph name="DESTINATION_NAME" /> kan bekijken.</translation>
 <translation id="8461467696380332069">Klik met de rechtermuisknop op een bestand en selecteer 'Vastzetten op plank' om snel toegang tot je bestanden te krijgen op de plank.</translation>
 <translation id="8463494891489624050">Vietnamees (VIQR)</translation>
 <translation id="8466234950814670489">Tar-archief</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pa.xtb b/ui/chromeos/translations/ui_chromeos_strings_pa.xtb
index c388178..15de41c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pa.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pa.xtb
@@ -450,6 +450,7 @@
 <translation id="5602622065581044566">ਧੁਨੀਆਤਮਿਕ ਕੀ-ਬੋਰਡ ਦੇ ਨਾਲ ਬੁਲਗਾਰੀਆਈ</translation>
 <translation id="5605830556594064952">US Dvorak</translation>
 <translation id="5625294776298156701">ਤਮਿਲ99 ਕੀ-ਬੋਰਡ ਦੇ ਨਾਲ ਤਮਿਲ</translation>
+<translation id="5633226425545095130">ਇਸ ਆਈਟਮ ਦੀ ਜਗ੍ਹਾ ਬਦਲਣ ਨਾਲ ਇਸਨੂੰ ਹਰ ਉਸ ਵਿਅਕਤੀ ਨਾਲ ਸਾਂਝਾ ਕੀਤਾ ਜਾਵੇਗਾ ਜੋ ਸਾਂਝਾ ਕੀਤੇ ਫੋਲਡਰ '<ph name="DESTINATION_NAME" />' ਨੂੰ ਦੇਖ ਸਕਦੇ ਹਨ।</translation>
 <translation id="5649768706273821470">ਸੁਣਿਆ</translation>
 <translation id="5678784840044122290">Linux ਐਪਲੀਕੇਸ਼ਨ ਤੁਹਾਡੇ ਟਰਮੀਨਲ ਵਿੱਚ ਉਪਲਬਧ ਹੋਵੇਗੀ ਅਤੇ ਸ਼ਾਇਦ ਇਹ ਤੁਹਾਡੇ ਲਾਂਚਰ ਵਿੱਚ ਕੋਈ ਪ੍ਰਤੀਕ ਵੀ ਦਿਖਾ ਸਕਦੀ ਹੈ।</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />ਕਿਸੇ ਪੁਰਾਲੇਖ ਜਾਂ ਵਰਚੁਅਲ ਡਿਸਕ ਤੋਂ ਡਿਸਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ<ph name="END_BOLD" />
@@ -724,6 +725,7 @@
 <translation id="8395901698320285466">ਮਾਪ</translation>
 <translation id="8437209419043462667">US</translation>
 <translation id="8456681095658380701">ਅਵੈਧ ਨਾਮ</translation>
+<translation id="8459404855768962328">ਇਸ ਆਈਟਮ ਨੂੰ ਕਾਪੀ ਕਰਨ ਨਾਲ ਇਸਨੂੰ ਹਰ ਉਸ ਵਿਅਕਤੀ ਨਾਲ ਸਾਂਝਾ ਕੀਤਾ ਜਾਵੇਗਾ ਜੋ ਸਾਂਝਾ ਕੀਤੇ ਫੋਲਡਰ '<ph name="DESTINATION_NAME" />' ਨੂੰ ਦੇਖ ਸਕਦੇ ਹਨ।</translation>
 <translation id="8461467696380332069">ਫ਼ਾਈਲ 'ਤੇ ਸੱਜਾ-ਕਲਿੱਕ ਕਰੋ ਅਤੇ ਸ਼ੈਲਫ ਵਿੱਚ ਤੁਹਾਡੀਆਂ ਫ਼ਾਈਲਾਂ ਤੱਕ ਤਤਕਾਲ ਪਹੁੰਚ ਕਰਨ ਲਈ "ਸ਼ੈਲਫ 'ਤੇ ਪਿੰਨ ਕਰੋ" ਚੁਣੋ।</translation>
 <translation id="8463494891489624050">ਵੀਅਤਨਾਮੀ VIQR</translation>
 <translation id="8466234950814670489">Tar ਪੁਰਾਲੇਖ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ru.xtb b/ui/chromeos/translations/ui_chromeos_strings_ru.xtb
index d8b5239..0886948 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ru.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ru.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">Болгарский, фонетическая раскладка</translation>
 <translation id="5605830556594064952">США (раскладка Дворака)</translation>
 <translation id="5625294776298156701">Тамильский, раскладка Tamil99</translation>
+<translation id="5633226425545095130">Если вы переместите этот объект, то его увидят все пользователи, у которых есть доступ к общей папке "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="5649768706273821470">Прослушать</translation>
 <translation id="5678784840044122290">Приложение Linux будет доступно в терминале. Кроме того, на панель запуска мог быть добавлен значок.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Не удалось отключиться от архива или электронного диска<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">Размеры</translation>
 <translation id="8437209419043462667">США</translation>
 <translation id="8456681095658380701">Недопустимое название</translation>
+<translation id="8459404855768962328">Если вы скопируете этот объект, то его увидят все пользователи, у которых есть доступ к общей папке "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="8461467696380332069">Нажмите на файл правой кнопкой мыши и выберите "Закрепить на панели запуска".</translation>
 <translation id="8463494891489624050">Вьетнамский, раскладка VIQR</translation>
 <translation id="8466234950814670489">Архив TAR</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sq.xtb b/ui/chromeos/translations/ui_chromeos_strings_sq.xtb
index 3ee4615..503c364 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sq.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sq.xtb
@@ -450,6 +450,7 @@
 <translation id="5602622065581044566">Bullgarisht me tastierë fonetike</translation>
 <translation id="5605830556594064952">Amerikane Dvorak</translation>
 <translation id="5625294776298156701">Tamilisht me tastierë Tamil99</translation>
+<translation id="5633226425545095130">Zhvendosja e këtij artikulli do ta ndajë atë me të gjithë ata që mund ta shikojnë dosjen e ndarë "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="5649768706273821470">Dëgjo</translation>
 <translation id="5678784840044122290">Aplikacioni për Linux do të ofrohet në "Terminalin" tënd dhe mund dhe të shfaqë një ikonë te "Nisësi" yt.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Nuk mund të shkëputet nga një arkiv ose disk virtual<ph name="END_BOLD" />
@@ -724,6 +725,7 @@
 <translation id="8395901698320285466">Përmasat</translation>
 <translation id="8437209419043462667">Amerikane</translation>
 <translation id="8456681095658380701">Emër i pavlefshëm</translation>
+<translation id="8459404855768962328">Kopjimi i këtij artikulli do ta ndajë atë me të gjithë ata që mund ta shikojnë dosjen e ndarë "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="8461467696380332069">Kliko me të djathtin te një skedar dhe zgjidh "Gozhdo te rafti" për qasje të shpejtë te skedarët e tu në raft.</translation>
 <translation id="8463494891489624050">Vietnamisht VIQR</translation>
 <translation id="8466234950814670489">Arkivi i mbledhjes</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
index cd17170..b90af46 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">பல்கேரியன் - ஒலிப்புமுறை கீபோர்டு</translation>
 <translation id="5605830556594064952">யு.எஸ். டிவாரக்</translation>
 <translation id="5625294776298156701">தமிழ் - Tamil99 கீபோர்டு</translation>
+<translation id="5633226425545095130">இந்தக் கோப்பினை நகர்த்தினால் '<ph name="DESTINATION_NAME" />' என்ற பகிரப்பட்ட கோப்புறையைப் பார்க்கக்கூடிய அனைவருடனும் இது பகிரப்படும்.</translation>
 <translation id="5649768706273821470">கேள்</translation>
 <translation id="5678784840044122290">இந்த Linux ஆப்ஸ் உங்கள் முனையத்திற்குள் இருக்கும், அத்துடன் உங்கள் தொடக்கியிலும் ஒரு ஐகான் காண்பிக்கப்படலாம்.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />காப்பகம் அல்லது விர்ச்சுவல் வட்டிலிருந்து இணைப்பை நீக்க முடியவில்லை<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">பரிமாணங்கள்</translation>
 <translation id="8437209419043462667">யு.எஸ்.</translation>
 <translation id="8456681095658380701">தவறான பெயர்</translation>
+<translation id="8459404855768962328">இந்தக் கோப்பினை நகலெடுத்தால் '<ph name="DESTINATION_NAME" />' என்ற பகிரப்பட்ட கோப்புறையைப் பார்க்கக்கூடிய அனைவருடனும் இது பகிரப்படும்.</translation>
 <translation id="8461467696380332069">கோப்பினை வலது கிளிக் செய்து "ஷெல்ஃபில் பின் செய்" என்பதைத் தேர்ந்தெடுக்கவும், இதன் மூலம் ஷெல்ஃபிலுள்ள கோப்புகளுக்கான விரைவு அணுகலைப் பெறலாம்.</translation>
 <translation id="8463494891489624050">வியட்நாமிஸ் (VIQR)</translation>
 <translation id="8466234950814670489">Tar archive</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
index dea5101..b83b86243 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">Fonetik klavye ile Bulgarca</translation>
 <translation id="5605830556594064952">ABD Dvorak</translation>
 <translation id="5625294776298156701">Tamil99 klavye ile Tamilce</translation>
+<translation id="5633226425545095130">Bu öğe, "<ph name="DESTINATION_NAME" />" adlı paylaşılan klasöre taşınırsa bu klasörü görebilen herkesle paylaşılır.</translation>
 <translation id="5649768706273821470">Dinle</translation>
 <translation id="5678784840044122290">Linux uygulaması sizin Terminalinizde mevcut. Ayrıca Başlatıcınızda bir simgesini görebilirsiniz.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Arşivle veya sanal diskle olan bağlantı kesilemiyor<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">Boyutlar</translation>
 <translation id="8437209419043462667">ABD</translation>
 <translation id="8456681095658380701">Geçersiz ad</translation>
+<translation id="8459404855768962328">Bu öğe, "<ph name="DESTINATION_NAME" />" adlı paylaşılan klasöre kopyalanırsa bu klasörü görebilen herkesle paylaşılır.</translation>
 <translation id="8461467696380332069">Raftaki dosyalarınıza hızlı erişim için dosyayı sağ tıklayıp "Rafa sabitle"yi seçin.</translation>
 <translation id="8463494891489624050">Vietnamca VIQR</translation>
 <translation id="8466234950814670489">Tar arşivi</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_uk.xtb b/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
index d908fbc..29141fb 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">Болгарська, фонетична розкладка</translation>
 <translation id="5605830556594064952">Розкладка Дворака (США)</translation>
 <translation id="5625294776298156701">Тамільська, розкладка Tamil99</translation>
+<translation id="5633226425545095130">Якщо перемістити цей файл, до нього отримають доступ усі користувачі, які можуть переглядати спільну папку "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="5649768706273821470">Слухати</translation>
 <translation id="5678784840044122290">Додаток Linux буде доступний в терміналі, а його значок може відображатися на панелі запуску.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Не вдається від’єднатися від архіву чи віртуального диска<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">Розміри</translation>
 <translation id="8437209419043462667">Американська</translation>
 <translation id="8456681095658380701">Недійсне ім’я</translation>
+<translation id="8459404855768962328">Якщо скопіювати цей файл, до нього отримають доступ усі користувачі, які можуть переглядати спільну папку "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="8461467696380332069">Натисніть правою кнопкою миші на файлі й виберіть "Закріпити на полиці", щоб швидко відкривати його.</translation>
 <translation id="8463494891489624050">В'єтнамська, VIQR</translation>
 <translation id="8466234950814670489">Архів у форматі TAR</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_vi.xtb b/ui/chromeos/translations/ui_chromeos_strings_vi.xtb
index bfb54fa..3a7f0f37 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_vi.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_vi.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">Tiếng Bulgaria bằng bàn phím phiên âm</translation>
 <translation id="5605830556594064952">Dvorak Hoa Kỳ</translation>
 <translation id="5625294776298156701">Tiếng Tamil bằng bàn phím Tamil99</translation>
+<translation id="5633226425545095130">Khi bạn di chuyển mục này, mục này sẽ được chia sẻ với những người có thể xem thư mục dùng chung "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="5649768706273821470">Nghe</translation>
 <translation id="5678784840044122290">Ứng dụng Linux sẽ có trong Thiết bị của bạn và cũng có thể hiển thị một biểu tượng trong Trình chạy.</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />Không thể ngắt kết nối khỏi vùng lưu trữ hoặc ổ đĩa ảo<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">Kích thước</translation>
 <translation id="8437209419043462667">Hoa Kỳ</translation>
 <translation id="8456681095658380701">Tên không hợp lệ</translation>
+<translation id="8459404855768962328">Khi bạn sao chép mục này, mục này sẽ được chia sẻ với những người có thể xem thư mục dùng chung "<ph name="DESTINATION_NAME" />".</translation>
 <translation id="8461467696380332069">Nhấp chuột phải vào một tệp rồi chọn "Ghim vào kệ" để có thể truy cập nhanh vào tệp trong kệ khi cần.</translation>
 <translation id="8463494891489624050">Tiếng Việt (VIQR)</translation>
 <translation id="8466234950814670489">Lưu trữ tar</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
index f303a26..f41c451 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">保加利亞文 (拼音鍵盤)</translation>
 <translation id="5605830556594064952">Dvorak 美式鍵盤</translation>
 <translation id="5625294776298156701">泰米爾文 (Tamil99 鍵盤)</translation>
+<translation id="5633226425545095130">此項目移動至「<ph name="DESTINATION_NAME" />」共用資料夾後,就會與所有看得到該資料夾的使用者共用。</translation>
 <translation id="5649768706273821470">收聽</translation>
 <translation id="5678784840044122290">此 Linux 應用程式將可在終端機上使用,其圖示可能在啟動器中顯示。</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />無法中斷與封存或虛擬磁碟的連線<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">尺寸</translation>
 <translation id="8437209419043462667">美式鍵盤</translation>
 <translation id="8456681095658380701">無效的名稱</translation>
+<translation id="8459404855768962328">此項目複製到「<ph name="DESTINATION_NAME" />」共用資料夾後,就會與所有看得到該資料夾的使用者共用。</translation>
 <translation id="8461467696380332069">在檔案上按一下右鍵,然後選取 [固定至捷徑列],以便在捷徑列中快速存取檔案。</translation>
 <translation id="8463494891489624050">越南文 (VIQR)</translation>
 <translation id="8466234950814670489">Tar 封存檔案</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
index 61a8c738..b0074c3 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
@@ -451,6 +451,7 @@
 <translation id="5602622065581044566">保加利亞文搭配拼音鍵盤</translation>
 <translation id="5605830556594064952">Dvorak 美式配置</translation>
 <translation id="5625294776298156701">泰米爾文搭配 Tamil99 鍵盤</translation>
+<translation id="5633226425545095130">這個項目移動至「<ph name="DESTINATION_NAME" />」共用資料夾後,就會與所有看得到該資料夾的使用者共用。</translation>
 <translation id="5649768706273821470">聆聽</translation>
 <translation id="5678784840044122290">這個 Linux 應用程式將出現在你的終端機上,且可能在啟動器中顯示圖示。</translation>
 <translation id="5686799162999241776"><ph name="BEGIN_BOLD" />無法與封存檔或虛擬磁碟中斷連結<ph name="END_BOLD" />
@@ -725,6 +726,7 @@
 <translation id="8395901698320285466">尺寸</translation>
 <translation id="8437209419043462667">美式配置</translation>
 <translation id="8456681095658380701">名稱無效</translation>
+<translation id="8459404855768962328">這個項目複製到「<ph name="DESTINATION_NAME" />」共用資料夾後,就會與所有看得到該資料夾的使用者共用。</translation>
 <translation id="8461467696380332069">在檔案上按一下滑鼠右鍵,然後選取 [固定至檔案櫃],即可在檔案櫃中快速存取檔案。</translation>
 <translation id="8463494891489624050">越南文 (VIQR)</translation>
 <translation id="8466234950814670489">Tar 封存</translation>
diff --git a/ui/color/color_id.h b/ui/color/color_id.h
index a21130b8..a2c8b44 100644
--- a/ui/color/color_id.h
+++ b/ui/color/color_id.h
@@ -85,6 +85,7 @@
   E(kColorHelpIconInactive, NativeTheme::kColorId_TooltipIcon) \
   E(kColorIcon, NativeTheme::kColorId_DefaultIconColor) \
   E(kColorIconDisabled, NativeTheme::kColorId_DisabledIconColor) \
+  E(kColorIconSecondary, NativeTheme::kColorId_SecondaryIconColor) \
   E(kColorLabelForeground, NativeTheme::kColorId_LabelEnabledColor) \
   E(kColorLabelForegroundDisabled, NativeTheme::kColorId_LabelDisabledColor) \
   E(kColorLabelForegroundSecondary, NativeTheme::kColorId_LabelSecondaryColor) \
diff --git a/ui/color/ui_color_mixer.cc b/ui/color/ui_color_mixer.cc
index 7e1f1bc..cba05290 100644
--- a/ui/color/ui_color_mixer.cc
+++ b/ui/color/ui_color_mixer.cc
@@ -61,6 +61,7 @@
   mixer[kColorHelpIconInactive] = {kColorSecondaryForeground};
   mixer[kColorIcon] = {kColorSecondaryForeground};
   mixer[kColorIconDisabled] = SetAlpha(kColorIcon, gfx::kDisabledControlAlpha);
+  mixer[kColorIconSecondary] = {gfx::kGoogleGrey600};
   mixer[kColorLabelForeground] = {kColorPrimaryForeground};
   mixer[kColorLabelForegroundDisabled] = {kColorDisabledForeground};
   mixer[kColorLabelForegroundSecondary] = {kColorSecondaryForeground};
diff --git a/ui/native_theme/common_theme.cc b/ui/native_theme/common_theme.cc
index 0726aaf..4436af30 100644
--- a/ui/native_theme/common_theme.cc
+++ b/ui/native_theme/common_theme.cc
@@ -269,6 +269,8 @@
           NativeTheme::kColorId_DefaultIconColor, color_scheme);
       return SkColorSetA(icon, gfx::kDisabledControlAlpha);
     }
+    case NativeTheme::kColorId_SecondaryIconColor:
+      return gfx::kGoogleGrey600;
 
     // Label
     case NativeTheme::kColorId_LabelDisabledColor: {
diff --git a/ui/native_theme/native_theme_color_id.h b/ui/native_theme/native_theme_color_id.h
index 9cfa1244..64e6d42 100644
--- a/ui/native_theme/native_theme_color_id.h
+++ b/ui/native_theme/native_theme_color_id.h
@@ -168,7 +168,8 @@
   OP(kColorId_AlertSeverityHigh),                                              \
   /* Colors for icons in non-menu contexts. */                                 \
   OP(kColorId_DefaultIconColor),                                               \
-  OP(kColorId_DisabledIconColor)
+  OP(kColorId_DisabledIconColor),                                              \
+  OP(kColorId_SecondaryIconColor)
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 #define NATIVE_THEME_CHROMEOS_COLOR_IDS                                        \
diff --git a/ui/native_theme/native_theme_utils.cc b/ui/native_theme/native_theme_utils.cc
index a55c911..2ed2a1a 100644
--- a/ui/native_theme/native_theme_utils.cc
+++ b/ui/native_theme/native_theme_utils.cc
@@ -90,6 +90,7 @@
         {NTCID::kColorId_DialogForeground, kColorDialogForeground},
         {NTCID::kColorId_DisabledButtonBorderColor, kColorButtonBorderDisabled},
         {NTCID::kColorId_DisabledIconColor, kColorIconDisabled},
+        {NTCID::kColorId_SecondaryIconColor, kColorIconSecondary},
         {NTCID::kColorId_DisabledMenuItemForegroundColor,
           kColorMenuItemForegroundDisabled},
         {NTCID::kColorId_DropdownBackgroundColor, kColorDropdownBackground},
diff --git a/weblayer/browser/infobar_service.cc b/weblayer/browser/infobar_service.cc
index 7eefafc8..37af3091 100644
--- a/weblayer/browser/infobar_service.cc
+++ b/weblayer/browser/infobar_service.cc
@@ -4,13 +4,6 @@
 
 #include "weblayer/browser/infobar_service.h"
 
-#include "build/build_config.h"
-
-#if defined(OS_ANDROID)
-#include "base/bind.h"
-#include "components/infobars/android/confirm_infobar.h"
-#endif
-
 namespace weblayer {
 
 InfoBarService::InfoBarService(content::WebContents* web_contents)
@@ -18,13 +11,6 @@
 
 InfoBarService::~InfoBarService() {}
 
-#if defined(OS_ANDROID)
-std::unique_ptr<infobars::InfoBar> InfoBarService::CreateConfirmInfoBar(
-    std::unique_ptr<ConfirmInfoBarDelegate> delegate) {
-  return std::make_unique<infobars::ConfirmInfoBar>(std::move(delegate));
-}
-#endif  // if defined(OS_ANDROID)
-
 void InfoBarService::WebContentsDestroyed() {
   // The WebContents is going away; be aggressively paranoid and delete
   // ourselves lest other parts of the system attempt to add infobars or use
diff --git a/weblayer/browser/infobar_service.h b/weblayer/browser/infobar_service.h
index bf21003..d267858 100644
--- a/weblayer/browser/infobar_service.h
+++ b/weblayer/browser/infobar_service.h
@@ -5,18 +5,9 @@
 #ifndef WEBLAYER_BROWSER_INFOBAR_SERVICE_H_
 #define WEBLAYER_BROWSER_INFOBAR_SERVICE_H_
 
-#include <memory>
-#include <vector>
-
-#include "base/macros.h"
-#include "build/build_config.h"
 #include "components/infobars/content/content_infobar_manager.h"
 #include "content/public/browser/web_contents_user_data.h"
 
-#if defined(OS_ANDROID)
-#include "components/infobars/android/infobar_android.h"
-#endif
-
 namespace content {
 class WebContents;
 }
@@ -33,10 +24,6 @@
   InfoBarService(const InfoBarService&) = delete;
   InfoBarService& operator=(const InfoBarService&) = delete;
 
-  // InfoBarManager:
-  std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar(
-      std::unique_ptr<ConfirmInfoBarDelegate> delegate) override;
-
  protected:
   explicit InfoBarService(content::WebContents* web_contents);
 
diff --git a/weblayer/browser/no_state_prefetch/prerender_controller_impl.cc b/weblayer/browser/no_state_prefetch/prerender_controller_impl.cc
index 7c7687b..8a5a512 100644
--- a/weblayer/browser/no_state_prefetch/prerender_controller_impl.cc
+++ b/weblayer/browser/no_state_prefetch/prerender_controller_impl.cc
@@ -51,4 +51,13 @@
       /* bounds= */ gfx::Rect());
 }
 
+void PrerenderControllerImpl::DestroyAllContents() {
+  auto* no_state_prefetch_manager =
+      NoStatePrefetchManagerFactory::GetForBrowserContext(browser_context_);
+  DCHECK(no_state_prefetch_manager);
+
+  no_state_prefetch_manager->DestroyAllContents(
+      prerender::FINAL_STATUS_APP_TERMINATING);
+}
+
 }  // namespace weblayer
diff --git a/weblayer/browser/no_state_prefetch/prerender_controller_impl.h b/weblayer/browser/no_state_prefetch/prerender_controller_impl.h
index eb368a9..f26d8bf7 100644
--- a/weblayer/browser/no_state_prefetch/prerender_controller_impl.h
+++ b/weblayer/browser/no_state_prefetch/prerender_controller_impl.h
@@ -36,6 +36,7 @@
 
   // PrerenderController
   void Prerender(const GURL& url) override;
+  void DestroyAllContents() override;
 
  private:
   content::BrowserContext* browser_context_;
diff --git a/weblayer/public/prerender_controller.h b/weblayer/public/prerender_controller.h
index 96e5365..f794d74 100644
--- a/weblayer/public/prerender_controller.h
+++ b/weblayer/public/prerender_controller.h
@@ -21,6 +21,7 @@
 class PrerenderController {
  public:
   virtual void Prerender(const GURL& url) = 0;
+  virtual void DestroyAllContents() = 0;
 
  protected:
   virtual ~PrerenderController() = default;
diff --git a/weblayer/shell/browser/shell.cc b/weblayer/shell/browser/shell.cc
index 1ba2ee4..5aa35e3 100644
--- a/weblayer/shell/browser/shell.cc
+++ b/weblayer/shell/browser/shell.cc
@@ -21,6 +21,7 @@
 #include "weblayer/browser/profile_impl.h"
 #include "weblayer/browser/tab_impl.h"
 #include "weblayer/public/navigation_controller.h"
+#include "weblayer/public/prerender_controller.h"
 
 namespace weblayer {
 
@@ -64,6 +65,10 @@
   // Always destroy WebContents before calling PlatformExit(). WebContents
   // destruction sequence may depend on the resources destroyed in
   // PlatformExit() (e.g. the display::Screen singleton).
+  if (tab()) {
+    auto* const profile = static_cast<TabImpl*>(tab())->profile();
+    profile->GetPrerenderController()->DestroyAllContents();
+  }
   browser_.reset();
 
   if (windows_.empty()) {