diff --git a/DEPS b/DEPS
index 6ffff95f..89dbe8c 100644
--- a/DEPS
+++ b/DEPS
@@ -103,11 +103,6 @@
   # privately accessible.
   'checkout_telemetry_dependencies': False,
 
-  # Bots that don't consume render test goldens can skip downloading
-  # them.
-  # TODO(crbug.com/1103836): Remove after removing infra/ code.
-  'skip_render_test_goldens_download': False,
-
   # Bots that don't consume WPR archives can skip downloading
   # them.
   'skip_wpr_archives_download': False,
@@ -204,11 +199,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': 'f3b959c000718c55800fd5232cdff6a650478316',
+  'skia_revision': '512ff75a0bad773739ef276086e9941377439a67',
   # 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': '61f3e61408129afc0d9e1268d3354a283ea3c881',
+  'v8_revision': '7da2cc8b4955c7c5a81050c50cb6a84ba1819f58',
   # 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.
@@ -216,11 +211,11 @@
   # 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': 'cf023b3a8cd1fdeba958849517eee411023c6ae8',
+  'angle_revision': 'a10d694e914ea0a2c3958f710b7607100a10899f',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
-  'swiftshader_revision': '7c84426d2abe231f3087a2942fd831137eb3b0aa',
+  'swiftshader_revision': '7bcd79eccf28007fe7a60ed50251d91ea4e65674',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
@@ -255,7 +250,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling freetype
   # and whatever else without interference from each other.
-  'freetype_revision': '9f94d8533cefa8a023a0b81633032fe0aaea08fb',
+  'freetype_revision': '505943a6a4cbf549e744fe4fe9d36bba68ef3db1',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling freetype
   # and whatever else without interference from each other.
@@ -279,7 +274,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': 'b36ad7e1d1112e8aeceb083def86497bbf140ffc',
+  'devtools_frontend_revision': 'e79095f5335b1fcccc62b085e44509d49cec7ae7',
   # 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.
@@ -331,7 +326,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': 'd63d562d1b26e01b369d9a58eddeaccfaa688a02',
+  'dawn_revision': 'f0a0c38623ed7a523be9544e43c3f3c2a05cc267',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -370,7 +365,7 @@
   'ukey2_revision': '0275885d8e6038c39b8a8ca55e75d1d4d1727f47',
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'tint_revision': '00b77a80ab137229b2024fcf0e98c5e38ffc05fd',
+  'tint_revision': 'b8a3078bbec908507ec4686d39c133dcaae8e105',
 
   # TODO(crbug.com/941824): The values below need to be kept in sync
   # between //DEPS and //buildtools/DEPS, so if you're updating one,
@@ -903,7 +898,7 @@
   # Tools used when building Chrome for Chrome OS. This affects both the Simple
   # Chrome workflow, as well as the chromeos-chrome ebuild.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '8295f4267ab3791e083692f4781be04ce54e41ca',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '7bdee1ac459a4d26670e6291f3a36cec21b7106d',
       'condition': 'checkout_chromeos',
   },
 
@@ -1295,7 +1290,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'c56ea91f6bd1b910be1ba373b950c04f72595bd9',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'e1502e7972cb2a4bb582d5ae2cc693cc3b7868dc',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1545,7 +1540,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '3c2fe3888658d82b47ca831d59a2e07579619c2d',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '393159147685c9294e423eb8b2bdc92dc78acfd4',
+    Var('webrtc_git') + '/src.git' + '@' + '0f0bcb39f3fcb2b6185f146dfc4f4357276e40d4',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1617,7 +1612,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@682b3e2b91af9ad3c9b2ee6057b447e210c5a015',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@95a2d32164883889b582d70ada33d8a9b45e9d45',
     'condition': 'checkout_src_internal',
   },
 
@@ -1625,7 +1620,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': 'h34dBNFluLOvrol4gz-HIJi_w1-GzSIElYTdJY6clJoC',
+        'version': 'fVqrzqnejoxXKgP8Q1x8KnBeyt9BgTlveT3nQam6WDsC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1636,7 +1631,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': '1JjkFXZ1s86iBnYJ0jMS5E5alylmWh3-mz4jCYL3szkC',
+        'version': '4E0Kat64Xt3-kQkf_9Z8eXNVVOdY-Dm0TKYMn0bV9SEC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/android_webview/browser/gfx/output_surface_provider_webview.cc b/android_webview/browser/gfx/output_surface_provider_webview.cc
index b665658..ed42cc5 100644
--- a/android_webview/browser/gfx/output_surface_provider_webview.cc
+++ b/android_webview/browser/gfx/output_surface_provider_webview.cc
@@ -13,6 +13,7 @@
 #include "android_webview/browser/gfx/skia_output_surface_dependency_webview.h"
 #include "android_webview/browser/gfx/task_queue_web_view.h"
 #include "base/callback_helpers.h"
+#include "base/command_line.h"
 #include "base/feature_list.h"
 #include "base/logging.h"
 #include "components/viz/common/features.h"
@@ -20,6 +21,7 @@
 #include "gpu/config/gpu_finch_features.h"
 #include "gpu/config/gpu_switches.h"
 #include "gpu/ipc/single_task_sequence.h"
+#include "ui/base/ui_base_switches.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_share_group.h"
 #include "ui/gl/init/gl_factory.h"
@@ -63,6 +65,10 @@
       << "--webview-enable-vulkan only works with skia renderer "
          "(--enable-features=UseSkiaRenderer).";
 
+  auto* command_line = base::CommandLine::ForCurrentProcess();
+  debug_settings_.tint_composited_content =
+      command_line->HasSwitch(switches::kTintCompositedContent);
+
   InitializeContext();
 }
 OutputSurfaceProviderWebview::~OutputSurfaceProviderWebview() {
diff --git a/ash/ambient/ui/media_string_view.cc b/ash/ambient/ui/media_string_view.cc
index 6f055bad..c03c396 100644
--- a/ash/ambient/ui/media_string_view.cc
+++ b/ash/ambient/ui/media_string_view.cc
@@ -99,7 +99,7 @@
 };
 
 // Typography.
-constexpr char kMiddleDotSeparator[] = " \u00B7 ";
+constexpr char kMiddleDotSeparator[] = " \u2022 ";
 
 constexpr int kMusicNoteIconSizeDip = 20;
 
diff --git a/ash/ambient/ui/media_string_view_unittest.cc b/ash/ambient/ui/media_string_view_unittest.cc
index e78d437..15ba58b 100644
--- a/ash/ambient/ui/media_string_view_unittest.cc
+++ b/ash/ambient/ui/media_string_view_unittest.cc
@@ -48,7 +48,7 @@
 
   SimulateMediaMetadataChanged(metadata);
 
-  const base::string16 expected_text = base::UTF8ToUTF16("title \u00B7 artist");
+  const base::string16 expected_text = base::UTF8ToUTF16("title \u2022 artist");
   EXPECT_EQ(GetMediaStringViewTextLabel()->GetText(), expected_text);
 }
 
diff --git a/ash/strings/ash_strings_af.xtb b/ash/strings/ash_strings_af.xtb
index 9bb36c8b..9fd52c8 100644
--- a/ash/strings/ash_strings_af.xtb
+++ b/ash/strings/ash_strings_af.xtb
@@ -519,6 +519,7 @@
 <translation id="5777841717266010279">Stop skermdeling?</translation>
 <translation id="5790085346892983794">Suksesvol</translation>
 <translation id="5820394555380036790">Chromium-bedryfstelsel</translation>
+<translation id="5825969630400862129">Instellings vir gekoppelde toestelle</translation>
 <translation id="5837036133683224804">Stop <ph name="ROUTE_TITLE" /> op <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Af</translation>
 <translation id="5876666360658629066">Voer ouerkode in</translation>
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb
index 27d9dc7..a95f26e 100644
--- a/ash/strings/ash_strings_am.xtb
+++ b/ash/strings/ash_strings_am.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">ማያ ገጽ ማጋራት ይቁም?</translation>
 <translation id="5790085346892983794">ተሳክቷል</translation>
 <translation id="5820394555380036790">Chromium ስርዓተ ክወና</translation>
+<translation id="5825969630400862129">የተገናኙ መሣሪያዎች ቅንብሮች</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> ላይ <ph name="ROUTE_TITLE" />ን አስቁም</translation>
 <translation id="5860033963881614850">አጥፋ</translation>
 <translation id="5876666360658629066">የወላጅ ኮድ ያስገቡ</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb
index 0df51aa3..646fe75 100644
--- a/ash/strings/ash_strings_ar.xtb
+++ b/ash/strings/ash_strings_ar.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">رأسي</translation>
 <translation id="2067602449040652523">سطوع لوحة المفاتيح</translation>
 <translation id="2078034614700056995">يمكنك التمرير سريعًا لليسار بأربعة أصابع للتبديل إلى سطح المكتب التالي.</translation>
+<translation id="2079504693865562705">إخفاء التطبيقات في الرفّ</translation>
 <translation id="2083190527011054446">ليلة سعيدة <ph name="GIVEN_NAME" />،</translation>
 <translation id="209965399369889474">لا يتوفّر اتصال بالشبكة</translation>
 <translation id="2126242104232412123">سطح مكتب جديد</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">+<ph name="COUNT" /> والمزيد</translation>
 <translation id="3236488194889173876">ليست هناك شبكة جوّال متاحة</translation>
 <translation id="3249513730522716925">تم نقل النافذة <ph name="WINDOW_TITLE" /> من سطح المكتب <ph name="ACTIVE_DESK" /> إلى سطح المكتب <ph name="TARGET_DESK" />.</translation>
+<translation id="3252068179161473151">قوة إشارة شبكة <ph name="WIRELESS_PROVIDER" /> هي<ph name="SIGNAL_STRENGTH" /> في المئة.</translation>
 <translation id="3255483164551725916">ما الإجراء المطلوب؟</translation>
 <translation id="3269597722229482060">النقر بزر الماوس الأيمن</translation>
 <translation id="3289674678944039601">جارٍ الشحن عبر المحوِّل.</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">لقد ضغطت على اختصار لوحة المفاتيح للمُكبِّر الذي تم إرساؤه. هل ترغب في تفعيله؟</translation>
 <translation id="4412944820643904175">ميزة <ph name="FEATURE_NAME" /> غير مُفعَّلة.</translation>
 <translation id="4421231901400348175">مشاركة التحكم في شاشتك مع <ph name="HELPER_NAME" /> عن طريق المساعدة عن بُعد.</translation>
+<translation id="4427613789487709312">‏المعدّل التلقائي (<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">مستوى الصوت</translation>
 <translation id="4450893287417543264">عدم الإظهار مرة أخرى</translation>
 <translation id="445864333228800152">مساء الخير،</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">رقم التعريف الشخصي غير صحيح</translation>
 <translation id="5083553833479578423">‏الاستفادة من المزيد من ميزات "مساعد Google"</translation>
 <translation id="5136175204352732067">تم توصيل لوحة مفاتيح مختلفة</translation>
+<translation id="5155897006997040331">سرعة القراءة</translation>
 <translation id="5168181903108465623">أجهزة البث متاحة</translation>
 <translation id="5170568018924773124">العرض في المجلد</translation>
 <translation id="5176318573511391780">تسجيل جزء من الشاشة</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">هل ترغب في إيقاف مشاركة الشاشة؟</translation>
 <translation id="5790085346892983794">تم بنجاح</translation>
 <translation id="5820394555380036790">‏نظام التشغيل Chromium</translation>
+<translation id="5825969630400862129">إعدادات الأجهزة المتّصلة</translation>
 <translation id="5837036133683224804">إيقاف <ph name="ROUTE_TITLE" /> في <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">غير مفعّل</translation>
 <translation id="5876666360658629066">إدخال رمز أحد الوالدَين</translation>
@@ -713,6 +718,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{إشعار واحد}zero{# إشعار}two{إشعاران (#)}few{# إشعارات}many{# إشعارًا}other{# إشعار}}</translation>
 <translation id="7724603315864178912">قص</translation>
+<translation id="7745560842763881396">عرض التطبيقات في الرفّ</translation>
 <translation id="7749443890790263709">تم تجاوز أقصى عدد مسموح به من محطات الإرساء.</translation>
 <translation id="776344839111254542">النقر لعرض تفاصيل التحديث</translation>
 <translation id="7780159184141939021">تدوير الشاشة</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb
index a91f58bb..aa8e9dc 100644
--- a/ash/strings/ash_strings_as.xtb
+++ b/ash/strings/ash_strings_as.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">প’ৰ্ট্ৰেইট</translation>
 <translation id="2067602449040652523">কীব’ৰ্ডৰ উজ্জ্বলতা</translation>
 <translation id="2078034614700056995">পূৰ্বৱৰ্তী ডেস্কখনলৈ সলনি কৰিবলৈ চাৰিটা আঙুলিৰে সোঁফালে ছোৱাইপ কৰক</translation>
+<translation id="2079504693865562705">শ্বেল্‌ফত এপ্‌ লুকুৱাওক</translation>
 <translation id="2083190527011054446">শুভৰাত্ৰি <ph name="GIVEN_NAME" />,</translation>
 <translation id="209965399369889474">নেটৱৰ্কৰ সৈতে সংযুক্ত হৈ নাই</translation>
 <translation id="2126242104232412123">নতুন ডেস্ক</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">আৰু <ph name="COUNT" />টা</translation>
 <translation id="3236488194889173876">কোনো ম'বাইল নেটৱর্ক নাই</translation>
 <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> ৱিণ্ড’খন <ph name="ACTIVE_DESK" /> ডেস্কৰ পৰা <ph name="TARGET_DESK" />লৈ স্থানান্তৰ কৰা হৈছে</translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, ছিগনেলৰ ক্ষমতা <ph name="SIGNAL_STRENGTH" /> শতাংশ।</translation>
 <translation id="3255483164551725916">আপুনি কি কৰিব পাৰে?</translation>
 <translation id="3269597722229482060">সোঁফালে ক্লিক কৰক</translation>
 <translation id="3289674678944039601">এডাপ্টৰেৰে চাৰ্জ হৈ আছে</translation>
@@ -368,6 +370,7 @@
 <translation id="4389184120735010762">আপুনি ড'ক কৰা বিৱৰ্ধকৰ বাবে কীব'ৰ্ডৰ শ্বৰ্টকাট টিপিছে। আপুনি এইটো অন কৰিব খোজেনে?</translation>
 <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> অফ কৰা আছে।</translation>
 <translation id="4421231901400348175">আপোনাৰ স্ক্ৰীণৰ নিয়ন্ত্ৰণ ৰিম’ট সহায়কৰ দ্বাৰা <ph name="HELPER_NAME" />ৰ সৈতে শ্বেয়াৰ কৰি থকা হৈছে।</translation>
+<translation id="4427613789487709312">ডিফ’ল্ট (<ph name="RATE" /> গুণ)</translation>
 <translation id="4430019312045809116">ভলিউম</translation>
 <translation id="4450893287417543264">পুনৰ নেদেখুৱাব</translation>
 <translation id="445864333228800152">শুভ সন্ধ্যা,</translation>
@@ -448,6 +451,7 @@
 <translation id="5078796286268621944">ভুল পিন</translation>
 <translation id="5083553833479578423">Assistantৰ অন্যান্য সুবিধাসমূহ ব্যৱহাৰ কৰক।</translation>
 <translation id="5136175204352732067">বিভিন্ন কীব’র্ড সংযোগ কৰা হৈছে</translation>
+<translation id="5155897006997040331">পঢ়াৰ গতিবেগ</translation>
 <translation id="5168181903108465623">কাষ্ট কৰিব পৰা ডিভাইচ উপলব্ধ</translation>
 <translation id="5170568018924773124">ফ’ল্ডাৰত দেখুৱাওক</translation>
 <translation id="5176318573511391780">আংশিক স্ক্ৰীন ৰেকৰ্ড কৰক</translation>
@@ -513,6 +517,7 @@
 <translation id="5777841717266010279">স্ক্ৰীণ শ্বেয়াৰ কৰাটো বন্ধ কৰিবনে?</translation>
 <translation id="5790085346892983794">সফল হৈছে</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">সংযুক্ত হৈ থকা ডিভাইচৰ ছেটিংসমূহ</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" />ত <ph name="ROUTE_TITLE" /> বন্ধ কৰক</translation>
 <translation id="5860033963881614850">অফ আছে</translation>
 <translation id="5876666360658629066">অভিভাৱকীয় ক’ডটো দিয়ক</translation>
@@ -709,6 +714,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{১টা জাননী}one{#টা জাননী}other{#টা জাননী}}</translation>
 <translation id="7724603315864178912">কাট কৰক</translation>
+<translation id="7745560842763881396">শ্বেল্‌ফত এপ্‌সমূহ দেখুৱাওক</translation>
 <translation id="7749443890790263709">ডেস্কৰ সৰ্বাধিক সংখ্যাত উপনীত হৈছে।</translation>
 <translation id="776344839111254542">আপডে'টৰ সবিশেষ চাবলৈ ক্লিক কৰক</translation>
 <translation id="7780159184141939021">স্ক্ৰীণ ঘূৰাওক</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb
index b1fb829..8c2af70a 100644
--- a/ash/strings/ash_strings_az.xtb
+++ b/ash/strings/ash_strings_az.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Ekran paylaşımı dayandırılsın?</translation>
 <translation id="5790085346892983794">Uğur</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Qoşulmuş cihazların ayarları</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> pəncərəsində <ph name="ROUTE_TITLE" /> dayandırma düyməsi</translation>
 <translation id="5860033963881614850">Deaktiv</translation>
 <translation id="5876666360658629066">Valideyn kodunu daxil edin</translation>
diff --git a/ash/strings/ash_strings_be.xtb b/ash/strings/ash_strings_be.xtb
index 3316828..ab9e06be 100644
--- a/ash/strings/ash_strings_be.xtb
+++ b/ash/strings/ash_strings_be.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">Кніжная</translation>
 <translation id="2067602449040652523">Яркасць клавіятуры</translation>
 <translation id="2078034614700056995">Правядзіце па сэнсарнай панэлі чатырма пальцамі ўправа, каб перайсці на наступны працоўны стол</translation>
+<translation id="2079504693865562705">Не паказваць праграмы на паліцы</translation>
 <translation id="2083190527011054446">Добрай ночы, <ph name="GIVEN_NAME" />!</translation>
 <translation id="209965399369889474">Няма падключэння да сеткі</translation>
 <translation id="2126242104232412123">Новы стол</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">+ яшчэ <ph name="COUNT" /></translation>
 <translation id="3236488194889173876">Няма даступных мабільных сетак</translation>
 <translation id="3249513730522716925">Акно "<ph name="WINDOW_TITLE" />" было перанесена са Стала <ph name="ACTIVE_DESK" /> на Стол <ph name="TARGET_DESK" /></translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, магутнасць сігналу – <ph name="SIGNAL_STRENGTH" />%.</translation>
 <translation id="3255483164551725916">Што ты ўмееш?</translation>
 <translation id="3269597722229482060">Націснуць правай кнопкай мышы</translation>
 <translation id="3289674678944039601">Ідзе зарадка праз адаптар</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">Вы націснулі спалучэнне клавіш для прыстыкаванай лупы. Уключыць яе?</translation>
 <translation id="4412944820643904175"><ph name="FEATURE_NAME" />: выключана.</translation>
 <translation id="4421231901400348175">Абагульванне кантролю над экранам з карыстальнікам <ph name="HELPER_NAME" /> праз Аддаленую дапамогу.</translation>
+<translation id="4427613789487709312">Стандартная (<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">Гучнасць</translation>
 <translation id="4450893287417543264">Больш не паказваць</translation>
 <translation id="445864333228800152">Добры вечар,</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">Няправільны PIN-код</translation>
 <translation id="5083553833479578423">Адкрыйце больш функцый Памочніка.</translation>
 <translation id="5136175204352732067">Падключана іншая клавіятура</translation>
+<translation id="5155897006997040331">Хуткасць чытання</translation>
 <translation id="5168181903108465623">Ёсць даступныя прылады для трансляцыі</translation>
 <translation id="5170568018924773124">Паказаць у папцы</translation>
 <translation id="5176318573511391780">Запіс часткі экрана</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">Спыніць абагульванне экрана?</translation>
 <translation id="5790085346892983794">Выканана</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Налады падключаных прылад</translation>
 <translation id="5837036133683224804">Спыніць трансляцыю <ph name="ROUTE_TITLE" /> на <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Выключана</translation>
 <translation id="5876666360658629066">Увядзіце бацькоўскі код</translation>
@@ -712,6 +717,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 апавяшчэнне}one{# апавяшчэнне}few{# апавяшчэнні}many{# апавяшчэнняў}other{# апавяшчэння}}</translation>
 <translation id="7724603315864178912">Выразаць</translation>
+<translation id="7745560842763881396">Паказаць праграмы на паліцы</translation>
 <translation id="7749443890790263709">Дасягнута максімальная колькасць сталоў.</translation>
 <translation id="776344839111254542">Каб паглядзець звесткі пра абнаўленне, націсніце тут</translation>
 <translation id="7780159184141939021">Паварот экрана</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb
index 771e74d..e182b30 100644
--- a/ash/strings/ash_strings_bg.xtb
+++ b/ash/strings/ash_strings_bg.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Да се спре ли споделянето на екрана?</translation>
 <translation id="5790085346892983794">Успех</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Настройки за свързани устройства</translation>
 <translation id="5837036133683224804">Спиране на предаването на <ph name="ROUTE_TITLE" /> към „<ph name="RECEIVER_NAME" />“</translation>
 <translation id="5860033963881614850">Изключено</translation>
 <translation id="5876666360658629066">Въведете код на родител</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb
index a385b02..672cdce 100644
--- a/ash/strings/ash_strings_bn.xtb
+++ b/ash/strings/ash_strings_bn.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">স্ক্রিন শেয়ার করা থামাবেন?</translation>
 <translation id="5790085346892983794">সফল</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">কানেক্ট করা ডিভাইসের সেটিংস</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" />-এ <ph name="ROUTE_TITLE" /> বন্ধ করুন</translation>
 <translation id="5860033963881614850">বন্ধ করুন</translation>
 <translation id="5876666360658629066">অভিভাবকীয় কোডটি লিখুন</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb
index eb2d2f6..ee6e6091 100644
--- a/ash/strings/ash_strings_bs.xtb
+++ b/ash/strings/ash_strings_bs.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Zaustaviti dijeljenje ekrana?</translation>
 <translation id="5790085346892983794">Uspjeh</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Postavke povezanih uređaja</translation>
 <translation id="5837036133683224804">Zaustavi <ph name="ROUTE_TITLE" /> na primaocu <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Isklj.</translation>
 <translation id="5876666360658629066">Unesite kôd za roditelja</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb
index ad7975f..4abd1ca 100644
--- a/ash/strings/ash_strings_ca.xtb
+++ b/ash/strings/ash_strings_ca.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Vols aturar la compartició de pantalla?</translation>
 <translation id="5790085346892983794">Amb èxit</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Configuració dels dispositius connectats</translation>
 <translation id="5837036133683224804">Atura <ph name="ROUTE_TITLE" /> a <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Desactivat</translation>
 <translation id="5876666360658629066">Introdueix el codi parental</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb
index 76aa822..0f0b3a12 100644
--- a/ash/strings/ash_strings_cs.xtb
+++ b/ash/strings/ash_strings_cs.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">Na výšku</translation>
 <translation id="2067602449040652523">Jas klávesnice</translation>
 <translation id="2078034614700056995">Na další plochu přejdete přejetím čtyřmi prsty doprava</translation>
+<translation id="2079504693865562705">Skrýt aplikace v poličce</translation>
 <translation id="2083190527011054446">Dobrou noc, <ph name="GIVEN_NAME" />,</translation>
 <translation id="209965399369889474">Nejste připojeni k síti</translation>
 <translation id="2126242104232412123">Nová plocha</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">a ještě <ph name="COUNT" /></translation>
 <translation id="3236488194889173876">Není k dispozici žádná mobilní síť</translation>
 <translation id="3249513730522716925">Okno <ph name="WINDOW_TITLE" /> bylo přesunuto z plochy <ph name="ACTIVE_DESK" /> na plochu <ph name="TARGET_DESK" /></translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, síla signálu: <ph name="SIGNAL_STRENGTH" /> %.</translation>
 <translation id="3255483164551725916">Co umíš?</translation>
 <translation id="3269597722229482060">Kliknutí pravým tlačítkem</translation>
 <translation id="3289674678944039601">Nabíjení pomocí adaptéru</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">Stiskli jste klávesovou zkratku pro zabudovanou lupu. Chcete ji zapnout?</translation>
 <translation id="4412944820643904175">Funkce <ph name="FEATURE_NAME" /> je vypnutá.</translation>
 <translation id="4421231901400348175">Ovládání obrazovky je prostřednictvím Vzdálené pomoci sdíleno s uživatelem <ph name="HELPER_NAME" />.</translation>
+<translation id="4427613789487709312">Výchozí (<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">Hlasitost</translation>
 <translation id="4450893287417543264">Tuto zprávu již nezobrazovat</translation>
 <translation id="445864333228800152">Dobrý večer,</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">Nesprávný kód PIN</translation>
 <translation id="5083553833479578423">Odemkněte další funkce Asistenta.</translation>
 <translation id="5136175204352732067">Je připojena jiná klávesnice</translation>
+<translation id="5155897006997040331">Rychlost čtení</translation>
 <translation id="5168181903108465623">Dostupná zařízení pro streamování obsahu</translation>
 <translation id="5170568018924773124">Zobrazit ve složce</translation>
 <translation id="5176318573511391780">Zaznamenat část obrazovky</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">Ukončit sdílení obrazovky?</translation>
 <translation id="5790085346892983794">Úspěšně provedeno</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Nastavení připojených zařízení</translation>
 <translation id="5837036133683224804">Zastavit <ph name="ROUTE_TITLE" /> na přijímači <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Vypnuto</translation>
 <translation id="5876666360658629066">Zadejte rodičovský kód</translation>
@@ -712,6 +717,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 oznámení}few{# oznámení}many{# oznámení}other{# oznámení}}</translation>
 <translation id="7724603315864178912">Vyjmout</translation>
+<translation id="7745560842763881396">Zobrazit aplikace v poličce</translation>
 <translation id="7749443890790263709">Byl dosažen maximální počet ploch.</translation>
 <translation id="776344839111254542">Kliknutím zobrazíte podrobnosti o aktualizaci</translation>
 <translation id="7780159184141939021">Otočit obrazovku</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb
index 56b4430..e0b6b2c 100644
--- a/ash/strings/ash_strings_da.xtb
+++ b/ash/strings/ash_strings_da.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Vil du afslutte skærmdeling?</translation>
 <translation id="5790085346892983794">Fuldført</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Indstillinger for tilsluttede enheder</translation>
 <translation id="5837036133683224804">Stop <ph name="ROUTE_TITLE" /> på <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Fra</translation>
 <translation id="5876666360658629066">Angiv forældrekode</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb
index 7660c9e..64581cc 100644
--- a/ash/strings/ash_strings_de.xtb
+++ b/ash/strings/ash_strings_de.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">Bildschirmfreigabe beenden?</translation>
 <translation id="5790085346892983794">Abgeschlossen</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Einstellungen für verbundene Geräte</translation>
 <translation id="5837036133683224804"><ph name="ROUTE_TITLE" /> auf <ph name="RECEIVER_NAME" /> beenden</translation>
 <translation id="5860033963881614850">Aus</translation>
 <translation id="5876666360658629066">Elterncode eingeben</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb
index c601f6c..f8bf233 100644
--- a/ash/strings/ash_strings_el.xtb
+++ b/ash/strings/ash_strings_el.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Θέλετε να σταματήσετε να μοιράζεστε την οθόνη;</translation>
 <translation id="5790085346892983794">Επιτυχία</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Ρυθμίσεις συνδεδεμένων συσκευών</translation>
 <translation id="5837036133683224804">Διακοπή <ph name="ROUTE_TITLE" /> σε <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Απενεργοποιημένη</translation>
 <translation id="5876666360658629066">Εισαγάγετε κωδικό γονέα</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb
index 28d93c3..57f17d4b 100644
--- a/ash/strings/ash_strings_en-GB.xtb
+++ b/ash/strings/ash_strings_en-GB.xtb
@@ -84,6 +84,7 @@
 <translation id="1698760176351776263">IPv6 address: <ph name="ADDRESS" /></translation>
 <translation id="1708345662127501511">Desk: <ph name="DESK_NAME" /></translation>
 <translation id="1709762881904163296">Network settings</translation>
+<translation id="1719094688023114093">Live Caption is on.</translation>
 <translation id="1743570585616704562">Not recognised</translation>
 <translation id="1746730358044914197">Input methods are configured by your administrator.</translation>
 <translation id="1747827819627189109">On-screen keyboard enabled</translation>
@@ -180,6 +181,7 @@
 <translation id="2621713457727696555">Secured</translation>
 <translation id="2653659639078652383">Submit</translation>
 <translation id="2658778018866295321">Click and drag</translation>
+<translation id="2678852583403169292">Select to Speak menu</translation>
 <translation id="2700493154570097719">Set your keyboard</translation>
 <translation id="2704781753052663061">Join other Wi-Fi networks</translation>
 <translation id="2705001408393684014">Toggle mic. <ph name="STATE_TEXT" /></translation>
@@ -326,6 +328,7 @@
 <translation id="4028481283645788203">Password required for more security</translation>
 <translation id="4032485810211612751"><ph name="HOURS" />:<ph name="MINUTES" />:<ph name="SECONDS" /></translation>
 <translation id="4042660782729322247">You're sharing your screen</translation>
+<translation id="4057003836560082631">Browser tab <ph name="INDEX" /> of <ph name="TOTAL_COUNT" />. <ph name="SITE_TITLE" />, <ph name="SITE_URL" /></translation>
 <translation id="4065525899979931964">{NUM_APPS,plural, =1{Off for an app}other{Off for # apps}}</translation>
 <translation id="4066027111132117168">On, <ph name="REMAINING_TIME" /></translation>
 <translation id="4072264167173457037">Medium signal</translation>
@@ -518,6 +521,7 @@
 <translation id="5777841717266010279">Stop screen sharing?</translation>
 <translation id="5790085346892983794">Success</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Connected devices settings</translation>
 <translation id="5837036133683224804">Stop <ph name="ROUTE_TITLE" /> on <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Off</translation>
 <translation id="5876666360658629066">Enter parental code</translation>
@@ -604,6 +608,7 @@
 <translation id="6614169507485700968">Privacy screen is on</translation>
 <translation id="6627638273713273709">Search+Shift+K</translation>
 <translation id="6637729079642709226">Change time</translation>
+<translation id="6641720045729354415">Toggle Live Caption. <ph name="STATE_TEXT" /></translation>
 <translation id="6650072551060208490"><ph name="ORIGIN_NAME" /> would like to confirm that it's you</translation>
 <translation id="6650933572246256093">Bluetooth device "<ph name="DEVICE_NAME" />" would like permission to pair. Please enter this passkey on that device: <ph name="PASSKEY" /></translation>
 <translation id="6657585470893396449">Password</translation>
@@ -667,6 +672,7 @@
 <translation id="7256634071279256947">Rear microphone</translation>
 <translation id="726276584504105859">Drag here to use split screen</translation>
 <translation id="7262906531272962081">Create reminder</translation>
+<translation id="7302889331339392448">Live Caption is off.</translation>
 <translation id="7303365578352795231">Answering on another device.</translation>
 <translation id="7305884605064981971">EDGE</translation>
 <translation id="7346909386216857016">OK, got it</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb
index 7baffb4..a80d57f 100644
--- a/ash/strings/ash_strings_es-419.xtb
+++ b/ash/strings/ash_strings_es-419.xtb
@@ -515,6 +515,7 @@
 <translation id="5777841717266010279">¿Dejar de compartir la pantalla?</translation>
 <translation id="5790085346892983794">Completado correctamente</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Configuración de dispositivos conectados</translation>
 <translation id="5837036133683224804">Detener <ph name="ROUTE_TITLE" /> en <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Desactivado</translation>
 <translation id="5876666360658629066">Ingresa el código parental</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index f477c1b..c23a9cf9 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -515,6 +515,7 @@
 <translation id="5777841717266010279">¿Dejar de compartir la pantalla?</translation>
 <translation id="5790085346892983794">Completado correctamente</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Configuración de dispositivos conectados</translation>
 <translation id="5837036133683224804">Parar <ph name="ROUTE_TITLE" /> en <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Desactivado</translation>
 <translation id="5876666360658629066">Introduce el código parental</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb
index b73fa41..4395e34e 100644
--- a/ash/strings/ash_strings_et.xtb
+++ b/ash/strings/ash_strings_et.xtb
@@ -519,6 +519,7 @@
 <translation id="5777841717266010279">Kas peatada ekraani jagamine?</translation>
 <translation id="5790085346892983794">Õnnestus</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Ühendatud seadmete seaded</translation>
 <translation id="5837036133683224804">Katkesta <ph name="ROUTE_TITLE" /> asukohas <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Väljas</translation>
 <translation id="5876666360658629066">Sisestage vanema kood</translation>
diff --git a/ash/strings/ash_strings_eu.xtb b/ash/strings/ash_strings_eu.xtb
index c4906dc9..1a9e641f 100644
--- a/ash/strings/ash_strings_eu.xtb
+++ b/ash/strings/ash_strings_eu.xtb
@@ -519,6 +519,7 @@
 <translation id="5777841717266010279">Pantaila-partekatzea gelditu nahi duzu?</translation>
 <translation id="5790085346892983794">Behar bezala egin da</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Konektatutako gailuen ezarpenak</translation>
 <translation id="5837036133683224804">Utzi <ph name="ROUTE_TITLE" /> (<ph name="RECEIVER_NAME" />) hargailura igortzeari</translation>
 <translation id="5860033963881614850">Desaktibatuta</translation>
 <translation id="5876666360658629066">Idatzi gurasoen sarbide-kodea</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb
index 60320ea..8e8cbf2d 100644
--- a/ash/strings/ash_strings_fa.xtb
+++ b/ash/strings/ash_strings_fa.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">هم‌رسانی صفحه‌نمایش متوقف شود؟</translation>
 <translation id="5790085346892983794">موفق شدید</translation>
 <translation id="5820394555380036790">‏سیستم‌عامل Chromium </translation>
+<translation id="5825969630400862129">تنظیمات دستگاه‌های متصل</translation>
 <translation id="5837036133683224804">توقف <ph name="ROUTE_TITLE" /> به <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">خاموش</translation>
 <translation id="5876666360658629066">کد ولی را وارد کنید</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb
index ff4aa8e..fca231f3 100644
--- a/ash/strings/ash_strings_fi.xtb
+++ b/ash/strings/ash_strings_fi.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Lopetetaanko näytön jakaminen?</translation>
 <translation id="5790085346892983794">Onnistui</translation>
 <translation id="5820394555380036790">Chromium-käyttöjärjestelmä</translation>
+<translation id="5825969630400862129">Yhdistettyjen laitteiden asetukset</translation>
 <translation id="5837036133683224804">Lopeta <ph name="ROUTE_TITLE" /> – <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Pois päältä</translation>
 <translation id="5876666360658629066">Lisää vanhemman koodi</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb
index 9a5e266..d7c30a77 100644
--- a/ash/strings/ash_strings_fil.xtb
+++ b/ash/strings/ash_strings_fil.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Itigil ang screen sharing?</translation>
 <translation id="5790085346892983794">Tagumpay</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Mga setting ng mga nakakonektang device</translation>
 <translation id="5837036133683224804">Ihinto ang <ph name="ROUTE_TITLE" /> sa <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Naka-off</translation>
 <translation id="5876666360658629066">Ilagay ang code ng magulang</translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb
index 67f2078..1ca5267 100644
--- a/ash/strings/ash_strings_fr-CA.xtb
+++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Arrêter le partage d'écran?</translation>
 <translation id="5790085346892983794">Opération réussie</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Paramètres des appareils connectés</translation>
 <translation id="5837036133683224804">Arrêter <ph name="ROUTE_TITLE" /> sur <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Désactivé</translation>
 <translation id="5876666360658629066">Entrez le code d'accès parental</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb
index f3344d7..6e68ae0 100644
--- a/ash/strings/ash_strings_fr.xtb
+++ b/ash/strings/ash_strings_fr.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">Arrêter le partage d'écran ?</translation>
 <translation id="5790085346892983794">Succès</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Paramètres des appareils connectés</translation>
 <translation id="5837036133683224804">Arrêter <ph name="ROUTE_TITLE" /> vers <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Désactivé</translation>
 <translation id="5876666360658629066">Saisir le code parental</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb
index 8a0dbe6..7337c9f 100644
--- a/ash/strings/ash_strings_gl.xtb
+++ b/ash/strings/ash_strings_gl.xtb
@@ -519,6 +519,7 @@
 <translation id="5777841717266010279">Queres deter o uso compartido da pantalla?</translation>
 <translation id="5790085346892983794">Correcto</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Configuración de dispositivos conectados</translation>
 <translation id="5837036133683224804">Deter <ph name="ROUTE_TITLE" /> no receptor <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Non</translation>
 <translation id="5876666360658629066">Escribe o código parental</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb
index 7b094fa..e298196 100644
--- a/ash/strings/ash_strings_gu.xtb
+++ b/ash/strings/ash_strings_gu.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">સ્ક્રીન શેરિંગ રોકીએ?</translation>
 <translation id="5790085346892983794">સફળતા</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">કનેક્ટ થયેલા ડિવાઇસના સેટિંગ</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> પર <ph name="ROUTE_TITLE" />ને રોકો</translation>
 <translation id="5860033963881614850">બંધ</translation>
 <translation id="5876666360658629066">માતાપિતાનો કોડ દાખલ કરો</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb
index 839d73fa..4b3f710 100644
--- a/ash/strings/ash_strings_hi.xtb
+++ b/ash/strings/ash_strings_hi.xtb
@@ -519,6 +519,7 @@
 <translation id="5777841717266010279">स्‍क्रीन साझाकरण बंद करें?</translation>
 <translation id="5790085346892983794">सफलता</translation>
 <translation id="5820394555380036790">क्रोमियम OS</translation>
+<translation id="5825969630400862129">जुड़े हुए डिवाइस की सेटिंग</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> पर <ph name="ROUTE_TITLE" /> बंद करें</translation>
 <translation id="5860033963881614850">बंद</translation>
 <translation id="5876666360658629066">अभिभावक वाला कोड डालें</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb
index a50df34..2c2e9030 100644
--- a/ash/strings/ash_strings_hr.xtb
+++ b/ash/strings/ash_strings_hr.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Prekinuti dijeljenje zaslona?</translation>
 <translation id="5790085346892983794">Uspjeh</translation>
 <translation id="5820394555380036790">OS Chromium</translation>
+<translation id="5825969630400862129">Postavke povezanih uređaja</translation>
 <translation id="5837036133683224804">Zaustavite <ph name="ROUTE_TITLE" /> na uređaju <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Isključeno</translation>
 <translation id="5876666360658629066">Unos koda za roditeljski pristup</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb
index 3f392ca..1bdf31b8 100644
--- a/ash/strings/ash_strings_hu.xtb
+++ b/ash/strings/ash_strings_hu.xtb
@@ -519,6 +519,7 @@
 <translation id="5777841717266010279">Leállítja a képernyőmegosztást?</translation>
 <translation id="5790085346892983794">Siker</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Csatlakoztatott eszközök beállításai</translation>
 <translation id="5837036133683224804">A(z) <ph name="ROUTE_TITLE" /> leállítása itt: <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Kikapcsolva</translation>
 <translation id="5876666360658629066">Adja meg a szülői kódot</translation>
diff --git a/ash/strings/ash_strings_hy.xtb b/ash/strings/ash_strings_hy.xtb
index c23457f..bd55aa8 100644
--- a/ash/strings/ash_strings_hy.xtb
+++ b/ash/strings/ash_strings_hy.xtb
@@ -84,6 +84,7 @@
 <translation id="1698760176351776263">IPv6 հասցե՝ <ph name="ADDRESS" /></translation>
 <translation id="1708345662127501511">Աշխատասեղան՝ <ph name="DESK_NAME" /></translation>
 <translation id="1709762881904163296">Ցանցի կարգավորումներ</translation>
+<translation id="1719094688023114093">Կենդանի ենթագրերը միացված են։</translation>
 <translation id="1743570585616704562">Չճանաչվեց</translation>
 <translation id="1746730358044914197">Ներածման եղանակները կարգավորվում են ձեր ադմինիստրատորի կողմից:</translation>
 <translation id="1747827819627189109">Էկրանի ստեղնաշարը միացված է</translation>
@@ -180,6 +181,7 @@
 <translation id="2621713457727696555">Պաշտպանված է</translation>
 <translation id="2653659639078652383">Ուղարկել</translation>
 <translation id="2658778018866295321">Սեղմել և քաշել</translation>
+<translation id="2678852583403169292">«Ընտրեք և լսեք» գործառույթի ընտրացանկ</translation>
 <translation id="2700493154570097719">Ընտրեք ստեղնաշարը</translation>
 <translation id="2704781753052663061">Միացեք այլ Wi-Fi ցանցերի</translation>
 <translation id="2705001408393684014">Միացնել/անջատել խոսափողը։ <ph name="STATE_TEXT" /></translation>
@@ -326,6 +328,7 @@
 <translation id="4028481283645788203">Անվտանգության նկատառումներից ելնելով անհրաժեշտ է մուտքագրել գաղտնաբառը</translation>
 <translation id="4032485810211612751"><ph name="HOURS" />:<ph name="MINUTES" />:<ph name="SECONDS" /></translation>
 <translation id="4042660782729322247">Դուք հասանելի եք դարձրել ձեր էկրանը</translation>
+<translation id="4057003836560082631">Դիտարկիչի ներդիր <ph name="INDEX" />/<ph name="TOTAL_COUNT" />։ <ph name="SITE_TITLE" />, <ph name="SITE_URL" /></translation>
 <translation id="4065525899979931964">{NUM_APPS,plural, =1{Անջատել 1 ծրագրի համար}one{Անջատել # ծրագրի համար}other{Անջատել # ծրագրերի համար}}</translation>
 <translation id="4066027111132117168">Միացված է, <ph name="REMAINING_TIME" /></translation>
 <translation id="4072264167173457037">Միջին ուժգնության ազդանշան</translation>
@@ -518,6 +521,7 @@
 <translation id="5777841717266010279">Դադարեցնե՞լ էկրանի համօգտագործումը:</translation>
 <translation id="5790085346892983794">Հաջողվեց</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Կապված սարքերի կարգավորումներ</translation>
 <translation id="5837036133683224804">Դադարեցնել <ph name="ROUTE_TITLE" /> ներդիրի հեռարձակումը «<ph name="RECEIVER_NAME" />» սարքին</translation>
 <translation id="5860033963881614850">Անջատ.</translation>
 <translation id="5876666360658629066">Մուտքագրեք ծնողի մուտքի կոդը</translation>
@@ -604,6 +608,7 @@
 <translation id="6614169507485700968">Գաղտնիության էկրանը միացված է</translation>
 <translation id="6627638273713273709">Որոնում+Shift+K</translation>
 <translation id="6637729079642709226">Փոխել ժամանակը</translation>
+<translation id="6641720045729354415">Միացնել/անջատել Կենդանի ենթագրերը։ <ph name="STATE_TEXT" /></translation>
 <translation id="6650072551060208490"><ph name="ORIGIN_NAME" /> կայքին/հավելվածին անհրաժեշտ է, որ հաստատեք ձեր ինքնությունը</translation>
 <translation id="6650933572246256093">«<ph name="DEVICE_NAME" />» Bluetooth սարքը զուգավորման թույլտվություն է խնդրում: Մուտքագրեք այս անցակոդն այդ սարքում՝ <ph name="PASSKEY" /></translation>
 <translation id="6657585470893396449">Գաղտնաբառ</translation>
@@ -667,6 +672,7 @@
 <translation id="7256634071279256947">Հետևի խոսափող</translation>
 <translation id="726276584504105859">Քաշեք այստեղ՝ էկրանի տրոհումն օգտագործելու համար</translation>
 <translation id="7262906531272962081">Ստեղծել հիշեցում</translation>
+<translation id="7302889331339392448">«Կենդանի ենթագրեր» գործառույթը միացված է։</translation>
 <translation id="7303365578352795231">Օգնականն այլ սարքում է պատասխանում:</translation>
 <translation id="7305884605064981971">EDGE</translation>
 <translation id="7346909386216857016">Եղավ</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb
index 49ade6f..2469df6 100644
--- a/ash/strings/ash_strings_id.xtb
+++ b/ash/strings/ash_strings_id.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">Berhenti membagikan layar?</translation>
 <translation id="5790085346892983794">Berhasil</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Setelan perangkat yang terhubung</translation>
 <translation id="5837036133683224804">Hentikan <ph name="ROUTE_TITLE" /> di <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Nonaktif</translation>
 <translation id="5876666360658629066">Masukkan kode orang tua</translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb
index 97c47b42..1eb5dc7 100644
--- a/ash/strings/ash_strings_is.xtb
+++ b/ash/strings/ash_strings_is.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Stöðva skjádeilingu?</translation>
 <translation id="5790085346892983794">Tókst</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Stillingar tengdra tækja</translation>
 <translation id="5837036133683224804">Stöðva <ph name="ROUTE_TITLE" /> í <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Slökkt</translation>
 <translation id="5876666360658629066">Sláðu inn kóða foreldris</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb
index 1f0c9ac9..8d2234d 100644
--- a/ash/strings/ash_strings_it.xtb
+++ b/ash/strings/ash_strings_it.xtb
@@ -519,6 +519,7 @@
 <translation id="5777841717266010279">Interrompere la condivisione dello schermo?</translation>
 <translation id="5790085346892983794">Completato</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Impostazioni dei dispositivi connessi</translation>
 <translation id="5837036133683224804">Interrompi <ph name="ROUTE_TITLE" /> su <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">OFF</translation>
 <translation id="5876666360658629066">Inserisci codice genitore</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb
index 3c8b11be..968e78e 100644
--- a/ash/strings/ash_strings_iw.xtb
+++ b/ash/strings/ash_strings_iw.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">לאורך</translation>
 <translation id="2067602449040652523">בהירות מקלדת</translation>
 <translation id="2078034614700056995">יש להחליק שמאלה עם ארבע אצבעות כדי לעבור לשולחן העבודה הווירטואלי הבא</translation>
+<translation id="2079504693865562705">הסתרת האפליקציות במדף</translation>
 <translation id="2083190527011054446">לילה טוב <ph name="GIVEN_NAME" />,</translation>
 <translation id="209965399369889474">לא מחובר לרשת</translation>
 <translation id="2126242104232412123">שולחן עבודה חדש</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">+<ph name="COUNT" /> נוספות</translation>
 <translation id="3236488194889173876">אין רשת סלולרית זמינה</translation>
 <translation id="3249513730522716925">החלון <ph name="WINDOW_TITLE" /> הועבר משולחן העבודה <ph name="ACTIVE_DESK" /> אל שולחן העבודה <ph name="TARGET_DESK" /></translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, עוצמת אות <ph name="SIGNAL_STRENGTH" /> אחוז.</translation>
 <translation id="3255483164551725916">מה אפשר לעשות?</translation>
 <translation id="3269597722229482060">לחיצה ימנית</translation>
 <translation id="3289674678944039601">מתבצעת טעינה באמצעות מתאם</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">הקשת על מקש הקיצור של זכוכית מגדלת במצב עגינה. להפעיל אותה?</translation>
 <translation id="4412944820643904175">התכונה <ph name="FEATURE_NAME" /> מושבתת.</translation>
 <translation id="4421231901400348175">שיתוף השליטה במסך עם <ph name="HELPER_NAME" /> דרך סיוע מרחוק.</translation>
+<translation id="4427613789487709312">‏ברירת מחדל (x<ph name="RATE" />)</translation>
 <translation id="4430019312045809116">עוצמת קול</translation>
 <translation id="4450893287417543264">אין להציג שוב</translation>
 <translation id="445864333228800152">ערב טוב,</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">‏PIN שגוי</translation>
 <translation id="5083553833479578423">‏אפשר להפעיל תכונות Assistant נוספות.</translation>
 <translation id="5136175204352732067">חוברה מקלדת אחרת</translation>
+<translation id="5155897006997040331">מהירות הקריאה</translation>
 <translation id="5168181903108465623">מכשירי העברה זמינים</translation>
 <translation id="5170568018924773124">הצגה בתיקייה</translation>
 <translation id="5176318573511391780">הקלטה של מסך חלקי</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">להפסיק את שיתוף המסך?</translation>
 <translation id="5790085346892983794">הצלחה</translation>
 <translation id="5820394555380036790">‏מערכת ההפעלה של Chromium</translation>
+<translation id="5825969630400862129">הגדרות של מכשירים מחוברים</translation>
 <translation id="5837036133683224804">הפסקת <ph name="ROUTE_TITLE" /> במכשיר <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">כבוי</translation>
 <translation id="5876666360658629066">יש להזין קוד גישה להורים</translation>
@@ -714,6 +719,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{הודעה אחת}two{2 הודעות}many{# הודעות}other{# הודעות}}</translation>
 <translation id="7724603315864178912">חיתוך</translation>
+<translation id="7745560842763881396">הצגת האפליקציות במדף</translation>
 <translation id="7749443890790263709">הגעת למספר המקסימלי של שולחנות עבודה.</translation>
 <translation id="776344839111254542">יש ללחוץ כדי להציג את פרטי העדכון</translation>
 <translation id="7780159184141939021">סיבוב המסך</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb
index 846e1fd..bf7f851 100644
--- a/ash/strings/ash_strings_ja.xtb
+++ b/ash/strings/ash_strings_ja.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">縦</translation>
 <translation id="2067602449040652523">キーボードの明るさ</translation>
 <translation id="2078034614700056995">次のデスクに切り替えるには 4 本の指で右にスワイプします</translation>
+<translation id="2079504693865562705">シェルフのアプリを非表示</translation>
 <translation id="2083190527011054446">おやすみなさい、<ph name="GIVEN_NAME" /> さん</translation>
 <translation id="209965399369889474">ネットワークに接続されていません</translation>
 <translation id="2126242104232412123">新しいデスク</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">他 <ph name="COUNT" /> 件</translation>
 <translation id="3236488194889173876">利用できるモバイル ネットワークがありません</translation>
 <translation id="3249513730522716925">ウィンドウ <ph name="WINDOW_TITLE" /> がデスク <ph name="ACTIVE_DESK" /> からデスク <ph name="TARGET_DESK" /> に移動されました</translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />: 電波強度 <ph name="SIGNAL_STRENGTH" />%。</translation>
 <translation id="3255483164551725916">何ができる?</translation>
 <translation id="3269597722229482060">右クリック</translation>
 <translation id="3289674678944039601">アダプター経由で充電しています</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">ドッキング拡大鏡のキーボード ショートカットを押しました。この機能をオンにしますか?</translation>
 <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> はオフになっています。</translation>
 <translation id="4421231901400348175">リモート サポート経由で <ph name="HELPER_NAME" /> と画面の制御を共有しています。</translation>
+<translation id="4427613789487709312">デフォルト(<ph name="RATE" /> 倍)</translation>
 <translation id="4430019312045809116">音量</translation>
 <translation id="4450893287417543264">次回から表示しない</translation>
 <translation id="445864333228800152">こんばんは</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">PIN が正しくありません</translation>
 <translation id="5083553833479578423">さらに多くのアシスタント機能をぜひご活用ください。</translation>
 <translation id="5136175204352732067">別のキーボードが接続されています</translation>
+<translation id="5155897006997040331">読み上げ速度</translation>
 <translation id="5168181903108465623">キャスト デバイスを利用できます</translation>
 <translation id="5170568018924773124">フォルダを開く</translation>
 <translation id="5176318573511391780">画面の一部を録画</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">画面の共有を解除しますか?</translation>
 <translation id="5790085346892983794">完了</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">接続済みデバイスの設定</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> の「<ph name="ROUTE_TITLE" />」を停止します</translation>
 <translation id="5860033963881614850">オフ</translation>
 <translation id="5876666360658629066">保護者のコードを入力してください</translation>
@@ -713,6 +718,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 件の通知}other{# 件の通知}}</translation>
 <translation id="7724603315864178912">切り取り</translation>
+<translation id="7745560842763881396">シェルフのアプリを表示</translation>
 <translation id="7749443890790263709">デスクの数が上限に達しました。</translation>
 <translation id="776344839111254542">クリックしてアップデートの詳細を表示する</translation>
 <translation id="7780159184141939021">画面の回転</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb
index 4ae9104..cbbb7e0 100644
--- a/ash/strings/ash_strings_ka.xtb
+++ b/ash/strings/ash_strings_ka.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">შევწყვიტოთ ეკრანის გაზიარება?</translation>
 <translation id="5790085346892983794">წარმატება</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">დაკავშირებული მოწყობილობების პარამეტრები</translation>
 <translation id="5837036133683224804"><ph name="ROUTE_TITLE" />-ის შეწყვეტა „<ph name="RECEIVER_NAME" />“-ში</translation>
 <translation id="5860033963881614850">გამორთვა</translation>
 <translation id="5876666360658629066">შეიყვანეთ მშობლის კოდი</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb
index 2f45c12f..a90ac3d 100644
--- a/ash/strings/ash_strings_kk.xtb
+++ b/ash/strings/ash_strings_kk.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Экран бөлісуді тоқтату қажет пе?</translation>
 <translation id="5790085346892983794">Орындалды</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Байланыстырылған құрылғылар параметрлері</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> қабылдағышында <ph name="ROUTE_TITLE" /> трансляциясын тоқтату</translation>
 <translation id="5860033963881614850">Өшірулі</translation>
 <translation id="5876666360658629066">Ата-ана кодын енгізіңіз</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb
index 02c4a54..212e034 100644
--- a/ash/strings/ash_strings_km.xtb
+++ b/ash/strings/ash_strings_km.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">បញ្ឈរ</translation>
 <translation id="2067602449040652523">ពន្លឺកា្តរចុច</translation>
 <translation id="2078034614700056995">អូសទៅស្ដាំ​ដោយប្រើម្រាមដៃបួន ដើម្បីប្ដូរទៅតុបន្ទាប់</translation>
+<translation id="2079504693865562705">លាក់កម្មវិធីនៅក្នុងធ្នើរ</translation>
 <translation id="2083190527011054446">រាត្រីសួស្ដី <ph name="GIVEN_NAME" /></translation>
 <translation id="209965399369889474">មិនបាន​ភ្ជាប់ទៅ​បណ្ដាញ​ទេ</translation>
 <translation id="2126242104232412123">តុធ្វើការថ្មី</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">+<ph name="COUNT" /> ទៀត</translation>
 <translation id="3236488194889173876">គ្មាន​បណ្ដាញ​ទូរសព្ទ​ចល័ត​ទេ</translation>
 <translation id="3249513730522716925">បានផ្លាស់ទីផ្ទាំង <ph name="WINDOW_TITLE" /> ពីតុទី <ph name="ACTIVE_DESK" /> ទៅតុទី <ph name="TARGET_DESK" /></translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, កម្លាំងរលកសញ្ញា <ph name="SIGNAL_STRENGTH" /> ភាគរយ។</translation>
 <translation id="3255483164551725916">តើអ្នក​អាច​ធ្វើអ្វី​បានខ្លះ?</translation>
 <translation id="3269597722229482060">ចុចកណ្ដុរខាងស្ដាំ</translation>
 <translation id="3289674678944039601">កំពុងសាកថ្ម​តាមរយៈឆ្នាំងសាក</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">អ្នក​បានចុច​ផ្លូវកាត់ក្ដារចុច​សម្រាប់​កែវពង្រីក​ដាក់​ខាង​លើ​បំផុត។ តើអ្នក​ចង់បើក​វាដែរទេ?</translation>
 <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> បានបិទ។</translation>
 <translation id="4421231901400348175">ចែករំលែកការបញ្ជាអេក្រង់របស់អ្នកជាមួយ <ph name="HELPER_NAME" /> តាមរយៈជំនួយការពីចម្ងាយ។</translation>
+<translation id="4427613789487709312">លំនាំដើម (<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">សម្លេង</translation>
 <translation id="4450893287417543264">កុំបង្ហាញម្ដងទៀត</translation>
 <translation id="445864333228800152">សាយណ្ហ​សួស្ដី</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">លេខសម្គាល់មិនត្រឹមត្រូវ</translation>
 <translation id="5083553833479578423">ដោះសោ​មុខងារ​ជំនួយការ​ជាច្រើនទៀត។</translation>
 <translation id="5136175204352732067">បាន​ភ្ជាប់​ក្ដារចុច​ផ្សេង</translation>
+<translation id="5155897006997040331">ល្បឿននៃការអាន</translation>
 <translation id="5168181903108465623">មានឧបករណ៍ខាស</translation>
 <translation id="5170568018924773124">បង្ហាញនៅក្នុងថតឯកសារ</translation>
 <translation id="5176318573511391780">ថតវីដេអូ​អេក្រង់​ដោយផ្នែក</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">បញ្ឈប់ការចែករំលែកអេក្រង់?</translation>
 <translation id="5790085346892983794">ជោគជ័យ</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">ការកំណត់​ឧបករណ៍ដែល​បានភ្ជាប់</translation>
 <translation id="5837036133683224804">បញ្ឈប់ <ph name="ROUTE_TITLE" /> នៅលើ <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">បិទ</translation>
 <translation id="5876666360658629066">បញ្ចូល​លេខកូដ​របស់​មាតា​បិតា</translation>
@@ -712,6 +717,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{ការ​ជូនដំណឹង 1}other{ការ​ជូន​ដំណឹង #}}</translation>
 <translation id="7724603315864178912">កាត់</translation>
+<translation id="7745560842763881396">បង្ហាញកម្មវិធីនៅក្នុងធ្នើរ</translation>
 <translation id="7749443890790263709">ចំនួនតុ​បាន​ឈានដល់កម្រិតអតិបរមាហើយ។</translation>
 <translation id="776344839111254542">ចុចដើម្បី​មើល​ព័ត៌មាន​លម្អិត​អំពីកំណែថ្មី</translation>
 <translation id="7780159184141939021">បង្វិល​អេក្រង់</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb
index 7d18c53..91b7ae9 100644
--- a/ash/strings/ash_strings_kn.xtb
+++ b/ash/strings/ash_strings_kn.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">ಸ್ಕ್ರೀನ್ ಹಂಚಿಕೆ ನಿಲ್ಲಿಸುವುದೇ?</translation>
 <translation id="5790085346892983794">ಯಶಸ್ವಿಯಾಗಿದೆ</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">ಕನೆಕ್ಟ್ ಮಾಡಿದ ಸಾಧನಗಳ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> ನಲ್ಲಿ <ph name="ROUTE_TITLE" /> ನಿಲ್ಲಿಸಿ</translation>
 <translation id="5860033963881614850">ಆಫ್</translation>
 <translation id="5876666360658629066">ಪೋಷಕ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb
index 774dfe1..38a62e12 100644
--- a/ash/strings/ash_strings_ko.xtb
+++ b/ash/strings/ash_strings_ko.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">세로 방향</translation>
 <translation id="2067602449040652523">키보드 밝기</translation>
 <translation id="2078034614700056995">다음 데스크로 전환하려면 네 손가락을 사용해 오른쪽으로 스와이프하세요.</translation>
+<translation id="2079504693865562705">실행기에서 앱 숨기기</translation>
 <translation id="2083190527011054446">편안한 밤 보내세요, <ph name="GIVEN_NAME" />님</translation>
 <translation id="209965399369889474">네트워크에 연결되어 있지 않음</translation>
 <translation id="2126242104232412123">새 데스크</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">외 <ph name="COUNT" />개</translation>
 <translation id="3236488194889173876">사용할 수 있는 모바일 네트워크 없음</translation>
 <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> 창이 <ph name="ACTIVE_DESK" /> 데스크에서 <ph name="TARGET_DESK" /> 데스크로 이동했습니다.</translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, 신호 강도 <ph name="SIGNAL_STRENGTH" />퍼센트.</translation>
 <translation id="3255483164551725916">무엇을 할 수 있어?</translation>
 <translation id="3269597722229482060">마우스 오른쪽 버튼 클릭</translation>
 <translation id="3289674678944039601">어댑터를 통해 충전 중</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">고정 돋보기 단축키를 누르셨습니다. 사용 설정할까요?</translation>
 <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> 기능이 꺼져 있습니다.</translation>
 <translation id="4421231901400348175">원격 지원을 통해 <ph name="HELPER_NAME" />와(과) 화면 제어 공유</translation>
+<translation id="4427613789487709312">기본값(<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">볼륨</translation>
 <translation id="4450893287417543264">다시 표시하지 않음</translation>
 <translation id="445864333228800152">편안한 저녁 보내세요</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">잘못된 PIN</translation>
 <translation id="5083553833479578423">더 많은 어시스턴트 기능을 사용해 보세요.</translation>
 <translation id="5136175204352732067">다른 키보드 연결됨</translation>
+<translation id="5155897006997040331">읽기 속도</translation>
 <translation id="5168181903108465623">전송 기기를 사용할 수 있음</translation>
 <translation id="5170568018924773124">폴더 열기</translation>
 <translation id="5176318573511391780">화면 일부 녹화</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">화면 공유를 중단하시겠습니까?</translation>
 <translation id="5790085346892983794">완료</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">연결된 기기 설정</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" />에서 <ph name="ROUTE_TITLE" /> 중지</translation>
 <translation id="5860033963881614850">사용 안함</translation>
 <translation id="5876666360658629066">부모 코드 입력</translation>
@@ -712,6 +717,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{알림 1개}other{알림 #개}}</translation>
 <translation id="7724603315864178912">잘라내기</translation>
+<translation id="7745560842763881396">실행기에 앱 표시</translation>
 <translation id="7749443890790263709">최대 데스크 개수에 도달했습니다.</translation>
 <translation id="776344839111254542">업데이트 세부정보를 보려면 클릭하세요.</translation>
 <translation id="7780159184141939021">화면 회전</translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb
index b94a2e94..a8267e2 100644
--- a/ash/strings/ash_strings_ky.xtb
+++ b/ash/strings/ash_strings_ky.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Экран бөлүшүү токтотулсунбу?</translation>
 <translation id="5790085346892983794">Ийгилик</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Туташтырылган түзмөктөрдүн жөндөөлөрү</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> бөлмөсүндөгү <ph name="ROUTE_TITLE" /> токтотулсун</translation>
 <translation id="5860033963881614850">Өчүк</translation>
 <translation id="5876666360658629066">Ата-энелик кодду киргизүү</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb
index 94f0cc8..d8215ade 100644
--- a/ash/strings/ash_strings_lo.xtb
+++ b/ash/strings/ash_strings_lo.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">ຢຸດການແຊຣ໌ຫນ້າ​ຈໍບໍ​?</translation>
 <translation id="5790085346892983794">ສໍາ​ເລັດ</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">ການຕັ້ງຄ່າອຸປະກອນທີ່ເຊື່ອມຕໍ່</translation>
 <translation id="5837036133683224804">ຢຸດ <ph name="ROUTE_TITLE" /> ໃນ <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">ປິດ</translation>
 <translation id="5876666360658629066">ປ້ອນລະຫັດພໍ່ແມ່</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb
index 11ec5697..e61b9e3 100644
--- a/ash/strings/ash_strings_lt.xtb
+++ b/ash/strings/ash_strings_lt.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">Stačias</translation>
 <translation id="2067602449040652523">Klaviatūros šviesumas</translation>
 <translation id="2078034614700056995">Perbraukite į dešinę keturiais pirštais, kad perjungtumėte į kitą darbalaukį</translation>
+<translation id="2079504693865562705">Slėpti programas lentynoje</translation>
 <translation id="2083190527011054446">Labanakt, <ph name="GIVEN_NAME" />,</translation>
 <translation id="209965399369889474">Neprisijungta prie tinklo</translation>
 <translation id="2126242104232412123">Naujas darbalaukis</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">Dar <ph name="COUNT" /></translation>
 <translation id="3236488194889173876">Nėra jokių pasiekiamų mobiliojo ryšio tinklų</translation>
 <translation id="3249513730522716925">Langas „<ph name="WINDOW_TITLE" />“ perkeltas iš darbalaukio „<ph name="ACTIVE_DESK" />“ į darbalaukį „<ph name="TARGET_DESK" />“</translation>
+<translation id="3252068179161473151">„<ph name="WIRELESS_PROVIDER" />“, signalo stiprumas <ph name="SIGNAL_STRENGTH" /> proc.</translation>
 <translation id="3255483164551725916">„What can you do?“ (Ką gali atlikti?)</translation>
 <translation id="3269597722229482060">Spustelėti dešiniuoju klavišu</translation>
 <translation id="3289674678944039601">Įkraunama naudojant adapterį</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">Paspaudėte prie doko prijungto didintuvo spartųjį klavišą. Ar norite jį įjungti?</translation>
 <translation id="4412944820643904175">„<ph name="FEATURE_NAME" />“ išjungta.</translation>
 <translation id="4421231901400348175"><ph name="HELPER_NAME" /> gali valdyti jūsų ekraną naudodamas (-a) Nuotolinę pagalbą.</translation>
+<translation id="4427613789487709312">Numatytasis (<ph name="RATE" /> kart.)</translation>
 <translation id="4430019312045809116">Apimtis</translation>
 <translation id="4450893287417543264">Daugiau neberodyti</translation>
 <translation id="445864333228800152">Labas vakaras,</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">Neteisingas PIN kodas</translation>
 <translation id="5083553833479578423">Atrakinkite daugiau Padėjėjo funkcijų.</translation>
 <translation id="5136175204352732067">Prijungta kita klaviatūra</translation>
+<translation id="5155897006997040331">Skaitymo sparta</translation>
 <translation id="5168181903108465623">Pasiekiami perdavimo įrenginiai</translation>
 <translation id="5170568018924773124">Rodyti aplanke</translation>
 <translation id="5176318573511391780">Įrašyti dalinį ekrano vaizdą</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">Nutraukti ekrano bendrinimą?</translation>
 <translation id="5790085346892983794">Atlikta</translation>
 <translation id="5820394555380036790">„Chromium“ OS</translation>
+<translation id="5825969630400862129">Susietų įrenginių nustatymai</translation>
 <translation id="5837036133683224804">Sustabdyti „<ph name="ROUTE_TITLE" />“ („<ph name="RECEIVER_NAME" />“)</translation>
 <translation id="5860033963881614850">Išjungta</translation>
 <translation id="5876666360658629066">Įveskite tėvų kodą</translation>
@@ -712,6 +717,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 pranešimas}one{# pranešimas}few{# pranešimai}many{# pranešimo}other{# pranešimų}}</translation>
 <translation id="7724603315864178912">Iškirpti</translation>
+<translation id="7745560842763881396">Rodyti programas lentynoje</translation>
 <translation id="7749443890790263709">Pasiektas didžiausias pultų skaičius.</translation>
 <translation id="776344839111254542">Spustelėkite ir peržiūrėkite išsamią atnaujinimo informaciją</translation>
 <translation id="7780159184141939021">Ekrano pasukimas</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb
index 4a7d460..20cdc8d 100644
--- a/ash/strings/ash_strings_lv.xtb
+++ b/ash/strings/ash_strings_lv.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Vai apturēt ekrāna koplietošanu?</translation>
 <translation id="5790085346892983794">Veiksmīgi pabeigts</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Saistīto ierīču iestatījumi</translation>
 <translation id="5837036133683224804">Pārtraukt “<ph name="ROUTE_TITLE" />” apraidi ierīcē “<ph name="RECEIVER_NAME" />”</translation>
 <translation id="5860033963881614850">Izsl.</translation>
 <translation id="5876666360658629066">Ievadiet vecāku kodu</translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb
index ff6ecb1..e10e8dc 100644
--- a/ash/strings/ash_strings_mk.xtb
+++ b/ash/strings/ash_strings_mk.xtb
@@ -519,6 +519,7 @@
 <translation id="5777841717266010279">Запри споделување екран?</translation>
 <translation id="5790085346892983794">Успешно</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Поставки за поврзани уреди</translation>
 <translation id="5837036133683224804">Престани со емитување на <ph name="ROUTE_TITLE" /> на <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Исклучено</translation>
 <translation id="5876666360658629066">Внесете го кодот на родител</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb
index af66933..7b69a45 100644
--- a/ash/strings/ash_strings_ml.xtb
+++ b/ash/strings/ash_strings_ml.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">പോർട്രെയ്റ്റ്</translation>
 <translation id="2067602449040652523">കീബോർഡ് തെളിച്ചം</translation>
 <translation id="2078034614700056995">അടുത്ത ഡെസ്‌ക്കിലേക്ക് മാറാൻ, നാല് വിരലുകൾ ഉപയോഗിച്ച് വലത്തേക്ക് സ്വൈപ്പ് ചെയ്യുക</translation>
+<translation id="2079504693865562705">ഷെൽഫിലെ ആപ്പുകൾ മറയ്ക്കുക</translation>
 <translation id="2083190527011054446">ഗുഡ്‌നെെറ്റ് <ph name="GIVEN_NAME" />,</translation>
 <translation id="209965399369889474">നെറ്റ്‌വർക്കിൽ കണക്‌റ്റ് ചെയ്‌തിട്ടില്ല</translation>
 <translation id="2126242104232412123">പുതിയ ഡെസ്‌ക്</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">+<ph name="COUNT" /> കൂടുതൽ</translation>
 <translation id="3236488194889173876">മൊബൈൽ നെറ്റ്‌വർക്ക് ലഭ്യമല്ല</translation>
 <translation id="3249513730522716925">വിൻഡോ <ph name="WINDOW_TITLE" /> ഡെസ്‌ക് <ph name="ACTIVE_DESK" />-ൽ നിന്ന് ഡെസ്‌ക് <ph name="TARGET_DESK" />-ലേക്ക് നീക്കി</translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, സിഗ്‌നൽ ശക്തി <ph name="SIGNAL_STRENGTH" /> ശതമാനം.</translation>
 <translation id="3255483164551725916">നിങ്ങൾക്ക് എന്ത് ചെയ്യാനാവും?</translation>
 <translation id="3269597722229482060">വലത് ക്ലിക്ക്</translation>
 <translation id="3289674678944039601">അഡാപ്‌റ്റർ വഴി ചാർജ് ചെയ്യുന്നു</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">നിങ്ങൾ ഡോക്ക് ചെയ്‌ത മാഗ്നിഫയറിനായി കീബോഡ് കുറുക്കുവഴി അമർത്തി. അത് ഓണാക്കണോ?</translation>
 <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> ഓഫാണ്.</translation>
 <translation id="4421231901400348175"><ph name="HELPER_NAME" /> ഉപയോഗിച്ച് നിങ്ങളുടെ വിദൂര സഹായി മുഖേന സ്‌ക്രീനിന്റെ നിയന്ത്രണം പങ്കിടുക.</translation>
+<translation id="4427613789487709312">ഡിഫോൾട്ട് (<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">അളവ്</translation>
 <translation id="4450893287417543264">വീണ്ടും കാണിക്കരുത്</translation>
 <translation id="445864333228800152">ഗുഡ് ഈവനിംഗ്,</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">തെറ്റായ PIN</translation>
 <translation id="5083553833479578423">കൂടുതൽ അസിസ്റ്റന്റ് ഫീച്ചറുകൾ അൺലോക്ക് ചെയ്യുക.</translation>
 <translation id="5136175204352732067">വ്യത്യസ്ത കീബോർഡ് കണക്‌റ്റ് ചെയ്‌തു</translation>
+<translation id="5155897006997040331">വായനാ വേഗത</translation>
 <translation id="5168181903108465623">Cast ഉപകരണങ്ങൾ ലഭ്യമാണ്.</translation>
 <translation id="5170568018924773124">ഫോള്‍ഡറില്‍ കാണിക്കുക</translation>
 <translation id="5176318573511391780">ഭാഗിക സ്ക്രീൻ റെക്കോർഡ് ചെയ്യുക</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">സ്‌ക്രീൻ പങ്കിടൽ നിർത്തണോ?</translation>
 <translation id="5790085346892983794">വിജയകരം</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">കണക്റ്റ് ചെയ്തിരിക്കുന്ന ഉപകരണങ്ങൾക്കുള്ള ക്രമീകരണം</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" />-ൽ <ph name="ROUTE_TITLE" /> നിർത്തുക</translation>
 <translation id="5860033963881614850">ഓഫാക്കുക</translation>
 <translation id="5876666360658629066">രക്ഷാകർതൃ കോഡ് നൽകുക</translation>
@@ -712,6 +717,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{ഒരു അറിയിപ്പ്}other{# അറിയിപ്പുകൾ}}</translation>
 <translation id="7724603315864178912">മുറിക്കുക</translation>
+<translation id="7745560842763881396">ഷെൽഫിലെ ആപ്പുകൾ കാണിക്കുക</translation>
 <translation id="7749443890790263709">ഡെസ്‌ക്കുകളുടെ പരമാവധി എണ്ണത്തിൽ എത്തിയിരിക്കുന്നു.</translation>
 <translation id="776344839111254542">അപ്‌ഡേറ്റ് ചെയ്‌ത വിശദാംശങ്ങൾ കാണാൻ ‌ക്ലിക്ക് ചെയ്യുക</translation>
 <translation id="7780159184141939021">സ്‌ക്രീൻ തിരിക്കുക</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb
index 8f6bc982..d30fbe9 100644
--- a/ash/strings/ash_strings_mn.xtb
+++ b/ash/strings/ash_strings_mn.xtb
@@ -519,6 +519,7 @@
 <translation id="5777841717266010279">Дэлгэц хуваалцахыг зогсоох уу?</translation>
 <translation id="5790085346892983794">Амжилттай гүйцэтгэлээ</translation>
 <translation id="5820394555380036790">Chromium-н үйлдлийн систем</translation>
+<translation id="5825969630400862129">Холбогдсон төхөөрөмжүүдийн тохиргоо</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" />-г <ph name="ROUTE_TITLE" />-д дамжуулахаа зогсоох</translation>
 <translation id="5860033963881614850">Идэвхгүй байна</translation>
 <translation id="5876666360658629066">Эцэг эхийн кодыг оруулах</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb
index 29d86731..98a816e 100644
--- a/ash/strings/ash_strings_mr.xtb
+++ b/ash/strings/ash_strings_mr.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">स्क्रीन सामायिकरण थांबवायचे?</translation>
 <translation id="5790085346892983794">यशस्वी</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">कनेक्‍ट केलेली डिव्हाइस सेटिंग्ज</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> वर <ph name="ROUTE_TITLE" /> थांबवा</translation>
 <translation id="5860033963881614850">बंद</translation>
 <translation id="5876666360658629066">पालक कोड एंटर करा</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb
index 7a633c8..be39091 100644
--- a/ash/strings/ash_strings_ms.xtb
+++ b/ash/strings/ash_strings_ms.xtb
@@ -519,6 +519,7 @@
 <translation id="5777841717266010279">Hentikan perkongsian skrin?</translation>
 <translation id="5790085346892983794">Berjaya</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Tetapan peranti yang bersambung</translation>
 <translation id="5837036133683224804">Hentikan <ph name="ROUTE_TITLE" /> pada <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Dimatikan</translation>
 <translation id="5876666360658629066">Masukkan kod ibu bapa</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb
index 376d48e..574d289 100644
--- a/ash/strings/ash_strings_my.xtb
+++ b/ash/strings/ash_strings_my.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">မျက်နှာပြင် ဝေမျှနေခြင်း ရပ်လိုပါသလား?</translation>
 <translation id="5790085346892983794">အောင်မြင်ခြင်း</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">ချိတ်ဆက်ထားသည့် စက်ဆက်တင်များ</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> တွင် <ph name="ROUTE_TITLE" /> ကို ရပ်ရန်</translation>
 <translation id="5860033963881614850">ပိတ်ထား</translation>
 <translation id="5876666360658629066">မိဘကုဒ်ကို ထည့်ပါ</translation>
diff --git a/ash/strings/ash_strings_ne.xtb b/ash/strings/ash_strings_ne.xtb
index fd682fc..ea743d7e 100644
--- a/ash/strings/ash_strings_ne.xtb
+++ b/ash/strings/ash_strings_ne.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">स्क्रिन साझा गर्ने रोक्ने?</translation>
 <translation id="5790085346892983794">सफलता</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">कनेक्ट गरिएका यन्त्रहरूसम्बन्धी सेटिङ</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> मा <ph name="ROUTE_TITLE" /> बन्द गर्नुहोस्</translation>
 <translation id="5860033963881614850">बन्द</translation>
 <translation id="5876666360658629066">अभिभावकको कोड प्रविष्टि गर्नुहोस्</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb
index 5b339b0..fc19fd1 100644
--- a/ash/strings/ash_strings_nl.xtb
+++ b/ash/strings/ash_strings_nl.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">Stoppen met scherm delen?</translation>
 <translation id="5790085346892983794">Geslaagd</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Instellingen voor verbonden apparaten</translation>
 <translation id="5837036133683224804"><ph name="ROUTE_TITLE" /> in <ph name="RECEIVER_NAME" /> stopzetten</translation>
 <translation id="5860033963881614850">Uit</translation>
 <translation id="5876666360658629066">Voer de oudercode in</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb
index 4728325..2ae38851 100644
--- a/ash/strings/ash_strings_no.xtb
+++ b/ash/strings/ash_strings_no.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Vil du stoppe skjermdelingen?</translation>
 <translation id="5790085346892983794">Fullført</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Innstillinger for tilkoblede enheter</translation>
 <translation id="5837036133683224804">Stopp <ph name="ROUTE_TITLE" /> på <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Av</translation>
 <translation id="5876666360658629066">Angi foreldrekoden</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb
index 1374ad7..7a6f793c 100644
--- a/ash/strings/ash_strings_or.xtb
+++ b/ash/strings/ash_strings_or.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">ସ୍କ୍ରିନ୍ ସେୟାରିଂ ବନ୍ଦ କରିବେ?</translation>
 <translation id="5790085346892983794">ସଫଳ ହୋଇଛି</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">ସଂଯୁକ୍ତ ଥିବା ଡିଭାଇସଗୁଡ଼ିକର ସେଟିଂସ୍</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" />ରେ <ph name="ROUTE_TITLE" /> ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="5860033963881614850">ବନ୍ଦ ଅଛି</translation>
 <translation id="5876666360658629066">ବାପାମା କୋଡ୍ ଲେଖନ୍ତୁ</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb
index 03cb9958..8a9b7f7 100644
--- a/ash/strings/ash_strings_pa.xtb
+++ b/ash/strings/ash_strings_pa.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">ਕੀ ਸਕ੍ਰੀਨ ਸ਼ੇਅਰਿੰਗ ਰੋਕਣੀ ਹੈ?</translation>
 <translation id="5790085346892983794">ਸਫਲਤਾ</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">ਕਨੈਕਟ ਕੀਤੇ ਡੀਵਾਈਸਾਂ ਦੀਆਂ ਸੈਟਿੰਗਾਂ</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> 'ਤੇ <ph name="ROUTE_TITLE" /> ਨੂੰ ਬੰਦ ਕਰੋ</translation>
 <translation id="5860033963881614850">ਬੰਦ ਕਰੋ</translation>
 <translation id="5876666360658629066">ਮਾਂ-ਪਿਓ ਕੋਡ ਦਾਖਲ ਕਰੋ</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb
index 3e1adf9..4360fbc 100644
--- a/ash/strings/ash_strings_pl.xtb
+++ b/ash/strings/ash_strings_pl.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">Pionowo</translation>
 <translation id="2067602449040652523">Jasność klawiatury</translation>
 <translation id="2078034614700056995">Aby przełączyć się na następne biurko, przesuń 4 palcami w prawo</translation>
+<translation id="2079504693865562705">Ukryj aplikacje na półce</translation>
 <translation id="2083190527011054446">Dobranoc <ph name="GIVEN_NAME" />,</translation>
 <translation id="209965399369889474">Brak połączenia z siecią</translation>
 <translation id="2126242104232412123">Nowe biurko</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">i jeszcze <ph name="COUNT" /></translation>
 <translation id="3236488194889173876">Brak dostępnych sieci komórkowych</translation>
 <translation id="3249513730522716925">Okno <ph name="WINDOW_TITLE" /> zostało przeniesione z biurka <ph name="ACTIVE_DESK" /> na biurko <ph name="TARGET_DESK" /></translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, siła sygnału <ph name="SIGNAL_STRENGTH" /> procent.</translation>
 <translation id="3255483164551725916">Co potrafisz?</translation>
 <translation id="3269597722229482060">Kliknij prawym</translation>
 <translation id="3289674678944039601">Ładowanie z zasilacza.</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">Naciśnięto skrót klawiszowy lupy zadokowanej. Czy chcesz ją włączyć?</translation>
 <translation id="4412944820643904175">Funkcja <ph name="FEATURE_NAME" /> jest wyłączona.</translation>
 <translation id="4421231901400348175">Udostępnianie sterowania ekranem użytkownikowi <ph name="HELPER_NAME" /> przy użyciu pomocy zdalnej.</translation>
+<translation id="4427613789487709312">Domyślna (<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">Głośność</translation>
 <translation id="4450893287417543264">Nie pokazuj ponownie</translation>
 <translation id="445864333228800152">Dobry wieczór,</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">Błędny kod PIN</translation>
 <translation id="5083553833479578423">Poznaj więcej funkcji Asystenta.</translation>
 <translation id="5136175204352732067">Podłączono inną klawiaturę</translation>
+<translation id="5155897006997040331">Szybkość czytania</translation>
 <translation id="5168181903108465623">Dostępne są urządzenia przesyłające</translation>
 <translation id="5170568018924773124">Pokaż w folderze</translation>
 <translation id="5176318573511391780">Nagraj fragment ekranu</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">Zakończyć udostępnianie ekranu?</translation>
 <translation id="5790085346892983794">Udało się</translation>
 <translation id="5820394555380036790">System operacyjny Chromium</translation>
+<translation id="5825969630400862129">Ustawienia połączonych urządzeń</translation>
 <translation id="5837036133683224804">Zatrzymaj usługę <ph name="ROUTE_TITLE" /> na urządzeniu <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Wyłączone</translation>
 <translation id="5876666360658629066">Wpisz kod rodzica</translation>
@@ -712,6 +717,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 powiadomienie}few{# powiadomienia}many{# powiadomień}other{# powiadomienia}}</translation>
 <translation id="7724603315864178912">Wytnij</translation>
+<translation id="7745560842763881396">Pokaż aplikacje na półce</translation>
 <translation id="7749443890790263709">Osiągnięto maksymalną liczbę biurek.</translation>
 <translation id="776344839111254542">Kliknij, by wyświetlić szczegóły aktualizacji</translation>
 <translation id="7780159184141939021">Obróć ekran</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb
index 51cde1a..2ff8918 100644
--- a/ash/strings/ash_strings_pt-BR.xtb
+++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">Interromper compartilhamento de tela?</translation>
 <translation id="5790085346892983794">Sucesso</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Configurações de dispositivos conectados</translation>
 <translation id="5837036133683224804">Parar <ph name="ROUTE_TITLE" /> para <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Desativado</translation>
 <translation id="5876666360658629066">Digite o código de pai/mãe</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb
index 84b9dac2..7dd3e0f2 100644
--- a/ash/strings/ash_strings_pt-PT.xtb
+++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Parar a partilha do ecrã?</translation>
 <translation id="5790085346892983794">Sucesso</translation>
 <translation id="5820394555380036790">SO Chromium</translation>
+<translation id="5825969630400862129">Definições de dispositivos associados</translation>
 <translation id="5837036133683224804">Parar o <ph name="ROUTE_TITLE" /> no recetor <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Desativado</translation>
 <translation id="5876666360658629066">Introduza o código parental</translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb
index 2dce594..eda04a9d 100644
--- a/ash/strings/ash_strings_ro.xtb
+++ b/ash/strings/ash_strings_ro.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Oprești permiterea accesului la ecran?</translation>
 <translation id="5790085346892983794">Ai reușit</translation>
 <translation id="5820394555380036790">Sistemul de operare Chromium</translation>
+<translation id="5825969630400862129">Setări pentru dispozitivele conectate</translation>
 <translation id="5837036133683224804">Întrerupe <ph name="ROUTE_TITLE" /> pe <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Dezactivat</translation>
 <translation id="5876666360658629066">Introdu codul pentru părinte</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb
index 66fe3ec..517816aee 100644
--- a/ash/strings/ash_strings_ru.xtb
+++ b/ash/strings/ash_strings_ru.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">Закрыть доступ к экрану?</translation>
 <translation id="5790085346892983794">Выполнено</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Настройки подключенных устройств</translation>
 <translation id="5837036133683224804">Остановить трансляцию <ph name="ROUTE_TITLE" /> на устройство "<ph name="RECEIVER_NAME" />"</translation>
 <translation id="5860033963881614850">ВЫКЛ</translation>
 <translation id="5876666360658629066">Введите родительский код</translation>
diff --git a/ash/strings/ash_strings_si.xtb b/ash/strings/ash_strings_si.xtb
index d6c0c69..2c5c7fe 100644
--- a/ash/strings/ash_strings_si.xtb
+++ b/ash/strings/ash_strings_si.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">තිර හවුල්කිරීම නවතන්නද?</translation>
 <translation id="5790085346892983794">සාර්ථකයි</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">සම්බන්ධිත උපාංග සැකසීම්</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> මත <ph name="ROUTE_TITLE" /> නවත්වන්න</translation>
 <translation id="5860033963881614850">අක්‍රීය</translation>
 <translation id="5876666360658629066">මාපිය කේතය ඇතුළත් කරන්න</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb
index 817cfb4..a41f9ff 100644
--- a/ash/strings/ash_strings_sk.xtb
+++ b/ash/strings/ash_strings_sk.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Chcete ukončiť zdieľanie obrazovky?</translation>
 <translation id="5790085346892983794">Úspešné</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Nastavenia pripojených zariadení</translation>
 <translation id="5837036133683224804">Zastaviť prenos obsahu <ph name="ROUTE_TITLE" /> do zariadenia <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Vypnuté</translation>
 <translation id="5876666360658629066">Zadajte kód rodiča</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb
index e3da3b9..3f59294 100644
--- a/ash/strings/ash_strings_sl.xtb
+++ b/ash/strings/ash_strings_sl.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">Pokončno</translation>
 <translation id="2067602449040652523">Svetlost tipkovnice</translation>
 <translation id="2078034614700056995">Povlecite s štirimi prsti v desno, če želite preklopiti na naslednjo pisalno mizo.</translation>
+<translation id="2079504693865562705">Skrivanje aplikacij na polici</translation>
 <translation id="2083190527011054446">Lahko noč, <ph name="GIVEN_NAME" />,</translation>
 <translation id="209965399369889474">Ni povezave z omrežjem</translation>
 <translation id="2126242104232412123">Nova delovna miza</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">in še <ph name="COUNT" /></translation>
 <translation id="3236488194889173876">Mobilno omrežje ni na voljo</translation>
 <translation id="3249513730522716925">Okno <ph name="WINDOW_TITLE" /> je bilo premaknjeno iz namizja <ph name="ACTIVE_DESK" /> v namizje <ph name="TARGET_DESK" /></translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, moč signala: <ph name="SIGNAL_STRENGTH" /> %.</translation>
 <translation id="3255483164551725916">Kakšne možnosti so na voljo?</translation>
 <translation id="3269597722229482060">Desni klik</translation>
 <translation id="3289674678944039601">Polnjenje prek napajalnika</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">Pritisnili ste bližnjično tipko za zasidrano lupo. Ali jo želite vklopiti?</translation>
 <translation id="4412944820643904175">Funkcija <ph name="FEATURE_NAME" /> je izklopljena.</translation>
 <translation id="4421231901400348175">Deljenje nadzora nad zaslonom z osebo <ph name="HELPER_NAME" /> prek pomoči na daljavo.</translation>
+<translation id="4427613789487709312">Privzeto (<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">Glasnost</translation>
 <translation id="4450893287417543264">Tega ne prikaži več</translation>
 <translation id="445864333228800152">Dober večer,</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">Napačen PIN</translation>
 <translation id="5083553833479578423">Odklenite več funkcij Pomočnika.</translation>
 <translation id="5136175204352732067">Priklopljena je druga tipkovnica</translation>
+<translation id="5155897006997040331">Hitrost branja</translation>
 <translation id="5168181903108465623">Naprave za predvajanje so na voljo</translation>
 <translation id="5170568018924773124">Prikaži v mapi</translation>
 <translation id="5176318573511391780">Snemanje delnega zaslona</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">Želite ustaviti skupno rabo zaslona?</translation>
 <translation id="5790085346892983794">Uspešno</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Nastavitve povezanih naprav</translation>
 <translation id="5837036133683224804">Ustavi zavihek <ph name="ROUTE_TITLE" /> v sprejemniku <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Izklopljeno</translation>
 <translation id="5876666360658629066">Vnos kode starša</translation>
@@ -712,6 +717,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 obvestilo}one{# obvestilo}two{# obvestili}few{# obvestila}other{# obvestil}}</translation>
 <translation id="7724603315864178912">Izreži</translation>
+<translation id="7745560842763881396">Prikaz aplikacij na polici</translation>
 <translation id="7749443890790263709">Doseženo je največje dovoljeno število namizij.</translation>
 <translation id="776344839111254542">Kliknite, če si želite ogledati podrobnosti o posodobitvi</translation>
 <translation id="7780159184141939021">Zasuk zaslona</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb
index d308502..9242a09 100644
--- a/ash/strings/ash_strings_sq.xtb
+++ b/ash/strings/ash_strings_sq.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Dëshiron të ndalosh ndarjen e ekranit?</translation>
 <translation id="5790085346892983794">Me sukses</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Cilësimet e pajisjeve të lidhura</translation>
 <translation id="5837036133683224804">Ndalo <ph name="ROUTE_TITLE" /> në <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Çaktivizuar</translation>
 <translation id="5876666360658629066">Fut kodin e prindit</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb
index d0bd892..9ee7ab8 100644
--- a/ash/strings/ash_strings_sr-Latn.xtb
+++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Želite li da prekinete deljenje ekrana?</translation>
 <translation id="5790085346892983794">Uspešno</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Podešavanja povezanih uređaja</translation>
 <translation id="5837036133683224804">Zaustavi <ph name="ROUTE_TITLE" /> na uređaju <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Isključeno</translation>
 <translation id="5876666360658629066">Unesite kôd roditelja</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb
index 3261066..4c449ba 100644
--- a/ash/strings/ash_strings_sr.xtb
+++ b/ash/strings/ash_strings_sr.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Желите ли да прекинете дељење екрана?</translation>
 <translation id="5790085346892983794">Успешно</translation>
 <translation id="5820394555380036790">Chromium ОС</translation>
+<translation id="5825969630400862129">Подешавања повезаних уређаја</translation>
 <translation id="5837036133683224804">Заустави <ph name="ROUTE_TITLE" /> на уређају <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Искључено</translation>
 <translation id="5876666360658629066">Унесите кôд родитеља</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb
index 065cc59a..5e5b5dc 100644
--- a/ash/strings/ash_strings_sv.xtb
+++ b/ash/strings/ash_strings_sv.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Vill du avbryta skärmdelningen?</translation>
 <translation id="5790085346892983794">Klart</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Inställningar för anslutna enheter</translation>
 <translation id="5837036133683224804">Sluta casta <ph name="ROUTE_TITLE" /> till <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Av</translation>
 <translation id="5876666360658629066">Ange föräldrakod</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb
index e34aec4..bd44ff9 100644
--- a/ash/strings/ash_strings_sw.xtb
+++ b/ash/strings/ash_strings_sw.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Je,ungependa kuacha kushiriki skrini?</translation>
 <translation id="5790085346892983794">Mafanikio</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Mipangilio ya vifaa vilivyounganishwa</translation>
 <translation id="5837036133683224804">Komesha <ph name="ROUTE_TITLE" /> kwenye <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Kimezimwa</translation>
 <translation id="5876666360658629066">Weka msimbo wa mzazi</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb
index d0adc4f4..a1d8d9c 100644
--- a/ash/strings/ash_strings_ta.xtb
+++ b/ash/strings/ash_strings_ta.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">திரைப் பகிர்வதை நிறுத்தவா?</translation>
 <translation id="5790085346892983794">வெற்றி</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">இணைக்கப்பட்ட சாதனங்களின் அமைப்புகள்</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" />க்கு <ph name="ROUTE_TITLE" />ஐ அனுப்புவதை நிறுத்து</translation>
 <translation id="5860033963881614850">ஆஃப்</translation>
 <translation id="5876666360658629066">பெற்றோர் குறியீட்டை உள்ளிடுங்கள்</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb
index 7932ccc..6acefcd8 100644
--- a/ash/strings/ash_strings_te.xtb
+++ b/ash/strings/ash_strings_te.xtb
@@ -519,6 +519,7 @@
 <translation id="5777841717266010279">స్క్రీన్ భాగస్వామ్యాన్ని ఆపివేయాలా?</translation>
 <translation id="5790085346892983794">విజయవంతం</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">కనెక్ట్ చేయబడిన పరికరాల సెట్టింగ్‌లు</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" />లో <ph name="ROUTE_TITLE" /> ఆపివేయి</translation>
 <translation id="5860033963881614850">ఆఫ్ అయ్యింది</translation>
 <translation id="5876666360658629066">తల్లిదండ్రుల కోడ్‌ను ఎంటర్ చేయండి</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb
index 180384d..f4301d2 100644
--- a/ash/strings/ash_strings_th.xtb
+++ b/ash/strings/ash_strings_th.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">ต้องการหยุดแชร์หน้าจอไหม</translation>
 <translation id="5790085346892983794">สำเร็จ</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">การตั้งค่าอุปกรณ์ที่เชื่อมต่อ</translation>
 <translation id="5837036133683224804">หยุด <ph name="ROUTE_TITLE" /> ใน<ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">ปิด</translation>
 <translation id="5876666360658629066">กรอกรหัสผู้ปกครอง</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb
index c1388d09..18dc0c17 100644
--- a/ash/strings/ash_strings_tr.xtb
+++ b/ash/strings/ash_strings_tr.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">Dikey</translation>
 <translation id="2067602449040652523">Klavye parlaklığı</translation>
 <translation id="2078034614700056995">Sonraki masaya geçmek için dört parmakla sağa kaydırın</translation>
+<translation id="2079504693865562705">Raftaki uygulamaları gizle</translation>
 <translation id="2083190527011054446">İyi geceler <ph name="GIVEN_NAME" />,</translation>
 <translation id="209965399369889474">Ağa bağlı değilsiniz</translation>
 <translation id="2126242104232412123">Yeni masa</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">+<ph name="COUNT" /> öğe daha</translation>
 <translation id="3236488194889173876">Kullanılabilir mobil ağ yok</translation>
 <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> penceresi, Masa <ph name="ACTIVE_DESK" /> üzerinden Masa <ph name="TARGET_DESK" /> üzerine taşındı</translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, Yüzde <ph name="SIGNAL_STRENGTH" /> sinyal gücü.</translation>
 <translation id="3255483164551725916">Neler yapabilirsin?</translation>
 <translation id="3269597722229482060">Sağ Tıkla</translation>
 <translation id="3289674678944039601">Adaptör ile şarj oluyor</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">Yerleştirilmiş büyüteç klavye kısayoluna bastınız. Bu özelliği açmak istiyor musunuz?</translation>
 <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> özelliği kapalı.</translation>
 <translation id="4421231901400348175">Ekranınızın kontrolü, Uzaktan Yardım kullanılarak <ph name="HELPER_NAME" /> ile paylaşılıyor.</translation>
+<translation id="4427613789487709312">Varsayılan (<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">Ses</translation>
 <translation id="4450893287417543264">Bir daha gösterme</translation>
 <translation id="445864333228800152">İyi akşamlar,</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">Yanlış PIN</translation>
 <translation id="5083553833479578423">Diğer Asistan özelliklerinin kilidini açın.</translation>
 <translation id="5136175204352732067">Farklı klavye bağlandı</translation>
+<translation id="5155897006997040331">Okuma hızı</translation>
 <translation id="5168181903108465623">Yayın cihazları kullanılabilir</translation>
 <translation id="5170568018924773124">Klasörde göster</translation>
 <translation id="5176318573511391780">Kısmi ekranı kaydet</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">Ekran paylaşma durdurulsun mu?</translation>
 <translation id="5790085346892983794">Başarılı</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Bağlı cihaz ayarları</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> adlı alıcıya <ph name="ROUTE_TITLE" /> yayınını durdur</translation>
 <translation id="5860033963881614850">Kapalı</translation>
 <translation id="5876666360658629066">Ebeveyn kodunu girin</translation>
@@ -713,6 +718,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 bildirim}other{# bildirim}}</translation>
 <translation id="7724603315864178912">Kes</translation>
+<translation id="7745560842763881396">Raftaki uygulamaları göster</translation>
 <translation id="7749443890790263709">Maksimum masa sayısına ulaşıldı.</translation>
 <translation id="776344839111254542">Güncelleme ayrıntılarını görüntülemek için tıklayın</translation>
 <translation id="7780159184141939021">Ekranı Döndür</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb
index 3d34ae9..bbf4f7b 100644
--- a/ash/strings/ash_strings_uk.xtb
+++ b/ash/strings/ash_strings_uk.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">Портретна</translation>
 <translation id="2067602449040652523">Яскравість клавіатури</translation>
 <translation id="2078034614700056995">Проведіть чотирма пальцями праворуч, щоб перейти до наступного робочого столу</translation>
+<translation id="2079504693865562705">Приховати додатки на полиці</translation>
 <translation id="2083190527011054446">Доброї ночі, <ph name="GIVEN_NAME" />!</translation>
 <translation id="209965399369889474">Немає з’єднання з мережею</translation>
 <translation id="2126242104232412123">Новий робочий стіл</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">Ще <ph name="COUNT" /></translation>
 <translation id="3236488194889173876">Немає мобільних мереж</translation>
 <translation id="3249513730522716925">Вікно "<ph name="WINDOW_TITLE" />" переміщено з робочого столу "<ph name="ACTIVE_DESK" />" на робочий стіл "<ph name="TARGET_DESK" />"</translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, рівень сигналу – <ph name="SIGNAL_STRENGTH" />%.</translation>
 <translation id="3255483164551725916">Що ти можеш?</translation>
 <translation id="3269597722229482060">Натиснути правою кнопкою миші</translation>
 <translation id="3289674678944039601">Заряджання через адаптер</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">Ви натиснули комбінацію клавіш для закріпленої лупи. Увімкнути?</translation>
 <translation id="4412944820643904175">Функцію "<ph name="FEATURE_NAME" />" вимкнено.</translation>
 <translation id="4421231901400348175">Спільний доступ до екрана для користувача <ph name="HELPER_NAME" /> через віддалену допомогу.</translation>
+<translation id="4427613789487709312">За умовчанням (<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">Гучність</translation>
 <translation id="4450893287417543264">Більше не показувати</translation>
 <translation id="445864333228800152">Доброго вечора!</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">Неправильний PIN-код</translation>
 <translation id="5083553833479578423">Розблокуйте інші функції Асистента.</translation>
 <translation id="5136175204352732067">Під’єднано іншу клавіатуру</translation>
+<translation id="5155897006997040331">Швидкість читання</translation>
 <translation id="5168181903108465623">Доступні пристрої для трансляції</translation>
 <translation id="5170568018924773124">Показати в папці</translation>
 <translation id="5176318573511391780">Записувати частину екрана</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">Скасувати спільний доступ до екрана?</translation>
 <translation id="5790085346892983794">Готово</translation>
 <translation id="5820394555380036790">ОС Chromium</translation>
+<translation id="5825969630400862129">Налаштування підключених пристроїв</translation>
 <translation id="5837036133683224804">Зупинити трансляцію <ph name="ROUTE_TITLE" /> на пристрій "<ph name="RECEIVER_NAME" />"</translation>
 <translation id="5860033963881614850">Вимк.</translation>
 <translation id="5876666360658629066">Введіть батьківський код</translation>
@@ -712,6 +717,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 cповіщення}one{# сповіщення}few{# сповіщення}many{# сповіщень}other{# сповіщення}}</translation>
 <translation id="7724603315864178912">Вирізати</translation>
+<translation id="7745560842763881396">Показувати додатки на полиці</translation>
 <translation id="7749443890790263709">Ви додали максимальну кількість робочих столів.</translation>
 <translation id="776344839111254542">Натисніть, щоб переглянути деталі оновлення</translation>
 <translation id="7780159184141939021">Обернути екран</translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb
index 265a4db..d57aca7 100644
--- a/ash/strings/ash_strings_ur.xtb
+++ b/ash/strings/ash_strings_ur.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">پورٹریٹ</translation>
 <translation id="2067602449040652523">کی بورڈ کی چمک</translation>
 <translation id="2078034614700056995">اگلے ڈیسک پر سوئچ کرنے کے لیے چار انگلیوں سے دائیں سوائپ کریں۔</translation>
+<translation id="2079504693865562705">شیلف میں ایپس چھپائیں</translation>
 <translation id="2083190527011054446">شب بخیر <ph name="GIVEN_NAME" />،</translation>
 <translation id="209965399369889474">نیٹ ورک سے منسلک نہیں ہے</translation>
 <translation id="2126242104232412123">نیا ڈیسک</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">‏‎<ph name="COUNT" />+‎ مزید</translation>
 <translation id="3236488194889173876">کوئی موبائل نیٹ ورک دستیاب نہیں ہے</translation>
 <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> ونڈو کو <ph name="ACTIVE_DESK" /> ڈیسک سے <ph name="TARGET_DESK" /> ڈیسک میں منتقل کر دیا گیا ہے</translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />، سگنل کی مضبوطی <ph name="SIGNAL_STRENGTH" /> فیصد۔</translation>
 <translation id="3255483164551725916">آپ کیا کر سکتی ہیں؟</translation>
 <translation id="3269597722229482060">دائیں طرف کلک کریں</translation>
 <translation id="3289674678944039601">ایڈاپٹر کے ذریعے چارج ہو رہا ہے</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">آپ نے ڈاک کردہ مکبّر کیلئے کی بورڈ شارٹ کٹ دبایا ہے۔ کیا آپ اسے آن کرنا چاہتے ہیں؟</translation>
 <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> آف ہے۔</translation>
 <translation id="4421231901400348175">ریموٹ اسسٹنس کے ذریعے <ph name="HELPER_NAME" /> کے ساتھ آپ کی اسکرین کے کنٹرول کا اشتراک کیا جا رہا ہے۔</translation>
+<translation id="4427613789487709312">‏ڈیفالٹ (‎<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">والیوم</translation>
 <translation id="4450893287417543264">دوبارہ نہ دکھائیں</translation>
 <translation id="445864333228800152">شام بخیر،</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">‏غلط PIN</translation>
 <translation id="5083553833479578423">اسسٹنٹ کی مزید خصوصیات کو غیر مقفل کریں۔</translation>
 <translation id="5136175204352732067">مختلف کی بورڈ منسلک کر دیا گیا</translation>
+<translation id="5155897006997040331">پڑھنے کی رفتار</translation>
 <translation id="5168181903108465623">کاسٹ آلات دستیاب ہیں</translation>
 <translation id="5170568018924773124">فولڈر میں دکھائیں</translation>
 <translation id="5176318573511391780">جزوی اسکرین کو ریکارڈ کریں</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">اسکرین کا اشتراک روکیں؟</translation>
 <translation id="5790085346892983794">کامیاب</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">منسلک کردہ آلات کی ترتیبات</translation>
 <translation id="5837036133683224804"><ph name="RECEIVER_NAME" /> پر <ph name="ROUTE_TITLE" /> کو روکیں</translation>
 <translation id="5860033963881614850">آف</translation>
 <translation id="5876666360658629066">والد/والدہ کا کوڈ درج کریں</translation>
@@ -712,6 +717,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 اطلاع}other{# اطلاعات}}</translation>
 <translation id="7724603315864178912">کٹ کریں</translation>
+<translation id="7745560842763881396">شیلف میں ایپس دکھائیں</translation>
 <translation id="7749443890790263709">ڈیسکس کی زیادہ سے زیادہ تعداد تک پہنچ گئی۔</translation>
 <translation id="776344839111254542">اپ ڈیٹ کی تفصیلات ملاحظہ کرنے کیلئے کلک کریں</translation>
 <translation id="7780159184141939021">اسکرین کو گھمائیں</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb
index ffb455884..b8ddc9f 100644
--- a/ash/strings/ash_strings_uz.xtb
+++ b/ash/strings/ash_strings_uz.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Ekrandan foydalanish ruxsati to‘xtatilsinmi?</translation>
 <translation id="5790085346892983794">Bajarildi</translation>
 <translation id="5820394555380036790">Chromium OS</translation>
+<translation id="5825969630400862129">Ulangan qurilmalar sozlamalari</translation>
 <translation id="5837036133683224804"><ph name="ROUTE_TITLE" /> <ph name="RECEIVER_NAME" /> qurilmasiga translatsiya qilinishi to‘xtatilsin</translation>
 <translation id="5860033963881614850">O‘chiq</translation>
 <translation id="5876666360658629066">Ota-ona kodini kiriting</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb
index a87b27a..ea12504d 100644
--- a/ash/strings/ash_strings_vi.xtb
+++ b/ash/strings/ash_strings_vi.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">Bạn muốn dừng chia sẻ màn hình?</translation>
 <translation id="5790085346892983794">Thành công</translation>
 <translation id="5820394555380036790">Hệ điều hành Chromium</translation>
+<translation id="5825969630400862129">Cài đặt thiết bị đã kết nối</translation>
 <translation id="5837036133683224804">Dừng <ph name="ROUTE_TITLE" /> trên <ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Tắt</translation>
 <translation id="5876666360658629066">Nhập mã dành cho cha mẹ</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb
index 47473a7..1e76ba51 100644
--- a/ash/strings/ash_strings_zh-CN.xtb
+++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -514,6 +514,7 @@
 <translation id="5777841717266010279">要停止屏幕共享吗?</translation>
 <translation id="5790085346892983794">成功</translation>
 <translation id="5820394555380036790">Chromium 操作系统</translation>
+<translation id="5825969630400862129">设置已连接的设备</translation>
 <translation id="5837036133683224804">停止将“<ph name="ROUTE_TITLE" />”投射至“<ph name="RECEIVER_NAME" />”</translation>
 <translation id="5860033963881614850">关闭</translation>
 <translation id="5876666360658629066">输入家长访问码</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb
index b0a9bb4..451093b7 100644
--- a/ash/strings/ash_strings_zh-HK.xtb
+++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">直向</translation>
 <translation id="2067602449040652523">鍵盤亮度</translation>
 <translation id="2078034614700056995">請用四隻手指向右滑動以切換至下一個桌面</translation>
+<translation id="2079504693865562705">在檔案櫃中隱藏應用程式</translation>
 <translation id="2083190527011054446"><ph name="GIVEN_NAME" />,晚安:</translation>
 <translation id="209965399369889474">未連接網絡</translation>
 <translation id="2126242104232412123">新增虛擬桌面</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">還有 <ph name="COUNT" /> 項</translation>
 <translation id="3236488194889173876">沒有可用的流動網絡</translation>
 <translation id="3249513730522716925">「<ph name="WINDOW_TITLE" />」視窗已從桌面 <ph name="ACTIVE_DESK" /> 移至桌面 <ph name="TARGET_DESK" /></translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />,訊號強度為 <ph name="SIGNAL_STRENGTH" />%。</translation>
 <translation id="3255483164551725916">你可以做咩嘢?</translation>
 <translation id="3269597722229482060">按滑鼠右鍵</translation>
 <translation id="3289674678944039601">正在透過電源適配器充電</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">您已按下固定放大鏡的鍵盤快速鍵。確定要旋轉螢幕嗎?</translation>
 <translation id="4412944820643904175"><ph name="FEATURE_NAME" />功能已關閉。</translation>
 <translation id="4421231901400348175">透過「遠端協助」與 <ph name="HELPER_NAME" /> 共用螢幕控制權。</translation>
+<translation id="4427613789487709312">預設值 (<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">音量</translation>
 <translation id="4450893287417543264">不要再顯示</translation>
 <translation id="445864333228800152">晚安,</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">PIN 不正確</translation>
 <translation id="5083553833479578423">啟用更多「Google 助理」功能。</translation>
 <translation id="5136175204352732067">已連接不同的鍵盤</translation>
+<translation id="5155897006997040331">朗讀速度</translation>
 <translation id="5168181903108465623">有可用投放裝置</translation>
 <translation id="5170568018924773124">在資料夾中顯示</translation>
 <translation id="5176318573511391780">錄影部分螢幕</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">停止共用畫面?</translation>
 <translation id="5790085346892983794">成功</translation>
 <translation id="5820394555380036790">Chromium 作業系統</translation>
+<translation id="5825969630400862129">已連接裝置設定</translation>
 <translation id="5837036133683224804">停止喺<ph name="RECEIVER_NAME" />投放 <ph name="ROUTE_TITLE" /></translation>
 <translation id="5860033963881614850">關閉</translation>
 <translation id="5876666360658629066">輸入家長存取碼</translation>
@@ -712,6 +717,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 則通知}other{# 則通知}}</translation>
 <translation id="7724603315864178912">剪下</translation>
+<translation id="7745560842763881396">在檔案櫃中顯示應用程式</translation>
 <translation id="7749443890790263709">桌面數量已達上限。</translation>
 <translation id="776344839111254542">按一下即可查看更新詳情</translation>
 <translation id="7780159184141939021">旋轉螢幕</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index 502347f0..12a5947e 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -122,6 +122,7 @@
 <translation id="2050339315714019657">直向</translation>
 <translation id="2067602449040652523">鍵盤亮度</translation>
 <translation id="2078034614700056995">以四指向右滑動即可切換至下一個桌面</translation>
+<translation id="2079504693865562705">在檔案櫃中隱藏應用程式</translation>
 <translation id="2083190527011054446">晚安,<ph name="GIVEN_NAME" />:</translation>
 <translation id="209965399369889474">未連上網路</translation>
 <translation id="2126242104232412123">新增虛擬桌面</translation>
@@ -238,6 +239,7 @@
 <translation id="3226991577105957773">還有 <ph name="COUNT" /> 則</translation>
 <translation id="3236488194889173876">沒有可用的行動網路</translation>
 <translation id="3249513730522716925">「<ph name="WINDOW_TITLE" />」視窗已從桌面 <ph name="ACTIVE_DESK" /> 移動到桌面 <ph name="TARGET_DESK" /></translation>
+<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />,訊號強度為 <ph name="SIGNAL_STRENGTH" />%。</translation>
 <translation id="3255483164551725916">你會做些什麼?</translation>
 <translation id="3269597722229482060">按一下滑鼠右鍵</translation>
 <translation id="3289674678944039601">正在透過變壓器充電</translation>
@@ -369,6 +371,7 @@
 <translation id="4389184120735010762">你按下了停駐放大鏡的鍵盤快速鍵。確定要啟用這項功能嗎?</translation>
 <translation id="4412944820643904175"><ph name="FEATURE_NAME" />功能已關閉。</translation>
 <translation id="4421231901400348175">透過遠端協助與<ph name="HELPER_NAME" />分享螢幕控制功能。</translation>
+<translation id="4427613789487709312">預設值 (<ph name="RATE" />x)</translation>
 <translation id="4430019312045809116">音量</translation>
 <translation id="4450893287417543264">不要再顯示</translation>
 <translation id="445864333228800152">晚安,</translation>
@@ -449,6 +452,7 @@
 <translation id="5078796286268621944">PIN 不正確</translation>
 <translation id="5083553833479578423">啟用更多 Google 助理功能。</translation>
 <translation id="5136175204352732067">已連接其他鍵盤</translation>
+<translation id="5155897006997040331">朗讀速度</translation>
 <translation id="5168181903108465623">可用的投放裝置</translation>
 <translation id="5170568018924773124">在資料夾中顯示</translation>
 <translation id="5176318573511391780">錄製部分螢幕畫面</translation>
@@ -514,6 +518,7 @@
 <translation id="5777841717266010279">停止共用螢幕?</translation>
 <translation id="5790085346892983794">成功</translation>
 <translation id="5820394555380036790">Chromium 作業系統</translation>
+<translation id="5825969630400862129">設定已連結的裝置</translation>
 <translation id="5837036133683224804">停止透過<ph name="RECEIVER_NAME" />投放「<ph name="ROUTE_TITLE" />」</translation>
 <translation id="5860033963881614850">關閉</translation>
 <translation id="5876666360658629066">輸入家長存取碼</translation>
@@ -712,6 +717,7 @@
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 則通知}other{# 則通知}}</translation>
 <translation id="7724603315864178912">剪下</translation>
+<translation id="7745560842763881396">顯示檔案櫃中的應用程式</translation>
 <translation id="7749443890790263709">桌面數量已達上限。</translation>
 <translation id="776344839111254542">按一下即可查看更新詳細資料</translation>
 <translation id="7780159184141939021">旋轉螢幕</translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb
index 9e081d5..8e455c7a 100644
--- a/ash/strings/ash_strings_zu.xtb
+++ b/ash/strings/ash_strings_zu.xtb
@@ -518,6 +518,7 @@
 <translation id="5777841717266010279">Misa ukwabelana kwesikrini?</translation>
 <translation id="5790085346892983794">Impumelelo</translation>
 <translation id="5820394555380036790">I-Chromium OS</translation>
+<translation id="5825969630400862129">Izilungiselelo zamadivayisi axhunyiwe</translation>
 <translation id="5837036133683224804">Misa i-<ph name="ROUTE_TITLE" /> ku-<ph name="RECEIVER_NAME" /></translation>
 <translation id="5860033963881614850">Valiwe</translation>
 <translation id="5876666360658629066">Faka ikhodi yomzali</translation>
diff --git a/ash/system/holding_space/holding_space_item_view.cc b/ash/system/holding_space/holding_space_item_view.cc
index 77f0e3d9..2380ca3b 100644
--- a/ash/system/holding_space/holding_space_item_view.cc
+++ b/ash/system/holding_space/holding_space_item_view.cc
@@ -16,6 +16,10 @@
 #include "components/vector_icons/vector_icons.h"
 #include "ui/base/class_property.h"
 #include "ui/base/dragdrop/drag_drop_types.h"
+#include "ui/compositor/layer_animation_element.h"
+#include "ui/compositor/layer_animation_observer.h"
+#include "ui/compositor/layer_animation_sequence.h"
+#include "ui/compositor/layer_animator.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/color_palette.h"
 #include "ui/gfx/paint_vector_icon.h"
@@ -33,11 +37,36 @@
 
 namespace {
 
+// Animation.
+constexpr base::TimeDelta kAnimationDuration =
+    base::TimeDelta::FromMilliseconds(167);
+constexpr SkScalar kAnimationTranslationY = 20;
+
 // A UI class property used to identify if a view is an instance of
 // `HoldingSpaceItemView`. Class name is not an adequate identifier as it may be
 // overridden by subclasses.
 DEFINE_UI_CLASS_PROPERTY_KEY(bool, kIsHoldingSpaceItemViewProperty, false)
 
+// Helpers ---------------------------------------------------------------------
+
+// Creates a `ui::LayerAnimationSequence` for the specified `element` observed
+// by the specified `observer`.
+std::unique_ptr<ui::LayerAnimationSequence> CreateObservedSequence(
+    std::unique_ptr<ui::LayerAnimationElement> element,
+    ui::LayerAnimationObserver* observer) {
+  auto sequence = std::make_unique<ui::LayerAnimationSequence>();
+  sequence->AddElement(std::move(element));
+  sequence->AddObserver(observer);
+  return sequence;
+}
+
+// Creates a `gfx:Transform` for the specified `x` and `y` offsets.
+gfx::Transform CreateTransformFromOffset(SkScalar x, SkScalar y) {
+  gfx::Transform transform;
+  transform.Translate(x, y);
+  return transform;
+}
+
 // CallbackPainter -------------------------------------------------------------
 
 // A painter which delegates painting to a callback.
@@ -98,6 +127,15 @@
   SetPaintToLayer();
   layer()->SetFillsBoundsOpaquely(false);
 
+  // This view will be animated in. Set initial opacity and transform so that
+  // the next call to `AnimateIn()` will fade in and translate the view into
+  // place. Note that preemption strategy is also set to cause any calls to
+  // `AnimateIn()`/`AnimateOut()` to preempt any in-progress animation.
+  layer()->SetOpacity(0.f);
+  layer()->SetTransform(CreateTransformFromOffset(0, kAnimationTranslationY));
+  layer()->GetAnimator()->set_preemption_strategy(
+      ui::LayerAnimator::PreemptionStrategy::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
+
   // Focus.
   SetFocusBehavior(FocusBehavior::ALWAYS);
   focused_layer_owner_ =
@@ -200,6 +238,16 @@
   delegate_->OnHoldingSpaceItemViewMouseReleased(this, event);
 }
 
+void HoldingSpaceItemView::AnimateIn(ui::LayerAnimationObserver* observer) {
+  AnimateImmediatelyTo(/*opacity=*/1.f, gfx::Transform(), observer);
+}
+
+void HoldingSpaceItemView::AnimateOut(ui::LayerAnimationObserver* observer) {
+  AnimateImmediatelyTo(/*opacity=*/0.f,
+                       CreateTransformFromOffset(0, -kAnimationTranslationY),
+                       observer);
+}
+
 void HoldingSpaceItemView::StartDrag(const ui::LocatedEvent& event,
                                      ui::mojom::DragEventSource source) {
   int drag_operations = GetDragOperations(event.location());
@@ -350,6 +398,28 @@
   OnPinVisiblityChanged(true);
 }
 
+void HoldingSpaceItemView::AnimateImmediatelyTo(
+    float opacity,
+    const gfx::Transform& transform,
+    ui::LayerAnimationObserver* observer) {
+  // Opacity animation.
+  auto opacity_element = ui::LayerAnimationElement::CreateOpacityElement(
+      opacity, kAnimationDuration);
+  opacity_element->set_tween_type(gfx::Tween::Type::LINEAR);
+
+  // Transform animation.
+  auto transform_element = ui::LayerAnimationElement::CreateTransformElement(
+      transform, kAnimationDuration);
+  transform_element->set_tween_type(gfx::Tween::Type::EASE_OUT_3);
+
+  // Note that the `ui::LayerAnimator` takes ownership of any animation
+  // sequences so they need to be released.
+  layer()->GetAnimator()->StartTogether(
+      {CreateObservedSequence(std::move(opacity_element), observer).release(),
+       CreateObservedSequence(std::move(transform_element), observer)
+           .release()});
+}
+
 BEGIN_METADATA(HoldingSpaceItemView, views::InkDropHostView)
 END_METADATA
 
diff --git a/ash/system/holding_space/holding_space_item_view.h b/ash/system/holding_space/holding_space_item_view.h
index 7af7ffd..055e9435 100644
--- a/ash/system/holding_space/holding_space_item_view.h
+++ b/ash/system/holding_space/holding_space_item_view.h
@@ -12,6 +12,10 @@
 #include "ui/views/controls/image_view.h"
 #include "ui/views/metadata/metadata_header_macros.h"
 
+namespace ui {
+class LayerAnimationObserver;
+}  // namespace ui
+
 namespace views {
 class ToggleImageButton;
 }  // namespace views
@@ -53,6 +57,11 @@
   bool OnMousePressed(const ui::MouseEvent& event) override;
   void OnMouseReleased(const ui::MouseEvent& event) override;
 
+  // Invoked to initiate animate in/out of this view. Any animations created
+  // will be associated with the specified `observer`.
+  void AnimateIn(ui::LayerAnimationObserver* observer);
+  void AnimateOut(ui::LayerAnimationObserver* observer);
+
   // Starts a drag from this view at the location specified by the given `event`
   // and with the specified `source`. Note that this method copies the logic of
   // `views::View::DoDrag()` as a workaround to that API being private.
@@ -80,6 +89,13 @@
   void OnPinPressed();
   void UpdatePin();
 
+  // Animates this view to the specified `opacity` and `transform`, preempting
+  // any in-progress animations. Any animations created will be associated with
+  // the specified `observer`.
+  void AnimateImmediatelyTo(float opacity,
+                            const gfx::Transform& transform,
+                            ui::LayerAnimationObserver* observer);
+
   HoldingSpaceItemViewDelegate* const delegate_;
   const HoldingSpaceItem* const item_;
 
diff --git a/ash/system/holding_space/holding_space_item_views_container.cc b/ash/system/holding_space/holding_space_item_views_container.cc
index 351b0d67..3e8a05e 100644
--- a/ash/system/holding_space/holding_space_item_views_container.cc
+++ b/ash/system/holding_space/holding_space_item_views_container.cc
@@ -5,49 +5,16 @@
 #include "ash/system/holding_space/holding_space_item_views_container.h"
 
 #include "ash/public/cpp/holding_space/holding_space_item.h"
-#include "ash/system/holding_space/holding_space_item_view.h"
 #include "ash/system/holding_space/holding_space_item_view_delegate.h"
-#include "ui/compositor/layer_animation_observer.h"
-#include "ui/compositor/scoped_layer_animation_settings.h"
+#include "ui/compositor/callback_layer_animation_observer.h"
 
 namespace ash {
 
 namespace {
 
-using AnimatableProperty = ui::LayerAnimationElement::AnimatableProperty;
-
-// CallbackAnimationObserver ---------------------------------------------------
-
-// An implicit animation observer which invokes a `callback` on animation
-// completion. The `callback` will be notified whether the animation completed
-// due to abort or if the animation completed normally.
-class CallbackAnimationObserver : public ui::ImplicitAnimationObserver {
- public:
-  using Callback = base::RepeatingCallback<void(bool aborted)>;
-
-  explicit CallbackAnimationObserver(Callback callback) : callback_(callback) {}
-  CallbackAnimationObserver(const CallbackAnimationObserver&) = delete;
-  CallbackAnimationObserver& operator=(const CallbackAnimationObserver&) =
-      delete;
-  ~CallbackAnimationObserver() override = default;
-
- private:
-  // ui::ImplicitAnimationObserver:
-  void OnImplicitAnimationsCompleted() override {
-    bool aborted = false;
-    for (int i = AnimatableProperty::FIRST_PROPERTY;
-         i < AnimatableProperty::SENTINEL; ++i) {
-      const AnimatableProperty property = static_cast<AnimatableProperty>(i);
-      if (WasAnimationAbortedForProperty(property)) {
-        aborted = true;
-        break;
-      }
-    }
-    callback_.Run(aborted);
-  }
-
-  Callback callback_;
-};
+// Value returned during notification of animation completion events in order to
+// delete the observer which provided notification.
+constexpr bool kDeleteObserver = true;
 
 }  // namespace
 
@@ -55,23 +22,8 @@
 
 HoldingSpaceItemViewsContainer::HoldingSpaceItemViewsContainer(
     HoldingSpaceItemViewDelegate* delegate)
-    : delegate_(delegate),
-      animate_in_observer_(
-          std::make_unique<CallbackAnimationObserver>(base::BindRepeating(
-              &HoldingSpaceItemViewsContainer::OnAnimateInCompleted,
-              base::Unretained(this)))),
-      animate_out_observer_(
-          std::make_unique<CallbackAnimationObserver>(base::BindRepeating(
-              &HoldingSpaceItemViewsContainer::OnAnimateOutCompleted,
-              base::Unretained(this)))) {
+    : delegate_(delegate) {
   controller_observer_.Add(HoldingSpaceController::Get());
-
-  // The holding space views container will attach `animate_in_observer_` and
-  // `animate_out_observer_` to a `ui::ScopedLayerAnimationSettings` associated
-  // with itself in order to determine when animations are completed. To do so,
-  // the holding space item views container must have a layer.
-  SetPaintToLayer();
-  layer()->SetFillsBoundsOpaquely(false);
 }
 
 HoldingSpaceItemViewsContainer::~HoldingSpaceItemViewsContainer() = default;
@@ -131,13 +83,14 @@
 
   animation_state_ |= AnimationState::kAnimatingIn;
 
-  // In the event that the call to `AnimateIn()` did not result in an animation
-  // being scheduled, `OnAnimateInCompleted()` should still be called. To ensure
-  // this occurs, add the animation observer to a scoped settings doing nothing.
-  ui::ScopedLayerAnimationSettings animation_settings(layer()->GetAnimator());
-  animation_settings.AddObserver(animate_in_observer_.get());
+  // NOTE: `animate_in_observer` is deleted after `OnAnimateInCompleted()`.
+  ui::CallbackLayerAnimationObserver* animate_in_observer =
+      new ui::CallbackLayerAnimationObserver(base::BindRepeating(
+          &HoldingSpaceItemViewsContainer::OnAnimateInCompleted,
+          base::Unretained(this)));
 
-  AnimateIn(animate_in_observer_.get());
+  AnimateIn(animate_in_observer);
+  animate_in_observer->SetActive();
 }
 
 void HoldingSpaceItemViewsContainer::MaybeAnimateOut() {
@@ -151,22 +104,23 @@
   // so should not be acted upon by the user during this time.
   SetCanProcessEventsWithinSubtree(false);
 
-  // In the event that the call to `AnimateOut()` did not result in an animation
-  // being scheduled, `OnAnimateOutCompleted()` should still be called. To
-  // ensure this occurs, add the animation observer to a scoped settings doing
-  // nothing.
-  ui::ScopedLayerAnimationSettings animation_settings(layer()->GetAnimator());
-  animation_settings.AddObserver(animate_out_observer_.get());
+  // NOTE: `animate_out_observer` is deleted after `OnAnimateOutCompleted()`.
+  ui::CallbackLayerAnimationObserver* animate_out_observer =
+      new ui::CallbackLayerAnimationObserver(base::BindRepeating(
+          &HoldingSpaceItemViewsContainer::OnAnimateOutCompleted,
+          base::Unretained(this)));
 
-  AnimateOut(animate_out_observer_.get());
+  AnimateOut(animate_out_observer);
+  animate_out_observer->SetActive();
 }
 
-void HoldingSpaceItemViewsContainer::OnAnimateInCompleted(bool aborted) {
+bool HoldingSpaceItemViewsContainer::OnAnimateInCompleted(
+    const ui::CallbackLayerAnimationObserver& observer) {
   DCHECK(animation_state_ & AnimationState::kAnimatingIn);
   animation_state_ &= ~AnimationState::kAnimatingIn;
 
-  if (aborted)
-    return;
+  if (observer.aborted_count())
+    return kDeleteObserver;
 
   DCHECK_EQ(animation_state_, AnimationState::kNotAnimating);
 
@@ -174,14 +128,17 @@
   // that have been animated in should all be associated with holding space
   // items that exist in the model.
   SetCanProcessEventsWithinSubtree(true);
+
+  return kDeleteObserver;
 }
 
-void HoldingSpaceItemViewsContainer::OnAnimateOutCompleted(bool aborted) {
+bool HoldingSpaceItemViewsContainer::OnAnimateOutCompleted(
+    const ui::CallbackLayerAnimationObserver& observer) {
   DCHECK(animation_state_ & AnimationState::kAnimatingOut);
   animation_state_ &= ~AnimationState::kAnimatingOut;
 
-  if (aborted)
-    return;
+  if (observer.aborted_count())
+    return kDeleteObserver;
 
   DCHECK_EQ(animation_state_, AnimationState::kNotAnimating);
 
@@ -196,7 +153,7 @@
 
   HoldingSpaceModel* model = HoldingSpaceController::Get()->model();
   if (!model)
-    return;
+    return kDeleteObserver;
 
   bool is_empty = true;
 
@@ -209,6 +166,8 @@
 
   if (!is_empty)
     MaybeAnimateIn();
+
+  return kDeleteObserver;
 }
 
 }  // namespace ash
diff --git a/ash/system/holding_space/holding_space_item_views_container.h b/ash/system/holding_space/holding_space_item_views_container.h
index a32b0962..de0fe17 100644
--- a/ash/system/holding_space/holding_space_item_views_container.h
+++ b/ash/system/holding_space/holding_space_item_views_container.h
@@ -14,7 +14,8 @@
 #include "ui/views/view.h"
 
 namespace ui {
-class ImplicitAnimationObserver;
+class CallbackLayerAnimationObserver;
+class LayerAnimationObserver;
 }  // namespace ui
 
 namespace ash {
@@ -79,11 +80,11 @@
 
   // Invoked to initiate animate in of the contents of this holding space item
   // views container. Any animations created must be associated with `observer`.
-  virtual void AnimateIn(ui::ImplicitAnimationObserver* observer) = 0;
+  virtual void AnimateIn(ui::LayerAnimationObserver* observer) = 0;
 
   // Invoked to initiate animate out of the contents of this holding space item
   // views container. Any animations created must be associated with `observer`.
-  virtual void AnimateOut(ui::ImplicitAnimationObserver* observer) = 0;
+  virtual void AnimateOut(ui::LayerAnimationObserver* observer) = 0;
 
   HoldingSpaceItemViewDelegate* delegate() { return delegate_; }
 
@@ -103,16 +104,13 @@
   void MaybeAnimateOut();
 
   // Invoked when an animate in/out of the contents of this holding space item
-  // views container has been completed. If `aborted` is true, the animation
-  // completed due to abort, otherwise the animation completed normally.
-  void OnAnimateInCompleted(bool aborted);
-  void OnAnimateOutCompleted(bool aborted);
+  // views container has been completed. These methods always return true to
+  // delete the observer which notified the event.
+  bool OnAnimateInCompleted(const ui::CallbackLayerAnimationObserver&);
+  bool OnAnimateOutCompleted(const ui::CallbackLayerAnimationObserver&);
 
   HoldingSpaceItemViewDelegate* const delegate_;
 
-  std::unique_ptr<ui::ImplicitAnimationObserver> animate_in_observer_;
-  std::unique_ptr<ui::ImplicitAnimationObserver> animate_out_observer_;
-
   // Bit flag representation of current `AnimationState`. Note that it is
   // briefly possible to be both `kAnimatingIn` and `kAnimatingOut` when one
   // animation is preempting another.
diff --git a/ash/system/holding_space/pinned_files_container.cc b/ash/system/holding_space/pinned_files_container.cc
index 9887ce2a..32c4702 100644
--- a/ash/system/holding_space/pinned_files_container.cc
+++ b/ash/system/holding_space/pinned_files_container.cc
@@ -180,14 +180,16 @@
   item_chips_container_->RemoveAllChildViews(true);
 }
 
-// TODO(dmblack): Implement.
-void PinnedFilesContainer::AnimateIn(ui::ImplicitAnimationObserver* observer) {
-  NOTIMPLEMENTED();
+// TODO(dmblack): Handle grow/shrink of container.
+void PinnedFilesContainer::AnimateIn(ui::LayerAnimationObserver* observer) {
+  for (auto& view_by_item_id : views_by_item_id_)
+    view_by_item_id.second->AnimateIn(observer);
 }
 
-// TODO(dmblack): Implement.
-void PinnedFilesContainer::AnimateOut(ui::ImplicitAnimationObserver* observer) {
-  NOTIMPLEMENTED();
+// TODO(dmblack): Handle animate out of `empty_prompt_label_`.
+void PinnedFilesContainer::AnimateOut(ui::LayerAnimationObserver* observer) {
+  for (auto& view_by_item_id : views_by_item_id_)
+    view_by_item_id.second->AnimateOut(observer);
 }
 
 }  // namespace ash
diff --git a/ash/system/holding_space/pinned_files_container.h b/ash/system/holding_space/pinned_files_container.h
index 828a489..f92255c 100644
--- a/ash/system/holding_space/pinned_files_container.h
+++ b/ash/system/holding_space/pinned_files_container.h
@@ -16,6 +16,7 @@
 namespace ash {
 
 class HoldingSpaceItemChipsContainer;
+class HoldingSpaceItemView;
 
 // Container for pinned files that the user adds to the holding space bubble.
 class PinnedFilesContainer : public HoldingSpaceItemViewsContainer {
@@ -32,15 +33,15 @@
   bool WillAddHoldingSpaceItemView(const HoldingSpaceItem* item) override;
   void AddHoldingSpaceItemView(const HoldingSpaceItem* item) override;
   void RemoveAllHoldingSpaceItemViews() override;
-  void AnimateIn(ui::ImplicitAnimationObserver* observer) override;
-  void AnimateOut(ui::ImplicitAnimationObserver* observer) override;
+  void AnimateIn(ui::LayerAnimationObserver* observer) override;
+  void AnimateOut(ui::LayerAnimationObserver* observer) override;
 
  private:
   // Owned by view hierarchy.
   views::Label* empty_prompt_label_ = nullptr;
   HoldingSpaceItemChipsContainer* item_chips_container_ = nullptr;
 
-  std::map<std::string, views::View*> views_by_item_id_;
+  std::map<std::string, HoldingSpaceItemView*> views_by_item_id_;
 };
 
 }  // namespace ash
diff --git a/ash/system/holding_space/recent_files_container.cc b/ash/system/holding_space/recent_files_container.cc
index fe0540d..85eb6472 100644
--- a/ash/system/holding_space/recent_files_container.cc
+++ b/ash/system/holding_space/recent_files_container.cc
@@ -194,14 +194,23 @@
   downloads_container_->RemoveAllChildViews(true);
 }
 
-// TODO(dmblack): Implement.
-void RecentFilesContainer::AnimateIn(ui::ImplicitAnimationObserver* observer) {
-  NOTIMPLEMENTED();
+// TODO(dmblack): Handle grow/shrink of container.
+// TODO(dmblack): Animate the screen captures section separately from the
+// downloads section so that adding/removing an item from one section does not
+// impact the other.
+void RecentFilesContainer::AnimateIn(ui::LayerAnimationObserver* observer) {
+  for (auto& view_by_item_id : views_by_item_id_)
+    view_by_item_id.second->AnimateIn(observer);
 }
 
-// TODO(dmblack): Implement.
-void RecentFilesContainer::AnimateOut(ui::ImplicitAnimationObserver* observer) {
-  NOTIMPLEMENTED();
+// TODO(dmblack): Handle animate out of screen captures and downloads labels if
+// those sections are going away permanently.
+// TODO(dmblack): Animate the screen captures section separately from the
+// downloads section so that adding/removing an item from one section does not
+// impact the other.
+void RecentFilesContainer::AnimateOut(ui::LayerAnimationObserver* observer) {
+  for (auto& view_by_item_id : views_by_item_id_)
+    view_by_item_id.second->AnimateOut(observer);
 }
 
 void RecentFilesContainer::AddHoldingSpaceScreenCaptureView(
diff --git a/ash/system/holding_space/recent_files_container.h b/ash/system/holding_space/recent_files_container.h
index dde4c0af..473575d59 100644
--- a/ash/system/holding_space/recent_files_container.h
+++ b/ash/system/holding_space/recent_files_container.h
@@ -16,6 +16,7 @@
 namespace ash {
 
 class HoldingSpaceItemChipsContainer;
+class HoldingSpaceItemView;
 
 // Container for the recent files (e.g. screen captures, downloads, etc).
 class RecentFilesContainer : public HoldingSpaceItemViewsContainer {
@@ -33,8 +34,8 @@
   bool WillAddHoldingSpaceItemView(const HoldingSpaceItem* item) override;
   void AddHoldingSpaceItemView(const HoldingSpaceItem* item) override;
   void RemoveAllHoldingSpaceItemViews() override;
-  void AnimateIn(ui::ImplicitAnimationObserver* observer) override;
-  void AnimateOut(ui::ImplicitAnimationObserver* observer) override;
+  void AnimateIn(ui::LayerAnimationObserver* observer) override;
+  void AnimateOut(ui::LayerAnimationObserver* observer) override;
 
  private:
   void AddHoldingSpaceScreenCaptureView(const HoldingSpaceItem* item);
@@ -50,7 +51,7 @@
   HoldingSpaceItemChipsContainer* downloads_container_ = nullptr;
   views::View* downloads_header_ = nullptr;
 
-  std::map<std::string, views::View*> views_by_item_id_;
+  std::map<std::string, HoldingSpaceItemView*> views_by_item_id_;
 };
 
 }  // namespace ash
diff --git a/base/android/java/src/org/chromium/base/BuildInfo.java b/base/android/java/src/org/chromium/base/BuildInfo.java
index d2b397c..a52e1af2 100644
--- a/base/android/java/src/org/chromium/base/BuildInfo.java
+++ b/base/android/java/src/org/chromium/base/BuildInfo.java
@@ -12,6 +12,8 @@
 import android.os.Build.VERSION;
 import android.text.TextUtils;
 
+import androidx.annotation.ChecksSdkIntAtLeast;
+
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.compat.ApiHelperForP;
 
@@ -201,34 +203,52 @@
 
     // The markers Begin:BuildCompat and End:BuildCompat delimit code
     // that is autogenerated from Android sources.
-    // Begin:BuildCompat Q,R
+    // Begin:BuildCompat Q,R,S
 
     /**
-     * Checks if the device is running on a pre-release version of Android Q or newer.
+     * Checks if the device is running on release version of Android Q or newer.
      * <p>
      * @return {@code true} if Q APIs are available for use, {@code false} otherwise
      * @deprecated Android Q is a finalized release and this method is no longer necessary. It
      *             will be removed in a future release of the Support Library. Instead, use
      *             {@code Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q}.
      */
+    @ChecksSdkIntAtLeast(api = Build.VERSION_CODES.Q)
     @Deprecated
     public static boolean isAtLeastQ() {
         return VERSION.SDK_INT >= 29;
     }
 
     /**
-     * Checks if the device is running on a pre-release version of Android R or newer.
+     * Checks if the device is running on release version of Android R or newer.
      * <p>
      * @return {@code true} if R APIs are available for use, {@code false} otherwise
      * @deprecated Android R is a finalized release and this method is no longer necessary. It
      *             will be removed in a future release of the Support Library. Instead, use
      *             {@code Build.VERSION.SDK_INT >= Build.VERSION_CODES.R}.
      */
+    @ChecksSdkIntAtLeast(api = Build.VERSION_CODES.R)
+    @Deprecated
     public static boolean isAtLeastR() {
         return VERSION.SDK_INT >= 30;
     }
 
     /**
+     * Checks if the device is running on a pre-release version of Android S or a release version of
+     * Android S or newer.
+     * <p>
+     * <strong>Note:</strong> When Android S is finalized for release, this method will be
+     * deprecated and all calls should be replaced with {@code Build.VERSION.SDK_INT >=
+     * Build.VERSION_CODES.S}.
+     *
+     * @return {@code true} if S APIs are available for use, {@code false} otherwise
+     */
+    @ChecksSdkIntAtLeast(codename = "S")
+    public static boolean isAtLeastS() {
+        return VERSION.CODENAME.equals("S");
+    }
+
+    /**
      * Checks if the application targets at least released SDK Q
      */
     @Deprecated
@@ -237,12 +257,22 @@
     }
 
     /**
-     * Checks if the application targets pre-release SDK R
+     * Checks if the application targets at least released SDK R
      */
+    @Deprecated
     public static boolean targetsAtLeastR() {
         return ContextUtils.getApplicationContext().getApplicationInfo().targetSdkVersion >= 30;
     }
 
+    /**
+     * Checks if the application targets pre-release SDK S
+     */
+    public static boolean targetsAtLeastS() {
+        return isAtLeastS()
+                && ContextUtils.getApplicationContext().getApplicationInfo().targetSdkVersion
+                == Build.VERSION_CODES.CUR_DEVELOPMENT;
+    }
+
     // End:BuildCompat
 
     public static void setFirebaseAppId(String id) {
diff --git a/base/android/java/src/org/chromium/base/PathUtils.java b/base/android/java/src/org/chromium/base/PathUtils.java
index 0e2ca9a..556a6ce 100644
--- a/base/android/java/src/org/chromium/base/PathUtils.java
+++ b/base/android/java/src/org/chromium/base/PathUtils.java
@@ -206,7 +206,7 @@
     public static @NonNull String getDownloadsDirectory() {
         // TODO(crbug.com/508615): Move calls to getDownloadsDirectory() to background thread.
         try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) {
-            if (BuildInfo.isAtLeastQ()) {
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
                 // https://developer.android.com/preview/privacy/scoped-storage
                 // In Q+, Android has begun sandboxing external storage. Chrome may not have
                 // permission to write to Environment.getExternalStoragePublicDirectory(). Instead
diff --git a/base/task/thread_pool/thread_group_impl.cc b/base/task/thread_pool/thread_group_impl.cc
index 3fa7ba0..13d74f7 100644
--- a/base/task/thread_pool/thread_group_impl.cc
+++ b/base/task/thread_pool/thread_group_impl.cc
@@ -585,6 +585,9 @@
 
   DCHECK(ContainsWorker(outer_->workers_, worker));
 
+  if (!CanGetWorkLockRequired(&executor, worker))
+    return nullptr;
+
   // Use this opportunity, before assigning work to this worker, to create/wake
   // additional workers if needed (doing this here allows us to reduce
   // potentially expensive create/wake directly on PostTask()).
@@ -595,9 +598,6 @@
     executor.FlushWorkerCreation(&outer_->lock_);
   }
 
-  if (!CanGetWorkLockRequired(&executor, worker))
-    return nullptr;
-
   RegisteredTaskSource task_source;
   TaskPriority priority;
   while (!task_source && !outer_->priority_queue_.IsEmpty()) {
@@ -893,8 +893,7 @@
   // max tasks increases). This ensures that if we have excess workers in the
   // thread group, they get a chance to no longer be excess before being cleaned
   // up.
-  if (outer_->GetNumAwakeWorkersLockRequired() >
-      outer_->GetDesiredNumAwakeWorkersLockRequired()) {
+  if (outer_->GetNumAwakeWorkersLockRequired() > outer_->max_tasks_) {
     OnWorkerBecomesIdleLockRequired(worker);
     return false;
   }
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index 7604a4c..5440699 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-0.20201206.3.1
+0.20201207.1.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index 7604a4c..5440699 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-0.20201206.3.1
+0.20201207.1.1
diff --git a/build/linux/unbundle/icu.gn b/build/linux/unbundle/icu.gn
index e77bc43..0f52fc1 100644
--- a/build/linux/unbundle/icu.gn
+++ b/build/linux/unbundle/icu.gn
@@ -175,6 +175,7 @@
     "unicode/icudataver.h",
     "unicode/icuplug.h",
     "unicode/idna.h",
+    "unicode/localematcher.h",
     "unicode/localpointer.h",
     "unicode/locdspnm.h",
     "unicode/locid.h",
diff --git a/cc/input/input_handler.h b/cc/input/input_handler.h
index aeec0fbc..7cbb56a 100644
--- a/cc/input/input_handler.h
+++ b/cc/input/input_handler.h
@@ -176,6 +176,8 @@
     SCROLL_ON_MAIN_THREAD = 0,
     SCROLL_ON_IMPL_THREAD,
     SCROLL_IGNORED,
+    // SCROLL_UNKOWN is not used anymore. However we'll keep this entry as per
+    // the comment above.
     SCROLL_UNKNOWN,
     LAST_SCROLL_STATUS = SCROLL_UNKNOWN
   };
@@ -195,9 +197,17 @@
           main_thread_scrolling_reasons(main_thread_scrolling_reasons),
           needs_main_thread_hit_test(needs_main_thread_hit_test) {}
     ScrollThread thread = ScrollThread::SCROLL_ON_IMPL_THREAD;
+    // TODO(crbug.com/1155663): Make sure to set main_thread_scrolling_reasons
+    // only when ScrollStatus.thread is set to
+    // InputHander::ScrollThread::SCROLL_ON_MAIN_THREAD
     uint32_t main_thread_scrolling_reasons =
         MainThreadScrollingReason::kNotScrollingOnMain;
-    bool bubble = false;
+    // TODO(crbug.com/1155758): This is a temporary workaround for GuestViews
+    // as they create viewport nodes and want to bubble scroll if the
+    // viewport cannot scroll in the given delta directions. There should be
+    // a parameter to ThreadInputHandler to specify whether unused delta is
+    // consumed by the viewport or bubbles to the parent.
+    bool viewport_cannot_scroll = false;
 
     // Used only in scroll unification. Tells the caller that the input handler
     // detected a case where it cannot reliably target a scroll node and needs
diff --git a/cc/input/threaded_input_handler.cc b/cc/input/threaded_input_handler.cc
index 1aeb84a..817ec831 100644
--- a/cc/input/threaded_input_handler.cc
+++ b/cc/input/threaded_input_handler.cc
@@ -249,7 +249,8 @@
                          layer_impl, first_scrolling_layer_or_scrollbar)) {
             TRACE_EVENT_INSTANT0("cc", "Failed Hit Test",
                                  TRACE_EVENT_SCOPE_THREAD);
-            scroll_status.thread = InputHandler::ScrollThread::SCROLL_UNKNOWN;
+            scroll_status.thread =
+                InputHandler::ScrollThread::SCROLL_ON_MAIN_THREAD;
             scroll_status.main_thread_scrolling_reasons =
                 MainThreadScrollingReason::kFailedHitTest;
             return scroll_status;
@@ -277,15 +278,17 @@
     scroll_status.thread = InputHandler::ScrollThread::SCROLL_ON_MAIN_THREAD;
     return scroll_status;
   } else if (!scrolling_node) {
+    // TODO(crbug.com/1155663): Make sure to set main_thread_scrolling_reasons
+    // only when ScrollStatus.thread is set to
+    // InputHander::ScrollThread::SCROLL_ON_MAIN_THREAD
     scroll_status.main_thread_scrolling_reasons =
         MainThreadScrollingReason::kNoScrollingLayer;
     if (compositor_delegate_.GetSettings().is_layer_tree_for_subframe) {
       // OOPIFs never have a viewport scroll node so if we can't scroll
       // we need to be bubble up to the parent frame. This happens by
-      // returning SCROLL_UNKNOWN.
+      // returning SCROLL_IGNORED.
       TRACE_EVENT_INSTANT0("cc", "Ignored - No ScrollNode (OOPIF)",
                            TRACE_EVENT_SCOPE_THREAD);
-      scroll_status.thread = InputHandler::ScrollThread::SCROLL_UNKNOWN;
     } else {
       // If we didn't hit a layer above we'd usually fallback to the
       // viewport scroll node. However, there may not be one if a scroll
@@ -295,8 +298,8 @@
       // configurations where input is allowed prior to a commit.
       TRACE_EVENT_INSTANT0("cc", "Ignored - No ScrollNode",
                            TRACE_EVENT_SCOPE_THREAD);
-      scroll_status.thread = InputHandler::ScrollThread::SCROLL_IGNORED;
     }
+    scroll_status.thread = InputHandler::ScrollThread::SCROLL_IGNORED;
     return scroll_status;
   }
 
@@ -314,7 +317,12 @@
   // oopif.
   if (GetViewport().ShouldScroll(*CurrentlyScrollingNode()) &&
       !GetViewport().CanScroll(*CurrentlyScrollingNode(), *scroll_state)) {
-    scroll_status.bubble = true;
+    // TODO(crbug.com/1155758): This is a temporary workaround for GuestViews
+    // as they create viewport nodes and want to bubble scroll if the
+    // viewport cannot scroll in the given delta directions. There should be
+    // a parameter to ThreadInputHandler to specify whether unused delta is
+    // consumed by the viewport or bubbles to the parent.
+    scroll_status.viewport_cannot_scroll = true;
   }
 
   return scroll_status;
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index 563a07f..7518813 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -1491,13 +1491,16 @@
   if (maximum_scale == kNotScaled && starting_scale == kNotScaled)
     return;
 
+  gfx::Size viewport = layer_tree_impl()->GetDeviceViewport().size();
+  if (viewport.IsEmpty())
+    return;
+
   // We rasterize at the maximum scale that will occur during the animation.
   raster_contents_scale_ = std::max(maximum_scale, starting_scale);
   DCHECK_NE(raster_contents_scale_, kNotScaled);
 
   // However we want to avoid excessive memory use. Choose a scale at which this
   // layer's rastered content is not larger than the viewport.
-  gfx::Size viewport = layer_tree_impl()->GetDeviceViewport().size();
   float max_viewport_dimension = std::max(viewport.width(), viewport.height());
   DCHECK(max_viewport_dimension);
   // Use square to compensate for viewports with different aspect ratios.
diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc
index ab6116e4..f9b3a198 100644
--- a/cc/test/layer_tree_test.cc
+++ b/cc/test/layer_tree_test.cc
@@ -53,6 +53,7 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "ui/base/ui_base_features.h"
 #include "ui/gfx/geometry/size_conversions.h"
+#include "ui/gl/gl_implementation.h"
 #include "ui/gl/gl_switches.h"
 
 namespace cc {
@@ -970,6 +971,13 @@
   base::RunLoop::QuitCurrentWhenIdleDeprecated();
 }
 
+bool LayerTreeTest::use_swangle() const {
+  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+  return (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE) &&
+         (command_line->GetSwitchValueASCII(::switches::kUseANGLE) ==
+          gl::kANGLEImplementationSwiftShaderName);
+}
+
 void LayerTreeTest::DispatchAddNoDamageAnimation(
     Animation* animation_to_receive_animation,
     double animation_duration) {
diff --git a/cc/test/layer_tree_test.h b/cc/test/layer_tree_test.h
index 7f8345d..0662dc9 100644
--- a/cc/test/layer_tree_test.h
+++ b/cc/test/layer_tree_test.h
@@ -229,6 +229,7 @@
     return false;
 #endif
   }
+  bool use_swangle() const;
 
   const viz::RendererType renderer_type_;
 
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
index 55db9d4..a3f779a 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -519,7 +519,7 @@
       ASSERT_EQ(ScrollThread::SCROLL_ON_IMPL_THREAD, status.thread);
       ASSERT_TRUE(status.needs_main_thread_hit_test);
     } else {
-      ASSERT_EQ(ScrollThread::SCROLL_UNKNOWN, status.thread);
+      ASSERT_EQ(ScrollThread::SCROLL_ON_MAIN_THREAD, status.thread);
       ASSERT_EQ(MainThreadScrollingReason::kFailedHitTest,
                 status.main_thread_scrolling_reasons);
     }
@@ -534,7 +534,7 @@
       ASSERT_EQ(ScrollThread::SCROLL_ON_IMPL_THREAD, status.thread);
       ASSERT_TRUE(status.needs_main_thread_hit_test);
     } else {
-      ASSERT_EQ(ScrollThread::SCROLL_UNKNOWN, status.thread);
+      ASSERT_EQ(ScrollThread::SCROLL_ON_MAIN_THREAD, status.thread);
       ASSERT_EQ(MainThreadScrollingReason::kFailedHitTest,
                 status.main_thread_scrolling_reasons);
     }
@@ -1636,7 +1636,7 @@
               status.main_thread_scrolling_reasons);
     EXPECT_TRUE(status.needs_main_thread_hit_test);
   } else {
-    EXPECT_EQ(ScrollThread::SCROLL_UNKNOWN, status.thread);
+    EXPECT_EQ(ScrollThread::SCROLL_ON_MAIN_THREAD, status.thread);
     EXPECT_EQ(MainThreadScrollingReason::kFailedHitTest,
               status.main_thread_scrolling_reasons);
   }
@@ -2026,7 +2026,7 @@
                 status.main_thread_scrolling_reasons);
       ASSERT_TRUE(status.needs_main_thread_hit_test);
     } else {
-      ASSERT_EQ(ScrollThread::SCROLL_UNKNOWN, status.thread);
+      ASSERT_EQ(ScrollThread::SCROLL_ON_MAIN_THREAD, status.thread);
       ASSERT_EQ(MainThreadScrollingReason::kFailedHitTest,
                 status.main_thread_scrolling_reasons);
     }
@@ -2082,7 +2082,7 @@
                 status.main_thread_scrolling_reasons);
       EXPECT_TRUE(status.needs_main_thread_hit_test);
     } else {
-      EXPECT_EQ(ScrollThread::SCROLL_UNKNOWN, status.thread);
+      EXPECT_EQ(ScrollThread::SCROLL_ON_MAIN_THREAD, status.thread);
       EXPECT_EQ(MainThreadScrollingReason::kFailedHitTest,
                 status.main_thread_scrolling_reasons);
     }
@@ -2291,7 +2291,7 @@
                 status.main_thread_scrolling_reasons);
       EXPECT_TRUE(status.needs_main_thread_hit_test);
     } else {
-      EXPECT_EQ(ScrollThread::SCROLL_UNKNOWN, status.thread);
+      EXPECT_EQ(ScrollThread::SCROLL_ON_MAIN_THREAD, status.thread);
       EXPECT_EQ(MainThreadScrollingReason::kFailedHitTest,
                 status.main_thread_scrolling_reasons);
     }
@@ -11652,7 +11652,7 @@
 // LayerTreeHostImpl::IsInitialScrollHitTestReliable for details.
 TEST_P(ScrollUnifiedLayerTreeHostImplTest, ScrollHitTestIsNotReliable) {
   // If we ray cast a scroller that is not on the first layer's ancestor chain,
-  // we should return ScrollThread::SCROLL_UNKNOWN.
+  // we should return ScrollThread::SCROLL_ON_MAIN_THREAD.
   gfx::Size viewport_size(50, 50);
   gfx::Size content_size(100, 100);
   SetupViewportLayersOuterScrolls(viewport_size, content_size);
@@ -11678,7 +11678,7 @@
     EXPECT_EQ(ScrollThread::SCROLL_ON_IMPL_THREAD, status.thread);
     EXPECT_TRUE(status.needs_main_thread_hit_test);
   } else {
-    EXPECT_EQ(ScrollThread::SCROLL_UNKNOWN, status.thread);
+    EXPECT_EQ(ScrollThread::SCROLL_ON_MAIN_THREAD, status.thread);
     EXPECT_EQ(MainThreadScrollingReason::kFailedHitTest,
               status.main_thread_scrolling_reasons);
   }
@@ -11689,7 +11689,7 @@
 TEST_P(ScrollUnifiedLayerTreeHostImplTest, ScrollHitTestAncestorMismatch) {
   // If we ray cast a scroller this is on the first layer's ancestor chain, but
   // is not the first scroller we encounter when walking up from the layer, we
-  // should also return ScrollThread::SCROLL_UNKNOWN.
+  // should also return ScrollThread::SCROLL_ON_MAIN_THREAD.
   gfx::Size viewport_size(50, 50);
   gfx::Size content_size(100, 100);
   SetupViewportLayersOuterScrolls(viewport_size, content_size);
@@ -11721,7 +11721,7 @@
     EXPECT_EQ(ScrollThread::SCROLL_ON_IMPL_THREAD, status.thread);
     EXPECT_TRUE(status.needs_main_thread_hit_test);
   } else {
-    EXPECT_EQ(ScrollThread::SCROLL_UNKNOWN, status.thread);
+    EXPECT_EQ(ScrollThread::SCROLL_ON_MAIN_THREAD, status.thread);
     EXPECT_EQ(MainThreadScrollingReason::kFailedHitTest,
               status.main_thread_scrolling_reasons);
   }
diff --git a/cc/trees/layer_tree_host_pixeltest_filters.cc b/cc/trees/layer_tree_host_pixeltest_filters.cc
index 3687e59c..a699413 100644
--- a/cc/trees/layer_tree_host_pixeltest_filters.cc
+++ b/cc/trees/layer_tree_host_pixeltest_filters.cc
@@ -610,7 +610,11 @@
 
   RunPixelTest(
       background,
-      base::FilePath(FILE_PATH_LITERAL("backdrop_filter_on_scaled_layer_.png"))
+      base::FilePath(
+          (use_swangle() || use_skia_vulkan())
+              ? FILE_PATH_LITERAL("backdrop_filter_on_scaled_layer_.png")
+              : FILE_PATH_LITERAL(
+                    "backdrop_filter_on_scaled_layer_legacy_swiftshader_.png"))
           .InsertBeforeExtensionASCII(GetRendererSuffix()));
 }
 
@@ -724,7 +728,11 @@
 
   RunPixelTest(
       background,
-      base::FilePath(FILE_PATH_LITERAL("scaled_render_surface_layer_.png"))
+      base::FilePath(
+          (use_swangle() || use_skia_vulkan())
+              ? FILE_PATH_LITERAL("scaled_render_surface_layer_.png")
+              : FILE_PATH_LITERAL(
+                    "scaled_render_surface_layer_legacy_swiftshader_.png"))
           .InsertBeforeExtensionASCII(GetRendererSuffix()));
 }
 
diff --git a/cc/trees/layer_tree_host_pixeltest_scrollbars.cc b/cc/trees/layer_tree_host_pixeltest_scrollbars.cc
index d8c4420..b531ed86 100644
--- a/cc/trees/layer_tree_host_pixeltest_scrollbars.cc
+++ b/cc/trees/layer_tree_host_pixeltest_scrollbars.cc
@@ -173,14 +173,22 @@
   scale_transform.Scale(scale, scale);
   layer->SetTransform(scale_transform);
 
-  if (renderer_type_ == viz::RendererType::kSkiaGL ||
+  if (use_swangle() || use_skia_vulkan() ||
+      renderer_type_ == viz::RendererType::kSkiaGL ||
       renderer_type_ == viz::RendererType::kSkiaDawn)
     pixel_comparator_ = std::make_unique<FuzzyPixelOffByOneComparator>(true);
 
-  RunPixelTest(background,
-               use_skia_vulkan()
-                   ? base::FilePath(FILE_PATH_LITERAL("spiral_64_scale_vk.png"))
-                   : base::FilePath(FILE_PATH_LITERAL("spiral_64_scale.png")));
+  RunPixelTest(
+      background,
+      base::FilePath(
+          use_swangle()
+              ? (use_skia_vulkan() ? FILE_PATH_LITERAL("spiral_64_scale_vk.png")
+                                   : FILE_PATH_LITERAL("spiral_64_scale.png"))
+              : (use_skia_vulkan()
+                     ? FILE_PATH_LITERAL(
+                           "spiral_64_scale_legacy_swiftshader_vk.png")
+                     : FILE_PATH_LITERAL(
+                           "spiral_64_scale_legacy_swiftshader.png"))));
 }
 
 class LayerTreeHostOverlayScrollbarsPixelTest
diff --git a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java
index b3710a09f..e09830e 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java
@@ -190,9 +190,9 @@
 
     @VisibleForTesting
     public static void cachePasswordSheetData(WebContents webContents, String[] userNames,
-            String[] passwords, boolean originBlacklisted) {
+            String[] passwords, boolean originDenylisted) {
         ManualFillingComponentBridgeJni.get().cachePasswordSheetDataForTesting(
-                webContents, userNames, passwords, originBlacklisted);
+                webContents, userNames, passwords, originDenylisted);
     }
 
     @VisibleForTesting
@@ -237,7 +237,7 @@
         void onViewDestroyed(
                 long nativeManualFillingViewAndroid, ManualFillingComponentBridge caller);
         void cachePasswordSheetDataForTesting(WebContents webContents, String[] userNames,
-                String[] passwords, boolean originBlacklisted);
+                String[] passwords, boolean originDenylisted);
         void notifyFocusedFieldTypeForTesting(WebContents webContents, int focusedFieldType);
         void signalAutoGenerationStatusForTesting(WebContents webContents, boolean available);
         void disableServerPredictionsForTesting();
diff --git a/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingTestHelper.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingTestHelper.java
index 4e77597..ec3962a 100644
--- a/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingTestHelper.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingTestHelper.java
@@ -340,14 +340,13 @@
      * controller. The controller will only refresh this cache on page load.
      * @param usernames {@link String}s to be used as display text for username chips.
      * @param passwords {@link String}s to be used as display text for password chips.
-     * @param originBlacklisted boolean indicating whether password saving is disabled for the
+     * @param originDenylisted boolean indicating whether password saving is disabled for the
      *                          origin.
      */
-    public void cacheCredentials(
-            String[] usernames, String[] passwords, boolean originBlacklisted) {
+    public void cacheCredentials(String[] usernames, String[] passwords, boolean originDenylisted) {
         TestThreadUtils.runOnUiThreadBlocking(() -> {
             ManualFillingComponentBridge.cachePasswordSheetData(
-                    mActivityTestRule.getWebContents(), usernames, passwords, originBlacklisted);
+                    mActivityTestRule.getWebContents(), usernames, passwords, originDenylisted);
         });
     }
 
diff --git a/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java
index 9f2846f..bcd4c7611 100644
--- a/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java
@@ -151,7 +151,7 @@
     @EnableFeatures({ChromeFeatureList.RECOVER_FROM_NEVER_SAVE_ANDROID,
             ChromeFeatureList.AUTOFILL_KEYBOARD_ACCESSORY})
     public void
-    testEnablesUnblacklistingToggle() throws TimeoutException {
+    testEnablesUndenylistingToggle() throws TimeoutException {
         mHelper.loadTestPage(false);
         mHelper.cacheCredentials(new String[0], new String[0], true);
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/DEPS b/chrome/android/java/src/org/chromium/chrome/browser/DEPS
index 011dfee1..4f9f5a87 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/DEPS
+++ b/chrome/android/java/src/org/chromium/chrome/browser/DEPS
@@ -176,18 +176,12 @@
   "ExploreSitesIPH\.java": [
     "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
   ],
-  "ExploreSitesPage\.java": [
-    "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
-  ],
   "ExternalNavigationDelegateImpl\.java": [
     "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
   ],
   "ScreenshotTask\.java": [
     "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
   ],
-  "ForcedSigninProcessor\.java": [
-    "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
-  ],
   "BrowserControlsManager\.java": [
     "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
   ],
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java
index ac5dddac..e920daa 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java
@@ -87,8 +87,6 @@
 
     private static final String TAG = "ShortcutHelper";
 
-    private static ShortcutManager sShortcutManager;
-
     // Holds splash images for web apps that are currently being installed. After installation is
     // complete, the image associated with the web app will be moved to the appropriate {@link
     // WebappDataStorage}.
@@ -223,7 +221,9 @@
                                             .setIntent(shortcutIntent)
                                             .build();
         try {
-            sShortcutManager.requestPinShortcut(shortcutInfo, null);
+            ShortcutManager shortcutManager =
+                    ContextUtils.getApplicationContext().getSystemService(ShortcutManager.class);
+            shortcutManager.requestPinShortcut(shortcutInfo, null);
         } catch (IllegalStateException e) {
             Log.d(TAG,
                     "Could not create pinned shortcut: device is locked, or "
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/base/SplitChromeApplication.java b/chrome/android/java/src/org/chromium/chrome/browser/base/SplitChromeApplication.java
index cb3c3e3..0c8a681 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/base/SplitChromeApplication.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/base/SplitChromeApplication.java
@@ -75,12 +75,16 @@
         // this in the background allows us to do this in parallel with startup tasks which do
         // not depend on code in the chrome split.
         mSplitPreloader = new SplitPreloader(context);
+        // If the chrome module is not enabled or isolated splits are not supported (e.g. in Android
+        // N), the onComplete function will run immediately so it must handle the case where the
+        // base context of the application has not been set yet.
         mSplitPreloader.preload(CHROME_SPLIT_NAME, (chromeContext) -> {
             // When installed, the vr module is always loaded on startup, so preload here.
             mSplitPreloader.preload("vr", null);
-            // If the chrome module is not enabled, chromeContext will have the same ClassLoader as
-            // the base context, so no need to replace the ClassLoaders here.
-            if (!getClassLoader().equals(chromeContext.getClassLoader())) {
+            // If the chrome module is not enabled or isolated splits are not supported,
+            // chromeContext will have the same ClassLoader as the base context, so no need to
+            // replace the ClassLoaders here.
+            if (!context.getClassLoader().equals(chromeContext.getClassLoader())) {
                 replaceClassLoader(this, chromeContext.getClassLoader());
                 JNIUtils.setClassLoader(chromeContext.getClassLoader());
             }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/StackLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/StackLayout.java
index 0d927fa..a3172b6 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/StackLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/StackLayout.java
@@ -14,9 +14,11 @@
 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
 import org.chromium.chrome.browser.compositor.layouts.phone.stack.NonOverlappingStack;
 import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver;
 import org.chromium.chrome.browser.tabmodel.TabList;
 import org.chromium.chrome.browser.tabmodel.TabModel;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver;
 import org.chromium.chrome.browser.tabmodel.TabModelUtils;
 
 import java.util.ArrayList;
@@ -57,11 +59,26 @@
     public void setTabModelSelector(TabModelSelector modelSelector, TabContentManager manager) {
         super.setTabModelSelector(modelSelector, manager);
         if (modelSelector.getTabModelFilterProvider().getCurrentTabModelFilter() == null) {
-            return;
+            // Registers an observer of the TabModel's creation if it hasn't been created yet. Once
+            // the TabModel is ready, we will call setTablists() immediately.
+            // See https://crbug.com/1142858.
+            TabModelSelectorObserver selectorObserver = new EmptyTabModelSelectorObserver() {
+                @Override
+                public void onChange() {
+                    mTabModelSelector.removeObserver(this);
+                    setTablists();
+                }
+            };
+            mTabModelSelector.addObserver(selectorObserver);
+        } else {
+            setTablists();
         }
+    }
+
+    private void setTablists() {
         ArrayList<TabList> tabLists = new ArrayList<TabList>();
-        tabLists.add(modelSelector.getTabModelFilterProvider().getTabModelFilter(false));
-        tabLists.add(modelSelector.getTabModelFilterProvider().getTabModelFilter(true));
+        tabLists.add(mTabModelSelector.getTabModelFilterProvider().getTabModelFilter(false));
+        tabLists.add(mTabModelSelector.getTabModelFilterProvider().getTabModelFilter(true));
         setTabLists(tabLists);
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesPage.java b/chrome/android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesPage.java
index 54ad8dc..1ee7046 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/explore_sites/ExploreSitesPage.java
@@ -4,6 +4,7 @@
 
 package org.chromium.chrome.browser.explore_sites;
 
+import android.app.Activity;
 import android.content.Context;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -21,7 +22,6 @@
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.metrics.RecordUserAction;
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.app.ChromeActivity;
 import org.chromium.chrome.browser.native_page.ContextMenuManager;
 import org.chromium.chrome.browser.native_page.NativePageNavigationDelegate;
 import org.chromium.chrome.browser.native_page.NativePageNavigationDelegateImpl;
@@ -29,6 +29,7 @@
 import org.chromium.chrome.browser.tab.EmptyTabObserver;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tab.TabObserver;
+import org.chromium.chrome.browser.tabmodel.TabModelSelector;
 import org.chromium.chrome.browser.ui.native_page.BasicNativePage;
 import org.chromium.chrome.browser.ui.native_page.NativePageHost;
 import org.chromium.components.browser_ui.widget.RoundedIconGenerator;
@@ -169,7 +170,8 @@
     /**
      * Create a new instance of the explore sites page.
      */
-    public ExploreSitesPage(ChromeActivity activity, NativePageHost host, Tab tab) {
+    public ExploreSitesPage(
+            Activity activity, NativePageHost host, Tab tab, TabModelSelector tabModelSelector) {
         super(host);
 
         mHost = host;
@@ -232,7 +234,7 @@
                         context.getResources().getDimensionPixelSize(textSizeDimensionResource));
 
         NativePageNavigationDelegateImpl navDelegate = new NativePageNavigationDelegateImpl(
-                activity, mProfile, host, activity.getTabModelSelector(), mTab);
+                activity, mProfile, host, tabModelSelector, mTab);
 
         // ExploreSitePage is recreated upon reparenting. Safe to use |activity|.
         Runnable closeContextMenuCallback = activity::closeContextMenu;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ForcedSigninProcessor.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ForcedSigninProcessor.java
index 0ed510e..a879097 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ForcedSigninProcessor.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ForcedSigninProcessor.java
@@ -4,12 +4,13 @@
 
 package org.chromium.chrome.browser.firstrun;
 
+import android.app.Activity;
+
 import androidx.annotation.Nullable;
 
 import org.chromium.base.Log;
 import org.chromium.chrome.browser.AppHooks;
 import org.chromium.chrome.browser.SyncFirstSetupCompleteSource;
-import org.chromium.chrome.browser.app.ChromeActivity;
 import org.chromium.chrome.browser.externalauth.UserRecoverableErrorHandler;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.services.AndroidChildAccountHelper;
@@ -114,7 +115,7 @@
      */
     // TODO(bauerb): Once external dependencies reliably use policy to force sign-in,
     // consider removing the child account.
-    public static void checkCanSignIn(final ChromeActivity activity) {
+    public static void checkCanSignIn(final Activity activity) {
         if (IdentityServicesProvider.get()
                         .getSigninManager(Profile.getLastUsedRegularProfile())
                         .isForceSigninEnabled()) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator.java
index 3d3584f..a069abf7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator.java
@@ -22,6 +22,7 @@
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
 import org.chromium.chrome.browser.lifecycle.PauseResumeWithNativeObserver;
+import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
 import org.chromium.components.browser_ui.widget.InsetObserverView;
@@ -248,7 +249,7 @@
                         ? createDelegate(mTab, mBackShouldCloseTab, mOnBackPressed,
                                 mShowHistoryManager, mHistoryMenu, mBottomSheetControllerSupplier)
                         : HistoryNavigationDelegate.DEFAULT;
-                initNavigationHandler(delegate);
+                initNavigationHandler(delegate, webContents);
             }
         }
         if (mTab != null) SwipeRefreshHandler.from(mTab).setNavigationCoordinator(this);
@@ -259,7 +260,8 @@
      * @param delegate {@link HistoryNavigationDelegate} providing info and a factory method.
      * @param webContents A new WebContents object.
      */
-    private void initNavigationHandler(HistoryNavigationDelegate delegate) {
+    private void initNavigationHandler(
+            HistoryNavigationDelegate delegate, WebContents webContents) {
         if (mNavigationHandler == null) {
             PropertyModel model =
                     new PropertyModel.Builder(GestureNavigationProperties.ALL_KEYS).build();
@@ -275,9 +277,11 @@
             mNavigationHandler.setDelegate(delegate);
             mDelegate = delegate;
 
+            Profile profile = webContents != null ? Profile.fromWebContents(webContents)
+                                                  : Profile.getLastUsedRegularProfile();
             mNavigationSheet = NavigationSheet.isEnabled()
                     ? NavigationSheet.create(mNavigationLayout, mNavigationLayout.getContext(),
-                            mDelegate.getBottomSheetController())
+                            mDelegate.getBottomSheetController(), profile)
                     : NavigationSheet.DUMMY;
             mNavigationSheet.setDelegate(mDelegate.createSheetDelegate());
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationSheet.java b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationSheet.java
index dad2776..57eecb45 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationSheet.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationSheet.java
@@ -8,6 +8,7 @@
 import android.view.View;
 
 import org.chromium.base.supplier.Supplier;
+import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
 import org.chromium.content_public.browser.NavigationHistory;
 
@@ -38,9 +39,9 @@
      * @param bottomSheetController {@link BottomSheetController} object.
      * @return NavigationSheet object.
      */
-    public static NavigationSheet create(
-            View rootView, Context context, Supplier<BottomSheetController> bottomSheetController) {
-        return new NavigationSheetCoordinator(rootView, context, bottomSheetController);
+    public static NavigationSheet create(View rootView, Context context,
+            Supplier<BottomSheetController> bottomSheetController, Profile profile) {
+        return new NavigationSheetCoordinator(rootView, context, bottomSheetController, profile);
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationSheetCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationSheetCoordinator.java
index be1e1c76..3826ae07 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationSheetCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationSheetCoordinator.java
@@ -18,6 +18,7 @@
 import org.chromium.base.supplier.Supplier;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.gesturenav.NavigationSheetMediator.ItemProperties;
+import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetContent;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController.SheetState;
@@ -116,13 +117,13 @@
     /**
      * Construct a new NavigationSheet.
      */
-    NavigationSheetCoordinator(
-            View parent, Context context, Supplier<BottomSheetController> bottomSheetController) {
+    NavigationSheetCoordinator(View parent, Context context,
+            Supplier<BottomSheetController> bottomSheetController, Profile profile) {
         mParentView = parent;
         mBottomSheetController = bottomSheetController;
         mLayoutInflater = LayoutInflater.from(context);
         mToolbarView = mLayoutInflater.inflate(R.layout.navigation_sheet_toolbar, null);
-        mMediator = new NavigationSheetMediator(context, mModelList, (position, index) -> {
+        mMediator = new NavigationSheetMediator(context, mModelList, profile, (position, index) -> {
             mDelegate.navigateToIndex(index);
             close(false);
             if (mOpenedAsPopup) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationSheetMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationSheetMediator.java
index c738cce..42b53b5 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationSheetMediator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationSheetMediator.java
@@ -45,6 +45,7 @@
     private final Drawable mHistoryIcon;
     private final Drawable mDefaultIcon;
     private final String mNewTabText;
+    private final Profile mProfile;
 
     private NavigationHistory mHistory;
 
@@ -75,9 +76,11 @@
         public static final PropertyKey[] ALL_KEYS = {ICON, LABEL, CLICK_LISTENER};
     }
 
-    NavigationSheetMediator(Context context, ModelList modelList, ClickListener listener) {
+    NavigationSheetMediator(
+            Context context, ModelList modelList, Profile profile, ClickListener listener) {
         mModelList = modelList;
         mClickListener = listener;
+        mProfile = profile;
         mFaviconHelper = new FaviconHelper();
         mIconGenerator = FaviconUtils.createCircularIconGenerator(context.getResources());
         mFaviconSize = context.getResources().getDimensionPixelSize(R.dimen.default_favicon_size);
@@ -109,11 +112,8 @@
                 FaviconHelper.FaviconImageCallback imageCallback =
                         (bitmap, iconUrl) -> onFaviconAvailable(pageUrl, bitmap);
                 if (!pageUrl.equals(UrlConstants.HISTORY_URL)) {
-                    // TODO (https://crbug.com/1048632): Use the current profile (i.e., regular
-                    // profile or incognito profile) instead of always using regular profile. It
-                    // works correctly now, but it is not safe.
-                    mFaviconHelper.getLocalFaviconImageForURL(Profile.getLastUsedRegularProfile(),
-                            pageUrl, mFaviconSize, imageCallback);
+                    mFaviconHelper.getLocalFaviconImageForURL(
+                            mProfile, pageUrl, mFaviconSize, imageCallback);
                     requestedUrls.add(pageUrl);
                 } else {
                     mModelList.get(i).model.set(ItemProperties.ICON, mHistoryIcon);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
index 93f8af1..92a5375 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
@@ -103,7 +103,8 @@
         }
 
         protected NativePage buildExploreSitesPage(Tab tab) {
-            return new ExploreSitesPage(mActivity, new TabShim(tab, mActivity), tab);
+            return new ExploreSitesPage(
+                    mActivity, new TabShim(tab, mActivity), tab, mActivity.getTabModelSelector());
         }
 
         protected NativePage buildHistoryPage(Tab tab) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java
index 67da2910..d9a9feaa 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java
@@ -148,6 +148,7 @@
     void setDisplayedView(@ViewState int state) {
         mViewFlipper.setDisplayedChild(state);
         View titleView = mViewFlipper.getChildAt(state).findViewById(sTitleIds[state]);
+        titleView.setFocusable(true);
         titleView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
index 1b8afb1..ac2f76c4 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -204,9 +204,10 @@
     public void showFullHistorySheet() {
         Tab tab = mActivity.getActivityTabProvider().get();
         if (tab == null || tab.getWebContents() == null || !tab.isUserInteractable()) return;
+        Profile profile = Profile.fromWebContents(tab.getWebContents());
         mNavigationSheet = NavigationSheet.create(
                 mActivity.getWindow().getDecorView().findViewById(android.R.id.content), mActivity,
-                this::getBottomSheetController);
+                this::getBottomSheetController, profile);
         mNavigationSheet.setDelegate(new TabbedSheetDelegate(tab, aTab -> {
             HistoryManagerUtils.showHistoryManager(mActivity, aTab);
         }, mActivity.getResources().getString(R.string.show_full_history)));
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/gesturenav/NavigationSheetTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/gesturenav/NavigationSheetTest.java
index 71a73e1..60fec38 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/gesturenav/NavigationSheetTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/gesturenav/NavigationSheetTest.java
@@ -28,6 +28,7 @@
 import org.chromium.chrome.browser.ChromeTabbedActivity;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.browser.gesturenav.NavigationSheetMediator.ItemProperties;
+import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tabbed_mode.TabbedRootUiCoordinator;
 import org.chromium.chrome.browser.ui.RootUiCoordinator;
@@ -202,8 +203,9 @@
     private NavigationSheet showPopup(NavigationController controller) throws ExecutionException {
         return TestThreadUtils.runOnUiThreadBlocking(() -> {
             Tab tab = mActivityTestRule.getActivity().getActivityTabProvider().get();
-            NavigationSheet navigationSheet = NavigationSheet.create(tab.getContentView(),
-                    mActivityTestRule.getActivity(), () -> mBottomSheetController);
+            NavigationSheet navigationSheet =
+                    NavigationSheet.create(tab.getContentView(), mActivityTestRule.getActivity(),
+                            () -> mBottomSheetController, Profile.getLastUsedRegularProfile());
             navigationSheet.setDelegate(new TestSheetDelegate(controller));
             navigationSheet.startAndExpand(false, false);
             return navigationSheet;
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 419276e..d4f6d697 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
@@ -35,7 +35,6 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.FlakyTest;
 import org.chromium.chrome.R;
@@ -92,7 +91,7 @@
 
     @Rule
     public RenderTestRule mRenderTestRule =
-            RenderTestRule.Builder.withPublicCorpus().setRevision(3).build();
+            RenderTestRule.Builder.withPublicCorpus().setRevision(4).build();
 
     private boolean mIsSystemLocationSettingEnabled = true;
 
@@ -108,6 +107,10 @@
 
     private void loadUrlAndOpenPageInfo(String url) {
         mActivityTestRule.loadUrl(url);
+        openPageInfo();
+    }
+
+    private void openPageInfo() {
         onViewWaiting(allOf(withId(R.id.location_bar_status_icon), isDisplayed())).perform(click());
     }
 
@@ -235,7 +238,6 @@
     @Test
     @MediumTest
     @Feature({"RenderTest"})
-    @DisabledTest(message = "https://crbug.com/1133770")
     @Features.DisableFeatures(PageInfoFeatureList.PAGE_INFO_V2)
     public void testShowOnExpiredCertificateWebsite() throws IOException {
         mActivityTestRule.startMainActivityOnBlankPage();
@@ -419,7 +421,7 @@
         createCookies();
         expectHasCookies(true);
         // Go to cookies subpage.
-        onView(withId(R.id.location_bar_status_icon)).perform(click());
+        openPageInfo();
         onView(withId(R.id.page_info_cookies_row)).perform(click());
         // Check that cookies usage is displayed.
         onViewWaiting(allOf(withText(containsString("stored data")), isDisplayed()));
@@ -446,7 +448,7 @@
         addSomePermissions(url);
         expectHasPermissions(url, true);
         // Go to permissions subpage.
-        onView(withId(R.id.location_bar_status_icon)).perform(click());
+        openPageInfo();
         onView(withId(R.id.page_info_permissions_row)).perform(click());
         // Clear permissions in page info.
         onView(withText("Reset permissions")).perform(click());
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp
index b2ecdff3..c2bfb19a 100644
--- a/chrome/app/chromeos_strings.grdp
+++ b/chrome/app/chromeos_strings.grdp
@@ -374,8 +374,8 @@
       =1 {Update device within 1 second}
       other {Update device within # seconds}}
   </message>
-  <message name="IDS_RELAUNCH_REQUIRED_BODY" desc="The body text of a dialog that tells users the device must be restarted.">
-    <ph name="organization_name">$1<ex>google.com</ex></ph> requires you to update this device before the deadline.
+  <message name="IDS_RELAUNCH_REQUIRED_BODY" desc="The body text of a dialog that tells users the device must be restarted. MANAGER can be a domain or an email address.">
+    <ph name="MANAGER">$1<ex>google.com</ex></ph> requires you to update this <ph name="DEVICE_TYPE">$2<ex>Chromebook</ex></ph> before the deadline.
   </message>
 
   <message name="IDS_RELAUNCH_RECOMMENDED_TITLE" desc="The title of a dialog that tells users that a device restart is recommended for an update.">
@@ -384,11 +384,11 @@
   <message name="IDS_RELAUNCH_RECOMMENDED_OVERDUE_TITLE" desc="The title of a dialog that tells users that a device restart had been recommended for an update.">
     Update overdue
   </message>
-  <message name="IDS_RELAUNCH_RECOMMENDED_BODY" desc="The body text of a dialog that tells users the device must be restarted.">
-    <ph name="organization_name">$1<ex>google.com</ex></ph> recommends that you update this device.
+  <message name="IDS_RELAUNCH_RECOMMENDED_BODY" desc="The body text of a dialog that tells users the device must be restarted. MANAGER can be a domain or an email address.">
+    <ph name="MANAGER">$1<ex>google.com</ex></ph> recommends that you update this <ph name="DEVICE_TYPE">$2<ex>Chromebook</ex></ph>.
   </message>
-  <message name="IDS_RELAUNCH_RECOMMENDED_OVERDUE_BODY" desc="The body text of a dialog that tells users the device must be restarted right now.">
-    <ph name="organization_name">$1<ex>google.com</ex></ph> requires you to update this device immediately.
+  <message name="IDS_RELAUNCH_RECOMMENDED_OVERDUE_BODY" desc="The body text of a dialog that tells users the device must be restarted right now. MANAGER can be a domain or an email address.">
+    <ph name="MANAGER">$1<ex>google.com</ex></ph> requires you to update this <ph name="DEVICE_TYPE">$2<ex>Chromebook</ex></ph> immediately.
   </message>
 
   <!-- Chrome OS Strings -->
@@ -5211,6 +5211,23 @@
     To see all open app windows, swipe up from the bottom and hold.
   </message>
 
+  <!-- Strings for ChromeVox hint -->
+  <message name="IDS_OOBE_ACTIVATE_CHROMEVOX" desc="Label for the button in the ChromeVox hint dialog that will activate ChromeVox.">
+    Yes, activate ChromeVox
+  </message>
+  <message name="IDS_OOBE_CONTINUE_WITHOUT_CHROMEVOX" desc="Label for the button in the ChromeVox hint dialog that will close the dialog.">
+    No, continue without ChromeVox
+  </message>
+  <message name="IDS_OOBE_CHROMEVOX_HINT_TEXT" desc="Text content in the ChromeVox hint dialog, asking the user if they would like to activate ChromeVox.">
+    Do you want to activate ChromeVox, the built-in screenreader for Chrome OS?
+  </message>
+  <message name="IDS_OOBE_CHROMEVOX_HINT_ANNOUNCEMENT_TEXT_LAPTOP" desc="The string spoken when the ChromeVox hint is activated when the device is in laptop mode." is_accessibility_with_no_ui="true">
+    Do you want to activate ChromeVox, the built-in screenreader for Chrome OS? If so, press the space bar.
+  </message>
+  <message name="IDS_OOBE_CHROMEVOX_HINT_ANNOUNCEMENT_TEXT_TABLET" desc="The string spoken when the ChromeVox hint is activated when the device is in tablet mode." is_accessibility_with_no_ui="true">
+    Do you want to activate ChromeVox, the built-in screenreader for Chrome OS? If so, press and hold both volume keys for five seconds.
+  </message>
+
   <!-- Mojo service names (displayed in task manager) -->
   <message name="IDS_ASH_ASH_SERVICE_NAME" desc="Name of the internal software service that manages windows. Appears in the task manager.">
     Window manager
diff --git a/chrome/app/chromeos_strings_grdp/IDS_OOBE_ACTIVATE_CHROMEVOX.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_OOBE_ACTIVATE_CHROMEVOX.png.sha1
new file mode 100644
index 0000000..bb4001ae
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_OOBE_ACTIVATE_CHROMEVOX.png.sha1
@@ -0,0 +1 @@
+da17d6a1994112da932327cfc8f1812ac2500b69
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_OOBE_CHROMEVOX_HINT_TEXT.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_OOBE_CHROMEVOX_HINT_TEXT.png.sha1
new file mode 100644
index 0000000..bb4001ae
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_OOBE_CHROMEVOX_HINT_TEXT.png.sha1
@@ -0,0 +1 @@
+da17d6a1994112da932327cfc8f1812ac2500b69
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_OOBE_CONTINUE_WITHOUT_CHROMEVOX.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_OOBE_CONTINUE_WITHOUT_CHROMEVOX.png.sha1
new file mode 100644
index 0000000..bb4001ae
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_OOBE_CONTINUE_WITHOUT_CHROMEVOX.png.sha1
@@ -0,0 +1 @@
+da17d6a1994112da932327cfc8f1812ac2500b69
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_RECOMMENDED_BODY.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_RECOMMENDED_BODY.png.sha1
new file mode 100644
index 0000000..2af33f45
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_RECOMMENDED_BODY.png.sha1
@@ -0,0 +1 @@
+19b1999ddf8d24c17222245c87079f65aedd57b1
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_RECOMMENDED_OVERDUE_BODY.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_RECOMMENDED_OVERDUE_BODY.png.sha1
new file mode 100644
index 0000000..e8ad0c7a
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_RECOMMENDED_OVERDUE_BODY.png.sha1
@@ -0,0 +1 @@
+8bbf09ff39bdb507669579d145c0cad6d8dcb1d0
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_RECOMMENDED_OVERDUE_TITLE.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_RECOMMENDED_OVERDUE_TITLE.png.sha1
new file mode 100644
index 0000000..e8ad0c7a
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_RECOMMENDED_OVERDUE_TITLE.png.sha1
@@ -0,0 +1 @@
+8bbf09ff39bdb507669579d145c0cad6d8dcb1d0
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_RECOMMENDED_TITLE.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_RECOMMENDED_TITLE.png.sha1
new file mode 100644
index 0000000..2af33f45
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_RECOMMENDED_TITLE.png.sha1
@@ -0,0 +1 @@
+19b1999ddf8d24c17222245c87079f65aedd57b1
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_REQUIRED_BODY.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_REQUIRED_BODY.png.sha1
new file mode 100644
index 0000000..e343d813
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_RELAUNCH_REQUIRED_BODY.png.sha1
@@ -0,0 +1 @@
+2c4bf103c2bf5cf38c106731cbebf75dca983eb6
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_ar.xtb b/chrome/app/resources/chromium_strings_ar.xtb
index cddeaea..4a5579f7 100644
--- a/chrome/app/resources/chromium_strings_ar.xtb
+++ b/chrome/app/resources/chromium_strings_ar.xtb
@@ -40,6 +40,7 @@
 <translation id="2535480412977113886">‏تعذر على نظام التشغيل Chromium مزامنة البيانات نظرًا لأن تفاصيل تسجيل الدخول إلى حسابك قديمة.</translation>
 <translation id="2560420686485554789">‏يحتاج Chromium إلى الوصول إلى مساحة التخزين لتنزيل الملفات.</translation>
 <translation id="2572494885440352020">‏أداة مساعدة Chromium</translation>
+<translation id="2583187216237139145">‏يمكن لمشرف الملف الشخصي للعمل إزالة أي بيانات مرتبطة بمتصفِّح Chromium والتي يتم إنشاؤها أثناء استخدام هذا الملف الشخصي (مثل إنشاء الإشارات المرجعية والسجلّ وكلمات المرور والإعدادات الأخرى).<ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">‏يلزم إعادة تشغيل نظام التشغيل Chromium حتى يتم تطبيق التحديث.</translation>
 <translation id="2615699638672665509">‏سيتوقف هذا الكمبيوتر قريبًا عن تلقي تحديثات Chromium نظرًا لأن أجهزته لم تعد متوافقة.</translation>
 <translation id="2648074677641340862">‏حدث خطأ في نظام التشغيل أثناء عملية التثبيت. يُرجى إعادة تنزيل Chromium.</translation>
@@ -141,6 +142,7 @@
 <translation id="6055895534982063517">‏يتوفر إصدار جديد من Chromium، وهو أسرع بكثير من ذي قبل.</translation>
 <translation id="6063093106622310249">‏&amp;فتح في Chromium</translation>
 <translation id="6072279588547424923">‏تمت إضافة <ph name="EXTENSION_NAME" /> إلى Chromium</translation>
+<translation id="608006075545470555">إضافة ملف شخصي للعمل على هذا المتصفِّح</translation>
 <translation id="608189560609172163">‏تعذر على Chromium مزامنة البيانات نظرًا لحدوث خطأ أثناء تسجيل الدخول.</translation>
 <translation id="6096348254544841612">‏تخصيص Chromium والتحكُّم فيه. هناك تحديث متوفر.</translation>
 <translation id="6120345080069858279">‏سيحفظ Chromium كلمة المرور هذه في حسابك على Google ولن تحتاج تذكّرها.</translation>
@@ -161,6 +163,7 @@
 <translation id="6403826409255603130">‏ إن Chromium هو متصفح ويب يشغّل صفحات الويب والتطبيقات بسرعة مذهلة. إنه سريع وثابت وسهل الاستخدام. يمكنك تصفح الويب بشكل أكثر أمانًا من خلال ميزات الحماية من البرامج الضارة والتصيّد الاحتيالي المدمجة في Chromium.</translation>
 <translation id="6434250628340475518">‏نظام التشغيل Chromium</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{‏ستتم إعادة تشغيل Chromium خلال ثانية واحدة}zero{‏ستتم إعادة تشغيل Chromium خلال # ثانية}two{‏ستتم إعادة تشغيل Chromium خلال ثانيتين (#)}few{‏ستتم إعادة تشغيل Chromium خلال # ثوانٍ}many{‏ستتم إعادة تشغيل Chromium خلال # ثانيةً}other{‏ستتم إعادة تشغيل Chromium خلال # ثانية}}</translation>
+<translation id="6464340581899189425">‏إذا كانت لديك حسابات متعددة في Google، يمكنك إضافتها على جهاز <ph name="DEVICE_TYPE" />. وستكون حساباتك متوفّرة في متصفِّح Chromium و"متجر Play"، بالإضافة إلى خدمات مثل Gmail وDrive وYouTuve. <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">‏كما أنها تتحكم في الصفحة التي تظهر عند تشغيل Chromium.</translation>
 <translation id="6510925080656968729">‏إزالة Chromium</translation>
 <translation id="6570579332384693436">‏لإصلاح الأخطاء الإملائية، يُرسِل Chromium ما تكتبه في حقول النص إلى Google</translation>
@@ -220,6 +223,7 @@
 <translation id="7857220146454061152">‏للحصول على تحديثات Chromium في المستقبل، يجب أن تستخدم جهازًا يعمل بنظام التشغيل OS X 10.11 أو إصدار أحدث. يعمل جهاز الكمبيوتر هذا بنظام التشغيل OS X 10.10.</translation>
 <translation id="7867198900892795913">‏تعذّرت إعادة التحميل Chromium إلى آخر إصدار، لذلك قد تفوتك الميزات الجديدة وعمليات إصلاح الأمان.</translation>
 <translation id="7898472181347242998">‏للتأكّد من أن جهازك يستخدم أحدث إصدار من نظام التشغيل، يُرجى الانتقال إلى <ph name="LINK_BEGIN" />إعدادات نظام التشغيل Chromium<ph name="LINK_END" />.</translation>
+<translation id="7907774600618164274">‏لم يتم إيقاف "نظام التشغيل Chromium" بشكلٍ صحيح.</translation>
 <translation id="7937630085815544518">‏تم تسجيل دخولك إلى Chromium باعتبارك <ph name="USER_EMAIL_ADDRESS" />. يُرجى استخدام الحساب نفسه لتسجيل الدخول مرة أخرى.</translation>
 <translation id="7975919845073681630">‏هذا تثبيت ثانوي من Chromium، ولا يمكن جعله متصفحك التلقائي.</translation>
 <translation id="7979877361127045932">‏الإخفاء في قائمة Chromium</translation>
@@ -234,6 +238,7 @@
 <translation id="8417404458978023919">{0,plural, =1{‏يجب إعادة تشغيل Chromium في غضون يوم واحد}zero{‏يجب إعادة تشغيل Chromium في غضون # يوم}two{‏يجب إعادة تشغيل Chromium في غضون يومين}few{‏يجب إعادة تشغيل Chromium في غضون # أيام}many{‏يجب إعادة تشغيل Chromium في غضون # يومًا}other{‏يجب إعادة تشغيل Chromium في غضون # يوم}}</translation>
 <translation id="8453117565092476964">‏أرشيف أداة التثبيت تالف أو غير صالح. يُرجى إعادة تنزيل Chromium.</translation>
 <translation id="8493179195440786826">‏إصدار Chromium قديم</translation>
+<translation id="8550334526674375523">هذا الملف الشخصي للعمل منفصِل تمامًا عن ملفك الشخصي.</translation>
 <translation id="8558383651099478961">‏أوقفَ أحد والدَيك "أذونات المواقع الإلكترونية والتطبيقات والإضافات" لمتصفِّح Chromium. ولا يمكن تثبيت <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8568283329061645092">‏لا يستطيع Chromium التحقّق من كلمات المرور إلا عند تسجيل الدخول باستخدام حسابك على Google.</translation>
 <translation id="8586442755830160949">‏حقوق الطبع والنشر لعام <ph name="YEAR" /> لصالح The Chromium Authors. جميع الحقوق محفوظة.</translation>
@@ -250,6 +255,7 @@
 <translation id="8907580949721785412">‏يحاول Chromium عرض كلمات المرور. اكتب كلمة مرور Windows للسماح بذلك.</translation>
 <translation id="8941642502866065432">‏تعذّرت إعادة التحميل Chromium</translation>
 <translation id="8974095189086268230">‏أصبح نظام التشغيل Chromium متاحًا من خلال المزيد من <ph name="BEGIN_LINK_CROS_OSS" />البرامج مفتوحة المصدر<ph name="END_LINK_CROS_OSS" />.</translation>
+<translation id="8986207147630327271">أنت على وشك إضافة ملف شخصي للعمل إلى هذا المتصفِّح ومنح المشرف إمكانية التحكُّم في هذا الملف الشخصي للعمل فقط.</translation>
 <translation id="9019929317751753759">‏لجعل Chromium أكثر أمنًا، أوقفنا الإضافة التالية التي لم تُدرج في <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> وربما تكون قد أضيفت بدون علمك.</translation>
 <translation id="9089354809943900324">‏إصدار Chromium قديم</translation>
 <translation id="9093206154853821181">{0,plural, =1{‏ستتم إعادة تشغيل Chromium في غضون ساعة واحدة}zero{‏ستتم إعادة تشغيل Chromium في غضون # ساعة}two{‏ستتم إعادة تشغيل Chromium في غضون ساعتين}few{‏ستتم إعادة تشغيل Chromium في غضون # ساعات}many{‏ستتم إعادة تشغيل Chromium في غضون # ساعةً}other{‏ستتم إعادة تشغيل Chromium في غضون # ساعة}}</translation>
@@ -257,6 +263,7 @@
 <translation id="911206726377975832">هل تريد أيضًا حذف بيانات التصفح؟</translation>
 <translation id="9158494823179993217">‏ضَبَط مشرف النظام Chromium لفتح متصفِّح بديل للوصول إلى <ph name="TARGET_URL_HOSTNAME" />.</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
+<translation id="9214764063801632699">‏نظام التشغيل Chromium</translation>
 <translation id="93478295209880648">‏قد لا يعمل Chromium بشكل صحيح لأنه لم يعد مدعومًا على أنظمة التشغيل Windows XP أو Windows Vista.</translation>
 <translation id="95514773681268843">‏<ph name="DOMAIN" /> يتطلب قراءة وقبول بنود الخدمة التالية قبل استخدام هذا الجهاز. وهذه البنود لا توسع أو تعدّل أو تقيّد بنود نظام التشغيل Chromium.</translation>
 <translation id="965162752251293939">‏مَن يستخدم Chromium؟</translation>
diff --git a/chrome/app/resources/chromium_strings_as.xtb b/chrome/app/resources/chromium_strings_as.xtb
index a14f3cc..d6aec11 100644
--- a/chrome/app/resources/chromium_strings_as.xtb
+++ b/chrome/app/resources/chromium_strings_as.xtb
@@ -42,6 +42,7 @@
 <translation id="2535480412977113886">আপোনাৰ একাউণ্টৰ ছাইন ইনৰ সবিশেষ তথ্যৰ ম্যাদ উকলি যোৱাৰ বাবে Chromium OS আপোনাৰ ডেটা ছিংক কৰিব নোৱাৰিলে।</translation>
 <translation id="2560420686485554789">ফাইল ডাউনল'ড কৰিবলৈ Chromiumক ষ্ট'ৰেজৰ এক্সেছৰ আৱশ্যক</translation>
 <translation id="2572494885440352020">Chromium সহায়ক</translation>
+<translation id="2583187216237139145">কৰ্মস্থানৰ প্ৰ’ফাইলৰ প্ৰশাসকে এই প্ৰ’ফাইলৰ ব্যৱহাৰৰ সময়ত সৃষ্টি হোৱা যিকোনো Chromium ডেটা (যেনে, বুকমাৰ্কৰ সৃষ্টি, ইতিহাস, পাছৱৰ্ড আৰু অন্য ছেটিং) আঁতৰাব পাৰে। <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">আপডে’টবোৰ প্ৰয়োগ কৰিবলৈ Chromium OS ৰিষ্টাৰ্ট কৰাৰ প্ৰয়োজন।</translation>
 <translation id="2615699638672665509">এই কম্পিউটাৰটোৱে শীঘ্ৰেই Chromiumৰ আপডে’টসমূহ লাভ কৰা বন্ধ কৰিব কাৰণ ইয়াৰ হাৰ্ডৱেৰ আৰু সমৰ্থিত নহয়।</translation>
 <translation id="2648074677641340862">ইনষ্টলেশ্বনৰ সময়ত এটা অপাৰেটিং ছিষ্টেম সম্পর্কীয় আসোঁৱাহ হৈছে। অনুগ্ৰহ কৰি পুনৰ Chromium ডাউনল’ড কৰক।</translation>
@@ -143,6 +144,7 @@
 <translation id="6055895534982063517">Chromiumৰ এটা নতুন সংস্কৰণ উপলব্ধ যিটো সকলোতকৈ দ্ৰুত।</translation>
 <translation id="6063093106622310249">&amp;Chromiumত খোলক</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> Chromiumত যোগ কৰা হ’ল</translation>
+<translation id="608006075545470555">এই ব্ৰাউজাৰত কৰ্মস্থানৰ প্ৰ’ফাইল যোগ দিয়ক</translation>
 <translation id="608189560609172163">ছাইন ইন কৰোঁতে কিবা আসোঁৱাহ হোৱাৰ কাৰণে Chromiumএ আপোনাৰ ডেটা ছিংক কৰিব নোৱাৰিলে।</translation>
 <translation id="6096348254544841612">Chromium কাষ্টমাইজ আৰু নিয়ন্ত্ৰণ কৰক। আপডে'ট আছে।</translation>
 <translation id="6120345080069858279">Chromiumএ এই পাছৱৰ্ডটো আপোনাৰ Google একাউণ্টত ছেভ কৰিব৷ আপুনি ইয়াক মনত ৰাখিব নালাগে৷</translation>
@@ -163,6 +165,7 @@
 <translation id="6403826409255603130">Chromium হৈছে ৱেবপৃষ্ঠা আৰু এপ্লিকেশ্বনসমূহক বিজুলী বেগেৰে চলোৱা এক ৱেব ব্ৰাউজাৰ। এইটো ক্ষিপ্ৰ, স্থিৰ আৰু ব্যৱহাৰৰ বাবে সুবিধাজনক। মালৱেৰ আৰু ফিশ্বিঙৰ পৰা বিশেষভাৱে সুৰক্ষা পোৱা সুবিধাৰে নির্মিত Chromium ৰ জৰিয়তে অতি সুৰক্ষিতভাৱে ৱেব ব্ৰাউজিং কৰক।</translation>
 <translation id="6434250628340475518">Chromium OS ছিষ্টেম</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ১ ছেকেণ্ডত ৰিষ্টাৰ্ট হ’ব}one{Chromium # ছেকেণ্ডত ৰিষ্টাৰ্ট হ’ব}other{Chromium # ছেকেণ্ডত ৰিষ্টাৰ্ট হ’ব}}</translation>
+<translation id="6464340581899189425">যদি আপোনাৰ একাধিক Google একাউণ্ট থাকে, আপুনি সেইসমূহ নিজৰ <ph name="DEVICE_TYPE" />ত যোগ দিব পাৰে। আপোনাৰ একাউণ্টসমূহ Chromium ব্ৰাউজাৰ আৰু Play Storeৰ লগতে Gmail, Drive আৰু YouTubeৰ দৰে সেৱাত উপলব্ধ হ’ব।<ph name="LINK_BEGIN" />অধিক জানক<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">আপুনি Chromium আৰম্ভ কৰিলে কি পৃষ্ঠা দেখুওৱা হ'ব সেয়াও ই নিয়ন্ত্ৰণ কৰে।</translation>
 <translation id="6510925080656968729">Chromium আনইনষ্টল কৰক</translation>
 <translation id="6570579332384693436">বানান শুদ্ধ কৰিবলৈ Chromiumএ আপুনি পাঠ অন্তৰ্ভুক্ত কৰিবলৈ থকা ক্ষেত্ৰসমূহত টাইপ কৰা পাঠখিনি Googleলৈ পঠিয়ায়</translation>
@@ -222,6 +225,7 @@
 <translation id="7857220146454061152">Chromiumৰ ভৱিষ্যতৰ আপডে’টসমূহ পাবলৈ আপোনাক OS X 10.11 অথবা তাৰ পাছৰ সংস্কৰণৰ আৱশ্যক হ’ব। এই কম্পিউটাৰটোৱে OS X 10.10 ব্যৱহাৰ কৰি আছে।</translation>
 <translation id="7867198900892795913">Chromiumক শেহতীয়া সংস্কৰণলৈ আপডে’ট কৰিব পৰা নগ’ল, গতিকে আপুনি নতুন সুবিধা আৰু সমস্যা সমাধানৰ উপায়সমূহ লাভ কৰা নাই।</translation>
 <translation id="7898472181347242998">আপোনাৰ ডিভাইচটো আপ-টু-ডে’ট হৈ আছেনে নাই সেয়া চাবলৈ <ph name="LINK_BEGIN" />Chromium OSৰ ছেটিংসমূহ<ph name="LINK_END" />লৈ যাওক</translation>
+<translation id="7907774600618164274">Chromium OS সঠিককৈ শ্বাট ডাউন কৰা হোৱা নাছিল।</translation>
 <translation id="7937630085815544518">আপুনি Chromiumত <ph name="USER_EMAIL_ADDRESS" /> হিচাপে ছাইন ইন হৈ আছিল। আকৌ ছাইন ইন কৰিবলৈ অনুগ্ৰহ কৰি সেই একেটা একাউণ্ট ব্যৱহাৰ কৰক।</translation>
 <translation id="7975919845073681630">এয়া Chromiumৰ এক গৌণ ইনষ্টলেশ্বন আৰু ইয়াক আপোনাৰ ডিফ’ল্ট ব্ৰাউজাৰ কৰিব নোৱাৰি।</translation>
 <translation id="7979877361127045932">Chromium মেনুত লুকুৱাওক</translation>
@@ -236,6 +240,7 @@
 <translation id="8417404458978023919">{0,plural, =1{এদিনৰ ভিতৰত Chromium পুনৰ লঞ্চ কৰক}one{# দিনৰ ভিতৰত Chromium পুনৰ লঞ্চ কৰক}other{# দিনৰ ভিতৰত Chromium পুনৰ লঞ্চ কৰক}}</translation>
 <translation id="8453117565092476964">ইনষ্টলাৰ আৰ্কাইভটো ব্যৱহাৰযোগ্য নহয় বা অমান্য। অনুগ্ৰহ কৰি Chromium আকৌ ডাউনল’ড কৰক।</translation>
 <translation id="8493179195440786826">Chromiumটো অতি পুৰণি</translation>
+<translation id="8550334526674375523">এই কৰ্মস্থানৰ প্ৰ’ফাইলটো আপোনাৰ ব্যক্তিগত প্ৰ’ফাইলৰ পৰা সম্পূৰ্ণৰূপে পৃথক।</translation>
 <translation id="8558383651099478961">আপোনাৰ অভিভাৱকে Chromiumত "ছাইট, এপ্ আৰু এক্সটেনশ্বনসমূহৰ বাবে অনুমতি" অফ কৰিছে। এই <ph name="EXTENSION_TYPE_PARAMETER" />টো যোগ দিয়াৰ অনুমতি নাই।</translation>
 <translation id="8568283329061645092">আপুনি নিজৰ Google একাউণ্টটোৰ জৰিয়তে ছাইন ইন কৰোঁতে Chromiumএ আপোনাৰ পাছৱর্ডসমূহ পৰীক্ষা কৰিব পাৰে</translation>
 <translation id="8586442755830160949">স্বত্ত্বাধিকাৰ <ph name="YEAR" /> The Chromium Authors. সর্বস্বত্ব সংৰক্ষিত।</translation>
@@ -252,6 +257,7 @@
 <translation id="8907580949721785412">Chromiumএ পাছৱর্ডসমূহ দেখুৱাবলৈ চেষ্টা কৰি আছে। ইয়াক অনুমতি দিবলৈ আপোনাৰ Windowsৰ পাছৱর্ড টাইপ কৰক।</translation>
 <translation id="8941642502866065432">Chromium আপডে’ট কৰিব নোৱাৰি</translation>
 <translation id="8974095189086268230">অতিৰিক্ত <ph name="BEGIN_LINK_CROS_OSS" />মুক্ত উৎসৰ ছফ্টৱেৰ<ph name="END_LINK_CROS_OSS" />ৰ জৰিয়তে Chromium OSক ব্যৱহাৰযোগ্য কৰা হৈছে।</translation>
+<translation id="8986207147630327271">আপুনি এই ব্ৰাউজাৰত এটা কৰ্মস্থানৰ প্ৰ’ফাইল যোগ দিছে আৰু নিজৰ প্ৰশাসকক কেৱল কৰ্মস্থানৰ প্ৰ’ফাইলটোৰ ওপৰত নিয়ন্ত্ৰণ দিছে।</translation>
 <translation id="9019929317751753759">Chromiumক অধিক সুৰক্ষিত কৰিবলৈ, আমি <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />ত সূচীবদ্ধ নোহোৱা আৰু হয়তো আপোনাৰ অজ্ঞাতে যোগ কৰা তলত উল্লেখ কৰা এক্সটেনশ্বনটো অক্ষম কৰিছোঁ।</translation>
 <translation id="9089354809943900324">Chromiumটো অতি পুৰণি</translation>
 <translation id="9093206154853821181">{0,plural, =1{এঘণ্টাৰ Chromium ভিতৰত পুনৰ লঞ্চ হ’ব}one{# ঘণ্টাৰ Chromium ভিতৰত পুনৰ লঞ্চ হ’ব}other{# ঘণ্টাৰ Chromium ভিতৰত পুনৰ লঞ্চ হ’ব}}</translation>
@@ -259,6 +265,7 @@
 <translation id="911206726377975832">লগতে আপোনাৰ ব্ৰাউজিং ডেটাও মচিবনে?</translation>
 <translation id="9158494823179993217">আপোনাৰ ছিষ্টেমৰ প্ৰশাসকে <ph name="TARGET_URL_HOSTNAME" /> এক্সেছ কৰিবলৈ Chromiumক এটা বিকল্প ব্ৰাউজাৰ খুলিবলৈ কনফিগাৰ কৰিছে।</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
+<translation id="9214764063801632699">Chromium OS ছিষ্টেম</translation>
 <translation id="93478295209880648">Chromiumএ সঠিকভাৱে কাম নকৰিবও পাৰে কাৰণ এই সংস্কৰণটো Windows XP বা Windows Vistaত আৰু নচলে</translation>
 <translation id="95514773681268843">আপুনি এই ডিভাইচ ব্যৱহাৰ কৰাৰ পূর্বে আপুনি তলত উল্লেখ কৰা সেৱাৰ চর্তাৱলী পঢ়ি সন্মত হোৱাটো <ph name="DOMAIN" />এ বিচাৰে। এই চর্তাৱলীয়ে Chromium OSৰ চর্তাৱলী সম্প্ৰসাৰণ, সংশোধন বা সীমিত নকৰে।</translation>
 <translation id="965162752251293939">Chromium কোনে ব্যৱহাৰ কৰি আছে?</translation>
diff --git a/chrome/app/resources/chromium_strings_be.xtb b/chrome/app/resources/chromium_strings_be.xtb
index cf2e4fb..4013193 100644
--- a/chrome/app/resources/chromium_strings_be.xtb
+++ b/chrome/app/resources/chromium_strings_be.xtb
@@ -42,6 +42,7 @@
 <translation id="2535480412977113886">Сінхранізаваць даныя ў сістэме Chromium OS не ўдалося: даныя ўліковага запісу для ўваходу састарэлі.</translation>
 <translation id="2560420686485554789">Для спампоўвання файлаў браўзеру Chrome патрабуецца доступ да сховішча</translation>
 <translation id="2572494885440352020">Памочнік Chromium</translation>
+<translation id="2583187216237139145">Любыя даныя Chromium, створаныя пры выкарыстанні гэтага профілю (напрыклад, закладкі, гісторыя, паролі і іншыя налады), могуць быць выдалены адміністратарам працоўнага профілю. <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">Каб прымяніць абнаўленне, трэба перазапусціць Chromium OS.</translation>
 <translation id="2615699638672665509">Гэты камп'ютар неўзабаве не будзе атрымліваць абнаўленні Chromium, бо гэтае апаратнае забеспячэнне больш не падтрымліваецца.</translation>
 <translation id="2648074677641340862">Падчас усталявання адбылася памылка аперацыйнай сістэмы. Спампуйце Chromium зноў.</translation>
@@ -143,6 +144,7 @@
 <translation id="6055895534982063517">Даступная новая версія Chromium. Яшчэ хутчэйшая.</translation>
 <translation id="6063093106622310249">&amp;Адкрыць у Chromium</translation>
 <translation id="6072279588547424923">Пашырэнне <ph name="EXTENSION_NAME" /> дададзена да Chromium</translation>
+<translation id="608006075545470555">Дадаванне працоўнага профілю ў гэты браўзер</translation>
 <translation id="608189560609172163">Chromium не змог сінхранізаваць даныя з-за памылкі ўваходу.</translation>
 <translation id="6096348254544841612">Наладжвайце Chromium і кіруйце ім. Ёсць абнаўленне.</translation>
 <translation id="6120345080069858279">Chromium захавае гэты пароль у вашым Уліковым запісе Google. Вам не трэба запамінаць яго.</translation>
@@ -163,6 +165,7 @@
 <translation id="6403826409255603130">Chromium – гэта вэб-браўзер, які апрацоўвае вэб-старонкі і запускае праграмы з неймавернай хуткасцю: хуткі, стабільны і просты ў выкарыстанні. Павышаная бяспека прагляду вэб-старонак забяспечваецца ўбудаванай у Chromium аховай ад шкодных праграм і фішынгу.</translation>
 <translation id="6434250628340475518">Сістэма Chromium OS</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Перазапуск Chromium адбудзецца праз 1 секунду}one{Перазапуск Chromium адбудзецца праз # секунду}few{Перазапуск Chromium адбудзецца праз # секунды}many{Перазапуск Chromium адбудзецца праз # секунд}other{Перазапуск Chromium адбудзецца праз # секунды}}</translation>
+<translation id="6464340581899189425">Калі ў вас некалькі Уліковых запісаў Google, вы можаце дадаць іх на сваю прыладу <ph name="DEVICE_TYPE" />. Імі можна будзе карыстацца ў Краме Play і браўзеры Chromium, а таксама ў такіх сэрвісах, як Gmail, Дыск і YouTube. <ph name="LINK_BEGIN" />Даведацца больш<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">Таксама вызначае, якая старонка паказваецца пра запуску Chromium.</translation>
 <translation id="6510925080656968729">Выдаліць Chromium</translation>
 <translation id="6570579332384693436">Для выпраўлення арфаграфічных памылак Chromium адпраўляе ў Google тэкст, які вы набіраеце ў тэкставых палях</translation>
@@ -222,6 +225,7 @@
 <translation id="7857220146454061152">Каб атрымліваць наступныя абнаўленні Chromium, вам патрэбна версія OS X 10.11 ці пазнейшая. На гэтым камп'ютары выкарыстоўваецца OS X 10.10.</translation>
 <translation id="7867198900892795913">Браўзеру Chromium не ўдалося абнавіцца да апошняй версіі, таму ў ім няма новых функцый і выпраўленняў сістэмы бяспекі.</translation>
 <translation id="7898472181347242998">Каб даведацца, ці абноўлена прылада, адкрыйце <ph name="LINK_BEGIN" />Налады Chromium OS<ph name="LINK_END" /></translation>
+<translation id="7907774600618164274">Аперацыйная сістэма Chromium OS завяршыла працу некарэктна.</translation>
 <translation id="7937630085815544518">Вы ўваходзілі ва ўліковы запіс Chromium як <ph name="USER_EMAIL_ADDRESS" />. Для паўторнага ўваходу выкарыстоўвайце той жа самы ўліковы запіс.</translation>
 <translation id="7975919845073681630">Гэта другасны ўсталяваны экзэмпляр Chromium – яго нельга зрабіць стандартным браўзерам.</translation>
 <translation id="7979877361127045932">Схаваць у меню Chromium</translation>
@@ -236,6 +240,7 @@
 <translation id="8417404458978023919">{0,plural, =1{Перазапусціце Chromium на працягу дня}one{Перазапусціце Chromium на працягу # дня}few{Перазапусціце Chromium на працягу # дзён}many{Перазапусціце Chromium на працягу # дзён}other{Перазапусціце Chromium на працягу # дня}}</translation>
 <translation id="8453117565092476964">Архіў усталёўшчыка пашкоджаны або мае няправільны фармат. Спампуйце Chromium зноў.</translation>
 <translation id="8493179195440786826">Chromium састарэў</translation>
+<translation id="8550334526674375523">Гэты працоўны профіль і ваш асабісты профіль з'яўляюцца поўнасцю асобнымі профілямі.</translation>
 <translation id="8558383651099478961">Вашы бацькі выключылі "Дазволы для сайтаў, праграм і пашырэнняў" для Chromium. Дадаванне гэтага элемента (<ph name="EXTENSION_TYPE_PARAMETER" />) забаронена.</translation>
 <translation id="8568283329061645092">Chromium зможа праверыць паролі толькі пасля таго, як вы ўвойдзеце ва Уліковы запіс Google</translation>
 <translation id="8586442755830160949">Аўтарскія правы: стваральнікі Chromium, <ph name="YEAR" />. Усе правы абароненыя.</translation>
@@ -252,6 +257,7 @@
 <translation id="8907580949721785412">Chromium спрабуе паказаць паролі. Каб дазволіць гэта, увядзіце пароль Windows.</translation>
 <translation id="8941642502866065432">Не ўдаецца абнавіць Chromium</translation>
 <translation id="8974095189086268230">Chromium OS працуе дзякуючы дадатковаму <ph name="BEGIN_LINK_CROS_OSS" />праграмнаму забеспячэнню з адкрытым зыходным кодам<ph name="END_LINK_CROS_OSS" />.</translation>
+<translation id="8986207147630327271">Вы дадаяце працоўны профіль у гэты браўзер і даяце адміністратару кантроль толькі над працоўным профілем.</translation>
 <translation id="9019929317751753759">Каб павысіць бяспечнасць Chromium, мы выключылі прыведзенае ніжэй пашырэнне. <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> не змяшчае звестак пра гэта пашырэнне, а значыць, яно магло быць дададзена без вашага ведама.</translation>
 <translation id="9089354809943900324">Chromium састарэў</translation>
 <translation id="9093206154853821181">{0,plural, =1{Chromium будзе перазапушчаны праз гадзіну}one{Chromium будзе перазапушчаны праз # гадзіну}few{Chromium будзе перазапушчаны праз # гадзіны}many{Chromium будзе перазапушчаны праз # гадзін}other{Chromium будзе перазапушчаны праз # гадзіны}}</translation>
@@ -259,6 +265,7 @@
 <translation id="911206726377975832">Выдаліць таксама гісторыю праглядаў?</translation>
 <translation id="9158494823179993217">Ваш сістэмны адміністратар наладзіў Chromium, каб адкрыць альтэрнатыўны браўзер для доступу да <ph name="TARGET_URL_HOSTNAME" />.</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
+<translation id="9214764063801632699">Сістэма Chromium OS</translation>
 <translation id="93478295209880648">Браўзер Chromium больш не падтрымліваецца на Windows XP і Windows Vista, таму можа працаваць няправільна</translation>
 <translation id="95514773681268843"><ph name="DOMAIN" /> патрабуе ад вас прачытаць і прыняць наступныя Умовы выкарыстання, перш чым пачаць карыстацца прыладай. Гэтыя ўмовы не пашыраюць, не змяняюць і не абмяжоўваюць Умовы выкарыстання Chromium OS.</translation>
 <translation id="965162752251293939">Хто выкарыстоўвае Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_cs.xtb b/chrome/app/resources/chromium_strings_cs.xtb
index 1ede332b..e21e9df 100644
--- a/chrome/app/resources/chromium_strings_cs.xtb
+++ b/chrome/app/resources/chromium_strings_cs.xtb
@@ -42,6 +42,7 @@
 <translation id="2535480412977113886">Chromium OS nemůže synchronizovat data, protože vaše přihlašovací údaje k účtu jsou zastaralé.</translation>
 <translation id="2560420686485554789">Aby bylo možné stahovat soubory, potřebuje Chromium přístup k úložišti</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2583187216237139145">Veškerá data prohlížeče Chromium vygenerovaná během používání tohoto profilu (jako je vytvoření záložek, historie, hesel a další nastavení) může administrátor pracovního profilu odstranit. <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">Aktualizace se použije po restartování systému Chromium OS.</translation>
 <translation id="2615699638672665509">Tento počítač brzy přestane dostávat aktualizace prohlížeče Chromium, protože jeho hardware již není podporován.</translation>
 <translation id="2648074677641340862">Během instalace došlo k chybě operačního systému. Stáhněte prosím Chromium znovu.</translation>
@@ -143,6 +144,7 @@
 <translation id="6055895534982063517">K dispozici je nová verze prohlížeče Chromium, ještě rychlejší než ty předchozí.</translation>
 <translation id="6063093106622310249">&amp;Otevřít v prohlížeči Chromium</translation>
 <translation id="6072279588547424923">Do prohlížeče Chromium bylo přidáno rozšíření <ph name="EXTENSION_NAME" /></translation>
+<translation id="608006075545470555">Přidat do tohoto prohlížeče pracovní profil</translation>
 <translation id="608189560609172163">Přihlížeč Chromium vaše data nemohl synchronizovat, protože při přihlašování došlo k chybě.</translation>
 <translation id="6096348254544841612">Přizpůsobte si prohlížeč Chromium a ovládejte jej. Je k dispozici aktualizace.</translation>
 <translation id="6120345080069858279">Chromium vám toto heslo uloží do účtu Google. Nebudete si ho muset pamatovat.</translation>
@@ -163,6 +165,7 @@
 <translation id="6403826409255603130">Chromium je webový prohlížeč, který spouští webové stránky a aplikace rychlostí blesku. Je rychlý a snadno se používá. Prohlížejte web bezpečněji díky ochraně proti malwaru a phishingu integrované v prohlížeči Chromium.</translation>
 <translation id="6434250628340475518">Systém Chromium OS</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium se za 1 sekundu restartuje}few{Chromium se za # sekundy restartuje}many{Chromium se za # sekundy restartuje}other{Chromium se za # sekund restartuje}}</translation>
+<translation id="6464340581899189425">Pokud máte několik účtů Google, můžete si je přidat do zařízení <ph name="DEVICE_TYPE" />. Vaše účty budou k dispozici v prohlížeči Chromium a Obchodě Play a také ve službách, jako jsou Gmail, Disk a YouTube.<ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">Také řídí, která stránka se zobrazí při spuštění prohlížeče Chromium.</translation>
 <translation id="6510925080656968729">Odinstalovat Chromium</translation>
 <translation id="6570579332384693436">Text zadaný do textových polí odesílá Chromium kvůli opravě pravopisných chyb do Googlu</translation>
@@ -221,6 +224,7 @@
 <translation id="7857220146454061152">Pokud chcete v budoucnu dostávat aktualizace prohlížeče Chromium, budete potřebovat systém OS X 10.11 nebo novější. Tento počítač používá systém OS X 10.10.</translation>
 <translation id="7867198900892795913">Chromium nebylo možné aktualizovat na nejnovější verzi. Nemáte proto k dispozici nové funkce a opravy zabezpečení.</translation>
 <translation id="7898472181347242998">Chcete-li se podívat, zda je zařízení aktualizované, přejděte do <ph name="LINK_BEGIN" />Nastavení operačního systému Chromium<ph name="LINK_END" /></translation>
+<translation id="7907774600618164274">Systém Chromium OS nebyl řádně ukončen.</translation>
 <translation id="7937630085815544518">K prohlížeči Chromium jste byli přihlášeni s účtem <ph name="USER_EMAIL_ADDRESS" />. Přihlaste se prosím znovu pomocí stejného účtu.</translation>
 <translation id="7975919845073681630">Toto je druhá instalace prohlížeče Chromium. Tuto instalaci nelze nastavit jako výchozí prohlížeč.</translation>
 <translation id="7979877361127045932">Skrýt v nabídce Chromium</translation>
@@ -235,6 +239,7 @@
 <translation id="8417404458978023919">{0,plural, =1{Do jednoho dne Chromium restartujte}few{Do # dní Chromium restartujte}many{Do # dne Chromium restartujte}other{Do # dní Chromium restartujte}}</translation>
 <translation id="8453117565092476964">Archiv instalačního programu je poškozený nebo neplatný. Stáhněte prosím Chromium znovu.</translation>
 <translation id="8493179195440786826">Prohlížeč Chromium je zastaralý</translation>
+<translation id="8550334526674375523">Tento pracovní profil je zcela oddělen od vašeho osobního profilu.</translation>
 <translation id="8558383651099478961">Tvůj rodič pro prohlížeč Chromium vypnul možnost Oprávnění pro weby, aplikace a rozšíření. Přidání tohoto <ph name="EXTENSION_TYPE_PARAMETER" /> není povoleno.</translation>
 <translation id="8568283329061645092">Když se přihlásíte pomocí účtu Google, může vám Chromium kontrolovat hesla</translation>
 <translation id="8586442755830160949">Copyright <ph name="YEAR" /> Autoři prohlížeče Chromium. Všechna práva vyhrazena.</translation>
@@ -251,6 +256,7 @@
 <translation id="8907580949721785412">Aplikace Chromium se pokouší zobrazit hesla. Tato akce vyžaduje zadání hesla systému Windows.</translation>
 <translation id="8941642502866065432">Chromium nelze aktualizovat</translation>
 <translation id="8974095189086268230">Chrome OS by nemohl existovat bez dalšího <ph name="BEGIN_LINK_CROS_OSS" />softwaru s otevřeným zdrojovým kódem<ph name="END_LINK_CROS_OSS" />.</translation>
+<translation id="8986207147630327271">Přidáváte do tohoto prohlížeče pracovní profil a povolujete administrátorovi ovládat pouze pracovní profil.</translation>
 <translation id="9019929317751753759">Aby byl prohlížeč Chromium bezpečnější, deaktivovali jsme následující rozšíření, které není uvedeno na webu <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> a pravděpodobně bylo přidáno bez vašeho vědomí.</translation>
 <translation id="9089354809943900324">Prohlížeč Chromium je zastaralý</translation>
 <translation id="9093206154853821181">{0,plural, =1{Chromium se za hodinu restartuje}few{Chromium se za # hodiny restartuje}many{Chromium se za # hodiny restartuje}other{Chromium se za # hodin restartuje}}</translation>
@@ -258,6 +264,7 @@
 <translation id="911206726377975832">Vymazat také všechna data procházení?</translation>
 <translation id="9158494823179993217">Administrátor systému nakonfiguroval prohlížeč Chromium tak, aby pro přístup k adrese <ph name="TARGET_URL_HOSTNAME" /> otevřel alternativní prohlížeč.</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
+<translation id="9214764063801632699">Systém Chromium OS</translation>
 <translation id="93478295209880648">Prohlížeč Chromium nemusí fungovat správně, protože v systémech Windows XP a Windows Vista již není podporován</translation>
 <translation id="95514773681268843">Doména <ph name="DOMAIN" /> vyžaduje, abyste si před použitím tohoto zařízení přečetli následující smluvní podmínky a odsouhlasili je. Tyto smluvní podmínky nerozšiřují, neupravují ani neomezují smluvní podmínky systému Chromium OS.</translation>
 <translation id="965162752251293939">Kdo Chromium používá?</translation>
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb
index 057147c8..4efdb04 100644
--- a/chrome/app/resources/chromium_strings_en-GB.xtb
+++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -29,6 +29,8 @@
 <translation id="1966382378801805537">Chromium cannot determine or set the default browser</translation>
 <translation id="2008474315282236005">This will delete 1 item from this device. To retrieve your data later, sign in to Chromium as <ph name="USER_EMAIL" />.</translation>
 <translation id="2020032459870799438">To check if your other passwords are safe from data breaches and other security issues, <ph name="BEGIN_LINK" />sign in to Chromium<ph name="END_LINK" />.</translation>
+<translation id="2179192076895113433">You can manage this and other Google Accounts that you've added for <ph name="USER_NAME" /> from one place in <ph name="LINK_BEGIN" />Settings<ph name="LINK_END" />.
+          Permissions that you have granted to websites in the Chromium browser and apps from Google Play may apply to all accounts.</translation>
 <translation id="2185166961232948079">Chromium – Network sign-in – <ph name="PAGE_TITLE" /></translation>
 <translation id="2225696941839557119">Chromium OS could not sync your passwords.</translation>
 <translation id="2241627712206172106">If you share a computer, friends and family can browse separately and set up Chromium just the way they want.</translation>
diff --git a/chrome/app/resources/chromium_strings_hy.xtb b/chrome/app/resources/chromium_strings_hy.xtb
index 98261c7..a378546 100644
--- a/chrome/app/resources/chromium_strings_hy.xtb
+++ b/chrome/app/resources/chromium_strings_hy.xtb
@@ -29,6 +29,8 @@
 <translation id="1966382378801805537">Chromium-ը չի կարողանում որոշել կամ սահմանել կանխադրված դիտարկիչը</translation>
 <translation id="2008474315282236005">1 տարր կջնջվի այս սարքից: Հետագայում ձեր տվյալներն առբերելու համար մուտք գործեք Chromium <ph name="USER_EMAIL" /> հաշվով:</translation>
 <translation id="2020032459870799438">Որպեսզի պաշտպանեք ձեր մյուս գաղտնաբառերը տվյալների արտահոսքից և խուսափեք անվտանգության հետ կապված այլ խնդիրներից, <ph name="BEGIN_LINK" />մտեք հաշիվ Chromium դիտարկիչում<ph name="END_LINK" />։</translation>
+<translation id="2179192076895113433">Դուք կարող եք կառավարել <ph name="USER_NAME" />-ի այս և մյուս Google հաշիվները <ph name="LINK_BEGIN" />Կարգավորումներում<ph name="LINK_END" />։
+          Chromium դիտարկիչում և Google Play-ից ներբեռնված հավելվածներում կայքերին տրված ձեր թույլտվությունները կարող են կիրառվել բոլոր հաշիվների համար։</translation>
 <translation id="2185166961232948079">Chromium – Ցանցի մուտք – <ph name="PAGE_TITLE" /></translation>
 <translation id="2225696941839557119">Chromium OS-ը չկարողացավ համաժամացնել ձեր գաղտնաբառերը։</translation>
 <translation id="2241627712206172106">Եթե ձեզնից բացի որևէ այլ մեկն օգտվում է այս համակարգչից, օրինակ ձեր ընկերները կամ հարազատները, ապա նրանք կարող են առանձին աշխատել և կարգավորել Chromium-ն իրենց ուզած ձևով:</translation>
diff --git a/chrome/app/resources/chromium_strings_iw.xtb b/chrome/app/resources/chromium_strings_iw.xtb
index 03fc5ba..de01a5e 100644
--- a/chrome/app/resources/chromium_strings_iw.xtb
+++ b/chrome/app/resources/chromium_strings_iw.xtb
@@ -40,6 +40,7 @@
 <translation id="2535480412977113886">‏מערכת ההפעלה של Chromium לא הצליחה לסנכרן את הנתונים שלך מפני שפרטי הכניסה של חשבונך אינם מעודכנים.</translation>
 <translation id="2560420686485554789">‏Chromium זקוק לגישה לאחסון כדי להוריד קבצים</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2583187216237139145">‏המנהל של פרופיל העבודה יכול להסיר נתוני Chromium שמופקים בזמן השימוש בפרופיל (כמו יצירת סימניות, היסטוריה, סיסמאות והגדרות נוספות). <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">‏כדי להחיל עדכון זה, יש להפעיל מחדש את Chromium OS.</translation>
 <translation id="2615699638672665509">‏קבלת העדכונים של Chromium תופסק בקרוב למחשב זה מאחר שהחומרה שלו אינה נתמכת עוד.</translation>
 <translation id="2648074677641340862">‏במהלך ההתקנה ארעה שגיאה של מערכת ההפעלה. יש להוריד שוב את Chromium.</translation>
@@ -139,6 +140,7 @@
 <translation id="6055895534982063517">‏גרסה חדשה של Chromium זמינה, והיא מהירה יותר מאי פעם.</translation>
 <translation id="6063093106622310249">‏&amp;פתיחה ב-Chromium</translation>
 <translation id="6072279588547424923">‏<ph name="EXTENSION_NAME" /> נוסף ל-‏Chromium‏</translation>
+<translation id="608006075545470555">הוספת פרופיל עבודה לדפדפן זה</translation>
 <translation id="608189560609172163">‏Chromium לא הצליח לסנכרן את הנתונים שלך בשל שגיאת כניסה.</translation>
 <translation id="6096348254544841612">‏כדי להתאים אישית את Google Chrome ולשלוט בו טוב יותר, כדאי להוריד את העדכון החדש.</translation>
 <translation id="6120345080069858279">‏הסיסמה הזאת תישמר על ידי Chromium בחשבון Google שלך. אין צורך לזכור אותה.</translation>
@@ -159,6 +161,7 @@
 <translation id="6403826409255603130">‏Chromium הוא דפדפן אינטרנט המפעיל דפי אינטרנט ואפליקציות במהירות הבזק. זהו דפדפן מהיר, יציב וקל לשימוש שמאפשר לך לגלוש באינטרנט בצורה מאובטחת יותר הודות להגנה מפני תוכנות זדוניות ופישינג המובנית ב-Chromium.</translation>
 <translation id="6434250628340475518">‏מערכת Chromium OS</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{‏Chromium יבצע אתחול בעוד שנייה אחת}two{‏Chromium יבצע אתחול בעוד # שניות}many{‏Chromium יבצע אתחול בעוד # שניות}other{‏Chromium יבצע אתחול בעוד # שניות}}</translation>
+<translation id="6464340581899189425">‏אם יש לך מספר חשבונות Google, ניתן להוסיף אותם למכשיר ה-<ph name="DEVICE_TYPE" />. החשבונות יהיו זמינים בדפדפן Chromium ובחנות Play, בנוסף לשירותים כמו Gmail, ‏Drive ו-YouTube‏.<ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">‏הגדרה זו גם קובעת איזה דף מוצג כשמפעילים את Chromium.</translation>
 <translation id="6510925080656968729">‏הסרה של התקנת Chromium</translation>
 <translation id="6570579332384693436">‏Chromium שולח את הטקסט שמוקלד בשדות טקסט ל-Google כדי לתקן שגיאות כתיב</translation>
@@ -218,6 +221,7 @@
 <translation id="7857220146454061152">‏כדי לקבל עדכונים של Chromium בעתיד, נדרשת מערכת הפעלה OS X 10.11 ואילך. במחשב הזה מותקנת מערכת ההפעלה OS X 10.10.</translation>
 <translation id="7867198900892795913">‏עדכון Chromium לגרסה האחרונה לא הצליח, ולכן אין לך גישה אל תכונות חדשות ותיקוני אבטחה.</translation>
 <translation id="7898472181347242998">‏כדי לראות אם המכשיר שלך מעודכן, יש לעבור אל <ph name="LINK_BEGIN" />הגדרות Chromium OS<ph name="LINK_END" /></translation>
+<translation id="7907774600618164274">‏כיבוי Chromium OS לא בוצע כהלכה.</translation>
 <translation id="7937630085815544518">‏נכנסת ל-Chromium כ-<ph name="USER_EMAIL_ADDRESS" />. יש להשתמש באותו חשבון כדי להיכנס שוב.</translation>
 <translation id="7975919845073681630">‏זוהי התקנה משנית של Chromium, ולא ניתן להפוך אותו לדפדפן ברירת המחדל שלך.</translation>
 <translation id="7979877361127045932">‏הסתרה בתפריט Chromium</translation>
@@ -232,6 +236,7 @@
 <translation id="8417404458978023919">{0,plural, =1{‏צריך להפעיל מחדש את Chromium בתוך יום אחד}two{‏צריך להפעיל מחדש את Chromium בתוך # ימים}many{‏צריך להפעיל מחדש את Chromium בתוך # ימים}other{‏צריך להפעיל מחדש את Chromium בתוך # ימים}}</translation>
 <translation id="8453117565092476964">‏הארכיון של המתקין פגום או שאינו חוקי. יש להוריד שוב את Chromium.</translation>
 <translation id="8493179195440786826">‏Chromium אינו מעודכן</translation>
+<translation id="8550334526674375523">פרופיל העבודה שלך נפרד לחלוטין מהפרופיל האישי שלך.</translation>
 <translation id="8558383651099478961">‏אחד מההורים השבית ב-Chromium את ההגדרה "הרשאות לאתרים, אפליקציות ותוספים". לא ניתן להוסיף את ה<ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8568283329061645092">‏Chromium יכול לבדוק את הסיסמאות כשנכנסים באמצעות חשבון Google</translation>
 <translation id="8586442755830160949">‏Copyright <ph name="YEAR" /> The Chromium Authors. כל הזכויות שמורות.</translation>
@@ -248,6 +253,7 @@
 <translation id="8907580949721785412">‏Chromium מנסה להציג סיסמאות. יש להקליד את הסיסמה שלך ל-Windows כדי לאפשר זאת.</translation>
 <translation id="8941642502866065432">‏לא ניתן לעדכן את Chromium</translation>
 <translation id="8974095189086268230">‏מערכת ההפעלה של Chrome התאפשרה באמצעות <ph name="BEGIN_LINK_CROS_OSS" />תוכנת קוד פתוח<ph name="END_LINK_CROS_OSS" /> נוספת.</translation>
+<translation id="8986207147630327271">בחרת להוסיף פרופיל עבודה לדפדפן זה ולתת למנהל המערכת שליטה רק על פרופיל העבודה.</translation>
 <translation id="9019929317751753759">‏כדי לשפר את האבטחה של Chromium, השבתנו את התוסף הבא שאינו רשום ב-<ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> וייתכן שנוסף ללא ידיעתך.</translation>
 <translation id="9089354809943900324">‏Chromium אינו מעודכן</translation>
 <translation id="9093206154853821181">{0,plural, =1{‏Chromium יופעל מחדש בעוד שעה}two{‏Chromium יופעל מחדש בעוד # שעות}many{‏Chromium יופעל מחדש בעוד # שעות}other{‏Chromium יופעל מחדש בעוד # שעות}}</translation>
@@ -255,6 +261,7 @@
 <translation id="911206726377975832">למחוק גם את נתוני הגלישה שלך?</translation>
 <translation id="9158494823179993217">‏לפי הגדרת מנהל המערכת, Chromium יפתח דפדפן חלופי כדי לגשת אל <ph name="TARGET_URL_HOSTNAME" />.</translation>
 <translation id="9190841055450128916">‏Chromium ‏(mDNS-In)</translation>
+<translation id="9214764063801632699">‏מערכת Chromium OS</translation>
 <translation id="93478295209880648">‏ייתכן ש-Chromium לא יפעל כראוי כי הוא כבר לא נתמך ב-Windows XP וב-Windows Vista</translation>
 <translation id="95514773681268843">‏<ph name="DOMAIN" /> דורש לקרוא את התנאים וההגבלות הבאים ולהסכים להם לפני השימוש במכשיר הזה. תנאים אלה לא מרחיבים, משנים או מגבילים את התנאים של מערכת ההפעלה של Chromium.</translation>
 <translation id="965162752251293939">‏מי משתמש/ת ב-Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_ja.xtb b/chrome/app/resources/chromium_strings_ja.xtb
index 9f0c6bf2..f83ada6 100644
--- a/chrome/app/resources/chromium_strings_ja.xtb
+++ b/chrome/app/resources/chromium_strings_ja.xtb
@@ -40,6 +40,7 @@
 <translation id="2535480412977113886">アカウントのログイン情報が最新ではないため、Chromium OS はデータを同期できませんでした。</translation>
 <translation id="2560420686485554789">ファイルをダウンロードするには、Chromium でストレージへのアクセスを許可する必要があります</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2583187216237139145">このプロファイルの使用中に生成された Chromium データ(ブックマーク、履歴、パスワード、他の設定など)は、仕事用プロファイルの管理者によって削除される場合があります。<ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">アップデートを適用するには Chromium OS を再起動する必要があります。</translation>
 <translation id="2615699638672665509">このパソコンは、ハードウェアのサポートが終了しているため、まもなく Chromium アップデートの受信を停止します。</translation>
 <translation id="2648074677641340862">インストール中にオペレーティング システム エラーが発生しました。Chromium をダウンロードし直してください。</translation>
@@ -141,6 +142,7 @@
 <translation id="6055895534982063517">Chromium がさらに速くなりました!最新バージョンをぜひお試しください。</translation>
 <translation id="6063093106622310249">Chromium で開く(&amp;O)</translation>
 <translation id="6072279588547424923">「<ph name="EXTENSION_NAME" />」が Chromium に追加されました</translation>
+<translation id="608006075545470555">このブラウザに仕事用プロファイルを追加</translation>
 <translation id="608189560609172163">ログイン時にエラーが発生したため、Chromium はデータを同期できませんでした。</translation>
 <translation id="6096348254544841612">Chromium をカスタマイズしてご活用ください。アップデートが利用可能です。</translation>
 <translation id="6120345080069858279">このパスワードは Google アカウントに保存されるため、覚えておく必要はありません。</translation>
@@ -161,6 +163,7 @@
 <translation id="6403826409255603130">Chromium は、ウェブページやアプリケーションを高速に実行できるスピードと、高い安定性を兼ね備えた非常に使いやすいウェブブラウザです。不正なソフトウェアやフィッシングに対する保護機能が組み込まれており、ウェブを安全にブラウジングできます。</translation>
 <translation id="6434250628340475518">Chromium OS システム</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium は 1 秒後に再起動します}other{Chromium は # 秒後に再起動します}}</translation>
+<translation id="6464340581899189425">Google アカウントを複数お持ちの場合、<ph name="DEVICE_TYPE" /> に追加できます。アカウントは Chromium ブラウザや Play ストアのほか、Gmail、ドライブ、YouTube などのサービスで使用できます。<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">この拡張機能では、Chromium の起動時に表示されるページも制御されます。</translation>
 <translation id="6510925080656968729">Chromium をアンインストール</translation>
 <translation id="6570579332384693436">スペルミスを修正するために、テキスト欄に入力したテキストが Chromium から Google に送信されます</translation>
@@ -220,6 +223,7 @@
 <translation id="7857220146454061152">今後、Chromium のアップデートを受信するには、OS X 10.11 以降が必要となります。このパソコンでは OS X 10.10 が実行されています。</translation>
 <translation id="7867198900892795913">Chromium を最新版に更新できませんでした。新しい機能とセキュリティ修正は適用されていません。</translation>
 <translation id="7898472181347242998">デバイスが最新の状態かどうか確認するには、<ph name="LINK_BEGIN" />Chromium OS の設定<ph name="LINK_END" />をご覧ください</translation>
+<translation id="7907774600618164274">Chromium OS は正しく終了しませんでした。</translation>
 <translation id="7937630085815544518">Chromium に <ph name="USER_EMAIL_ADDRESS" /> としてログインしていました。再度ログインするには同じアカウントを使用してください。</translation>
 <translation id="7975919845073681630">この Chromium はセカンダリ インストールのため、既定のブラウザには設定できません。</translation>
 <translation id="7979877361127045932">Chromium メニューで非表示</translation>
@@ -234,6 +238,7 @@
 <translation id="8417404458978023919">{0,plural, =1{1 日以内に Chromium を再起動してください}other{# 日以内に Chromium を再起動してください}}</translation>
 <translation id="8453117565092476964">インストーラ アーカイブが壊れているか無効です。Chromium をダウンロードし直してください。</translation>
 <translation id="8493179195440786826">Chromium は古いバージョンです</translation>
+<translation id="8550334526674375523">この仕事用プロファイルは個人用プロファイルとは別に管理されます。</translation>
 <translation id="8558383651099478961">保護者が Chromium の「サイト、アプリ、拡張機能の権限」をオフにしました。この <ph name="EXTENSION_TYPE_PARAMETER" /> を追加することはできません。</translation>
 <translation id="8568283329061645092">Google アカウントでログインすると、Chromium がパスワードを確認できます。</translation>
 <translation id="8586442755830160949">Copyright <ph name="YEAR" /> The Chromium Authors. All rights reserved.</translation>
@@ -250,6 +255,7 @@
 <translation id="8907580949721785412">Chromium でパスワードを表示しようとしています。続行するには、Windows のパスワードを入力してください。</translation>
 <translation id="8941642502866065432">Chromium を更新できません</translation>
 <translation id="8974095189086268230">Chromium OS は、さらに追加の<ph name="BEGIN_LINK_CROS_OSS" />オープンソース ソフトウェア<ph name="END_LINK_CROS_OSS" />によって実現しました。</translation>
+<translation id="8986207147630327271">このブラウザに仕事用プロファイルを追加し、管理者がこの仕事用プロファイルのみを管理できるようにします。</translation>
 <translation id="9019929317751753759">Chromium をより安全にご利用いただくために、<ph name="IDS_EXTENSION_WEB_STORE_TITLE" />で提供していない次の拡張機能を無効にしました。これは知らないうちに追加された可能性があります。</translation>
 <translation id="9089354809943900324">Chromium は古いバージョンです</translation>
 <translation id="9093206154853821181">{0,plural, =1{Chromium は 1 時間後に再起動されます}other{Chromium は # 時間後に再起動されます}}</translation>
@@ -257,6 +263,7 @@
 <translation id="911206726377975832">閲覧データも削除しますか?</translation>
 <translation id="9158494823179993217">システム管理者が、<ph name="TARGET_URL_HOSTNAME" /> へのアクセスに代替ブラウザを開くよう Chromium を設定しています。</translation>
 <translation id="9190841055450128916">Chromium(mDNS インバウンド)</translation>
+<translation id="9214764063801632699">Chromium OS システム</translation>
 <translation id="93478295209880648">Windows XP と Windows Vista はサポートされなくなったため、Chromium は正常に機能しない可能性があります</translation>
 <translation id="95514773681268843"><ph name="DOMAIN" /> では、このデバイスを使用する前に下記の利用規約を確認しこれに同意していただく必要があります。これらの規約は Chromium OS 利用規約を拡張、変更、制限するものではありません。</translation>
 <translation id="965162752251293939">Chromium はどなたが使用しますか?</translation>
diff --git a/chrome/app/resources/chromium_strings_km.xtb b/chrome/app/resources/chromium_strings_km.xtb
index 0d4b827..8d493d31 100644
--- a/chrome/app/resources/chromium_strings_km.xtb
+++ b/chrome/app/resources/chromium_strings_km.xtb
@@ -42,6 +42,7 @@
 <translation id="2535480412977113886">Chromium OS មិនអាចធ្វើសមកម្មទិន្នន័យរបស់អ្នកទេ ពីព្រោះព័ត៌មានគណនីលំអិតចូលរបស់អ្នកហួសសម័យហើយ។</translation>
 <translation id="2560420686485554789">Chromium ត្រូវការ​សិទ្ធិ​ចូលប្រើ​ទំហំផ្ទុក​ដើម្បីទាញយក​ឯកសារ</translation>
 <translation id="2572494885440352020">ជំនួយការ Chromium</translation>
+<translation id="2583187216237139145">អ្នកគ្រប់គ្រងកម្រងព័ត៌មានការងារអាចលុបទិន្នន័យ Chromium ទាំងឡាយ ដែលបង្កើតអំឡុងពេលប្រើកម្រងព័ត៌មាននេះ (ដូចជាការបង្កើតចំណាំ ប្រវត្តិ ពាក្យសម្ងាត់ និងការកំណត់ផ្សេងទៀត)។ <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">Chromium OS ត្រូវចាប់ផ្តើមឡើងវិញដើម្បីអនុវត្តការអាប់ដេតនេះ។</translation>
 <translation id="2615699638672665509">កុំព្យូទ័រនេះនឹងឈប់ទទួលការធ្វើបច្ចុប្បន្នភាព Chromium ពីព្រោះផ្នែករឹងរបស់វាមិនត្រូវបានគាំទ្រទៀតទេ។</translation>
 <translation id="2648074677641340862">កំហុសឆ្គងប្រព័ន្ធប្រតិបត្តិការបានកើតឡើងកំឡុងពេលតំឡើង។ សូមទាញយក Chromium ម្តងទៀត។</translation>
@@ -144,6 +145,7 @@
 <translation id="6055895534982063517">មានកំណែ Chromium ថ្មី ហើយវាលឿនជាងពេលណាទាំងអស់។</translation>
 <translation id="6063093106622310249">&amp;បើក​នៅក្នុង Chromium</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> ត្រូវ​បាន​បញ្ចូល​ទៅ Chromium</translation>
+<translation id="608006075545470555">បញ្ចូលកម្រងព័ត៌មានការងារទៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិតនេះ</translation>
 <translation id="608189560609172163">Chromium មិនអាចធ្វើសមកម្មទិន្នន័យរបស់អ្នកទេដោយសារកំហុសឆ្គងការចូល។</translation>
 <translation id="6096348254544841612">គ្រប់គ្រង និង​ប្ដូរ Chromium តាម​បំណង។ មាន​កំណែថ្មី​ហើយ។</translation>
 <translation id="6120345080069858279">Chromium នឹង​រក្សាទុក​ពាក្យ​សម្ងាត់នេះ​នៅក្នុង​គណនី Google របស់អ្នក ដូច្នេះអ្នកនឹង​មិនចាំបាច់​ចងចាំ​វាទេ។</translation>
@@ -164,6 +166,7 @@
 <translation id="6403826409255603130">Chromium គឺជាកម្មវិធីរុករកអ៊ីនធឺណិត ដែលដំណើរការគេហទំព័រ និងកម្មវិធីបានយ៉ាងរហ័សបំផុត។ វាលឿន មានស្ថេរភាព និងងាយស្រួលប្រើ។ រុករកគេហទំព័រប្រកបដោយសុវត្ថិភាពជាមួយការពារពីមេរោគ និងការលួចឆ្មក់យកទិន្នន័យដែលភ្ជាប់នៅក្នុង Chromium។</translation>
 <translation id="6434250628340475518">ប្រព័ន្ធ Chromium OS</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium នឹង​ចាប់ផ្តើម​ឡើងវិញ​ក្នុងរយៈ​ពេល 1 វិនាទី​ទៀត}other{Chromium នឹង​ចាប់ផ្តើម​ឡើងវិញ​ក្នុងរយៈ​ពេល # វិនាទី​ទៀត}}</translation>
+<translation id="6464340581899189425">ប្រសិនបើអ្នកមានគណនី Google ច្រើន អ្នកអាចបញ្ចូលគណនីទាំងនោះទៅក្នុង <ph name="DEVICE_TYPE" /> របស់អ្នក។ គណនីរបស់អ្នកនឹងអាចប្រើបាននៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិត Chromium និង Play Store ព្រមទាំងសេវាកម្មផ្សេងៗដូចជា Gmail, ថាស និង YouTube ជាដើម។<ph name="LINK_BEGIN" />ស្វែងយល់បន្ថែម<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">វាក៏គ្រប់គ្រងអ្វីដែលត្រូវបានបង្ហាញនៅលើទំព័រដែរ នៅពេលអ្នកចាប់ផ្តើម Chromium។</translation>
 <translation id="6510925080656968729">លុបការតំឡើង Chromium</translation>
 <translation id="6570579332384693436">ដើម្បី​កែ​កំហុសអក្ខរាវិរុទ្ធ​, Chromium ផ្ញើ​អក្សរ​ដែលអ្នក​វាយបញ្ចូល​នៅក្នុង​កន្លែង​បញ្ចូលអក្សរ​ទៅ Google</translation>
@@ -223,6 +226,7 @@
 <translation id="7857220146454061152">ដើម្បីទទួលបានកំណែថ្មីរបស់ Chromium ក្នុងពេលអនាគត អ្នកនឹងត្រូវការ OS X 10.11 ឬកំណែខ្ពស់ជាងនេះ។ កុំព្យូទ័រនេះកំពុងប្រើ OS X 10.10។</translation>
 <translation id="7867198900892795913">Chromium មិនអាចដំឡើងជំនាន់ទៅកំណែចុងក្រោយបំផុតបានទេ ដូច្នេះអ្នកនឹងមិនទទួល​បានមុខងារថ្មីៗ និងដោះស្រាយបញ្ហាសុវត្ថិភាពទេ។</translation>
 <translation id="7898472181347242998">ដើម្បី​មើល​ថាតើឧបករណ៍​របស់អ្នក​មានបច្ចុប្បន្នភាពឬអត់ សូម​ចូលទៅកាន់<ph name="LINK_BEGIN" />ការកំណត់ Chromium OS<ph name="LINK_END" /></translation>
+<translation id="7907774600618164274">Chromium OS មិនបានបិទត្រឹមត្រូវទេ។</translation>
 <translation id="7937630085815544518">អ្នកបានចូលទៅក្នុង Chromium ជា <ph name="USER_EMAIL_ADDRESS" />. សូមប្រើគណនីដូចគ្នាដើម្បីចូលម្តងទៀត។</translation>
 <translation id="7975919845073681630">នេះគឺជាការដំឡើេង Chromium បន្ទាប់បន្សំ ហើយវាមិនអាចធ្វើជាកម្មវិធីរុករកលំនាំដើមរបស់អ្នកបានទេ។</translation>
 <translation id="7979877361127045932">លាក់នៅក្នុងម៉ឺនុយ Chromium</translation>
@@ -237,6 +241,7 @@
 <translation id="8417404458978023919">{0,plural, =1{ចាប់ផ្ដើម Chromium ឡើងវិញ​ក្នុងរយៈពេល​មួយ​ថ្ងៃទៀត}other{ចាប់ផ្ដើម Chromium ឡើងវិញ​ក្នុងរយៈពេល # ថ្ងៃទៀត}}</translation>
 <translation id="8453117565092476964">កម្មវិធីតំឡើងបណ្ណាសារមានបញ្ហា ឬគ្មានសុពលភាព។ សូមទាញយក Google Chromium ម្តងទៀត។</translation>
 <translation id="8493179195440786826">Chromium ហួសសម័យហើយ</translation>
+<translation id="8550334526674375523">កម្រងព័ត៌មានការងារនេះគឺដាច់ដោយឡែកពីកម្រង​ព័ត៌មាន​ផ្ទាល់​ខ្លួនរបស់អ្នកទាំងស្រុង។</translation>
 <translation id="8558383651099478961">មាតាបិតា​របស់អ្នក​បានបិទ "ការអនុញ្ញាត​ឱ្យចូលប្រើ​គេហទំព័រ កម្មវិធី និង​កម្មវិធី​បន្ថែម" សម្រាប់ Chromium។ ការបញ្ចូល <ph name="EXTENSION_TYPE_PARAMETER" /> នេះ​មិនត្រូវបាន​អនុញ្ញាតទេ​។</translation>
 <translation id="8568283329061645092">Chromium អាចពិនិត្យពាក្យសម្ងាត់របស់អ្នក នៅពេលអ្នកចូល​ដោយប្រើគណនី Google របស់អ្នក</translation>
 <translation id="8586442755830160949">រក្សាសិទ្ធិគ្រប់យ៉ាងដោយផលិតករ Chromium។ រក្សាសិទ្ធិ <ph name="YEAR" />។</translation>
@@ -253,6 +258,7 @@
 <translation id="8907580949721785412">Chromium កំពុងព្យាយាមបង្ហាញពាក្យសម្ងាត់។ វាយបញ្ចូលពាក្យសម្ងាត់ Windows ដើម្បីអនុញ្ញាត។</translation>
 <translation id="8941642502866065432">មិនអាចដំឡើងជំនាន់ Chromium បានទេ</translation>
 <translation id="8974095189086268230">Chromium OS អាចបង្កើតឡើងដោយ <ph name="BEGIN_LINK_CROS_OSS" />កម្មវិធីប្រភពបើកចំហរ<ph name="END_LINK_CROS_OSS" /> បន្ថែម។</translation>
+<translation id="8986207147630327271">អ្នកកំពុងបញ្ចូលកម្រងព័ត៌មានការងារទៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិតនេះ និងផ្ដល់លទ្ធភាពឱ្យអ្នកគ្រប់គ្រងរបស់អ្នកគ្រប់គ្រងតែកម្រងព័ត៌មានការងារប៉ុណ្ណោះ។</translation>
 <translation id="9019929317751753759">ដើម្បីធ្វើឲ្យ Chromium មានសុវត្ថិភាពជាងមុន យើងបានបិទដំណើរកម្មវិធីបន្ថែមមួយចំនួនដែលមិនត្រូវបានរាយនៅក្នុង <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ហើយអាចត្រូវបានបន្ថែមដោយពុំមានការជូនដំណឹងដល់អ្នក។</translation>
 <translation id="9089354809943900324">Chromium ហួសសម័យហើយ</translation>
 <translation id="9093206154853821181">{0,plural, =1{Chromium នឹង​ចាប់ផ្ដើមឡើងវិញ​ក្នុងរយៈពេល​មួយ​ម៉ោងទៀត}other{Chromium នឹង​ចាប់ផ្ដើមឡើងវិញ​ក្នុងរយៈពេល # ម៉ោងទៀត}}</translation>
@@ -260,6 +266,7 @@
 <translation id="911206726377975832">លុបទិន្នន័យរុករករបស់អ្នកផងដែរ?</translation>
 <translation id="9158494823179993217">អ្នក​គ្រប់គ្រង​ប្រព័ន្ធ​របស់អ្នកបាន​កំណត់​រចនាសម្ព័ន្ធ Chromium ឱ្យបើក​កម្មវិធីរុករកតាម​អ៊ីនធឺណិត​ផ្សេងសម្រាប់​ចូលប្រើ <ph name="TARGET_URL_HOSTNAME" /> ។</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
+<translation id="9214764063801632699">ប្រព័ន្ធ Chromium OS</translation>
 <translation id="93478295209880648">Chromium អាច​នឹង​​ដំណើរការ​មិន​​ត្រឹមត្រូវ​ ដោយសារ​វា​មិន​អាចប្រើ​បាន​នៅលើ Windows XP ឬ Windows Vista ទៀត​ឡើយ។</translation>
 <translation id="95514773681268843"><ph name="DOMAIN" /> តម្រូវឲ្យអ្នកអាន និងទទួលលក្ខខណ្ឌសេវាកម្មខាងក្រោម មុនពេលប្រើឧបករណ៍នេះ។ លក្ខខណ្ឌនេះមិនបន្ថែម កែសម្រួល ឬកំណត់ដោយលក្ខខណ្ឌ Chromium OS ទេ។</translation>
 <translation id="965162752251293939">តើនរណា​កំពុងប្រើ Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_ko.xtb b/chrome/app/resources/chromium_strings_ko.xtb
index 93e78127..49f12419 100644
--- a/chrome/app/resources/chromium_strings_ko.xtb
+++ b/chrome/app/resources/chromium_strings_ko.xtb
@@ -42,6 +42,7 @@
 <translation id="2535480412977113886">계정의 로그인 세부정보가 오래되어 Chromium OS에서 데이터를 동기화하지 못했습니다.</translation>
 <translation id="2560420686485554789">파일을 다운로드하려면 Chromium에 저장소 액세스 권한이 있어야 합니다</translation>
 <translation id="2572494885440352020">Chromium 도우미</translation>
+<translation id="2583187216237139145">북마크, 방문 기록, 비밀번호, 기타 설정 생성 등 이 프로필을 사용하는 동안 생성된 모든 Chromium 데이터는 직장 프로필 관리자가 삭제할 수 있습니다. <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">업데이트를 적용하려면 Chromium OS를 다시 시작해야 합니다.</translation>
 <translation id="2615699638672665509">이 컴퓨터의 하드웨어가 더 이상 지원되지 않으므로 Chromium 업데이트가 곧 중단됩니다.</translation>
 <translation id="2648074677641340862">설치 중 운영체제 오류가 발생했습니다. Chromium을 다시 다운로드하세요.</translation>
@@ -143,6 +144,7 @@
 <translation id="6055895534982063517">이전보다 더 빨라진 Chromium 새 버전을 사용할 수 있습니다.</translation>
 <translation id="6063093106622310249">&amp;Chromium에서 열기</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" />이(가) Chromium에 추가됨</translation>
+<translation id="608006075545470555">이 브라우저에 직장 프로필 추가</translation>
 <translation id="608189560609172163">로그인 중 오류가 발생하여 Chromium에서 데이터를 동기화하지 못했습니다.</translation>
 <translation id="6096348254544841612">Chromium을 맞춤설정하고 제어하세요. 업데이트가 출시되었습니다.</translation>
 <translation id="6120345080069858279">Chromium에서 내 Google 계정에 이 비밀번호를 저장하므로 기억하지 않아도 됩니다.</translation>
@@ -163,6 +165,7 @@
 <translation id="6403826409255603130">Chromium은 빠른 속도로 웹페이지와 애플리케이션을 실행하는 웹 브라우저입니다. 빠르고 안정적이며 사용하기에 편리합니다. Chromium에 내장된 멀웨어 및 악성 코드 방지 기능을 사용하여 더욱 안전하게 웹을 검색하세요.</translation>
 <translation id="6434250628340475518">Chromium OS 시스템</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{1초 후에 Chromium이 다시 시작됩니다}other{#초 후에 Chromium이 다시 시작됩니다}}</translation>
+<translation id="6464340581899189425">Google 계정이 여러 개인 경우 <ph name="DEVICE_TYPE" />에 추가할 수 있습니다. Gmail, 드라이브, YouTube 같은 서비스와 Chromium 브라우저, Play Store에서 계정을 사용할 수 있습니다.<ph name="LINK_BEGIN" />자세히 알아보기<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">또한 Chromium을 시작할 때 표시되는 페이지를 설정합니다.</translation>
 <translation id="6510925080656968729">Chromium 설치 제거</translation>
 <translation id="6570579332384693436">맞춤법 오류를 수정하기 위해 Chromium에서 사용자가 입력하는 텍스트를 Google로 전송합니다.</translation>
@@ -222,6 +225,7 @@
 <translation id="7857220146454061152">향후 Chromium 업데이트를 받으려면 OS X 10.11 이상이 필요합니다. 이 컴퓨터에서는 OS X 10.10을 사용하고 있습니다.</translation>
 <translation id="7867198900892795913">Chromium을 최신 버전으로 업데이트하지 못했기 때문에 새로운 기능과 보안 수정 사항이 적용되지 않았습니다.</translation>
 <translation id="7898472181347242998">기기가 최신 버전인지 확인하려면 <ph name="LINK_BEGIN" />Chromium OS 설정<ph name="LINK_END" />으로 이동하세요.</translation>
+<translation id="7907774600618164274">Chromium OS가 제대로 종료되지 않았습니다.</translation>
 <translation id="7937630085815544518"><ph name="USER_EMAIL_ADDRESS" />(으)로 Chromium에 로그인되어 있습니다. 같은 계정으로 다시 로그인해 주세요.</translation>
 <translation id="7975919845073681630">Chromium의 보조 설치이며 기본 브라우저로 설정할 수 없습니다.</translation>
 <translation id="7979877361127045932">Chromium 메뉴에서 숨기기</translation>
@@ -236,6 +240,7 @@
 <translation id="8417404458978023919">{0,plural, =1{1일 이내로 Chromium을 다시 시작해 주세요}other{#일 이내로 Chromium을 다시 시작해 주세요}}</translation>
 <translation id="8453117565092476964">설치 프로그램 아카이브가 손상되었거나 잘못되었습니다. Chromium을 다시 다운로드하세요.</translation>
 <translation id="8493179195440786826">Chromium이 이전 버전임</translation>
+<translation id="8550334526674375523">이 직장 프로필은 개인 프로필과 완전히 분리됩니다.</translation>
 <translation id="8558383651099478961">부모님이 Chromium의 ‘사이트, 앱, 확장 프로그램에 대한 권한’을 사용 중지하셨습니다. 이 <ph name="EXTENSION_TYPE_PARAMETER" /> 추가가 허용되지 않습니다.</translation>
 <translation id="8568283329061645092">Google 계정으로 로그인하면 Chromium에서 비밀번호를 확인할 수 있습니다.</translation>
 <translation id="8586442755830160949">Copyright <ph name="YEAR" /> The Chromium Authors. All rights reserved.</translation>
@@ -252,6 +257,7 @@
 <translation id="8907580949721785412">Chromium에서 비밀번호를 표시하려고 합니다. 허용하려면 Windows 비밀번호를 입력하세요.</translation>
 <translation id="8941642502866065432">Chromium을 업데이트하지 못함</translation>
 <translation id="8974095189086268230">Chrome OS는 추가 <ph name="BEGIN_LINK_CROS_OSS" />오픈소스 소프트웨어<ph name="END_LINK_CROS_OSS" />를 사용했습니다.</translation>
+<translation id="8986207147630327271">직장 프로필을 이 브라우저에 추가하고 직장 프로필 제어 권한을 관리자에게 부여합니다.</translation>
 <translation id="9019929317751753759">Google에서는 Chromium의 보안을 강화하기 위해 <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />에 표시되지 않고 사용자가 모르게 추가되었을 수 있는 다음 확장 프로그램의 사용을 중지했습니다.</translation>
 <translation id="9089354809943900324">Chromium이 이전 버전임</translation>
 <translation id="9093206154853821181">{0,plural, =1{1시간 후 Chromium이 다시 시작됩니다}other{#시간 후 Chromium이 다시 시작됩니다}}</translation>
@@ -259,6 +265,7 @@
 <translation id="911206726377975832">인터넷 사용 기록도 삭제하시겠습니까?</translation>
 <translation id="9158494823179993217">시스템 관리자가 <ph name="TARGET_URL_HOSTNAME" /> 액세스를 위해 대체 브라우저를 열도록 Chromium을 구성했습니다.</translation>
 <translation id="9190841055450128916">Chromium(mDNS-In)</translation>
+<translation id="9214764063801632699">Chromium OS 시스템</translation>
 <translation id="93478295209880648">Windows XP 또는 Windows Vista에서 더 이상 Chromium을 지원하지 않으므로 Chromium이 올바르게 작동하지 않을 수 있습니다</translation>
 <translation id="95514773681268843">이 기기를 사용하기 전에 <ph name="DOMAIN" />에서 다음 서비스 약관을 읽고 동의해야 합니다. 이 약관은 Chromium OS 약관을 확장, 수정 또는 제한하지 않습니다.</translation>
 <translation id="965162752251293939">Chromium 사용자 선택</translation>
diff --git a/chrome/app/resources/chromium_strings_lt.xtb b/chrome/app/resources/chromium_strings_lt.xtb
index 0870198..ad27e34 100644
--- a/chrome/app/resources/chromium_strings_lt.xtb
+++ b/chrome/app/resources/chromium_strings_lt.xtb
@@ -42,6 +42,7 @@
 <translation id="2535480412977113886">„Chromium“ OS negali sinchronizuoti duomenų, nes paskyros išsami prisijungimo informacija yra pasenusi.</translation>
 <translation id="2560420686485554789">„Chromium“ reikia prieigos prie saugyklos, kad būtų galima atsisiųsti failus</translation>
 <translation id="2572494885440352020">„Chromium“ pagalbos priemonė</translation>
+<translation id="2583187216237139145">Visus „Chromium“ duomenis, sugeneruotus naudojant šį profilį (pvz., sukurtas žymes, istoriją, slaptažodžius ir kitus nustatymus), gali pašalinti darbo profilio administratorius. <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">Kad būtų galima pritaikyti naujinį, „Chromium“ OS reikia paleisti iš naujo.</translation>
 <translation id="2615699638672665509">Šiame kompiuteryje netrukus nebebus gaunami „Chromium“ naujiniai, nes jo aparatinė įranga nebepalaikoma.</translation>
 <translation id="2648074677641340862">Diegiant įvyko operacinės sistemos klaida. Atsisiųskite „Chromium“ dar kartą.</translation>
@@ -143,6 +144,7 @@
 <translation id="6055895534982063517">Pasiekiama nauja „Chromium“ versija, kuri greitesnė nei bet kada.</translation>
 <translation id="6063093106622310249">&amp;Atidaryti naudojant „Chromium“</translation>
 <translation id="6072279588547424923">„<ph name="EXTENSION_NAME" />“ pridėtas prie „Chromium“</translation>
+<translation id="608006075545470555">Darbo profilio pridėjimas prie šios naršyklės</translation>
 <translation id="608189560609172163">„Chromium“ negali sinchronizuoti duomenų, nes prisijungiant įvyko klaida.</translation>
 <translation id="6096348254544841612">Tinkinkite ir valdykite „Chromium“. Pasiekiamas naujinys.</translation>
 <translation id="6120345080069858279">„Chromium“ išsaugos šį slaptažodį „Google“ paskyroje. Jums nereikia jo prisiminti.</translation>
@@ -163,6 +165,7 @@
 <translation id="6403826409255603130">„Chromium“ – tai žiniatinklio naršyklė, kurią naudojant akimirksniu paleidžiami tinklalapiai ir programos. Ji greita, stabili ir lengvai naudojama. Saugiau naršykite žiniatinklį naudodami į „Chromium“ integruotą apsaugą nuo kenkėjiškų programų ir sukčiavimo.</translation>
 <translation id="6434250628340475518">„Chromium“ OS sistema</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{„Chromium“ bus paleista iš naujo po 1 sekundės}one{„Chromium“ bus paleista iš naujo po # sekundės}few{„Chromium“ bus paleista iš naujo po # sekundžių}many{„Chromium“ bus paleista iš naujo po # sekundės}other{„Chromium“ bus paleista iš naujo po # sekundžių}}</translation>
+<translation id="6464340581899189425">Jei turite kelias „Google“ paskyras, galite pridėti jas prie „<ph name="DEVICE_TYPE" />“. Paskyros bus pasiekiamos „Chromium“ naršyklėje ir „Play“ parduotuvėje bei naudojant tokias paslaugas kaip „Gmail“, Diską ir „YouTube“. <ph name="LINK_BEGIN" />Sužinokite daugiau<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">Ji taip pat kontroliuoja, koks puslapis rodomas, kai paleidžiate „Chromium“.</translation>
 <translation id="6510925080656968729">Pašalinti „Chromium“</translation>
 <translation id="6570579332384693436">Kad ištaisytų rašybos klaidas, „Chromium“ siunčia „Google“ tekstą, kurį įvedate teksto laukuose</translation>
@@ -222,6 +225,7 @@
 <translation id="7857220146454061152">Jei norite gauti būsimus „Chromium“ atnaujinimus, jums reikės 10.11 ar naujesnės „OS X“ versijos. Šiame kompiuteryje naudojama 10.10 versijos „OS X“.</translation>
 <translation id="7867198900892795913">Nepavyko atnaujinti „Chromium“ į naujausią versiją, todėl nebus pasiekiamos naujos funkcijos ir saugos pataisos.</translation>
 <translation id="7898472181347242998">Norėdami sužinoti, ar įrenginys atnaujintas, eikite į <ph name="LINK_BEGIN" />„Chromium“ OS nustatymus<ph name="LINK_END" /></translation>
+<translation id="7907774600618164274">„Chromium“ OS netinkamai išsijungė.</translation>
 <translation id="7937630085815544518">Buvote prisijungę prie „Chromium“ kaip <ph name="USER_EMAIL_ADDRESS" />. Prisijungdami vėl naudokite tą pačią paskyrą.</translation>
 <translation id="7975919845073681630">Tai yra antrinis „Chromium“ diegimas, todėl ji negali būti nustatyta kaip numatytoji naršyklė.</translation>
 <translation id="7979877361127045932">Paslėpti „Chromium“ meniu elementą</translation>
@@ -236,6 +240,7 @@
 <translation id="8417404458978023919">{0,plural, =1{„Chromium“ paleidimas iš naujo po dienos}one{„Chromium“ paleidimas iš naujo po # dienos}few{„Chromium“ paleidimas iš naujo po # dienų}many{„Chromium“ paleidimas iš naujo po # dienos}other{„Chromium“ paleidimas iš naujo po # dienų}}</translation>
 <translation id="8453117565092476964">Diegimo programos archyvas sugadintas arba negalioja. Atsisiųskite „Chromium“ dar kartą.</translation>
 <translation id="8493179195440786826">„Chromium“ versija yra pasenusi</translation>
+<translation id="8550334526674375523">Šis darbo profilis visiškai atskirtas nuo jūsų asmeninio profilio.</translation>
 <translation id="8558383651099478961">Jūsų tėvai išjungė svetainių, programų ir plėtinių leidimus sistemoje „Chromium“. Neleidžiama pridėti šio <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8568283329061645092">„Chromium“ gali tikrinti jūsų slaptažodžius, kai prisijungiate naudodami „Google“ paskyrą</translation>
 <translation id="8586442755830160949">Autorių teisės priklauso „Chromium“ autoriams, <ph name="YEAR" /> m. Visos teisės saugomos.</translation>
@@ -252,6 +257,7 @@
 <translation id="8907580949721785412">„Chromium“ bando rodyti slaptažodžius. Įveskite „Windows“ slaptažodį, kad tai leistumėte.</translation>
 <translation id="8941642502866065432">Nepavyko atnaujinti „Chromium“</translation>
 <translation id="8974095189086268230">„Chrome“ OS pasiekiama naudojant papildomą <ph name="BEGIN_LINK_CROS_OSS" />atvirojo šaltinio programinę įrangą<ph name="END_LINK_CROS_OSS" />.</translation>
+<translation id="8986207147630327271">Pridedate darbo profilį prie šios naršyklės ir suteikiate administratoriui teisę valdyti tik darbo profilį.</translation>
 <translation id="9019929317751753759">Kad „Chromium“ būtų saugesnė, išjungėme toliau nurodytą plėtinį, kuris nepateiktas <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> sąraše ir tikriausiai buvo pridėtas be jūsų žinios.</translation>
 <translation id="9089354809943900324">„Chromium“ versija yra pasenusi</translation>
 <translation id="9093206154853821181">{0,plural, =1{„Chromium“ bus paleista iš naujo po valandos}one{„Chromium“ bus paleista iš naujo po # valandos}few{„Chromium“ bus paleista iš naujo po # valandų}many{„Chromium“ bus paleista iš naujo po # valandos}other{„Chromium“ bus paleista iš naujo po # valandų}}</translation>
@@ -259,6 +265,7 @@
 <translation id="911206726377975832">Ar ištrinti naršymo duomenis?</translation>
 <translation id="9158494823179993217">Sistemos administratorius sukonfigūravo „Chromium“ atidaryti alternatyvią naršyklę, kad būtų galima pasiekti <ph name="TARGET_URL_HOSTNAME" />.</translation>
 <translation id="9190841055450128916">„Chromium“ (mDNS-In)</translation>
+<translation id="9214764063801632699">„Chromium“ OS sistema</translation>
 <translation id="93478295209880648">„Chromium“ gali tinkamai neveikti, nes ji nebepalaikoma naudojant „Windows XP“ arba „Windows Vista“</translation>
 <translation id="95514773681268843"><ph name="DOMAIN" /> reikia, kad prieš naudodami šį įrenginį perskaitytumėte toliau pateiktas paslaugų teikimo sąlygas. Šios sąlygos neišplečia, nepakeičia ir neapriboja „Chromium“ OS sąlygų.</translation>
 <translation id="965162752251293939">Kas naudoja „Chromium“?</translation>
diff --git a/chrome/app/resources/chromium_strings_ml.xtb b/chrome/app/resources/chromium_strings_ml.xtb
index 9c64dfd..fcdc628 100644
--- a/chrome/app/resources/chromium_strings_ml.xtb
+++ b/chrome/app/resources/chromium_strings_ml.xtb
@@ -42,6 +42,7 @@
 <translation id="2535480412977113886">നിങ്ങളുടെ അക്കൗണ്ടിന്റെ സൈൻ ഇൻ വിശദാംശങ്ങൾ കാലഹരണപ്പെട്ടതിനാൽ Chromium OS-ന് നിങ്ങളുടെ ഡാറ്റ സമന്വയിപ്പിക്കാനായില്ല.</translation>
 <translation id="2560420686485554789">ഫയലുകൾ ഡൗൺലോഡ് ചെയ്യാൻ Chromium-ത്തിന് സ്റ്റോറേജ് ആക്‌സസ് ആവശ്യമാണ്</translation>
 <translation id="2572494885440352020">Chromium ഹെൽപ്പർ</translation>
+<translation id="2583187216237139145">ഈ പ്രൊഫൈലിന്റെ ഉപയോഗത്തിനിടയിൽ ഉണ്ടായ ഏത് Chromium ഡാറ്റയും (ബുക്ക്‌മാർക്കുകൾ, ചരിത്രം, പാസ്‌വേഡുകൾ, മറ്റ് ക്രമീകരണം എന്നിവ സൃഷ്ടിക്കൽ പോലുള്ളവ) ഔദ്യോഗിക പ്രൊഫൈൽ അഡ്മിന് നീക്കം ചെയ്യാനാകും. <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">അപ്‌ഡേറ്റ് ബാധകമാക്കാൻ Chromium OS പുനരാരംഭിക്കേണ്ടതുണ്ട്.</translation>
 <translation id="2615699638672665509">ഈ കമ്പ്യൂട്ടറിന്റെ ഹാർഡ്‌വെയർ ഇപ്പോൾ പിന്തുണയ്‌ക്കാത്തതിനാൽ Chromium അപ്‌ഡേറ്റുകൾ ലഭിക്കുന്നത് ഉടൻ അവസാനിപ്പിക്കും.</translation>
 <translation id="2648074677641340862">ഇൻസ്റ്റാൾ ചെയ്യുന്നതിനിടെ ഒരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റം പിശക് സംഭവിച്ചു. Chromium വീണ്ടും ഡൗൺലോഡ് ചെയ്യുക.</translation>
@@ -143,6 +144,7 @@
 <translation id="6055895534982063517">Chromium-ത്തിന്റെ പുതിയ പതിപ്പ് ലഭ്യമാണ്, അത് എന്നത്തേതിലും വേഗതയേറിയതാണ്.</translation>
 <translation id="6063093106622310249">&amp;Chromium-ത്തിൽ തുറക്കുക</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> Chromium-ത്തിലേക്ക് ചേർത്തു</translation>
+<translation id="608006075545470555">ഈ ബ്രൗസറിലേക്ക് ഔദ്യോഗിക പ്രൊഫൈൽ ചേർക്കുക</translation>
 <translation id="608189560609172163">സൈൻ ഇൻ ചെയ്യുന്നതിലെ പിശകിനാൽ Chromium-ന് നിങ്ങളുടെ ഡാറ്റ സമന്വയിപ്പിക്കാനായില്ല.</translation>
 <translation id="6096348254544841612">Chromium ഇഷ്ടാനുസൃതമാക്കി നിയന്ത്രിക്കുക. അപ്‌ഡേറ്റ് ലഭ്യമാണ്.</translation>
 <translation id="6120345080069858279">നിങ്ങളുടെ Google അക്കൗണ്ടിൽ Chromium ഈ പാസ്‌വേഡ് സംരക്ഷിക്കും. നിങ്ങൾ അത് ഓർത്ത് വയ്ക്കേണ്ടതില്ല.</translation>
@@ -163,6 +165,7 @@
 <translation id="6403826409255603130">മിന്നൽ വേഗത്തിൽ വെബ്‌പേജുകളും അപ്ലിക്കേഷനുകളും പ്രവർത്തിപ്പിക്കുന്ന ഒരു വെബ് ബ്രൗസറാണ് Chromium. ഇത് വേഗതയുള്ളതും സ്ഥിരതയാർന്നതും ഉപയോഗിക്കാൻ എളുപ്പമുള്ളതുമാണ്. Chromium-ൽ അന്തർനിർമ്മിതമായ മാൽവേർ, ഫിഷിംഗ് എന്നിവയ്‌ക്കെതിരായുള്ള പരിരക്ഷയോടൊപ്പം കൂടുതൽ സുരക്ഷിതമായി വെബ് ബ്രൗസ് ചെയ്യുക.</translation>
 <translation id="6434250628340475518">Chromium OS സിസ്‌റ്റം</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ഒരു സെക്കൻഡിൽ പുനഃരാരംഭിക്കും}other{Chromium # സെക്കൻഡിൽ പുനഃരാരംഭിക്കും}}</translation>
+<translation id="6464340581899189425">നിങ്ങൾക്ക് ഒന്നിലധികം Google അക്കൗണ്ടുകൾ ഉണ്ടെങ്കിൽ, അവ നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> എന്നതിലേക്ക് ചേർക്കാൻ കഴിയും. നിങ്ങളുടെ അക്കൗണ്ടുകൾ Chromium ബ്രൗസറിലും Play സ്റ്റോറിലും Gmail, Drive, YouTube പോലുള്ള സേവനങ്ങളിലും ലഭ്യമാകും.<ph name="LINK_BEGIN" />കൂടുതലറിയുക<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">നിങ്ങൾ Chromium ആരംഭിക്കുമ്പോൾ ദൃശ്യമാകുന്ന പേജും അത് നിയന്ത്രിയ്ക്കും.</translation>
 <translation id="6510925080656968729">Chromium അൺഇൻസ്റ്റാൾ ചെയ്യുക</translation>
 <translation id="6570579332384693436">അക്ഷരപ്പിശകുകൾ പരിഹരിക്കാൻ, ടെക്‌സ്‌റ്റ് ഫീൽഡുകളിൽ നിങ്ങൾ ടൈപ്പ് ചെയ്യുന്ന ടെക്‌സ്‌റ്റ് Chromium, Google-ന് അയയ്ക്കുന്നു</translation>
@@ -222,6 +225,7 @@
 <translation id="7857220146454061152">ഭാവിയിലെ Chromium അപ്‌ഡേറ്റുകൾ ലഭിക്കാൻ, നിങ്ങൾക്ക് OS X 10.11 അല്ലെങ്കിൽ അതിനുശേഷമുള്ള പതിപ്പ് ആവശ്യമാണ്. ഈ കമ്പ്യൂട്ടർ OS X 10.10 ഉപയോഗിക്കുന്നു.</translation>
 <translation id="7867198900892795913">ഏറ്റവും പുതിയ പതിപ്പിലേക്ക് Chromium അപ്‌ഡേറ്റ് ചെയ്യാനായില്ല, അതിനാൽ പുതിയ ഫീച്ചറുകളും സുരക്ഷാ പരിഹാരങ്ങളും നിങ്ങൾക്ക് ലഭിക്കുന്നില്ല.</translation>
 <translation id="7898472181347242998">നിങ്ങളുടെ ഉപകരണം അപ് ടു ഡേറ്റ് ആണോയെന്ന് കാണാൻ <ph name="LINK_BEGIN" />Chromium OS ക്രമീകരണത്തിലേക്ക്<ph name="LINK_END" /> പോവുക</translation>
+<translation id="7907774600618164274">Chromium OS ശരിയായി ഷട്ട്ഡൗൺ ചെയ്‌തിട്ടില്ല.</translation>
 <translation id="7937630085815544518">Chromium-ൽ നിങ്ങൾ <ph name="USER_EMAIL_ADDRESS" /> എന്നായി സൈൻ ഇൻ ചെയ്‌തു. വീണ്ടും സൈൻ ഇൻ ചെയ്യുന്നതിന് സമാന അക്കൗണ്ട് ഉപയോഗിക്കുക.</translation>
 <translation id="7975919845073681630">ഇത് Chromium-ത്തിന്റെ ദ്വിതീയ ഇൻസ്‌റ്റലേഷനായതിനാൽ, നിങ്ങളുടെ ഡിഫോൾട്ട് ബ്രൗസറാക്കാൻ കഴിയില്ല.</translation>
 <translation id="7979877361127045932">Chromium മെനുവിൽ മറയ്‌ക്കുക</translation>
@@ -236,6 +240,7 @@
 <translation id="8417404458978023919">{0,plural, =1{ഒരു ദിവസത്തിനുള്ളിൽ Chromium വീണ്ടും സമാരംഭിക്കുക}other{# ദിവസത്തിനുള്ളിൽ Chromium വീണ്ടും സമാരംഭിക്കുക}}</translation>
 <translation id="8453117565092476964">ഇൻസ്റ്റാളർ ആർക്കൈവ് കേടായതാണ് അല്ലെങ്കിൽ അസാധുവാണ്. Chromium വീണ്ടും ഡൗൺലോഡ് ചെയ്യുക.</translation>
 <translation id="8493179195440786826">Chromium കാലഹരണപ്പെട്ടു</translation>
+<translation id="8550334526674375523">ഈ ഔദ്യോഗിക പ്രൊഫൈൽ നിങ്ങളുടെ വ്യക്തിപരമായ പ്രൊഫൈലിൽ നിന്ന് തികച്ചും വ്യത്യസ്തമാണ്.</translation>
 <translation id="8558383651099478961">നിങ്ങളുടെ രക്ഷിതാവ് Chromium-നുള്ള "സൈറ്റുകൾക്കും ആപ്പുകൾക്കും വിപുലീകരണങ്ങൾക്കുമുള്ള അനുമതികൾ" ഓഫാക്കി. ഈ <ph name="EXTENSION_TYPE_PARAMETER" /> ചേർക്കുന്നത് അനുവദനീയമല്ല.</translation>
 <translation id="8568283329061645092">Google അക്കൗണ്ട് ഉപയോഗിച്ച് സൈൻ ഇൻ ചെയ്യുമ്പോൾ Chromium-ന് നിങ്ങളുടെ പാസ്‌വേഡുകൾ പരിശോധിക്കാനാവും</translation>
 <translation id="8586442755830160949">പകർപ്പവകാശം <ph name="YEAR" /> Chromium രചയിതാക്കൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്‌തം.</translation>
@@ -252,6 +257,7 @@
 <translation id="8907580949721785412">Chromium പാസ്‌വേഡുകൾ ദൃശ്യമാക്കാൻ ശ്രമിക്കുന്നു. ഇത് അനുവദിക്കാൻ നിങ്ങളുടെ Windows പാസ്‌വേഡ് നൽകുക.</translation>
 <translation id="8941642502866065432">Chromium അപ്‌ഡേറ്റ് ചെയ്യാനാകില്ല</translation>
 <translation id="8974095189086268230">Chromium OS നിർമ്മിച്ചത് കൂടുതൽ <ph name="BEGIN_LINK_CROS_OSS" />ഓപ്പൺ സോഴ്‌സ് സോഫ്റ്റ്‌വെയർ<ph name="END_LINK_CROS_OSS" /> ഉപയോഗിച്ചാകാം.</translation>
+<translation id="8986207147630327271">നിങ്ങൾ ഈ ബ്രൗസറിലേക്ക് ഒരു ഔദ്യോഗിക പ്രൊഫൈൽ ചേർക്കുകയും നിങ്ങളുടെ അഡ്മിന് ഔദ്യോഗിക പ്രൊഫൈലിലേക്ക് മാത്രം നിയന്ത്രണം നൽകുകയും ചെയ്യുന്നു.</translation>
 <translation id="9019929317751753759">Chromium സുരക്ഷിതമാക്കാൻ, <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> എന്നതിൽ ലിസ്റ്റ് ചെയ്യാത്ത ഇനിപ്പറയുന്ന വിപുലീകരണം ഞങ്ങൾ പ്രവർത്തനരഹിതമാക്കി, അവ നിങ്ങളുടെ അറിവില്ലാതെ ചേർത്തിരിക്കാനിടയുണ്ട്.</translation>
 <translation id="9089354809943900324">Chromium കാലഹരണപ്പെട്ടു</translation>
 <translation id="9093206154853821181">{0,plural, =1{ഒരു മണിക്കൂറിൽ Chromium വീണ്ടും സമാരംഭിക്കും}other{# മണിക്കൂറിൽ Chromium വീണ്ടും സമാരംഭിക്കും}}</translation>
@@ -259,6 +265,7 @@
 <translation id="911206726377975832">നിങ്ങളുടെ ബ്രൗസിംഗ് ഡാറ്റയും ഇതോടൊപ്പം ഇല്ലാതാക്കണോ?</translation>
 <translation id="9158494823179993217"><ph name="TARGET_URL_HOSTNAME" /> ആക്‌സസ് ചെയ്യാൻ ഇതര ബ്രൗസർ തുറക്കുന്നതിനായി നിങ്ങളുടെ സിസ്‌റ്റം അഡ്‌മിൻ Chromium കോൺഫിഗർ ചെയ്‌തു.</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
+<translation id="9214764063801632699">Chromium OS സിസ്‌റ്റം</translation>
 <translation id="93478295209880648">ഇനിയങ്ങോട്ട് Windows XP-യും Windows Vista-യും പിന്തുണയ്‌ക്കാത്തതിനാൽ Chromium ശരിയായി പ്രവർത്തിച്ചേക്കില്ല</translation>
 <translation id="95514773681268843">ഈ ഉപകരണം ഉപയോഗിക്കുന്നതിന് മുമ്പ് നിങ്ങൾ ഇനിപ്പറയുന്ന സേവന നിബന്ധനകൾ വായിച്ച് അംഗീകരിക്കണമെന്ന് <ph name="DOMAIN" /> ആവശ്യപ്പെടുന്നു. Chromium OS നിബന്ധനകൾ വിപുലീകരിക്കുകയോ പരിഷ്‌കരിക്കുകയോ പരിമിതപ്പെടുത്തുകയോ ചെയ്യരുത്.</translation>
 <translation id="965162752251293939">ആരൊക്കെയാണ് Chromium ഉപയോഗിക്കുന്നത്?</translation>
diff --git a/chrome/app/resources/chromium_strings_pl.xtb b/chrome/app/resources/chromium_strings_pl.xtb
index 080d703..26de63f 100644
--- a/chrome/app/resources/chromium_strings_pl.xtb
+++ b/chrome/app/resources/chromium_strings_pl.xtb
@@ -40,6 +40,7 @@
 <translation id="2535480412977113886">System operacyjny Chromium nie może zsynchronizować danych, ponieważ dane logowania na Twoje konto są nieaktualne.</translation>
 <translation id="2560420686485554789">Chromium musi mieć dostęp do pamięci, by pobierać pliki</translation>
 <translation id="2572494885440352020">Pomoc Chromium</translation>
+<translation id="2583187216237139145">Wszystkie dane Chromium wygenerowane podczas używania tego profilu (takie jak zakładki, historia, hasła i inne ustawienia) mogą zostać usunięte przez administratora profilu służbowego. <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">Zastosowanie aktualizacji wymaga ponownego uruchomienia systemu operacyjnego Chromium.</translation>
 <translation id="2615699638672665509">Ten komputer wkrótce przestanie otrzymywać aktualizacje Chromium, ponieważ zawiera sprzęt, który nie jest już obsługiwany.</translation>
 <translation id="2648074677641340862">Podczas instalacji wystąpił błąd systemu operacyjnego. Pobierz Chromium ponownie.</translation>
@@ -139,6 +140,7 @@
 <translation id="6055895534982063517">Dostępna jest nowa, szybsza niż kiedykolwiek wersja Chromium.</translation>
 <translation id="6063093106622310249">&amp;Otwórz w Chromium</translation>
 <translation id="6072279588547424923">Rozszerzenie <ph name="EXTENSION_NAME" /> zostało dodane do Chromium</translation>
+<translation id="608006075545470555">Dodaj profil służbowy w tej przeglądarce</translation>
 <translation id="608189560609172163">Chromium nie może zsynchronizować Twoich danych w związku z błędem logowania.</translation>
 <translation id="6096348254544841612">Dostosowywanie i kontrolowanie Chromium. Dostępna jest aktualizacja.</translation>
 <translation id="6120345080069858279">Chromium zapisze to hasło na Twoim koncie Google. Nie musisz go pamiętać.</translation>
@@ -159,6 +161,7 @@
 <translation id="6403826409255603130">Chromium to przeglądarka obsługująca strony i aplikacje z szybkością błyskawicy. Jest szybka, stabilna i łatwa w użyciu. Bezpiecznie przeglądaj internet dzięki wbudowanej w Chromium ochronie przed złośliwym oprogramowaniem i phishingiem.</translation>
 <translation id="6434250628340475518">System operacyjny Chromium</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium uruchomi się ponownie za sekundę}few{Chromium uruchomi się ponownie za # sekundy}many{Chromium uruchomi się ponownie za # sekund}other{Chromium uruchomi się ponownie za # sekundy}}</translation>
+<translation id="6464340581899189425">Jeśli masz wiele kont Google, możesz je dodać na swoim urządzeniu (<ph name="DEVICE_TYPE" />). Będą one dostępne w przeglądarce Chromium i Sklepie Play, a także w usługach Google takich jak Gmail, Dysk czy YouTube.<ph name="LINK_BEGIN" />Więcej informacji<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">Kontroluje także to, jaka strona wyświetla się po uruchomieniu Chromium.</translation>
 <translation id="6510925080656968729">Odinstaluj Chromium</translation>
 <translation id="6570579332384693436">Aby naprawić błędy pisowni, Chromium wysyła tekst wpisany w polach tekstowych do Google</translation>
@@ -217,6 +220,7 @@
 <translation id="7857220146454061152">Aby otrzymywać w przyszłości aktualizacje Chromium, musisz mieć system OS X 10.11 lub nowszy. Na komputerze jest zainstalowany system OS X 10.10.</translation>
 <translation id="7867198900892795913">Aktualizacja Chromium do najnowszej wersji nie udała się, więc nie masz dostępu do najnowszych funkcji i poprawek zabezpieczeń.</translation>
 <translation id="7898472181347242998">Aby sprawdzić, czy urządzenie jest zaktualizowane, otwórz <ph name="LINK_BEGIN" />ustawienia systemu operacyjnego Chromium<ph name="LINK_END" /></translation>
+<translation id="7907774600618164274">System operacyjny Chromium nie został poprawnie zamknięty.</translation>
 <translation id="7937630085815544518">Byłeś zalogowany w Chromium jako <ph name="USER_EMAIL_ADDRESS" />. Zaloguj się ponownie, korzystając z tego samego konta.</translation>
 <translation id="7975919845073681630">To jest druga instalacja Chromium. Nie można ustawić jej jako przeglądarki domyślnej.</translation>
 <translation id="7979877361127045932">Ukryj w menu Chromium</translation>
@@ -231,6 +235,7 @@
 <translation id="8417404458978023919">{0,plural, =1{Ponowne uruchomienie Chromium nastąpi w ciągu 1 dnia}few{Ponowne uruchomienie Chromium nastąpi w ciągu # dni}many{Ponowne uruchomienie Chromium nastąpi w ciągu # dni}other{Ponowne uruchomienie Chromium nastąpi w ciągu # dnia}}</translation>
 <translation id="8453117565092476964">Archiwum instalatora jest uszkodzone lub nieprawidłowe. Pobierz Chromium ponownie.</translation>
 <translation id="8493179195440786826">Chromium jest nieaktualny</translation>
+<translation id="8550334526674375523">Ten profil służbowy jest całkowicie oddzielony od Twojego profilu osobistego.</translation>
 <translation id="8558383651099478961">Rodzic wyłączył „Uprawnienia stron, aplikacji i rozszerzeń” dla Chromium. Dodanie elementu <ph name="EXTENSION_TYPE_PARAMETER" /> jest niedozwolone.</translation>
 <translation id="8568283329061645092">Chromium może sprawdzić Twoje hasła, gdy zalogujesz się na swoje konto Google</translation>
 <translation id="8586442755830160949">Copyright <ph name="YEAR" /> Autorzy Chromium. Wszelkie prawa zastrzeżone.</translation>
@@ -247,6 +252,7 @@
 <translation id="8907580949721785412">Chromium próbuje pokazać hasła. Podaj swoje hasło do Windows, by na to zezwolić.</translation>
 <translation id="8941642502866065432">Nie można zaktualizować Chromium</translation>
 <translation id="8974095189086268230">Stworzenie systemu operacyjnego Chromium było możliwe dzięki dodatkowym <ph name="BEGIN_LINK_CROS_OSS" />programom o otwartym kodzie źródłowym<ph name="END_LINK_CROS_OSS" />.</translation>
+<translation id="8986207147630327271">Dodajesz profil służbowy w tej przeglądarce i dajesz swojemu administratorowi kontrolę tylko nad tym profilem.</translation>
 <translation id="9019929317751753759">Aby poprawić bezpieczeństwo Chromium, wyłączyliśmy to rozszerzenie. Nie jest ono dostępne w <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> i mogło zostać dodane bez Twojej wiedzy.</translation>
 <translation id="9089354809943900324">Chromium jest nieaktualny</translation>
 <translation id="9093206154853821181">{0,plural, =1{Chromium uruchomi się ponownie za godzinę}few{Chromium uruchomi się ponownie za # godziny}many{Chromium uruchomi się ponownie za # godzin}other{Chromium uruchomi się ponownie za # godziny}}</translation>
@@ -254,6 +260,7 @@
 <translation id="911206726377975832">Czy usunąć także dane przeglądania?</translation>
 <translation id="9158494823179993217">Administrator systemu skonfigurował Chromium w taki sposób, by strona <ph name="TARGET_URL_HOSTNAME" /> otwierała się w alternatywnej przeglądarce.</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
+<translation id="9214764063801632699">System operacyjny Chromium</translation>
 <translation id="93478295209880648">Chromium może działać nieprawidłowo, bo nie jest już zgodny z Windows XP ani Windows Vista</translation>
 <translation id="95514773681268843">Domena <ph name="DOMAIN" /> wymaga, by przed korzystaniem z tego urządzenia przeczytać i zaakceptować Warunki korzystania z usługi. Nie rozszerzają, nie zmieniają ani nie ograniczają one Warunków korzystania z systemu Chromium OS.</translation>
 <translation id="965162752251293939">Kto używa Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb
index 020c529..e2b7306 100644
--- a/chrome/app/resources/chromium_strings_sl.xtb
+++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -42,6 +42,7 @@
 <translation id="2535480412977113886">Chromium OS ni mogel sinhronizirati podatkov, ker so podatki za prijavo v račun zastareli.</translation>
 <translation id="2560420686485554789">Chromium potrebuje za prenos datotek dostop do shrambe</translation>
 <translation id="2572494885440352020">Pomoč za Chromium</translation>
+<translation id="2583187216237139145">Podatke v Chromiumu, ki se ustvarijo med uporabo tega profila (na primer zaznamke, zgodovino, gesla in druge nastavitve), lahko odstrani skrbnik delovnega profila. <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">Če želite namestiti posodobitev, morate znova zagnati OS Chromium.</translation>
 <translation id="2615699638672665509">Ta računalnik bo kmalu prenehal prejemati posodobitve za Chromium, ker njegova strojna oprema ni več podprta.</translation>
 <translation id="2648074677641340862">Napaka v operacijskem sistemu med namestitvijo. Znova prenesite Chromium.</translation>
@@ -143,6 +144,7 @@
 <translation id="6055895534982063517">Na voljo je nova različica Chromiuma, ki je najhitrejša doslej.</translation>
 <translation id="6063093106622310249">&amp;Odpri v Chromiumu</translation>
 <translation id="6072279588547424923">Razširitev <ph name="EXTENSION_NAME" /> je dodana v Chromium</translation>
+<translation id="608006075545470555">Dodajanje delovnega profila v ta brskalnik</translation>
 <translation id="608189560609172163">Chromium ni mogel sinhronizirati podatkov zaradi napake pri prijavi.</translation>
 <translation id="6096348254544841612">Prilagodite in nadzirajte Chromium. Posodobitev je na voljo.</translation>
 <translation id="6120345080069858279">Chromium bo shranil to geslo v Google Računu. Ni si vam ga treba zapomniti.</translation>
@@ -163,6 +165,7 @@
 <translation id="6403826409255603130">Chromium je spletni brskalnik, ki bliskovito odpira spletne strani in izvaja aplikacije. Je hiter, stabilen in preprost za uporabo. Z vgrajeno zaščito pred zlonamerno programsko opremo in lažnim predstavljanjem je brskanje po spletu varno.</translation>
 <translation id="6434250628340475518">Sistem OS Chromium</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium se bo znova zagnal čez 1 sekundo}one{Chromium se bo znova zagnal čez # sekundo}two{Chromium se bo znova zagnal čez # sekundi}few{Chromium se bo znova zagnal čez # sekunde}other{Chromium se bo znova zagnal čez # sekund}}</translation>
+<translation id="6464340581899189425">Če imate več računov Google, jih lahko dodate v napravo <ph name="DEVICE_TYPE" />. Vaši računi bodo na voljo v brskalniku Chromium in Trgovini Play ter v storitvah, kot so Gmail, Drive in YouTube.<ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">Določa tudi, katera stran je prikazana, ko zaženete Chromium.</translation>
 <translation id="6510925080656968729">Odstranitev Chromiuma</translation>
 <translation id="6570579332384693436">Chromium zaradi odpravljanja napak pri črkovanju Googlu pošlje besedilo, ki ga vnesete v besedilna polja</translation>
@@ -222,6 +225,7 @@
 <translation id="7857220146454061152">Če želite prejemati prihodnje posodobitve Chromiuma, potrebujete OS X 10.11 ali novejšega. V tem računalniku je nameščen OS X 10.10.</translation>
 <translation id="7867198900892795913">Chromiuma ni bilo mogoče posodobiti na najnovejšo različico, zato nimate novih funkcij in varnostnih popravkov.</translation>
 <translation id="7898472181347242998">Če želite preveriti, ali je naprava posodobljena, odprite <ph name="LINK_BEGIN" />nastavitve sistema Chromium<ph name="LINK_END" /></translation>
+<translation id="7907774600618164274">Chromium OS se ni pravilno zaustavil.</translation>
 <translation id="7937630085815544518">V Chromium ste bili prijavljeni kot <ph name="USER_EMAIL_ADDRESS" />. Pri vnovični prijavi uporabite isti račun.</translation>
 <translation id="7975919845073681630">To je sekundarna namestitev Chromiuma in ga ni mogoče nastaviti kot privzeti brskalnik.</translation>
 <translation id="7979877361127045932">Skrij v meniju Chromiuma</translation>
@@ -236,6 +240,7 @@
 <translation id="8417404458978023919">{0,plural, =1{Chromium znova zaženite v enem dnevu}one{Chromium znova zaženite v # dnevu}two{Chromium znova zaženite v # dnevih}few{Chromium znova zaženite v # dnevih}other{Chromium znova zaženite v # dnevih}}</translation>
 <translation id="8453117565092476964">Arhiv namestitvenega programa je poškodovan ali neveljaven. Znova prenesite Chromium.</translation>
 <translation id="8493179195440786826">Chromium je zastarel</translation>
+<translation id="8550334526674375523">Ta delovni profil je v celoti ločen od osebnega profila.</translation>
 <translation id="8558383651099478961">Tvoj starš je izklopil »Dovoljenja za spletna mesta, aplikacije in razširitve« za Chromium. Dodajanje tega ni dovoljeno: <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8568283329061645092">Chromium lahko preveri vaša gesla, ko se prijavite z računom Google</translation>
 <translation id="8586442755830160949">Copyright <ph name="YEAR" /> Ustvarjalci Chromiuma. Vse pravice pridržane.</translation>
@@ -252,6 +257,7 @@
 <translation id="8907580949721785412">Chromium poskuša prikazati gesla. Če želite omogočiti to, vnesite geslo za Windows.</translation>
 <translation id="8941642502866065432">Chromiuma ni mogoče posodobiti</translation>
 <translation id="8974095189086268230">Sistem Chrome OS omogoča dodatna <ph name="BEGIN_LINK_CROS_OSS" />odprtokodna programska oprema<ph name="END_LINK_CROS_OSS" />.</translation>
+<translation id="8986207147630327271">V ta brskalnik dodajate delovni profil in skrbniku omogočate nadzor samo nad delovnim profilom.</translation>
 <translation id="9019929317751753759">Zaradi večje varnosti smo v Chromiumu onemogočili to razširitev, ki ni navedena tukaj in je bila morda dodana brez vaše vednosti: <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />.</translation>
 <translation id="9089354809943900324">Chromium je zastarel</translation>
 <translation id="9093206154853821181">{0,plural, =1{Chromium se bo znova zagnal čez eno uro}one{Chromium se bo znova zagnal čez # uro}two{Chromium se bo znova zagnal čez # uri}few{Chromium se bo znova zagnal čez # ure}other{Chromium se bo znova zagnal čez # ur}}</translation>
@@ -259,6 +265,7 @@
 <translation id="911206726377975832">Ali želite izbrisati tudi podatke brskanja?</translation>
 <translation id="9158494823179993217">Skrbnik sistema je Chromium nastavil tako, da za dostop do <ph name="TARGET_URL_HOSTNAME" /> odpre drug brskalnik.</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
+<translation id="9214764063801632699">Sistem Chromium OS</translation>
 <translation id="93478295209880648">Chromium morda ne bo deloval pravilno, ker ni več podprt v sistemu Windows XP ali Windows Vista</translation>
 <translation id="95514773681268843"><ph name="DOMAIN" /> zahteva, da preberete in sprejmete pogoje storitve, preden začnete uporabljati napravo. Ti pogoji ne dopolnjujejo, spreminjajo ali omejujejo pogojev za Chromium OS.</translation>
 <translation id="965162752251293939">Kdo uporablja Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_tr.xtb b/chrome/app/resources/chromium_strings_tr.xtb
index 3f12e879..757f8f2 100644
--- a/chrome/app/resources/chromium_strings_tr.xtb
+++ b/chrome/app/resources/chromium_strings_tr.xtb
@@ -40,6 +40,7 @@
 <translation id="2535480412977113886">Hesap oturum açma ayrıntılarınız güncel olmadığından Chromium OS, verilerinizi senkronize edemedi.</translation>
 <translation id="2560420686485554789">Dosya indirmek için Chromium'un depolama alanına erişmesi gerekiyor</translation>
 <translation id="2572494885440352020">Chromium Yardımcısı</translation>
+<translation id="2583187216237139145">Bu profil kullanılırken oluşturulan tüm Chromium verileri (yer işaretlerinin oluşturulması, geçmiş, şifreler ve diğer ayarlar gibi) iş profili yöneticisi tarafından kaldırılabilir. <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">Güncellemenin uygulanması için Chromium OS yeniden başlatılmalıdır.</translation>
 <translation id="2615699638672665509">Bu bilgisayarın donanımı artık desteklenmediğinden, Chromium güncellemelerini alması yakında duracak.</translation>
 <translation id="2648074677641340862">Yükleme sırasında bir işletim sistemi hatası oluştu. Lütfen Chromium'u yeniden indirin.</translation>
@@ -139,6 +140,7 @@
 <translation id="6055895534982063517">Kullanabileceğiniz yeni bir Chromium sürümü var ve bu sürüm her zamankinden daha hızlı.</translation>
 <translation id="6063093106622310249">&amp;Chromium'da aç</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> Chromium'a eklendi</translation>
+<translation id="608006075545470555">Bu tarayıcıya İş Profili ekle</translation>
 <translation id="608189560609172163">Oturum açma sırasındaki bir hata nedeniyle Chromium, verilerinizi senkronize edemedi.</translation>
 <translation id="6096348254544841612">Chromium'u özelleştirin ve kontrol edin. Güncelleme mevcut.</translation>
 <translation id="6120345080069858279">Chromium, şifrenizi Google Hesabınızda kaydedecek. Bu şekilde şifreyi hatırlamanız gerekmez.</translation>
@@ -159,6 +161,7 @@
 <translation id="6403826409255603130">Chromium, Web sayfalarını ve uygulamaları yıldırım hızıyla çalıştıran bir Web tarayıcısıdır. Hızlı ve kararlı çalışır, kolay kullanılır. Chromium'da dahili olarak bulunan zararlı yazılım ve kimlik avı koruması sayesinde Web'de daha güvenli gezinin.</translation>
 <translation id="6434250628340475518">Chromium OS Sistemi</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 saniye içinde yeniden başlatılacak}other{Chromium # saniye içinde yeniden başlatılacak}}</translation>
+<translation id="6464340581899189425">Birden fazla Google Hesabınız varsa bunları <ph name="DEVICE_TYPE" /> cihazınıza ekleyebilirsiniz. Hesaplarınız Chromium tarayıcısı ve Play Store'un yanı sıra Gmail, Drive ve YouTube gibi hizmetlerde de kullanılabilir.<ph name="LINK_BEGIN" />Daha fazla bilgi<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">Ayrıca, Chromium'u başlattığınızda gösterilecek sayfayı da denetler.</translation>
 <translation id="6510925080656968729">Chromium'u Kaldır</translation>
 <translation id="6570579332384693436">Yazım hatalarını düzeltmek için Chromium, metin alanlarına yazdığınız metinleri Google'a gönderir</translation>
@@ -218,6 +221,7 @@
 <translation id="7857220146454061152">Gelecekteki Chromium güncellemelerini almak için OS X 10.11 veya sonraki bir sürümün yüklü olması gerekir. Bu bilgisayar OS X 10.10 kullanıyor.</translation>
 <translation id="7867198900892795913">Chromium en son sürüme güncellenemediği için yeni özellikler ve güvenlik düzeltmeleri cihazınızda bulunmuyor.</translation>
 <translation id="7898472181347242998">Cihazınızın güncel olup olmadığını görmek için <ph name="LINK_BEGIN" />Chromium OS Ayarları<ph name="LINK_END" />'na gidin</translation>
+<translation id="7907774600618164274">Chromium OS düzgün bir şekilde kapatılmadı.</translation>
 <translation id="7937630085815544518">Chromium'da <ph name="USER_EMAIL_ADDRESS" /> olarak oturum açtınız. Tekrar oturum açmak için lütfen aynı hesabı kullanın.</translation>
 <translation id="7975919845073681630">Bu, Chromium'un ikincil bir yüklemesidir ve varsayılan tarayıcınız yapılamaz.</translation>
 <translation id="7979877361127045932">Chromium menüsünde gizle</translation>
@@ -232,6 +236,7 @@
 <translation id="8417404458978023919">{0,plural, =1{Chromium'u bir gün içinde yeniden başlatın}other{Chromium'u # gün içinde yeniden başlatın}}</translation>
 <translation id="8453117565092476964">Yükleyici arşivi bozuk veya geçersiz. Lütfen Chromium'u yeniden indirin.</translation>
 <translation id="8493179195440786826">Chromium Sürümü Eski</translation>
+<translation id="8550334526674375523">Bu iş profili, kişisel profilinizden tamamen ayrıdır.</translation>
 <translation id="8558383651099478961">Ebeveyniniz, Chromium'a yönelik "Siteler, uygulamalar ve uzantılar için izinler"i kapattı. Bu <ph name="EXTENSION_TYPE_PARAMETER" /> uzantısını eklemeye izin verilmiyor.</translation>
 <translation id="8568283329061645092">Chromium, Google Hesabınızla oturum açtığınızda şifrelerinizi kontrol edebilir</translation>
 <translation id="8586442755830160949">Telif Hakkı <ph name="YEAR" /> The Chromium Authors. Tüm hakları saklıdır.</translation>
@@ -248,6 +253,7 @@
 <translation id="8907580949721785412">Chromium şifreleri göstermeye çalışıyor. Buna izin vermek için Windows şifrenizi yazın.</translation>
 <translation id="8941642502866065432">Chromium güncellenemiyor</translation>
 <translation id="8974095189086268230">Chromium OS, ek <ph name="BEGIN_LINK_CROS_OSS" />açık kaynak yazılımlar<ph name="END_LINK_CROS_OSS" /> ile hazırlanmıştır.</translation>
+<translation id="8986207147630327271">Bu tarayıcıya bir iş profili ekliyor ve yöneticinize yalnızca iş profilini kontrol etme yetkisi veriyorsunuz.</translation>
 <translation id="9019929317751753759">Chromium'u daha güvenli bir hale getirmek için <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> altında listelenmeyen ve bilginiz dışında eklenmiş olabilecek aşağıdaki uzantıyı devre dışı bıraktık.</translation>
 <translation id="9089354809943900324">Chromium sürümü eski</translation>
 <translation id="9093206154853821181">{0,plural, =1{Chromium bir saat içinde yeniden başlatılacak}other{Chromium # saat içinde yeniden başlatılacak}}</translation>
@@ -255,6 +261,7 @@
 <translation id="911206726377975832">Tarama verileriniz de silinsin mi?</translation>
 <translation id="9158494823179993217">Sistem yöneticiniz, Chromium'u, <ph name="TARGET_URL_HOSTNAME" /> sitesini alternatif bir tarayıcıda açacak şekilde yapılandırmış.</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
+<translation id="9214764063801632699">Chromium OS sistemi</translation>
 <translation id="93478295209880648">Chromium artık Windows XP veya Windows Vista üzerinde desteklenmediği için doğru şekilde çalışmayabilir</translation>
 <translation id="95514773681268843"><ph name="DOMAIN" />, bu cihazı kullanmadan önce aşağıdaki Hizmet Şartları'nı okuyup kabul etmenizi gerektirmektedir. Bu şartlar, Chromium OS Şartları'nın kapsamını genişletmez, değiştirmez veya sınırlamaz.</translation>
 <translation id="965162752251293939">Chromium'u kim kullanıyor?</translation>
diff --git a/chrome/app/resources/chromium_strings_uk.xtb b/chrome/app/resources/chromium_strings_uk.xtb
index 06ad5ca..6328b2cf 100644
--- a/chrome/app/resources/chromium_strings_uk.xtb
+++ b/chrome/app/resources/chromium_strings_uk.xtb
@@ -40,6 +40,7 @@
 <translation id="2535480412977113886">ОС Chromium не вдалося синхронізувати ваші дані, оскільки дані для входу в обліковий запис застаріли.</translation>
 <translation id="2560420686485554789">Chromium потрібен доступ до пам’яті, щоб завантажувати файли</translation>
 <translation id="2572494885440352020">Помічник Chromium</translation>
+<translation id="2583187216237139145">Дані Chromium, створені під час використання цього профілю (наприклад, закладки, історія, паролі й інші налаштування), може видалити адміністратор робочого профілю. <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">Щоб застосувати це оновлення, потрібно перезапустити ОС Chromium.</translation>
 <translation id="2615699638672665509">Цей комп’ютер невдовзі перестане отримувати оновлення Chromium, оскільки його апаратне забезпечення більше не підтримується.</translation>
 <translation id="2648074677641340862">Під час встановлення сталася помилка операційної системи. Завантажте Chromium ще раз.</translation>
@@ -141,6 +142,7 @@
 <translation id="6055895534982063517">Доступна нова версія Chromium – швидша, ніж будь-коли.</translation>
 <translation id="6063093106622310249">&amp;Відкрити в Chromium</translation>
 <translation id="6072279588547424923">Розширення <ph name="EXTENSION_NAME" /> додано в Chromium</translation>
+<translation id="608006075545470555">Додати робочий профіль у цей веб-переглядач</translation>
 <translation id="608189560609172163">Chromium не вдалося синхронізувати ваші дані через помилку входу.</translation>
 <translation id="6096348254544841612">Налаштуйте й контролюйте Chromium. Доступне оновлення.</translation>
 <translation id="6120345080069858279">Chromium збереже цей пароль в обліковому записі Google. Не потрібно його запам’ятовувати.</translation>
@@ -161,6 +163,7 @@
 <translation id="6403826409255603130">Chromium – це веб-переглядач, який запускає веб-сторінки та програми з блискавичною швидкістю. Він швидкий, надійний і зручний у користуванні. Вбудований у Chromium захист від шкідливих програм і фішингу гарантує ще більшу безпеку під час перегляду веб-сторінок.</translation>
 <translation id="6434250628340475518">ОС Chromium</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium перезапуститься через 1 секунду}one{Chromium перезапуститься через # секунду}few{Chromium перезапуститься через # секунди}many{Chromium перезапуститься через # секунд}other{Chromium перезапуститься через # секунди}}</translation>
+<translation id="6464340581899189425">Якщо у вас кілька облікових записів Google, їх можна додати на <ph name="DEVICE_TYPE" />. Облікові записи будуть доступні у веб-переглядачі Chromium, Google Play і таких сервісах, як Gmail, Диск та YouTube.<ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">Також указує сторінку, яка відкривається під час запуску Chromium.</translation>
 <translation id="6510925080656968729">Видалити Chromium</translation>
 <translation id="6570579332384693436">Щоб виправляти орфографічні помилки, Chromium надсилає введений текст у Google</translation>
@@ -220,6 +223,7 @@
 <translation id="7857220146454061152">Щоб отримувати майбутні оновлення Chromium, потрібна операційна система OS X 10.11 або новішої версії. На цьому комп'ютері встановлено OS X 10.10.</translation>
 <translation id="7867198900892795913">Не вдалось оновити Chromium до останньої версії. Ви не зможете скористатися новими функціями та застосувати виправлення системи безпеки.</translation>
 <translation id="7898472181347242998">Щоб дізнатися, чи пристрій використовує актуальну версію операційної системи, перейдіть у <ph name="LINK_BEGIN" />налаштування ОС Chromium<ph name="LINK_END" /></translation>
+<translation id="7907774600618164274">ОС Chromium завершила роботу неналежним чином.</translation>
 <translation id="7937630085815544518">Ви ввійшли в Chromium як <ph name="USER_EMAIL_ADDRESS" />. Скористайтеся тим самим обліковим записом, щоб увійти знову.</translation>
 <translation id="7975919845073681630">Це додаткове встановлення Chromium. Його не можна зробити вашим веб-переглядачем за умовчанням.</translation>
 <translation id="7979877361127045932">Сховати в меню Chromium</translation>
@@ -234,6 +238,7 @@
 <translation id="8417404458978023919">{0,plural, =1{Перезапустіть Chromium упродовж дня}one{Перезапустіть Chromium упродовж # дня}few{Перезапустіть Chromium упродовж # днів}many{Перезапустіть Chromium упродовж # днів}other{Перезапустіть Chromium упродовж # дня}}</translation>
 <translation id="8453117565092476964">Архів програми встановлення пошкоджений або недійсний. Завантажте Chromium ще раз.</translation>
 <translation id="8493179195440786826">Версія Chromium застаріла</translation>
+<translation id="8550334526674375523">Цей робочий профіль не пов'язаний із вашим особистим профілем.</translation>
 <translation id="8558383651099478961">Хтось із твоїх батьків вимкнув "Дозволи для сайтів, додатків і розширень" у Chromium. Додавати це <ph name="EXTENSION_TYPE_PARAMETER" /> заборонено.</translation>
 <translation id="8568283329061645092">Chromium зможе перевірити ваші паролі, коли ви ввійдете у свій обліковий запис Google</translation>
 <translation id="8586442755830160949">Авторське право <ph name="YEAR" /> Автори Chromium. Усі права захищено.</translation>
@@ -250,6 +255,7 @@
 <translation id="8907580949721785412">Chromium намагається показати паролі. Щоб дозволити, введіть свій пароль Windows.</translation>
 <translation id="8941642502866065432">Не вдається оновити Chromium</translation>
 <translation id="8974095189086268230">ОС Chromium стала можливою завдяки додатковому <ph name="BEGIN_LINK_CROS_OSS" />програмному забезпеченню з відкритим кодом<ph name="END_LINK_CROS_OSS" />.</translation>
+<translation id="8986207147630327271">Ви додаєте робочий профіль у цей веб-переглядач і дозволяєте адміністратору керувати лише ним.</translation>
 <translation id="9019929317751753759">Щоб зробити Chromium безпечнішим, ми вимкнули наведене нижче розширення, установлене не із сайту <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> і, можливо, додане без вашого відома.</translation>
 <translation id="9089354809943900324">Версія Chromium застаріла</translation>
 <translation id="9093206154853821181">{0,plural, =1{Chromium перезапуститься через годину}one{Chromium перезапуститься через # годину}few{Chromium перезапуститься через # години}many{Chromium перезапуститься через # годин}other{Chromium перезапуститься через # години}}</translation>
@@ -257,6 +263,7 @@
 <translation id="911206726377975832">Також видалити дані веб-перегляду?</translation>
 <translation id="9158494823179993217">Ваш системний адміністратор налаштував Chromium відкривати сторінку <ph name="TARGET_URL_HOSTNAME" /> в альтернативному веб-переглядачі.</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
+<translation id="9214764063801632699">ОС Chromium</translation>
 <translation id="93478295209880648">Chromium може працювати неналежним чином, оскільки більше не підтримується у Windows XP та Windows Vista</translation>
 <translation id="95514773681268843">Перш ніж використовувати цей пристрій, потрібно прочитати й прийняти наведені нижче Загальні положення та умови для <ph name="DOMAIN" />. Ці умови не розширюють, не змінюють і не обмежують Умови використання ОС Chromium.</translation>
 <translation id="965162752251293939">Хто користується веб-переглядачем Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_ur.xtb b/chrome/app/resources/chromium_strings_ur.xtb
index d99772a..af93714 100644
--- a/chrome/app/resources/chromium_strings_ur.xtb
+++ b/chrome/app/resources/chromium_strings_ur.xtb
@@ -42,6 +42,7 @@
 <translation id="2535480412977113886">‏Chromium OS آپ کے اکاؤنٹ کی سائن ان تفصیلات پرانی ہونے کی وجہ سے آپ کے ڈیٹا کی مطابقت پذیری نہیں کر سکا۔</translation>
 <translation id="2560420686485554789">‏Chromium کو فائلیں ڈاؤن لوڈ کرنے کیلئے اسٹوریج تک رسائی درکار ہے</translation>
 <translation id="2572494885440352020">‏Chromium ہیلپر</translation>
+<translation id="2583187216237139145">‏دفتری پروفائل کا منتظم اس پروفائل کے استعمال کے دوران جنریٹ ہونے والے کسی بھی Chromium ڈیٹا (جیسے، بُک مارکس کی تخلیق، سرگزشت، پاس ورڈز اور دیگر ترتیبات) کو ہٹا سکتا ہے۔ <ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">‏اپ ڈیٹ لاگو کرنے کیلئے Chromium OS کو دوبارہ شروع کرنے کی ضرورت ہے۔</translation>
 <translation id="2615699638672665509">‏یہ کمپیوٹر جلد ہی Chromium اپ ڈيٹس کو موصول کرنا روک دے گا کیونکہ اس کا ہارڈ ویئر مزید تعاون یافتہ نہیں ہے۔</translation>
 <translation id="2648074677641340862">‏انسٹالیشن کے دوران آپریٹنگ سسٹم کی ایک خرابی پیش آ گئی۔ براہ کرم Chromium دوبارہ ڈاؤن لوڈ کریں۔</translation>
@@ -143,6 +144,7 @@
 <translation id="6055895534982063517">‏Chromium کا ایک نیا ورژن دستیاب ہے اور وہ پہلے سے کہیں زیادہ تیز ہے۔</translation>
 <translation id="6063093106622310249">‏Chromium میں &amp;کھولیں</translation>
 <translation id="6072279588547424923">‏<ph name="EXTENSION_NAME" /> کو Chromium میں شامل کر دیا گیا ہے</translation>
+<translation id="608006075545470555">اس براؤزر میں دفتری پروفائل شامل کریں</translation>
 <translation id="608189560609172163">‏Chromium سائن ان میں ایک خرابی ہونے کی وجہ سے آپ کے ڈیٹا کی مطابقت پذیری نہیں کر سکا۔</translation>
 <translation id="6096348254544841612">‏Chromium کو حسب ضروت بنائیں اور اسے کنٹرول کریں۔ اپ ڈیٹ دستیاب ہے۔</translation>
 <translation id="6120345080069858279">‏Chromium آپ کے Google اکاؤنٹ میں اس پاس ورڈ کو محفوظ کرے گا۔ آپ کو اسے یاد کرنے کی ضرورت نہیں ہے۔</translation>
@@ -163,6 +165,7 @@
 <translation id="6403826409255603130">‏Chromium ایک ایسا ویب براؤزر ہے جو ویب صفحات اور ایپلیکیشنز کو روشنی کی رفتار سے چلاتا ہے۔ Chromium میں پہلے سے شامل میلویئر اور فریب دہی تحفظ کے ساتھ ویب کو مزید محفوظ طور پر براؤز کریں۔</translation>
 <translation id="6434250628340475518">‏Chromium OS سسٹم</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{‏1 سیکنڈ میں Chromium دوبارہ شروع ہو جائے گا}other{‏# سیکنڈ میں Chromium دوبارہ شروع ہو جائے گا}}</translation>
+<translation id="6464340581899189425">‏اگر آپ کے پاس متعدد Google اکاؤنٹس ہیں تو آپ انہیں اپنے <ph name="DEVICE_TYPE" /> میں شامل کر سکتے ہیں۔ آپ کے اکاؤنٹس Chromium براؤزر اور Play اسٹور، نیز Gmail, Drive اور YouTube جیسی سروسز میں دستیاب ہوں گے۔<ph name="LINK_BEGIN" />مزید جانیں<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">‏یہ اس کو بھی کنٹرول کرتا ہے جب آپ Chromium کو اسٹارٹ کرتے ہیں تو کون سا صفحہ دکھایا جاتا ہے۔</translation>
 <translation id="6510925080656968729">‏Chromium اَن انسٹال کریں</translation>
 <translation id="6570579332384693436">‏ہجے کی غلطیاں ٹھیک کرنے کے لیے آپ ٹیکسٹ فیلڈز میں جو ٹیکسٹ ٹائپ کرتے ہیں Chromium اسے Google کو بھیجتا ہے</translation>
@@ -222,6 +225,7 @@
 <translation id="7857220146454061152">‏آئندہ کے Chromium اپ ڈیٹس حاصل کرنے کے لیے، آپ کو OS X 10.11 یا بعد کی ضرورت ہوگی۔ یہ کمپیوٹر OS X 10.10 کا استعمال کر رہا ہے۔</translation>
 <translation id="7867198900892795913">‏Chromium تازہ ترین ورژن میں اپ ڈیٹ نہیں ہو سکا اسلئے آپ نئی خصوصیات اور سیکیورٹی کی اصلاحات سے محروم ہو رہے ہیں۔</translation>
 <translation id="7898472181347242998">‏یہ دیکھنے کی لیے کہ کیا آپ کا آلہ اپ ٹو ڈیٹ ہے، <ph name="LINK_BEGIN" />Chromium OS کی ترتیبات<ph name="LINK_END" /> پر جائیں</translation>
+<translation id="7907774600618164274">‏Chromium OS صحیح طریقے سے شٹ ڈاؤن نہیں ہوا۔</translation>
 <translation id="7937630085815544518">‏آپ Chromium میں بطور <ph name="USER_EMAIL_ADDRESS" /> سائن ان تھے۔ براہ کرم دوبارہ سائن ان کرنے کیلئے وہی اکاؤنٹ استعمال کریں۔</translation>
 <translation id="7975919845073681630">‏یہ Chromium کا ثانوی انسٹالیشن ہے اور اسے آپ کا ڈیفالٹ براؤزر نہیں بنایا جا سکتا ہے۔</translation>
 <translation id="7979877361127045932">‏Chromium مینو میں مخفی کریں</translation>
@@ -236,6 +240,7 @@
 <translation id="8417404458978023919">{0,plural, =1{‏ایک دن کے اندر Chromium کو دوبارہ لانچ کریں}other{‏# دن کے اندر Chromium کو دوبارہ لانچ کریں}}</translation>
 <translation id="8453117565092476964">‏انسٹالر آرکائیو خراب یا غلط ہے۔ براہ کرم Chromium کو دوبارہ ڈاؤن لوڈ کریں۔</translation>
 <translation id="8493179195440786826">‏Chromium پرانا ہے</translation>
+<translation id="8550334526674375523">یہ دفتری پروفائل آپ کی ذاتی پروفائل سے پوری طرح علیحدہ ہے۔</translation>
 <translation id="8558383651099478961">‏آپ کے والدین نے "Chromium کی خاطر سائٹس، ایپس اور ایکسٹینشنز کے لیے اجازتوں" کو آف کر دیا ہے۔ اس <ph name="EXTENSION_TYPE_PARAMETER" /> کو شامل کرنے کی اجازت نہیں ہے۔</translation>
 <translation id="8568283329061645092">‏جب آپ اپنے Google اکاؤنٹ سے سائن ان کرتے ہیں تو Chromium آپ کے پاس ورڈز کو چیک کر سکتا ہے</translation>
 <translation id="8586442755830160949">‏کاپی رائٹ ‎<ph name="YEAR" /> The Chromium Authors۔ جملہ حقوق محفوظ۔</translation>
@@ -252,6 +257,7 @@
 <translation id="8907580949721785412">‏Chromium پاس ورڈز دکھانے کی کوشش کر رہا ہے۔ اس کی اجازت دینے کیلئے اپنا Windows کا پاس ورڈ ٹائپ کریں۔</translation>
 <translation id="8941642502866065432">‏Chromium اپ ڈیٹ نہیں ہو سکتا</translation>
 <translation id="8974095189086268230">‏Chromium OS اضافی <ph name="BEGIN_LINK_CROS_OSS" />اوپن سورس سافٹ ویئر<ph name="END_LINK_CROS_OSS" /> کے ذریعے ممکن ہو پایا ہے۔</translation>
+<translation id="8986207147630327271">آپ اس براؤزر میں ایک دفتری پروفائل شامل کر رہے ہیں اور اپنے منتظم کو صرف دفتری پروفائل پر کنٹرول فراہم کر رہے ہیں۔</translation>
 <translation id="9019929317751753759">‏Chromium کو محفوظ تر بنانے کیلئے، ہم نے مندرجہ ذیل ایکسٹینشن کو غیر فعال کر دیا ہے جو <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> میں مندرج نہیں ہے اور ممکن ہے کہ اسے آپ کے علم کے بغیر شامل کر دیا گیا ہو۔</translation>
 <translation id="9089354809943900324">‏Chromium پرانا ہے</translation>
 <translation id="9093206154853821181">{0,plural, =1{‏ایک گھنٹے میں Chromium دوبارہ لانچ ہوگا}other{‏# گھنٹے میں Chromium دوبارہ لانچ ہوگا}}</translation>
@@ -259,6 +265,7 @@
 <translation id="911206726377975832">نیز آپ کا براؤزنگ ڈیٹا حذف کریں؟</translation>
 <translation id="9158494823179993217">‏آپ کے سسٹم کے منتظم نے <ph name="TARGET_URL_HOSTNAME" /> تک رسائی حاصل کرنے کے لیے Chromium کو ایک متبادل براؤزر کھولنے کے لیے کنفیگر کیا ہے۔</translation>
 <translation id="9190841055450128916">‎Chromium (mDNS-In)‎</translation>
+<translation id="9214764063801632699">‏Chromium OS سسٹم</translation>
 <translation id="93478295209880648">‏ممکن ہے کہ Chromium ٹھیک طریقے سے کام نہ کرے کیونکہ یہ اب Windows XP یا Windows Vista پر تعاون یافتہ نہیں ہے</translation>
 <translation id="95514773681268843">‏<ph name="DOMAIN" /> تقاضہ کرتا ہے کہ آپ یہ آلہ استعمال کرنے سے پہلے مندرجہ ذیل سروس کی شرائط کو پڑھیں اور قبول کریں۔ یہ شرائط Chromium OS شرائط کی ایکسٹینشن، ان میں ترمیم یا انہیں محدود نہیں کرتی ہیں۔</translation>
 <translation id="965162752251293939">‏Chromium کون استعمال کر رہا ہے؟</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-HK.xtb b/chrome/app/resources/chromium_strings_zh-HK.xtb
index 60ebece..88ed828 100644
--- a/chrome/app/resources/chromium_strings_zh-HK.xtb
+++ b/chrome/app/resources/chromium_strings_zh-HK.xtb
@@ -42,6 +42,7 @@
 <translation id="2535480412977113886">您的帳戶登入詳細資料尚未更新,因此 Chromium 作業系統無法同步處理您的數據。</translation>
 <translation id="2560420686485554789">Chromium 需要儲存空間的存取權才能下載檔案</translation>
 <translation id="2572494885440352020">Chromium 輔助工具</translation>
+<translation id="2583187216237139145">工作設定檔管理員可移除任何在使用此設定檔時產生的 Chromium 資料 (例如建立的書籤、記錄、密碼和其他設定)。<ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">必須重新啟動 Chromium OS,才能套用更新。</translation>
 <translation id="2615699638672665509">這部電腦將不會再收到 Chromium 更新,因為我們不再支援其硬件。</translation>
 <translation id="2648074677641340862">安裝期間發生作業系統錯誤,請再次下載 Chromium。</translation>
@@ -143,6 +144,7 @@
 <translation id="6055895534982063517">新版 Chromium 現已推出,速度更勝從前。</translation>
 <translation id="6063093106622310249">在 Chromium 中開啟</translation>
 <translation id="6072279588547424923">已將 <ph name="EXTENSION_NAME" /> 加到 Chromium</translation>
+<translation id="608006075545470555">將工作設定檔新增至此瀏覽器</translation>
 <translation id="608189560609172163">登入時發生錯誤,因此 Chromium 無法同步處理您的數據。</translation>
 <translation id="6096348254544841612">自訂和管理 Chromium。有可用的更新。</translation>
 <translation id="6120345080069858279">Chromium 會將此密碼儲存在您的 Google 帳戶內,您無需記住。</translation>
@@ -163,6 +165,7 @@
 <translation id="6403826409255603130">Chromium 網絡瀏覽器可快速開啟網頁和執行應用程式。除了迅速、穩定和易於使用外,Chromium 的內置惡意軟件與網絡釣魚防護功能,可讓您安心瀏覽網絡。</translation>
 <translation id="6434250628340475518">Chromium 作業系統</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 將於 1 秒後重新啟動}other{Chromium 將於 # 秒後重新啟動}}</translation>
+<translation id="6464340581899189425">如果您有多個 Google 帳戶,可以將這些帳戶新增至您的 <ph name="DEVICE_TYPE" />,這樣就能在 Chromium 瀏覽器和 Play 商店,以及 Gmail、雲端硬碟和 YouTube 等服務中使用這些帳戶。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">這個擴充功能也會管制您啟動 Chromium 時所顯示的網頁。</translation>
 <translation id="6510925080656968729">解除安裝 Chromium</translation>
 <translation id="6570579332384693436">為修正拼字錯誤,Chromium 會將您在文字欄中輸入的文字傳送給 Google</translation>
@@ -221,6 +224,7 @@
 <translation id="7857220146454061152">如要取得日後的 Chromium 更新,您將需要 OS X 10.11 或以上版本。此電腦正在使用 OS X 10.10。</translation>
 <translation id="7867198900892795913">由於 Chromium 無法更新至最新版本,因此您無法使用最新功能和安全性修正。</translation>
 <translation id="7898472181347242998">如要查看裝置是否已更新,請前往 <ph name="LINK_BEGIN" />Chromium 作業系統設定<ph name="LINK_END" /></translation>
+<translation id="7907774600618164274">Chromium 作業系統未正確關閉。</translation>
 <translation id="7937630085815544518">您使用了 <ph name="USER_EMAIL_ADDRESS" /> 的身分登入 Chromium,請使用相同帳戶重新登入。</translation>
 <translation id="7975919845073681630">這是以並行形式安裝的第二個 Chromium,因此無法設定為您的預設瀏覽器。</translation>
 <translation id="7979877361127045932">隱藏在 Chromium 選單中</translation>
@@ -235,6 +239,7 @@
 <translation id="8417404458978023919">{0,plural, =1{請在 1 天內重新啟動 Chromium}other{請在 # 天內重新啟動 Chromium}}</translation>
 <translation id="8453117565092476964">安裝程式封存檔案已損毀或無效,請重新下載 Chromium。</translation>
 <translation id="8493179195440786826">Chromium 版本過舊</translation>
+<translation id="8550334526674375523">此工作設定檔與個人設定檔是完全分開。</translation>
 <translation id="8558383651099478961">您的家長已停用 Chromium 的「網站、應用程式和擴充程式權限」設定,因此您無法新增此<ph name="EXTENSION_TYPE_PARAMETER" />。</translation>
 <translation id="8568283329061645092">Chromium 可在您使用 Google 帳戶登入時檢查密碼</translation>
 <translation id="8586442755830160949">Copyright <ph name="YEAR" /> The Chromium Authors. 保留所有權利。</translation>
@@ -251,6 +256,7 @@
 <translation id="8907580949721785412">Chromium 現在會嘗試顯示密碼。如果您同意的話,請輸入您的 Windows 密碼。</translation>
 <translation id="8941642502866065432">無法更新 Chromium</translation>
 <translation id="8974095189086268230">Chromium 作業系統的開發有賴其他<ph name="BEGIN_LINK_CROS_OSS" />開放原始碼軟件<ph name="END_LINK_CROS_OSS" />。</translation>
+<translation id="8986207147630327271">您即將在此瀏覽器中新增工作設定檔,並只將工作設定檔的控制權授予管理員。</translation>
 <translation id="9019929317751753759">為鞏固 Chromium 的安全性,我們已將未列在 <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> 中的擴充功能停用,因為它們可能在您不知情的情況下加入瀏覽器。</translation>
 <translation id="9089354809943900324">Chromium 版本過舊</translation>
 <translation id="9093206154853821181">{0,plural, =1{Chromium 將於 1 小時後重新啟動}other{Chromium 將於 # 小時後重新啟動}}</translation>
@@ -258,6 +264,7 @@
 <translation id="911206726377975832">您要一併刪除瀏覽數據嗎?</translation>
 <translation id="9158494823179993217">系統管理員已設定 Chromium 開啟替代瀏覽器來存取 <ph name="TARGET_URL_HOSTNAME" />。</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
+<translation id="9214764063801632699">Chromium 作業系統</translation>
 <translation id="93478295209880648">由於 Chromium 將不再支援 Windows XP 或 Windows Vista,因此可能無法正常運作</translation>
 <translation id="95514773681268843">在使用這部裝置前,<ph name="DOMAIN" /> 要求您仔細閱讀並接受下列《服務條款》。這些條款不會擴展、修改或限制《Chromium 作業系統條款》。</translation>
 <translation id="965162752251293939">誰在使用 Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb
index 5c3c30bd..25b794b 100644
--- a/chrome/app/resources/chromium_strings_zh-TW.xtb
+++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -40,6 +40,7 @@
 <translation id="2535480412977113886">你的帳戶登入詳細資料尚未更新,因此 Chromium 作業系統無法同步處理你的資料。</translation>
 <translation id="2560420686485554789">Chromium 需要儲存空間存取權,才能下載檔案</translation>
 <translation id="2572494885440352020">Chromium Helper</translation>
+<translation id="2583187216237139145">凡是在使用這個資料夾期間產生的 Chromium 資料 (例如建立的書籤、歷史記錄、密碼和其他設定),工作資料夾管理員皆可予以移除。<ph name="LEARN_MORE" /></translation>
 <translation id="2587578672395088481">Chromium 作業系統必須重新啟動,才能套用更新。</translation>
 <translation id="2615699638672665509">這台電腦將不會再收到 Chromium 更新,因為我們不再支援其中的硬體。</translation>
 <translation id="2648074677641340862">安裝期間發生作業系統錯誤,請重新下載 Chromium。</translation>
@@ -141,6 +142,7 @@
 <translation id="6055895534982063517">新版 Chromium 現已推出,速度更勝以往。</translation>
 <translation id="6063093106622310249">在 Chromium 中開啟(&amp;O)</translation>
 <translation id="6072279588547424923">已將「<ph name="EXTENSION_NAME" />」加到 Chromium</translation>
+<translation id="608006075545470555">在這個瀏覽器中新增工作資料夾</translation>
 <translation id="608189560609172163">登入時發生錯誤,因此 Chromium 無法同步處理你的資料。</translation>
 <translation id="6096348254544841612">有可用的更新,歡迎自訂及控制 Chromium。</translation>
 <translation id="6120345080069858279">Chromium 會將這組密碼儲存至你的 Google 帳戶,你不須記住密碼。</translation>
@@ -161,6 +163,7 @@
 <translation id="6403826409255603130">Chromium 網路瀏覽器開啟網頁和執行應用程式的速度十分迅速。除了迅速、穩定且易於使用之外,Chromium 的內建惡意軟體與網路釣魚防護功能,可讓你安心悠遊網路。</translation>
 <translation id="6434250628340475518">Chromium 作業系統</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 將於 1 秒後重新啟動}other{Chromium 將於 # 秒後重新啟動}}</translation>
+<translation id="6464340581899189425">如果你有多個 Google 帳戶,可以將這些帳戶新增到你的 <ph name="DEVICE_TYPE" />,這樣就能在 Chromium 瀏覽器和 Play 商店,以及 Gmail、雲端硬碟和 YouTube 等服務中使用這些帳戶。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
 <translation id="6475912303565314141">這個擴充功能也會控管你啟動 Chromium 時所顯示的網頁。</translation>
 <translation id="6510925080656968729">解除安裝 Chromium</translation>
 <translation id="6570579332384693436">為修正拼字錯誤,Chromium 會將你在文字欄位輸入的文字傳送給 Google</translation>
@@ -220,6 +223,7 @@
 <translation id="7857220146454061152">你將需要 OS X 10.11 以上版本,才能在日後取得 Chromium 更新。這台電腦使用的是 OS X 10.10。</translation>
 <translation id="7867198900892795913">Chromium 無法更新至最新版本,因此你並未取得最新功能和安全性問題修正。</translation>
 <translation id="7898472181347242998">如要查看你的裝置是否為最新版,請前往 <ph name="LINK_BEGIN" />Chromium 作業系統設定<ph name="LINK_END" /></translation>
+<translation id="7907774600618164274">Chromium 作業系統未正確關閉。</translation>
 <translation id="7937630085815544518">你使用了 <ph name="USER_EMAIL_ADDRESS" /> 的身分登入 Chromium,請使用相同帳戶重新登入。</translation>
 <translation id="7975919845073681630">這是以並存形式安裝的次要 Chromium,無法設為您的預設瀏覽器。</translation>
 <translation id="7979877361127045932">在 Chromium 選單中隱藏</translation>
@@ -234,6 +238,7 @@
 <translation id="8417404458978023919">{0,plural, =1{請在 1 天內重新啟動 Chromium}other{請在 # 天內重新啟動 Chromium}}</translation>
 <translation id="8453117565092476964">安裝程式封存檔案已毀損或無效,請重新下載 Chromium。</translation>
 <translation id="8493179195440786826">Chromium 版本過舊</translation>
+<translation id="8550334526674375523">這個工作資料夾與個人資料夾各自獨立。</translation>
 <translation id="8558383651099478961">你的家長已停用 Chromium 的「網站、應用程式和擴充功能的權限」設定,因此你無法新增這個<ph name="EXTENSION_TYPE_PARAMETER" />。</translation>
 <translation id="8568283329061645092">如果你使用 Google 帳戶登入,Chromium 可以檢查你的密碼</translation>
 <translation id="8586442755830160949">Copyright <ph name="YEAR" /> The Chromium Authors. 保留所有權利。</translation>
@@ -250,6 +255,7 @@
 <translation id="8907580949721785412">Chromium 現在會嘗試顯示密碼。如果你同意的話,請輸入你的 Windows 密碼。</translation>
 <translation id="8941642502866065432">無法更新 Chromium</translation>
 <translation id="8974095189086268230">Chromium 作業系統的開發有賴其他<ph name="BEGIN_LINK_CROS_OSS" />開放原始碼軟體<ph name="END_LINK_CROS_OSS" />。</translation>
+<translation id="8986207147630327271">你即將在這個瀏覽器中新增工作資料夾,並僅將工作資料夾的控制權授予管理員。</translation>
 <translation id="9019929317751753759">為了讓 Chromium 的安全性更有保障,我們停用了以下這個未列在「<ph name="IDS_EXTENSION_WEB_STORE_TITLE" />」中的擴充功能 (它可能是在您不知情的情況下加入瀏覽器)。</translation>
 <translation id="9089354809943900324">Chromium 版本過舊</translation>
 <translation id="9093206154853821181">{0,plural, =1{Chromium 將在 1 小時後重新啟動}other{Chromium 將在 # 小時後重新啟動}}</translation>
@@ -257,6 +263,7 @@
 <translation id="911206726377975832">你要一併刪除瀏覽資料嗎?</translation>
 <translation id="9158494823179993217">系統管理員已設定 Chromium 開啟替代瀏覽器來存取 <ph name="TARGET_URL_HOSTNAME" />。</translation>
 <translation id="9190841055450128916">Chromium (mDNS-In)</translation>
+<translation id="9214764063801632699">Chromium 作業系統</translation>
 <translation id="93478295209880648">Chromium 已不適用於 Windows XP 或 Windows Vista,因此可能無法正常運作</translation>
 <translation id="95514773681268843">在使用這個裝置前,<ph name="DOMAIN" /> 要求你詳讀並接受下列《服務條款》。這些條款不會擴展、修改或限制《Chromium 作業系統條款》。</translation>
 <translation id="965162752251293939">誰在使用 Chromium?</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb
index fbdd394..963d09c 100644
--- a/chrome/app/resources/generated_resources_af.xtb
+++ b/chrome/app/resources/generated_resources_af.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">Skerm</translation>
 <translation id="3441663102605358937">Meld weer by <ph name="ACCOUNT" /> aan om hierdie rekening te verifieer</translation>
 <translation id="3445047461171030979">Vinnige antwoorde in Google Assistent</translation>
-<translation id="3445770710327978113">Installeer hierdie program om vinnig hierheen terug te kom</translation>
 <translation id="3445925074670675829">USB C-toestel</translation>
 <translation id="3446274660183028131">Begin Parallels Desktop om Windows te installeer.</translation>
 <translation id="344630545793878684">Lees jou data op 'n aantal webwerwe</translation>
@@ -2631,7 +2630,6 @@
 <translation id="3955163004258753966">Kon nie opgradering begin nie</translation>
 <translation id="3955193568934677022">Laat werwe toe om beskermde inhoud te speel (aanbeveel)</translation>
 <translation id="3955896417885489542">Gaan Google Play-opsies ná opstelling na</translation>
-<translation id="3956702100721821638">Kon nie Google Play bereik nie</translation>
 <translation id="3957079323242030166">Rugsteundata sal nie deel vorm van jou Drive-bergingkwota nie.</translation>
 <translation id="3957844511978444971">Tik op “Aanvaar” om jou keuse van hierdie Google-dienste-instellings te bevestig.</translation>
 <translation id="3958088479270651626">Voer boekmerke en instellings in</translation>
@@ -7153,7 +7151,6 @@
 <translation id="952992212772159698">Nie geaktiveer nie</translation>
 <translation id="956500788634395331">Jy word teen potensieel skadelike uitbreidings beskerm</translation>
 <translation id="957960681186851048">Hierdie werf het probeer om veelvuldige lêers outomaties af te laai</translation>
-<translation id="9580706199804957">Kon nie aan Google-dienste koppel nie</translation>
 <translation id="958329785990007682">Blokkeer JavaScript</translation>
 <translation id="960719561871045870">Diensverskafferkode</translation>
 <translation id="960987915827980018">Ongeveer 1 uur oor</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index aec9147..75c4ae5 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">ማያ ገጽ</translation>
 <translation id="3441663102605358937">ይህንን መለያ ለማረጋገጥ እንደገና ወደ <ph name="ACCOUNT" /> በመለያ ይግቡ</translation>
 <translation id="3445047461171030979">የGoogle ረዳት ፈጣን መልሶች</translation>
-<translation id="3445770710327978113">በፍጥነት ወደዚህ ለመመለስ ይህንን መተግበሪያ ይጫኑ</translation>
 <translation id="3445925074670675829">USB-C መሣሪያ</translation>
 <translation id="3446274660183028131">Windowsን ለመጫን እባክዎ Parallels ዴስክቶፕን ያስጀምሩ።</translation>
 <translation id="344630545793878684">የእርስዎን ውሂብ በበርካታ የድር ጣቢያዎች ላይ ያንብቡ</translation>
@@ -2631,7 +2630,6 @@
 <translation id="3955163004258753966">ደረጃ ማሻሻልን በማስጀመር ላይ ስህተት</translation>
 <translation id="3955193568934677022">ጥበቃ የሚደረግበትን ይዘት እንዲያጫውቱ ለጣቢያዎች ፍቀድ (የሚመከር)</translation>
 <translation id="3955896417885489542">የGoogle Play አማራጮች የክትትል ቅንብርን ይገምግሙ</translation>
-<translation id="3956702100721821638">Google Playን መድረስ አልተቻለም</translation>
 <translation id="3957079323242030166">የምትኬ ውሂብ በእርስዎ Drive ማከማቻ ኮታ ላይ አይቆጠርም።</translation>
 <translation id="3957844511978444971">የእነዚህ Google አገልግሎቶች ቅንብሮች ምርጫን ለማረጋገጥ «ተቀበል»ን መታ ያድርጉ።</translation>
 <translation id="3958088479270651626">ዕልባቶችን እና ቅንብሮችን አስመጣ</translation>
@@ -7157,7 +7155,6 @@
 <translation id="952992212772159698">አልገበረም</translation>
 <translation id="956500788634395331">እርስዎ ጎጂ ሊሆኑ ከሚችሉ ቅጥያዎች ተጠብቀዋል</translation>
 <translation id="957960681186851048">ይህ ጣቢያ በርካታ ፋይሎችን በራስ-ሰር ለማውረድ ሞክሯል</translation>
-<translation id="9580706199804957">ከGoogle አገልግሎቶች ጋር መገናኘት አልተቻለም</translation>
 <translation id="958329785990007682">ጃቫስክሪፕትን አግድ</translation>
 <translation id="960719561871045870">የከዋኝ ኮድ</translation>
 <translation id="960987915827980018">1 ሰዓት አካባቢ ቀርቷል</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index 71441fb9..723df72 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">ما من شبكات</translation>
 <translation id="1056898198331236512">تحذير</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{يُرجى إدخال رقم التعريف الشخصي الجديد. يجب ألا يقلّ رقم التعريف الشخصي عن حرف واحد، ويمكن أن يحتوي على حروف وأرقام وأحرف أخرى.}zero{يُرجى إدخال رقم التعريف الشخصي الجديد. يجب ألا يقلّ رقم التعريف الشخصي عن # حرف، ويمكن أن يحتوي على حروف وأرقام وأحرف أخرى.}two{يُرجى إدخال رقم التعريف الشخصي الجديد. يجب ألا يقلّ رقم التعريف الشخصي عن حرفَين، ويمكن أن يحتوي على حروف وأرقام وأحرف أخرى.}few{يُرجى إدخال رقم التعريف الشخصي الجديد. يجب ألا يقلّ رقم التعريف الشخصي عن # أحرف، ويمكن أن يحتوي على حروف وأرقام وأحرف أخرى.}many{يُرجى إدخال رقم التعريف الشخصي الجديد. يجب ألا يقلّ رقم التعريف الشخصي عن # حرفًا، ويمكن أن يحتوي على حروف وأرقام وأحرف أخرى.}other{يُرجى إدخال رقم التعريف الشخصي الجديد. يجب ألا يقلّ رقم التعريف الشخصي عن # حرف، ويمكن أن يحتوي على حروف وأرقام وأحرف أخرى.}}</translation>
 <translation id="1059944192885972544">تم العثور على <ph name="NUM" /> علامات تبويب حول "<ph name="SEARCH_TEXT" />".</translation>
 <translation id="1060292118287751956">تحدّد معدّل تحديثات الشاشة</translation>
 <translation id="1061904396131502319">سيتم قفل الجهاز بعد قليل</translation>
@@ -640,9 +641,11 @@
 <translation id="1688935057616748272">يرجى كتابة حرف.</translation>
 <translation id="168991973552362966">إضافة طابعة قريبة</translation>
 <translation id="1689945336726856614">‏نسخ &amp;عنوان URL</translation>
+<translation id="1690248886740053041">تعذّر الاتصال بشبكة جوّال. للحصول على الدعم الفني، يُرجى التواصل مع مشغّل شبكة الجوّال.</translation>
 <translation id="1692115862433274081">استخدام حساب آخر</translation>
 <translation id="1692118695553449118">المزامنة ممكنة</translation>
 <translation id="1692210323591458290">أرجواني داكن</translation>
+<translation id="169279809881363536">لم يتم العثور على أي ملفات شخصية. لإعداد شبكة جديدة، يمكنك مسح رمز الاستجابة السريعة ضوئيًا باستخدام كاميرا الجهاز أو إدخال رمز التفعيل المُقدَّم من مشغِّل شبكة الجوّال.</translation>
 <translation id="1697150536837697295">الفن</translation>
 <translation id="1697686431566694143">تعديل الملف</translation>
 <translation id="1698122934742150150">جلسة التصفح المتخفي الحالية فقط</translation>
@@ -1580,6 +1583,7 @@
 <translation id="2770465223704140727">إزالة من القائمة</translation>
 <translation id="2770690685823456775">تصدير كلمات المرور إلى مجلد آخر</translation>
 <translation id="2770929488047004208">درجة دقة شاشة العرض</translation>
+<translation id="2770954829020464827">يتم إخفاء محتوى الإشعارات أثناء مشاركة الشاشة.</translation>
 <translation id="2771268254788431918">تم تفعيل بيانات الجوّال</translation>
 <translation id="2771816809568414714">جبن</translation>
 <translation id="2772936498786524345">التسلل</translation>
@@ -1948,6 +1952,7 @@
 <translation id="3201422919974259695">‏ستظهر أجهزة USB المتاحة هنا.</translation>
 <translation id="3202131003361292969">المسار</translation>
 <translation id="3202173864863109533">تم كتم صوت علامة التبويب.</translation>
+<translation id="3202218848974251205">Privacy Sandbox</translation>
 <translation id="3208321278970793882">التطبيق</translation>
 <translation id="3208584281581115441">التحقّق الآن</translation>
 <translation id="3208703785962634733">لم يتم تأكيده</translation>
@@ -2147,7 +2152,6 @@
 <translation id="3441653493275994384">الشاشة</translation>
 <translation id="3441663102605358937">يُرجى تسجيل الدخول إلى الحساب <ph name="ACCOUNT" /> مرّة أخرى لإثبات ملكيته.</translation>
 <translation id="3445047461171030979">‏إجابات "مساعد Google" السريعة</translation>
-<translation id="3445770710327978113">للرجوع إلى هذا الموقع الإلكتروني بشكل أسرع، يُرجى تثبيت هذا التطبيق.</translation>
 <translation id="3445925074670675829">‏جهاز USB-C</translation>
 <translation id="3446274660183028131">‏يُرجى تشغيل نظام Parallels Desktop لتثبيت نظام التشغيل Windows.</translation>
 <translation id="344630545793878684">قراءة بياناتك على عدد من المواقع الإلكترونية</translation>
@@ -2168,6 +2172,7 @@
 <translation id="3459697287128633276">‏لتمكين حسابك من الوصول إلى متجر Google Play، يُرجى المصادقة مع موفّر الهوية.</translation>
 <translation id="3462311546193741693">‏يؤدي هذا الخيار إلى تسجيل خروجك من معظم المواقع الإلكترونية. وسيستمر تسجيل دخولك إلى حسابك على Google بحيث يمكن محو بياناتك التي تمت مزامنتها.</translation>
 <translation id="3462413494201477527">هل تريد إلغاء إنشاء الحساب؟</translation>
+<translation id="3464145797867108663">إضافة ملف شخصي للعمل</translation>
 <translation id="346431825526753">هذا هو حساب للأطفال يديره <ph name="CUSTODIAN_EMAIL" />.</translation>
 <translation id="3468298837301810372">الاسم</translation>
 <translation id="3468999815377931311">‏هاتف Android</translation>
@@ -2289,6 +2294,7 @@
 <translation id="360180734785106144">عرض ميزات جديدة عندما تصبح متاحة</translation>
 <translation id="3602290021589620013">معاينة</translation>
 <translation id="3603622770190368340">الحصول على شهادة الشبكة</translation>
+<translation id="3604193429970465812">الحسابات الثانوية</translation>
 <translation id="3604713164406837697">تغيير الخلفية</translation>
 <translation id="3605780360466892872">الزر لأسفل</translation>
 <translation id="3608576286259426129">معاينة صورة المستخدم</translation>
@@ -2610,6 +2616,7 @@
 <translation id="3940233957883229251">تفعيل الإعادة التلقائية</translation>
 <translation id="3941565636838060942">لإخفاء إمكانية الدخول إلى هذا البرنامج، يجب إلغاء تثبيته باستخدام <ph name="CONTROL_PANEL_APPLET_NAME" /> من لوحة التحكّم. هل تريد بدء تشغيل <ph name="CONTROL_PANEL_APPLET_NAME" />؟</translation>
 <translation id="394183848452296464">يتعذّر إنشاء الاختصار</translation>
+<translation id="3943494825379372497">هل تريد استعادة التطبيقات والصفحات؟</translation>
 <translation id="3943582379552582368">&amp;إلى الوراء</translation>
 <translation id="3943857333388298514">لصق</translation>
 <translation id="3948116654032448504">&amp;بحث على <ph name="SEARCH_ENGINE" /> عن صورة</translation>
@@ -2625,7 +2632,6 @@
 <translation id="3955163004258753966">خطأ في بدء الترقية</translation>
 <translation id="3955193568934677022">السماح للمواقع الإلكترونية بتشغيل المحتوى المحمي (مُستحسَن)</translation>
 <translation id="3955896417885489542">‏مراجعة خيارات Google Play بعد الإعداد</translation>
-<translation id="3956702100721821638">‏تعذّر الوصول إلى Google Play</translation>
 <translation id="3957079323242030166">‏لن يتم احتساب بيانات النسخ الاحتياطي من حصة التخزين في Drive التابعة لك.</translation>
 <translation id="3957844511978444971">‏انقر على "قبول" لتأكيد اختيارك لهذه الإعدادات في خدمات Google.</translation>
 <translation id="3958088479270651626">استيراد الإشارات المرجعية والإعدادات</translation>
@@ -2695,6 +2701,7 @@
 <translation id="4046013316139505482">لا يمكن لهذه الإضافات الوصول إلى معلومات هذا الموقع الإلكتروني أو تغييرها.</translation>
 <translation id="4046123991198612571">المقطع الصوتي التالي</translation>
 <translation id="4047726037116394521">الانتقال إلى الصفحة الرئيسية</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{‏جهة اتصال واحدة غير متوفِّرة. لاستخدام ميزة "المشاركة عن قرب" مع جهة الاتصال هذه، أضِف عنوان البريد الإلكتروني المرتبط بحساب هذه الجهة على Google إلى جهات اتصالك.}zero{‏# جهة اتصال غير متوفِّرة. لاستخدام ميزة "المشاركة عن قرب" مع جهات الاتصال هذه، أضِف عناوين البريد الإلكتروني المرتبطة بحسابات كل منها على Google إلى جهات اتصالك.}two{‏جهتا اتصال غير متوفِّرتَين. لاستخدام ميزة "المشاركة عن قرب" مع جهتَي الاتصال هاتين، أضِف عنوانَي البريد الإلكتروني المرتبطَين بحساب كل منهما على Google إلى جهات اتصالك.}few{‏# جهات اتصال غير متوفِّرة. لاستخدام ميزة "المشاركة عن قرب" مع جهات الاتصال هذه، أضِف عناوين البريد الإلكتروني المرتبطة بحسابات كل منها على Google إلى جهات اتصالك.}many{‏# جهة اتصال غير متوفِّرة. لاستخدام ميزة "المشاركة عن قرب" مع جهات الاتصال هذه، أضِف عناوين البريد الإلكتروني المرتبطة بحسابات كل منها على Google إلى جهات اتصالك.}other{‏# جهة اتصال غير متوفِّرة. لاستخدام ميزة "المشاركة عن قرب" مع جهات الاتصال هذه، أضِف عناوين البريد الإلكتروني المرتبطة بحسابات كل منها على Google إلى جهات اتصالك.}}</translation>
 <translation id="4050225813016893843">طريقة المصادقة</translation>
 <translation id="4052120076834320548">دقيق</translation>
 <translation id="4056908315660577142">‏لقد وصلت إلى الحدّ الزمني الذي ضبطه أحد الوالدَين لتطبيق <ph name="APP_NAME" /> في Chrome. يمكنك استخدامه لمدة <ph name="TIME_LIMIT" /> غدًا.</translation>
@@ -3341,6 +3348,7 @@
 <translation id="4863769717153320198">‏تبدو كـ <ph name="WIDTH" /> x <ph name="HEIGHT" /> (تلقائية)</translation>
 <translation id="4864369630010738180">جارٍ تسجيل الدخول...</translation>
 <translation id="4864805589453749318">اختَر أحد الوالدَين الذي يمنح الإذن لإضافة حساب مؤسسة تعليمية.</translation>
+<translation id="4866265760644917470">تمت إضافة الملف الشخصي بنجاح.</translation>
 <translation id="486635084936119914">فتح أنواع معينة من الملفات تلقائيًا بعد التنزيل</translation>
 <translation id="48704129375571883">إضافة ميزات إضافية</translation>
 <translation id="4870758487381879312">إدخال كلمة المرور التي قدمها المشرف للحصول على معلومات الضبط</translation>
@@ -3624,6 +3632,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{‏تمّ تغيير كلمة المرور المحتمَل تعرّضها للاختراق بنجاح. لديك كلمة مرور واحدة إضافية محتمَل تعرّضها للاختراق. لذا ينصح متصفِّح Chrome بالتحقُّق منها الآن.}zero{‏تمّ تغيير كلمة المرور المحتمَل تعرّضها للاختراق بنجاح. لديك # كلمة مرور إضافية محتمَل تعرّضها للاختراق. لذا ينصح متصفّح Chrome بالتحقُّق منها الآن.}two{‏تمّ تغيير كلمة المرور المحتمَل تعرّضها للاختراق بنجاح. لديك كلمتا مرور إضافيتان محتمَل تعرّضهما للاختراق. لذا ينصح متصفّح Chrome بالتحقُّق منهما الآن.}few{‏تمّ تغيير كلمة المرور المحتمَل تعرّضها للاختراق بنجاح. لديك # كلمات مرور إضافية محتمَل تعرّضها للاختراق. لذا ينصح متصفّح Chrome بالتحقُّق منها الآن.}many{‏تمّ تغيير كلمة المرور المحتمَل تعرّضها للاختراق بنجاح. لديك # كلمة مرور إضافية محتمَل تعرّضها للاختراق. لذا ينصح متصفّح Chrome بالتحقُّق منها الآن.}other{‏تمّ تغيير كلمة المرور المحتمَل تعرّضها للاختراق بنجاح. لديك # كلمة مرور إضافية محتمَل تعرّضها للاختراق. لذا ينصح متصفّح Chrome بالتحقُّق منها الآن.}}</translation>
 <translation id="5207949376430453814">تمييز علامة إقحام النص</translation>
 <translation id="5209320130288484488">لم يتم العثور على أي أجهزة</translation>
+<translation id="5209572028385096813">‏تتم إدارة هذا المستخدم من خلال Family Link.</translation>
 <translation id="5210365745912300556">إغلاق علامة التبويب</translation>
 <translation id="5213481667492808996">خدمة بيانات "<ph name="NAME" />" جاهزة للاستخدام</translation>
 <translation id="5213891612754844763">عرض إعدادات الخادم الوكيل</translation>
@@ -3709,6 +3718,7 @@
 <translation id="5302048478445481009">اللغة</translation>
 <translation id="5302932258331363306">عرض الاستبدالات</translation>
 <translation id="5304276686222516262">‏تعذَّر تنزيل قائمة جهات الاتصال. يُرجى التحقُّق من الاتصال بالشبكة، أو &lt;a href="#" id="tryAgainLink"&gt;إعادة المحاولة&lt;/a&gt;.</translation>
+<translation id="5305145881844743843">تتم إدارة هذا الحساب من خلال <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" />.</translation>
 <translation id="5305688511332277257">لم يتم تثبيت أي شهادات</translation>
 <translation id="5307030433605830021">المصدر غير متاح</translation>
 <translation id="5308380583665731573">اتصال</translation>
@@ -4091,6 +4101,7 @@
 <translation id="5740820643029013514">استخدام طريقة أقل بروزًا لإرسال الإشعارات (مُستحسَن)</translation>
 <translation id="574104302965107104">النسخ المطابق للشاشة</translation>
 <translation id="574209121243317957">درجة الصوت</translation>
+<translation id="5742505912938664543">‏عند إضافة حساب ثانوي هنا على صفحة مدير الحساب، يمكنك تصفُّح الويب وتنزيل التطبيقات والاطِّلاع على Gmail والخدمات الأخرى باستخدام هذا الحساب.</translation>
 <translation id="5746169159649715125">‏حفظ بتنسيق ملف PDF</translation>
 <translation id="5747552184818312860">تاريخ انتهاء الصلاحية</translation>
 <translation id="5747785204778348146">المطوّر - غير ثابت</translation>
@@ -4431,6 +4442,7 @@
 <translation id="6129953537138746214">مسافة</translation>
 <translation id="6130692320435119637">‏إضافة شبكة Wi-Fi</translation>
 <translation id="6136114942382973861">إغلاق شريط عمليات التنزيل</translation>
+<translation id="6136287496450963112">مفتاح الأمان غير محمي برقم تعريف شخصي. لإدارة بصمات الإصبع، يجب إنشاء رقم تعريف شخصي.</translation>
 <translation id="6137767437444130246">شهادة المستخدم</translation>
 <translation id="6138680304137685902">‏توقيع X9.62 ECDSA باستخدام SHA-384</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />، ما من شبكة</translation>
@@ -4612,6 +4624,7 @@
 <translation id="6331566915566907158">‏المساعدة على تحسين ميزات نظام التشغيل Chrome وأدائه</translation>
 <translation id="6331818708794917058">‏السماح للمواقع الإلكترونية بطلب الاتصال بأجهزة MIDI</translation>
 <translation id="6333064448949140209">‏سيتم إرسال الملف إلى Google لتصحيح الأخطاء</translation>
+<translation id="6334444530352320327">‏ستتم مزامنة التطبيقات وإعدادات نظام التشغيل على أجهزة Chromebook التي سجّلت الدخول إليها باستخدام هذا الحساب. <ph name="LINK_BEGIN" />إعدادات المزامنة<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">السماح لجميع المواقع الإلكترونية بعرض أيّ إعلانات لك</translation>
 <translation id="6339668969738228384">إنشاء ملف شخصي جديد لـ <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="6340017061976355871">‏تعذّر الاتصال بالخادم، يُرجى التحقق من اتصالك بالشبكة والمحاولة مرة أخرى. في حالة استمرار هذه المشكلة، يُرجى إعادة تشغيل Chromebook.</translation>
@@ -4913,6 +4926,7 @@
 <translation id="6709133671862442373">الأخبار</translation>
 <translation id="6709357832553498500">الاتصال باستخدام <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">السابق</translation>
+<translation id="6713233729292711163">إضافة ملف شخصي للعمل</translation>
 <translation id="6715803357256707211">‏لقد حدث خطأ أثناء تثبيت تطبيق Linux. يُرجى النقر على الإشعار لمعرفة التفاصيل.</translation>
 <translation id="671619610707606484">سيؤدي هذا الإجراء إلى محو <ph name="TOTAL_USAGE" /> من البيانات المُخزّنة من خلال المواقع الإلكترونية.</translation>
 <translation id="671928215901716392">قفل الشاشة</translation>
@@ -5281,6 +5295,7 @@
 <translation id="7121362699166175603">‏يتم محو السجلّ وعمليات الإكمال التلقائي في شريط العناوين. وقد يتضمّن حسابك على Google نماذج أخرى من سجلّ التصفّح في <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="7121438501124788993">وضع مطوِّر البرامج</translation>
 <translation id="7121728544325372695">الشرطات الذكية</translation>
+<translation id="7122353087820324370">لا تتم مزامنة التطبيقات وإعدادات نظام التشغيل مع الحسابات الثانوية.</translation>
 <translation id="7123030151043029868">المواقع الإلكترونية التي يُسمح لها بتنزيل الملفات المتعدّدة تلقائيًا</translation>
 <translation id="7123360114020465152">الطابعة ليست مدعومة بعد الآن.</translation>
 <translation id="7125148293026877011">‏حذف نظام التشغيل Crostini</translation>
@@ -5596,6 +5611,7 @@
 <translation id="750509436279396091">فتح مجلد "المحتوى الذي تم تنزيله"</translation>
 <translation id="7506093026325926984">سيتم حفظ كلمة المرور هذه على هذا الجهاز</translation>
 <translation id="7506130076368211615">إعداد شبكة جديدة</translation>
+<translation id="7506242536428928412">لاستخدام مفتاح الأمان الجديد، يجب إعداد رقم تعريف شخصي جديد.</translation>
 <translation id="7506541170099744506">لقد تم تسجيل جهاز <ph name="DEVICE_TYPE" /> بنجاح لإدارة المؤسسة.</translation>
 <translation id="7507207699631365376">الاطّلاع على <ph name="BEGIN_LINK" />سياسة خصوصية<ph name="END_LINK" /> مقدّم الخدمة</translation>
 <translation id="7507930499305566459">شهادة الاستجابة للحالة</translation>
@@ -5759,6 +5775,7 @@
 <translation id="7691077781194517083">تعذّرت إعادة ضبط مفتاح الأمان هذا. الخطأ <ph name="ERROR_CODE" />.</translation>
 <translation id="7691698019618282776">‏ترقية نظام التشغيل Crostini</translation>
 <translation id="7696063401938172191">على '<ph name="PHONE_NAME" />':</translation>
+<translation id="7697166915480294040">يتم إخفاء محتوى الإشعارات أثناء مشاركة الشاشة.</translation>
 <translation id="7697598343108519171">استخدام الكاميرا لمسح رمز الاستجابة السريعة ضوئيًا</translation>
 <translation id="7699968112832915395">تعذُّر إضافة الحساب</translation>
 <translation id="7701040980221191251">لا يوجد</translation>
@@ -6216,6 +6233,8 @@
 <translation id="8184472985242519288">مُوحَّدة</translation>
 <translation id="8186609076106987817">تعذر على الخادم العثور على الملف.</translation>
 <translation id="8188389033983459049">التحقُّق من إعدادات جهازك وتفعيلها للاستمرار</translation>
+<translation id="8189306097519446565">حسابات المؤسسات التعليمية</translation>
+<translation id="8189750580333936930">Privacy Sandbox</translation>
 <translation id="8190193592390505034">جارٍ الاتصال بـ <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">إدارة التطبيقات والإضافات والمظاهر</translation>
 <translation id="8195027750202970175">الحجم على القرص</translation>
@@ -6911,6 +6930,7 @@
 <translation id="8986362086234534611">حذف</translation>
 <translation id="8986494364107987395">‏إرسال إحصاءات الاستخدام وتقارير الأعطال إلى Google تلقائيًا</translation>
 <translation id="8987927404178983737">شهر</translation>
+<translation id="8989823300731803443">المتابعة من حيث توقفت</translation>
 <translation id="8990209962746788689">يتعذّر إنشاء رمز الاستجابة السريعة.</translation>
 <translation id="8991520179165052608">يمكن للموقع الإلكتروني استخدام الميكروفون.</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{عنصر واحد}zero{# عنصر}two{عنصران}few{# عناصر}many{# عنصرًا}other{# عنصر}}</translation>
@@ -7140,7 +7160,6 @@
 <translation id="952992212772159698">غير نشطة</translation>
 <translation id="956500788634395331">تمت حمايتك من إضافات يُحتمل أن تكون ضارة.</translation>
 <translation id="957960681186851048">حاول هذا الموقع تنزيل عدة ملفات تلقائيًا</translation>
-<translation id="9580706199804957">‏تعذر الاتصال بخدمات Google</translation>
 <translation id="958329785990007682">‏حظر JavaScript</translation>
 <translation id="960719561871045870">رمز مشغل شبكة الجوال</translation>
 <translation id="960987915827980018">تتبقى ساعة واحدة تقريبًا</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb
index 25cfed0..48813d12 100644
--- a/chrome/app/resources/generated_resources_as.xtb
+++ b/chrome/app/resources/generated_resources_as.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">নেটৱৰ্ক নাই</translation>
 <translation id="1056898198331236512">সতর্কবার্তা</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{আপোনাৰ নতুন পিনটো দিয়ক। এটা পিনত অতি কমেও এটা বৰ্ণ থাকিবই লাগিব যি এটা আখৰ, সংখ্যা আৰু অন্য বৰ্ণ হ’ব পাৰে।}one{আপোনাৰ নতুন পিনটো দিয়ক। এটা পিনত অতি কমেও # টা বৰ্ণ থাকিবই লাগিব যিকেইটা আখৰ, সংখ্যা আৰু অন্য বৰ্ণ হ’ব পাৰে।}other{আপোনাৰ নতুন পিনটো দিয়ক। এটা পিনত অতি কমেও # টা বৰ্ণ থাকিবই লাগিব যিকেইটা আখৰ, সংখ্যা আৰু অন্য বৰ্ণ হ’ব পাৰে।}}</translation>
 <translation id="1059944192885972544">'<ph name="SEARCH_TEXT" />'ৰ বাবে <ph name="NUM" /> টা টেব পোৱা গৈছে</translation>
 <translation id="1060292118287751956">স্ক্ৰীনখন আপডে’ট হোৱা সঘনতা নিৰ্দিষ্ট কৰে</translation>
 <translation id="1061904396131502319">ডিভাইচ লক হওঁ হওঁ</translation>
@@ -634,9 +635,11 @@
 <translation id="1688935057616748272">এটা বৰ্ণ টাইপ কৰক</translation>
 <translation id="168991973552362966">কোনো নিকটৱৰ্তী প্ৰিণ্টাৰ যোগ কৰক</translation>
 <translation id="1689945336726856614">&amp;URL প্ৰতিলিপি কৰক</translation>
+<translation id="1690248886740053041">ম’বাইল নেটৱৰ্কৰ সৈতে সংযোগ কৰিব পৰা নগ’ল। কাৰিকৰী সহায়ৰ বাবে অনুগ্ৰহ কৰি আপোনাৰ বাহকৰ সৈতে যোগাযোগ কৰক।</translation>
 <translation id="1692115862433274081">অন্য একাউণ্ট ব্যৱহাৰ কৰক</translation>
 <translation id="1692118695553449118">ছিংক অন হৈ আছে</translation>
 <translation id="1692210323591458290">গাঢ় বেঙুনীয়া</translation>
+<translation id="169279809881363536">কোনো প্ৰ’ফাইল বিচাৰি পোৱা হোৱা নাছিল। এটা নতুন নেটৱৰ্ক ছেটআপ কৰিবলৈ, ডিভাইচৰ কেমেৰা ব্যৱহাৰ কৰি কিউআৰ ক’ড স্কেন কৰক অথবা আপোনাৰ বাহকে প্ৰদান কৰা সক্ৰিয়কৰণৰ ক’ডটো দিয়ক।</translation>
 <translation id="1697150536837697295">কলা</translation>
 <translation id="1697686431566694143">ফাইল সম্পাদনা কৰক</translation>
 <translation id="1698122934742150150">কেৱল বর্তমানৰ ইনক’গনিট’ ছেশ্বন</translation>
@@ -1573,6 +1576,7 @@
 <translation id="2770465223704140727">সূচীৰ পৰা আঁতৰাওক</translation>
 <translation id="2770690685823456775">আপোনাৰ পাছৱৰ্ড বেলেগ ফ’ল্ডাৰলৈ ৰপ্তানি কৰক</translation>
 <translation id="2770929488047004208">মনিটৰৰ ৰিজ’লিউশ্বন</translation>
+<translation id="2770954829020464827">আপুনি নিজৰ স্ক্ৰীনখন শ্বেয়াৰ কৰিলে সবিশেষ লুকুওৱা হয়</translation>
 <translation id="2771268254788431918">ম’বাইল ডেটা সক্ৰিয় কৰা হল</translation>
 <translation id="2771816809568414714">চ্চীজ</translation>
 <translation id="2772936498786524345">Sneaky</translation>
@@ -1941,6 +1945,7 @@
 <translation id="3201422919974259695">উপলব্ধ ইউএছবি ডিভাইচসমূহ ইয়াত দেখা পোৱা যাব।</translation>
 <translation id="3202131003361292969">পথ</translation>
 <translation id="3202173864863109533">এই টেবটোৰ অডিঅ’ মিউট কৰি থকা হৈছে।</translation>
+<translation id="3202218848974251205">গোপনীয়তা ছেণ্ডবক্স</translation>
 <translation id="3208321278970793882">এপ্‌</translation>
 <translation id="3208584281581115441">এতিয়াই পৰীক্ষা কৰক</translation>
 <translation id="3208703785962634733">নিশ্চিত কৰা নাই</translation>
@@ -2140,7 +2145,6 @@
 <translation id="3441653493275994384">স্ক্ৰীণ</translation>
 <translation id="3441663102605358937">এই একাউণ্টটো সত্যাপন কৰিবলৈ <ph name="ACCOUNT" />ত পুনৰ ছাইন ইন কৰক</translation>
 <translation id="3445047461171030979">Google Assistantৰ দ্ৰুত উত্তৰসমূহ</translation>
-<translation id="3445770710327978113">দ্ৰুততাৰে ইয়ালৈ উভতি আহিবলৈ এই এপ্‌টো ইনষ্টল কৰক</translation>
 <translation id="3445925074670675829">ইউএছবি চি ডিভাইচ</translation>
 <translation id="3446274660183028131">Windows ইনষ্টল কৰিবলৈ অনুগ্ৰহ কৰি Parallels Desktop লঞ্চ কৰক।</translation>
 <translation id="344630545793878684">আপোনাৰ ডেটা ৱেবছাইটসমূহত পঢ়ে</translation>
@@ -2161,6 +2165,7 @@
 <translation id="3459697287128633276">Google Play Store এক্সেছ কৰিবলৈ আপোনাৰ একাউণ্টটো সক্ষম কৰাৰ বাবে আপোনাৰ পৰিচয়পত্ৰ প্ৰদানকাৰীৰ সৈতে বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ কৰক।</translation>
 <translation id="3462311546193741693">অধিকাংশ ছাইটৰ পৰাই আপোনাক ছাইন আউট কৰায়। আপোনাৰ ছিংক কৰা ডেটা মচিবলৈ আপুনি নিজৰ Google একাউণ্টত ছাইন ইন কৰি ৰাখিব।</translation>
 <translation id="3462413494201477527">একাউণ্ট ছেট আপ কৰাটো বাতিল কৰিবনে?</translation>
+<translation id="3464145797867108663">কৰ্মস্থানৰ প্ৰ’ফাইল যোগ দিয়ক</translation>
 <translation id="346431825526753">এইটো <ph name="CUSTODIAN_EMAIL" />এ পৰিচালনা কৰা শিশুৰ একাউণ্ট।</translation>
 <translation id="3468298837301810372">লেবেল</translation>
 <translation id="3468999815377931311">Android ফ’ন</translation>
@@ -2282,6 +2287,7 @@
 <translation id="360180734785106144">নতুন ফলাফলবোৰ উপলব্ধ হোৱাৰ লগে লগেই আগবঢ়োৱা হ’ব</translation>
 <translation id="3602290021589620013">পূৰ্বদৰ্শন</translation>
 <translation id="3603622770190368340">নেটৱর্কৰ প্ৰমাণপত্ৰ পাওক</translation>
+<translation id="3604193429970465812">গৌণ একাউণ্ট</translation>
 <translation id="3604713164406837697">ৱালপেপাৰ সলনি কৰক</translation>
 <translation id="3605780360466892872">Buttondown</translation>
 <translation id="3608576286259426129">ব্যৱহাৰকাৰীৰ প্ৰতিচ্ছবিৰ পূৰ্বদৰ্শন</translation>
@@ -2420,6 +2426,7 @@
 <translation id="3753033997400164841">এবাৰ ষ্ট’ৰ কৰক। সকলোতে ব্যৱহাৰ কৰক</translation>
 <translation id="3755411799582650620">আপোনাৰ <ph name="PHONE_NAME" />এ এতিয়া <ph name="DEVICE_TYPE" />ও আনলক কৰিব পাৰে।</translation>
 <translation id="375636864092143889">ছাইটটোৱে আপোনাৰ মাইক্ৰ’ফ’ম ব্যৱহাৰ কৰি আছে</translation>
+<translation id="3756578970075173856">পিন ছেট কৰক</translation>
 <translation id="3757733214359997190">কোনো ছাইট বিচাৰি পোৱা নগ’ল</translation>
 <translation id="375841316537350618">প্ৰ’ক্সি স্ক্ৰিপ্ট ডাউনল’ড কৰি থকা হৈছে...</translation>
 <translation id="3758842566811519622">কুকিৰ ছেট</translation>
@@ -2604,6 +2611,7 @@
 
   আপুনি <ph name="CONTROL_PANEL_APPLET_NAME" /> আৰম্ভ কৰিব খোজেনে?</translation>
 <translation id="394183848452296464">শ্বর্টকাট সৃষ্টি কৰিব নোৱাৰি</translation>
+<translation id="3943494825379372497">এপ্‌ আৰু পৃষ্ঠা পুনঃস্থাপন কৰিবনে?</translation>
 <translation id="3943582379552582368">&amp;উভতি যাওক</translation>
 <translation id="3948116654032448504"><ph name="SEARCH_ENGINE" />ত প্ৰতিচ্ছবিৰ &amp;সন্ধান কৰক</translation>
 <translation id="3948507072814225786"><ph name="ORIGIN" />এ তলৰ ফ’ল্ডাৰসমূহত থকা ফাইলসমূহ সম্পাদনা কৰিব পাৰে</translation>
@@ -2618,7 +2626,6 @@
 <translation id="3955163004258753966">আপগ্ৰে’ড আৰম্ভ কৰোঁতে আসোঁৱাহ হৈছে</translation>
 <translation id="3955193568934677022">ছাইটসমূহক সুৰক্ষিত সমল প্লে’ কৰিবলৈ অনুমতি দিয়ক (চুপাৰিছ কৰা হয়)</translation>
 <translation id="3955896417885489542">ছেট আপৰ পাছতেই Google Play বিকল্পৰ পর্যালোচনা কৰক</translation>
-<translation id="3956702100721821638">Google Playত উপনীত হ’ব পৰা নগ’ল</translation>
 <translation id="3957079323242030166">আপোনাৰ Driveৰ ষ্ট'ৰেজত থকা নির্ধাৰিত ঠাইত বেক আপ ডেটা গণনা কৰা নহ’ব।</translation>
 <translation id="3957844511978444971">Google সেৱাৰ এই ছেটিংসমূহ আপুনি বাছনি কৰিছে বুলি নিশ্চিত কৰিবলৈ “স্বীকাৰ কৰোঁ”ত টিপক।</translation>
 <translation id="3958088479270651626">বুকমার্ক আৰু ছেটিংসমূহ আমদানি কৰক</translation>
@@ -2687,6 +2694,7 @@
 <translation id="4046013316139505482">এই এক্সটেনশ্বনসমূহে এই ছাইটটোত তথ্য চোৱা আৰু সলনি কৰাৰ আৱশ্যক নাই।</translation>
 <translation id="4046123991198612571">পৰৱৰ্তী ট্ৰেক</translation>
 <translation id="4047726037116394521">গৃহপৃষ্ঠালৈ যাওক</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{# টা সম্পৰ্ক উপলব্ধ নহয়। তেওঁলোকৰ সৈতে নীয়েৰবাই শ্বেয়াৰ ব্যৱহাৰ কৰিবলৈ আপোনাৰ সম্পৰ্কসূচীত তেওঁলোকৰ Google একাউণ্টৰ সৈতে জড়িত ইমেইল ঠিকনাটো যোগ কৰক।}one{# টা সম্পৰ্ক উপলব্ধ নহয়। তেওঁলোকৰ সৈতে নীয়েৰবাই শ্বেয়াৰ ব্যৱহাৰ কৰিবলৈ আপোনাৰ সম্পৰ্কসূচীত তেওঁলোকৰ Google একাউণ্টৰ সৈতে জড়িত ইমেইল ঠিকনা যোগ দিয়ক।}other{# টা সম্পৰ্ক উপলব্ধ নহয়। তেওঁলোকৰ সৈতে নীয়েৰবাই শ্বেয়াৰ ব্যৱহাৰ কৰিবলৈ আপোনাৰ সম্পৰ্কসূচীত তেওঁলোকৰ Google একাউণ্টৰ সৈতে জড়িত ইমেইল ঠিকনা যোগ দিয়ক।}}</translation>
 <translation id="4050225813016893843">বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ পদ্ধতি</translation>
 <translation id="4052120076834320548">ক্ষুদ্ৰ</translation>
 <translation id="4056908315660577142">আপোনাৰ অভিভাৱকে <ph name="APP_NAME" /> Chrome এপ্‌টোৰ বাবে ছেট কৰা সময়ৰ সীমাত আপুনি উপনীত হৈছে। আপুনি এইটো কাইলৈ <ph name="TIME_LIMIT" />ৰ বাবে ব্যৱহাৰ কৰিব পাৰিব।</translation>
@@ -3332,6 +3340,7 @@
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" />ৰ দৰে লাগিছে (ডি’ফল্ট হিচাপে থকা)</translation>
 <translation id="4864369630010738180">ছাইন ইন কৰি থকা হৈছে…</translation>
 <translation id="4864805589453749318">এটা বিদ্যালয়ৰ একাউণ্ট যোগ দিয়াৰ অনুমতি দি থকা অভিভাৱকগৰাকীক বাছনি কৰক।</translation>
+<translation id="4866265760644917470">প্ৰ’ফাইলটো সফলতাৰে যোগ দিয়া হ’ল।</translation>
 <translation id="486635084936119914">ডাউনল’ড কৰাৰ পাছত নিৰ্দিষ্ট ফাইলৰ প্ৰকাৰসমূহ স্বয়ংক্ৰিয়ভাৱে খোলক</translation>
 <translation id="48704129375571883">অতিৰিক্ত সুবিধা যোগ কৰক</translation>
 <translation id="4870758487381879312">কনফিগাৰেশ্বনৰ তথ্য পাবলৈ প্ৰশাসকে দিয়া পাছৱর্ডটো দিয়ক</translation>
@@ -3615,6 +3624,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{হেক কৰা পাছৱৰ্ডটো সফলভাৱে সলনি কৰা হ’ল। আপোনাৰ আৰু # টা হেক কৰা পাছৱৰ্ড আছে। Chromeএ এই পাছৱৰ্ডটো এতিয়াই পৰীক্ষা কৰাটো চুপাৰিছ কৰে।}one{হেক কৰা পাছৱৰ্ডটো সফলভাৱে সলনি কৰা হ’ল। আপোনাৰ আৰু # টা হেক কৰা পাছৱৰ্ড আছে। Chromeএ এই পাছৱৰ্ডসমূহ এতিয়াই পৰীক্ষা কৰাটো চুপাৰিছ কৰে।}other{হেক কৰা পাছৱৰ্ডটো সফলভাৱে সলনি কৰা হ’ল। আপোনাৰ আৰু # টা হেক কৰা পাছৱৰ্ড আছে। Chromeএ এই পাছৱৰ্ডসমূহ এতিয়াই পৰীক্ষা কৰাটো চুপাৰিছ কৰে।}}</translation>
 <translation id="5207949376430453814">পাঠৰ কেৰেট হাইলাইট কৰক</translation>
 <translation id="5209320130288484488">কোনো ডিভাইচ বিচাৰি পোৱা নগ’ল</translation>
+<translation id="5209572028385096813">এই ব্যৱহাৰকাৰীগৰাকীক Family Linkএ পৰিচালনা কৰে</translation>
 <translation id="5210365745912300556">টেব বন্ধ কৰক</translation>
 <translation id="5213481667492808996">আপোনাৰ '<ph name="NAME" />' ডেটা সেৱাটো ব্যৱহাৰৰ বাবে সাজু</translation>
 <translation id="5213891612754844763">প্ৰক্সি ছেটিংসমূহ দেখুৱাওক</translation>
@@ -3700,6 +3710,7 @@
 <translation id="5302048478445481009">ভাষা</translation>
 <translation id="5302932258331363306">সলনা-সলনিবোৰ দেখুৱাওক</translation>
 <translation id="5304276686222516262">সম্পৰ্ক সূচী ডাউনল’ড কৰিব পৰা নগ’ল। অনুগ্ৰহ কৰি আপোনাৰ নেটৱৰ্ক সংযোগ পৰীক্ষা কৰক অথবা &lt;a href="#" id="tryAgainLink"&gt;পুনৰ চেষ্টা কৰক&lt;/a&gt;।</translation>
+<translation id="5305145881844743843">এই একাউণ্টটো <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" />এ পৰিচালনা কৰে</translation>
 <translation id="5305688511332277257">এটাও ইনষ্টল কৰা হোৱা নাই</translation>
 <translation id="5307030433605830021">উৎস সমর্থিত নহয়</translation>
 <translation id="5308380583665731573">সংযোগ কৰক</translation>
@@ -4080,6 +4091,7 @@
 <translation id="5740820643029013514">আগতকৈ নীৰৱ বাৰ্তা আদান-প্ৰদানৰ সুবিধা ব্যৱহাৰ কৰক (চুপাৰিছ কৰা হয়)</translation>
 <translation id="574104302965107104">প্ৰতিবিম্বকৰণ দেখুৱাওক</translation>
 <translation id="574209121243317957">পিচ্চ</translation>
+<translation id="5742505912938664543">আপুনি ইয়াত এটা গৌণ একাউণ্ট যোগ দিলে, সেই একাউণ্টটো ব্যৱহাৰ কৰি আপুনি ৱেব ব্ৰাউজ কৰিব পাৰিব, এপ্‌ ডাউনল’ড কৰিব পাৰিব, নিজৰ Gmail আৰু অন্য Google সেৱাসমূহ ব্যৱহাৰ কৰিব পাৰিব।</translation>
 <translation id="5746169159649715125">PDF হিচাপে ছেভ কৰক</translation>
 <translation id="5747552184818312860">এই সময়ত ম্যাদ উকলিব</translation>
 <translation id="5747785204778348146">বিকাশকৰ্তা - বিকাশ সম্পূৰ্ণ হোৱা নাই</translation>
@@ -4419,6 +4431,7 @@
 <translation id="6129953537138746214">স্পেচ</translation>
 <translation id="6130692320435119637">ৱাই-ফাই যোগ দিয়ক</translation>
 <translation id="6136114942382973861">ডাউনল’ডৰ বাৰডাল বন্ধ কৰক</translation>
+<translation id="6136287496450963112">আপোনাৰ সুৰক্ষা সম্পৰ্কীয় চাবি এটা পিনৰ দ্বাৰা সুৰক্ষিত নহয়। ফিংগাৰপ্ৰিণ্ট পৰিচালনা কৰিবলৈ, প্ৰথমে এটা পিন সৃষ্টি কৰক।</translation>
 <translation id="6137767437444130246">ব্যৱহাৰকাৰীৰ প্ৰমাণপত্ৰ</translation>
 <translation id="6138680304137685902">SHA-384ৰ সৈতে X9.62 ECDSA স্বাক্ষৰ</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, কোনো নেটৱৰ্ক নাই</translation>
@@ -4599,6 +4612,7 @@
 <translation id="6331566915566907158">Chrome OSৰ সুবিধাসমূহ আৰু কার্যদক্ষতা উন্নত কৰাত সহায় কৰক</translation>
 <translation id="6331818708794917058">ছাইটসমূহে MIDI ডিভাইচৰ সৈতে সংযোগ কৰিবলৈ বিচাৰিব পাৰে</translation>
 <translation id="6333064448949140209">ডিবাগ কৰাৰ বাবে Google লৈ ফাইল পঠিওৱা হ’ব</translation>
+<translation id="6334444530352320327">আপোনাৰ এপ্‌ আৰু OSৰ ছেটিং সেই আটাইবোৰ Chromebookত ছিংক কৰা হ’ব য’ত আপুনি এই Google একাউণ্টটোৰে ছাইন ইন কৰি থৈছে।<ph name="LINK_BEGIN" />ছিংকৰ ছেটিং<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">সকলো ছাইটে আপোনাক যিকোনো বিজ্ঞাপন দেখুৱাব পাৰে</translation>
 <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" />ৰ বাবে এটা নতুন প্ৰ’ফাইল সৃষ্টি কৰক</translation>
 <translation id="6340017061976355871">ছার্ভাৰৰ সৈতে সংযোগ কৰিব পৰা নগ’ল। আপোনাৰ নেটৱৰ্ক সংযোগ পৰীক্ষা কৰি আকৌ চেষ্টা কৰক। যদিহে সমস্যাটো সমাধান নহয় তেন্তে আপোনাৰ Chromebook ৰিষ্টার্ট কৰক।</translation>
@@ -4897,6 +4911,7 @@
 <translation id="6709133671862442373">News</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> ব্যৱহাৰ কৰি সংযোগ কৰক</translation>
 <translation id="6710213216561001401">পূৰ্বৱৰ্তী</translation>
+<translation id="6713233729292711163">কৰ্মস্থানৰ প্ৰ’ফাইল যোগ দিয়ক</translation>
 <translation id="6715803357256707211">আপোনাৰ Linux এপ্লিকেশ্বনটো ইনষ্টল কৰাৰ সময়ত এটা আসোঁৱাহৰ সৃষ্টি হৈছে। সবিশেষৰ বাবে জাননীটোত ক্লিক কৰক।</translation>
 <translation id="671619610707606484">এই কাৰ্যই ছাইটসমূহে ষ্ট’ৰ কৰা <ph name="TOTAL_USAGE" /> ডেটা মচিব</translation>
 <translation id="671928215901716392">লক স্ক্ৰীণ</translation>
@@ -5264,6 +5279,7 @@
 <translation id="7121362699166175603">ঠিকনাৰ বাৰত ইতিহাস আৰু স্বয়ংক্ৰিয়ভাৱে পুৰ হোৱা তথ্য মচে। <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />ত আপোনাৰ Google একাউণ্টৰ অন্য প্ৰকাৰৰ ব্ৰাউজিং ইতিহাস থাকিব পাৰে।</translation>
 <translation id="7121438501124788993">বিকাশকর্তাৰ ম’ড</translation>
 <translation id="7121728544325372695">স্মাৰ্ট ডেশ্বসমূহ</translation>
+<translation id="7122353087820324370">এপ্‌ আৰু OS ছেটিংসমূহ গৌণ একাউণ্টৰ সৈতে ছিংক কৰা নাই।</translation>
 <translation id="7123030151043029868">স্বয়ংক্ৰিয়ভাৱে একাধিক ফাইল ডাউনল’ড কৰাৰ অনুমতি আছে</translation>
 <translation id="7123360114020465152">এতিয়া আৰু সমৰ্থিত নহয়</translation>
 <translation id="7125148293026877011">Crostini মচক</translation>
@@ -5579,6 +5595,7 @@
 <translation id="750509436279396091">ডাউনল’ড ফ’ল্ডাৰ খোলক</translation>
 <translation id="7506093026325926984">এই পাছৱর্ডটো এই ডিভাইচটোত ছেভ কৰা হ’ব</translation>
 <translation id="7506130076368211615">নতুন নেটৱৰ্ক ছেট আপ কৰক</translation>
+<translation id="7506242536428928412">আপোনাৰ নতুন সুৰক্ষা সম্পৰ্কীয় চাবি ব্যৱহাৰ কৰিবলৈ এটা নতুন পিন ছেট কৰক</translation>
 <translation id="7506541170099744506">আপোনাৰ <ph name="DEVICE_TYPE" />ক এণ্টাৰপ্ৰাইজ পৰিচালনাৰ বাবে পঞ্জীয়ন কৰা হৈছে।</translation>
 <translation id="7507207699631365376">এই প্ৰদানকাৰীৰ <ph name="BEGIN_LINK" />গোপনীয়তাৰ নীতি<ph name="END_LINK" /> চাওক</translation>
 <translation id="7507930499305566459">স্থিতি উত্তৰদাতাৰ প্ৰমাণপত্ৰ</translation>
@@ -5740,6 +5757,7 @@
 <translation id="7691077781194517083">এই সুৰক্ষা চাবিটো ৰিছেট কৰিব নোৱাৰি। আসোঁৱাহ <ph name="ERROR_CODE" />।</translation>
 <translation id="7691698019618282776">Crostiniৰ আপগ্ৰে’ড</translation>
 <translation id="7696063401938172191">আপোনাৰ '<ph name="PHONE_NAME" />'ত:</translation>
+<translation id="7697166915480294040">আপুনি নিজৰ স্ক্ৰীনখন শ্বেয়াৰ কৰিলে সবিশেষ লুকুওৱা হয়</translation>
 <translation id="7697598343108519171">কিউআৰ ক’ড স্কেন কৰিবলৈ কেমেৰা ব্যৱহাৰ কৰক</translation>
 <translation id="7699968112832915395">একাউণ্ট যোগ কৰিব নোৱাৰি</translation>
 <translation id="7701040980221191251">নাই</translation>
@@ -6196,6 +6214,8 @@
 <translation id="8184472985242519288">অভিন্ন</translation>
 <translation id="8186609076106987817">ছাৰ্ভাৰে ফাইলটো বিচাৰি নাপালে।</translation>
 <translation id="8188389033983459049">আপোনাৰ ডিভাইচৰ ছেটিংসমূহ পৰীক্ষা কৰক আৰু অব্যাহত ৰাখিবলৈ ব্লুটুথ অন কৰক</translation>
+<translation id="8189306097519446565">বিদ্যালয়ৰ একাউণ্ট</translation>
+<translation id="8189750580333936930">গোপনীয়তা ছেণ্ডবক্স</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" />ৰ সৈতে সংযোগ কৰি থকা হৈছে</translation>
 <translation id="8191230140820435481">আপোনাৰ এপ্‌, এক্সটেনশ্বন ,আৰু থীম পৰিচালনা কৰক</translation>
 <translation id="8195027750202970175">ডিস্কত থকা ঠাই</translation>
@@ -6887,6 +6907,7 @@
 <translation id="8986362086234534611">পাহৰক</translation>
 <translation id="8986494364107987395">স্বয়ংক্ৰিয়ভাৱে Googleলৈ ব্যৱহাৰৰ পৰিসংখ্যা আৰু ক্ৰেশ্ব ৰিপ’ৰ্ট পঠিয়াওক</translation>
 <translation id="8987927404178983737">মাহ</translation>
+<translation id="8989823300731803443">আপুনি পূৰ্বতে এৰাৰ পৰা পুনৰ আৰম্ভ কৰক।</translation>
 <translation id="8990209962746788689">কিউআৰ ক’ড সৃষ্টি কৰিব নোৱাৰি</translation>
 <translation id="8991520179165052608">ছাইটে আপোনাৰ ডিভাইচৰ মাইক্ৰ’ফ’ন ব্যৱহাৰ কৰিব পাৰে</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{১ টা বস্তু}one{# টা বস্তু}other{# টা বস্তু}}</translation>
@@ -7116,7 +7137,6 @@
 <translation id="952992212772159698">সক্ৰিয় কৰা হোৱা নাই</translation>
 <translation id="956500788634395331">আপুনি সম্ভাব্য ক্ষতিকাৰক এক্সটেনশ্বনসমূহৰ পৰা সুৰক্ষিত</translation>
 <translation id="957960681186851048">এই ছাইটটোৱে স্বয়ংক্ৰিয়ভাৱে একাধিক ফাইল ডাউনল’ড কৰাৰ চেষ্টা কৰিছিল</translation>
-<translation id="9580706199804957">Google সেৱাসমূহৰ সৈতে সংযোগ কৰিব পৰা নগ’ল</translation>
 <translation id="958329785990007682">Javascriptক অৱৰোধ কৰক</translation>
 <translation id="960719561871045870">অপাৰেটৰ ক’ড</translation>
 <translation id="960987915827980018">প্ৰায় ১ ঘণ্টা বাকী আছে</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb
index 7a5e8ac..4625e14 100644
--- a/chrome/app/resources/generated_resources_az.xtb
+++ b/chrome/app/resources/generated_resources_az.xtb
@@ -2142,7 +2142,6 @@
 <translation id="3441653493275994384">Ekran</translation>
 <translation id="3441663102605358937"><ph name="ACCOUNT" /> hesabına yenidən daxil olaraq bu hesabı doğrulayın</translation>
 <translation id="3445047461171030979">Google Assistent cəld cavablar</translation>
-<translation id="3445770710327978113">Bura cəld qayıtmaq üçün bu tətbiqi quraşdırın</translation>
 <translation id="3445925074670675829">USB-C cihazı</translation>
 <translation id="3446274660183028131">Windows'u quraşdırmaq üçün Parallels Desktop'u işə salın.</translation>
 <translation id="344630545793878684">Datanızı çoxsaylı vebsaytda oxuyun</translation>
@@ -2626,7 +2625,6 @@
 <translation id="3955163004258753966">Təkmilləşdirməni başladarkən xəta oldu</translation>
 <translation id="3955193568934677022">Saytlara qorunan datanı oxumağa icazə verin (tövsiyə olunur)</translation>
 <translation id="3955896417885489542">Quraşdırdıqdan sonra Google Play seçimlərini nəzərdən keçirin</translation>
-<translation id="3956702100721821638">Google Play'ə daxil olmaq mümkün deyil</translation>
 <translation id="3957079323242030166">Yedəkləmə datası Disk yaddaşı kvotanıza aid edilməyəcək.</translation>
 <translation id="3957844511978444971">Bu Google xidmət ayarlarını seçdiyinizi təsdiq etmək üçün "Razıyam" düyməsinə klikləyin.</translation>
 <translation id="3958088479270651626">Əlfəcinləri və ayarları import edin...</translation>
@@ -7141,7 +7139,6 @@
 <translation id="952992212772159698">Aktiv edilməyib</translation>
 <translation id="956500788634395331">Potensial zərərli artırmalardan qorunursunuz</translation>
 <translation id="957960681186851048">Bu sayt çoxsaylı faylları avtomatik endirməyə cəhd etdi</translation>
-<translation id="9580706199804957">Google xidmətləri ilə qoşulmaq mümkün deyil</translation>
 <translation id="958329785990007682">Javascript'i bloklayın</translation>
 <translation id="960719561871045870">Operator kodu</translation>
 <translation id="960987915827980018">Təxminən 1 saat qalıb</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb
index fe2fe8d..01c2177 100644
--- a/chrome/app/resources/generated_resources_be.xtb
+++ b/chrome/app/resources/generated_resources_be.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">Няма сетак</translation>
 <translation id="1056898198331236512">Папярэджанне</translation>
 <translation id="1058262162121953039">PUK-код</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Увядзіце новы PIN-код. Мінімальная колькасць сімвалаў – адзін, дазваляюцца літары, лічбы і іншыя сімвалы.}one{Увядзіце новы PIN-код. Мінімальная колькасць сімвалаў – #, дазваляюцца літары, лічбы і іншыя сімвалы.}few{Увядзіце новы PIN-код. Мінімальная колькасць сімвалаў – #, дазваляюцца літары, лічбы і іншыя сімвалы.}many{Увядзіце новы PIN-код. Мінімальная колькасць сімвалаў – #, дазваляюцца літары, лічбы і іншыя сімвалы.}other{Увядзіце новы PIN-код. Мінімальная колькасць сімвалаў – #, дазваляюцца літары, лічбы і іншыя сімвалы.}}</translation>
 <translation id="1059944192885972544">Знойдзена некалькі (<ph name="NUM" />) укладак па запыце "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="1060292118287751956">Вызначае частату абнаўлення экрана</translation>
 <translation id="1061904396131502319">Набліжаецца час блакіроўкі</translation>
@@ -639,9 +640,11 @@
 <translation id="1688935057616748272">Увядзіце літару</translation>
 <translation id="168991973552362966">Дадаць прынтар паблізу</translation>
 <translation id="1689945336726856614">Скапіраваць &amp;URL-адрас</translation>
+<translation id="1690248886740053041">Не ўдалося падключыцца да мабільнай сеткі. Па тэхнічную падтрымку звяртайцеся да свайго аператара.</translation>
 <translation id="1692115862433274081">Выкарыстаць іншы ўліковы запіс</translation>
 <translation id="1692118695553449118">Сінхранізацыя ўключана</translation>
 <translation id="1692210323591458290">Цёмна-фіялетавы</translation>
+<translation id="169279809881363536">Профіляў не выяўлена. Каб наладзіць новую сетку, адсканіруйце QR-код камерай прылады або ўвядзіце код актывацыі, атрыманы ад аператара.</translation>
 <translation id="1697150536837697295">Мастацтва</translation>
 <translation id="1697686431566694143">Змяніць файл</translation>
 <translation id="1698122934742150150">Толькі бягучы сеанс інкогніта</translation>
@@ -1578,6 +1581,7 @@
 <translation id="2770465223704140727">Выдаліць са спіса</translation>
 <translation id="2770690685823456775">Экспартуйце свае паролі ў іншую папку</translation>
 <translation id="2770929488047004208">Раздзяляльнасць манітора</translation>
+<translation id="2770954829020464827">Пакуль ваш экран абагульваецца, падрабязныя звесткі не будуць паказвацца</translation>
 <translation id="2771268254788431918">Мабільная перадача даных актывавана</translation>
 <translation id="2771816809568414714">Сыр</translation>
 <translation id="2772936498786524345">Ніндзя</translation>
@@ -1946,6 +1950,7 @@
 <translation id="3201422919974259695">Тут з'явяцца даступныя прылады USB.</translation>
 <translation id="3202131003361292969">Шлях</translation>
 <translation id="3202173864863109533">Гук на гэтай укладцы выключаны.</translation>
+<translation id="3202218848974251205">Пясочніца прыватнасці</translation>
 <translation id="3208321278970793882">Праграма</translation>
 <translation id="3208584281581115441">Праверыць</translation>
 <translation id="3208703785962634733">Непацверджаны</translation>
@@ -2145,7 +2150,6 @@
 <translation id="3441653493275994384">Экран</translation>
 <translation id="3441663102605358937">Каб спраўдзіць уліковы запіс <ph name="ACCOUNT" />, увайдзіце ў яго</translation>
 <translation id="3445047461171030979">Хуткія адказы Памочніка Google</translation>
-<translation id="3445770710327978113">Каб хутка вяртацца сюды, усталюйце гэту праграму</translation>
 <translation id="3445925074670675829">Прылада USB-C</translation>
 <translation id="3446274660183028131">Каб усталяваць Windows, запусціце Parallels Desktop.</translation>
 <translation id="344630545793878684">Прагляд вашых даных на шэрагу вэб-сайтаў</translation>
@@ -2166,6 +2170,7 @@
 <translation id="3459697287128633276">Каб атрымаць доступ да Крамы Google Play праз ваш уліковы запіс, прайдзіце аўтэнтыфікацыю з дапамогай пастаўшчыка пасведчанняў.</translation>
 <translation id="3462311546193741693">Будзе выкананы выхад з большасці сайтаў. З Уліковага запісу Google вы не выйдзеце, таму сінхранізаваныя даныя захаваюцца.</translation>
 <translation id="3462413494201477527">Скасаваць наладку ўліковага запісу?</translation>
+<translation id="3464145797867108663">Дадаць працоўны профіль</translation>
 <translation id="346431825526753">Гэта ўліковы запіс для дзяцей, якім кіруе <ph name="CUSTODIAN_EMAIL" />.</translation>
 <translation id="3468298837301810372">Метка</translation>
 <translation id="3468999815377931311">Тэлефон Android</translation>
@@ -2287,6 +2292,7 @@
 <translation id="360180734785106144">Прапаноўваць новыя функцыі, як толькі яны з'яўляюцца</translation>
 <translation id="3602290021589620013">Перадпрагляд</translation>
 <translation id="3603622770190368340">Атрыманне сертыфіката сеткі</translation>
+<translation id="3604193429970465812">Дадатковыя ўліковыя запісы</translation>
 <translation id="3604713164406837697">Змяніць шпалеры</translation>
 <translation id="3605780360466892872">Бізнесмен</translation>
 <translation id="3608576286259426129">Папярэдні прагляд відарыса карыстальніка</translation>
@@ -2425,6 +2431,7 @@
 <translation id="3753033997400164841">Захоўвайце адзін раз – выкарыстоўвайце ўсюды</translation>
 <translation id="3755411799582650620">Зараз прыладу <ph name="DEVICE_TYPE" /> можна разблакіраваць таксама з тэлефона <ph name="PHONE_NAME" />.</translation>
 <translation id="375636864092143889">Сайт выкарыстоўвае мікрафон</translation>
+<translation id="3756578970075173856">Задаць PIN-код</translation>
 <translation id="3757733214359997190">Сайты не знойдзены</translation>
 <translation id="375841316537350618">Ідзе спампоўванне сцэнарыя проксі-сервера...</translation>
 <translation id="3758842566811519622">Файлы cookie зададзены</translation>
@@ -2610,6 +2617,7 @@
 
   Запусціць <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation>
 <translation id="394183848452296464">Не ўдалося стварыць ярлык</translation>
+<translation id="3943494825379372497">Аднавіць праграмы і старонкі?</translation>
 <translation id="3943582379552582368">&amp;Назад</translation>
 <translation id="3943857333388298514">Уставіць</translation>
 <translation id="3948116654032448504">&amp;Пошук відарыса праз <ph name="SEARCH_ENGINE" /></translation>
@@ -2625,7 +2633,6 @@
 <translation id="3955163004258753966">Памылка запуску абнаўлення</translation>
 <translation id="3955193568934677022">Дазволіць сайтам прайграваць абароненае змесціва (рэкамендуецца)</translation>
 <translation id="3955896417885489542">Адкрыць параметры Google Play пасля наладкі</translation>
-<translation id="3956702100721821638">Не ўдалося атрымаць доступ да Google Play</translation>
 <translation id="3957079323242030166">Даныя рэзервовага капіравання не будуць улічвацца ў квоце сховішча на Дыску.</translation>
 <translation id="3957844511978444971">Націсніце кнопку "Прыняць", каб пацвердзіць выбар гэтых налад сэрвісаў Google.</translation>
 <translation id="3958088479270651626">Імпарт закладак і налад</translation>
@@ -2695,6 +2702,7 @@
 <translation id="4046013316139505482">Гэтым пашырэнням не трэба праглядаць і змяняць інфармацыю на гэтым сайце.</translation>
 <translation id="4046123991198612571">Наступны трэк</translation>
 <translation id="4047726037116394521">Перайсці на галоўную старонку</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{# кантакт недаступны. Каб абагульваць з ім даныя з выкарыстаннем функцыі "Абагульванне паблізу", дадайце ў свае кантакты адрас электроннай пошты, звязаны з Уліковым запісам Google гэтага чалавека.}one{# кантакт недаступны. Каб абагульваць з імі даныя з выкарыстаннем функцыі "Абагульванне паблізу", дадайце ў свае кантакты адрасы электроннай пошты, звязаныя з Уліковымі запісамі Google гэтых людзей.}few{# кантакты недаступныя. Каб абагульваць з імі даныя з выкарыстаннем функцыі "Абагульванне паблізу", дадайце ў свае кантакты адрасы электроннай пошты, звязаныя з Уліковымі запісамі Google гэтых людзей.}many{# кантактаў недаступныя. Каб абагульваць з імі даныя з выкарыстаннем функцыі "Абагульванне паблізу", дадайце ў свае кантакты адрасы электроннай пошты, звязаныя з Уліковымі запісамі Google гэтых людзей.}other{# кантакту недаступныя. Каб абагульваць з імі даныя з выкарыстаннем функцыі "Абагульванне паблізу", дадайце ў свае кантакты адрасы электроннай пошты, звязаныя з Уліковымі запісамі Google гэтых людзей.}}</translation>
 <translation id="4050225813016893843">Спосаб аўтэнтыфікацыі</translation>
 <translation id="4052120076834320548">Дробны</translation>
 <translation id="4056908315660577142">Скончыўся ліміт часу, зададзены вашымі бацькамі для праграмы Chrome "<ph name="APP_NAME" />". Заўтра ёю можна будзе карыстацца <ph name="TIME_LIMIT" />.</translation>
@@ -3341,6 +3349,7 @@
 <translation id="4863769717153320198">Здаецца, гэта <ph name="WIDTH" /> × <ph name="HEIGHT" /> (стандартная)</translation>
 <translation id="4864369630010738180">Уваход...</translation>
 <translation id="4864805589453749318">Выберыце, хто з бацькоў дае дазвол дадаць навучальны ўліковы запіс.</translation>
+<translation id="4866265760644917470">Профіль дададзены.</translation>
 <translation id="486635084936119914">Аўтаматычна адкрываць пэўныя тыпы файлаў пасля спампоўвання</translation>
 <translation id="48704129375571883">Дадаць дадатковыя функцыі</translation>
 <translation id="4870758487381879312">Каб атрымаць звесткі пра канфігурацыю, увядзіце атрыманы ад адміністратара пароль</translation>
@@ -3624,6 +3633,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{Раскрыты пароль зменены. Застаўся яшчэ # раскрыты пароль. Chrome рэкамендуе праверыць гэты пароль зараз.}one{Раскрыты пароль зменены. Застаўся яшчэ # раскрыты пароль. Chrome рэкамендуе праверыць гэтыя паролі зараз.}few{Раскрыты пароль зменены. Засталіся яшчэ # раскрытыя паролі. Chrome рэкамендуе праверыць гэтыя паролі зараз.}many{Раскрыты пароль зменены. Засталіся яшчэ # раскрытых пароляў. Chrome рэкамендуе праверыць гэтыя паролі зараз.}other{Раскрыты пароль зменены. Засталіся яшчэ # раскрытага пароля. Chrome рэкамендуе праверыць гэтыя паролі зараз.}}</translation>
 <translation id="5207949376430453814">Указваць на курсор рэдагавання тэксту</translation>
 <translation id="5209320130288484488">Прылады не знойдзены</translation>
+<translation id="5209572028385096813">Кіраванне гэтым карыстальнікам ажыццяўляецца праз Family Link</translation>
 <translation id="5210365745912300556">Закрыць укладку</translation>
 <translation id="5213481667492808996">Сэрвіс перадачы даных "<ph name="NAME" />" гатовы да выкарыстання</translation>
 <translation id="5213891612754844763">Паказаць налады проксі-сервера</translation>
@@ -3709,6 +3719,7 @@
 <translation id="5302048478445481009">Мова</translation>
 <translation id="5302932258331363306">Паказваць варыянты замены</translation>
 <translation id="5304276686222516262">Не ўдалося спампаваць спіс кантактаў. Праверце падключэнне да сеткі або &lt;a href="#" id="tryAgainLink"&gt;паўтарыце спробу&lt;/a&gt;.</translation>
+<translation id="5305145881844743843">Гэтым уліковым запісам кіруе <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" />.</translation>
 <translation id="5305688511332277257">Нічога не ўсталявана</translation>
 <translation id="5307030433605830021">Крыніца не падтрымліваецца</translation>
 <translation id="5308380583665731573">Падключыцца</translation>
@@ -4090,6 +4101,7 @@
 <translation id="5740820643029013514">Задаць радзейшы паказ апавяшчэнняў (рэкамендуецца)</translation>
 <translation id="574104302965107104">Адлюстраванне дысплэя</translation>
 <translation id="574209121243317957">Вышыня голасу</translation>
+<translation id="5742505912938664543">Калі вы дадасце сюды дадатковы ўліковы запіс, то зможаце выкарыстоўваць яго для прагляду вэб-сайтаў, спампоўвання праграм, праверкі пошты Gmail і ўзаемадзеяння з іншымі сэрвісамі Google.</translation>
 <translation id="5746169159649715125">Захаваць як PDF</translation>
 <translation id="5747552184818312860">Тэрмін дзеяння:</translation>
 <translation id="5747785204778348146">Распрацоўшчык – нестабільны параметр</translation>
@@ -4430,6 +4442,7 @@
 <translation id="6129953537138746214">Прабел</translation>
 <translation id="6130692320435119637">Дадаць сетку Wi-Fi</translation>
 <translation id="6136114942382973861">Закрыць панэль спамповак</translation>
+<translation id="6136287496450963112">Ключ бяспекі не абаронены PIN-кодам. Каб кіраваць адбіткамі пальцаў, спачатку стварыце PIN-код.</translation>
 <translation id="6137767437444130246">Сертыфікат карыстальніка</translation>
 <translation id="6138680304137685902">Подпіс X9.62 ECDSA з SHA-384</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, няма сеткі</translation>
@@ -4610,6 +4623,7 @@
 <translation id="6331566915566907158">Дапамагаць паляпшаць функцыі і прадукцыйнасць Chrome OS</translation>
 <translation id="6331818708794917058">Сайты могуць запытваць дазвол на падключэнне да прылад MIDI</translation>
 <translation id="6333064448949140209">Файл будзе адпраўлены ў Google на адладку</translation>
+<translation id="6334444530352320327">Вашы праграмы і налады АС будуць сінхранізавацца паміж прыладамі Chromebook, на якіх вы ўвайшлі ў гэты ўліковы запіс. <ph name="LINK_BEGIN" />Налады сінхранізацыі<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">Усе сайты могуць паказваць любую рэкламу</translation>
 <translation id="6339668969738228384">Стварыць новы профіль для карыстальніка <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="6340017061976355871">Не атрымалася падключыцца да сервера. Праверце падключэнне да сеткі і паўтарыце спробу. Калі праблема не знікне, перазапусціце Chromebook.</translation>
@@ -4911,6 +4925,7 @@
 <translation id="6709133671862442373">Навіны</translation>
 <translation id="6709357832553498500">Падключыцца праз: <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Назад</translation>
+<translation id="6713233729292711163">Дадаць працоўны профіль</translation>
 <translation id="6715803357256707211">Адбылася памылка падчас усталявання Linux-праграмы. Каб даведацца больш, націсніце на апавяшчэнне.</translation>
 <translation id="671619610707606484">Будуць выдалены даныя (<ph name="TOTAL_USAGE" />), захаваныя сайтамі</translation>
 <translation id="671928215901716392">Экран блакіроўкі</translation>
@@ -5279,6 +5294,7 @@
 <translation id="7121362699166175603">Ачышчае гісторыю і гісторыю аўтазапаўнення ў адрасным радку. На сайце <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> размешчаны іншыя формы запісу гісторыі прагляду сайтаў для вашага Уліковага запісу Google.</translation>
 <translation id="7121438501124788993">Рэжым распрацоўшчыка</translation>
 <translation id="7121728544325372695">Пераўтварэнне працяжнікаў</translation>
+<translation id="7122353087820324370">Праграмы і налады АС не сінхранізуюцца з дадатковымі ўліковымі запісамі.</translation>
 <translation id="7123030151043029868">Дазволена аўтаматычна спампоўваць некалькі файлаў</translation>
 <translation id="7123360114020465152">Больш не падтрымліваецца</translation>
 <translation id="7125148293026877011">Выдаліць Crostini</translation>
@@ -5594,6 +5610,7 @@
 <translation id="750509436279396091">Адкрыць папку спамповак</translation>
 <translation id="7506093026325926984">Пароль будзе захаваны на гэтай прыладзе</translation>
 <translation id="7506130076368211615">Наладзіць новую сетку</translation>
+<translation id="7506242536428928412">Каб выкарыстоўваць новы ключ бяспекі, задайце новы PIN-код</translation>
 <translation id="7506541170099744506">Ваша прылада (<ph name="DEVICE_TYPE" />) паспяхова зарэгістравана для карпаратыўнага кіравання.</translation>
 <translation id="7507207699631365376">Азнаёміцца з <ph name="BEGIN_LINK" />палітыкай прыватнасці<ph name="END_LINK" /> гэтага пастаўшчыка</translation>
 <translation id="7507930499305566459">Сертыфікат паведамлення аб стане</translation>
@@ -5757,6 +5774,7 @@
 <translation id="7691077781194517083">Не ўдалося скінуць гэты ключ бяспекі. Памылка: <ph name="ERROR_CODE" />.</translation>
 <translation id="7691698019618282776">Абнаўленне Crostini</translation>
 <translation id="7696063401938172191">На тэлефоне "<ph name="PHONE_NAME" />":</translation>
+<translation id="7697166915480294040">Пакуль ваш экран абагульваецца, падрабязныя звесткі не будуць паказвацца</translation>
 <translation id="7697598343108519171">Адсканіраваць QR-код з дапамогай камеры</translation>
 <translation id="7699968112832915395">Дадаць уліковы запіс нельга</translation>
 <translation id="7701040980221191251">Няма</translation>
@@ -6213,6 +6231,8 @@
 <translation id="8184472985242519288">Аднастайны</translation>
 <translation id="8186609076106987817">Сервер не знайшоў файл.</translation>
 <translation id="8188389033983459049">Каб працягнуць, праверце налады прылады і ўключыце яе</translation>
+<translation id="8189306097519446565">Навучальныя ўліковыя запісы</translation>
+<translation id="8189750580333936930">Пясочніца прыватнасці</translation>
 <translation id="8190193592390505034">Ідзе падключэнне да правайдара <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Кіраваць праграмамі, пашырэннямі і тэмамі</translation>
 <translation id="8195027750202970175">Месца на дыску</translation>
@@ -6907,6 +6927,7 @@
 <translation id="8986362086234534611">Забыць</translation>
 <translation id="8986494364107987395">Аўтаматычна адпраўляць у Google статыстыку выкарыстання і справаздачы аб збоях</translation>
 <translation id="8987927404178983737">Месяц</translation>
+<translation id="8989823300731803443">Працягвайце з месца, на якім спыніліся.</translation>
 <translation id="8990209962746788689">Не ўдалося стварыць QR-код</translation>
 <translation id="8991520179165052608">Сайт можа выкарыстоўваць ваш мікрафон</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{1 элемента}one{# элемента}few{# элементаў}many{# элементаў}other{# элемента}}</translation>
@@ -7136,7 +7157,6 @@
 <translation id="952992212772159698">Неактыўнае</translation>
 <translation id="956500788634395331">Вы абаронены ад патэнцыйна шкодных пашырэнняў</translation>
 <translation id="957960681186851048">Гэты сайт паспрабаваў аўтаматычна спампаваць некалькі файлаў</translation>
-<translation id="9580706199804957">Не ўдалося падключыцца да сэрвісаў Google</translation>
 <translation id="958329785990007682">Блакіраваць JavaScript</translation>
 <translation id="960719561871045870">Код аператара</translation>
 <translation id="960987915827980018">Засталася прыкладна гадзіна</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index 9ded663..3924fbc 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -2144,7 +2144,6 @@
 <translation id="3441653493275994384">Екран</translation>
 <translation id="3441663102605358937">Влезте в <ph name="ACCOUNT" /> отново, за да потвърдите този профил</translation>
 <translation id="3445047461171030979">Кратки отговори на Google Асистент</translation>
-<translation id="3445770710327978113">За да можете да се връщате тук бързо, инсталирайте това приложение</translation>
 <translation id="3445925074670675829">USB-C устройство</translation>
 <translation id="3446274660183028131">Моля, стартирайте Parallels Desktop, за да инсталирате Windows.</translation>
 <translation id="344630545793878684">Четене на данните ви от редица уебсайтове</translation>
@@ -2630,7 +2629,6 @@
 <translation id="3955163004258753966">Грешка при стартирането на надстройването</translation>
 <translation id="3955193568934677022">Разрешаване на сайтовете да възпроизвеждат защитено съдържание (препоръчително)</translation>
 <translation id="3955896417885489542">Преглед на опциите за Google Play след настройването</translation>
-<translation id="3956702100721821638">Не можа да се установи връзка с Google Play</translation>
 <translation id="3957079323242030166">Данните в резервното копие не се отчитат в квотата на хранилището ви в Диск.</translation>
 <translation id="3957844511978444971">Докоснете „Приемам“, за да потвърдите избора си на съответните настройки за услугите на Google.</translation>
 <translation id="3958088479270651626">Импортиране на отметки и настройки</translation>
@@ -7154,7 +7152,6 @@
 <translation id="952992212772159698">Не е активиран</translation>
 <translation id="956500788634395331">Защитени сте от потенциално опасни разширения</translation>
 <translation id="957960681186851048">Този сайт опита да изтегли автоматично няколко файла</translation>
-<translation id="9580706199804957">Не можа да се установи връзка с услугите на Google</translation>
 <translation id="958329785990007682">Блокиране на JavaScript</translation>
 <translation id="960719561871045870">Код на оператора</translation>
 <translation id="960987915827980018">Остава около 1 час</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index dbcf001fb..d895f856 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">বাছাই করুন</translation>
 <translation id="3441663102605358937">এই অ্যাকাউন্ট যাচাই করতে <ph name="ACCOUNT" />-এ সাইন-ইন করুন</translation>
 <translation id="3445047461171030979">Google Assistant-এর ঝটপট উত্তর</translation>
-<translation id="3445770710327978113">এখানে আবার তাড়াতাড়ি ফিরে আসতে, এই অ্যাপ ইনস্টল করুন</translation>
 <translation id="3445925074670675829">USB-C ডিভাইস</translation>
 <translation id="3446274660183028131">Windows ইনস্টল করতে Parallels Desktop চালু করুন।</translation>
 <translation id="344630545793878684">কতগুলি ওয়েবসাইটে আপনার ডেটা পড়ে</translation>
@@ -2630,7 +2629,6 @@
 <translation id="3955163004258753966">আপগ্রেড শুরু করতে সমস্যা হচ্ছে</translation>
 <translation id="3955193568934677022">সুরক্ষিত কন্টেন্ট প্লে করতে সাইটগুলিকে মঞ্জুরি দিন (প্রস্তাবিত)</translation>
 <translation id="3955896417885489542">সেট-আপের পর Google Play অ্যাপের বিকল্প পর্যালোচনা করুন</translation>
-<translation id="3956702100721821638">Google Play খোলা যায়নি</translation>
 <translation id="3957079323242030166">ব্যাক-আপ ডেটা আপনার Drive স্টোরেজ কোটার মধ্যে ধরা হয় না।</translation>
 <translation id="3957844511978444971">আপনি যে Google-এর এই পরিষেবাগুলির সেটিংস বেছে নিয়েছেন তা কনফার্ম করতে “স্বীকার করুন” বোতামে ট্যাপ করুন।</translation>
 <translation id="3958088479270651626">বুকমার্কস এবং সেটিংস ইমপোর্ট করুন</translation>
@@ -7154,7 +7152,6 @@
 <translation id="952992212772159698">সক্রিয় নেই</translation>
 <translation id="956500788634395331">আপনি সম্ভাব্য ক্ষতিকারক এক্সটেনশনগুলি থেকে নিরাপদে আছেন</translation>
 <translation id="957960681186851048">এই সাইটটি নিজে থেকে একাধিক ফাইল ডাউনলোড করার চেষ্টা করেছে</translation>
-<translation id="9580706199804957">Google পরিষেবাগুলির সাথে সংযুক্ত করা যায়নি</translation>
 <translation id="958329785990007682">জাভাস্ক্রিপ্ট ব্লক করুন</translation>
 <translation id="960719561871045870">অপারেটরের কোড</translation>
 <translation id="960987915827980018">প্রায় 1 ঘণ্টা বাকি</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb
index 88975844..573a76d 100644
--- a/chrome/app/resources/generated_resources_bs.xtb
+++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -2149,7 +2149,6 @@
 <translation id="3441653493275994384">Ekran</translation>
 <translation id="3441663102605358937">Ponovo se prijavite na <ph name="ACCOUNT" /> da potvrdite ovaj račun</translation>
 <translation id="3445047461171030979">Brzi odgovori Google Asistenta</translation>
-<translation id="3445770710327978113">Da se brzo vratite ovdje, instalirate ovu aplikaciju</translation>
 <translation id="3445925074670675829">USB-C uređaj</translation>
 <translation id="3446274660183028131">Pokrenite Parallels Desktop da instalirate Windows.</translation>
 <translation id="344630545793878684">Čitati vaše podatke na nizu web lokacija</translation>
@@ -2633,7 +2632,6 @@
 <translation id="3955163004258753966">Greška prilikom pokretanja nadogradnje</translation>
 <translation id="3955193568934677022">Dozvoljava web lokacijama da reproduciraju zaštićeni sadržaj (preporučeno)</translation>
 <translation id="3955896417885489542">Pregledajte opcije Google Playa nakon postavljanja</translation>
-<translation id="3956702100721821638">Nije moguće pristupiti Google Playu</translation>
 <translation id="3957079323242030166">Podaci sigurnosne kopije se neće računati u vašu kvotu Pohrane na Disku.</translation>
 <translation id="3957844511978444971">Dodirnite „Prihvatam“ da potvrdite svoj odabir ovih postavki za Googleove usluge.</translation>
 <translation id="3958088479270651626">Uvezite oznake i postavke</translation>
@@ -7158,7 +7156,6 @@
 <translation id="952992212772159698">Nije aktivirano</translation>
 <translation id="956500788634395331">Zaštićeni ste od potencijalno štetnih ekstenzija</translation>
 <translation id="957960681186851048">Ova web lokacija je pokušala automatski preuzeti više fajlova</translation>
-<translation id="9580706199804957">Povezivanje s Googleovim uslugama nije uspjelo</translation>
 <translation id="958329785990007682">Blokiraj JavaScript</translation>
 <translation id="960719561871045870">Kôd operatera</translation>
 <translation id="960987915827980018">Još otprilike 1 sat</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index 25e0046..30f901cc 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -2146,7 +2146,6 @@
 <translation id="3441653493275994384">Pantalla</translation>
 <translation id="3441663102605358937">Torna a iniciar la sessió a <ph name="ACCOUNT" /> per verificar aquest compte</translation>
 <translation id="3445047461171030979">Respostes ràpides de l'Assistent de Google</translation>
-<translation id="3445770710327978113">Per tornar aquí ràpidament, instal·la aquesta aplicació</translation>
 <translation id="3445925074670675829">Dispositiu USB-C</translation>
 <translation id="3446274660183028131">Inicia Parallels Desktop per instal·lar Windows.</translation>
 <translation id="344630545793878684">Llegir les dades d'una sèrie de llocs web</translation>
@@ -2629,7 +2628,6 @@
 <translation id="3955163004258753966">S'ha produït un error en iniciar l'actualització</translation>
 <translation id="3955193568934677022">Permet que els llocs web reprodueixin contingut protegit (opció recomanada)</translation>
 <translation id="3955896417885489542">Mostra les opcions de Google Play després de la configuració</translation>
-<translation id="3956702100721821638">No s'ha pogut contactar amb Google Play</translation>
 <translation id="3957079323242030166">Les dades de la còpia de seguretat no ocupen espai de la quota d'emmagatzematge de Drive.</translation>
 <translation id="3957844511978444971">Toca Accepta per confirmar la configuració dels serveis de Google que has seleccionat.</translation>
 <translation id="3958088479270651626">Importa les adreces d'interès i la configuració</translation>
@@ -7154,7 +7152,6 @@
 <translation id="952992212772159698">No activat</translation>
 <translation id="956500788634395331">Tens protecció contra les extensions potencialment perjudicials</translation>
 <translation id="957960681186851048">Aquest lloc web ha provat de baixar diversos fitxers automàticament</translation>
-<translation id="9580706199804957">No s'ha pogut establir la connexió amb els serveis de Google</translation>
 <translation id="958329785990007682">Bloqueja JavaScript</translation>
 <translation id="960719561871045870">Codi d'operador</translation>
 <translation id="960987915827980018">Queda cosa d'una hora</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index 5f5c111..17fc917 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">Žádné sítě</translation>
 <translation id="1056898198331236512">Upozornění</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Zadejte nový PIN. PIN musí být dlouhý alespoň jeden znak a může obsahovat písmena, číslice a další znaky.}few{Zadejte nový PIN. PIN musí být dlouhý alespoň # znaky a může obsahovat písmena, číslice i jiné znaky.}many{Zadejte nový PIN. PIN musí být dlouhý alespoň # znaků a může obsahovat písmena, číslice i jiné znaky.}other{Zadejte nový PIN. PIN musí být dlouhý alespoň # znaků a může obsahovat písmena, číslice i jiné znaky.}}</translation>
 <translation id="1059944192885972544">Pro dotaz <ph name="SEARCH_TEXT" /> bylo nalezeno karet: <ph name="NUM" /></translation>
 <translation id="1060292118287751956">Určuje frekvenci obnovování obrazovky</translation>
 <translation id="1061904396131502319">Brzy bude čas na přestávku</translation>
@@ -638,9 +639,11 @@
 <translation id="1688935057616748272">Zadejte písmeno</translation>
 <translation id="168991973552362966">Přidání tiskárny v okolí</translation>
 <translation id="1689945336726856614">Kopírovat adresu &amp;URL</translation>
+<translation id="1690248886740053041">Nelze se připojit k mobilní síti. Se žádostmi o technickou podporu se obracejte na svého operátora.</translation>
 <translation id="1692115862433274081">Použít jiný účet</translation>
 <translation id="1692118695553449118">Synchronizace je zapnuta</translation>
 <translation id="1692210323591458290">Tmavě nachová</translation>
+<translation id="169279809881363536">Nebyly objeveny žádné profily. Pokud chcete nastavit novou síť, pomocí kamery zařízení naskenujte QR kód nebo zadejte aktivační kód dodaný operátorem.</translation>
 <translation id="1697150536837697295">Umění</translation>
 <translation id="1697686431566694143">Upravit soubor</translation>
 <translation id="1698122934742150150">Pouze aktuální anonymní návštěvy</translation>
@@ -1576,6 +1579,7 @@
 <translation id="2770465223704140727">Odstranit ze seznamu</translation>
 <translation id="2770690685823456775">Exportujte hesla do jiné složky</translation>
 <translation id="2770929488047004208">Rozlišení monitoru</translation>
+<translation id="2770954829020464827">Podrobnosti jsou při sdílení obrazovky skryty</translation>
 <translation id="2771268254788431918">Mobilní datové připojení aktivováno</translation>
 <translation id="2771816809568414714">Sýr</translation>
 <translation id="2772936498786524345">Nindža</translation>
@@ -1944,6 +1948,7 @@
 <translation id="3201422919974259695">Zde se budou zobrazovat dostupná zařízení USB.</translation>
 <translation id="3202131003361292969">Cesta</translation>
 <translation id="3202173864863109533">Zvuk této karty je vypnut.</translation>
+<translation id="3202218848974251205">Izolovaný prostor ochrany soukromí</translation>
 <translation id="3208321278970793882">Aplikace</translation>
 <translation id="3208584281581115441">Zkontrolovat</translation>
 <translation id="3208703785962634733">Nepotvrzeno</translation>
@@ -2143,7 +2148,6 @@
 <translation id="3441653493275994384">Obrazovka</translation>
 <translation id="3441663102605358937">Ověřte účet <ph name="ACCOUNT" /> tím, že se k němu znovu přihlásíte</translation>
 <translation id="3445047461171030979">Rychlé odpovědi Asistenta Google</translation>
-<translation id="3445770710327978113">Chcete-li se sem rychle vrátit, nainstalujte si aplikaci</translation>
 <translation id="3445925074670675829">Zařízení USB Type-C</translation>
 <translation id="3446274660183028131">Pokud chcete nainstalovat systém Windows, spusťte nástroj Parallels Desktop.</translation>
 <translation id="344630545793878684">Čtení vašich dat na mnoha webech</translation>
@@ -2164,6 +2168,7 @@
 <translation id="3459697287128633276">Chcete-li získat přístup k Obchodu Google Play, proveďte ověření u svého poskytovatele identity.</translation>
 <translation id="3462311546193741693">Budete odhlášeni z většiny webů. Zůstanete přihlášeni k účtu Google, aby bylo možné vymazat synchronizovaná data.</translation>
 <translation id="3462413494201477527">Zrušit nastavení účtu?</translation>
+<translation id="3464145797867108663">Přidat pracovní profil</translation>
 <translation id="346431825526753">Toto je dětský účet spravovaný uživatelem <ph name="CUSTODIAN_EMAIL" />.</translation>
 <translation id="3468298837301810372">Štítek</translation>
 <translation id="3468999815377931311">Telefon Android</translation>
@@ -2285,6 +2290,7 @@
 <translation id="360180734785106144">Nabízet nové funkce, až budou k dispozici</translation>
 <translation id="3602290021589620013">Náhled</translation>
 <translation id="3603622770190368340">Získání certifikátu sítě</translation>
+<translation id="3604193429970465812">Sekundární účty</translation>
 <translation id="3604713164406837697">Změnit tapetu</translation>
 <translation id="3605780360466892872">Manažer</translation>
 <translation id="3608576286259426129">Náhled obrázku uživatele</translation>
@@ -2608,6 +2614,7 @@
 
  Chcete spustit aplet <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation>
 <translation id="394183848452296464">Zkratku nelze vytvořit</translation>
+<translation id="3943494825379372497">Obnovit aplikace a stránky?</translation>
 <translation id="3943582379552582368">&amp;Zpět</translation>
 <translation id="3943857333388298514">Vložit</translation>
 <translation id="3948116654032448504">&amp;Vyhledat obrázek pomocí vyhledávače <ph name="SEARCH_ENGINE" /></translation>
@@ -2623,7 +2630,6 @@
 <translation id="3955163004258753966">Chyba spuštění upgradu</translation>
 <translation id="3955193568934677022">Povolit webům přehrávat chráněný obsah (doporučeno)</translation>
 <translation id="3955896417885489542">Po nastavení otevřít možnosti služby Google Play</translation>
-<translation id="3956702100721821638">Ke službě Google Play se nepodařilo připojit</translation>
 <translation id="3957079323242030166">Zálohovaná data se nezapočítávají do kvóty úložiště na Disku.</translation>
 <translation id="3957844511978444971">Klepnutím na Přijmout potvrdíte výběr těchto nastavení služeb Google.</translation>
 <translation id="3958088479270651626">Importovat záložky a nastavení</translation>
@@ -2693,6 +2699,7 @@
 <translation id="4046013316139505482">Tato rozšíření nepotřebují zobrazit a změnit informace na tomto webu.</translation>
 <translation id="4046123991198612571">Další skladba</translation>
 <translation id="4047726037116394521">Přejít domů</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{# kontakt není dostupný. Chcete-li u něj používat sdílení nablízko, přidejte si do kontaktů e‑mailovou adresu přidruženou k jeho účtu Google.}few{# kontakty nejsou dostupné. Pokud s nimi chcete používat sdílení nablízko, přidejte si do kontaktů e‑mailovou adresu přidruženou k jejich účtům Google.}many{# kontaktu není dostupných. Pokud s nimi chcete používat sdílení nablízko, přidejte si do kontaktů e‑mailovou adresu přidruženou k jejich účtům Google.}other{# kontaktů není dostupných. Pokud s nimi chcete používat sdílení nablízko, přidejte si do kontaktů e‑mailovou adresu přidruženou k jejich účtům Google.}}</translation>
 <translation id="4050225813016893843">Metoda ověření</translation>
 <translation id="4052120076834320548">Drobné</translation>
 <translation id="4056908315660577142">Byl vyčerpán časový limit, který pro aplikaci <ph name="APP_NAME" /> pro Chrome nastavili rodiče. Zítra ji budeš moci používat <ph name="TIME_LIMIT" />.</translation>
@@ -3339,6 +3346,7 @@
 <translation id="4863769717153320198">Vypadá jako <ph name="WIDTH" /> × <ph name="HEIGHT" /> (výchozí)</translation>
 <translation id="4864369630010738180">Přihlašování...</translation>
 <translation id="4864805589453749318">Vyberte, který rodič uděluje oprávnění k přidání školního účtu.</translation>
+<translation id="4866265760644917470">Profil byl úspěšně přidán.</translation>
 <translation id="486635084936119914">Určité typy souborů po stažení automaticky otevírat</translation>
 <translation id="48704129375571883">Přidat další funkce</translation>
 <translation id="4870758487381879312">Chcete-li získat informace o konfiguraci, zadejte heslo poskytnuté administrátorem</translation>
@@ -3622,6 +3630,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{Úspěšně jste změnili prolomené heslo. Máte # další prolomené heslo. Chrome doporučuje toto heslo okamžitě zkontrolovat.}few{Úspěšně jste změnili prolomené heslo. Máte # další prolomená hesla. Chrome doporučuje tato hesla okamžitě zkontrolovat.}many{Úspěšně jste změnili prolomené heslo. Máte # dalšího prolomeného hesla. Chrome doporučuje tato hesla okamžitě zkontrolovat.}other{Úspěšně jste změnili prolomené heslo. Máte # dalších prolomených hesel. Chrome doporučuje tato hesla okamžitě zkontrolovat.}}</translation>
 <translation id="5207949376430453814">Zvýraznit textový kurzor</translation>
 <translation id="5209320130288484488">Nebyla nalezena žádná zařízení</translation>
+<translation id="5209572028385096813">Tento účet spravuje služba Family Link</translation>
 <translation id="5210365745912300556">Zavřít kartu</translation>
 <translation id="5213481667492808996">Datová služba <ph name="NAME" /> je připravena k použití</translation>
 <translation id="5213891612754844763">Zobrazit nastavení proxy serveru</translation>
@@ -3707,6 +3716,7 @@
 <translation id="5302048478445481009">Jazyk</translation>
 <translation id="5302932258331363306">Zobrazit náhrady</translation>
 <translation id="5304276686222516262">Seznam kontaktů se nepodařilo stáhnout. Zkontrolujte připojení k síti nebo to &lt;a href="#" id="tryAgainLink"&gt;zkuste znovu&lt;/a&gt;.</translation>
+<translation id="5305145881844743843">Tento účet je spravován doménou <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation>
 <translation id="5305688511332277257">Není nainstalován žádný certifikát</translation>
 <translation id="5307030433605830021">Zdroj není podporován</translation>
 <translation id="5308380583665731573">Připojení</translation>
@@ -4088,6 +4098,7 @@
 <translation id="5740820643029013514">Použít tišší odesílání zpráv (doporučeno)</translation>
 <translation id="574104302965107104">Zrcadlení displeje</translation>
 <translation id="574209121243317957">Výška</translation>
+<translation id="5742505912938664543">Když zde přidáte sekundární účet, můžete procházet web, stahovat aplikace, kontrolovat pomocí něj svůj Gmail a další služby Google.</translation>
 <translation id="5746169159649715125">Uložit jako PDF</translation>
 <translation id="5747552184818312860">Konec platnosti</translation>
 <translation id="5747785204778348146">Pro vývojáře – nestabilní</translation>
@@ -4428,6 +4439,7 @@
 <translation id="6129953537138746214">Mezera</translation>
 <translation id="6130692320435119637">Přidat Wi-Fi</translation>
 <translation id="6136114942382973861">Zavřít lištu se staženými soubory</translation>
+<translation id="6136287496450963112">Váš bezpečnostní klíč není chráněn kódem PIN. Pokud chcete spravovat otisky prstů, nejdříve vytvořte PIN.</translation>
 <translation id="6137767437444130246">Certifikát uživatele</translation>
 <translation id="6138680304137685902">Podpis X9.62 ECDSA s SHA-384</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, žádná síť</translation>
@@ -4608,6 +4620,7 @@
 <translation id="6331566915566907158">Pomoci vylepšovat funkce a výkon systému Chrome OS</translation>
 <translation id="6331818708794917058">Weby mohou žádat o připojení k zařízením MIDI</translation>
 <translation id="6333064448949140209">Soubor bude odeslán do Googlu k ladění</translation>
+<translation id="6334444530352320327">Vaše nastavení aplikací a operačního systému se budou synchronizovat mezi Chromebooky, ve kterých jste přihlášeni pomocí tohoto účtu.<ph name="LINK_BEGIN" />Nastavení synchronizace<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">Všechny weby mohou zobrazovat jakékoli reklamy</translation>
 <translation id="6339668969738228384">Vytvořit nový profil pro uživatele <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="6340017061976355871">K serveru se nelze se připojit. Zkontrolujte připojení k síti a zkuste to znovu. Pokud problém přetrvává, restartujte Chromebook.</translation>
@@ -4909,6 +4922,7 @@
 <translation id="6709133671862442373">Zprávy</translation>
 <translation id="6709357832553498500">Připojit pomocí rozšíření <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Předchozí</translation>
+<translation id="6713233729292711163">Přidat pracovní profil</translation>
 <translation id="6715803357256707211">Při instalaci aplikace pro Linux došlo k chybě. Podrobnosti zobrazíte kliknutím na oznámení.</translation>
 <translation id="671619610707606484">Tímto vymažete <ph name="TOTAL_USAGE" /> dat, která uložily weby</translation>
 <translation id="671928215901716392">Zamknout obrazovku</translation>
@@ -5277,6 +5291,7 @@
 <translation id="7121362699166175603">Vymaže historii a automatická dokončení v adresním řádku. Na stránce <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> mohou být k dispozici další druhy historie prohlížení zaznamenané ve vašem účtu Google.</translation>
 <translation id="7121438501124788993">Vývojářský režim</translation>
 <translation id="7121728544325372695">Chytré pomlčky</translation>
+<translation id="7122353087820324370">Nastavení aplikací a operačního systému se nesynchronizuje do sekundárních účtů.</translation>
 <translation id="7123030151043029868">Povolení stahovat automaticky několik souborů</translation>
 <translation id="7123360114020465152">Již není podporováno</translation>
 <translation id="7125148293026877011">Smazat Crostini</translation>
@@ -5592,6 +5607,7 @@
 <translation id="750509436279396091">Otevřít složku stažených souborů</translation>
 <translation id="7506093026325926984">Heslo bude uloženo do tohoto zařízení</translation>
 <translation id="7506130076368211615">Nastavit novou síť</translation>
+<translation id="7506242536428928412">Pokud chcete použít svůj nový bezpečnostní klíč, nastavte nový PIN</translation>
 <translation id="7506541170099744506">Vaše zařízení <ph name="DEVICE_TYPE" /> bylo úspěšně zaregistrováno do podnikové správy.</translation>
 <translation id="7507207699631365376">Zobrazit <ph name="BEGIN_LINK" />zásady ochrany soukromí<ph name="END_LINK" /> tohoto poskytovatele</translation>
 <translation id="7507930499305566459">Certifikát stavového odpovídače</translation>
@@ -5755,6 +5771,7 @@
 <translation id="7691077781194517083">Tento bezpečnostní klíč nelze resetovat. Chyba <ph name="ERROR_CODE" />.</translation>
 <translation id="7691698019618282776">Upgradovat Crostini</translation>
 <translation id="7696063401938172191">Na telefonu <ph name="PHONE_NAME" />:</translation>
+<translation id="7697166915480294040">Podrobnosti jsou při sdílení obrazovky skryty</translation>
 <translation id="7697598343108519171">Naskenovat QR kód pomocí fotoaparátu</translation>
 <translation id="7699968112832915395">Účet nelze přidat</translation>
 <translation id="7701040980221191251">Žádné</translation>
@@ -6211,6 +6228,8 @@
 <translation id="8184472985242519288">Obrys</translation>
 <translation id="8186609076106987817">Serveru se nepodařilo soubor najít.</translation>
 <translation id="8188389033983459049">Chcete-li pokračovat, zkontrolujte nastavení zařízení a zapněte Bluetooth</translation>
+<translation id="8189306097519446565">Školní účty</translation>
+<translation id="8189750580333936930">Izolovaný prostor k ochraně soukromí</translation>
 <translation id="8190193592390505034">Připojování k síti poskytovatele <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Spravovat aplikace, rozšíření a motivy</translation>
 <translation id="8195027750202970175">Velikost na disku</translation>
@@ -6904,6 +6923,7 @@
 <translation id="8986362086234534611">Odstranit</translation>
 <translation id="8986494364107987395">Automaticky posílat společnosti Google statistiky používání a zprávy o selhání</translation>
 <translation id="8987927404178983737">Měsíc</translation>
+<translation id="8989823300731803443">Pokračovat z místa, kde jste skončili.</translation>
 <translation id="8990209962746788689">QR kód nelze vytvořit</translation>
 <translation id="8991520179165052608">Web může použít mikrofon</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{1 položky}few{# položek}many{# položky}other{# položek}}</translation>
@@ -7133,7 +7153,6 @@
 <translation id="952992212772159698">Není aktivováno</translation>
 <translation id="956500788634395331">Jste chráněni před potenciálně škodlivými rozšířenými</translation>
 <translation id="957960681186851048">Tento web se pokusil automaticky stáhnout několik souborů</translation>
-<translation id="9580706199804957">Ke službám Google se nelze připojit</translation>
 <translation id="958329785990007682">Blokovat JavaScript</translation>
 <translation id="960719561871045870">Kód operátora</translation>
 <translation id="960987915827980018">Zbývá přibližně hodina</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index aa77a34..08657562 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -2148,7 +2148,6 @@
 <translation id="3441653493275994384">Skærm</translation>
 <translation id="3441663102605358937">Log ind på <ph name="ACCOUNT" /> igen for at bekræfte denne konto</translation>
 <translation id="3445047461171030979">Hurtige svar i Google Assistent</translation>
-<translation id="3445770710327978113">Installer denne app for hurtigt at vende tilbage hertil</translation>
 <translation id="3445925074670675829">USB-C-enhed</translation>
 <translation id="3446274660183028131">Start Parallels Desktop for at installere Windows.</translation>
 <translation id="344630545793878684">Læs dine data på en række websites</translation>
@@ -2632,7 +2631,6 @@
 <translation id="3955163004258753966">Der opstod en fejl under opstarten af opgraderingen</translation>
 <translation id="3955193568934677022">Tillad, at websites afspiller beskyttet indhold (anbefales)</translation>
 <translation id="3955896417885489542">Gennemgå valgmulighederne for Google Play efter konfigurationen</translation>
-<translation id="3956702100721821638">Der kunne ikke oprettes forbindelse til Google Play</translation>
 <translation id="3957079323242030166">Sikkerhedskopierede data tæller ikke med i din lagerkvote på Drev.</translation>
 <translation id="3957844511978444971">Tryk på "Acceptér" for at bekræfte dit valg af disse indstillinger for Google-tjenester.</translation>
 <translation id="3958088479270651626">Importér bogmærker og indstillinger</translation>
@@ -7157,7 +7155,6 @@
 <translation id="952992212772159698">Ikke aktiveret</translation>
 <translation id="956500788634395331">Du er beskyttet mod potentielt skadelige udvidelser</translation>
 <translation id="957960681186851048">Dette website har forsøgt at downloade flere filer automatisk</translation>
-<translation id="9580706199804957">Der kunne ikke oprettes forbindelse til Google-tjenester</translation>
 <translation id="958329785990007682">Bloker JavaScript</translation>
 <translation id="960719561871045870">Operatørkode</translation>
 <translation id="960987915827980018">Omkring én time tilbage</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index 0409930..ce84aa3d 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -2138,7 +2138,6 @@
 <translation id="3441653493275994384">Bildschirm</translation>
 <translation id="3441663102605358937">Melden Sie sich noch einmal bei <ph name="ACCOUNT" /> an, um dieses Konto zu bestätigen</translation>
 <translation id="3445047461171030979">Schnelle Antworten bei Google Assistant</translation>
-<translation id="3445770710327978113">Installieren Sie diese App, um schnell zurückzukehren</translation>
 <translation id="3445925074670675829">USB-C-Gerät</translation>
 <translation id="3446274660183028131">Bitte Parallels Desktop starten, um Windows zu installieren.</translation>
 <translation id="344630545793878684">Ihre Daten auf verschiedenen Websites lesen</translation>
@@ -2619,7 +2618,6 @@
 <translation id="3955163004258753966">Fehler beim Starten des Upgrades</translation>
 <translation id="3955193568934677022">Wiedergabe geschützter Inhalte auf Websites zulassen (empfohlen)</translation>
 <translation id="3955896417885489542">Nach Einrichtung Google Play-Optionen überprüfen</translation>
-<translation id="3956702100721821638">Keine Verbindung zu Google Play</translation>
 <translation id="3957079323242030166">Sicherungsdaten werden nicht auf Ihr Google Drive-Speicherkontingent angerechnet.</translation>
 <translation id="3957844511978444971">Tippen Sie auf "Annehmen", um die ausgewählten Einstellungen für diese Google-Dienste zu bestätigen.</translation>
 <translation id="3958088479270651626">Lesezeichen und Einstellungen importieren</translation>
@@ -7127,7 +7125,6 @@
 <translation id="952992212772159698">Nicht aktiviert</translation>
 <translation id="956500788634395331">Sie sind vor potenziell schädlichen Erweiterungen geschützt</translation>
 <translation id="957960681186851048">Diese Website hat versucht, automatisch mehrere Dateien herunterzuladen</translation>
-<translation id="9580706199804957">Keine Verbindung mit Google-Diensten möglich</translation>
 <translation id="958329785990007682">JavaScript sperren</translation>
 <translation id="960719561871045870">Betreibercode</translation>
 <translation id="960987915827980018">Noch etwa 1 Stunde</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 3db45d25..c844aff9 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">Έλεγχος</translation>
 <translation id="3441663102605358937">Συνδεθείτε ξανά στον λογαριασμό <ph name="ACCOUNT" /> για να τον επαληθεύσετε</translation>
 <translation id="3445047461171030979">Γρήγορες απαντήσεις Βοηθού Google</translation>
-<translation id="3445770710327978113">Εγκαταστήστε αυτήν την εφαρμογή για γρήγορη επιστροφή.</translation>
 <translation id="3445925074670675829">Συσκευή USB-C</translation>
 <translation id="3446274660183028131">Εκκινήστε το Parallels Desktop για να εγκαταστήσετε τα Windows.</translation>
 <translation id="344630545793878684">Ανάγνωση των δεδομένων σας σε ορισμένους ιστότοπους</translation>
@@ -2631,7 +2630,6 @@
 <translation id="3955163004258753966">Σφάλμα κατά την έναρξη της αναβάθμισης</translation>
 <translation id="3955193568934677022">Να επιτρέπεται στους ιστοτόπους να αναπαράγουν προστατευμένο περιεχόμενο (συνιστάται)</translation>
 <translation id="3955896417885489542">Έλεγχος επιλογών Google Play μετά τη ρύθμιση</translation>
-<translation id="3956702100721821638">Δεν ήταν δυνατή η επικοινωνία με το Google Play</translation>
 <translation id="3957079323242030166">Τα δεδομένα του αντιγράφου ασφαλείας δεν θα υπολογίζονται στο όριο του αποθηκευτικού χώρου στο Drive.</translation>
 <translation id="3957844511978444971">Πατήστε "Αποδοχή" για να επιβεβαιώσετε την επιλογή αυτών των ρυθμίσεων υπηρεσιών Google.</translation>
 <translation id="3958088479270651626">Εισαγωγή σελιδοδεικτών και ρυθμίσεων</translation>
@@ -7153,7 +7151,6 @@
 <translation id="952992212772159698">Μη ενεργοποιημένο</translation>
 <translation id="956500788634395331">Είστε προστατευμένοι από δυνητικά επιβλαβείς επεκτάσεις.</translation>
 <translation id="957960681186851048">Αυτός ο ιστότοπος επιχείρησε να κατεβάσει αυτόματα πολλά αρχεία</translation>
-<translation id="9580706199804957">Δεν ήταν δυνατή η σύνδεση με τις υπηρεσίες Google</translation>
 <translation id="958329785990007682">Αποκλεισμός JavaScript</translation>
 <translation id="960719561871045870">Κωδικός τελεστή</translation>
 <translation id="960987915827980018">Απομένει περίπου 1 ώρα</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index 2fa6bda..a8e54d5b 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -540,7 +540,7 @@
 <translation id="1588438908519853928">Normal</translation>
 <translation id="158849752021629804">Need home network</translation>
 <translation id="1588870296199743671">Open Link With...</translation>
-<translation id="1589055389569595240">Show Spelling and Grammar</translation>
+<translation id="1589055389569595240">Show spelling and grammar</translation>
 <translation id="1591679663873027990">Give Parallels Desktop permission to access USB devices. Parallels Desktop won't remember a USB device after it's removed.</translation>
 <translation id="1593594475886691512">Formatting...</translation>
 <translation id="159359590073980872">Image Cache</translation>
@@ -871,9 +871,10 @@
 <translation id="1954813140452229842">Error mounting share. Please check your credentials and try again.</translation>
 <translation id="1956050014111002555">The file contained multiple certificates, none of which were imported:</translation>
 <translation id="1956390763342388273">This will upload all files from '<ph name="FOLDER_PATH" />'. Only do this if you trust the site.</translation>
+<translation id="1960158217849594135">Save username to your Google Account?</translation>
 <translation id="196040970347962278">Establish an Internet connection first</translation>
 <translation id="1962233722219655970">This page uses a Native Client app that doesn't work on your computer.</translation>
-<translation id="1963227389609234879">Remove All</translation>
+<translation id="1963227389609234879">Remove all</translation>
 <translation id="1963976881984600709">Standard protection</translation>
 <translation id="196425401113508486">Highlight the cursor when moving</translation>
 <translation id="1965624977906726414">Has no special permissions.</translation>
@@ -1003,7 +1004,7 @@
 <translation id="2124930039827422115">{1,plural, =1{Rated <ph name="AVERAGE_RATING" /> by one user.}other{Rated <ph name="AVERAGE_RATING" /> by # users.}}</translation>
 <translation id="2126167708562367080">Sync is disabled by your administrator.</translation>
 <translation id="2127372758936585790">Low-power charger</translation>
-<translation id="212862741129535676">Frequency State Occupancy Percentage</translation>
+<translation id="212862741129535676">Frequency state occupancy percentage</translation>
 <translation id="212876957201860463">Preparing to set up your mobile device…</translation>
 <translation id="2129825002735785149">Update plug-in</translation>
 <translation id="2131077480075264">Unable to install "<ph name="APP_NAME" />" because it is not allowed by "<ph name="IMPORT_NAME" />"</translation>
@@ -1990,7 +1991,7 @@
 <translation id="3266179261140759675">Block closed sites from sending and receiving data</translation>
 <translation id="3266274118485960573">Safety check is running.</translation>
 <translation id="3267726687589094446">Continue allowing automatic downloads of multiple files</translation>
-<translation id="3268451620468152448">Open Tabs</translation>
+<translation id="3268451620468152448">Open tabs</translation>
 <translation id="3269069891205016797">Your information will be removed from the device when you sign out.</translation>
 <translation id="3269093882174072735">Load image</translation>
 <translation id="3269612321104318480">Light teal and white</translation>
@@ -2147,7 +2148,6 @@
 <translation id="3441653493275994384">Screen</translation>
 <translation id="3441663102605358937">Sign in to <ph name="ACCOUNT" /> again to verify this account</translation>
 <translation id="3445047461171030979">Google Assistant quick answers</translation>
-<translation id="3445770710327978113">To get back to here quickly, install this app</translation>
 <translation id="3445925074670675829">USB-C device</translation>
 <translation id="3446274660183028131">Please launch Parallels Desktop to install Windows.</translation>
 <translation id="344630545793878684">Read your data on a number of websites</translation>
@@ -2241,7 +2241,7 @@
 <translation id="3550593477037018652">Disconnect mobile network</translation>
 <translation id="3550915441744863158">Chrome updates automatically so you always have the freshest version</translation>
 <translation id="3551320343578183772">Close Tab</translation>
-<translation id="3552780134252864554">Cleared on Exit</translation>
+<translation id="3552780134252864554">Cleared on exit</translation>
 <translation id="3555812735919707620">Remove extension</translation>
 <translation id="3556000484321257665">Your search engine was changed to <ph name="URL" />.</translation>
 <translation id="3556433843310711081">Your manager can unblock it for you</translation>
@@ -2342,6 +2342,7 @@
 <translation id="3653999333232393305">Continue allowing <ph name="HOST" /> to access your microphone</translation>
 <translation id="3654045516529121250">Read your accessibility settings</translation>
 <translation id="3655712721956801464">{NUM_FILES,plural, =1{It has permanent access to one file.}other{It has permanent access to # files.}}</translation>
+<translation id="3658871634334445293">TrackPoint acceleration</translation>
 <translation id="3660234220361471169">Untrusted</translation>
 <translation id="3664511988987167893">Extension Icon</translation>
 <translation id="3665589677786828986">Chrome detected that some of your settings were corrupted by another program and reset them to their original defaults.</translation>
@@ -2631,7 +2632,6 @@
 <translation id="3955163004258753966">Error starting upgrade</translation>
 <translation id="3955193568934677022">Allow sites to play protected content (recommended)</translation>
 <translation id="3955896417885489542">Review Google Play options following setup</translation>
-<translation id="3956702100721821638">Couldn't reach Google Play</translation>
 <translation id="3957079323242030166">Backup data will not count towards your Drive storage quota.</translation>
 <translation id="3957844511978444971">Tap 'Accept' to confirm your selection of these Google services settings.</translation>
 <translation id="3958088479270651626">Import bookmarks and settings</translation>
@@ -2770,6 +2770,7 @@
 <translation id="412730574613779332">Speedy</translation>
 <translation id="4130199216115862831">Device Log</translation>
 <translation id="4130207949184424187">This extension has changed the page that is shown when you search from the Omnibox.</translation>
+<translation id="4130344535649650885">Save password to your Google Account?</translation>
 <translation id="4130750466177569591">I agree</translation>
 <translation id="413121957363593859">Components</translation>
 <translation id="4131410914670010031">Black and white</translation>
@@ -3289,6 +3290,7 @@
 <translation id="4788092183367008521">Please check your network connection and try again.</translation>
 <translation id="4791000909649665275"><ph name="NUMBER" /> photo</translation>
 <translation id="4791037424585594169">(UDP)</translation>
+<translation id="4792290259143007505">Enable TrackPoint acceleration</translation>
 <translation id="4792711294155034829">&amp;Report an Issue...</translation>
 <translation id="4794810983896241342">Updates are managed by <ph name="BEGIN_LINK" />your administrator<ph name="END_LINK" /></translation>
 <translation id="479536056609751218">Web Page, HTML Only</translation>
@@ -4044,6 +4046,7 @@
 <translation id="5677928146339483299">Blocked</translation>
 <translation id="5678550637669481956">Read and write access to <ph name="VOLUME_NAME" /> has been granted.</translation>
 <translation id="5678955352098267522">Read your data on <ph name="WEBSITE_1" /></translation>
+<translation id="5680050361008726776">Remove '<ph name="ESIM_PROFILE_NAME" />'?</translation>
 <translation id="5684181005476681636">Wi-Fi details</translation>
 <translation id="5684661240348539843">Asset Identifier</translation>
 <translation id="5687326903064479980">Time Zone</translation>
@@ -5045,7 +5048,7 @@
 <translation id="6848388270925200958">At the moment, you have some cards that can only be used on this device</translation>
 <translation id="6850286078059909152">Text colour</translation>
 <translation id="6851181413209322061">Send usage and diagnostic data. This device is currently automatically sending diagnostic, device and app usage data to Google. This won't be used to identify your child, and will help system and app stability and other improvements. Some aggregate data will also help Google apps and partners, such as Android developers. This setting is enforced by the owner. If additional Web &amp; App Activity is turned on for your child, this data may be saved to their Google Account.</translation>
-<translation id="6851497530878285708">App Enabled</translation>
+<translation id="6851497530878285708">App enabled</translation>
 <translation id="6853388645642883916">Updater sleeping</translation>
 <translation id="68541483639528434">Close other tabs</translation>
 <translation id="6855892664589459354">Crostini backup and restore</translation>
@@ -5255,6 +5258,7 @@
 <translation id="7077829361966535409">The sign-in page failed to load using the current proxy settings. Please <ph name="GAIA_RELOAD_LINK_START" />try to sign in again<ph name="GAIA_RELOAD_LINK_END" /> or use different <ph name="PROXY_SETTINGS_LINK_START" />proxy settings<ph name="PROXY_SETTINGS_LINK_END" />.</translation>
 <translation id="7078120482318506217">All networks</translation>
 <translation id="7078386829626602215">No device detected <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation>
+<translation id="7079716540084905538">Add a secondary Google Account for <ph name="USER_NAME" /></translation>
 <translation id="708060913198414444">C&amp;opy audio address</translation>
 <translation id="7081952801286122383">You're incognito</translation>
 <translation id="708278670402572152">Disconnect to enable scanning</translation>
@@ -5622,6 +5626,7 @@
 <translation id="7520766081042531487">Incognito portal: <ph name="SUBFRAME_SITE" /></translation>
 <translation id="7521387064766892559">JavaScript</translation>
 <translation id="7522255036471229694">Say 'Ok Google'</translation>
+<translation id="7523585675576642403">Rename profile</translation>
 <translation id="7525067979554623046">Create</translation>
 <translation id="7526658513669652747">{NUM_DOWNLOADS,plural, =1{1 more}other{{NUM_DOWNLOADS} more}}</translation>
 <translation id="7526989658317409655">Placeholder</translation>
@@ -7154,7 +7159,6 @@
 <translation id="952992212772159698">Not activated</translation>
 <translation id="956500788634395331">You're protected from potentially harmful extensions</translation>
 <translation id="957960681186851048">This site attempted to download multiple files automatically</translation>
-<translation id="9580706199804957">Couldn’t connect with Google services</translation>
 <translation id="958329785990007682">Block Javascript</translation>
 <translation id="960719561871045870">Operator code</translation>
 <translation id="960987915827980018">About 1 hour left</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index f359d98d..c193303 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -2139,7 +2139,6 @@
 <translation id="3441653493275994384">Pantalla</translation>
 <translation id="3441663102605358937">Vuelve a acceder a <ph name="ACCOUNT" /> para verificar esta cuenta</translation>
 <translation id="3445047461171030979">Respuestas rápidas del Asistente de Google</translation>
-<translation id="3445770710327978113">Para acceder rápidamente en otro momento, instala esta app</translation>
 <translation id="3445925074670675829">Dispositivo USB-C</translation>
 <translation id="3446274660183028131">Inicia Parallels Desktop para instalar Windows.</translation>
 <translation id="344630545793878684">Leer los datos en un número de sitios web</translation>
@@ -2620,7 +2619,6 @@
 <translation id="3955163004258753966">Se produjo un error al iniciar la actualización</translation>
 <translation id="3955193568934677022">Permitir que los sitios reproduzcan contenido protegido (recomendado)</translation>
 <translation id="3955896417885489542">Revisar las opciones de Google Play después de finalizar la configuración</translation>
-<translation id="3956702100721821638">No se pudo establecer la conexión con Google Play</translation>
 <translation id="3957079323242030166">Si creas una copia de seguridad de los datos, no se verá afectada tu cuota de espacio de almacenamiento en Drive.</translation>
 <translation id="3957844511978444971">Presiona "Aceptar" para confirmar la selección de esta configuración de los servicios de Google.</translation>
 <translation id="3958088479270651626">Importar favoritos y configuración</translation>
@@ -7129,7 +7127,6 @@
 <translation id="952992212772159698">No activado</translation>
 <translation id="956500788634395331">Cuentas con protección contra extensiones potencialmente dañinas</translation>
 <translation id="957960681186851048">Este sitio intentó descargar varios archivos automáticamente</translation>
-<translation id="9580706199804957">No se pudo establecer una conexión con los servicios de Google</translation>
 <translation id="958329785990007682">No permitir JavaScript</translation>
 <translation id="960719561871045870">Código del operador</translation>
 <translation id="960987915827980018">Falta aproximadamente una hora.</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index a7272477..ec54322 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -2142,7 +2142,6 @@
 <translation id="3441653493275994384">Pantalla</translation>
 <translation id="3441663102605358937">Vuelve a iniciar sesión en <ph name="ACCOUNT" /> para verificar la cuenta</translation>
 <translation id="3445047461171030979">Respuestas rápidas del Asistente de Google</translation>
-<translation id="3445770710327978113">Para volver aquí rápidamente, instala esta aplicación</translation>
 <translation id="3445925074670675829">Dispositivo USB-C</translation>
 <translation id="3446274660183028131">Abre Parallels Desktop para instalar Windows.</translation>
 <translation id="344630545793878684">Leer tus datos en varios sitios web</translation>
@@ -2622,7 +2621,6 @@
 <translation id="3955163004258753966">No se ha podido iniciar la actualización</translation>
 <translation id="3955193568934677022">Permitir que los sitios web reproduzcan contenido protegido (recomendado)</translation>
 <translation id="3955896417885489542">Revisar las opciones de Google Play tras la configuración</translation>
-<translation id="3956702100721821638">No se ha podido acceder a Google Play</translation>
 <translation id="3957079323242030166">Los datos de la copia de seguridad no se tienen en cuenta para calcular el espacio de almacenamiento de tu cuenta de Drive.</translation>
 <translation id="3957844511978444971">Toca Aceptar para confirmar tu selección de estas opciones de servicios de Google.</translation>
 <translation id="3958088479270651626">Importar marcadores y configuración</translation>
@@ -7131,7 +7129,6 @@
 <translation id="952992212772159698">Sin activar</translation>
 <translation id="956500788634395331">Tienes protección frente a extensiones potencialmente dañinas</translation>
 <translation id="957960681186851048">Este sitio web ha intentado descargar varios archivos automáticamente</translation>
-<translation id="9580706199804957">No se ha podido conectar con los servicios de Google</translation>
 <translation id="958329785990007682">Bloquear JavaScript</translation>
 <translation id="960719561871045870">Código del operador</translation>
 <translation id="960987915827980018">Aproximadamente 1 hora</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index fe71e8d..3a29b11 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">Ekraan</translation>
 <translation id="3441663102605358937">Konto <ph name="ACCOUNT" /> kinnitamiseks logige sellele uuesti sisse</translation>
 <translation id="3445047461171030979">Google'i assistendi kiirvastused</translation>
-<translation id="3445770710327978113">Kiirelt siia naasmiseks installige see rakendus</translation>
 <translation id="3445925074670675829">C-tüüpi USB-seade</translation>
 <translation id="3446274660183028131">Käivitage Windowsi installimiseks Parallels Desktop.</translation>
 <translation id="344630545793878684">Lugege oma andmeid mitmel veebisaidil</translation>
@@ -2631,7 +2630,6 @@
 <translation id="3955163004258753966">Viga versiooni uuendamise alustamisel</translation>
 <translation id="3955193568934677022">Luba saitidel esitada kaitstud sisu (soovitatav)</translation>
 <translation id="3955896417885489542">Kuva pärast seadistamist Google Play valikud</translation>
-<translation id="3956702100721821638">Google Playga ei õnnestunud ühendada</translation>
 <translation id="3957079323242030166">Varundatud andmeid ei arvestata teie Drive'i salvestuskvoodi hulka.</translation>
 <translation id="3957844511978444971">Puudutage valikut „Nõustun”, et kinnitada Google'i teenuste jaoks valitud seaded.</translation>
 <translation id="3958088479270651626">Järjehoidjate ja seadete importimine</translation>
@@ -7154,7 +7152,6 @@
 <translation id="952992212772159698">Aktiveerimata</translation>
 <translation id="956500788634395331">Olete potentsiaalselt ohtlike laienduste eest kaitstud</translation>
 <translation id="957960681186851048">Sait püüdis automaatselt mitut faili alla laadida</translation>
-<translation id="9580706199804957">Google'i teenustega ei õnnestunud ühendust luua</translation>
 <translation id="958329785990007682">Blokeeri JavaScript</translation>
 <translation id="960719561871045870">Operaatori kood</translation>
 <translation id="960987915827980018">Jäänud on umbes 1 tund</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb
index 17509f6..77cdf3f 100644
--- a/chrome/app/resources/generated_resources_eu.xtb
+++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">Pantaila</translation>
 <translation id="3441663102605358937">Hasi saioa <ph name="ACCOUNT" /> kontuan berriro kontua egiaztatzeko</translation>
 <translation id="3445047461171030979">Google-ren Laguntzailea eginbidearen erantzun bizkorrak</translation>
-<translation id="3445770710327978113">Hona bizkor itzultzeko, instalatu aplikazioa</translation>
 <translation id="3445925074670675829">USB-C gailua</translation>
 <translation id="3446274660183028131">Windows instalatzeko, abiarazi Parallels Desktop.</translation>
 <translation id="344630545793878684">Irakurri zenbait webgunetan dituzun datuak</translation>
@@ -2631,7 +2630,6 @@
 <translation id="3955163004258753966">Errore bat gertatu da bertsio-berritzen hastean</translation>
 <translation id="3955193568934677022">Baimendu webguneei eduki babestua erreproduzitzea (gomendatua)</translation>
 <translation id="3955896417885489542">Berrikusi Google Play-ko aukerak saioa konfiguratu ondoren</translation>
-<translation id="3956702100721821638">Ezin izan da konektatu Google Play-ra</translation>
 <translation id="3957079323242030166">Babeskopiek ez dute hartzen tokirik Drive-n.</translation>
 <translation id="3957844511978444971">Sakatu "Onartu" Google-ren zerbitzuen ezarpen hauek hautatu dituzula berresteko.</translation>
 <translation id="3958088479270651626">Inportatu laster-markak eta ezarpenak</translation>
@@ -7152,7 +7150,6 @@
 <translation id="952992212772159698">Ez da aktibatu</translation>
 <translation id="956500788634395331">Luzapen kaltegarrien aurka babestuta zaude</translation>
 <translation id="957960681186851048">Hainbat fitxategi automatikoki deskargatzen saiatu da webgunea</translation>
-<translation id="9580706199804957">Ezin izan da konektatu Google-ren zerbitzuetara</translation>
 <translation id="958329785990007682">Blokeatu JavaScript</translation>
 <translation id="960719561871045870">Operadorearen kodea</translation>
 <translation id="960987915827980018">Gutxi gorabehera, ordubete falta da</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index 9157359..f10ecc4 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -2145,7 +2145,6 @@
 <translation id="3441653493275994384">صفحه</translation>
 <translation id="3441663102605358937">برای به‌تأیید رساندن این حساب، دوباره به سیستم <ph name="ACCOUNT" /> وارد شوید</translation>
 <translation id="3445047461171030979">‏پاسخ‌های سریع «دستیار Google»</translation>
-<translation id="3445770710327978113">این برنامه را نصب کنید تا سریع به اینجا برگردید</translation>
 <translation id="3445925074670675829">‏دستگاه USB-C</translation>
 <translation id="3446274660183028131">‏لطفاً برای نصب Windows، ‏Parallels Desktop را راه‌اندازی کنید.</translation>
 <translation id="344630545793878684">خواندن داده‌های شما در تعدادی از وب‌سایت‌ها</translation>
@@ -2629,7 +2628,6 @@
 <translation id="3955163004258753966">خطا در شروع ارتقا دادن</translation>
 <translation id="3955193568934677022">به سایت‌ها اجازه داده شود محتوای محافظت‌شده پخش کنند (توصیه می‌شود)</translation>
 <translation id="3955896417885489542">‏مرور گزینه‌های Google Play بعد از راه‌اندازی</translation>
-<translation id="3956702100721821638">‏دسترسی به Google Play موفق نبود</translation>
 <translation id="3957079323242030166">‏داده‌های پشتیبان‌گیری‌شده جزو سهمیه ذخیره‌سازی Drive شما به حساب نمی‌آیند.</translation>
 <translation id="3957844511978444971">‏برای تأیید انتخاب خود از میان این تنظیمات سرویس‌های Google، روی «پذیرفتن» ضربه بزنید.</translation>
 <translation id="3958088479270651626">وارد کردن نشانک‌ها و تنظیمات</translation>
@@ -7153,7 +7151,6 @@
 <translation id="952992212772159698">فعال نشد</translation>
 <translation id="956500788634395331">در برابر افزونه‌های بالقوه مضر محافظت می‌شوید</translation>
 <translation id="957960681186851048">این سایت تلاش کرده است چند فایل را به‌طور خودکار بارگیری کند</translation>
-<translation id="9580706199804957">‏به سرویس‌های Google متصل نشد</translation>
 <translation id="958329785990007682">جاوا اسکریپت مسدود شود</translation>
 <translation id="960719561871045870">کد اپراتور</translation>
 <translation id="960987915827980018">حدود ۱ ساعت باقی مانده است</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index ca52c5d..92ddb16 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">Näyttö</translation>
 <translation id="3441663102605358937">Kirjaudu uudelleen sisään sivustolle <ph name="ACCOUNT" /> vahvistaaksesi tilin</translation>
 <translation id="3445047461171030979">Google Assistantin nopeat vastaukset</translation>
-<translation id="3445770710327978113">Asenna sovellus, niin pääset takaisin tähän nopeasti</translation>
 <translation id="3445925074670675829">C-tyypin USB-laite</translation>
 <translation id="3446274660183028131">Käynnistä Parallels Desktop Windowsin asentamista varten.</translation>
 <translation id="344630545793878684">Lukea tietojasi useissa sivustoissa</translation>
@@ -2628,7 +2627,6 @@
 <translation id="3955163004258753966">Päivityksen aloitusvirhe</translation>
 <translation id="3955193568934677022">Salli sivustojen toistaa suojattua sisältöä (suositus)</translation>
 <translation id="3955896417885489542">Tutustu Google Play ‑valintoihin määrityksen jälkeen</translation>
-<translation id="3956702100721821638">Google Playhin ei saatu yhteyttä.</translation>
 <translation id="3957079323242030166">Varmuuskopioidut tiedot eivät vaikuta Driven tallennustilakiintiöösi.</translation>
 <translation id="3957844511978444971">Kosketa "Hyväksy" vahvistaaksesi, että valitset nämä asetukset Google-palveluille.</translation>
 <translation id="3958088479270651626">Kirjanmerkkien ja asetusten tuominen</translation>
@@ -7152,7 +7150,6 @@
 <translation id="952992212772159698">Ei aktivoitu</translation>
 <translation id="956500788634395331">Sinut on suojattu mahdollisesti haitallisilta laajennuksilta</translation>
 <translation id="957960681186851048">Tämä sivusto yrittää ladata useita tiedostoja automaattisesti</translation>
-<translation id="9580706199804957">Google-palveluihin ei saatu yhteyttä.</translation>
 <translation id="958329785990007682">Estä JavaScript</translation>
 <translation id="960719561871045870">Operaattorikoodi</translation>
 <translation id="960987915827980018">Noin tunti jäljellä</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index f191254..642416d3 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -2148,7 +2148,6 @@
 <translation id="3441653493275994384">Screen</translation>
 <translation id="3441663102605358937">Mag-sign in ulit sa <ph name="ACCOUNT" /> para ma-verify ang account na ito</translation>
 <translation id="3445047461171030979">Mga mabilisang sagot ng Google Assistant</translation>
-<translation id="3445770710327978113">Para mabilis na makabalik dito, i-install ang app na ito</translation>
 <translation id="3445925074670675829">USB-C device</translation>
 <translation id="3446274660183028131">Pakilunsad ang Parallels Desktop para ma-install ang Windows.</translation>
 <translation id="344630545793878684">Basahin ang iyong data sa ilang website</translation>
@@ -2632,7 +2631,6 @@
 <translation id="3955163004258753966">Error sa pagsisimula ng pag-upgrade</translation>
 <translation id="3955193568934677022">Pahintulutan ang mga site na mag-play ng pinoprotektahang content (inirerekomenda)</translation>
 <translation id="3955896417885489542">Suriin ang mga opsyon sa Google Play pagkatapos ng pag-set up</translation>
-<translation id="3956702100721821638">Hindi maabot ang Google Play</translation>
 <translation id="3957079323242030166">Hindi bibilangin ang data ng backup sa quota ng iyong storage ng Drive.</translation>
 <translation id="3957844511978444971">I-tap ang “Tanggapin” para kumpirmahin ang iyong pagpili sa mga setting ng mga serbisyo ng Google na ito.</translation>
 <translation id="3958088479270651626">I-import ang mga bookmark at setting</translation>
@@ -7158,7 +7156,6 @@
 <translation id="952992212772159698">Hindi na-activate</translation>
 <translation id="956500788634395331">Protektado ka mula sa mga potensyal na mapaminsalang extension</translation>
 <translation id="957960681186851048">Sinubukan ng site na ito na awtomatikong mag-download ng maraming file</translation>
-<translation id="9580706199804957">Hindi makakonekta sa mga serbisyo ng Google</translation>
 <translation id="958329785990007682">I-block ang Javascript</translation>
 <translation id="960719561871045870">Operator code</translation>
 <translation id="960987915827980018">Mga 1 oras ang natitira</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb
index b7af956..1dbf522 100644
--- a/chrome/app/resources/generated_resources_fr-CA.xtb
+++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -2150,7 +2150,6 @@
 <translation id="3441653493275994384">Écran</translation>
 <translation id="3441663102605358937">Connectez-vous à <ph name="ACCOUNT" /> de nouveau pour vérifier ce compte</translation>
 <translation id="3445047461171030979">Réponses rapides de l'Assistant Google</translation>
-<translation id="3445770710327978113">Pour revenir ici rapidement, installez cette application</translation>
 <translation id="3445925074670675829">Appareil USB-C</translation>
 <translation id="3446274660183028131">Veuillez lancer Parallels Desktop pour installer Windows.</translation>
 <translation id="344630545793878684">Lire vos données sur un nombre défini de sites Web</translation>
@@ -2634,7 +2633,6 @@
 <translation id="3955163004258753966">Une erreur s'est produite lors du démarrage de la mise à niveau</translation>
 <translation id="3955193568934677022">Autoriser les sites à lire le contenu protégé (recommandé)</translation>
 <translation id="3955896417885489542">Examiner les options de Google Play après la configuration</translation>
-<translation id="3956702100721821638">Impossible d'accéder à Google Play</translation>
 <translation id="3957079323242030166">Les données des sauvegardes ne comptent pas dans votre quota de stockage Google Disque.</translation>
 <translation id="3957844511978444971">Touchez « Accepter » pour confirmer votre sélection des paramètres de ces services Google.</translation>
 <translation id="3958088479270651626">Importation des favoris et des paramètres</translation>
@@ -7157,7 +7155,6 @@
 <translation id="952992212772159698">Désactivé</translation>
 <translation id="956500788634395331">Vous êtes protégé contre les extensions potentiellement nuisibles</translation>
 <translation id="957960681186851048">Ce site a tenté de télécharger plusieurs fichiers automatiquement</translation>
-<translation id="9580706199804957">Impossible de se connecter aux services Google</translation>
 <translation id="958329785990007682">Bloquer JavaScript</translation>
 <translation id="960719561871045870">Code de l'opérateur</translation>
 <translation id="960987915827980018">Il reste environ 1 heure</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index f515825..964b5275 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -2144,7 +2144,6 @@
 <translation id="3441653493275994384">Écran</translation>
 <translation id="3441663102605358937">Connectez-vous de nouveau à <ph name="ACCOUNT" /> pour valider ce compte</translation>
 <translation id="3445047461171030979">Réponses rapides sur l'Assistant Google</translation>
-<translation id="3445770710327978113">Pour revenir ici rapidement, installez cette application</translation>
 <translation id="3445925074670675829">Appareil USB de type C</translation>
 <translation id="3446274660183028131">Veuillez lancer Parallels Desktop pour installer Windows.</translation>
 <translation id="344630545793878684">Lire vos données sur plusieurs sites web</translation>
@@ -2625,7 +2624,6 @@
 <translation id="3955163004258753966">Erreur lors du lancement de la mise à niveau</translation>
 <translation id="3955193568934677022">Autoriser les sites à lire les contenus protégés (recommandé)</translation>
 <translation id="3955896417885489542">Vérifier les options de Google Play après la configuration</translation>
-<translation id="3956702100721821638">Impossible d'accéder à Google Play</translation>
 <translation id="3957079323242030166">Les données sauvegardées ne sont pas comptabilisées dans votre quota de stockage Drive.</translation>
 <translation id="3957844511978444971">Appuyez sur "Accepter" pour confirmer la sélection de ces paramètres relatifs aux services Google.</translation>
 <translation id="3958088479270651626">Importer les favoris et les paramètres</translation>
@@ -7137,7 +7135,6 @@
 <translation id="952992212772159698">Désactivé</translation>
 <translation id="956500788634395331">Vous êtes protégé contre les extensions potentiellement dangereuses</translation>
 <translation id="957960681186851048">Une tentative de téléchargement automatique de plusieurs fichiers a été initiée via ce site</translation>
-<translation id="9580706199804957">Impossible de se connecter aux services Google</translation>
 <translation id="958329785990007682">Bloquer JavaScript</translation>
 <translation id="960719561871045870">Code de l'opérateur</translation>
 <translation id="960987915827980018">Environ 1 heure restante</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb
index 2d50c5d..b849642 100644
--- a/chrome/app/resources/generated_resources_gl.xtb
+++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -2146,7 +2146,6 @@
 <translation id="3441653493275994384">Pantalla</translation>
 <translation id="3441663102605358937">Inicia sesión en <ph name="ACCOUNT" /> de novo para verificar esta conta</translation>
 <translation id="3445047461171030979">Respostas rápidas do Asistente de Google</translation>
-<translation id="3445770710327978113">Para volver aquí rapidamente, instala esta aplicación</translation>
 <translation id="3445925074670675829">Dispositivo USB-C</translation>
 <translation id="3446274660183028131">Inicia Parallels Desktop para instalar Windows.</translation>
 <translation id="344630545793878684">Lectura dos teus datos nun determinado número de sitios web</translation>
@@ -2630,7 +2629,6 @@
 <translation id="3955163004258753966">Produciuse un erro ao iniciar a actualización</translation>
 <translation id="3955193568934677022">Permitir que os sitios reproduzan contido protexido (recomendado)</translation>
 <translation id="3955896417885489542">Revisar opcións de Google Play despois da configuración</translation>
-<translation id="3956702100721821638">Non se puido acceder a Google Play</translation>
 <translation id="3957079323242030166">Os datos das copias de seguranza non contarán na cota de almacenamento de Drive.</translation>
 <translation id="3957844511978444971">Para confirmar a selección destas opcións de configuración de servizos de Google, toca Aceptar.</translation>
 <translation id="3958088479270651626">Importar marcadores e configuración</translation>
@@ -7151,7 +7149,6 @@
 <translation id="952992212772159698">Non activado</translation>
 <translation id="956500788634395331">Tes protección contra extensións potencialmente daniñas</translation>
 <translation id="957960681186851048">Este sitio tentou descargar varios ficheiros automaticamente</translation>
-<translation id="9580706199804957">Non se puido establecer conexión cos servizos de Google</translation>
 <translation id="958329785990007682">Bloquear JavaScript</translation>
 <translation id="960719561871045870">Código do operador</translation>
 <translation id="960987915827980018">Queda aproximadamente 1 hora</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index 7d7102d..2a8029a 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -2139,7 +2139,6 @@
 <translation id="3441653493275994384">સ્કિન</translation>
 <translation id="3441663102605358937">આ એકાઉન્ટની ચકાસણી કરવા માટે <ph name="ACCOUNT" />માં ફરીથી સાઇન ઇ કરો</translation>
 <translation id="3445047461171030979">Google Assistantનાં ઝડપી જવાબના સેટિંગ</translation>
-<translation id="3445770710327978113">અહીં ઝડપથી પાછા આવવા માટે, આ ઍપ ઇન્સ્ટૉલ કરો</translation>
 <translation id="3445925074670675829">USB-C ઉપકરણ</translation>
 <translation id="3446274660183028131">Windows ઇન્સ્ટૉલ કરવા માટે કૃપા કરીને Parallels ડેસ્કટૉપ લૉન્ચ કરો.</translation>
 <translation id="344630545793878684">ઘણી વેબસાઇટ્સ પર તમારો ડેટા વાંચી શકે છે</translation>
@@ -2620,7 +2619,6 @@
 <translation id="3955163004258753966">અપગ્રેડ શરૂ કરવામાં ભૂલ આવી</translation>
 <translation id="3955193568934677022">સાઇટને સંરક્ષિત કન્ટેન્ટ ચલાવવાની મંજૂરી આપો (ભલામણ કરેલ)</translation>
 <translation id="3955896417885489542">સેટઅપ પછી Google Play વિકલ્પોની સમીક્ષા કરો</translation>
-<translation id="3956702100721821638">Google Play સુધી પહોંચી ન શક્યાં</translation>
 <translation id="3957079323242030166">બૅકઅપ ડેટાની ગણતરી તમારી ડ્રાઇવના સ્ટોરેજ ક્વોટામાં નહીં થાય.</translation>
 <translation id="3957844511978444971">“સ્વીકારો” પર ટૅપ કરીને તમે Google સેવાઓની સેટિંગની પસંદગીને કન્ફર્મ કરો છો.</translation>
 <translation id="3958088479270651626">બુકમાર્ક્સ અને સેટિંગ્સ આયાત કરો</translation>
@@ -7126,7 +7124,6 @@
 <translation id="952992212772159698">સક્રિય કરેલું નથી</translation>
 <translation id="956500788634395331">તમને નુકસાન પહોંચાડવાની સંભાવના હોય એવા એક્સ્ટેંશનથી સુરક્ષિત કર્યા છે</translation>
 <translation id="957960681186851048">આ સાઇટે એકથી વધુ ફાઇલોને ઑટોમૅટિક રીતે ડાઉનલોડ કરવાનો પ્રયાસ કર્યો</translation>
-<translation id="9580706199804957">Google સેવાઓ સાથે કનેક્ટ ન કરી શક્યાં</translation>
 <translation id="958329785990007682">JavaScriptને બ્લૉક કરો</translation>
 <translation id="960719561871045870">ઑપરેટર કોડ</translation>
 <translation id="960987915827980018">લગભગ 1 કલાક બાકી</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index d8b01c3..2d9fc68 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -2148,7 +2148,6 @@
 <translation id="3441653493275994384">स्क्रीन</translation>
 <translation id="3441663102605358937">इस खाते की पुष्टि करने के लिए, <ph name="ACCOUNT" /> में फिर से साइन इन करें</translation>
 <translation id="3445047461171030979">Google Assistant में तुरंत जवाब की सुविधा</translation>
-<translation id="3445770710327978113">इसे और जल्दी ऐक्सेस करने के लिए, यह ऐप्लिकेशन इंस्टॉल करें</translation>
 <translation id="3445925074670675829">USB-C डिवाइस</translation>
 <translation id="3446274660183028131">Windows को इंस्टॉल करने के लिए कृपया Parallels Desktop को लॉन्च करें.</translation>
 <translation id="344630545793878684">अपना डेटा कई वेबसाइटों पर पढ़ें</translation>
@@ -2631,7 +2630,6 @@
 <translation id="3955163004258753966">अपग्रेड शुरू होने में गड़बड़ी हुई</translation>
 <translation id="3955193568934677022">साइटों को सुरक्षित सामग्री चलाने दें (हम इस सेटिंग को चालू रखने का सुझाव देते हैं)</translation>
 <translation id="3955896417885489542">सेटअप के बाद Google Play विकल्पों की समीक्षा करें</translation>
-<translation id="3956702100721821638">Google Play तक नहीं पहुंचा जा सका</translation>
 <translation id="3957079323242030166">बैक अप डेटा आपके डिस्क की मेमोरी को नहीं खर्च करेगा.</translation>
 <translation id="3957844511978444971">"स्वीकार है" पर टैप करके पुष्टि करें कि आपने Google की सेवाओं की ये सेटिंग चुनी हैं.</translation>
 <translation id="3958088479270651626">बुकमार्क और सेटिंग आयात करें</translation>
@@ -7154,7 +7152,6 @@
 <translation id="952992212772159698">सक्रिय नहीं किया गया</translation>
 <translation id="956500788634395331">आप ऐसे एक्सटेंशन से सुरक्षित हैं जो शायद नुकसान पहुंचा सकते हैं</translation>
 <translation id="957960681186851048">इस साइट ने अपने आप  कई फ़ाइलें डाउनलोड करने की कोशिश की है</translation>
-<translation id="9580706199804957">Google सेवाओं से कनेक्ट नहीं हो सका</translation>
 <translation id="958329785990007682">JavaScript को ब्लॉक करें</translation>
 <translation id="960719561871045870">ऑपरेटर कोड</translation>
 <translation id="960987915827980018">करीब 1 घंटा शेष है</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index b223f55..02c5716 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -2148,7 +2148,6 @@
 <translation id="3441653493275994384">Zaslon</translation>
 <translation id="3441663102605358937">Da biste potvrdili ovaj račun, ponovno se prijavite na račun <ph name="ACCOUNT" /></translation>
 <translation id="3445047461171030979">Brzi odgovori Google asistenta</translation>
-<translation id="3445770710327978113">Da biste se brzo vratili na ovu stranicu, instalirajte ovu aplikaciju</translation>
 <translation id="3445925074670675829">USB-C uređaj</translation>
 <translation id="3446274660183028131">Pokrenite Parallels Desktop da biste instalirali Windows.</translation>
 <translation id="344630545793878684">čitati vaše podatke s raznih web-lokacija</translation>
@@ -2632,7 +2631,6 @@
 <translation id="3955163004258753966">Pogreška pri pokretanju nadogradnje</translation>
 <translation id="3955193568934677022">Web-lokacije mogu reproducirati zaštićeni sadržaj (preporučeno)</translation>
 <translation id="3955896417885489542">Pregledajte opcije Google Playa nakon postavljanja</translation>
-<translation id="3956702100721821638">Nije moguće pristupiti Google Playu</translation>
 <translation id="3957079323242030166">Podaci sigurnosnih kopija neće se ubrajati u kvotu pohrane na Disku.</translation>
 <translation id="3957844511978444971">Dodirnite "Prihvaćam" da biste potvrdili svoj odabir postavki Googleovih usluga.</translation>
 <translation id="3958088479270651626">Uvoz oznaka i postavki</translation>
@@ -7149,7 +7147,6 @@
 <translation id="952992212772159698">Nije aktivirano</translation>
 <translation id="956500788634395331">Zaštićeni ste od potencijalno štetnih proširenja</translation>
 <translation id="957960681186851048">Ta je web-lokacija pokušala automatski preuzeti više datoteka</translation>
-<translation id="9580706199804957">Povezivanje s Googleovim uslugama nije uspjelo</translation>
 <translation id="958329785990007682">Onemogući JavaScript</translation>
 <translation id="960719561871045870">Kôd operatera</translation>
 <translation id="960987915827980018">Još otprilike 1 sat</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index 0a3b153e..833775f 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">Képernyő</translation>
 <translation id="3441663102605358937">Az igazoláshoz jelentkezzen be újra a következő fiókba: <ph name="ACCOUNT" /></translation>
 <translation id="3445047461171030979">Google Segéd gyorsválaszai</translation>
-<translation id="3445770710327978113">Telepítse az alkalmazást, hogy gyorsabban visszatérhessen ide</translation>
 <translation id="3445925074670675829">C típusú USB-vel kompatibilis eszköz</translation>
 <translation id="3446274660183028131">A Windows telepítéséhez indítsa el a Parallels Desktop alkalmazást.</translation>
 <translation id="344630545793878684">Adatok beolvasása számos webhelyen</translation>
@@ -2630,7 +2629,6 @@
 <translation id="3955163004258753966">Hiba történt a frissítés megkezdésekor</translation>
 <translation id="3955193568934677022">Engedélyezi a webhelyek számára a védett tartalmak lejátszását (ajánlott)</translation>
 <translation id="3955896417885489542">A Google Play beállításainak áttekintése a beállítás után</translation>
-<translation id="3956702100721821638">Nem sikerült a Google Play elérése</translation>
 <translation id="3957079323242030166">A biztonsági másolat adatait a rendszer nem számítja bele a Google Drive tárhelykvótájába.</translation>
 <translation id="3957844511978444971">Koppintson az „Elfogadás” lehetőségre a Google-szolgáltatások jelen beállításainak megerősítéséhez.</translation>
 <translation id="3958088479270651626">Könyvjelzők és beállítások importálása</translation>
@@ -7155,7 +7153,6 @@
 <translation id="952992212772159698">Nincs aktiválva</translation>
 <translation id="956500788634395331">Védelmet élvez a potenciálisan kártékony bővítményekkel szemben</translation>
 <translation id="957960681186851048">Ez a webhely megpróbált automatikusan letölteni több fájlt</translation>
-<translation id="9580706199804957">Nem sikerült csatlakozni a Google-szolgáltatásokhoz</translation>
 <translation id="958329785990007682">JavaScript letiltása</translation>
 <translation id="960719561871045870">Operátorkód</translation>
 <translation id="960987915827980018">Körülbelül 1 óra van hátra</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb
index 95374b8..7383adc 100644
--- a/chrome/app/resources/generated_resources_hy.xtb
+++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -873,6 +873,7 @@
 <translation id="1954813140452229842">Ընդհանուր միացման սխալ կա։ Ստուգեք ձեր տվյալներն ու նորից փորձեք:</translation>
 <translation id="1956050014111002555">Ֆայլը պարունակում է մի քանի վկայագիր, նրանցից ոչ մեկը չի ներմուծվել`</translation>
 <translation id="1956390763342388273">Դուք պատրաստվում եք վերբեռնել «<ph name="FOLDER_PATH" />» պանակի բոլոր ֆայլերը։ Մի՛ արեք դա, եթե կայքը վստահելի չեք համարում։</translation>
+<translation id="1960158217849594135">Պահե՞լ օգտանունը ձեր Google հաշվում</translation>
 <translation id="196040970347962278">Նախ միացեք համացանցին</translation>
 <translation id="1962233722219655970">Այս էջն օգտագործում է Native Client հավելված, որը ձեր համակարգիչը չի աջակցում:</translation>
 <translation id="1963227389609234879">Հեռացնել բոլորը</translation>
@@ -2149,7 +2150,6 @@
 <translation id="3441653493275994384">Էկրան</translation>
 <translation id="3441663102605358937">Այս հաշիվը հաստատելու համար նորից մուտք գործեք <ph name="ACCOUNT" /></translation>
 <translation id="3445047461171030979">Google Օգնականի արագ պատասխաններ</translation>
-<translation id="3445770710327978113">Այս էջն արագ բացելու համար տեղադրեք այս հավելվածը</translation>
 <translation id="3445925074670675829">USB-C սարք</translation>
 <translation id="3446274660183028131">Windows-ը տեղադրելու համար գործարկեք Parallels Desktop-ը։</translation>
 <translation id="344630545793878684">Կարդալ ձեր տվյալները մի շարք կայքերում</translation>
@@ -2344,6 +2344,7 @@
 <translation id="3653999333232393305">Շարունակել թույլ տալ <ph name="HOST" />-ին օգտագործել ձեր խոսափողը</translation>
 <translation id="3654045516529121250">Կարդալ մատչելիության կարգավորումները</translation>
 <translation id="3655712721956801464">{NUM_FILES,plural, =1{Այն մեկ ֆայլի մշտական ​​հասանելիություն ունի:}one{Այն # ֆայլի մշտական ​​հասանելիություն ունի:}other{Այն # ֆայլի մշտական ​​հասանելիություն ունի:}}</translation>
+<translation id="3658871634334445293">TrackPoint-ի արագացում</translation>
 <translation id="3660234220361471169">Անվստահելի</translation>
 <translation id="3664511988987167893">Ընդլայնման պատկերակ</translation>
 <translation id="3665589677786828986">Ձեր կարգավորումներից մի քանիսը փոփոխվել են կողմնակի ծրագրով: Chrome-ը վերականգնել է կանխադրված արժեքները:</translation>
@@ -2633,7 +2634,6 @@
 <translation id="3955163004258753966">Չհաջողվեց թարմացումը սկսել</translation>
 <translation id="3955193568934677022">Թույլ տալ կայքերին նվագարկել պաշտպանված բովանդակությունը (խորհուրդ է տրվում)</translation>
 <translation id="3955896417885489542">Ստուգեք Google Play-ի ընտրանքները հետևյալ կարգավորումից հետո</translation>
-<translation id="3956702100721821638">Google Play-ն անհասանելի է</translation>
 <translation id="3957079323242030166">Պահուստավորված տվյալները Drive-ում տարածք չեն զբաղեցնի։</translation>
 <translation id="3957844511978444971">Հպեք «Ընդունում եմ», որպեսզի հաստատեք Google-ի ծառայությունների ձեր կարգավորումները։</translation>
 <translation id="3958088479270651626">Էջանիշների և կարգավորումների ներմուծում</translation>
@@ -2772,6 +2772,7 @@
 <translation id="412730574613779332">Գերհերոս</translation>
 <translation id="4130199216115862831">Սարքի մատյան</translation>
 <translation id="4130207949184424187">Այս ընդլայնումը փոխել է Omnibox-ում որոնման ժամանակ ցուցադրվող էջը:</translation>
+<translation id="4130344535649650885">Պահե՞լ գաղտնաբառը ձեր Google հաշվում</translation>
 <translation id="4130750466177569591">Համաձայն եմ</translation>
 <translation id="413121957363593859">Բաղադրիչներ</translation>
 <translation id="4131410914670010031">Սև ու սպիտակ</translation>
@@ -3291,6 +3292,7 @@
 <translation id="4788092183367008521">Ստուգեք կապը և նորից փորձեք:</translation>
 <translation id="4791000909649665275"><ph name="NUMBER" /> լուսանկար</translation>
 <translation id="4791037424585594169">(UDP)</translation>
+<translation id="4792290259143007505">Միացնել TrackPoint-ի արագացումը</translation>
 <translation id="4792711294155034829">&amp;Հաղորդել խնդրի մասին…</translation>
 <translation id="4794810983896241342">Թարմացումները կառավարվում են<ph name="BEGIN_LINK" />ձեր ադմինիստրատորի<ph name="END_LINK" /> կողմից</translation>
 <translation id="479536056609751218">Վեբէջ, միայն HTML</translation>
@@ -4048,6 +4050,7 @@
 <translation id="5677928146339483299">Արգելափակված է</translation>
 <translation id="5678550637669481956">Կարդալու և գրելու թույլտվություն է տրվել <ph name="VOLUME_NAME" />-ին:</translation>
 <translation id="5678955352098267522">Կարդալ ձեր տվյալները <ph name="WEBSITE_1" /> կայքում</translation>
+<translation id="5680050361008726776">Հեռացնե՞լ «<ph name="ESIM_PROFILE_NAME" />» պրոֆիլը</translation>
 <translation id="5684181005476681636">Wi-Fi-ի մանրամասներ</translation>
 <translation id="5684661240348539843">Ակտիվների նույնացուցիչ</translation>
 <translation id="5687326903064479980">Ժամային գոտի</translation>
@@ -5259,6 +5262,7 @@
 <translation id="7077829361966535409">Պրոքսի-սերվերի ընթացիկ կարգավորումների միջոցով մուտքի էջի բեռնումը չհաջողվեց: <ph name="GAIA_RELOAD_LINK_START" />Փորձեք նորից մուտք գործել<ph name="GAIA_RELOAD_LINK_END" /> կամ օգտագործեք <ph name="PROXY_SETTINGS_LINK_START" />պրոքսի-սերվերի այլ կարգավորումներ<ph name="PROXY_SETTINGS_LINK_END" />:</translation>
 <translation id="7078120482318506217">Բոլոր ցանցերը</translation>
 <translation id="7078386829626602215">Սարքեր չեն հայտնաբերվել <ph name="BEGIN_LINK" />Իմանալ ավելին<ph name="END_LINK" /></translation>
+<translation id="7079716540084905538">Ավելացրեք <ph name="USER_NAME" />-ի երկրորդ Google հաշիվը</translation>
 <translation id="708060913198414444">Պատճենել ձայնանյութի հասցեն</translation>
 <translation id="7081952801286122383">Դուք ինկոգնիտո ռեժիմում եք</translation>
 <translation id="708278670402572152">Անջատվեք ցանցից՝ որոնումը միացնելու համար</translation>
@@ -5626,6 +5630,7 @@
 <translation id="7520766081042531487">Ինկոգնիտո պորտալ՝ <ph name="SUBFRAME_SITE" /></translation>
 <translation id="7521387064766892559">JavaScript</translation>
 <translation id="7522255036471229694">Ասեք «Ok Google»</translation>
+<translation id="7523585675576642403">Վերանվանեք պրոֆիլը</translation>
 <translation id="7525067979554623046">Ստեղծել</translation>
 <translation id="7526658513669652747">{NUM_DOWNLOADS,plural, =1{Եվս 1}one{Եվս {NUM_DOWNLOADS}}other{Եվս {NUM_DOWNLOADS}}}</translation>
 <translation id="7526989658317409655">Տեղապահ</translation>
@@ -7157,7 +7162,6 @@
 <translation id="952992212772159698">Ակտիվացված չէ</translation>
 <translation id="956500788634395331">Դուք պաշտպանված եք վտանգավոր ընդլայնումներից</translation>
 <translation id="957960681186851048">Այս կայքը փորձում էր ավտոմատ մի քանի ֆայլ ներբեռնել</translation>
-<translation id="9580706199804957">Չհաջողվեց միանալ Google-ի ծառայություններին</translation>
 <translation id="958329785990007682">Արգելափակել JavaScript բովանդակությունը</translation>
 <translation id="960719561871045870">Օպերատորի կոդը</translation>
 <translation id="960987915827980018">Մնացել է մոտ 1 ժամ</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index 17a1957..861ad9d 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -2142,7 +2142,6 @@
 <translation id="3441653493275994384">Layar</translation>
 <translation id="3441663102605358937">Login ke <ph name="ACCOUNT" /> lagi untuk memverifikasi akun ini</translation>
 <translation id="3445047461171030979">Jawaban cepat Asisten Google</translation>
-<translation id="3445770710327978113">Instal aplikasi ini agar dapat kembali ke sini dengan cepat</translation>
 <translation id="3445925074670675829">Perangkat USB-C</translation>
 <translation id="3446274660183028131">Luncurkan Parallels Desktop untuk menginstal Windows.</translation>
 <translation id="344630545793878684">Membaca data Anda di sejumlah situs</translation>
@@ -2623,7 +2622,6 @@
 <translation id="3955163004258753966">Error saat memulai upgrade</translation>
 <translation id="3955193568934677022">Izinkan situs memutar konten yang dilindungi (direkomendasikan)</translation>
 <translation id="3955896417885489542">Tinjau opsi Google setelah penyiapan</translation>
-<translation id="3956702100721821638">Tidak dapat menjangkau Google Play</translation>
 <translation id="3957079323242030166">Data cadangan tidak akan mengurangi kuota penyimpanan Drive Anda.</translation>
 <translation id="3957844511978444971">Ketuk “Setuju” untuk mengonfirmasi pilihan setelan layanan Google ini.</translation>
 <translation id="3958088479270651626">Impor bookmark dan setelan</translation>
@@ -7132,7 +7130,6 @@
 <translation id="952992212772159698">Tidak diaktifkan</translation>
 <translation id="956500788634395331">Anda dilindungi dari ekstensi yang berpotensi berbahaya</translation>
 <translation id="957960681186851048">Situs ini berupaya mendownload beberapa file secara otomatis</translation>
-<translation id="9580706199804957">Tidak dapat terhubung dengan layanan Google</translation>
 <translation id="958329785990007682">Blokir JavaScript</translation>
 <translation id="960719561871045870">Kode operator</translation>
 <translation id="960987915827980018">Sekitar 1 jam lagi</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb
index 58b0b659..fae85f3b 100644
--- a/chrome/app/resources/generated_resources_is.xtb
+++ b/chrome/app/resources/generated_resources_is.xtb
@@ -2148,7 +2148,6 @@
 <translation id="3441653493275994384">Skjár</translation>
 <translation id="3441663102605358937">Skráðu þig aftur inn á <ph name="ACCOUNT" /> til að staðfesta þennan reikning</translation>
 <translation id="3445047461171030979">Skjót svör Google hjálparans</translation>
-<translation id="3445770710327978113">Settu þetta forrit upp til að komast hratt hingað aftur</translation>
 <translation id="3445925074670675829">USB-C-tæki</translation>
 <translation id="3446274660183028131">Ræstu Parallels Desktop til að setja upp Windows.</translation>
 <translation id="344630545793878684">Lesa gögnin þín á fjölda vefsvæða</translation>
@@ -2632,7 +2631,6 @@
 <translation id="3955163004258753966">Villa við að hefja uppfærslu</translation>
 <translation id="3955193568934677022">Leyfa vefsvæðum að spila varið efni (ráðlagt)</translation>
 <translation id="3955896417885489542">Fara yfir valkosti Google Play eftir uppsetningu</translation>
-<translation id="3956702100721821638">Ekki náðist í Google Play</translation>
 <translation id="3957079323242030166">Gagnanotkun vegna öryggisafrita er ekki talin með í geymsluplássinu þínu á Drive.</translation>
 <translation id="3957844511978444971">Ýttu á „Samþykkja“ til að staðfesta að þú hafir valið þessar stillingar fyrir þjónustu Google.</translation>
 <translation id="3958088479270651626">Flytja inn bókamerki og stillingar</translation>
@@ -7154,7 +7152,6 @@
 <translation id="952992212772159698">Ekki virkjuð</translation>
 <translation id="956500788634395331">Tækið er varið gegn viðbótum sem gætu verið hættulegar</translation>
 <translation id="957960681186851048">Þetta vefsvæði reyndi að sækja margar skrár sjálfkrafa</translation>
-<translation id="9580706199804957">Ekki tókst að tengjast þjónustu Google</translation>
 <translation id="958329785990007682">Loka á JavaScript</translation>
 <translation id="960719561871045870">Kóði símafyrirtækis</translation>
 <translation id="960987915827980018">Um 1 klukkustund eftir</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index 5a6b98a..1acf571 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -2146,7 +2146,6 @@
 <translation id="3441653493275994384">Schermo</translation>
 <translation id="3441663102605358937">Accedi di nuovo all'account <ph name="ACCOUNT" /> per effettuare la verifica</translation>
 <translation id="3445047461171030979">Risposte rapide dell'Assistente Google</translation>
-<translation id="3445770710327978113">Per tornare qui rapidamente, installa questa app</translation>
 <translation id="3445925074670675829">Dispositivo USB-C</translation>
 <translation id="3446274660183028131">Avvia Parallels Desktop per installare Windows.</translation>
 <translation id="344630545793878684">Lettura dei dati su una serie di siti web</translation>
@@ -2630,7 +2629,6 @@
 <translation id="3955163004258753966">Errore durante l'avvio dell'upgrade</translation>
 <translation id="3955193568934677022">Consenti ai siti di riprodurre i contenuti protetti (opzione consigliata)</translation>
 <translation id="3955896417885489542">Esamina le opzioni di Google Play in seguito alla configurazione</translation>
-<translation id="3956702100721821638">Impossibile raggiungere Google Play</translation>
 <translation id="3957079323242030166">I dati di backup non incidono sulla tua quota di spazio di archiviazione di Drive.</translation>
 <translation id="3957844511978444971">Tocca "Accetta" per confermare la selezione delle impostazioni di questi servizi di Google.</translation>
 <translation id="3958088479270651626">Importa preferiti e impostazioni</translation>
@@ -7152,7 +7150,6 @@
 <translation id="952992212772159698">Non attivo</translation>
 <translation id="956500788634395331">È attiva la protezione da estensioni potenzialmente dannose</translation>
 <translation id="957960681186851048">Questo sito ha tentato di scaricare automaticamente più file</translation>
-<translation id="9580706199804957">Impossibile connettersi ai servizi Google</translation>
 <translation id="958329785990007682">Blocca JavaScript</translation>
 <translation id="960719561871045870">Codice operatore</translation>
 <translation id="960987915827980018">Circa un'ora rimanente</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index cba43e5f..bff7926 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">אין רשתות</translation>
 <translation id="1056898198331236512">אזהרה</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{יש להזין את קוד האימות החדש. קוד אימות חייב להיות באורך תו אחד לפחות, ויכול לכלול אותיות, מספרים ותווים אחרים.}two{יש להזין את קוד האימות החדש. קוד אימות חייב להיות באורך # תווים לפחות, ויכול לכלול אותיות, מספרים ותווים אחרים.}many{יש להזין את קוד האימות החדש. קוד אימות חייב להיות באורך # תווים לפחות, ויכול לכלול אותיות, מספרים ותווים אחרים.}other{יש להזין את קוד האימות החדש. קוד אימות חייב להיות באורך # תווים לפחות, ויכול לכלול אותיות, מספרים ותווים אחרים.}}</translation>
 <translation id="1059944192885972544">נמצאו <ph name="NUM" /> כרטיסיות עבור '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="1060292118287751956">קביעת התדירות של רענון המסך</translation>
 <translation id="1061904396131502319">עוד מעט זמן להפסקה</translation>
@@ -635,9 +636,11 @@
 <translation id="1688935057616748272">צריך להזין אות</translation>
 <translation id="168991973552362966">הוספת מדפסת קרובה</translation>
 <translation id="1689945336726856614">העתקת &amp;כתובת אתר</translation>
+<translation id="1690248886740053041">לא ניתן להתחבר לרשת סלולרית. עליך לפנות לספק לקבלת תמיכה טכנית.</translation>
 <translation id="1692115862433274081">חשבון אחר</translation>
 <translation id="1692118695553449118">סנכרון מופעל</translation>
 <translation id="1692210323591458290">סגול כהה</translation>
+<translation id="169279809881363536">‏לא נמצאו פרופילים נוספים. כדי להגדיר רשת חדשה, יש לסרוק את קוד ה-QR באמצעות מצלמת המכשיר או להזין את קוד ההפעלה שקיבלת מהספק.</translation>
 <translation id="1697150536837697295">אומנות</translation>
 <translation id="1697686431566694143">אישור לערוך את הקובץ</translation>
 <translation id="1698122934742150150">הפעלה נוכחית בלבד במצב אנונימי</translation>
@@ -1575,6 +1578,7 @@
 <translation id="2770465223704140727">הסרה מהרשימה</translation>
 <translation id="2770690685823456775">אפשר לייצא את הסיסמאות לתיקייה אחרת</translation>
 <translation id="2770929488047004208">הרזולוציה של הצג</translation>
+<translation id="2770954829020464827">הפרטים מוסתרים בזמן שיתוף המסך</translation>
 <translation id="2771268254788431918">חבילת גלישה הופעלה</translation>
 <translation id="2771816809568414714">גבינה</translation>
 <translation id="2772936498786524345">מתגנב</translation>
@@ -1943,6 +1947,7 @@
 <translation id="3201422919974259695">‏התקני USB זמינים יופיעו כאן.</translation>
 <translation id="3202131003361292969">נתיב</translation>
 <translation id="3202173864863109533">האודיו בכרטיסייה זו מושתק.</translation>
+<translation id="3202218848974251205">ארגז החול של הגדרות פרטיות</translation>
 <translation id="3208321278970793882">אפליקציה</translation>
 <translation id="3208584281581115441">בדיקה עכשיו</translation>
 <translation id="3208703785962634733">לא מאושר</translation>
@@ -2142,7 +2147,6 @@
 <translation id="3441653493275994384">מסך</translation>
 <translation id="3441663102605358937">יש להיכנס שוב לחשבון <ph name="ACCOUNT" /> כדי לאמת אותו.</translation>
 <translation id="3445047461171030979">‏תשובות מהירות מ-Google Assistant</translation>
-<translation id="3445770710327978113">כדי לחזור לכאן במהירות, מומלץ להתקין את האפליקציה</translation>
 <translation id="3445925074670675829">‏מכשיר עם יציאת USB-C</translation>
 <translation id="3446274660183028131">‏יש להפעיל את Parallels Desktop כדי להתקין את Windows.</translation>
 <translation id="344630545793878684">קריאת הנתונים שלך במספר אתרים</translation>
@@ -2163,6 +2167,7 @@
 <translation id="3459697287128633276">‏כדי לאפשר לחשבונך לגשת אל חנות Google Play, עליך לבצע אימות אצל ספק הזהות שלך.</translation>
 <translation id="3462311546193741693">‏הפעולה הזו תוציא אותך מרוב האתרים אך לא מחשבון Google, כדי שניתן יהיה לנקות את הנתונים המסונכרנים.</translation>
 <translation id="3462413494201477527">האם לבטל את הגדרת החשבון?</translation>
+<translation id="3464145797867108663">הוספת פרופיל עבודה</translation>
 <translation id="346431825526753">זהו חשבון לילדים, המנוהל על-ידי <ph name="CUSTODIAN_EMAIL" />.</translation>
 <translation id="3468298837301810372">תווית</translation>
 <translation id="3468999815377931311">‏טלפון Android</translation>
@@ -2284,6 +2289,7 @@
 <translation id="360180734785106144">להציע תכונות חדשות כשהן זמינות</translation>
 <translation id="3602290021589620013">תצוגה מקדימה</translation>
 <translation id="3603622770190368340">השגת אישור רשת</translation>
+<translation id="3604193429970465812">חשבונות משניים</translation>
 <translation id="3604713164406837697">שינוי הטפט</translation>
 <translation id="3605780360466892872">מר מכופתר</translation>
 <translation id="3608576286259426129">תצוגה מקדימה של תמונת המשתמש</translation>
@@ -2608,6 +2614,7 @@
 
 להפעיל את <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation>
 <translation id="394183848452296464">לא ניתן ליצור קיצור דרך</translation>
+<translation id="3943494825379372497">לשחזר אפליקציות ודפים?</translation>
 <translation id="3943582379552582368">&amp;אחורה</translation>
 <translation id="3943857333388298514">הדבקה</translation>
 <translation id="3948116654032448504">&amp;חיפוש תמונה ב-<ph name="SEARCH_ENGINE" /></translation>
@@ -2623,7 +2630,6 @@
 <translation id="3955163004258753966">שגיאה בשלבי התחלת השדרוג</translation>
 <translation id="3955193568934677022">אתרים יוכלו להפעיל תוכן מוגן (מומלץ)</translation>
 <translation id="3955896417885489542">‏סקירת האפשרויות של Google Play אחרי ההגדרה</translation>
-<translation id="3956702100721821638">‏לא ניתן היה להתחבר אל Google Play</translation>
 <translation id="3957079323242030166">‏נתוני גיבוי אינם נחשבים כחלק ממכסת האחסון ב-Drive.</translation>
 <translation id="3957844511978444971">‏יש להקיש על "אישור" כדי לאשר את בחירת ההגדרות האלה של שירותי Google.</translation>
 <translation id="3958088479270651626">ייבוא סימניות והגדרות</translation>
@@ -2693,6 +2699,7 @@
 <translation id="4046013316139505482">לתוספים האלה לא דרושה יכולת לראות את המידע באתר הזה ולשנות אותו.</translation>
 <translation id="4046123991198612571">הרצועה הבאה</translation>
 <translation id="4047726037116394521">חזרה לדף הבית</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{‏איש קשר אחד לא זמין. כדי להשתמש ב'שיתוף בקרבת מקום' עם אנשי הקשר שלך, יש להוסיף להם את כתובת האימייל שמשויכת לחשבון Google שלהם.}two{‏# אנשי קשר אינם זמינים. כדי להשתמש ב'שיתוף בקרבת מקום' עם אנשי הקשר שלך, יש להוסיף להם את כתובות האימייל שמשויכות לחשבונות Google שלהם.}many{‏# אנשי קשר אינם זמינים. כדי להשתמש ב'שיתוף בקרבת מקום' עם אנשי הקשר שלך, יש להוסיף להם את כתובות האימייל שמשויכות לחשבונות Google שלהם.}other{‏# אנשי קשר אינם זמינים. כדי להשתמש ב'שיתוף בקרבת מקום' עם אנשי הקשר שלך, יש להוסיף להם את כתובות האימייל שמשויכות לחשבונות Google שלהם.}}</translation>
 <translation id="4050225813016893843">שיטת אימות</translation>
 <translation id="4052120076834320548">זעיר</translation>
 <translation id="4056908315660577142">‏הגעת למגבלת הזמן שהוגדרה על ידי ההורה שלך לאפליקציה <ph name="APP_NAME" /> ב-Chrome. מחר אפשר יהיה להשתמש בה למשך <ph name="TIME_LIMIT" />.</translation>
@@ -3339,6 +3346,7 @@
 <translation id="4863769717153320198">‏נראה כמו <ph name="WIDTH" /> x <ph name="HEIGHT" /> (ברירת מחדל)</translation>
 <translation id="4864369630010738180">מתבצעת כניסה...</translation>
 <translation id="4864805589453749318">יש לבחור את ההורה שאישר את ההוספה של חשבון בית ספרי</translation>
+<translation id="4866265760644917470">הפרופיל התווסף בהצלחה.</translation>
 <translation id="486635084936119914">פתיחת סוגי קבצים מסוימים באופן אוטומטי לאחר הורדתם</translation>
 <translation id="48704129375571883">הוספת תכונות נוספות</translation>
 <translation id="4870758487381879312">כדי לקבל פרטי תצורה, צריך להזין סיסמה שהתקבלה ממנהל המערכת</translation>
@@ -3622,6 +3630,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{‏הסיסמה שנחשפה הוחלפה בהצלחה. נותרה עוד סיסמה אחת שנחשפה. ההמלצה של Chrome היא לבדוק את הסיסמה הזו עכשיו.}two{‏הסיסמה שנחשפה הוחלפה בהצלחה. נותרו עוד # סיסמאות שנחשפו. ההמלצה של Chrome היא לבדוק את הסיסמאות האלה עכשיו.}many{‏הסיסמה שנחשפה הוחלפה בהצלחה. נותרו עוד # סיסמאות שנחשפו. ההמלצה של Chrome היא לבדוק את הסיסמאות האלה עכשיו.}other{‏הסיסמה שנחשפה הוחלפה בהצלחה. נותרו עוד # סיסמאות שנחשפו. ההמלצה של Chrome היא לבדוק את הסיסמאות האלה עכשיו.}}</translation>
 <translation id="5207949376430453814">הדגשה של סמן הטקסט</translation>
 <translation id="5209320130288484488">לא נמצאו מכשירים</translation>
+<translation id="5209572028385096813">‏המשתמש הזה מנוהל באמצעות Family Link</translation>
 <translation id="5210365745912300556">סגירת כרטיסייה</translation>
 <translation id="5213481667492808996">שירות הנתונים של '<ph name="NAME" />' מוכן לשימוש</translation>
 <translation id="5213891612754844763">‏הצגת ההגדרות של שרת ה-proxy</translation>
@@ -3707,6 +3716,7 @@
 <translation id="5302048478445481009">שפה</translation>
 <translation id="5302932258331363306">הצגת התחליפים</translation>
 <translation id="5304276686222516262">‏לא ניתן להוריד את רשימת אנשי הקשר. יש לבדוק את החיבור לרשת, או &lt;a href="#" id="tryAgainLink"&gt;לנסות שוב&lt;/a&gt;.</translation>
+<translation id="5305145881844743843">החשבון הזה מנוהל על ידי <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation>
 <translation id="5305688511332277257">לא מותקנים אישורים</translation>
 <translation id="5307030433605830021">המקור אינו נתמך</translation>
 <translation id="5308380583665731573">התחברות</translation>
@@ -4088,6 +4098,7 @@
 <translation id="5740820643029013514">שימוש במצב שקט יותר של העברת הודעות (מומלץ)</translation>
 <translation id="574104302965107104">שיקוף מסך</translation>
 <translation id="574209121243317957">גובה צליל</translation>
+<translation id="5742505912938664543">‏הוספת חשבון משני תאפשר לך לגלוש באינטרנט, להוריד אפליקציות, לבדוק את חשבון Gmail ושירותי Google אחרים באמצעות החשבון הזה.</translation>
 <translation id="5746169159649715125">‏שמירה כקובץ PDF</translation>
 <translation id="5747552184818312860">מועד תפוגה</translation>
 <translation id="5747785204778348146">מפתח - לא יציב</translation>
@@ -4428,6 +4439,7 @@
 <translation id="6129953537138746214">רווח</translation>
 <translation id="6130692320435119637">‏הוספת Wi-Fi</translation>
 <translation id="6136114942382973861">סגירת סרגל ההורדות</translation>
+<translation id="6136287496450963112">מפתח האבטחה שלך אינו מוגן באמצעות קוד אימות. כדי לנהל טביעות אצבע, יש ליצור תחילה קוד אימות.</translation>
 <translation id="6137767437444130246">אישור משתמש</translation>
 <translation id="6138680304137685902">‏חתימת X9.62 ECDSA עם SHA-384</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, אין רשת</translation>
@@ -4608,6 +4620,7 @@
 <translation id="6331566915566907158">‏עזרה בשיפור התכונות והביצועים של Chrome OS</translation>
 <translation id="6331818708794917058">‏אתרים יכולים לבקש הרשאה להתחבר אל מכשירי MIDI</translation>
 <translation id="6333064448949140209">‏הקובץ יישלח אל Google לניפוי באגים</translation>
+<translation id="6334444530352320327">‏האפליקציות והגדרות ה-OS יסתנכרנו בין מכשירי ה-Chromebook שבהם נכנסת לחשבון הזה <ph name="LINK_BEGIN" />סנכרון ההגדרות<ph name="LINK_END" />.</translation>
 <translation id="6338981933082930623">כל אתר יכול להציג לך כל מודעה</translation>
 <translation id="6339668969738228384">יצירת פרופיל חדש בשביל <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="6340017061976355871">‏לא ניתן היה להתחבר אל השרת. יש לבדוק את חיבור הרשת ולנסות שוב. אם הבעיה ממשיכה, יש להפעיל מחדש את ה-Chromebook.</translation>
@@ -4909,6 +4922,7 @@
 <translation id="6709133671862442373">חדשות</translation>
 <translation id="6709357832553498500">התחברות באמצעות <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">הקודם</translation>
+<translation id="6713233729292711163">הוספת פרופיל עבודה</translation>
 <translation id="6715803357256707211">‏התרחשה שגיאה במהלך ההתקנה של אפליקציית Linux. ניתן ללחוץ על ההתראה כדי לקבל פרטים נוספים.</translation>
 <translation id="671619610707606484">הפעולה הזו תגרום למחיקת נתונים בנפח של <ph name="TOTAL_USAGE" /> שאוחסנו על ידי אתרים</translation>
 <translation id="671928215901716392">מסך נעילה</translation>
@@ -5277,6 +5291,7 @@
 <translation id="7121362699166175603">‏ניקוי ההיסטוריה וההשלמות האוטומטיות בשורת כתובת האתר. ייתכן שלחשבון Google שלך יהיו צורות אחרות של היסטוריית גלישה בכתובת <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="7121438501124788993">מצב מפתח</translation>
 <translation id="7121728544325372695">מקפים חכמים</translation>
+<translation id="7122353087820324370">‏הגדרות ה-OS והאפליקציות לא מסונכרנות עם החשבונות המשניים.</translation>
 <translation id="7123030151043029868">מורשים להוריד מספר קבצים באופן אוטומטי</translation>
 <translation id="7123360114020465152">התמיכה הופסקה</translation>
 <translation id="7125148293026877011">‏מחיקה של Crostini</translation>
@@ -5592,6 +5607,7 @@
 <translation id="750509436279396091">פתיחת תיקיית ההורדות</translation>
 <translation id="7506093026325926984">הסיסמה הזו תישמר במכשיר הזה</translation>
 <translation id="7506130076368211615">הגדרת רשת חדשה</translation>
+<translation id="7506242536428928412">כדי להשתמש במפתח האבטחה החדש, יש להגדיר קוד אימות חדש</translation>
 <translation id="7506541170099744506">הרישום של המכשיר שלך <ph name="DEVICE_TYPE" /> לניהול ארגוני הסתיים בהצלחה.</translation>
 <translation id="7507207699631365376">הצגת <ph name="BEGIN_LINK" />מדיניות הפרטיות<ph name="END_LINK" /> של הספק הזה</translation>
 <translation id="7507930499305566459">אישור מגיב סטטוס</translation>
@@ -5755,6 +5771,7 @@
 <translation id="7691077781194517083">לא ניתן לאפס את מפתח האבטחה הזה. שגיאה <ph name="ERROR_CODE" />.</translation>
 <translation id="7691698019618282776">‏שדרוג של Crostini</translation>
 <translation id="7696063401938172191">ב-'<ph name="PHONE_NAME" />' שלך:</translation>
+<translation id="7697166915480294040">הפרטים מוסתרים בזמן שיתוף המסך</translation>
 <translation id="7697598343108519171">‏סריקת קוד QR באמצעות המצלמה</translation>
 <translation id="7699968112832915395">לא ניתן להוסיף חשבון</translation>
 <translation id="7701040980221191251">אין</translation>
@@ -6213,6 +6230,8 @@
 <translation id="8184472985242519288">אחיד</translation>
 <translation id="8186609076106987817">השרת לא הצליח למצוא את הקובץ.</translation>
 <translation id="8188389033983459049">יש לבדוק את הגדרות המכשיר ולהפעיל אותו כדי להמשיך</translation>
+<translation id="8189306097519446565">חשבונות בית ספריים</translation>
+<translation id="8189750580333936930">ארגז חול של הגדרות פרטיות</translation>
 <translation id="8190193592390505034">מתבצע חיבור אל <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">לנהל את היישומים, התוספים והעיצובים שלך</translation>
 <translation id="8195027750202970175">גודל בדיסק</translation>
@@ -6906,6 +6925,7 @@
 <translation id="8986362086234534611">לשכוח</translation>
 <translation id="8986494364107987395">‏שליחה אוטומטית של דוחות קריסה וסטטיסטיקות שימוש ל-Google</translation>
 <translation id="8987927404178983737">חודש</translation>
+<translation id="8989823300731803443">ניתן להמשיך מהמקום שבו הפסקת.</translation>
 <translation id="8990209962746788689">‏לא ניתן ליצור קוד QR</translation>
 <translation id="8991520179165052608">האתר רשאי להשתמש במיקרופון</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{פריט אחד}two{# פריטים}many{# פריטים}other{# פריטים}}</translation>
@@ -7135,7 +7155,6 @@
 <translation id="952992212772159698">לא פעיל</translation>
 <translation id="956500788634395331">המערכת מגינה עליך מפני תוספים שעשויים להיות מזיקים</translation>
 <translation id="957960681186851048">האתר הזה ניסה להוריד קבצים מרובים באופן אוטומטי</translation>
-<translation id="9580706199804957">‏לא ניתן היה להתחבר אל שירותי Google</translation>
 <translation id="958329785990007682">‏חסימת JavaScript</translation>
 <translation id="960719561871045870">קוד ספק</translation>
 <translation id="960987915827980018">נותרה בערך שעה אחת</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index 43be388..6bfe5fe7 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">なし</translation>
 <translation id="1056898198331236512">警告</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{新しい PIN を入力してください。PIN は 1 文字以上の長さにする必要があり、文字や数字などを含めることができます。}other{新しい PIN を入力してください。PIN は # 文字以上の長さにする必要があり、文字や数字などを含めることができます。}}</translation>
 <translation id="1059944192885972544">「<ph name="SEARCH_TEXT" />」に該当するタブが <ph name="NUM" /> 個見つかりました</translation>
 <translation id="1060292118287751956">画面の更新頻度を指定します</translation>
 <translation id="1061904396131502319">もうすぐ休憩の時間です</translation>
@@ -636,9 +637,11 @@
 <translation id="1688935057616748272">文字を入力してください</translation>
 <translation id="168991973552362966">近くのプリンタを追加</translation>
 <translation id="1689945336726856614">URL をコピー(&amp;U)</translation>
+<translation id="1690248886740053041">モバイル ネットワークに接続できません。技術サポートについては、ご利用の携帯通信会社にお問い合わせください。</translation>
 <translation id="1692115862433274081">別のアカウントを使用</translation>
 <translation id="1692118695553449118">同期は有効です</translation>
 <translation id="1692210323591458290">暗い紫</translation>
+<translation id="169279809881363536">プロファイルは検出されませんでした。ネットワークを設定するには、QR コードをデバイスのカメラでスキャンするか、携帯通信会社から提供されたアクティベーション コードを入力してください。</translation>
 <translation id="1697150536837697295">アート</translation>
 <translation id="1697686431566694143">ファイルを編集</translation>
 <translation id="1698122934742150150">現在のシークレット モード セッションのみ</translation>
@@ -1575,6 +1578,7 @@
 <translation id="2770465223704140727">リストから削除</translation>
 <translation id="2770690685823456775">パスワードを別のフォルダにエクスポートしてください</translation>
 <translation id="2770929488047004208">モニターの解像度</translation>
+<translation id="2770954829020464827">画面の共有中は詳細を表示しません</translation>
 <translation id="2771268254788431918">モバイルデータ有効</translation>
 <translation id="2771816809568414714">チーズ</translation>
 <translation id="2772936498786524345">スニーキー</translation>
@@ -1943,6 +1947,7 @@
 <translation id="3201422919974259695">使用可能な USB デバイスがここに表示されます。</translation>
 <translation id="3202131003361292969">パス</translation>
 <translation id="3202173864863109533">このタブの音声はミュートされています。</translation>
+<translation id="3202218848974251205">プライバシー サンドボックス</translation>
 <translation id="3208321278970793882">アプリ</translation>
 <translation id="3208584281581115441">今すぐ確認</translation>
 <translation id="3208703785962634733">未確認</translation>
@@ -2142,7 +2147,6 @@
 <translation id="3441653493275994384">画面</translation>
 <translation id="3441663102605358937">もう一度 <ph name="ACCOUNT" /> にログインしてこのアカウントの確認を行ってください</translation>
 <translation id="3445047461171030979">Google アシスタントのクイック アンサー</translation>
-<translation id="3445770710327978113">このページにすぐにアクセスできるようにするには、このアプリをインストールしてください</translation>
 <translation id="3445925074670675829">USB-C デバイス</translation>
 <translation id="3446274660183028131">Windows をインストールするには Parallels Desktop を起動してください。</translation>
 <translation id="344630545793878684">多数のウェブサイトでのユーザーデータの読み取り</translation>
@@ -2163,6 +2167,7 @@
 <translation id="3459697287128633276">お使いのアカウントで Google Play ストアにアクセスするには、ID プロバイダの認証を受けてください。</translation>
 <translation id="3462311546193741693">ほとんどのサイトからログアウトします。ただし、同期データを削除できるように Google アカウントへのログイン状態は維持されます。</translation>
 <translation id="3462413494201477527">アカウントの設定をキャンセルしますか?</translation>
+<translation id="3464145797867108663">仕事用プロファイルを追加</translation>
 <translation id="346431825526753">これは <ph name="CUSTODIAN_EMAIL" /> によって管理されている子供向けのアカウントです。</translation>
 <translation id="3468298837301810372">ラベル</translation>
 <translation id="3468999815377931311">Android スマートフォン</translation>
@@ -2284,6 +2289,7 @@
 <translation id="360180734785106144">新機能が利用可能になったときにメッセージを表示する</translation>
 <translation id="3602290021589620013">プレビュー</translation>
 <translation id="3603622770190368340">ネットワーク証明書を取得</translation>
+<translation id="3604193429970465812">予備のアカウント</translation>
 <translation id="3604713164406837697">壁紙の変更</translation>
 <translation id="3605780360466892872">ボタンダウン</translation>
 <translation id="3608576286259426129">ユーザー画像のプレビュー</translation>
@@ -2608,6 +2614,7 @@
 
 <ph name="CONTROL_PANEL_APPLET_NAME" /> を開きますか?</translation>
 <translation id="394183848452296464">ショートカットを作成できません</translation>
+<translation id="3943494825379372497">アプリとページを復元しますか?</translation>
 <translation id="3943582379552582368">戻る(&amp;B)</translation>
 <translation id="3943857333388298514">貼り付け</translation>
 <translation id="3948116654032448504"><ph name="SEARCH_ENGINE" /> で画像を検索(&amp;S)</translation>
@@ -2623,7 +2630,6 @@
 <translation id="3955163004258753966">アップグレードの開始中にエラーが発生しました</translation>
 <translation id="3955193568934677022">保護されたコンテンツの再生をサイトに許可する(推奨)</translation>
 <translation id="3955896417885489542">設定後に Google Play オプションを確認する</translation>
-<translation id="3956702100721821638">Google Play に接続できませんでした</translation>
 <translation id="3957079323242030166">バックアップ データは、ドライブの保存容量にはカウントされません。</translation>
 <translation id="3957844511978444971">[同意する] をタップすると、この Google サービスの設定の選択内容を確認したことになります。</translation>
 <translation id="3958088479270651626">ブックマークと設定のインポート</translation>
@@ -2693,6 +2699,7 @@
 <translation id="4046013316139505482">これらの拡張機能は、このサイトの情報の表示、変更を必要としていません。</translation>
 <translation id="4046123991198612571">次のトラック</translation>
 <translation id="4047726037116394521">ホームに移動</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{使用できない連絡先が # 件あります。これらのユーザーとニアバイシェアを利用するには、該当するユーザーの Google アカウントに関連付けられているメールアドレスを連絡先に追加してください。}other{使用できない連絡先が # 件あります。これらのユーザーとニアバイシェアを利用するには、該当するユーザーの Google アカウントに関連付けられているメールアドレスを連絡先に追加してください。}}</translation>
 <translation id="4050225813016893843">認証方法</translation>
 <translation id="4052120076834320548">極小</translation>
 <translation id="4056908315660577142">保護者が設定した <ph name="APP_NAME" /> Chrome アプリの利用時間の上限に達しました。明日は <ph name="TIME_LIMIT" /> まで使えます。</translation>
@@ -3339,6 +3346,7 @@
 <translation id="4863769717153320198">表示上のサイズ: <ph name="WIDTH" />x<ph name="HEIGHT" />(デフォルト)</translation>
 <translation id="4864369630010738180">ログインしています...</translation>
 <translation id="4864805589453749318">学校用アカウントを追加する権限を付与している保護者を選択してください。</translation>
+<translation id="4866265760644917470">プロファイルを追加しました。</translation>
 <translation id="486635084936119914">ダウンロード後に特定の種類のファイルを自動的に開きます</translation>
 <translation id="48704129375571883">その他の機能を追加</translation>
 <translation id="4870758487381879312">設定情報を取得するには管理者から提供されたパスワードを入力してください</translation>
@@ -3622,6 +3630,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{不正使用されたパスワードを変更しました。不正使用されたパスワードは他にも # 件あります。このパスワードを今すぐ確認することをおすすめします。}other{不正使用されたパスワードを変更しました。不正使用されたパスワードは他にも # 件あります。これらのパスワードを今すぐ確認することをおすすめします。}}</translation>
 <translation id="5207949376430453814">テキスト カーソルをハイライト表示する</translation>
 <translation id="5209320130288484488">デバイスが見つかりませんでした</translation>
+<translation id="5209572028385096813">このユーザーはファミリー リンクによって管理されています</translation>
 <translation id="5210365745912300556">タブを閉じる</translation>
 <translation id="5213481667492808996">「<ph name="NAME" />」データサービスを使用できるようになりました</translation>
 <translation id="5213891612754844763">プロキシ設定を表示</translation>
@@ -3707,6 +3716,7 @@
 <translation id="5302048478445481009">言語</translation>
 <translation id="5302932258331363306">置換するテキストを表示</translation>
 <translation id="5304276686222516262">連絡先リストをダウンロードできませんでした。ネットワーク接続を確認するか、&lt;a href="#" id="tryAgainLink"&gt;もう一度お試しください&lt;/a&gt;。</translation>
+<translation id="5305145881844743843">このアカウントは <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> によって管理されています</translation>
 <translation id="5305688511332277257">インストールされていません</translation>
 <translation id="5307030433605830021">サポートされていないソースです</translation>
 <translation id="5308380583665731573">接続</translation>
@@ -4088,6 +4098,7 @@
 <translation id="5740820643029013514">静かな方法で通知する(推奨)</translation>
 <translation id="574104302965107104">ディスプレイ ミラーリング</translation>
 <translation id="574209121243317957">高さ</translation>
+<translation id="5742505912938664543">ここで予備のアカウントを追加すると、そのアカウントを使って、ウェブの閲覧やアプリのダウンロードのほか、Gmail などの Google サービスを利用できるようになります。</translation>
 <translation id="5746169159649715125">PDF に保存</translation>
 <translation id="5747552184818312860">有効期限</translation>
 <translation id="5747785204778348146">Dev - 不安定</translation>
@@ -4428,6 +4439,7 @@
 <translation id="6129953537138746214">Space</translation>
 <translation id="6130692320435119637">Wi-Fi を追加</translation>
 <translation id="6136114942382973861">ダウンロード バーを閉じる</translation>
+<translation id="6136287496450963112">セキュリティ キーは PIN で保護されていません。指紋を管理するには、まず PIN を作成してください。</translation>
 <translation id="6137767437444130246">ユーザー証明書</translation>
 <translation id="6138680304137685902">X9.62 ECDSA 署名(SHA-384)</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />、ネットワークなし</translation>
@@ -4608,6 +4620,7 @@
 <translation id="6331566915566907158">Chrome OS の機能と動作の改善に協力する</translation>
 <translation id="6331818708794917058">サイトが MIDI デバイスへの接続を要求できるようにする</translation>
 <translation id="6333064448949140209">ファイルはデバッグのため Google に送信されます</translation>
+<translation id="6334444530352320327">アプリと OS の設定は、このアカウントを使用してログインしているすべての Chromebook で同期されます。<ph name="LINK_BEGIN" />同期設定<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">すべてのサイトであらゆる広告を表示できるようにする</translation>
 <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" /> の新しいプロフィールを作成します</translation>
 <translation id="6340017061976355871">サーバーに接続できませんでした。ネットワーク接続を確認してもう一度お試しください。問題が解決しない場合は、Chromebook を再起動してください。</translation>
@@ -4909,6 +4922,7 @@
 <translation id="6709133671862442373">ニュース</translation>
 <translation id="6709357832553498500">「<ph name="EXTENSIONNAME" />」を使用して接続</translation>
 <translation id="6710213216561001401">前へ</translation>
+<translation id="6713233729292711163">仕事用プロファイルを追加</translation>
 <translation id="6715803357256707211">Linux アプリケーションのインストール中にエラーが発生しました。詳細を確認するには通知をクリックしてください。</translation>
 <translation id="671619610707606484">サイトにより保存された <ph name="TOTAL_USAGE" /> のデータが削除されます</translation>
 <translation id="671928215901716392">画面をロック</translation>
@@ -5277,6 +5291,7 @@
 <translation id="7121362699166175603">アドレスバーの履歴とオートコンプリートを削除します。お使いの Google アカウントの <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> に、他の形式の閲覧履歴が記録されている場合があります。</translation>
 <translation id="7121438501124788993">デベロッパー モード</translation>
 <translation id="7121728544325372695">スマート ダッシュ</translation>
+<translation id="7122353087820324370">アプリと OS の設定は予備のアカウントには同期されません。</translation>
 <translation id="7123030151043029868">複数のファイルの自動ダウンロードを許可するサイト</translation>
 <translation id="7123360114020465152">サポートが終了しています</translation>
 <translation id="7125148293026877011">Crostini を削除</translation>
@@ -5592,6 +5607,7 @@
 <translation id="750509436279396091">ダウンロード フォルダを開く</translation>
 <translation id="7506093026325926984">このパスワードはこのデバイスに保存されます</translation>
 <translation id="7506130076368211615">新しいネットワークをセットアップ</translation>
+<translation id="7506242536428928412">新しいセキュリティ キーを使用するには、新しい PIN を設定してください</translation>
 <translation id="7506541170099744506">この <ph name="DEVICE_TYPE" /> は組織の管理対象として登録されました。</translation>
 <translation id="7507207699631365376">このプロバイダの<ph name="BEGIN_LINK" />プライバシー ポリシー<ph name="END_LINK" />をご覧ください</translation>
 <translation id="7507930499305566459">ステータス レスポンダ証明書</translation>
@@ -5755,6 +5771,7 @@
 <translation id="7691077781194517083">このセキュリティ キーをリセットできません。エラー <ph name="ERROR_CODE" />。</translation>
 <translation id="7691698019618282776">Crostini のアップグレード</translation>
 <translation id="7696063401938172191">「<ph name="PHONE_NAME" />」で次の操作を行います。</translation>
+<translation id="7697166915480294040">画面の共有中は詳細を表示しません</translation>
 <translation id="7697598343108519171">カメラを使用して QR コードをスキャンする</translation>
 <translation id="7699968112832915395">アカウントを追加できません</translation>
 <translation id="7701040980221191251">なし</translation>
@@ -6212,6 +6229,8 @@
 <translation id="8184472985242519288">均一</translation>
 <translation id="8186609076106987817">お探しのファイルはサーバーにはありません。</translation>
 <translation id="8188389033983459049">続行するには、デバイスの設定で Bluetooth をオンにしてください</translation>
+<translation id="8189306097519446565">学校用アカウント</translation>
+<translation id="8189750580333936930">プライバシー サンドボックス</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> に接続中</translation>
 <translation id="8191230140820435481">アプリ、拡張機能、テーマを管理する</translation>
 <translation id="8195027750202970175">ディスク上のサイズ</translation>
@@ -6903,6 +6922,7 @@
 <translation id="8986362086234534611">削除</translation>
 <translation id="8986494364107987395">使用統計データと障害レポートを Google に自動送信します</translation>
 <translation id="8987927404178983737">月</translation>
+<translation id="8989823300731803443">中断したところから再開します。</translation>
 <translation id="8990209962746788689">QR コードを作成できません</translation>
 <translation id="8991520179165052608">サイトにマイクの使用が許可されています</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{1 個のアイテム}other{# 個のアイテム}}</translation>
@@ -7132,7 +7152,6 @@
 <translation id="952992212772159698">無効</translation>
 <translation id="956500788634395331">有害な可能性がある拡張機能から保護されています</translation>
 <translation id="957960681186851048">このサイトで複数ファイルの自動ダウンロードが試行されました</translation>
-<translation id="9580706199804957">Google サービスに接続できませんでした</translation>
 <translation id="958329785990007682">JavaScript をブロックする</translation>
 <translation id="960719561871045870">事業者コード</translation>
 <translation id="960987915827980018">あと約 1 時間</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb
index da5c6b85..a2dae20 100644
--- a/chrome/app/resources/generated_resources_ka.xtb
+++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -2146,7 +2146,6 @@
 <translation id="3441653493275994384">ეკრანი</translation>
 <translation id="3441663102605358937">ამ ანგარიშის დასადასტურებლად ხელახლა შედით <ph name="ACCOUNT" />-ში</translation>
 <translation id="3445047461171030979">Google ასისტენტის სწრაფი პასუხები</translation>
-<translation id="3445770710327978113">დააინსტალირეთ ეს აპი, აქ უფრო სწრაფად რომ დაბრუნდეთ ხოლმე</translation>
 <translation id="3445925074670675829">USB-C მოწყობილობა</translation>
 <translation id="3446274660183028131">Windows-ის ინსტალაციისთვის გაუშვით Parallels Desktop.</translation>
 <translation id="344630545793878684">წაიკითხეთ თქვენი მონაცემები რამდენიმე ვებსაიტზე</translation>
@@ -2630,7 +2629,6 @@
 <translation id="3955163004258753966">შეცდომა ახალ ვერსიაზე გადასვლისას</translation>
 <translation id="3955193568934677022">ვებსაიტებისთვის დაცული კონტენტის დაკვრის დაშვება (რეკომენდებული)</translation>
 <translation id="3955896417885489542">დაყენების შემდეგ Google Play ვარიანტების გადახედვა</translation>
-<translation id="3956702100721821638">Google Play-თან დაკავშირება ვერ მოხერხდა</translation>
 <translation id="3957079323242030166">სარეზერვო მონაცემები არ იქონიებს გავლენას Google Drive-ში თქვენთვის გამოყოფილ მეხსიერების კვოტაზე.</translation>
 <translation id="3957844511978444971">შეეხეთ „მიღებას“ Google-ის სერვისების პარამეტრების თქვენი არჩევანის დასადასტურებლად.</translation>
 <translation id="3958088479270651626">სანიშნეების და პარამეტრების იმპორტი</translation>
@@ -7150,7 +7148,6 @@
 <translation id="952992212772159698">არ არის გააქტიურებული</translation>
 <translation id="956500788634395331">თქვენ დაცული ხართ პოტენციურად საზიანო გაფართოებებისგან</translation>
 <translation id="957960681186851048">ამ საიტმა ცადა, ავტომატურად ჩამოეტვირთა რამდენიმე ფაილი</translation>
-<translation id="9580706199804957">Google-ის სერვისებთან დაკავშირება ვერ მოხერხდა</translation>
 <translation id="958329785990007682">JavaScript-ის დაბლოკვა</translation>
 <translation id="960719561871045870">ოპერატორის კოდი</translation>
 <translation id="960987915827980018">დარჩა დაახლოებით 1 საათი</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb
index 6bd943e..fe5c226a 100644
--- a/chrome/app/resources/generated_resources_kk.xtb
+++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -2144,7 +2144,6 @@
 <translation id="3441653493275994384">Экран</translation>
 <translation id="3441663102605358937">Осы есептік жазбаны растау үшін <ph name="ACCOUNT" /> есептік жазбасына қайта кіріңіз.</translation>
 <translation id="3445047461171030979">Google Assistant жылдам жауаптары</translation>
-<translation id="3445770710327978113">Осы жерге жылдам оралу үшін осы қолданбаны орнатыңыз.</translation>
 <translation id="3445925074670675829">USB-C құрылғысы</translation>
 <translation id="3446274660183028131">Windows жүйесін орнату үшін Parallels Desktop-ты іске қосыңыз.</translation>
 <translation id="344630545793878684">Көптеген веб-сайттардағы деректеріңізді оқу</translation>
@@ -2628,7 +2627,6 @@
 <translation id="3955163004258753966">Жаңа нұсқа орнату кезінде қате шықты</translation>
 <translation id="3955193568934677022">Сайттарға қорғалған мазмұнды ойнатуға рұқсат беру (ұсынылады)</translation>
 <translation id="3955896417885489542">Реттеуден кейін Google Play опцияларын тексеру</translation>
-<translation id="3956702100721821638">Google Play қолжетімді емес</translation>
 <translation id="3957079323242030166">Сақтық көшірме деректері Drive жадында орын алмайды.</translation>
 <translation id="3957844511978444971">"Қабылдау" түймесін түрту арқылы Google қызметтері параметрлерін таңдағаныңызды растайсыз.</translation>
 <translation id="3958088479270651626">Бетбелгілер мен параметрлерді импорттау</translation>
@@ -7149,7 +7147,6 @@
 <translation id="952992212772159698">Белсендірілмеген</translation>
 <translation id="956500788634395331">Сіз зиянды кеңейтімдерден қорғалғансыз.</translation>
 <translation id="957960681186851048">Бұл сайт бірнеше файлды автоматты түрде жүктеп алғысы келді</translation>
-<translation id="9580706199804957">Google қызметтеріне қосылмады</translation>
 <translation id="958329785990007682">JavaScript мазмұнына тыйым салу</translation>
 <translation id="960719561871045870">Оператор коды</translation>
 <translation id="960987915827980018">Шамамен 1 сағат қалды</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index 91bbead..c50dff12 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">មិនមានបណ្ដាញទេ</translation>
 <translation id="1056898198331236512">ការព្រមាន</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{បញ្ចូល​កូដ PIN ថ្មី​របស់អ្នក។ កូដ PIN ត្រូវតែ​មាន​យ៉ាងហោចណាស់​មួយ​តួ និង​អាច​មានជា​អក្សរ លេខ និង​តួអក្សរ​ផ្សេងទៀត។}other{បញ្ចូល​កូដ PIN ថ្មី​របស់អ្នក។ កូដ PIN ត្រូវតែ​មាន​យ៉ាងហោចណាស់​ # ​តួ និង​អាច​មានជា​អក្សរ លេខ និង​តួអក្សរ​ផ្សេងទៀត។}}</translation>
 <translation id="1059944192885972544">បានរកឃើញផ្ទាំង <ph name="NUM" /> សម្រាប់ '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="1060292118287751956">កំណត់ហ្វ្រេកង់ដែលអេក្រង់ធ្វើបច្ចុប្បន្នភាព</translation>
 <translation id="1061904396131502319">ជិតដល់ពេលសម្រាកហើយ</translation>
@@ -636,9 +637,11 @@
 <translation id="1688935057616748272">វាយ​បញ្ចូល​អក្សរ</translation>
 <translation id="168991973552362966">បន្ថែម​ម៉ាស៊ីន​បោះពុម្ព​នៅ​ក្បែរ</translation>
 <translation id="1689945336726856614">ចម្លង &amp;URL</translation>
+<translation id="1690248886740053041">មិនអាចភ្ជាប់ជាមួយបណ្ដាញ​ទូរសព្ទ​ចល័តបានទេ។ ដើម្បីទទួលបានជំនួយ​បច្ចេកទេស សូមទាក់ទងក្រុមហ៊ុន​សេវាទូរសព្ទរបស់អ្នក។</translation>
 <translation id="1692115862433274081">ប្រើ​គណនី​ផ្សេង</translation>
 <translation id="1692118695553449118">សមកម្មបានបើក</translation>
 <translation id="1692210323591458290">ស្វាយ​ចាស់</translation>
+<translation id="169279809881363536">រកមិនឃើញកម្រងព័ត៌មានទេ។ ដើម្បីរៀបចំបណ្ដាញថ្មី សូមស្កេនកូដ QR ដោយប្រើ​កាមេរ៉ារបស់ឧបករណ៍ ឬបញ្ចូលលេខកូដ​បើកដំណើរការ ដែលបានផ្ដល់​ដោយក្រុមហ៊ុន​សេវាទូរសព្ទរបស់អ្នក។</translation>
 <translation id="1697150536837697295">សិល្បៈ</translation>
 <translation id="1697686431566694143">កែ​ឯកសារ</translation>
 <translation id="1698122934742150150">វេនប្រើអនាមិកបច្ចុប្បន្នប៉ុណ្ណោះ</translation>
@@ -1575,6 +1578,7 @@
 <translation id="2770465223704140727">ដកចេញពីបញ្ជី</translation>
 <translation id="2770690685823456775">នាំចេញ​ពាក្យ​សម្ងាត់​របស់​អ្នក​ទៅ​ថត​ផ្សេង</translation>
 <translation id="2770929488047004208">កម្រិតច្បាស់របស់អេក្រង់</translation>
+<translation id="2770954829020464827">ព័ត៌មានលម្អិត​ត្រូវបានលាក់ នៅពេលអ្នកចែករំលែក​អេក្រង់របស់អ្នក</translation>
 <translation id="2771268254788431918">បាន​បើក​ដំណើរការ​ទិន្នន័យ​ទូរសព្ទចល័ត</translation>
 <translation id="2771816809568414714">ឈីស</translation>
 <translation id="2772936498786524345">អាថ៌កំបាំង</translation>
@@ -1943,6 +1947,7 @@
 <translation id="3201422919974259695">ឧបករណ៍ USB ដែលអាចប្រើបាននឹងបង្ហាញនៅទីនេះ។</translation>
 <translation id="3202131003361292969">ផ្លូវ</translation>
 <translation id="3202173864863109533">សម្លេងរបស់ផ្ទាំងនេះកំពុងត្រូវបានបិទ។</translation>
+<translation id="3202218848974251205">ប្រអប់សុវត្ថិភាពឯកជនភាព</translation>
 <translation id="3208321278970793882">កម្មវិធី</translation>
 <translation id="3208584281581115441">ពិនិត្យ​ឥឡូវនេះ</translation>
 <translation id="3208703785962634733">មិនត្រូវបានអះអាង</translation>
@@ -2142,7 +2147,6 @@
 <translation id="3441653493275994384">អេក្រង់</translation>
 <translation id="3441663102605358937">ចូល <ph name="ACCOUNT" /> ម្ដងទៀត ដើម្បី​ផ្ទៀងផ្ទាត់​គណនីនេះ</translation>
 <translation id="3445047461171030979">ចម្លើយ​រហ័សរបស់ Google ជំនួយការ</translation>
-<translation id="3445770710327978113">ដើម្បីត្រឡប់មកទីនេះវិញឱ្យបានរហ័ស សូមដំឡើងកម្មវិធីនេះ</translation>
 <translation id="3445925074670675829">ឧបករណ៍ USB-C</translation>
 <translation id="3446274660183028131">សូមចាប់ផ្ដើម Parallels Desktop ដើម្បីដំឡើង Windows។</translation>
 <translation id="344630545793878684">អានទិន្នន័យរបស់អ្នកនៅលើគេហទំព័រមួយចំនួន</translation>
@@ -2163,6 +2167,7 @@
 <translation id="3459697287128633276">ដើម្បី​អនុញ្ញាតឲ្យគណនីរបស់អ្នកចូលប្រើ Google Play Store សូមផ្ទៀងផ្ទាត់ជាមួយសេវាកម្មផ្តល់អត្តសញ្ញាណរបស់អ្នក។</translation>
 <translation id="3462311546193741693">នាំអ្នកចេញពីគេហទំព័រភាគច្រើន។ អ្នក​នឹង​ស្ថិតនៅក្នុងគណនី​ Google របស់អ្នកដដែល ទើបអាចសម្អាតទិន្នន័យ​ដែលបាន​ធ្វើសមកាលកម្ម​របស់អ្នកបាន។</translation>
 <translation id="3462413494201477527">បោះបង់ការបង្កើតគណនី?</translation>
+<translation id="3464145797867108663">បញ្ចូលកម្រងព័ត៌មានការងារ</translation>
 <translation id="346431825526753">នេះគឺជាគណនីសម្រាប់កុមារដែលគ្រប់គ្រងដោយ <ph name="CUSTODIAN_EMAIL" />។</translation>
 <translation id="3468298837301810372">ស្លាក</translation>
 <translation id="3468999815377931311">ទូរសព្ទ Android</translation>
@@ -2284,6 +2289,7 @@
 <translation id="360180734785106144">ផ្ដល់ជូនមុខងារថ្មីៗនៅពេលដែលមាន</translation>
 <translation id="3602290021589620013">ពិនិត្យមើល</translation>
 <translation id="3603622770190368340">ទទួលយកវិញ្ញាបនប័ត្របណ្តាញ</translation>
+<translation id="3604193429970465812">គណនី​បន្ទាប់បន្សំ</translation>
 <translation id="3604713164406837697">ប្ដូរផ្ទាំងរូបភាព</translation>
 <translation id="3605780360466892872">Buttondown</translation>
 <translation id="3608576286259426129">ពិនិត្យមើលរូបភាពអ្នកប្រើ</translation>
@@ -2608,6 +2614,7 @@
 
   តើអ្នកចង់ចាប់ផ្តើម <ph name="CONTROL_PANEL_APPLET_NAME" />ទេ?</translation>
 <translation id="394183848452296464">មិន​អាច​បង្កើត​ផ្លូវ​កាត់​បានទេ</translation>
+<translation id="3943494825379372497">ស្ដារកម្មវិធី និងទំព័រឬ?</translation>
 <translation id="3943582379552582368">ត្រលប់</translation>
 <translation id="3943857333388298514">បិទភ្ជាប់</translation>
 <translation id="3948116654032448504">&amp;ស្វែងរករូបភាពតាម <ph name="SEARCH_ENGINE" /></translation>
@@ -2623,7 +2630,6 @@
 <translation id="3955163004258753966">មានបញ្ហា​ក្នុងការ​ចាប់ផ្ដើម​ដំឡើងកំណែ</translation>
 <translation id="3955193568934677022">អនុញ្ញាត​ឲ្យ​ទំព័រ​ចាក់​មាតិកា​ដែលមាន​ការ​ការពារ (ត្រូវបាន​ណែនាំ)</translation>
 <translation id="3955896417885489542">ពិនិត្យមើល​ជម្រើស Google Play បន្ទាប់ពី​រៀបចំរួច</translation>
-<translation id="3956702100721821638">មិនអាចភ្ជាប់ជាមួយ Google Play បានទេ</translation>
 <translation id="3957079323242030166">ទិន្នន័យ​បម្រុង​ទុក​នឹង​មិន​រាប់​បញ្ចូល​ទៅក្នុងកម្រិត​កំណត់នៃទំហំ​ផ្ទុកថាស​របស់អ្នក​ទេ។</translation>
 <translation id="3957844511978444971">ចុច “យល់ព្រម” ដើម្បី​បញ្ជាក់​អំពី​ការ​ជ្រើសរើស​ការកំណត់​សេវាកម្ម​របស់​ Google ទាំងនេះ​។</translation>
 <translation id="3958088479270651626">នាំចូលចំណាំ និងការកំណត់</translation>
@@ -2693,6 +2699,7 @@
 <translation id="4046013316139505482">កម្មវិធី​បន្ថែម​ទាំងនេះ​មិនត្រូវការ​មើល និង​ប្ដូរ​ព័ត៌មាន​នៅលើ​គេហទំព័រ​នេះទេ។</translation>
 <translation id="4046123991198612571">បទ​បន្ទាប់</translation>
 <translation id="4047726037116394521">ចូលទំព័រ​ដើម</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{មិនអាចភ្ជាប់ជាមួយទំនាក់ទំនង # បានទេ។ ដើម្បី​ប្រើ​មុខងារចែករំលែក​នៅជិត​ជាមួយគាត់ សូម​បញ្ចូល​អាសយដ្ឋាន​អ៊ីមែល ​ដែលភ្ជាប់​ជាមួយ​គណនី Google របស់គាត់​ទៅក្នុង​ទំនាក់ទំនង​របស់អ្នក​។}other{មិនអាចភ្ជាប់ជាមួយទំនាក់ទំនង # បានទេ។ ដើម្បី​ប្រើ​មុខងារចែករំលែក​នៅជិត​ជាមួយពួកគាត់ សូម​បញ្ចូល​អាសយដ្ឋាន​អ៊ីមែល ​ដែលភ្ជាប់​ជាមួយ​គណនី Google របស់ពួកគាត់​ទៅក្នុង​ទំនាក់ទំនង​របស់អ្នក​។}}</translation>
 <translation id="4050225813016893843">វិធីផ្ទៀងផ្ទាត់</translation>
 <translation id="4052120076834320548">តូចខ្លាំង</translation>
 <translation id="4056908315660577142">អ្នក​បានឈានដល់​រយៈពេល​កំណត់ ដែល​មាតាបិតា​របស់អ្នក​បានកំណត់​សម្រាប់​កម្មវិធី <ph name="APP_NAME" /> សម្រាប់ Chrome ហើយ​។ អ្នក​អាច​ប្រើ​កម្មវិធីនេះ​រយៈពេល <ph name="TIME_LIMIT" /> នៅថ្ងៃស្អែក​។</translation>
@@ -3339,6 +3346,7 @@
 <translation id="4863769717153320198">មើល​ទៅដូចជា <ph name="WIDTH" /> x <ph name="HEIGHT" /> (លំនាំ​ដើម)</translation>
 <translation id="4864369630010738180">កំពុង​ចូល...</translation>
 <translation id="4864805589453749318">ជ្រើសរើស​មាតាបិតា​ដែលកំពុងផ្ដល់​ការអនុញ្ញាតឱ្យ​បញ្ចូល​គណនី​សាលារៀន។</translation>
+<translation id="4866265760644917470">បានបញ្ចូលកម្រងព័ត៌មានដោយជោគជ័យហើយ។</translation>
 <translation id="486635084936119914">បើក​ប្រភេទឯកសារជាក់លាក់ដោយស្វ័យប្រវត្តិ បន្ទាប់ពីទាញយករួចហើយ</translation>
 <translation id="48704129375571883">បន្ថែមលក្ខណៈពិសេសបន្ថែម</translation>
 <translation id="4870758487381879312">បញ្ចូល​ពាក្យសម្ងាត់ដែលផ្ដល់ដោយ​អ្នក​គ្រប់គ្រង ដើម្បី​ទទួលបានព័ត៌មាន​អំពីការ​កំណត់រចនាសម្ព័ន្ធ</translation>
@@ -3622,6 +3630,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{បានប្ដូរ​ពាក្យសម្ងាត់ដែលរងការលុកលុយ​ដោយជោគជ័យហើយ។ អ្នកមាន​ពាក្យសម្ងាត់ដែលរងការលុកលុយ # ទៀត។ Chrome ណែនាំឱ្យ​ពិនិត្យមើល​ពាក្យសម្ងាត់នេះ​ឥឡូវនេះ។}other{បានប្ដូរ​ពាក្យសម្ងាត់ដែលរងការលុកលុយ​ដោយជោគជ័យហើយ។ អ្នកមាន​ពាក្យសម្ងាត់ដែល​រងការលុកលុយ # ទៀត។ Chrome ណែនាំឱ្យ​ពិនិត្យមើល​ពាក្យសម្ងាត់​ទាំងនេះ​ឥឡូវនេះ។}}</translation>
 <translation id="5207949376430453814">រំលេច​សញ្ញា​អត្ថបទ</translation>
 <translation id="5209320130288484488">គ្មានឧបករណ៍ត្រូវបានរកឃើញទេ</translation>
+<translation id="5209572028385096813">អ្នកប្រើប្រាស់នេះ​ស្ថិតក្រោមការគ្រប់គ្រងរបស់ Family Link</translation>
 <translation id="5210365745912300556">បិទផ្ទាំង</translation>
 <translation id="5213481667492808996">​អាច​ប្រើសេវាកម្ម​ទិន្នន័យ '<ph name="NAME" />' របស់អ្នកបានហើយ</translation>
 <translation id="5213891612754844763">បង្ហាញ​ការកំណត់​ប្រូកស៊ី</translation>
@@ -3707,6 +3716,7 @@
 <translation id="5302048478445481009">ភាសា</translation>
 <translation id="5302932258331363306">បង្ហាញ​ការជំនួស</translation>
 <translation id="5304276686222516262">មិនអាច​ទាញយក​បញ្ជីទំនាក់ទំនង​បានទេ។ សូម​ពិនិត្យមើល​ការតភ្ជាប់បណ្ដាញ​របស់អ្នក ឬ&lt;a href="#" id="tryAgainLink"&gt;ព្យាយាម​ម្ដងទៀត&lt;/a&gt;។</translation>
+<translation id="5305145881844743843">គណនីនេះស្ថិតក្រោមការគ្រប់គ្រងរបស់ <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation>
 <translation id="5305688511332277257">គ្មានអ្វីត្រូវបានតំឡើងទេ</translation>
 <translation id="5307030433605830021">មិនស្គាល់​ប្រភព​ទេ</translation>
 <translation id="5308380583665731573">ភ្ជាប់</translation>
@@ -4088,6 +4098,7 @@
 <translation id="5740820643029013514">ប្រើការផ្ញើសារដែលស្ងាត់ជាងមុន (បានណែនាំ)</translation>
 <translation id="574104302965107104">ការបញ្ចាំងផ្ទាំងអេក្រង់</translation>
 <translation id="574209121243317957">កម្រិតកម្ពស់​សូរ</translation>
+<translation id="5742505912938664543">នៅពេលអ្នកបញ្ចូលគណនីបន្ទាប់បន្សំនៅទីនេះ អ្នកអាចរុករកអ៊ីនធឺណិត, ទាញយកកម្មវិធី, ពិនិត្យមើល Gmail របស់អ្នក និងប្រើសេវាកម្ម Google ផ្សេងទៀត ដោយប្រើគណនីនោះ។</translation>
 <translation id="5746169159649715125">រក្សាទុកជា PDF</translation>
 <translation id="5747552184818312860">ផុតកំណត់</translation>
 <translation id="5747785204778348146">អ្នកអភិវឌ្ឍន៍ - មិនថេរ</translation>
@@ -4428,6 +4439,7 @@
 <translation id="6129953537138746214">ដកឃ្លា</translation>
 <translation id="6130692320435119637">បញ្ចូល Wi-Fi</translation>
 <translation id="6136114942382973861">បិទ​របារ​ទាញយក</translation>
+<translation id="6136287496450963112">សោសុវត្ថិភាពរបស់អ្នក​មិនបាន​ប្រើកូដ PIN សម្រាប់​ការពារទេ។ ដើម្បីគ្រប់គ្រងស្នាម​ម្រាមដៃ សូមបង្កើតកូដ PIN ជាមុនសិន។</translation>
 <translation id="6137767437444130246">វិញ្ញាបនបត្រ​អ្នក​ប្រើប្រាស់</translation>
 <translation id="6138680304137685902">ហត្ថលេខា X9.62 ECDSA ជាមួយ SHA-384</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, គ្មាន​បណ្ដាញ</translation>
@@ -4608,6 +4620,7 @@
 <translation id="6331566915566907158">ជួយ​កែលម្អ​មុខងារ និង​ប្រតិបត្តិការ​របស់ Chrome OS</translation>
 <translation id="6331818708794917058">គេហទំព័រអាចស្នើសុំភ្ជាប់ជាមួយឧបករណ៍ MIDI</translation>
 <translation id="6333064448949140209">ឯកសារនឹងត្រូវបានផ្ញើទៅ Google ដើម្បីកែកំហុស</translation>
+<translation id="6334444530352320327">ការកំណត់ប្រព័ន្ធ​ប្រតិបត្តិការ និងកម្មវិធីរបស់អ្នកនឹងធ្វើ​សម​កាល​កម្មនៅលើ Chromebook ទាំងឡាយ ដែលអ្នកបានចូលដោយប្រើគណនីនេះ។<ph name="LINK_BEGIN" />ការកំណត់​សម​កាល​កម្ម<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">គេហទំព័រទាំងអស់អាចបង្ហាញការផ្សាយពាណិជ្ជកម្មដល់អ្នក</translation>
 <translation id="6339668969738228384">បង្កើត​កម្រង​ព័ត៌មាន​ថ្មី​សម្រាប់ <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="6340017061976355871">មិនអាចភ្ជាប់ជាមួយម៉ាស៊ីនមេបានទេ។ សូមពិនិត្យការភ្ជាប់បណ្តាញរបស់អ្នក រួចព្យាយាមម្តងទៀត។ ប្រសិនបើបញ្ហា​នេះ​នៅតែបន្តកើតមាន សូមចាប់ផ្តើម Chromebook របស់អ្នកឡើងវិញ។</translation>
@@ -4909,6 +4922,7 @@
 <translation id="6709133671862442373">ព័ត៌មាន</translation>
 <translation id="6709357832553498500">ភ្ជាប់ដោយប្រើ <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">មុន</translation>
+<translation id="6713233729292711163">បញ្ចូលកម្រងព័ត៌មានការងារ</translation>
 <translation id="6715803357256707211">មាន​បញ្ហាកើតឡើង អំឡុង​ពេល​ដំឡើង​កម្មវិធី Linux របស់អ្នក។ សូមចុច​លើ​ការជូន​ដំណឹង​សម្រាប់​ព័ត៌មាន​លម្អិត​។</translation>
 <translation id="671619610707606484">សកម្មភាពនេះ​នឹងសម្អាតទិន្នន័យ​ទំហំ <ph name="TOTAL_USAGE" /> ដែលបានរក្សាទុក​ដោយគេហទំព័រ</translation>
 <translation id="671928215901716392">ចាក់សោរ</translation>
@@ -5277,6 +5291,7 @@
 <translation id="7121362699166175603">សម្អាតប្រវត្តិ និងការបំពេញដោយស្វ័យប្រវត្តិនៅក្នុងរបារអាសយដ្ឋាននេះ។ គណនី Google របស់អ្នកអាចនឹងមានទម្រង់ប្រវត្តិរុករកផ្សេងទៀតនៅ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> ។</translation>
 <translation id="7121438501124788993">មុខងារ​អ្នកអភិវឌ្ឍន៍</translation>
 <translation id="7121728544325372695">ផ្ទាំងព័ត៌មានឆ្លាតវៃ</translation>
+<translation id="7122353087820324370">ការកំណត់ប្រព័ន្ធ​ប្រតិបត្តិការ និងកម្មវិធីមិនធ្វើ​សម​កាល​កម្មជាមួយគណនីបន្ទាប់បន្សំទេ។</translation>
 <translation id="7123030151043029868">អនុញ្ញាតឱ្យទាញយកឯកសារច្រើនដោយស្វ័យប្រវត្តិ</translation>
 <translation id="7123360114020465152">លែង​ប្រើបាន​ទៀតហើយ</translation>
 <translation id="7125148293026877011">លុប Crostini</translation>
@@ -5592,6 +5607,7 @@
 <translation id="750509436279396091">បើកថតឯកសារទាញយក</translation>
 <translation id="7506093026325926984">ពាក្យសម្ងាត់នេះនឹងត្រូវបានរក្សាទុកនៅលើឧបករណ៍នេះ</translation>
 <translation id="7506130076368211615">រៀបចំបណ្ដាញថ្មី</translation>
+<translation id="7506242536428928412">ដើម្បីប្រើសោសុវត្ថិភាព​ថ្មីរបស់អ្នក សូមកំណត់កូដ PIN ថ្មី</translation>
 <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> របស់អ្នកបានចុះឈ្មោះដោយជោគជ័យសម្រាប់ការគ្រប់គ្រងសហគ្រាស។</translation>
 <translation id="7507207699631365376">មើល<ph name="BEGIN_LINK" />គោលការណ៍ឯកជនភាព<ph name="END_LINK" />របស់ក្រុមហ៊ុនផ្ដល់សេវានេះ</translation>
 <translation id="7507930499305566459">វិញ្ញាបនប័ត្រអ្នកឆ្លើយតបស្ថានភាព</translation>
@@ -5755,6 +5771,7 @@
 <translation id="7691077781194517083">មិនអាចកំណត់​សោសុវត្ថិភាពនេះ​ឡើងវិញបានទេ។ <ph name="ERROR_CODE" /> មានបញ្ហា។</translation>
 <translation id="7691698019618282776">ការដំឡើងកំណែ Crostini</translation>
 <translation id="7696063401938172191">នៅ​លើ '<ph name="PHONE_NAME" />' របស់អ្នក៖</translation>
+<translation id="7697166915480294040">ព័ត៌មានលម្អិត​ត្រូវបានលាក់ នៅពេលអ្នកចែករំលែក​អេក្រង់របស់អ្នក</translation>
 <translation id="7697598343108519171">ប្រើកាមេរ៉ា ដើម្បីស្កេនកូដ QR</translation>
 <translation id="7699968112832915395">មិនអាចបញ្ចូលគណនីបានទេ</translation>
 <translation id="7701040980221191251">គ្មាន</translation>
@@ -6211,6 +6228,8 @@
 <translation id="8184472985242519288">ឯកសណ្ឋាន</translation>
 <translation id="8186609076106987817">ម៉ាស៊ីនមេមិនអាចស្វែងរកឯកសារទេ។</translation>
 <translation id="8188389033983459049">ពិនិត្យមើល​ការកំណត់​ឧបករណ៍​របស់អ្នក ហើយបើកវា​ដើម្បីបន្ត</translation>
+<translation id="8189306097519446565">គណនីសាលារៀន</translation>
+<translation id="8189750580333936930">ប្រអប់សុវត្ថិភាពឯកជនភាព</translation>
 <translation id="8190193592390505034">កំពុងភ្ជាប់ទៅ <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">គ្រប់គ្រងកម្មវិធី កម្មវិធីបន្ថែម និងធីមរបស់អ្នក</translation>
 <translation id="8195027750202970175">ទំហំផ្ទុករបស់ថាស</translation>
@@ -6902,6 +6921,7 @@
 <translation id="8986362086234534611">បំភ្លេច</translation>
 <translation id="8986494364107987395">ផ្ញើស្ថិតិការប្រើប្រាស់ និងរបាយការណ៍ការគាំងទៅ Google ដោយស្វ័យប្រវត្តិ</translation>
 <translation id="8987927404178983737">ខែ</translation>
+<translation id="8989823300731803443">បន្តត្រង់ចំណុចដែលអ្នកបានចាកចេញ។</translation>
 <translation id="8990209962746788689">មិនអាចបង្កើតកូដ QR បានទេ</translation>
 <translation id="8991520179165052608">ទំព័រ​អាចប្រើ​មីក្រូហ្វូន​របស់អ្នកបាន</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{ធាតុ 1}other{ធាតុ #}}</translation>
@@ -7131,7 +7151,6 @@
 <translation id="952992212772159698">មិនត្រូវបានធ្វើសកម្មភាពទេ</translation>
 <translation id="956500788634395331">អ្នក​ទទួលបាន​ការការពារពី​កម្មវិធីបន្ថែម​ដែលអាច​បង្កគ្រោះថ្នាក់</translation>
 <translation id="957960681186851048">ទំព័រ​នេះ​បាន​ព្យាយាម​ទាញយក​ឯកសារ​ជាច្រើន​ដោយ​ស្វ័យប្រវត្តិ</translation>
-<translation id="9580706199804957">មិនអាចភ្ជាប់ជាមួយសេវាកម្មនានារបស់ Google បានទេ</translation>
 <translation id="958329785990007682">ទប់ស្កាត់ JavaScript</translation>
 <translation id="960719561871045870">លេខកូដប្រតិបត្តិករ</translation>
 <translation id="960987915827980018">នៅសល់ប្រហែលមួយម៉ោងទៀត</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index 646ef1f..90b0eba 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -2148,7 +2148,6 @@
 <translation id="3441653493275994384">ಸ್ಕ್ರೀನ್‌</translation>
 <translation id="3441663102605358937">ಈ ಖಾತೆಯನ್ನು ದೃಢೀಕರಿಸಲು <ph name="ACCOUNT" /> ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation>
 <translation id="3445047461171030979">Google Assistant ತ್ವರಿತ ಉತ್ತರಗಳು</translation>
-<translation id="3445770710327978113">ಇಲ್ಲಿಗೆ ತ್ವರಿತವಾಗಿ ಮರಳಲು, ಈ ಆ್ಯಪ್ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ</translation>
 <translation id="3445925074670675829">USB-C ಸಾಧನ</translation>
 <translation id="3446274660183028131">Windows ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು Parallels Desktop ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ.</translation>
 <translation id="344630545793878684">ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಹಲವಾರು ವೆಬ್‌ಸೈಟ್‌ಗಳಲ್ಲಿ ಓದಿ</translation>
@@ -2632,7 +2631,6 @@
 <translation id="3955163004258753966">ಅಪ್‌ಗ್ರೇಡ್ ಪ್ರಾರಂಭಿಸುವಾಗ ದೋಷ ಉಂಟಾಗಿದೆ</translation>
 <translation id="3955193568934677022">ಸಂರಕ್ಷಿಸಲಾದ ವಿಷಯವನ್ನು ಪ್ಲೇ ಮಾಡಲು ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="3955896417885489542">ಸೆಟಪ್ ನಂತರ Google Play ಆಯ್ಕೆಗಳನ್ನು ವಿಮರ್ಶಿಸಿ</translation>
-<translation id="3956702100721821638">Google Play ಅನ್ನು ತಲುಪಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation>
 <translation id="3957079323242030166">ಬ್ಯಾಕಪ್ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ಡ್ರೈವ್ ಸಂಗ್ರಹಣೆ ಕೋಟಾದಲ್ಲಿ ಪರಿಗಣಿಸಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="3957844511978444971">ಈ Google ಸೇವಾ ಸೆಟ್ಟಿಂಗ್‌ಗಳ ನಿಮ್ಮ ಆಯ್ಕೆಯನ್ನು ಖಚಿತಪಡಿಸಲು "ಸಮ್ಮತಿಸಿ" ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation>
 <translation id="3958088479270651626">ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು ಮತ್ತು ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಆಮದು ಮಾಡಿ</translation>
@@ -7156,7 +7154,6 @@
 <translation id="952992212772159698">ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿಲ್ಲ</translation>
 <translation id="956500788634395331">ಹಾನಿಕಾರಕ ವಿಸ್ತರಣೆಗಳಿಂದ ನಿಮ್ಮನ್ನು ರಕ್ಷಿಸಲಾಗಿದೆ</translation>
 <translation id="957960681186851048">ಈ ಸೈಟ್‌ ಬಹು ಫೈಲ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೌನ್‌ಲೋಡ್‌ ಮಾಡಲು ಯತ್ನಿಸಿದೆ</translation>
-<translation id="9580706199804957">Google ಸೇವೆಗಳ ಮೂಲಕ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation>
 <translation id="958329785990007682">JavaScript ಅನ್ನು ನಿರ್ಬಂಧಿಸಿ</translation>
 <translation id="960719561871045870">ಆಪರೇಟರ್ ಕೋಡ್</translation>
 <translation id="960987915827980018">ಸುಮಾರು 1 ಗಂಟೆ ಉಳಿದಿದೆ</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index f9297810..4caf0d0 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">네트워크 없음</translation>
 <translation id="1056898198331236512">경고</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{새 PIN을 입력하세요. PIN은 1자 이상이어야 하며 글자, 숫자, 기타 문자를 포함할 수 있습니다.}other{새 PIN을 입력하세요. PIN은 #자 이상이어야 하며 글자, 숫자, 기타 문자를 포함할 수 있습니다.}}</translation>
 <translation id="1059944192885972544">'<ph name="SEARCH_TEXT" />' 검색결과로 탭 <ph name="NUM" />개 찾음</translation>
 <translation id="1060292118287751956">화면 업데이트 빈도 결정</translation>
 <translation id="1061904396131502319">곧 휴식 시간입니다</translation>
@@ -636,9 +637,11 @@
 <translation id="1688935057616748272">문자를 입력하세요</translation>
 <translation id="168991973552362966">근처 프린터 추가</translation>
 <translation id="1689945336726856614">&amp;URL 복사</translation>
+<translation id="1690248886740053041">모바일 네트워크에 연결할 수 없습니다. 기술 지원이 필요하면 이동통신사에 문의하세요.</translation>
 <translation id="1692115862433274081">다른 계정 사용</translation>
 <translation id="1692118695553449118">동기화 사용 중</translation>
 <translation id="1692210323591458290">진한 보라색</translation>
+<translation id="169279809881363536">발견된 프로필이 없습니다. 새 네트워크를 설정하려면 기기 카메라로 QR 코드를 스캔하거나 이동통신사에서 제공한 활성화 코드를 입력하세요.</translation>
 <translation id="1697150536837697295">예술</translation>
 <translation id="1697686431566694143">파일 수정</translation>
 <translation id="1698122934742150150">현재 시크릿 세션에만</translation>
@@ -1575,6 +1578,7 @@
 <translation id="2770465223704140727">목록에서 삭제</translation>
 <translation id="2770690685823456775">비밀번호를 다른 폴더로 내보냅니다.</translation>
 <translation id="2770929488047004208">모니터 해상도</translation>
+<translation id="2770954829020464827">화면을 공유하는 동안에는 세부정보가 표시되지 않습니다.</translation>
 <translation id="2771268254788431918">모바일 데이터 활성화됨</translation>
 <translation id="2771816809568414714">치즈</translation>
 <translation id="2772936498786524345">닌자</translation>
@@ -1943,6 +1947,7 @@
 <translation id="3201422919974259695">사용 가능한 USB 기기가 여기에 표시됩니다.</translation>
 <translation id="3202131003361292969">경로</translation>
 <translation id="3202173864863109533">이 탭의 오디오가 음소거됩니다.</translation>
+<translation id="3202218848974251205">개인정보 보호 샌드박스</translation>
 <translation id="3208321278970793882">앱</translation>
 <translation id="3208584281581115441">지금 확인</translation>
 <translation id="3208703785962634733">미확인</translation>
@@ -2142,7 +2147,6 @@
 <translation id="3441653493275994384">화면</translation>
 <translation id="3441663102605358937">계정을 인증하려면 <ph name="ACCOUNT" />에 다시 로그인하세요.</translation>
 <translation id="3445047461171030979">Google 어시스턴트 빠른 답변</translation>
-<translation id="3445770710327978113">신속하게 여기를 방문하려면 앱을 설치하세요.</translation>
 <translation id="3445925074670675829">USB-C 기기</translation>
 <translation id="3446274660183028131">Windows를 설치하려면 Parallels Desktop을 실행하세요.</translation>
 <translation id="344630545793878684">다수의 웹사이트에서 데이터 읽기</translation>
@@ -2163,6 +2167,7 @@
 <translation id="3459697287128633276">내 계정으로 Google Play 스토어에 액세스하려면 ID 공급업체를 통해 인증해 주세요.</translation>
 <translation id="3462311546193741693">대부분의 사이트에서 로그아웃됩니다. 동기화된 데이터를 삭제할 수 있도록 Google 계정에서는 로그아웃되지 않습니다.</translation>
 <translation id="3462413494201477527">계정 설정을 취소하시겠습니까?</translation>
+<translation id="3464145797867108663">직장 프로필 추가</translation>
 <translation id="346431825526753"><ph name="CUSTODIAN_EMAIL" />님이 관리하는 어린이용 계정입니다.</translation>
 <translation id="3468298837301810372">라벨</translation>
 <translation id="3468999815377931311">Android 휴대전화</translation>
@@ -2284,6 +2289,7 @@
 <translation id="360180734785106144">새로운 기능이 출시되면 즉시 제공합니다.</translation>
 <translation id="3602290021589620013">미리보기</translation>
 <translation id="3603622770190368340">네트워크 인증서 받기</translation>
+<translation id="3604193429970465812">보조 계정</translation>
 <translation id="3604713164406837697">배경화면 변경</translation>
 <translation id="3605780360466892872">와이셔츠</translation>
 <translation id="3608576286259426129">사용자 이미지 미리보기</translation>
@@ -2608,6 +2614,7 @@
 
   <ph name="CONTROL_PANEL_APPLET_NAME" />을(를) 시작하시겠습니까?</translation>
 <translation id="394183848452296464">바로가기를 만들 수 없음</translation>
+<translation id="3943494825379372497">앱과 페이지를 복원하시겠습니까?</translation>
 <translation id="3943582379552582368">뒤로(&amp;B)</translation>
 <translation id="3943857333388298514">붙여넣기</translation>
 <translation id="3948116654032448504"><ph name="SEARCH_ENGINE" />에서 이미지 검색(&amp;S)</translation>
@@ -2623,7 +2630,6 @@
 <translation id="3955163004258753966">업그레이드 시작 중 오류 발생</translation>
 <translation id="3955193568934677022">사이트에서 보호된 콘텐츠를 재생하도록 허용(권장)</translation>
 <translation id="3955896417885489542">설정 후 Google Play 옵션 검토</translation>
-<translation id="3956702100721821638">Google Play에 접속할 수 없음</translation>
 <translation id="3957079323242030166">백업 데이터는 드라이브 스토리지 저장용량에 포함되지 않습니다.</translation>
 <translation id="3957844511978444971">선택한 Google 서비스 설정을 승인하려면 '동의'를 탭하세요.</translation>
 <translation id="3958088479270651626">북마크 및 설정 가져오기</translation>
@@ -2693,6 +2699,7 @@
 <translation id="4046013316139505482">이 사이트의 정보를 확인하고 변경할 필요가 없는 확장 프로그램입니다.</translation>
 <translation id="4046123991198612571">다음 트랙</translation>
 <translation id="4047726037116394521">홈으로 이동</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{연락처 #개를 사용할 수 없습니다. 연락처와 Nearby Share를 사용하려면 상대방의 Google 계정과 연결된 이메일 주소를 연락처에 추가하세요.}other{연락처 #개를 사용할 수 없습니다. 연락처와 Nearby Share를 사용하려면 상대방의 Google 계정과 연결된 이메일 주소를 연락처에 추가하세요.}}</translation>
 <translation id="4050225813016893843">인증 방법</translation>
 <translation id="4052120076834320548">작게</translation>
 <translation id="4056908315660577142">부모님이 설정한 <ph name="APP_NAME" /> Chrome 앱 사용 제한 시간에 도달했습니다. 내일 <ph name="TIME_LIMIT" /> 동안 다시 사용할 수 있습니다.</translation>
@@ -3337,6 +3344,7 @@
 <translation id="4863769717153320198"><ph name="WIDTH" />x<ph name="HEIGHT" />(권장)처럼 보입니다.</translation>
 <translation id="4864369630010738180">로그인 중...</translation>
 <translation id="4864805589453749318">학교 계정을 추가할 수 있도록 권한을 부여할 부모님을 선택하세요.</translation>
+<translation id="4866265760644917470">프로필이 추가되었습니다.</translation>
 <translation id="486635084936119914">다운로드 후에 특정 파일 형식을 자동으로 열기</translation>
 <translation id="48704129375571883">추가 기능 추가</translation>
 <translation id="4870758487381879312">구성 정보를 가져오려면 관리자가 제공한 비밀번호를 입력하세요.</translation>
@@ -3620,6 +3628,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{유출된 비밀번호를 변경했습니다. 유출된 비밀번호가 #개 더 있습니다. 지금 바로 이 비밀번호를 확인해 보시기 바랍니다.}other{유출된 비밀번호를 변경했습니다. 유출된 비밀번호가 #개 더 있습니다. 지금 바로 이 비밀번호를 확인해 보시기 바랍니다.}}</translation>
 <translation id="5207949376430453814">텍스트 캐럿 강조표시</translation>
 <translation id="5209320130288484488">기기를 찾을 수 없음</translation>
+<translation id="5209572028385096813">Family Link에서 관리되는 사용자입니다.</translation>
 <translation id="5210365745912300556">탭 닫기</translation>
 <translation id="5213481667492808996">'<ph name="NAME" />' 데이터 서비스를 사용할 수 있습니다.</translation>
 <translation id="5213891612754844763">프록시 설정 표시</translation>
@@ -3705,6 +3714,7 @@
 <translation id="5302048478445481009">언어</translation>
 <translation id="5302932258331363306">텍스트 대치</translation>
 <translation id="5304276686222516262">연락처 목록을 다운로드할 수 없습니다. 네트워크 연결을 확인하거나 &lt;a href="#" id="tryAgainLink"&gt;다시 시도하세요&lt;/a&gt;.</translation>
+<translation id="5305145881844743843"><ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" />에서 관리하는 계정</translation>
 <translation id="5305688511332277257">설치된 인증서 없음</translation>
 <translation id="5307030433605830021">지원되지 않는 소스</translation>
 <translation id="5308380583665731573">연결</translation>
@@ -4086,6 +4096,7 @@
 <translation id="5740820643029013514">눈에 띄지 않는 메시지 사용(권장)</translation>
 <translation id="574104302965107104">화면 미러링</translation>
 <translation id="574209121243317957">높낮이</translation>
+<translation id="5742505912938664543">여기에 보조 계정을 추가할 경우 이 계정으로 웹을 둘러보고 앱을 다운로드하거나 Gmail을 확인하고 기타 Google 서비스를 사용할 수 있습니다.</translation>
 <translation id="5746169159649715125">PDF로 저장</translation>
 <translation id="5747552184818312860">만료</translation>
 <translation id="5747785204778348146">개발자 - 불안정</translation>
@@ -4426,6 +4437,7 @@
 <translation id="6129953537138746214">Space</translation>
 <translation id="6130692320435119637">Wi-Fi 추가</translation>
 <translation id="6136114942382973861">다운로드바 닫기</translation>
+<translation id="6136287496450963112">보안 키가 PIN으로 보호되어 있지 않습니다. 지문을 관리하려면 먼저 PIN을 만드세요.</translation>
 <translation id="6137767437444130246">사용자 인증서</translation>
 <translation id="6138680304137685902">SHA-384를 포함한 X9.62 ECDSA 서명</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, 네트워크 없음</translation>
@@ -4606,6 +4618,7 @@
 <translation id="6331566915566907158">Chrome OS의 기능 및 성능 개선에 참여</translation>
 <translation id="6331818708794917058">사이트에서 MIDI 기기에 연결하도록 요청할 수 있음</translation>
 <translation id="6333064448949140209">디버깅을 위해 파일이 Google로 전송됩니다.</translation>
+<translation id="6334444530352320327">앱과 OS 설정은 이 계정으로 로그인한 Chromebook과 동기화됩니다.<ph name="LINK_BEGIN" />동기화 설정<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">모든 사이트에서 광고를 표시할 수 있음</translation>
 <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" />의 새 프로필을 만드세요.</translation>
 <translation id="6340017061976355871">서버에 연결할 수 없습니다. 네트워크 연결을 확인하고 다시 시도해 주세요. 문제가 지속되면 Chromebook을 다시 시작하세요.</translation>
@@ -4907,6 +4920,7 @@
 <translation id="6709133671862442373">뉴스</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" />을(를) 사용하여 연결</translation>
 <translation id="6710213216561001401">이전</translation>
+<translation id="6713233729292711163">직장 프로필 추가</translation>
 <translation id="6715803357256707211">Linux 애플리케이션을 설치하는 중에 오류가 발생했습니다. 알림을 클릭하면 자세한 정보를 확인할 수 있습니다.</translation>
 <translation id="671619610707606484">사이트에서 저장한 <ph name="TOTAL_USAGE" />의 데이터가 삭제됩니다.</translation>
 <translation id="671928215901716392">화면 잠금</translation>
@@ -5275,6 +5289,7 @@
 <translation id="7121362699166175603">검색주소창에 저장된 방문 기록과 자동 완성 내역을 지웁니다. Google 계정의 내 활동(<ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />)에는 인터넷 사용 기록이 다른 형식으로 남아 있을 수도 있습니다.</translation>
 <translation id="7121438501124788993">개발자 모드</translation>
 <translation id="7121728544325372695">스마트 대시</translation>
+<translation id="7122353087820324370">앱과 OS 설정은 보조 계정에 동기화되지 않습니다.</translation>
 <translation id="7123030151043029868">여러 파일 자동 다운로드가 허용됨</translation>
 <translation id="7123360114020465152">프린터가 더 이상 지원되지 않습니다.</translation>
 <translation id="7125148293026877011">Crostini 삭제</translation>
@@ -5590,6 +5605,7 @@
 <translation id="750509436279396091">다운로드 폴더 열기</translation>
 <translation id="7506093026325926984">이 비밀번호가 기기에 저장됩니다</translation>
 <translation id="7506130076368211615">신규 네트워크 설정</translation>
+<translation id="7506242536428928412">새 보안 키를 사용하려면 새 PIN을 설정하세요.</translation>
 <translation id="7506541170099744506"><ph name="DEVICE_TYPE" />이(가) 기업 관리에 등록되었습니다.</translation>
 <translation id="7507207699631365376">제공업체의 <ph name="BEGIN_LINK" />개인정보처리방침<ph name="END_LINK" /> 보기</translation>
 <translation id="7507930499305566459">상태 응답자 인증서</translation>
@@ -5753,6 +5769,7 @@
 <translation id="7691077781194517083">보안 키를 재설정할 수 없습니다. <ph name="ERROR_CODE" /> 오류입니다.</translation>
 <translation id="7691698019618282776">Crostini 업그레이드</translation>
 <translation id="7696063401938172191">'<ph name="PHONE_NAME" />'에서 다음과 같이 설정하세요.</translation>
+<translation id="7697166915480294040">화면을 공유하는 동안에는 세부정보가 표시되지 않습니다.</translation>
 <translation id="7697598343108519171">카메라를 사용하여 QR 코드 스캔</translation>
 <translation id="7699968112832915395">계정을 추가할 수 없음</translation>
 <translation id="7701040980221191251">없음</translation>
@@ -6210,6 +6227,8 @@
 <translation id="8184472985242519288">균일</translation>
 <translation id="8186609076106987817">서버에서 파일을 찾을 수 없습니다.</translation>
 <translation id="8188389033983459049">계속하려면 기기 설정을 확인하고 사용 설정하세요.</translation>
+<translation id="8189306097519446565">학교 계정</translation>
+<translation id="8189750580333936930">개인정보 보호 샌드박스</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" />에 연결 중</translation>
 <translation id="8191230140820435481">앱, 확장 프로그램 및 테마 관리</translation>
 <translation id="8195027750202970175">디스크에서 차지하는 용량</translation>
@@ -6901,6 +6920,7 @@
 <translation id="8986362086234534611">저장 안함</translation>
 <translation id="8986494364107987395">사용 통계 및 비정상 종료 보고서를 Google에 자동으로 전송합니다.</translation>
 <translation id="8987927404178983737">월</translation>
+<translation id="8989823300731803443">이전에 중단한 부분부터 계속하세요.</translation>
 <translation id="8990209962746788689">QR 코드를 만들 수 없음</translation>
 <translation id="8991520179165052608">사이트에서 마이크를 사용할 수 있습니다.</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{항목 1개}other{항목 #개}}</translation>
@@ -7130,7 +7150,6 @@
 <translation id="952992212772159698">활성화되지 않음</translation>
 <translation id="956500788634395331">잠재적으로 위험한 확장 프로그램으로부터 사용자를 보호합니다.</translation>
 <translation id="957960681186851048">이 사이트에서 여러 파일을 자동으로 다운로드하려고 함</translation>
-<translation id="9580706199804957">Google 서비스에 연결할 수 없음</translation>
 <translation id="958329785990007682">자바스크립트 차단</translation>
 <translation id="960719561871045870">운영자 코드</translation>
 <translation id="960987915827980018">약 1시간 남음</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index 5a2cd37..4e65e71eb 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">Экран</translation>
 <translation id="3441663102605358937">Бул аккаунтту ырастоо үчүн <ph name="ACCOUNT" /> аккаунтуңузга кайра кириңиз</translation>
 <translation id="3445047461171030979">Google Жардамчынын ыкчам жооптору</translation>
-<translation id="3445770710327978113">Бул баракты тезирээк ачуу үчүн колдонмону орнотуңуз</translation>
 <translation id="3445925074670675829">USB-C түзмөгү</translation>
 <translation id="3446274660183028131">Windows'ту орнотуу үчүн Parallels Desktop кызматын иштетиңиз.</translation>
 <translation id="344630545793878684">Дайын-даректериңизди бир нече вебсайттан окуңуз</translation>
@@ -2631,7 +2630,6 @@
 <translation id="3955163004258753966">Жаңырып баштаганда ката кетти</translation>
 <translation id="3955193568934677022">Сайттарга корголгон мазмунду ойнотууга уруксат берүү (сунушталат)</translation>
 <translation id="3955896417885489542">Google Play параметрлерин карап чыгуу</translation>
-<translation id="3956702100721821638">Google Play'ге туташа алган жок</translation>
 <translation id="3957079323242030166">Камдык көчүрмөнүн маалыматы Drive сактагычынан орун ээлебейт.</translation>
 <translation id="3957844511978444971">Google кызматтарында ушул жөндөөлөрдү тандаганыңызды ырастоо үчүн "Кабыл алууну" басып коюңуз.</translation>
 <translation id="3958088479270651626">Кыстармалар менен жөндөөлөрдү импорттоо</translation>
@@ -7152,7 +7150,6 @@
 <translation id="952992212772159698">Жандырылган эмес</translation>
 <translation id="956500788634395331">Мүмкүн болгон кооптуу кеңейтүүлөрдөн корголуп турасыз</translation>
 <translation id="957960681186851048">Бул сайт бир нече файлды автоматтык түрдө жүктөп алууга аракет кылды</translation>
-<translation id="9580706199804957">Google кызматтарына туташпай калды</translation>
 <translation id="958329785990007682">JavaScript бөгөттөлсүн</translation>
 <translation id="960719561871045870">Оператордун коду</translation>
 <translation id="960987915827980018">1 сааттай убакыт калды</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb
index d89ceba..6d76ed8 100644
--- a/chrome/app/resources/generated_resources_lo.xtb
+++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -2145,7 +2145,6 @@
 <translation id="3441653493275994384">ຫນ້າ​ຈໍ</translation>
 <translation id="3441663102605358937">ເຂົ້າສູ່ລະບົບ <ph name="ACCOUNT" /> ອີກຄັ້ງເພື່ອຢັ້ງຢືນບັນຊີນີ້</translation>
 <translation id="3445047461171030979">ຄຳຕອບດ່ວນຂອງຜູ້ຊ່ວຍ Google</translation>
-<translation id="3445770710327978113">ເພື່ອກັບຄືນບ່ອນນີ້ໄດ້ຢ່າງວ່ອງໄວ, ກະລຸນາຕິດຕັ້ງແອັບນີ້</translation>
 <translation id="3445925074670675829">ອຸ​ປະ​ກອນ USB-C</translation>
 <translation id="3446274660183028131">ກະລຸນາເປີດໃຊ້ Parallels Desktop ເພື່ອຕິດຕັ້ງ Windows.</translation>
 <translation id="344630545793878684">ອ່ານ​ຂໍ້​ມູນ​ຂອງ​ທ່ານ​ຢູ່​ເທິງຫຼາຍ​ເວັບ​ໄຊ​ທ໌</translation>
@@ -2629,7 +2628,6 @@
 <translation id="3955163004258753966">ເກີດຄວາມຜິດພາດໃນການເລີ່ມການອັບເກຣດ</translation>
 <translation id="3955193568934677022">ອະນຸຍາດໃຫ້ເວັບໄຊຕ່າງໆຫຼິ້ນເນື້ອຫາທີ່ໄດ້ຮັບການປົກປ້ອງ (ແນະນຳ)</translation>
 <translation id="3955896417885489542">ກວດເບິ່ງຕົວເລືອກ Google Play ຫຼັງຈາກການຕັ້ງຄ່າ</translation>
-<translation id="3956702100721821638">ບໍ່ສາມາດຕິດຕໍ່ຫາ Google Play ໄດ້</translation>
 <translation id="3957079323242030166">ຂໍ້ມູນການສຳຮອງຈະບໍ່ນັບໃສ່ໂຄຕ້າພື້ນທີ່ເກັບຂໍ້ມູນໃນ Drive ຂອງທ່ານ.</translation>
 <translation id="3957844511978444971">ແຕະທີ່ “ຍອມຮັບ” ເພື່ອຢືນຢັນການເລືອກການຕັ້ງຄ່າບໍລິການ Google ເຫຼົ່ານີ້.</translation>
 <translation id="3958088479270651626">ນໍາເອົາບຸກມາກສ໌ ແລະການຕັ້ງຄ່າເຂົ້າມາ</translation>
@@ -7149,7 +7147,6 @@
 <translation id="952992212772159698">ບໍ່ໄດ້ເປີດໃຊ້ງານ</translation>
 <translation id="956500788634395331">ທ່ານໄດ້ຮັບການປົກປ້ອງຈາກສ່ວນຂະຫຍາຍທີ່ອາດຈະເປັນອັນຕະລາຍ</translation>
 <translation id="957960681186851048">ເວັບໄຊນີ້ໄດ້ພະຍາຍາມດາວໂຫຼດຫຼາຍໄຟລ໌ໂດຍອັດຕະໂນມັດ</translation>
-<translation id="9580706199804957">ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບການບໍລິການຂອງ Google ໄດ້</translation>
 <translation id="958329785990007682">ບລັອກ JavaScript</translation>
 <translation id="960719561871045870">ລະຫັດຜູ້ໃຫ້ບໍລິການ</translation>
 <translation id="960987915827980018">ຍັງເຫຼືອປະ​ມານ 1 ຊົ່ວ​ໂມງ</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index 15531c4..2af7138 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">Nėra tinklų</translation>
 <translation id="1056898198331236512">Įspėjimas</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Įveskite naują PIN kodą. PIN kodą turi sudaryti bent vienas simbolis ir jame turi būti raidžių, skaitmenų bei kitų simbolių.}one{Įveskite naują PIN kodą. PIN kodą turi sudaryti bent # simbolis ir jame turi būti raidžių, skaitmenų bei kitų simbolių.}few{Įveskite naują PIN kodą. PIN kodą turi sudaryti bent # simboliai ir jame turi būti raidžių, skaitmenų bei kitų simbolių.}many{Įveskite naują PIN kodą. PIN kodą turi sudaryti bent # simbolio ir jame turi būti raidžių, skaitmenų bei kitų simbolių.}other{Įveskite naują PIN kodą. PIN kodą turi sudaryti bent # simbolių ir jame turi būti raidžių, skaitmenų bei kitų simbolių.}}</translation>
 <translation id="1059944192885972544">Rasta skirtukų: <ph name="NUM" /> pagal užklausą „<ph name="SEARCH_TEXT" />“</translation>
 <translation id="1060292118287751956">Nustatomas ekrano atnaujinimo dažnis</translation>
 <translation id="1061904396131502319">Beveik atėjo laikas padaryti pertrauką</translation>
@@ -639,9 +640,11 @@
 <translation id="1688935057616748272">Įveskite raidę</translation>
 <translation id="168991973552362966">Pridėti netoliese esantį spausdintuvą</translation>
 <translation id="1689945336726856614">Kopijuoti &amp;URL</translation>
+<translation id="1690248886740053041">Nepavyko prisijungti prie mobiliojo ryšio tinklo. Jei reikia techninio palaikymo, susisiekite su operatoriumi.</translation>
 <translation id="1692115862433274081">Naudoti kitą paskyrą</translation>
 <translation id="1692118695553449118">Sinchronizavimas įjungtas</translation>
 <translation id="1692210323591458290">Tamsiai violetinė</translation>
+<translation id="169279809881363536">Nerasta jokių profilių. Jei norite nustatyti naują tinklą, nuskaitykite QR kodą naudodami įrenginio fotoaparatą arba įveskite operatoriaus pateiktą aktyvinimo kodą.</translation>
 <translation id="1697150536837697295">Menas</translation>
 <translation id="1697686431566694143">Redaguoti failą</translation>
 <translation id="1698122934742150150">Tik dabartinė inkognito režimo sesija</translation>
@@ -1578,6 +1581,7 @@
 <translation id="2770465223704140727">Pašalinti iš sąrašo</translation>
 <translation id="2770690685823456775">Eksportuokite slaptažodžius į kitą aplanką</translation>
 <translation id="2770929488047004208">Monitoriaus skyra</translation>
+<translation id="2770954829020464827">Išsami informacija slepiama, kol bendrinate ekraną</translation>
 <translation id="2771268254788431918">Mobiliojo ryšio duomenys suaktyvinti</translation>
 <translation id="2771816809568414714">Sūris</translation>
 <translation id="2772936498786524345">Pasalūnas</translation>
@@ -1946,6 +1950,7 @@
 <translation id="3201422919974259695">Čia bus rodomi pasiekiami USB įrenginiai.</translation>
 <translation id="3202131003361292969">Kelias</translation>
 <translation id="3202173864863109533">Šio skirtuko garsas nutildytas.</translation>
+<translation id="3202218848974251205">Privatumo „sandbox“ (smėlio dėžė)</translation>
 <translation id="3208321278970793882">Programa</translation>
 <translation id="3208584281581115441">Tikrinti dabar</translation>
 <translation id="3208703785962634733">Nepatvirtinta</translation>
@@ -2145,7 +2150,6 @@
 <translation id="3441653493275994384">Ekranas</translation>
 <translation id="3441663102605358937">Dar kartą prisijunkite prie <ph name="ACCOUNT" />, kad patvirtintumėte šią paskyrą</translation>
 <translation id="3445047461171030979">Greiti „Google“ padėjėjo atsakymai</translation>
-<translation id="3445770710327978113">Jei norite sparčiai čia grįžti, įdiekite šią programą</translation>
 <translation id="3445925074670675829">USB-C įrenginys</translation>
 <translation id="3446274660183028131">Norėdami įdiegti „Windows“ paleiskite „Parallels Desktop“.</translation>
 <translation id="344630545793878684">Skaityti duomenys daugybėje svetainių</translation>
@@ -2166,6 +2170,7 @@
 <translation id="3459697287128633276">Kad leistumėte paskyrai pasiekti „Google Play“ parduotuvę, autentifikuokite prieigą naudodami tapatybės teikėją.</translation>
 <translation id="3462311546193741693">Būsite atjungti nuo daugelio svetainių. Liksite prisijungę prie „Google“ paskyros, todėl sinchronizuoti duomenys gali būti išvalyti.</translation>
 <translation id="3462413494201477527">Atšaukti paskyros sąranką?</translation>
+<translation id="3464145797867108663">Pridėti darbo profilį</translation>
 <translation id="346431825526753">Tai yra vaikų paskyra, kurią tvarko <ph name="CUSTODIAN_EMAIL" />.</translation>
 <translation id="3468298837301810372">Etiketė</translation>
 <translation id="3468999815377931311">„Android“ telefonas</translation>
@@ -2287,6 +2292,7 @@
 <translation id="360180734785106144">Pasiūlyti naujų funkcijų, kai jos bus pasiekiamos</translation>
 <translation id="3602290021589620013">Peržiūra</translation>
 <translation id="3603622770190368340">Gauti tinklo sertifikatą</translation>
+<translation id="3604193429970465812">Antrinės paskyros</translation>
 <translation id="3604713164406837697">Pakeisti ekrano foną</translation>
 <translation id="3605780360466892872">Konservatyvusis</translation>
 <translation id="3608576286259426129">Naudotojo vaizdo peržiūra</translation>
@@ -2611,6 +2617,7 @@
 
 Ar norite paleisti „<ph name="CONTROL_PANEL_APPLET_NAME" />“?</translation>
 <translation id="394183848452296464">Nepavyksta sukurti sparčiojo klavišo</translation>
+<translation id="3943494825379372497">Atkurti programas ir puslapius?</translation>
 <translation id="3943582379552582368">&amp;Grįžti</translation>
 <translation id="3943857333388298514">Įklijuoti</translation>
 <translation id="3948116654032448504">&amp;Ieškoti vaizdo sistemoje „<ph name="SEARCH_ENGINE" />“</translation>
@@ -2626,7 +2633,6 @@
 <translation id="3955163004258753966">Pradedant naujovinimą įvyko klaida</translation>
 <translation id="3955193568934677022">Leisti svetainėms paleisti apsaugotą turinį (rekomenduojama)</translation>
 <translation id="3955896417885489542">Nustačius peržiūrėti „Google Play“ parinktis</translation>
-<translation id="3956702100721821638">Nepavyko pasiekti „Google Play“</translation>
 <translation id="3957079323242030166">Atsarginių kopijų duomenys nebus įtraukti skaičiuojant Disko saugyklos kvotą.</translation>
 <translation id="3957844511978444971">Palieskite „Sutinku“, kad patvirtintumėte šių „Google“ paslaugų nustatymų pasirinkimą.</translation>
 <translation id="3958088479270651626">Importuoti žymes ir nustatymus</translation>
@@ -2696,6 +2702,7 @@
 <translation id="4046013316139505482">Šiems plėtiniams nereikia peržiūrėti ir keisti informacijos šioje svetainėje.</translation>
 <translation id="4046123991198612571">Kitas takelis</translation>
 <translation id="4047726037116394521">Eiti į pagrindinį ekraną</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{# kontaktas nepasiekiamas. Jei norite kartu naudoti „Bendrinimo netoliese“ funkciją, prie savo kontaktų pridėkite el. pašto adresą, susietą su jo (jos) „Google“ paskyra.}one{# kontaktas nepasiekiamas. Jei norite kartu naudoti „Bendrinimo netoliese“ funkciją, prie savo kontaktų pridėkite el. pašto adresus, susietus su jų „Google“ paskyromis.}few{# kontaktai nepasiekiami. Jei norite kartu naudoti „Bendrinimo netoliese“ funkciją, prie savo kontaktų pridėkite el. pašto adresus, susietus su jų „Google“ paskyromis.}many{# kontakto nepasiekiama. Jei norite kartu naudoti „Bendrinimo netoliese“ funkciją, prie savo kontaktų pridėkite el. pašto adresus, susietus su jų „Google“ paskyromis.}other{# kontaktų nepasiekiama. Jei norite kartu naudoti „Bendrinimo netoliese“ funkciją, prie savo kontaktų pridėkite el. pašto adresus, susietus su jų „Google“ paskyromis.}}</translation>
 <translation id="4050225813016893843">Autentifikavimo metodas</translation>
 <translation id="4052120076834320548">Mažytis</translation>
 <translation id="4056908315660577142">Pasiekėte laiko apribojimą, kurį vienas iš tėvų nustatė „Chrome“ programai „<ph name="APP_NAME" />“. Rytoj galėsite ją naudoti <ph name="TIME_LIMIT" />.</translation>
@@ -3342,6 +3349,7 @@
 <translation id="4863769717153320198">Atrodo kaip <ph name="WIDTH" /> × <ph name="HEIGHT" /> (numatytasis)</translation>
 <translation id="4864369630010738180">Prisijungiama...</translation>
 <translation id="4864805589453749318">Pasirinkite vieną iš tėvų, kuris suteikia leidimą pridėti mokyklos paskyrą.</translation>
+<translation id="4866265760644917470">Profilis sėkmingai pridėtas.</translation>
 <translation id="486635084936119914">Automatiškai atidaryti tam tikrų tipų failus, kai jie atsisiunčiami</translation>
 <translation id="48704129375571883">Pridėti papildomų funkcijų</translation>
 <translation id="4870758487381879312">Kad gautumėte konfigūravimo informacijos, įveskite administratoriaus suteiktą slaptažodį</translation>
@@ -3625,6 +3633,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{Pažeistas slaptažodis sėkmingai pakeistas. Turite dar # pažeistą slaptažodį. „Chrome“ rekomenduoja patikrinti šį slaptažodį dabar.}one{Pažeistas slaptažodis sėkmingai pakeistas. Turite dar # pažeistą slaptažodį. „Chrome“ rekomenduoja patikrinti šiuos slaptažodžius dabar.}few{Pažeistas slaptažodis sėkmingai pakeistas. Turite dar # pažeistus slaptažodžius. „Chrome“ rekomenduoja patikrinti šiuos slaptažodžius dabar.}many{Pažeistas slaptažodis sėkmingai pakeistas. Turite dar # pažeisto slaptažodžio. „Chrome“ rekomenduoja patikrinti šiuos slaptažodžius dabar.}other{Pažeistas slaptažodis sėkmingai pakeistas. Turite dar # pažeistų slaptažodžių. „Chrome“ rekomenduoja patikrinti šiuos slaptažodžius dabar.}}</translation>
 <translation id="5207949376430453814">Paryškinti teksto žymeklį</translation>
 <translation id="5209320130288484488">Įrenginių nerasta</translation>
+<translation id="5209572028385096813">Šio naudotojo paskyra tvarkoma naudojant „Family Link“</translation>
 <translation id="5210365745912300556">Uždaryti skirtuką</translation>
 <translation id="5213481667492808996">„<ph name="NAME" />“ duomenų paslauga paruošta naudoti</translation>
 <translation id="5213891612754844763">Rodyti tarpinio serverio nustatymus</translation>
@@ -3710,6 +3719,7 @@
 <translation id="5302048478445481009">Kalba</translation>
 <translation id="5302932258331363306">Rodyti pakaitalus</translation>
 <translation id="5304276686222516262">Nepavyko atsisiųsti kontaktų sąrašo. Patikrinkite tinklo ryšį arba &lt;a href="#" id="tryAgainLink"&gt;bandykite dar kartą&lt;/a&gt;.</translation>
+<translation id="5305145881844743843">Šią paskyrą tvarko <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation>
 <translation id="5305688511332277257">Nėra įdiegtų</translation>
 <translation id="5307030433605830021">Šaltinis nepalaikomas</translation>
 <translation id="5308380583665731573">Prisijungti</translation>
@@ -4092,6 +4102,7 @@
 <translation id="5740820643029013514">Naudoti tylesnius pranešimus (rekomenduojama)</translation>
 <translation id="574104302965107104">Ekrano vaizdo bendrinimas</translation>
 <translation id="574209121243317957">Tonas</translation>
+<translation id="5742505912938664543">Kai čia pridėsite antrinę paskyrą, galėsite naršyti žiniatinklį, atsisiųsti programas, tikrinti „Gmail“ ir naudoti kitas „Google“ paslaugas naudodami šią paskyrą.</translation>
 <translation id="5746169159649715125">Išsaugoti kaip PDF</translation>
 <translation id="5747552184818312860">Galioja iki</translation>
 <translation id="5747785204778348146">Kūrėjas – nestabilus</translation>
@@ -4432,6 +4443,7 @@
 <translation id="6129953537138746214">Tarpas</translation>
 <translation id="6130692320435119637">Pridėti „Wi-Fi“</translation>
 <translation id="6136114942382973861">Uždaryti atsisiuntimų juostą</translation>
+<translation id="6136287496450963112">Saugos raktas neapsaugotas PIN kodu. Kad galėtumėte tvarkyti kontrolinius kodus, pirmiausia sukurkite PIN kodą.</translation>
 <translation id="6137767437444130246">Naudotojo sertifikatas</translation>
 <translation id="6138680304137685902">X9.62 ECDSA parašas naudojant SHA-384</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, tinklo nėra</translation>
@@ -4612,6 +4624,7 @@
 <translation id="6331566915566907158">Padėti tobulinti „Chrome“ OS funkcijas ir našumą</translation>
 <translation id="6331818708794917058">Svetainėse gali būti prašoma prisijungti prie MIDI įrenginių</translation>
 <translation id="6333064448949140209">Failas bus išsiųstas į sistemą „Google“ atlikti derinimą</translation>
+<translation id="6334444530352320327">Programos ir OS nustatymai bus sinchronizuojami su „Chromebook“ įrenginiais, kuriuose būsite prisijungę naudodami šią paskyrą. <ph name="LINK_BEGIN" />Sinchronizavimo nustatymai<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">Visose svetainėse galima rodyti jums bet kokius skelbimus</translation>
 <translation id="6339668969738228384">Kurti naują <ph name="USER_EMAIL_ADDRESS" /> profilį</translation>
 <translation id="6340017061976355871">Nepavyko užmegzti ryšio su serveriu. Patikrinkite tinklo ryšį ir bandykite dar kartą. Jei problema išlieka, paleiskite „Chromebook“ iš naujo.</translation>
@@ -4913,6 +4926,7 @@
 <translation id="6709133671862442373">Naujienos</translation>
 <translation id="6709357832553498500">Prisijungti naudojant „<ph name="EXTENSIONNAME" />“</translation>
 <translation id="6710213216561001401">Ankstesnė</translation>
+<translation id="6713233729292711163">Pridėti darbo profilį</translation>
 <translation id="6715803357256707211">Įdiegiant „Linux“ programą įvyko klaida. Spustelėję pranešimą rasite išsamią informaciją.</translation>
 <translation id="671619610707606484">Bus išvalyta <ph name="TOTAL_USAGE" /> svetainių saugomų duomenų</translation>
 <translation id="671928215901716392">Užrakinti ekraną</translation>
@@ -5281,6 +5295,7 @@
 <translation id="7121362699166175603">Išvaloma istorija ir automatiniai užbaigimai adreso juostoje. „Google“ paskyroje gali būti kito tipo naršymo istorijos, kuri pasiekiama adresu <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="7121438501124788993">Kūrėjo režimas</translation>
 <translation id="7121728544325372695">Išmanieji brūkšniai</translation>
+<translation id="7122353087820324370">Programos ir „OS“ nustatymai nėra sinchronizuojami su antrinėmis paskyromis.</translation>
 <translation id="7123030151043029868">Leidžiama automatiškai atsisiųsti kelis failus</translation>
 <translation id="7123360114020465152">Nebepalaikoma</translation>
 <translation id="7125148293026877011">Ištrinti „Crostini“</translation>
@@ -5596,6 +5611,7 @@
 <translation id="750509436279396091">Atidaryti atsisiuntimų aplanką</translation>
 <translation id="7506093026325926984">Šis slaptažodis bus išsaugotas šiame įrenginyje</translation>
 <translation id="7506130076368211615">Naujo tinklo nustatymas</translation>
+<translation id="7506242536428928412">Jei norite naudoti naują saugos raktą, nustatykite naują PIN kodą</translation>
 <translation id="7506541170099744506">„<ph name="DEVICE_TYPE" />“ sėkmingai užregistruotas kaip tvarkomas įmonėje.</translation>
 <translation id="7507207699631365376">Žr. šio teikėjo <ph name="BEGIN_LINK" />privatumo politiką<ph name="END_LINK" /></translation>
 <translation id="7507930499305566459">Būsenos atsakiklio sertifikatas</translation>
@@ -5759,6 +5775,7 @@
 <translation id="7691077781194517083">Šio saugos rakto nustatyti iš naujo nepavyko. Klaida <ph name="ERROR_CODE" />.</translation>
 <translation id="7691698019618282776">„Crostini“ naujovinimas</translation>
 <translation id="7696063401938172191">Jūsų telefone „<ph name="PHONE_NAME" />“:</translation>
+<translation id="7697166915480294040">Išsami informacija slepiama, kol bendrinate ekraną</translation>
 <translation id="7697598343108519171">QR kodą nuskaityti naudojant fotoaparatą</translation>
 <translation id="7699968112832915395">Nepavyksta pridėti paskyros</translation>
 <translation id="7701040980221191251">Nėra</translation>
@@ -6216,6 +6233,8 @@
 <translation id="8184472985242519288">Vienodas</translation>
 <translation id="8186609076106987817">Serveriui nepavyko rasti failo.</translation>
 <translation id="8188389033983459049">Patikrinkite įrenginio nustatymus ir įjunkite jį, kad galėtumėte tęsti</translation>
+<translation id="8189306097519446565">Mokyklos paskyros</translation>
+<translation id="8189750580333936930">Privatumo „sandbox“ (smėlio dėžė)</translation>
 <translation id="8190193592390505034">Jungiamasi prie „<ph name="PROVIDER_NAME" />“</translation>
 <translation id="8191230140820435481">Valdyti programas, plėtinius ir temas</translation>
 <translation id="8195027750202970175">Diske užimama vieta</translation>
@@ -6910,6 +6929,7 @@
 <translation id="8986362086234534611">Pamiršti</translation>
 <translation id="8986494364107987395">Automatiškai siųsti naudojimo statistiką ir strigčių ataskaitas „Google“</translation>
 <translation id="8987927404178983737">Mėnuo</translation>
+<translation id="8989823300731803443">Tęskite ten, kur baigėte.</translation>
 <translation id="8990209962746788689">Nepavyko sukurti QR kodo</translation>
 <translation id="8991520179165052608">Svetainė gali naudoti jūsų mikrofoną</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{1 elementas}one{# elementas}few{# elementai}many{# elemento}other{# elementų}}</translation>
@@ -7139,7 +7159,6 @@
 <translation id="952992212772159698">Nesuaktyvinta</translation>
 <translation id="956500788634395331">Esate apsaugoti nuo potencialiai žalingų plėtinių</translation>
 <translation id="957960681186851048">Ši svetainė bandė automatiškai atsisiųsti kelis failus</translation>
-<translation id="9580706199804957">Nepavyko prisijungti prie „Google“ paslaugų</translation>
 <translation id="958329785990007682">Blokuoti „JavaScript“</translation>
 <translation id="960719561871045870">Operacijos ženklo kodas</translation>
 <translation id="960987915827980018">Liko apie 1 val.</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index dffcc13..0ee92cb8 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -2149,7 +2149,6 @@
 <translation id="3441653493275994384">Ekrāns</translation>
 <translation id="3441663102605358937">Vēlreiz pierakstieties kontā <ph name="ACCOUNT" />, lai verificētu šo kontu</translation>
 <translation id="3445047461171030979">Google asistenta ātrās atbildes</translation>
-<translation id="3445770710327978113">Lai varētu ātri atgriezties šeit, instalējiet šo lietotni</translation>
 <translation id="3445925074670675829">USB-C ierīce</translation>
 <translation id="3446274660183028131">Lai instalētu Windows, palaidiet Parallels Desktop.</translation>
 <translation id="344630545793878684">Lasīt jūsu datus vairākās vietnēs</translation>
@@ -2633,7 +2632,6 @@
 <translation id="3955163004258753966">Sākot jaunināšanu, radās kļūda</translation>
 <translation id="3955193568934677022">Atļaut vietnēm atskaņot aizsargātu saturu (ieteicams)</translation>
 <translation id="3955896417885489542">Pārskatīt Google Play opcijas pēc iestatīšanas</translation>
-<translation id="3956702100721821638">Nevarēja sasniegt pakalpojumu Google Play</translation>
 <translation id="3957079323242030166">Dublētie dati netiks ieskaitīti jūsu Diska krātuves kvotā.</translation>
 <translation id="3957844511978444971">Lai apstiprinātu šo Google pakalpojumu iestatījumu atlasi, pieskarieties vienumam “Piekrist”.</translation>
 <translation id="3958088479270651626">Grāmatzīmju un iestatījumu importēšana</translation>
@@ -7157,7 +7155,6 @@
 <translation id="952992212772159698">Neaktivizēts</translation>
 <translation id="956500788634395331">Jūs esat aizsargāts pret potenciāli kaitīgiem paplašinājumiem.</translation>
 <translation id="957960681186851048">Šī vietne mēģināja automātiski lejupielādēt vairākus failus</translation>
-<translation id="9580706199804957">Nevarēja izveidot savienojumu ar Google pakalpojumiem.</translation>
 <translation id="958329785990007682">Bloķēt JavaScript</translation>
 <translation id="960719561871045870">Operatora kods</translation>
 <translation id="960987915827980018">Atlikusi apmēram 1 stunda</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb
index 5302e7c4..45fbed2 100644
--- a/chrome/app/resources/generated_resources_mk.xtb
+++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -2148,7 +2148,6 @@
 <translation id="3441653493275994384">Екран</translation>
 <translation id="3441663102605358937">Најавете се на <ph name="ACCOUNT" /> повторно за да ја потврдите сметкава</translation>
 <translation id="3445047461171030979">Брзи одговори од „Помошникот на Google“</translation>
-<translation id="3445770710327978113">За брз пристап дотука, инсталирајте ја апликацијава</translation>
 <translation id="3445925074670675829">USB-Ц уред</translation>
 <translation id="3446274660183028131">Стартувајте Parallels Desktop за да инсталирате Windows.</translation>
 <translation id="344630545793878684">Читајте ги вашите податоци на голем број веб-локации</translation>
@@ -2632,7 +2631,6 @@
 <translation id="3955163004258753966">Грешка при започнувањето со надградба</translation>
 <translation id="3955193568934677022">Дозволете сајтовите да пуштаат заштитени содржини (се препорачува)</translation>
 <translation id="3955896417885489542">Прегледајте ги опциите за Google Play по поставувањето</translation>
-<translation id="3956702100721821638">Не може да се поврзе со Google Play</translation>
 <translation id="3957079323242030166">Податоците од бекапот нема да се вбројуваат во квотата за простор на Drive.</translation>
 <translation id="3957844511978444971">Допрете „Прифати“ за да го потврдите изборот на овие поставки за услугите на Google.</translation>
 <translation id="3958088479270651626">Увези обележувачи и поставки</translation>
@@ -7157,7 +7155,6 @@
 <translation id="952992212772159698">Не е активиран</translation>
 <translation id="956500788634395331">Заштитени сте од потенцијално штетни екстензии</translation>
 <translation id="957960681186851048">Сајтов се обиде автоматски да преземе повеќе датотеки</translation>
-<translation id="9580706199804957">Не може да се поврзе со услугите на Google</translation>
 <translation id="958329785990007682">Блокирај JavaScript</translation>
 <translation id="960719561871045870">Код на оператор</translation>
 <translation id="960987915827980018">Преостанува околу 1 час</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index f8faaf24..2938e6e 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">നെറ്റ്‌വർക്കില്ല</translation>
 <translation id="1056898198331236512">മുന്നറിയിപ്പ്</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{നിങ്ങളുടെ പുതിയ പിൻ നൽകുക. കുറഞ്ഞത് ഒരു പ്രതീകമെങ്കിലും ദൈർഘ്യമുള്ളതായിരിക്കണം പിൻ, ഇതിൽ അക്ഷരങ്ങളും അക്കങ്ങളും മറ്റ് പ്രതീകങ്ങളും ഉൾപ്പെടാം.}other{നിങ്ങളുടെ പുതിയ പിൻ നൽകുക. കുറഞ്ഞത് # പ്രതീകങ്ങളെങ്കിലും ദൈർഘ്യമുള്ളതായിരിക്കണം പിൻ, ഇതിൽ അക്ഷരങ്ങളും അക്കങ്ങളും മറ്റ് പ്രതീകങ്ങളും ഉൾപ്പെടാം.}}</translation>
 <translation id="1059944192885972544">'<ph name="SEARCH_TEXT" />' എന്നതിന് <ph name="NUM" /> ടാബുകൾ കണ്ടെത്തി</translation>
 <translation id="1060292118287751956">സ്‌ക്രീൻ അപ്‌ഡേറ്റ് ചെയ്യുന്ന ആവൃത്തി നിർണ്ണയിക്കുന്നു</translation>
 <translation id="1061904396131502319">ഇടവേളയ്ക്കുള്ള സമയം ആകാറായിരിക്കുന്നു</translation>
@@ -633,9 +634,11 @@
 <translation id="1688935057616748272">ഒരു അക്ഷരം ടൈപ്പ് ചെയ്യുക</translation>
 <translation id="168991973552362966">സമീപത്തുള്ള ഒരു പ്രിന്റർ ചേർക്കുക</translation>
 <translation id="1689945336726856614">&amp;URL പകർത്തുക</translation>
+<translation id="1690248886740053041">മൊബൈൽ നെറ്റ്‌വര്‍ക്കിലേക്ക് കണക്‌റ്റ് ചെയ്യാനാകുന്നില്ല. സാങ്കേതിക പിന്തുണയ്ക്ക് നിങ്ങളുടെ സേവനദാതാവിനെ ബന്ധപ്പെടുക.</translation>
 <translation id="1692115862433274081">മറ്റൊരു അക്കൗണ്ട് ഉപയോഗിക്കുക</translation>
 <translation id="1692118695553449118">സമന്വയം ഓണാണ്</translation>
 <translation id="1692210323591458290">ഇരുണ്ട പർപ്പിൾ</translation>
+<translation id="169279809881363536">പ്രൊഫൈലുകളൊന്നും കണ്ടെത്തിയില്ല. ഒരു പുതിയ നെറ്റ്‌വർക്ക് സജ്ജീകരിക്കുന്നതിന്, ഉപകരണത്തിന്റെ ക്യാമറ ഉപയോഗിച്ച് QR കോഡ് സ്‌കാൻ ചെയ്യുക അല്ലെങ്കിൽ നിങ്ങളുടെ സേവനദാതാവ് നൽകിയ സജീവമാക്കൽ കോഡ് നൽകുക.</translation>
 <translation id="1697150536837697295">കല</translation>
 <translation id="1697686431566694143">ഫയൽ എഡിറ്റ് ചെയ്യുക</translation>
 <translation id="1698122934742150150">നിലവിലെ അദൃശ്യ സെഷന് മാത്രം</translation>
@@ -1572,6 +1575,7 @@
 <translation id="2770465223704140727">പട്ടികയില്‍‌ നിന്നും നീക്കംചെയ്യുക</translation>
 <translation id="2770690685823456775">നിങ്ങളുടെ പാസ്‍വേഡുകൾ മറ്റൊരു ഫോൾഡറിലേക്ക് എക്‌സ്‌പോർട്ട് ചെയ്യുക</translation>
 <translation id="2770929488047004208">മോണിറ്റർ റെസല്യൂഷൻ</translation>
+<translation id="2770954829020464827">നിങ്ങളുടെ സ്ക്രീൻ പങ്കിടുമ്പോൾ വിശദാംശങ്ങൾ മറച്ചിരിക്കുന്നു</translation>
 <translation id="2771268254788431918">മൊബൈൽ ഡാറ്റ സജീവമാക്കി</translation>
 <translation id="2771816809568414714">ചീസ്</translation>
 <translation id="2772936498786524345">സ്‌നീക്കി</translation>
@@ -1940,6 +1944,7 @@
 <translation id="3201422919974259695">ലഭ്യമായ USB ഉപകരണങ്ങൾ ഇവിടെ ദൃശ്യമാവും.</translation>
 <translation id="3202131003361292969">പാത</translation>
 <translation id="3202173864863109533">ഈ ടാബിന്റെ ഓഡിയോ നിശബ്ദമാക്കി.</translation>
+<translation id="3202218848974251205">സ്വകാര്യത സാൻഡ്‌ബോക്‌സ്</translation>
 <translation id="3208321278970793882">ആപ്പ്</translation>
 <translation id="3208584281581115441">ഇപ്പോൾ പരിശോധിക്കുക</translation>
 <translation id="3208703785962634733">സ്ഥിരീകരികരിക്കാത്തത്</translation>
@@ -2139,7 +2144,6 @@
 <translation id="3441653493275994384">സ്ക്രീന്‍‌</translation>
 <translation id="3441663102605358937">ഈ അക്കൗണ്ട് പരിശോധിച്ചുറപ്പിക്കാൻ <ph name="ACCOUNT" /> എന്നതിലേക്ക് വീണ്ടും സൈൻ ഇൻ ചെയ്യുക</translation>
 <translation id="3445047461171030979">Google Assistant ദ്രുത ഉത്തരങ്ങൾ</translation>
-<translation id="3445770710327978113">ഇവിടെ വേഗത്തിൽ മടങ്ങിയെത്താൻ, ഈ ആപ്പ് ഇൻസ്‌റ്റാൾ ചെയ്യുക</translation>
 <translation id="3445925074670675829">USB-C ഉപകരണം</translation>
 <translation id="3446274660183028131">Windows ഇൻസ്‌റ്റാൾ ചെയ്യാൻ Parallels Desktop ലോഞ്ച് ചെയ്യുക.</translation>
 <translation id="344630545793878684">നിരവധി വെബ്‌സൈറ്റുകളിലെ നിങ്ങളുടെ വിവരം വായിക്കുക</translation>
@@ -2160,6 +2164,7 @@
 <translation id="3459697287128633276">Google Play സ്‌റ്റോർ ആക്‌സസ് ചെയ്യുന്നതിനായി നിങ്ങളുടെ അക്കൗണ്ട് പ്രവർത്തനക്ഷമമാക്കാൻ, നിങ്ങളുടെ ഐഡന്റിറ്റി ദാതാവുമായി പരിശോധിച്ചുറപ്പിക്കുക.</translation>
 <translation id="3462311546193741693">ഇതിലൂടെ ഭൂരിഭാഗം സൈറ്റുകളിൽ നിന്നും നിങ്ങളുടെ അക്കൗണ്ട് സൈൻ ഔട്ട് ചെയ്യപ്പെടുന്നു. നിങ്ങളുടെ സമന്വയിപ്പിച്ച ഡാറ്റ മായ്ക്കാനായി നിങ്ങൾ Google അക്കൗണ്ടിൽ സൈൻ ഇൻ ചെയ്‌ത നിലയിൽ തുടരും.</translation>
 <translation id="3462413494201477527">അക്കൗണ്ട് സജ്ജീകരണം ഇല്ലാതാക്കണോ?</translation>
+<translation id="3464145797867108663">ഔദ്യോഗിക പ്രൊഫൈൽ ചേർക്കുക</translation>
 <translation id="346431825526753">ഇത് <ph name="CUSTODIAN_EMAIL" /> എന്നയാൾ നിയന്ത്രിക്കുന്ന കുട്ടികൾക്കുള്ള അക്കൗണ്ടാണ്.</translation>
 <translation id="3468298837301810372">ലേബല്‍‌</translation>
 <translation id="3468999815377931311">Android ഫോൺ</translation>
@@ -2281,6 +2286,7 @@
 <translation id="360180734785106144">പുതിയ ഫീച്ചറുകൾ ലഭ്യമാകുന്ന മുറയ്ക്ക് അവ വാഗ്ദാനം ചെയ്യുക</translation>
 <translation id="3602290021589620013">പ്രിവ്യൂ</translation>
 <translation id="3603622770190368340">നെറ്റ്‌വർക്ക് സർട്ടിഫിക്കറ്റ് ലഭ്യമാക്കുക</translation>
+<translation id="3604193429970465812">ദ്വിതീയ അക്കൗണ്ടുകൾ</translation>
 <translation id="3604713164406837697">വാൾപേപ്പർ മാറ്റുക</translation>
 <translation id="3605780360466892872">ബട്ടൺഡൗൺ</translation>
 <translation id="3608576286259426129">ഉപയോക്തൃ ചിത്ര പ്രിവ്യൂ</translation>
@@ -2604,6 +2610,7 @@
 
   <ph name="CONTROL_PANEL_APPLET_NAME" />, ആരംഭിക്കണോ?</translation>
 <translation id="394183848452296464">കുറുക്കുവഴി സൃഷ്‌ടിക്കാനാവില്ല</translation>
+<translation id="3943494825379372497">ആപ്പുകളും പേജുകളും പുനഃസ്ഥാപിക്കണോ?</translation>
 <translation id="3943582379552582368">&amp;പിന്നോട്ട്</translation>
 <translation id="3943857333388298514">ഒട്ടിക്കുക</translation>
 <translation id="3948116654032448504">&amp;ചിത്രത്തിനായി <ph name="SEARCH_ENGINE" />-ൽ തിരയുക</translation>
@@ -2619,7 +2626,6 @@
 <translation id="3955163004258753966">അപ്ഗ്രേഡ് ചെയ്ത് തുടങ്ങുന്നതിൽ പിശക്</translation>
 <translation id="3955193568934677022">പരിരക്ഷിത ഉള്ളടക്കം പ്ലേ ചെയ്യാൻ സൈറ്റുകളെ അനുവദിക്കുക (ശുപാർശ ചെയ്‌തിരിക്കുന്നു)</translation>
 <translation id="3955896417885489542">സജ്ജീകരണത്തിന് ശേഷം Google Play ഓപ്ഷനുകൾ അവലോകനം ചെയ്യുക</translation>
-<translation id="3956702100721821638">Google Play-യിൽ കണക്‌റ്റ് ചെയ്യാനായില്ല</translation>
 <translation id="3957079323242030166">ബാക്കപ്പ് ഡാറ്റ, നിങ്ങളുടെ ഡാറ്റാ സ്റ്റോറേജിന്റെ ഇടം കുറയ്ക്കില്ല.</translation>
 <translation id="3957844511978444971">ഈ Google സേവന ക്രമീകരണത്തിന്‍റെ തിരഞ്ഞെടുപ്പ് സ്ഥിരീകരിക്കാൻ “അംഗീകരിക്കുന്നു” ടാപ്പ് ചെയ്യുക.</translation>
 <translation id="3958088479270651626">ബുക്ക്മാർക്കുകളും ക്രമീകരണവും ഇമ്പോർട്ട് ചെയ്യുക</translation>
@@ -2689,6 +2695,7 @@
 <translation id="4046013316139505482">ഈ വിപുലീകരണങ്ങൾക്ക് ഈ സൈറ്റിലെ വിവരങ്ങൾ കാണുകയും മാറ്റുകയും ചെയ്യേണ്ട ആവശ്യമില്ല.</translation>
 <translation id="4046123991198612571">അടുത്ത ട്രാക്ക്</translation>
 <translation id="4047726037116394521">ഹോമിലേക്ക് പോവുക</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{# കോൺടാക്റ്റ് ലഭ്യമല്ല. കോൺടാക്റ്റുകൾക്കൊപ്പം സമീപമുള്ള പങ്കിടൽ ഉപയോഗിക്കുന്നതിന് അവരുടെ Google അക്കൗണ്ടുമായി ബന്ധപ്പെട്ട ഇമെയിൽ വിലാസം നിങ്ങളുടെ കോൺടാക്റ്റുകളിൽ ചേർക്കുക.}other{# കോൺടാക്റ്റുകൾ ലഭ്യമല്ല. കോൺടാക്റ്റുകൾക്കൊപ്പം സമീപമുള്ള പങ്കിടൽ ഉപയോഗിക്കുന്നതിന് അവരുടെ Google അക്കൗണ്ടുകളുമായി ബന്ധപ്പെട്ട ഇമെയിൽ വിലാസങ്ങൾ നിങ്ങളുടെ കോൺടാക്റ്റുകളിൽ ചേർക്കുക.}}</translation>
 <translation id="4050225813016893843">പരിശോധിച്ചുറപ്പിക്കൽ രീതി</translation>
 <translation id="4052120076834320548">ചെറുത്</translation>
 <translation id="4056908315660577142"><ph name="APP_NAME" /> Chrome ആപ്പിനായി നിങ്ങളുടെ രക്ഷിതാവ് സജ്ജീകരിച്ച സമയ പരിധിയിലെത്തി. നാളെ <ph name="TIME_LIMIT" /> സമയം നിങ്ങൾക്ക് അത് ഉപയോഗിക്കാം.</translation>
@@ -3335,6 +3342,7 @@
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (ഡിഫോൾട്ട്) പോലെ തോന്നുന്നു</translation>
 <translation id="4864369630010738180">സൈൻ ഇൻ ചെയ്യുന്നു...</translation>
 <translation id="4864805589453749318">സ്‌കൂൾ അക്കൗണ്ട് ചേർക്കാനുള്ള അനുമതി നൽകുന്ന രക്ഷിതാവിനെ തിരഞ്ഞെടുക്കുക.</translation>
+<translation id="4866265760644917470">പ്രൊഫൈൽ ചേർത്തു.</translation>
 <translation id="486635084936119914">ചില ഫയൽ തരങ്ങളെ ഡൗൺലോഡ് ചെയ്‌ത ശേഷം സ്വയം തുറക്കുക</translation>
 <translation id="48704129375571883">കൂടുതൽ ഫീച്ചറുകൾ ചേർക്കുക</translation>
 <translation id="4870758487381879312">കോൺഫിഗറേഷൻ വിവരം ലഭിക്കാൻ അഡ്‌മിൻ നൽകിയ പാസ്‌വേഡ് നൽകുക</translation>
@@ -3618,6 +3626,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{അപഹരിക്കപ്പെട്ട പാസ്‌വേഡ് മാറ്റി. അപഹരിക്കപ്പെട്ട # പാസ്‌വേഡ് കൂടി നിങ്ങൾക്കുണ്ട്. ഈ പാസ്‌വേഡ് ഇപ്പോൾ തന്നെ പരിശോധിക്കാൻ Chrome നിർദ്ദേശിക്കുന്നു.}other{അപഹരിക്കപ്പെട്ട പാസ്‌വേഡ് മാറ്റി. അപഹരിക്കപ്പെട്ട # പാസ്‌വേഡുകൾ കൂടി നിങ്ങൾക്കുണ്ട്. ഈ പാസ്‌വേഡുകൾ ഇപ്പോൾ തന്നെ പരിശോധിക്കാൻ Chrome നിർദ്ദേശിക്കുന്നു.}}</translation>
 <translation id="5207949376430453814">ടെക്‌സ്‌റ്റ് കാരറ്റ് ഹൈലൈറ്റ് ചെയ്യുക</translation>
 <translation id="5209320130288484488">ഉപകരണങ്ങളൊന്നും കണ്ടെത്തിയില്ല</translation>
+<translation id="5209572028385096813">ഈ ഉപയോക്താവിനെ Family Link ഉപയോഗിച്ച് മാനേജ് ചെയ്യുന്നു</translation>
 <translation id="5210365745912300556">ടാബ് അടയ്ക്കൂക</translation>
 <translation id="5213481667492808996">നിങ്ങളുടെ '<ph name="NAME" />' ഡാറ്റാ സേവനം ഉപയോഗിക്കാൻ തയ്യാറാണ്</translation>
 <translation id="5213891612754844763">പ്രോക്‌സി ക്രമീകരണങ്ങൾ കാണിക്കുക</translation>
@@ -3703,6 +3712,7 @@
 <translation id="5302048478445481009">ഭാഷ</translation>
 <translation id="5302932258331363306">പകരമുള്ളവ കാണിക്കുക</translation>
 <translation id="5304276686222516262">കോൺടാക്‌റ്റ് ലിസ്‌റ്റ് ഡൗൺലോഡ് ചെയ്യാനാകുന്നില്ല. നിങ്ങളുടെ നെറ്റ്‌വർക്ക് കണക്ഷൻ പരിശോധിക്കുക, അല്ലെങ്കിൽ &lt;a href="#" id="tryAgainLink"&gt;വീണ്ടും ശ്രമിക്കുക&lt;/a&gt;.</translation>
+<translation id="5305145881844743843"><ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> ആണ് ഈ അക്കൗണ്ട് മാനേജ് ചെയ്യുന്നത്</translation>
 <translation id="5305688511332277257">ഒന്നും ഇന്‍സ്റ്റാള്‍ ചെയ്തിട്ടില്ല</translation>
 <translation id="5307030433605830021">ഉറവിടം അനുയോജ്യമല്ല</translation>
 <translation id="5308380583665731573">കണക്‌റ്റുചെയ്യുക</translation>
@@ -4085,6 +4095,7 @@
 <translation id="5740820643029013514">മിതമായ സന്ദേശമയയ്ക്കൽ ഉപയോഗിക്കുക (നിർദ്ദേശിക്കുന്നത്)</translation>
 <translation id="574104302965107104">ഡിസ്പ്ലേ മിററിംഗ്</translation>
 <translation id="574209121243317957">പിച്ച്</translation>
+<translation id="5742505912938664543">ഇവിടെ ഒരു ദ്വിതീയ അക്കൗണ്ട് ചേർക്കുമ്പോൾ, ആ അക്കൗണ്ട് ഉപയോഗിച്ച് വെബ് ബ്രൗസ് ചെയ്യാനും ആപ്പുകൾ ഡൗൺലോഡ് ചെയ്യാനും നിങ്ങളുടെ Gmail പരിശോധിക്കാനും മറ്റ് Google സേവനങ്ങൾ ഉപയോഗിക്കാനും നിങ്ങൾക്ക് കഴിയും.</translation>
 <translation id="5746169159649715125">PDF ആയി സംരക്ഷിക്കുക</translation>
 <translation id="5747552184818312860">കാലഹരണപ്പെടുന്നു</translation>
 <translation id="5747785204778348146">ഡെവലപ്പർ - അസ്ഥിരം</translation>
@@ -4426,6 +4437,7 @@
 <translation id="6129953537138746214">സ്പെയ്സ്</translation>
 <translation id="6130692320435119637">വൈഫൈ ചേർക്കുക</translation>
 <translation id="6136114942382973861">ഡൗണ്‍ലോഡ് വിവരങ്ങളുടെ ബാര്‍ അടയ്‌ക്കുക</translation>
+<translation id="6136287496450963112">നിങ്ങളുടെ സുരക്ഷാ കീ ഒരു പിൻ ഉപയോഗിച്ച് പരിരക്ഷിച്ചിട്ടില്ല. ഫിംഗർപ്രിന്റുകൾ മാനേജ് ചെയ്യാൻ ആദ്യം ഒരു പിൻ സൃഷ്‌ടിക്കുക.</translation>
 <translation id="6137767437444130246">ഉപയോക്തൃ സർട്ടിഫിക്കറ്റ്</translation>
 <translation id="6138680304137685902">SHA-384 ഉള്ള X9.62 ECDSA സിഗ്നേച്ചർ</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, നെറ്റ്‍വർക്ക് ഇല്ല</translation>
@@ -4606,6 +4618,7 @@
 <translation id="6331566915566907158">Chrome OS ഫീച്ചറുകളും പ്രകടനവും മെച്ചപ്പെടുത്താൻ സഹായിക്കുക</translation>
 <translation id="6331818708794917058">MIDI ഉപകരണങ്ങളിലേക്ക് കണക്‌റ്റ് ചെയ്യാൻ സൈറ്റുകൾക്ക് അനുവാദം ചോദിക്കാം</translation>
 <translation id="6333064448949140209">ഡീബഗ് ചെയ്യലിനായി ഫയൽ Google-ന് അയയ്‌ക്കും</translation>
+<translation id="6334444530352320327">ഈ അക്കൗണ്ട് ഉപയോഗിച്ച് സൈൻ ഇൻ ചെയ്‌തിട്ടുള്ള എല്ലാ Chromebook-കളിലും ഉടനീളം നിങ്ങളുടെ ആപ്പുകളും OS ക്രമീകരണവും സമന്വയിപ്പിക്കും.<ph name="LINK_BEGIN" />സമന്വയ ക്രമീകരണം<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">എല്ലാ സൈറ്റുകൾക്കും നിങ്ങളെ ഏത് പരസ്യം വേണമെങ്കിലും കാണിക്കാം</translation>
 <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" /> എന്നയാൾക്ക് വേണ്ടി പുതിയ പ്രൊഫൈൽ സൃഷ്‌ടിക്കുക</translation>
 <translation id="6340017061976355871">സെര്‍വറുമായി കണക്റ്റ് ചെയ്യാനായില്ല. നിങ്ങളുടെ നെറ്റ്‌വർക്ക് കണക്ഷൻ പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക. തുടർന്നും പ്രശ്‌നം നിലനിൽക്കുകയാണെങ്കിൽ, Chromebook റീസ്‌റ്റാർട്ട് ചെയ്യുക.</translation>
@@ -4907,6 +4920,7 @@
 <translation id="6709133671862442373">News</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> ഉപയോഗിച്ച് കണക്റ്റുചെയ്യുക</translation>
 <translation id="6710213216561001401">മുമ്പത്തേത്</translation>
+<translation id="6713233729292711163">ഔദ്യോഗിക പ്രൊഫൈൽ ചേർക്കുക</translation>
 <translation id="6715803357256707211">നിങ്ങളുടെ Linux ആപ്പ് ഇൻസ്‌റ്റാൾ ചെയ്യുമ്പോൾ ഒരു പിശക് സംഭവിച്ചു. വിശദാംശങ്ങൾക്ക് അറിയിപ്പിൽ ക്ലിക്ക് ചെയ്യുക.</translation>
 <translation id="671619610707606484">ഇത് സൈറ്റുകൾ സംഭരിച്ചിട്ടുള്ള <ph name="TOTAL_USAGE" /> ഡാറ്റ മായ്ക്കും</translation>
 <translation id="671928215901716392">സ്‌ക്രീൻ ലോക്കുചെയ്യുക</translation>
@@ -5275,6 +5289,7 @@
 <translation id="7121362699166175603">ചരിത്രവും വിലാസ ബാറിലെ സ്വയം പൂർത്തീകരണങ്ങളും മായ്ക്കുന്നു. നിങ്ങളുടെ Google അക്കൗണ്ടിന് <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> എന്നതിൽ മറ്റ് തരത്തിലുള്ള ബ്രൗസിംഗ് ചരിത്രമുണ്ടായിരിക്കാം.</translation>
 <translation id="7121438501124788993">ഡെവലപ്പർ മോഡ്</translation>
 <translation id="7121728544325372695">സ്‌മാർട്ട് ഡാഷുകൾ</translation>
+<translation id="7122353087820324370">ആപ്പുകളും OS ക്രമീകരണവും ദ്വിതീയ അക്കൗണ്ടുകളുമായി സമന്വയിപ്പിച്ചിട്ടില്ല.</translation>
 <translation id="7123030151043029868">ഒന്നിലധികം ഫയലുകൾ സ്വയമേവ ഡൗൺലോഡ് ചെയ്യാൻ അനുവദിച്ചിരിക്കുന്നു</translation>
 <translation id="7123360114020465152">ഇനിയങ്ങോട്ട് പിന്തുണയില്ല</translation>
 <translation id="7125148293026877011">Crostini ഇല്ലാതാക്കുക</translation>
@@ -5590,6 +5605,7 @@
 <translation id="750509436279396091">ഡൗൺലോഡുകൾ ഫോൾഡർ തുറക്കുക</translation>
 <translation id="7506093026325926984">ഈ പാസ്‌വേഡ് ഈ ഉപകരണത്തിൽ സംരക്ഷിക്കും</translation>
 <translation id="7506130076368211615">പുതിയ നെറ്റ്‌വർക്ക് സജ്ജീകരിക്കുക</translation>
+<translation id="7506242536428928412">നിങ്ങളുടെ പുതിയ സുരക്ഷാ കീ ഉപയോഗിക്കുന്നതിന്, ഒരു പുതിയ പിൻ സജ്ജീകരിക്കുക</translation>
 <translation id="7506541170099744506">എന്റർപ്രൈസ് മാനേജ്‌മെന്റിന് വേണ്ടി നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> ഉപകരണത്തെ എൻറോൾ ചെ‌യ്‌തു.</translation>
 <translation id="7507207699631365376">ഈ ദാതാവിന്റെ <ph name="BEGIN_LINK" />സ്വകാര്യതാ നയം<ph name="END_LINK" /> കാണുക</translation>
 <translation id="7507930499305566459">സ്റ്റാറ്റസ് റെസ്‌പോണ്ടര്‍‌ സര്‍‌ട്ടിഫിക്കറ്റ്</translation>
@@ -5753,6 +5769,7 @@
 <translation id="7691077781194517083">ഈ സുരക്ഷാ കീ പുനഃസജ്ജീകരിക്കാനാകില്ല. പിശക് <ph name="ERROR_CODE" />.</translation>
 <translation id="7691698019618282776">Crostini അപ്‌ഗ്രേഡ് ചെയ്യൽ</translation>
 <translation id="7696063401938172191">നിങ്ങളുടെ '<ph name="PHONE_NAME" />'-ൽ:</translation>
+<translation id="7697166915480294040">നിങ്ങളുടെ സ്ക്രീൻ പങ്കിടുമ്പോൾ വിശദാംശങ്ങൾ മറച്ചിരിക്കുന്നു</translation>
 <translation id="7697598343108519171">QR കോഡ് സ്‌കാൻ ചെയ്യാൻ ക്യാമറ ഉപയോഗിക്കുക</translation>
 <translation id="7699968112832915395">അക്കൗണ്ട് ചേർക്കാനാവില്ല</translation>
 <translation id="7701040980221191251">ഒന്നുമില്ല</translation>
@@ -6210,6 +6227,8 @@
 <translation id="8184472985242519288">ഏകരൂപം</translation>
 <translation id="8186609076106987817">സെർവറിന് ഫയൽ കണ്ടെത്താൻ കഴിഞ്ഞില്ല.</translation>
 <translation id="8188389033983459049">നിങ്ങളുടെ ഉപകരണ ക്രമീകരണം പരിശോധിച്ച്, തുടരാനായി അത് ഓണാക്കുക</translation>
+<translation id="8189306097519446565">സ്കൂൾ അക്കൗണ്ടുകൾ</translation>
+<translation id="8189750580333936930">സ്വകാര്യതാ സാൻഡ്‌ബോക്‌സ്</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> ലേക്ക് ബന്ധിപ്പിക്കുന്നു</translation>
 <translation id="8191230140820435481">നിങ്ങളുടെ അപ്ലിക്കേഷനുകൾ, വിപുലീകരണങ്ങൾ, തീമുകൾ എന്നിവ നിയന്ത്രിക്കുക</translation>
 <translation id="8195027750202970175">ഡിസ്‌കിലെ വലുപ്പം</translation>
@@ -6900,6 +6919,7 @@
 <translation id="8986362086234534611">മറന്നു</translation>
 <translation id="8986494364107987395">Google ലേക്ക് സ്വയമേവ ഉപയോഗ വിവരക്കണക്കുകളും ക്രാഷ് റിപ്പോര്‍ട്ടുകളും അയയ്ക്കുക</translation>
 <translation id="8987927404178983737">മാസം</translation>
+<translation id="8989823300731803443">നിങ്ങൾ നിർത്തിയിടത്ത് നിന്ന് വീണ്ടും തുടരുക.</translation>
 <translation id="8990209962746788689">QR കോഡ് സൃഷ്‌ടിക്കാനായില്ല</translation>
 <translation id="8991520179165052608">സൈറ്റിന് നിങ്ങളുടെ മൈക്രോഫോൺ ഉപയോഗിക്കാനാകും</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{ഒരു ഇനം}other{# ഇനങ്ങൾ}}</translation>
@@ -7129,7 +7149,6 @@
 <translation id="952992212772159698">സജീവമാക്കിയില്ല</translation>
 <translation id="956500788634395331">ദോഷകരമാകാൻ സാധ്യതയുള്ള വിപുലീകരണങ്ങളിൽ നിന്ന് നിങ്ങളെ സംരക്ഷിച്ചിരിക്കുന്നു</translation>
 <translation id="957960681186851048">ഈ സൈറ്റ് ഒന്നിലധികം ഫയലുകൾ സ്വയമേവ ഡൗൺലോഡ് ചെയ്യാൻ ശ്രമിച്ചു</translation>
-<translation id="9580706199804957">Google സേവനങ്ങളിലേക്ക് കണക്റ്റ് ചെയ്യാനായില്ല</translation>
 <translation id="958329785990007682">JavaScript ബ്ലോക്ക് ചെയ്യുക</translation>
 <translation id="960719561871045870">ഓപ്പറേറ്റർ കോഡ്</translation>
 <translation id="960987915827980018">ഏകദേശം 1 മണിക്കൂർ ശേഷിക്കുന്നു</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index df8ef1b9..f73820d 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -2142,7 +2142,6 @@
 <translation id="3441653493275994384">Дэлгэц</translation>
 <translation id="3441663102605358937">Энэ бүртгэлийг баталгаажуулахын тулд <ph name="ACCOUNT" />-д нэвтэрнэ үү</translation>
 <translation id="3445047461171030979">Google Туслахын шуурхай хариултууд</translation>
-<translation id="3445770710327978113">Ийшээ шуурхай буцаж очихын тулд энэ аппыг суулгана уу</translation>
 <translation id="3445925074670675829">USB-C төхөөрөмж</translation>
 <translation id="3446274660183028131">Windows-г суулгахын тулд Parallels Desktop-г эхлүүлнэ үү.</translation>
 <translation id="344630545793878684">Олон тооны веб хуудсууд дээр байгаа өөрийнхөө мэдээллийг уншина уу</translation>
@@ -2625,7 +2624,6 @@
 <translation id="3955163004258753966">Дэвшүүлэлтийг эхлүүлэхэд алдаа гарлаа</translation>
 <translation id="3955193568934677022">Сайтад хамгаалсан агуулгыг тоглохыг зөвшөөрөх (санал болгосон)</translation>
 <translation id="3955896417885489542">Тохируулгын дараа Google Play-н сонголтыг үнэлэх</translation>
-<translation id="3956702100721821638">Google Play-д холбогдож чадсангүй</translation>
 <translation id="3957079323242030166">Нөөцлөлтийн өгөгдөл нь таны Драйв сангийн багтаамжид нөлөөлөхгүй.</translation>
 <translation id="3957844511978444971">Google-н эдгээр үйлчилгээний тохиргооны сонголтоо баталгаажуулахын тулд “Зөвшөөрөх” гэснийг товшино уу.</translation>
 <translation id="3958088479270651626">Хайлтын жагсаалтууд болон тохиргоонуудыг импортолж авах</translation>
@@ -7141,7 +7139,6 @@
 <translation id="952992212772159698">Идэвхжээгүй байна</translation>
 <translation id="956500788634395331">Таныг аюултай байж болзошгүй өргөтгөлөөс хамгаалж байна</translation>
 <translation id="957960681186851048">Энэ сайт автоматаар олон файл татахаар оролдсон</translation>
-<translation id="9580706199804957">Google-н үйлчилгээнд холбогдож чадсангүй</translation>
 <translation id="958329785990007682">JavaScript-г блоклоно</translation>
 <translation id="960719561871045870">Операторын код</translation>
 <translation id="960987915827980018">Ойролцоогоор 1 цаг үлдсэн байна</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index 7bdf78df..f4553b9 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -2141,7 +2141,6 @@
 <translation id="3441653493275994384">तपासा</translation>
 <translation id="3441663102605358937">या खात्याची पडताळणी करण्यासाठी <ph name="ACCOUNT" /> मध्ये पुन्हा साइन इन करा</translation>
 <translation id="3445047461171030979">Google Assistant ची झटपट उत्तरे</translation>
-<translation id="3445770710327978113">येथे झटपट परत येण्यासाठी, अ‍ॅप इंस्टॉल करा</translation>
 <translation id="3445925074670675829">USB-C डिव्‍हाइस</translation>
 <translation id="3446274660183028131">Windows इंस्टॉल करण्यासाठी कृपया Parallels Desktop लाँच करा.</translation>
 <translation id="344630545793878684">अनेक वेबसाइटवर तुमचा डेटा वाचा</translation>
@@ -2622,7 +2621,6 @@
 <translation id="3955163004258753966">अपग्रेडला सुरुवात करण्यात एरर आली</translation>
 <translation id="3955193568934677022">संरक्षित आशय प्ले करण्यासाठी साइटना अनुमती द्या (शिफारस केलेले)</translation>
 <translation id="3955896417885489542">सेटअप झाल्यानंतर Google Play पर्यायांचे पुनरावलोकन करा</translation>
-<translation id="3956702100721821638">Google Play वर पोहोचता आले नाही</translation>
 <translation id="3957079323242030166">बॅकअप डेटा तुमच्या ड्राइव्ह स्टोरेजच्या जागेमध्ये मोजला जाणार नाही.</translation>
 <translation id="3957844511978444971">या Google सेवा सेटिंग्ज तुमच्या निवडीची खात्री करण्यासाठी "स्वीकारा" वर टॅप करा.</translation>
 <translation id="3958088479270651626">बुकमार्क आणि सेटिंग्ज इंपोर्ट करा</translation>
@@ -7129,7 +7127,6 @@
 <translation id="952992212772159698">सक्रिय नाही</translation>
 <translation id="956500788634395331">हानीकारक असू शकणार्‍या एक्स्टेंशनपासून तुम्ही संरक्षित आहात</translation>
 <translation id="957960681186851048">या साइटने एकाहून अधिक फाइल आपोआप डाउनलोड करण्याचा प्रयत्न केला</translation>
-<translation id="9580706199804957">Google सेवांशी कनेक्ट करता आले नाही</translation>
 <translation id="958329785990007682">JavaScript ब्लॉक करा</translation>
 <translation id="960719561871045870">ऑपरेटर कोड</translation>
 <translation id="960987915827980018">सुमारे 1 तास बाकी</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index 627bdf7..dd066fb4 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">Skrin</translation>
 <translation id="3441663102605358937">Log masuk ke <ph name="ACCOUNT" /> sekali lagi untuk mengesahkan akaun ini</translation>
 <translation id="3445047461171030979">Jawapan pantas Google Assistant</translation>
-<translation id="3445770710327978113">Untuk kembali ke sini dengan cepat, pasang apl ini</translation>
 <translation id="3445925074670675829">Peranti USB-C</translation>
 <translation id="3446274660183028131">Sila lancarkan Parallels Desktop untuk memasang Windows.</translation>
 <translation id="344630545793878684">Baca data anda di beberapa tapak web</translation>
@@ -2631,7 +2630,6 @@
 <translation id="3955163004258753966">Ralat memulakan peningkatan</translation>
 <translation id="3955193568934677022">Benarkan tapak untuk memainkan kandungan yang dilindungi (disyorkan)</translation>
 <translation id="3955896417885489542">Semak pilihan Google Play selepas penyediaan</translation>
-<translation id="3956702100721821638">Tidak dapat menghubungi Google Play</translation>
 <translation id="3957079323242030166">Data apl yang disandarkan tidak akan dikira dalam kuota storan Drive anda.</translation>
 <translation id="3957844511978444971">Ketik “Terima” untuk mengesahkan pilihan tetapan perkhidmatan Google ini.</translation>
 <translation id="3958088479270651626">Import penanda halaman dan tetapan</translation>
@@ -7155,7 +7153,6 @@
 <translation id="952992212772159698">Tidak diaktifkan</translation>
 <translation id="956500788634395331">Anda dilindungi daripada sambungan yang mungkin berbahaya</translation>
 <translation id="957960681186851048">Tapak ini cuba memuat turun berbilang fail secara automatik</translation>
-<translation id="9580706199804957">Tidak dapat menyambung ke perkhidmatan Google</translation>
 <translation id="958329785990007682">Sekat JavaScript</translation>
 <translation id="960719561871045870">Kod operator</translation>
 <translation id="960987915827980018">Tinggal kira-kira 1jam</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb
index 5c2ca6e0..d522272b 100644
--- a/chrome/app/resources/generated_resources_my.xtb
+++ b/chrome/app/resources/generated_resources_my.xtb
@@ -2148,7 +2148,6 @@
 <translation id="3441653493275994384">မျက်နှာပြင်</translation>
 <translation id="3441663102605358937">ဤအကောင့်အတည်ပြုရန် သင်၏ <ph name="ACCOUNT" /> သို့ ထပ်ပြီးလက်မှတ်ထိုးဝင်ပါ</translation>
 <translation id="3445047461171030979">Google Assistant အမြန်အဖြေများ</translation>
-<translation id="3445770710327978113">ဤနေရာသို့အမြန်ပြန်လာရန် ဤအက်ပ်ကို ထည့်သွင်းပါ</translation>
 <translation id="3445925074670675829">USB-C ကိရိယာ</translation>
 <translation id="3446274660183028131">Windows ထည့်သွင်းရန် Parallels Desktop ကို ဖွင့်ပါ။</translation>
 <translation id="344630545793878684">ဝဘ်ဆိုက် တသီကြီးမှ သင်၏ ဒေတာကို ဖတ်ရန်</translation>
@@ -2631,7 +2630,6 @@
 <translation id="3955163004258753966">အဆင့်မြှင့်ခြင်း စတင်ရာတွင် အမှားရှိနေသည်</translation>
 <translation id="3955193568934677022">ကာကွယ်ထားသည့် အကြောင်းအရာများကို ဆိုက်များအား ဖွင့်ခွင့်ပြုပါ (အကြံပြုထားသည်)</translation>
 <translation id="3955896417885489542">စနစ်ထည့်သွင်းမှုပြီးနောက် Google Play ရွေးချယ်စရာများကို ပြန်စစ်ရန်</translation>
-<translation id="3956702100721821638">Google Play သို့ ချိတ်ဆက်၍မရပါ။</translation>
 <translation id="3957079323242030166">မိတ္တူကူးထားသည့်ဒေတာများသည် သင်၏ Drive သိုလှောင်ခန်းကို အသုံးပြုမည် မဟုတ်ပါ။</translation>
 <translation id="3957844511978444971">ဤ Google ဝန်ဆောင်မှုဆက်တင်များ ရွေးချယ်မှုကို အတည်ပြုရန်အတွက် "သဘောတူရန်" ကို တို့ပါ။</translation>
 <translation id="3958088479270651626">စာညှပ်များ နှင့် ဆက်တင်များကို တင်သွင်းရန်</translation>
@@ -7150,7 +7148,6 @@
 <translation id="952992212772159698">ဖွင့်မသုံးရသေး</translation>
 <translation id="956500788634395331">အန္တရာယ်ရှိနိုင်သော နောက်ဆက်တွဲများ၏ရန်မှ သင့်ကို ကာကွယ်ပေးထားသည်</translation>
 <translation id="957960681186851048">ဤဝဘ်ဆိုက်သည် ဖိုင်အမြောက်အများကို အလိုအလျောက် ဒေါင်းလုဒ်လုပ်ရန် ကြိုးပမ်းခဲ့သည်</translation>
-<translation id="9580706199804957">Google ဝန်ဆောင်မှုများနှင့် ချိတ်ဆက်၍မရပါ</translation>
 <translation id="958329785990007682">Javascript ပိတ်ထားရန်</translation>
 <translation id="960719561871045870">မိုဘိုင်းဝန်ဆောင်မှုဌာန ကုဒ်</translation>
 <translation id="960987915827980018">၁ နာရီ ခန့် ကျန်နေ</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb
index 551a553..44adb2d 100644
--- a/chrome/app/resources/generated_resources_ne.xtb
+++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -2139,7 +2139,6 @@
 <translation id="3441653493275994384">स्क्रिन</translation>
 <translation id="3441663102605358937">यो खाता पुष्टि गर्न <ph name="ACCOUNT" /> मा फेरि साइन इन गर्नुहोस्</translation>
 <translation id="3445047461171030979">Google सहायकका द्रुत जवाफहरू</translation>
-<translation id="3445770710327978113">यही पेजमा छिटोछरितो रूपमा जान यो एप इन्स्टल गर्नुहोस्</translation>
 <translation id="3445925074670675829">USB-C यन्त्र</translation>
 <translation id="3446274660183028131">कृपया Windows इन्स्टल गर्न Parallels Desktop खोल्नुहोस्।</translation>
 <translation id="344630545793878684">विभिन्न वेबसाइटहरूमा तपाईँको डेटा पढ्नुहोस्</translation>
@@ -2619,7 +2618,6 @@
 <translation id="3955163004258753966">स्तरवृद्धि गर्ने कार्य सुरु गर्दा त्रुटि भयो</translation>
 <translation id="3955193568934677022">साइटहरूलाई सुरक्षित सामग्री प्ले गर्न अनुमति दिनुहोस् (सिफारिस गरिएको)</translation>
 <translation id="3955896417885489542">सेटअप गरिसकेपछि Google Play सम्बन्धी विकल्पहरूको समीक्षा गर्नुहोस्</translation>
-<translation id="3956702100721821638">Google Play उपलब्ध हुन सकेन</translation>
 <translation id="3957079323242030166">डेटा ब्याकअप गर्दा तपाईंको ड्राइभको भण्डारण कोटा प्रयोग हुने छैन।</translation>
 <translation id="3957844511978444971">आफूले गरेका Google का सेवाहरूसम्बन्धी यी सेटिङहरूको चयनको पनि पुष्टि गर्न “स्वीकार गर्नुहोस्” नामक बटनमा ट्याप गर्नुहोस्।</translation>
 <translation id="3958088479270651626">पृष्ठमञ्जूषाहरू र सेटिङहरू आयात गर्नुहोस्</translation>
@@ -7125,7 +7123,6 @@
 <translation id="952992212772159698">सक्रिय छैन</translation>
 <translation id="956500788634395331">तपाईं हानिकारक हुन सक्ने एक्स्टेन्सनहरूबाट सुरक्षित हुनुहुन्छ</translation>
 <translation id="957960681186851048">यो साइटले स्वतः एकभन्दा बढी फाइलहरू डाउनलोड गर्ने प्रयास गर्‍यो</translation>
-<translation id="9580706199804957">Google का सेवाहरूसँग जडान गर्न सकिएन</translation>
 <translation id="958329785990007682">JavaScript ब्लक गर्नुहोस्</translation>
 <translation id="960719561871045870">अपरेटरको कोड</translation>
 <translation id="960987915827980018">लगभग 1 घन्टा बाँकी</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index b2fd390..331f30b0 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -2142,7 +2142,6 @@
 <translation id="3441653493275994384">Beeldscherm</translation>
 <translation id="3441663102605358937">Log opnieuw in op <ph name="ACCOUNT" /> om dit account te verifiëren</translation>
 <translation id="3445047461171030979">Snelle antwoorden van de Google Assistent</translation>
-<translation id="3445770710327978113">Installeer deze app om hier snel terug te keren</translation>
 <translation id="3445925074670675829">USB-C-apparaat</translation>
 <translation id="3446274660183028131">Start Parallels Desktop om Windows te installeren.</translation>
 <translation id="344630545793878684">Je gegevens voor een aantal websites lezen</translation>
@@ -2623,7 +2622,6 @@
 <translation id="3955163004258753966">Fout bij starten van upgrade</translation>
 <translation id="3955193568934677022">Toestaan dat sites beschermde content afspelen (aanbevolen)</translation>
 <translation id="3955896417885489542">Google Play-opties bekijken na instellen</translation>
-<translation id="3956702100721821638">Kan Google Play niet bereiken</translation>
 <translation id="3957079323242030166">Back-upgegevens tellen niet mee voor de opslaglimiet van Drive.</translation>
 <translation id="3957844511978444971">Tik op Accepteren om je keuze van deze service-instellingen van Google te bevestigen.</translation>
 <translation id="3958088479270651626">Bookmarks en instellingen importeren</translation>
@@ -7132,7 +7130,6 @@
 <translation id="952992212772159698">Niet geactiveerd</translation>
 <translation id="956500788634395331">Je bent beschermd tegen potentieel schadelijke extensies</translation>
 <translation id="957960681186851048">Deze site heeft geprobeerd automatisch meerdere bestanden te downloaden</translation>
-<translation id="9580706199804957">Kan geen verbinding maken met Google-services</translation>
 <translation id="958329785990007682">JavaScript blokkeren</translation>
 <translation id="960719561871045870">Operatorcode</translation>
 <translation id="960987915827980018">Ongeveer 1 uur resterend</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 5b88d8c..93afced 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -2144,7 +2144,6 @@
 <translation id="3441653493275994384">Skjerm</translation>
 <translation id="3441663102605358937">Logg på <ph name="ACCOUNT" /> på nytt for å verifisere denne kontoen</translation>
 <translation id="3445047461171030979">Google Assistent-hurtigsvar</translation>
-<translation id="3445770710327978113">For å komme raskt tilbake hit, installer denne appen</translation>
 <translation id="3445925074670675829">USB-C-enhet</translation>
 <translation id="3446274660183028131">Start Parallels Desktop for å installere Windows.</translation>
 <translation id="344630545793878684">Lesing av dataene dine på en rekke nettsteder</translation>
@@ -2626,7 +2625,6 @@
 <translation id="3955163004258753966">Feil under start av oppgradering</translation>
 <translation id="3955193568934677022">Gi nettsteder tillatelse til å spille av beskyttet innhold (anbefales)</translation>
 <translation id="3955896417885489542">Gå gjennom Google Play-alternativene etter konfigureringen</translation>
-<translation id="3956702100721821638">Kunne ikke nå Google Play</translation>
 <translation id="3957079323242030166">De sikkerhetskopierte dataene teller ikke med i Disk-lagringskvoten din.</translation>
 <translation id="3957844511978444971">Trykk på «Godta» for å bekrefte valget ditt av disse innstillingene for Google-tjenester.</translation>
 <translation id="3958088479270651626">Importér bokmerker og innstillinger</translation>
@@ -7149,7 +7147,6 @@
 <translation id="952992212772159698">Ikke aktivert</translation>
 <translation id="956500788634395331">Du er beskyttet mot potensielt skadelige utvidelser</translation>
 <translation id="957960681186851048">Dette nettstedet prøvde å laste ned flere filer automatisk</translation>
-<translation id="9580706199804957">Kunne ikke koble til Google-tjenester</translation>
 <translation id="958329785990007682">Blokkér JavaScript</translation>
 <translation id="960719561871045870">Operatørkode</translation>
 <translation id="960987915827980018">Omtrent én time igjen</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb
index 1c4cc9d..d20d9231 100644
--- a/chrome/app/resources/generated_resources_or.xtb
+++ b/chrome/app/resources/generated_resources_or.xtb
@@ -2135,7 +2135,6 @@
 <translation id="3441653493275994384">ସ୍କ୍ରିନ୍</translation>
 <translation id="3441663102605358937">ଏହି ଆକାଉଣ୍ଟକୁ ଯାଞ୍ଚ କରିବାକୁ <ph name="ACCOUNT" />ରେ ପୁଣି ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation>
 <translation id="3445047461171030979">Google Assistant ଦ୍ରୁତ ଉତ୍ତରଗୁଡ଼ିକ</translation>
-<translation id="3445770710327978113">ଏଠାକୁ ଶୀଘ୍ର ଫେରିବା ପାଇଁ, ଏହି ଆପ୍ ଇନଷ୍ଟଲ୍ କରନ୍ତୁ</translation>
 <translation id="3445925074670675829">USB-C ଡିଭାଇସ୍</translation>
 <translation id="3446274660183028131">ଦୟାକରି Windows ଇନଷ୍ଟଲ୍ କରିବାକୁ Parallels Desktop ଲଞ୍ଚ କରନ୍ତୁ।</translation>
 <translation id="344630545793878684">ଅନେକଗୁଡ଼ିଏ ୱେବ୍‌ସାଇଟ୍‌ରେ ଆପଣଙ୍କର ଡାଟା ପଢ଼ନ୍ତୁ</translation>
@@ -2614,7 +2613,6 @@
 <translation id="3955163004258753966">ଅପଗ୍ରେଡ୍ ଆରମ୍ଭ କରିବାରେ ତ୍ରୁଟି</translation>
 <translation id="3955193568934677022">ସୁରକ୍ଷିତ ବିଷୟବସ୍ତୁକୁ ଚଲାଇବା ପାଇଁ ସାଇଟ୍‍ଗୁଡ଼ିକୁ ଅନୁମତି ଦିଆଯାଇଛି।(ସୁପାରିଶ୍ କରାଯାଇଛି)</translation>
 <translation id="3955896417885489542">ସେଟ୍‌ଅପ୍ ପରେ Google Play ବିକଳ୍ପଗୁଡ଼ିକର ସମୀକ୍ଷା କରନ୍ତୁ</translation>
-<translation id="3956702100721821638">Google Playକୁ ପହଞ୍ଚିପାରିଲା ନାହିଁ</translation>
 <translation id="3957079323242030166">ବ୍ୟାକଅପ୍ ଡାଟାକୁ ଆପଣଙ୍କ Drive ଷ୍ଟୋରେଜ୍ କୋଟାରେ ଗଣନା କରାଯିବ ନାହିଁ।</translation>
 <translation id="3957844511978444971">ଆପଣଙ୍କର ଏହି Google ସେବା ସେଟିଂସ୍‌ର ଚୟନକୁ ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ 'ଗ୍ରହଣ କରନ୍ତୁ' ଉପରେ ଟାପ୍ କରନ୍ତୁ।</translation>
 <translation id="3958088479270651626">ବୁକ୍‌ମାର୍କ୍‌ସ ଏବଂ ସେଟିଂସ୍‌କୁ ଇମ୍ପୋର୍ଟ କରନ୍ତୁ</translation>
@@ -7122,7 +7120,6 @@
 <translation id="952992212772159698">ସକ୍ରିୟ ହୋ‍ଇନାହିଁ</translation>
 <translation id="956500788634395331">ଆପଣ ସମ୍ଭାବ୍ୟ କ୍ଷତିକାରକ ଏକ୍ସଟେନସନଗୁଡ଼ିକରୁ ସୁରକ୍ଷିତ ଅଛନ୍ତି</translation>
 <translation id="957960681186851048">ଏହି ସାଇଟ୍ ସ୍ୱଚାଳିତ ଭାବେ ଏକାଧିକ ଫାଇଲ୍ ଡାଉନ୍‍‍ଲୋଡ୍ କରିବାକୁ ଚେଷ୍ଟା କରୁଛି</translation>
-<translation id="9580706199804957">Google ସେବା ସହ ସଂଯୋଗ ହୋଇପାରିଲା ନାହିଁ</translation>
 <translation id="958329785990007682">JavaScriptକୁ ବ୍ଲକ୍ କରନ୍ତୁ</translation>
 <translation id="960719561871045870">ଅପରେଟର୍ କୋଡ୍</translation>
 <translation id="960987915827980018">ପାଖାପାଖି 1 ଘଣ୍ଟା ବାକି ଅଛି</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb
index c47e6a4..aba0381 100644
--- a/chrome/app/resources/generated_resources_pa.xtb
+++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -2141,7 +2141,6 @@
 <translation id="3441653493275994384">ਸਕ੍ਰੀਨ</translation>
 <translation id="3441663102605358937">ਇਸ ਖਾਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਦੁਬਾਰਾ <ph name="ACCOUNT" /> 'ਤੇ ਸਾਈਨ-ਇਨ ਕਰੋ</translation>
 <translation id="3445047461171030979">Google Assistant ਤਤਕਾਲ ਜਵਾਬ</translation>
-<translation id="3445770710327978113">ਤੇਜ਼ੀ ਨਾਲ ਇੱਥੇ ਵਾਪਸ ਆਉਣ ਲਈ, ਇਸ ਐਪ ਨੂੰ ਸਥਾਪਤ ਕਰੋ</translation>
 <translation id="3445925074670675829">USB-C ਡੀਵਾਈਸ</translation>
 <translation id="3446274660183028131">Windows ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਲਈ ਕਿਰਪਾ ਕਰਕੇ Parallels Desktop ਨੂੰ ਲਾਂਚ ਕਰੋ।</translation>
 <translation id="344630545793878684">ਕੁਝ ਵੈਬਸਾਈਟਾਂ ਤੇ ਆਪਣਾ ਡਾਟਾ ਪੜ੍ਹੋ</translation>
@@ -2622,7 +2621,6 @@
 <translation id="3955163004258753966">ਅੱਪਗ੍ਰੇਡ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਗੜਬੜ ਹੋ ਗਈ</translation>
 <translation id="3955193568934677022">ਸਾਈਟਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਸਮੱਗਰੀ ਚਲਾਉਣ ਦਿਓ (ਸਿਫ਼ਾਰਸ਼ੀ)</translation>
 <translation id="3955896417885489542">ਸੈੱਟਅੱਪ ਤੋਂ ਬਾਅਦ Google Play ਵਿਕਲਪਾਂ ਦੀ ਸਮੀਖਿਆ ਕਰੋ</translation>
-<translation id="3956702100721821638">Google Play ਤੱਕ ਪਹੁੰਚਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ</translation>
 <translation id="3957079323242030166">ਬੈਕਅੱਪ ਡਾਟੇ ਨੂੰ ਤੁਹਾਡੇ 'ਡਰਾਈਵ' ਸਟੋਰੇਜ ਕੋਟੇ ਵਿੱਚ ਨਹੀਂ ਗਿਣਿਆ ਜਾਵੇਗਾ।</translation>
 <translation id="3957844511978444971">Google ਸੇਵਾਵਾਂ ਦੀਆਂ ਇਹਨਾਂ ਸੈਟਿੰਗਾਂ ਦੀ ਆਪਣੀ ਚੋਣ ਦੀ ਤਸਦੀਕ ਕਰਨ ਲਈ "ਸਵੀਕਾਰ ਕਰੋ" 'ਤੇ ਟੈਪ ਕਰੋ।</translation>
 <translation id="3958088479270651626">ਬੁੱਕਮਾਰਕ ਅਤੇ ਸੈਟਿੰਗਾਂ ਆਯਾਤ ਕਰੋ</translation>
@@ -7128,7 +7126,6 @@
 <translation id="952992212772159698">ਸਕਿਰਿਆ ਨਹੀਂ ਕੀਤਾ</translation>
 <translation id="956500788634395331">ਤੁਸੀਂ ਸੰਭਾਵੀ ਤੌਰ 'ਤੇ ਨੁਕਸਾਨਦੇਹ ਐਕਸਟੈਂਸ਼ਨਾਂ ਤੋਂ ਸੁਰੱਖਿਅਤ ਹੋ</translation>
 <translation id="957960681186851048">ਇਸ ਸਾਈਟ ਨੇ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਇੱਕ ਤੋਂ ਵੱਧ ਫ਼ਾਈਲਾਂ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ</translation>
-<translation id="9580706199804957">Google ਸੇਵਾਵਾਂ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</translation>
 <translation id="958329785990007682">JavaScript ਨੂੰ ਬਲਾਕ ਕਰੋ</translation>
 <translation id="960719561871045870">ਓਪਰੇਟਰ ਕੋਡ</translation>
 <translation id="960987915827980018">ਲਗਭਗ 1 ਘੰਟਾ ਬਾਕੀ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index 39d6e4ef..5a19e6e 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">Brak sieci</translation>
 <translation id="1056898198331236512">Ostrzeżenie</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Wpisz nowy kod PIN. Musi on zawierać co najmniej 1 znak, którym może być litera, cyfra lub inny znak.}few{Wpisz nowy kod PIN. Musi on zawierać co najmniej # znaki, którymi mogą być litery, cyfry i inne znaki.}many{Wpisz nowy kod PIN. Musi on zawierać co najmniej # znaków, którymi mogą być litery, cyfry i inne znaki.}other{Wpisz nowy kod PIN. Musi on zawierać co najmniej # znaku, którymi mogą być litery, cyfry i inne znaki.}}</translation>
 <translation id="1059944192885972544">Znaleziono karty (<ph name="NUM" />) dla zapytania „<ph name="SEARCH_TEXT" />”</translation>
 <translation id="1060292118287751956">Określa częstotliwość aktualizacji ekranu</translation>
 <translation id="1061904396131502319">Wielkimi krokami nadchodzi przerwa</translation>
@@ -638,9 +639,11 @@
 <translation id="1688935057616748272">Wpisz literę</translation>
 <translation id="168991973552362966">Dodaj drukarkę w pobliżu</translation>
 <translation id="1689945336726856614">Kopiuj &amp;URL</translation>
+<translation id="1690248886740053041">Nie udało się połączyć z siecią komórkową. Aby uzyskać pomoc techniczną, skontaktuj się ze swoim operatorem.</translation>
 <translation id="1692115862433274081">Użyj innego konta</translation>
 <translation id="1692118695553449118">Synchronizacja jest włączona</translation>
 <translation id="1692210323591458290">Ciemnofioletowy</translation>
+<translation id="169279809881363536">Nie znaleziono żadnego profilu. Aby skonfigurować nową sieć, zeskanuj kod QR za pomocą aparatu urządzenia lub wpisz kod aktywacyjny otrzymany od operatora.</translation>
 <translation id="1697150536837697295">Sztuka</translation>
 <translation id="1697686431566694143">Edytuj plik</translation>
 <translation id="1698122934742150150">Tylko w bieżącej sesji incognito</translation>
@@ -1573,6 +1576,7 @@
 <translation id="2770465223704140727">Usuń z listy</translation>
 <translation id="2770690685823456775">Eksportuj hasła do innego folderu</translation>
 <translation id="2770929488047004208">Rozdzielczość monitora</translation>
+<translation id="2770954829020464827">Gdy udostępniasz ekran, szczegóły są ukryte</translation>
 <translation id="2771268254788431918">Aktywowano mobilną transmisję danych</translation>
 <translation id="2771816809568414714">Ser</translation>
 <translation id="2772936498786524345">Dyskretny</translation>
@@ -1941,6 +1945,7 @@
 <translation id="3201422919974259695">Tutaj będą widoczne dostępne urządzenia USB.</translation>
 <translation id="3202131003361292969">Ścieżka</translation>
 <translation id="3202173864863109533">Dźwięk z karty został wyciszony.</translation>
+<translation id="3202218848974251205">Piaskownica prywatności</translation>
 <translation id="3208321278970793882">Aplikacja</translation>
 <translation id="3208584281581115441">Sprawdź teraz</translation>
 <translation id="3208703785962634733">Niepotwierdzony</translation>
@@ -2140,7 +2145,6 @@
 <translation id="3441653493275994384">Ekran</translation>
 <translation id="3441663102605358937">Ponownie zaloguj się na konto <ph name="ACCOUNT" />, by je zweryfikować</translation>
 <translation id="3445047461171030979">Krótkie odpowiedzi Asystenta Google</translation>
-<translation id="3445770710327978113">Aby szybko tu wrócić, zainstaluj tę aplikację</translation>
 <translation id="3445925074670675829">Urządzenie USB-C</translation>
 <translation id="3446274660183028131">Włącz aplikację Parallels Desktop, by zainstalować system Windows.</translation>
 <translation id="344630545793878684">Odczyt Twoich danych na kilku stronach internetowych</translation>
@@ -2161,6 +2165,7 @@
 <translation id="3459697287128633276">Aby Twoje konto miało dostęp do Sklepu Google Play, uwierzytelnij je za pomocą dostawcy tożsamości.</translation>
 <translation id="3462311546193741693">Spowoduje wylogowanie Cię z większości stron internetowych. Nie nastąpi wylogowanie z konta Google, więc będzie można wyczyścić zsynchronizowane dane.</translation>
 <translation id="3462413494201477527">Anulować konfigurowanie konta?</translation>
+<translation id="3464145797867108663">Dodaj profil służbowy</translation>
 <translation id="346431825526753">To jest konto dla dzieci, którym zarządza <ph name="CUSTODIAN_EMAIL" />.</translation>
 <translation id="3468298837301810372">Etykieta</translation>
 <translation id="3468999815377931311">Telefon z Androidem</translation>
@@ -2282,6 +2287,7 @@
 <translation id="360180734785106144">Dowiadujesz się o nowych funkcjach, gdy tylko są dostępne</translation>
 <translation id="3602290021589620013">Podgląd</translation>
 <translation id="3603622770190368340">Pobierz certyfikat sieci</translation>
+<translation id="3604193429970465812">Konta dodatkowe</translation>
 <translation id="3604713164406837697">Zmień tapetę</translation>
 <translation id="3605780360466892872">Garnitur</translation>
 <translation id="3608576286259426129">Podgląd obrazu użytkownika</translation>
@@ -2606,6 +2612,7 @@
 
   Uruchomić aplet <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation>
 <translation id="394183848452296464">Nie można utworzyć skrótu</translation>
+<translation id="3943494825379372497">Przywrócić aplikacje i strony?</translation>
 <translation id="3943582379552582368">&amp;Wstecz</translation>
 <translation id="3943857333388298514">Wklej</translation>
 <translation id="3948116654032448504">&amp;Szukaj obrazu w <ph name="SEARCH_ENGINE" /></translation>
@@ -2621,7 +2628,6 @@
 <translation id="3955163004258753966">Błąd podczas rozpoczynania uaktualniania</translation>
 <translation id="3955193568934677022">Zezwalaj witrynom na odtwarzanie treści chronionej (zalecane)</translation>
 <translation id="3955896417885489542">Pokaż opcje Google Play po zakończeniu konfiguracji</translation>
-<translation id="3956702100721821638">Nie udało się połączyć z Google Play</translation>
 <translation id="3957079323242030166">Dane kopii zapasowej nie zmniejszają ilości miejsca dostępnego na Dysku.</translation>
 <translation id="3957844511978444971">Kliknij „Akceptuję”, by potwierdzić wybór tych ustawień usług Google.</translation>
 <translation id="3958088479270651626">Importuj zakładki i ustawienia</translation>
@@ -2691,6 +2697,7 @@
 <translation id="4046013316139505482">Te rozszerzenia nie muszą odczytywać ani zmieniać informacji na tej stronie.</translation>
 <translation id="4046123991198612571">Następny utwór</translation>
 <translation id="4047726037116394521">Wróć do ekranu głównego</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{# kontakt jest niedostępny. Aby skorzystać z funkcji Udostępnianie w pobliżu, dodaj do kontaktów adres e-mail powiązany z kontem Google tej osoby.}few{# kontakty są niedostępne. Aby skorzystać z funkcji Udostępnianie w pobliżu, dodaj do kontaktów adresy e-mail powiązane z kontami Google tych osób.}many{# kontaktów jest niedostępnych. Aby skorzystać z funkcji Udostępnianie w pobliżu, dodaj do kontaktów adresy e-mail powiązane z kontami Google tych osób.}other{# kontaktu jest niedostępne. Aby skorzystać z funkcji Udostępnianie w pobliżu, dodaj do kontaktów adresy e-mail powiązane z kontami Google tych osób.}}</translation>
 <translation id="4050225813016893843">Metoda uwierzytelniania</translation>
 <translation id="4052120076834320548">Malutki</translation>
 <translation id="4056908315660577142">Upłynął ustawiony przez rodzica limit czasu korzystania z aplikacji <ph name="APP_NAME" /> w Chrome. Jutro możesz z niej korzystać przez <ph name="TIME_LIMIT" />.</translation>
@@ -3337,6 +3344,7 @@
 <translation id="4863769717153320198">Wygląda na <ph name="WIDTH" /> × <ph name="HEIGHT" /> (domyślna)</translation>
 <translation id="4864369630010738180">Loguję...</translation>
 <translation id="4864805589453749318">Wybierz rodzica, który zezwala na dodanie konta szkolnego.</translation>
+<translation id="4866265760644917470">Profil został dodany.</translation>
 <translation id="486635084936119914">Automatycznie otwieraj określone typy plików po pobraniu</translation>
 <translation id="48704129375571883">Dodaj inne funkcje</translation>
 <translation id="4870758487381879312">Wpisz hasło uzyskane od administratora, by uzyskać dane do konfiguracji</translation>
@@ -3620,6 +3628,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{Zmieniono przejęte hasło. Masz jeszcze # przejęte hasło. Chrome zaleca, by jak najszybciej je sprawdzić.}few{Zmieniono przejęte hasło. Masz jeszcze # przejęte hasła. Chrome zaleca, by jak najszybciej je sprawdzić.}many{Zmieniono przejęte hasło. Masz jeszcze # przejętych haseł. Chrome zaleca, by jak najszybciej je sprawdzić.}other{Zmieniono przejęte hasło. Masz jeszcze # przejętego hasła. Chrome zaleca, by jak najszybciej je sprawdzić.}}</translation>
 <translation id="5207949376430453814">Podświetlaj kursor tekstu</translation>
 <translation id="5209320130288484488">Nie znaleziono urządzeń</translation>
+<translation id="5209572028385096813">Ten użytkownik jest zarządzany przez Family Link</translation>
 <translation id="5210365745912300556">Zamknij kartę</translation>
 <translation id="5213481667492808996">Usługa transmisji danych „<ph name="NAME" />” jest gotowa do użycia</translation>
 <translation id="5213891612754844763">Pokaż ustawienia serwera proxy</translation>
@@ -3705,6 +3714,7 @@
 <translation id="5302048478445481009">Język</translation>
 <translation id="5302932258331363306">Pokaż zamienniki</translation>
 <translation id="5304276686222516262">Nie udało się pobrać listy kontaktów. Sprawdź połączenie sieciowe lub &lt;a href="#" id="tryAgainLink"&gt;spróbuj ponownie&lt;/a&gt;.</translation>
+<translation id="5305145881844743843">Kontem zarządza <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" />.</translation>
 <translation id="5305688511332277257">Brak zainstalowanych</translation>
 <translation id="5307030433605830021">Źródło nie jest obsługiwane</translation>
 <translation id="5308380583665731573">Połącz</translation>
@@ -4086,6 +4096,7 @@
 <translation id="5740820643029013514">Pokazuj komunikaty dyskretnie (zalecane)</translation>
 <translation id="574104302965107104">Odbicie lustrzane wyświetlacza</translation>
 <translation id="574209121243317957">Ton</translation>
+<translation id="5742505912938664543">Konta dodatkowego możesz używać do przeglądania internetu, pobierania aplikacji oraz korzystania z Gmaila i innych usług Google.</translation>
 <translation id="5746169159649715125">Zapisz jako PDF</translation>
 <translation id="5747552184818312860">Wygasa</translation>
 <translation id="5747785204778348146">Deweloperska – niestabilna</translation>
@@ -4426,6 +4437,7 @@
 <translation id="6129953537138746214">Spacja</translation>
 <translation id="6130692320435119637">Dodaj Wi-Fi</translation>
 <translation id="6136114942382973861">Zamknij pasek pobranych plików</translation>
+<translation id="6136287496450963112">Klucz bezpieczeństwa nie jest chroniony kodem PIN. Aby zarządzać odciskami palca, najpierw utwórz kod PIN.</translation>
 <translation id="6137767437444130246">Certyfikat użytkownika</translation>
 <translation id="6138680304137685902">Podpis X9.62 ECDSA z SHA-384</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, brak sieci</translation>
@@ -4606,6 +4618,7 @@
 <translation id="6331566915566907158">Pomóż w ulepszaniu funkcji i działania Chrome OS</translation>
 <translation id="6331818708794917058">Strony mogą prosić o zgodę na połączenie z urządzeniami MIDI</translation>
 <translation id="6333064448949140209">Plik zostanie wysłany do Google w celu debugowania</translation>
+<translation id="6334444530352320327">Twoje aplikacje i ustawienia systemu operacyjnego będą synchronizowane na Chromebookach, na których zalogujesz się na swoje konto.<ph name="LINK_BEGIN" />Ustawienia synchronizacji<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">Wszystkie strony mogą wyświetlać wszystkie reklamy</translation>
 <translation id="6339668969738228384">Utwórz nowy profil dla adresu <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="6340017061976355871">Nie udało połączyć się z serwerem. Sprawdź połączenie sieciowe i spróbuj ponownie. Jeśli problem nie zniknie, uruchom ponownie Chromebooka.</translation>
@@ -4907,6 +4920,7 @@
 <translation id="6709133671862442373">Wiadomości</translation>
 <translation id="6709357832553498500">Połącz za pomocą rozszerzenia <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Poprzedni</translation>
+<translation id="6713233729292711163">Dodaj profil służbowy</translation>
 <translation id="6715803357256707211">Podczas instalowania aplikacji na Linuksa wystąpił błąd. Kliknij powiadomienie, by zobaczyć szczegółowe informacje.</translation>
 <translation id="671619610707606484">Spowoduje to usunięcie <ph name="TOTAL_USAGE" /> danych zapisanych przez strony</translation>
 <translation id="671928215901716392">Zablokuj ekran</translation>
@@ -5275,6 +5289,7 @@
 <translation id="7121362699166175603">Usuwa historię i pamięć autouzupełniania na pasku adresu. Inne rodzaje historii przeglądania mogą być nadal dostępne na Twoim koncie Google na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="7121438501124788993">Tryb programisty</translation>
 <translation id="7121728544325372695">Inteligentne myślniki</translation>
+<translation id="7122353087820324370">Aplikacje i ustawienia systemu operacyjnego nie są synchronizowane z kontami dodatkowymi.</translation>
 <translation id="7123030151043029868">Zezwolono na automatyczne pobieranie wielu plików</translation>
 <translation id="7123360114020465152">Drukarka nie jest już obsługiwana</translation>
 <translation id="7125148293026877011">Usuń Crostini</translation>
@@ -5590,6 +5605,7 @@
 <translation id="750509436279396091">Otwórz folder pobierania</translation>
 <translation id="7506093026325926984">Hasło zostanie zapisane na tym urządzeniu</translation>
 <translation id="7506130076368211615">Skonfiguruj nową sieć</translation>
+<translation id="7506242536428928412">Aby używać swojego nowego klucza bezpieczeństwa, ustaw nowy kod PIN</translation>
 <translation id="7506541170099744506">Urządzenie <ph name="DEVICE_TYPE" /> zostało zarejestrowane na potrzeby zarządzania w firmie.</translation>
 <translation id="7507207699631365376">Zapoznaj się z <ph name="BEGIN_LINK" />polityką prywatności<ph name="END_LINK" /> tego dostawcy</translation>
 <translation id="7507930499305566459">Certyfikat obiektu odpowiadającego w zakresie stanu</translation>
@@ -5753,6 +5769,7 @@
 <translation id="7691077781194517083">Nie udało się zresetować tego klucza bezpieczeństwa. Błąd <ph name="ERROR_CODE" />.</translation>
 <translation id="7691698019618282776">Uaktualnienie Crostini</translation>
 <translation id="7696063401938172191">Na telefonie <ph name="PHONE_NAME" />:</translation>
+<translation id="7697166915480294040">Gdy udostępniasz ekran, szczegóły są ukryte</translation>
 <translation id="7697598343108519171">Użyj aparatu, by zeskanować kod QR</translation>
 <translation id="7699968112832915395">Nie można dodać konta</translation>
 <translation id="7701040980221191251">Brak</translation>
@@ -6210,6 +6227,8 @@
 <translation id="8184472985242519288">Jednolity</translation>
 <translation id="8186609076106987817">Serwer nie znalazł pliku.</translation>
 <translation id="8188389033983459049">Sprawdź ustawienia urządzenia i włącz tę opcję, by kontynuować</translation>
+<translation id="8189306097519446565">Konta szkolne</translation>
+<translation id="8189750580333936930">Piaskownica prywatności</translation>
 <translation id="8190193592390505034">Łączenie z siecią <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Zarządzanie Twoimi aplikacjami, rozszerzeniami i motywami</translation>
 <translation id="8195027750202970175">Rozmiar na dysku</translation>
@@ -6903,6 +6922,7 @@
 <translation id="8986362086234534611">Zapomnij</translation>
 <translation id="8986494364107987395">Automatycznie przesyłaj do Google statystyki użytkowania i raporty o awariach</translation>
 <translation id="8987927404178983737">Miesiąc</translation>
+<translation id="8989823300731803443">Kontynuuj od tego samego miejsca.</translation>
 <translation id="8990209962746788689">Nie udało się utworzyć kodu QR</translation>
 <translation id="8991520179165052608">Strona może używać mikrofonu</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{1 element}few{# elementy}many{# elementów}other{# elementu}}</translation>
@@ -7132,7 +7152,6 @@
 <translation id="952992212772159698">Nie aktywowano</translation>
 <translation id="956500788634395331">Masz ochronę przed potencjalnie niebezpiecznymi rozszerzeniami</translation>
 <translation id="957960681186851048">Ta strona próbowała pobrać automatycznie wiele plików</translation>
-<translation id="9580706199804957">Nie udało się połączyć z usługami Google</translation>
 <translation id="958329785990007682">Blokuj JavaScript</translation>
 <translation id="960719561871045870">Kod operatora</translation>
 <translation id="960987915827980018">Zostało około 1 godziny</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index 6e8730b3..0ddf5ec8 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -2144,7 +2144,6 @@
 <translation id="3441653493275994384">Tela</translation>
 <translation id="3441663102605358937">Faça login em <ph name="ACCOUNT" /> novamente para verificar essa conta</translation>
 <translation id="3445047461171030979">Respostas rápidas do Google Assistente</translation>
-<translation id="3445770710327978113">Para voltar aqui rapidamente, instale este app</translation>
 <translation id="3445925074670675829">Dispositivo USB-C</translation>
 <translation id="3446274660183028131">Inicie o Parallels Desktop para instalar o Windows.</translation>
 <translation id="344630545793878684">Leia seus dados em uma série de websites</translation>
@@ -2625,7 +2624,6 @@
 <translation id="3955163004258753966">Erro ao iniciar o upgrade</translation>
 <translation id="3955193568934677022">Permitir que os sites reproduzam conteúdo protegido (recomendado)</translation>
 <translation id="3955896417885489542">Revisar as opções do Google Play após a configuração</translation>
-<translation id="3956702100721821638">Não foi possível acessar o Google Play</translation>
 <translation id="3957079323242030166">Os dados de backup não são considerados na sua cota de armazenamento no Drive.</translation>
 <translation id="3957844511978444971">Ao tocar em "Aceitar", você confirma sua seleção dessas configurações dos serviços do Google.</translation>
 <translation id="3958088479270651626">Importar favoritos e configurações</translation>
@@ -7137,7 +7135,6 @@
 <translation id="952992212772159698">Desativado</translation>
 <translation id="956500788634395331">Você tem proteção contra extensões possivelmente nocivas</translation>
 <translation id="957960681186851048">Este site tentou fazer o download de vários arquivos automaticamente</translation>
-<translation id="9580706199804957">Não foi possível conectar-se aos serviços do Google</translation>
 <translation id="958329785990007682">Bloquear JavaScript</translation>
 <translation id="960719561871045870">Código da operadora</translation>
 <translation id="960987915827980018">Cerca de 1 hora restante</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index b8cef43..82a100f0 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">Ecrã</translation>
 <translation id="3441663102605358937">Inicie sessão na sua conta <ph name="ACCOUNT" /> novamente para validar esta conta.</translation>
 <translation id="3445047461171030979">Respostas rápidas do Assistente Google</translation>
-<translation id="3445770710327978113">Para voltar aqui rapidamente, instale esta app.</translation>
 <translation id="3445925074670675829">Dispositivo USB-C</translation>
 <translation id="3446274660183028131">Inicie o Parallels Desktop para instalar o Windows.</translation>
 <translation id="344630545793878684">Ler os seus dados em vários Sites</translation>
@@ -2631,7 +2630,6 @@
 <translation id="3955163004258753966">Ocorreu um erro ao iniciar a atualização</translation>
 <translation id="3955193568934677022">Permitir que os sites reproduzam conteúdo protegido (recomendado)</translation>
 <translation id="3955896417885489542">Rever as opções do Google Play após a configuração</translation>
-<translation id="3956702100721821638">Não foi possível aceder ao Google Play.</translation>
 <translation id="3957079323242030166">Os dados da cópia de segurança não são contabilizados para a sua quota do armazenamento do Drive.</translation>
 <translation id="3957844511978444971">Toque em "Aceitar" para confirmar a sua seleção destas definições dos serviços Google.</translation>
 <translation id="3958088479270651626">Importar marcadores e definições</translation>
@@ -7154,7 +7152,6 @@
 <translation id="952992212772159698">Não activado</translation>
 <translation id="956500788634395331">Tem proteção contra extensões potencialmente prejudiciais.</translation>
 <translation id="957960681186851048">Este site tentou transferir vários ficheiros automaticamente</translation>
-<translation id="9580706199804957">Não foi possível estabelecer ligação aos serviços Google.</translation>
 <translation id="958329785990007682">Bloquear JavaScript</translation>
 <translation id="960719561871045870">Código do operador</translation>
 <translation id="960987915827980018">Falta cerca de 1 hora</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index 5ffbf58..e51b9a2 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -2148,7 +2148,6 @@
 <translation id="3441653493275994384">Ecran</translation>
 <translation id="3441663102605358937">Conectează-te din nou la <ph name="ACCOUNT" /> pentru a confirma contul</translation>
 <translation id="3445047461171030979">Răspunsuri rapide de la Asistentul Google</translation>
-<translation id="3445770710327978113">Ca să revii rapid aici, instalează această aplicație</translation>
 <translation id="3445925074670675829">Dispozitiv USB-C</translation>
 <translation id="3446274660183028131">Lansează Parallels Desktop pentru a instala Windows.</translation>
 <translation id="344630545793878684">Citește datele de pe un număr de site-uri</translation>
@@ -2632,7 +2631,6 @@
 <translation id="3955163004258753966">Eroare la începerea upgrade-ului</translation>
 <translation id="3955193568934677022">Permite site-urilor să redea conținutul protejat (recomandat)</translation>
 <translation id="3955896417885489542">Examinează opțiunile Google Play după configurare</translation>
-<translation id="3956702100721821638">Google Play nu a putut fi accesat</translation>
 <translation id="3957079323242030166">Datele cărora li s-a făcut backup nu sunt luate în considerare la calcularea cotei de stocare Drive.</translation>
 <translation id="3957844511978444971">Atinge „Acceptă” ca să confirmi selectarea acestor setări pentru serviciile Google.</translation>
 <translation id="3958088479270651626">Importați marcaje și setări</translation>
@@ -7156,7 +7154,6 @@
 <translation id="952992212772159698">Neactivat</translation>
 <translation id="956500788634395331">Beneficiezi de protecție împotriva extensiilor potențial dăunătoare</translation>
 <translation id="957960681186851048">Acest site a încercat să descarce automat mai multe fișiere</translation>
-<translation id="9580706199804957">Nu s-a putut conecta la serviciile Google</translation>
 <translation id="958329785990007682">Blochează JavaScript</translation>
 <translation id="960719561871045870">Cod operator</translation>
 <translation id="960987915827980018">A mai rămas aproape 1 oră</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index c295111..0ee3c21 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -2143,7 +2143,6 @@
 <translation id="3441653493275994384">Экран</translation>
 <translation id="3441663102605358937">Войдите в аккаунт <ph name="ACCOUNT" /> ещё раз, чтобы подтвердить его</translation>
 <translation id="3445047461171030979">Быстрые ответы Google Ассистента</translation>
-<translation id="3445770710327978113">Чтобы быстро возвращаться к этой странице, установите приложение</translation>
 <translation id="3445925074670675829">Устройство USB-C</translation>
 <translation id="3446274660183028131">Чтобы установить Windows, запустите Parallels Desktop.</translation>
 <translation id="344630545793878684">Просмотр данных на нескольких сайтах</translation>
@@ -2624,7 +2623,6 @@
 <translation id="3955163004258753966">Не удалось начать обновление</translation>
 <translation id="3955193568934677022">Разрешить сайтам воспроизводить защищенный контент (рекомендуется)</translation>
 <translation id="3955896417885489542">Посмотреть параметры Google Play после настройки</translation>
-<translation id="3956702100721821638">Не удалось подключиться к Google Play</translation>
 <translation id="3957079323242030166">Резервные копии не занимают места на Google Диске.</translation>
 <translation id="3957844511978444971">Нажмите "Принять", чтобы подтвердить правильность настроек, выбранных в сервисах Google.</translation>
 <translation id="3958088479270651626">Импорт закладок и настроек</translation>
@@ -3957,7 +3955,7 @@
     <ph name="BEGIN_PARAGRAPH2" />Отключение этой функции не повлияет на возможность устройства отправлять информацию, необходимую для обновления Android и системы безопасности.<ph name="END_PARAGRAPH2" />
     <ph name="BEGIN_PARAGRAPH3" />Чтобы включить или отключить функцию, нажмите "Настройки &gt; Расширенные настройки &gt; Автоматически отправлять статистику использования и данные диагностики в Google".<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Если включена запись истории приложений и веб-поиска, эта информация будет сохраняться в аккаунте Google. Вы можете посмотреть и удалить ее, а также изменить настройки аккаунта на странице account.google.com.<ph name="END_PARAGRAPH4" /></translation>
-<translation id="5585019845078534178">Подсказки</translation>
+<translation id="5585019845078534178">Карточки</translation>
 <translation id="5585118885427931890">Не удалось создать папку с закладками.</translation>
 <translation id="558563010977877295">Заданные страницы</translation>
 <translation id="5585898376467608182">На устройстве осталось мало места. Чтобы использовать приложение "<ph name="APP_NAME" />", нужно как минимум <ph name="MINIMUM_SPACE" /> свободного пространства. Удалите с устройства файлы, которые больше не нужны.</translation>
@@ -7135,7 +7133,6 @@
 <translation id="952992212772159698">Не активировано</translation>
 <translation id="956500788634395331">Включена защита от потенциально опасных расширений.</translation>
 <translation id="957960681186851048">Этот сайт попытался автоматически скачать несколько файлов</translation>
-<translation id="9580706199804957">Не удалось подключиться к сервисам Google</translation>
 <translation id="958329785990007682">Блокировать JavaScript</translation>
 <translation id="960719561871045870">Код оператора</translation>
 <translation id="960987915827980018">Осталось около часа</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb
index 1b273a6..f753b03 100644
--- a/chrome/app/resources/generated_resources_si.xtb
+++ b/chrome/app/resources/generated_resources_si.xtb
@@ -2145,7 +2145,6 @@
 <translation id="3441653493275994384">තිරය</translation>
 <translation id="3441663102605358937">මෙම ගිණුම සත්‍යාපනය කිරීමට <ph name="ACCOUNT" /> වෙත නැවත පුරන්න</translation>
 <translation id="3445047461171030979">Google සහකරු ක්‍ෂණික පිළිතුරු</translation>
-<translation id="3445770710327978113">ඉක්මනින් නැවත ආපසු මෙහි පැමිණීමට, මෙම යෙදුම ස්ථාපනය කරන්න</translation>
 <translation id="3445925074670675829">USB-C උපාංගය</translation>
 <translation id="3446274660183028131">Windows ස්ථාපනය කිරීමට කරුණාකර Parallels Desktop දියත් කරන්න.</translation>
 <translation id="344630545793878684">වෙබ අඩවි විශාල ගණනක ඔබගේ දත්ත කියවන්න</translation>
@@ -2630,7 +2629,6 @@
 <translation id="3955163004258753966">උත්ශ්‍රේණිය ආරම්භ කිරීමේ දෝෂයයි</translation>
 <translation id="3955193568934677022">අඩවිවලට ආරක්ෂිත අන්තර්ගතය වාදනය කිරීමට ඉඩ දෙන්න (නිර්දේශිතයි)</translation>
 <translation id="3955896417885489542">Google Play විකල්ප අනුගමන සැකසීම සමාලෝචන කරන්න</translation>
-<translation id="3956702100721821638">Google Play වෙත ළඟා විය නොහැකිය</translation>
 <translation id="3957079323242030166">උපස්ථ කළ දත්ත ඔබගේ Drive ආචයන පංගුවට ගණන් කරනු නොලැබේ.</translation>
 <translation id="3957844511978444971">මෙම Google සේවා සැකසීම්වල ඔබේ තේරීම තහවුරු කිරීමට “පිළිගන්න” තට්ටු කරන්න.</translation>
 <translation id="3958088479270651626">පිටුසන් සහ සැකසුම් ආයාත කරන්න</translation>
@@ -7150,7 +7148,6 @@
 <translation id="952992212772159698">සක්‍රීය කර නොමැත</translation>
 <translation id="956500788634395331">හානිකර විය හැකි දිගුවලින් ඔබ ආරක්‍ෂා කෙරේ</translation>
 <translation id="957960681186851048">මෙම අඩවිය ගොනු කිහිපයක් ස්වයංක්‍රීයව බාගැනීමට උත්සාහ කළේය</translation>
-<translation id="9580706199804957">Google සේවාවන් සමඟ සම්බන්ධ විය නොහැක</translation>
 <translation id="958329785990007682">ජාවාස්ක්‍රිප්ට් අවහිර කරන්න</translation>
 <translation id="960719561871045870">වාහක කේතය</translation>
 <translation id="960987915827980018">පැය 1ක් පමණ ඉතිරියි</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 756f8c9..8851cd19 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -2148,7 +2148,6 @@
 <translation id="3441653493275994384">Obrazovka</translation>
 <translation id="3441663102605358937">Prihláste sa znova do účtu <ph name="ACCOUNT" />, čím ho overíte</translation>
 <translation id="3445047461171030979">Rýchle odpovede Asistenta Google</translation>
-<translation id="3445770710327978113">Ak sa sem chcete rýchlo vrátiť, nainštalujte si túto aplikáciu</translation>
 <translation id="3445925074670675829">Zariadenie USB-C</translation>
 <translation id="3446274660183028131">Spustite Parallels Desktop a nainštalujte tak Windows.</translation>
 <translation id="344630545793878684">Čítať vaše údaje na viacerých webových stránkach</translation>
@@ -2632,7 +2631,6 @@
 <translation id="3955163004258753966">Chyba spustenia inovácie</translation>
 <translation id="3955193568934677022">Povoliť webom prehrávať chránený obsah (odporúčané)</translation>
 <translation id="3955896417885489542">Po nastavení skontrolujte možnosti služby Google Play</translation>
-<translation id="3956702100721821638">K službe Google Play sa nepodarilo pripojiť</translation>
 <translation id="3957079323242030166">Zálohované údaje sa nezapočítavajú do kvóty priestoru na Disku.</translation>
 <translation id="3957844511978444971">Klepnutím na položku Prijať potvrdzujete svoj výber týchto nastavení služieb Googlu.</translation>
 <translation id="3958088479270651626">Importovať záložky a nastavenia</translation>
@@ -7156,7 +7154,6 @@
 <translation id="952992212772159698">Neaktivované</translation>
 <translation id="956500788634395331">Je aktivovaná ochrana pred potenciálne škodlivými rozšíreniami</translation>
 <translation id="957960681186851048">Tento web sa pokúsil automaticky stiahnuť viacero súborov</translation>
-<translation id="9580706199804957">Nepodarilo sa pripojiť k službám Google</translation>
 <translation id="958329785990007682">Blokovať JavaScript</translation>
 <translation id="960719561871045870">Kód operátora</translation>
 <translation id="960987915827980018">Zostáva približne 1 hodina</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index c711c7a..18d5813 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">Ni omrežij</translation>
 <translation id="1056898198331236512">Opozorilo</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Vnesite novo kodo PIN. Koda PIN mora biti dolga vsaj en znak in lahko vsebuje črke, števke in druge znake.}one{Vnesite novo kodo PIN. Koda PIN mora biti dolga vsaj # znak in lahko vsebuje črke, števke in druge znake.}two{Vnesite novo kodo PIN. Koda PIN mora biti dolga vsaj # znaka in lahko vsebuje črke, števke in druge znake.}few{Vnesite novo kodo PIN. Koda PIN mora biti dolga vsaj # znake in lahko vsebuje črke, števke in druge znake.}other{Vnesite novo kodo PIN. Koda PIN mora biti dolga vsaj # znakov in lahko vsebuje črke, števke in druge znake.}}</translation>
 <translation id="1059944192885972544">Najdeno je bilo toliko zavihkov za »<ph name="SEARCH_TEXT" />«: <ph name="NUM" />.</translation>
 <translation id="1060292118287751956">Določi hitrost osveževanja zaslona</translation>
 <translation id="1061904396131502319">Skoraj je že čas za odmor</translation>
@@ -639,9 +640,11 @@
 <translation id="1688935057616748272">Vnesite črko</translation>
 <translation id="168991973552362966">Dodajanje tiskalnika v bližini</translation>
 <translation id="1689945336726856614">Kopiranje &amp;URL-ja</translation>
+<translation id="1690248886740053041">Ni se mogoče povezati z mobilnim omrežjem. Za tehnično podporo se obrnite na operaterja.</translation>
 <translation id="1692115862433274081">Uporaba drugega računa</translation>
 <translation id="1692118695553449118">Sinhroniziranje je vklopljeno</translation>
 <translation id="1692210323591458290">Temno vijolična</translation>
+<translation id="169279809881363536">Odkrit ni bil noben profil. Če želite nastaviti novo omrežje, optično preberite kodo QR s fotoaparatom naprave ali vnesite kodo za aktiviranje, ki jo zagotovi operater.</translation>
 <translation id="1697150536837697295">Umetnost</translation>
 <translation id="1697686431566694143">Uredi datoteko</translation>
 <translation id="1698122934742150150">Samo za trenutno sejo brez beleženja zgodovine</translation>
@@ -1578,6 +1581,7 @@
 <translation id="2770465223704140727">Odstrani s seznama</translation>
 <translation id="2770690685823456775">Izvozite gesla v drugo mapo</translation>
 <translation id="2770929488047004208">Ločljivost monitorja</translation>
+<translation id="2770954829020464827">Med deljenjem zaslona so podrobnosti skrite.</translation>
 <translation id="2771268254788431918">Prenos podatkov v mobilnem omrežju je aktiviran</translation>
 <translation id="2771816809568414714">Sir</translation>
 <translation id="2772936498786524345">Neopazni</translation>
@@ -1946,6 +1950,7 @@
 <translation id="3201422919974259695">Razpoložljive naprave USB bodo prikazane tukaj.</translation>
 <translation id="3202131003361292969">Pot</translation>
 <translation id="3202173864863109533">Zvok tega zavihka je izklopljen.</translation>
+<translation id="3202218848974251205">Peskovnik za zasebnost</translation>
 <translation id="3208321278970793882">Aplikacija</translation>
 <translation id="3208584281581115441">Preveri</translation>
 <translation id="3208703785962634733">Nepotrjeno</translation>
@@ -2145,7 +2150,6 @@
 <translation id="3441653493275994384">Zaslon</translation>
 <translation id="3441663102605358937">Znova se prijavite v <ph name="ACCOUNT" />, če želite preveriti ta račun.</translation>
 <translation id="3445047461171030979">Hitri odgovori v Pomočniku Google</translation>
-<translation id="3445770710327978113">Če se želite hitro vrniti sem, namestite to aplikacijo</translation>
 <translation id="3445925074670675829">Naprava USB-C</translation>
 <translation id="3446274660183028131">Zaženite program Parallels Desktop, če želite namestiti sistem Windows.</translation>
 <translation id="344630545793878684">Branje vaših podatkov na več spletnih mestih</translation>
@@ -2166,6 +2170,7 @@
 <translation id="3459697287128633276">Če želite računu omogočiti dostop do Trgovine Google Play, morate preveriti pristnost s ponudnikom identitete.</translation>
 <translation id="3462311546193741693">Odjavi vas iz večine spletnih mest. Ostali boste prijavljeni v Google Račun, da bo mogoče izbrisati sinhronizirane podatke.</translation>
 <translation id="3462413494201477527">Želite preklicati nastavitev računa?</translation>
+<translation id="3464145797867108663">Dodaj delovni profil</translation>
 <translation id="346431825526753">To je račun za otroke, ki ga upravlja <ph name="CUSTODIAN_EMAIL" />.</translation>
 <translation id="3468298837301810372">Oznaka</translation>
 <translation id="3468999815377931311">Telefon Android</translation>
@@ -2287,6 +2292,7 @@
 <translation id="360180734785106144">Ponujanje novih funkcij, ko so na voljo</translation>
 <translation id="3602290021589620013">Predogled</translation>
 <translation id="3603622770190368340">Prejemanje omrežnega potrdila</translation>
+<translation id="3604193429970465812">Sekundarni računi</translation>
 <translation id="3604713164406837697">Sprememba ozadja</translation>
 <translation id="3605780360466892872">Srajca</translation>
 <translation id="3608576286259426129">Predogled slike uporabnika</translation>
@@ -2611,6 +2617,7 @@
 
   Ali želite zagnati <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation>
 <translation id="394183848452296464">Bližnjice ni mogoče ustvariti</translation>
+<translation id="3943494825379372497">Želite obnoviti aplikacije in strani?</translation>
 <translation id="3943582379552582368">&amp;Nazaj</translation>
 <translation id="3943857333388298514">Prilepi</translation>
 <translation id="3948116654032448504">&amp;Išči sliko tu: <ph name="SEARCH_ENGINE" /></translation>
@@ -2626,7 +2633,6 @@
 <translation id="3955163004258753966">Napaka pri začetku nadgradnje</translation>
 <translation id="3955193568934677022">Dovoli spletnim mestom predvajanje zaščitene vsebine (priporočeno)</translation>
 <translation id="3955896417885489542">Po nastavitvi si želim ogledati možnosti za Google Play</translation>
-<translation id="3956702100721821638">Googla Play ni bilo mogoče doseči</translation>
 <translation id="3957079323242030166">Varnostno kopirani podatki se ne štejejo v omejitev prostora za shranjevanje v Googlu Drive.</translation>
 <translation id="3957844511978444971">Dotaknite se gumba »Sprejmem«, da potrdite izbiro teh nastavitev za Googlove storitve.</translation>
 <translation id="3958088479270651626">Uvoz zaznamkov in nastavitev</translation>
@@ -2696,6 +2702,7 @@
 <translation id="4046013316139505482">Tem razširitve si ni treba ogledati podatkov na tem spletnem mestu in jih spreminjati.</translation>
 <translation id="4046123991198612571">Naslednja skladba</translation>
 <translation id="4047726037116394521">Na začetni zaslon</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{# stik ni na voljo. Če želite s tem stikom uporabljati funkcijo Deljenje v bližini, mu dodajte e-poštni naslov, povezan z njegovim računom Google.}one{# stik ni na voljo. Če želite s temi stiki uporabljati funkcijo Deljenje v bližini, jim dodajte e-poštni naslov, povezan z njihovimi računi Google.}two{# stika nista na voljo. Če želite s temi stiki uporabljati funkcijo Deljenje v bližini, jim dodajte e-poštni naslov, povezan z njihovimi računi Google.}few{# stiki niso na voljo. Če želite s temi stiki uporabljati funkcijo Deljenje v bližini, jim dodajte e-poštni naslov, povezan z njihovimi računi Google.}other{# stikov ni na voljo. Če želite s temi stiki uporabljati funkcijo Deljenje v bližini, jim dodajte e-poštni naslov, povezan z njihovimi računi Google.}}</translation>
 <translation id="4050225813016893843">Način preverjanja pristnosti</translation>
 <translation id="4052120076834320548">Drobna</translation>
 <translation id="4056908315660577142">Dosegel(-la) si časovno omejitev, ki jo je starš nastavil za aplikacijo <ph name="APP_NAME" /> za Chrome. Jutri jo lahko uporabljaš <ph name="TIME_LIMIT" />.</translation>
@@ -3342,6 +3349,7 @@
 <translation id="4863769717153320198">Videti je <ph name="WIDTH" /> x <ph name="HEIGHT" /> (privzeta)</translation>
 <translation id="4864369630010738180">Prijavljanje ...</translation>
 <translation id="4864805589453749318">Izberite starša, ki odobrava dovoljenje za dodajanje šolskega računa.</translation>
+<translation id="4866265760644917470">Profil je uspešno dodan.</translation>
 <translation id="486635084936119914">Samodejno odpiranje nekaterih vrst datotek po prenosu</translation>
 <translation id="48704129375571883">Dodajanje dodatnih funkcij</translation>
 <translation id="4870758487381879312">Vnesite geslo, ki ga je priskrbel skrbnik, da pridobite podatke o konfiguraciji</translation>
@@ -3625,6 +3633,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{Ogroženo geslo je bilo uspešno spremenjeno. Imate še # ogroženo geslo. Chrome priporoča, da preverite to geslo.}one{Ogroženo geslo je bilo uspešno spremenjeno. Imate še # ogroženo geslo. Chrome priporoča, da preverite ta gesla.}two{Ogroženo geslo je bilo uspešno spremenjeno. Imate še # ogroženi gesli. Chrome priporoča, da preverite ta gesla.}few{Ogroženo geslo je bilo uspešno spremenjeno. Imate še # ogrožena gesla. Chrome priporoča, da preverite ta gesla.}other{Ogroženo geslo je bilo uspešno spremenjeno. Imate še # ogroženih gesel. Chrome priporoča, da preverite ta gesla.}}</translation>
 <translation id="5207949376430453814">Označitev kazalke v besedilu</translation>
 <translation id="5209320130288484488">Najti ni mogoče nobene naprave</translation>
+<translation id="5209572028385096813">Tega uporabnika upravlja Family Link</translation>
 <translation id="5210365745912300556">Zapri zavihek</translation>
 <translation id="5213481667492808996">Podatkovno storitev omrežja »<ph name="NAME" />« lahko začnete uporabljati</translation>
 <translation id="5213891612754844763">Prikaži nastavitve strežnika proxy</translation>
@@ -3710,6 +3719,7 @@
 <translation id="5302048478445481009">Jezik</translation>
 <translation id="5302932258331363306">Prikaz zamenjav</translation>
 <translation id="5304276686222516262">Seznama stikov ni bilo mogoče prenesti. Preverite omrežno povezavo ali &lt;a href="#" id="tryAgainLink"&gt;poskusite znova&lt;/a&gt;.</translation>
+<translation id="5305145881844743843">Ta račun upravlja: <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation>
 <translation id="5305688511332277257">Ni nameščenih</translation>
 <translation id="5307030433605830021">Vir ni podprt</translation>
 <translation id="5308380583665731573">Povezovanje</translation>
@@ -4093,6 +4103,7 @@
 <translation id="5740820643029013514">Uporaba tišjega pošiljanja sporočil (priporočljivo)</translation>
 <translation id="574104302965107104">Zrcaljenje zaslona</translation>
 <translation id="574209121243317957">Višina tona</translation>
+<translation id="5742505912938664543">Če tukaj dodate sekundarni način, lahko s tem računom brskate po spletu, prenašate aplikacije, preverjate Gmail in druge Googlove storitve.</translation>
 <translation id="5746169159649715125">Shrani kot PDF</translation>
 <translation id="5747552184818312860">Poteče</translation>
 <translation id="5747785204778348146">Razvijalska različica – ni stabilna</translation>
@@ -4433,6 +4444,7 @@
 <translation id="6129953537138746214">Presledek</translation>
 <translation id="6130692320435119637">Dodaj Wi-Fi</translation>
 <translation id="6136114942382973861">Zapri vrstico za prenose</translation>
+<translation id="6136287496450963112">Vaš varnostni ključ ni zaščiten s kodo PIN. Če želite upravljati prstne odtise, naprej ustvarite kodo PIN.</translation>
 <translation id="6137767437444130246">Uporabniško potrdilo</translation>
 <translation id="6138680304137685902">Podpis X9.62 ECDSA z algoritmom SHA-384</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ni omrežja</translation>
@@ -4613,6 +4625,7 @@
 <translation id="6331566915566907158">Pomagajte izboljšati funkcije sistema Chrome OS in njegovo delovanje</translation>
 <translation id="6331818708794917058">Spletna mesta lahko zahtevajo vzpostavitev povezave z napravami MIDI</translation>
 <translation id="6333064448949140209">Datoteka bo poslana Googlu zaradi odpravljanja napak</translation>
+<translation id="6334444530352320327">Vaše aplikacije in nastavitve operacijskega sistema se bodo sinhronizirale v Chromebookih, v katerih ste prijavljeni s tem računom.<ph name="LINK_BEGIN" />Nastavitve sinhronizacije<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">Vsa spletna mesta vam lahko prikazujejo kakršne koli oglase</translation>
 <translation id="6339668969738228384">Ustvarjanje novega profila za uporabnika <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="6340017061976355871">Ni se bilo mogoče povezati s strežnikom. Preverite omrežno povezavo in poskusite znova. Če težave ne odpravite, znova zaženite Chromebook.</translation>
@@ -4914,6 +4927,7 @@
 <translation id="6709133671862442373">Novice</translation>
 <translation id="6709357832553498500">Povezava z uporabo razširitve <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Prejšnji</translation>
+<translation id="6713233729292711163">Dodaj delovni profil</translation>
 <translation id="6715803357256707211">Med namestitvijo aplikacije za Linux je prišlo do napake. Za podrobnosti kliknite obvestilo.</translation>
 <translation id="671619610707606484">S tem boste izbrisali <ph name="TOTAL_USAGE" /> podatkov, ki so jih shranila spletna mesta.</translation>
 <translation id="671928215901716392">Zakleni zaslon</translation>
@@ -5282,6 +5296,7 @@
 <translation id="7121362699166175603">Izbriše zgodovino in samodokončanja v naslovni vrstici. V Google Računu so morda druge vrste zgodovine brskanja na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="7121438501124788993">Način za razvijalce</translation>
 <translation id="7121728544325372695">Pametni pomišljaji</translation>
+<translation id="7122353087820324370">Aplikacije in nastavitve operacijskega sistema se ne sinhronizirajo s sekundarnimi računi.</translation>
 <translation id="7123030151043029868">Dovoljen je samodejni prenos več datotek</translation>
 <translation id="7123360114020465152">Ni več podprto</translation>
 <translation id="7125148293026877011">Izbris Crostinija</translation>
@@ -5597,6 +5612,7 @@
 <translation id="750509436279396091">Odpiranje mape s prenosi</translation>
 <translation id="7506093026325926984">To geslo bo shranjeno v tej napravi</translation>
 <translation id="7506130076368211615">Nastavitev novega omrežja</translation>
+<translation id="7506242536428928412">Če želite uporabljati novi varnostni ključ, nastavite novo kodo PIN.</translation>
 <translation id="7506541170099744506">Naprava <ph name="DEVICE_TYPE" /> je bila uspešno prijavljena za upravljanje v podjetju.</translation>
 <translation id="7507207699631365376">Oglejte si <ph name="BEGIN_LINK" />pravilnik o zasebnosti<ph name="END_LINK" /> tega ponudnika</translation>
 <translation id="7507930499305566459">Potrdilo odzivnika stanja</translation>
@@ -5760,6 +5776,7 @@
 <translation id="7691077781194517083">Tega varnostnega ključa ni mogoče ponastaviti. Napaka <ph name="ERROR_CODE" />.</translation>
 <translation id="7691698019618282776">Nadgradnja Crostinija</translation>
 <translation id="7696063401938172191">V telefonu »<ph name="PHONE_NAME" />«:</translation>
+<translation id="7697166915480294040">Med deljenjem zaslona so podrobnosti skrite.</translation>
 <translation id="7697598343108519171">S fotoaparatom optično preberi kodo QR</translation>
 <translation id="7699968112832915395">Računa ni mogoče dodati</translation>
 <translation id="7701040980221191251">Nič</translation>
@@ -6217,6 +6234,8 @@
 <translation id="8184472985242519288">Enotno</translation>
 <translation id="8186609076106987817">Strežnik ni mogel najti datoteke.</translation>
 <translation id="8188389033983459049">Preverite nastavitve naprave in jo vklopite, če želite nadaljevati</translation>
+<translation id="8189306097519446565">Šolski računi</translation>
+<translation id="8189750580333936930">Peskovnik za zasebnost</translation>
 <translation id="8190193592390505034">Vzpostavljanje povezave z <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Upravljajte aplikacije, razširitve in teme</translation>
 <translation id="8195027750202970175">Velikost na disku</translation>
@@ -6911,6 +6930,7 @@
 <translation id="8986362086234534611">Pozabi</translation>
 <translation id="8986494364107987395">Samodejno pošlji statistične podatke o uporabi in poročila o zrušitvah Googlu</translation>
 <translation id="8987927404178983737">Mesec</translation>
+<translation id="8989823300731803443">Nadaljujte, kjer ste končali.</translation>
 <translation id="8990209962746788689">Kode QR ni mogoče ustvariti</translation>
 <translation id="8991520179165052608">Spletno mesto lahko uporablja vaš mikrofon</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{1 element}one{# element}two{# elementa}few{# elementi}other{# elementov}}</translation>
@@ -7140,7 +7160,6 @@
 <translation id="952992212772159698">Ni aktivirano</translation>
 <translation id="956500788634395331">Zaščiteni ste pred morebiti škodljivimi razširitvami</translation>
 <translation id="957960681186851048">Spletno mesto je poskušalo samodejno prenesti več datotek</translation>
-<translation id="9580706199804957">Ni se bilo mogoče povezati z Googlovimi storitvami</translation>
 <translation id="958329785990007682">Blokiranje JavaScripta</translation>
 <translation id="960719561871045870">Koda operaterja</translation>
 <translation id="960987915827980018">Še približno ena ura</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb
index e58482f..786459d 100644
--- a/chrome/app/resources/generated_resources_sq.xtb
+++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -2144,7 +2144,6 @@
 <translation id="3441653493275994384">Ekrani</translation>
 <translation id="3441663102605358937">Identifikohu përsëri në <ph name="ACCOUNT" /> për ta verifikuar këtë llogari</translation>
 <translation id="3445047461171030979">Përgjigjet e shpejta të "Asistentit të Google"</translation>
-<translation id="3445770710327978113">Për t'u kthyer shpejtë këtu, instalo këtë aplikacion</translation>
 <translation id="3445925074670675829">Pajisja USB-C</translation>
 <translation id="3446274660183028131">Hap Parallels Desktop për të instaluar Windows.</translation>
 <translation id="344630545793878684">Lexo të dhënat e tua në një numër sajtesh uebi</translation>
@@ -2628,7 +2627,6 @@
 <translation id="3955163004258753966">Gabim gjatë fillimit të përmirësimit</translation>
 <translation id="3955193568934677022">Lejo që sajtet të luajnë përmbajtje të mbrojtur (rekomandohet)</translation>
 <translation id="3955896417885489542">Rishiko opsionet e Google Play pas konfigurimit</translation>
-<translation id="3956702100721821638">Google Play nuk mund të arrihet</translation>
 <translation id="3957079323242030166">Të dhënat e rezervimit nuk do të llogariten në kuotën e hapësirës sate ruajtëse të "Diskut".</translation>
 <translation id="3957844511978444971">Trokit te “Prano” për të konfirmuar përzgjedhjen tënde për këto cilësime të shërbimeve të Google.</translation>
 <translation id="3958088479270651626">Importo faqeshënuesit dhe cilësimet</translation>
@@ -7148,7 +7146,6 @@
 <translation id="952992212772159698">Nuk është aktivizuar</translation>
 <translation id="956500788634395331">Je i mbrojtur nga shtesat që mund të jenë të dëmshme</translation>
 <translation id="957960681186851048">Ky sajt u përpoq të shkarkonte automatikisht shumë skedarë</translation>
-<translation id="9580706199804957">Nuk mund të lidhej me shërbimet e Google</translation>
 <translation id="958329785990007682">Blloko JavaScript</translation>
 <translation id="960719561871045870">Kodi i operatorit</translation>
 <translation id="960987915827980018">Rreth 1 orë e mbetur</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb
index e5589c6..9d47184 100644
--- a/chrome/app/resources/generated_resources_sr-Latn.xtb
+++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -2146,7 +2146,6 @@
 <translation id="3441653493275994384">Ekran</translation>
 <translation id="3441663102605358937">Ponovo se prijavite na <ph name="ACCOUNT" /> da biste verifikovali ovaj nalog</translation>
 <translation id="3445047461171030979">Brzi odgovori Google pomoćnika</translation>
-<translation id="3445770710327978113">Da biste se ovde brzo vraćali, instalirajte ovu aplikaciju</translation>
 <translation id="3445925074670675829">Uređaj sa USB priključkom tipa C</translation>
 <translation id="3446274660183028131">Pokrenite Parallels Desktop da biste instalirali Windows.</translation>
 <translation id="344630545793878684">Čitanje vaših podataka na više veb-sajtova</translation>
@@ -2630,7 +2629,6 @@
 <translation id="3955163004258753966">Greška pri pokretanju nadogradnje</translation>
 <translation id="3955193568934677022">Dozvoli sajtovima da puštaju zaštićeni sadržaj (preporučeno)</translation>
 <translation id="3955896417885489542">Pregledajte Google Play opcije posle podešavanja</translation>
-<translation id="3956702100721821638">Google Play nije dostupan</translation>
 <translation id="3957079323242030166">Rezervne kopije podataka ne ulaze u kvotu prostora na disku.</translation>
 <translation id="3957844511978444971">Dodirnite „Prihvati“ da biste potvrdili izbor podešavanja ovih Google usluga.</translation>
 <translation id="3958088479270651626">Uvezite obeleživače i podešavanja</translation>
@@ -7156,7 +7154,6 @@
 <translation id="952992212772159698">Nije aktivirano</translation>
 <translation id="956500788634395331">Štitimo vas od potencijalno štetnih dodataka</translation>
 <translation id="957960681186851048">Ovaj sajt je pokušao da automatski preuzme više datoteka</translation>
-<translation id="9580706199804957">Povezivanje sa Google uslugama nije uspelo</translation>
 <translation id="958329785990007682">Blokiraj JavaScript</translation>
 <translation id="960719561871045870">Kôd mobilnog operatera</translation>
 <translation id="960987915827980018">Ostalo je oko sat vremena</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index 935077d..a3377d7 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -2146,7 +2146,6 @@
 <translation id="3441653493275994384">Екран</translation>
 <translation id="3441663102605358937">Поново се пријавите на <ph name="ACCOUNT" /> да бисте верификовали овај налог</translation>
 <translation id="3445047461171030979">Брзи одговори Google помоћника</translation>
-<translation id="3445770710327978113">Да бисте се овде брзо враћали, инсталирајте ову апликацију</translation>
 <translation id="3445925074670675829">Уређај са USB прикључком типа C</translation>
 <translation id="3446274660183028131">Покрените Parallels Desktop да бисте инсталирали Windows.</translation>
 <translation id="344630545793878684">Читање ваших података на више веб-сајтова</translation>
@@ -2630,7 +2629,6 @@
 <translation id="3955163004258753966">Грешка при покретању надоградње</translation>
 <translation id="3955193568934677022">Дозволи сајтовима да пуштају заштићени садржај (препоручено)</translation>
 <translation id="3955896417885489542">Прегледајте Google Play опције после подешавања</translation>
-<translation id="3956702100721821638">Google Play није доступан</translation>
 <translation id="3957079323242030166">Резервне копије података не улазе у квоту простора на диску.</translation>
 <translation id="3957844511978444971">Додирните „Прихвати“ да бисте потврдили избор подешавања ових Google услуга.</translation>
 <translation id="3958088479270651626">Увезите обележиваче и подешавања</translation>
@@ -7156,7 +7154,6 @@
 <translation id="952992212772159698">Није активирано</translation>
 <translation id="956500788634395331">Штитимо вас од потенцијално штетних додатака</translation>
 <translation id="957960681186851048">Овај сајт је покушао да аутоматски преузме више датотека</translation>
-<translation id="9580706199804957">Повезивање са Google услугама није успело</translation>
 <translation id="958329785990007682">Блокирај JavaScript</translation>
 <translation id="960719561871045870">Кôд мобилног оператера</translation>
 <translation id="960987915827980018">Остало је око сат времена</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index 4b4a9fa..92b1694b 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">Skärm</translation>
 <translation id="3441663102605358937">Logga in på <ph name="ACCOUNT" /> igen för att verifiera kontot</translation>
 <translation id="3445047461171030979">Snabba svar från Google Assistent</translation>
-<translation id="3445770710327978113">Installera appen så att du kan komma tillbaka hit snabbt</translation>
 <translation id="3445925074670675829">USB-C-enhet</translation>
 <translation id="3446274660183028131">Starta Parallels Desktop om du vill installera Windows.</translation>
 <translation id="344630545793878684">Läsa din data på ett antal webbplatser</translation>
@@ -2631,7 +2630,6 @@
 <translation id="3955163004258753966">Ett fel uppstod när uppgraderingen skulle startas</translation>
 <translation id="3955193568934677022">Tillåt att skyddat innehåll spelas upp på webbplatser (rekommenderas)</translation>
 <translation id="3955896417885489542">Visa alternativ för Google Play efter konfigureringen</translation>
-<translation id="3956702100721821638">Det gick inte att nå Google Play</translation>
 <translation id="3957079323242030166">Säkerhetskopierad data tar inte upp lagringsutrymme på Drive.</translation>
 <translation id="3957844511978444971">Tryck på Godkänn om du vill bekräfta valet av dessa inställningar för Googles tjänster.</translation>
 <translation id="3958088479270651626">Importera bokmärken och inställningar</translation>
@@ -7154,7 +7152,6 @@
 <translation id="952992212772159698">Inte aktiverat</translation>
 <translation id="956500788634395331">Du är skyddad från tillägg som kan vara skadliga</translation>
 <translation id="957960681186851048">Den här webbplatsen försökte ladda ned flera filer automatiskt</translation>
-<translation id="9580706199804957">Det gick inte att ansluta till Googles tjänster</translation>
 <translation id="958329785990007682">Blockera JavaScript</translation>
 <translation id="960719561871045870">Operatörskod</translation>
 <translation id="960987915827980018">Ca 1 timme kvar</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index 390d0fa..557649d 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -2144,7 +2144,6 @@
 <translation id="3441653493275994384">Skrini</translation>
 <translation id="3441663102605358937">Ingia katika <ph name="ACCOUNT" /> tena ili uthibitishe akaunti hii</translation>
 <translation id="3445047461171030979">Majibu ya haraka ya programu ya Mratibu wa Google</translation>
-<translation id="3445770710327978113">Ili uweze kurudi hapa kwa haraka, sakinisha programu hii</translation>
 <translation id="3445925074670675829">Kifaa cha USB-C</translation>
 <translation id="3446274660183028131">Tafadhali fungua programu ya Parallels Desktop ili usakinishe Windows.</translation>
 <translation id="344630545793878684">Soma data yako kwenye tovuti kadhaa</translation>
@@ -2628,7 +2627,6 @@
 <translation id="3955163004258753966">Hitilafu imetokea wakati wa kupata toleo jipya</translation>
 <translation id="3955193568934677022">Ruhusu tovuti zicheze maudhui yanayolindwa (inapendekezwa)</translation>
 <translation id="3955896417885489542">Kagua chaguo za Google Play baada ya kuweka mipangilio</translation>
-<translation id="3956702100721821638">Imeshindwa kufikia Google Play</translation>
 <translation id="3957079323242030166">Nakala ya data unayohifadhi haiathiri mgawo wako wa Hifadhi ya Google.</translation>
 <translation id="3957844511978444971">Gusa “Kubali” ili uthibitishe chaguo lako la mipangilio hii ya huduma za Google.</translation>
 <translation id="3958088479270651626">Leta alamisho na mipangilio</translation>
@@ -7151,7 +7149,6 @@
 <translation id="952992212772159698">Haijaamilishwa</translation>
 <translation id="956500788634395331">Umelindwa dhidi ya viendelezi ambavyo huenda ni hatari</translation>
 <translation id="957960681186851048">Tovuti hii imejaribu kupakua faili nyingi kiotomatiki</translation>
-<translation id="9580706199804957">Imeshindwa kuunganisha kwenye huduma za Google</translation>
 <translation id="958329785990007682">Zuia JavaScript</translation>
 <translation id="960719561871045870">Msimbo wa mtoa huduma</translation>
 <translation id="960987915827980018">Takriban saa 1 imesalia</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index cbbf802..5f1ac38 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -2142,7 +2142,6 @@
 <translation id="3441653493275994384">பார்</translation>
 <translation id="3441663102605358937">இந்தக் கணக்கைச் சரிபார்க்க, <ph name="ACCOUNT" /> என்ற கணக்கில் மீண்டும் உள்நுழையவும்</translation>
 <translation id="3445047461171030979">Google Assistant விரைவான பதில்கள்</translation>
-<translation id="3445770710327978113">விரைவாக இந்தப் பக்கத்தை அணுக, இந்த ஆப்ஸை நிறுவவும்</translation>
 <translation id="3445925074670675829">USB-C சாதனம்</translation>
 <translation id="3446274660183028131">Windowsஸை நிறுவ, Parallels Desktopபைத் துவக்கவும்.</translation>
 <translation id="344630545793878684">பல இணையதளங்களில் உங்கள் தரவைப் படித்தல்</translation>
@@ -2623,7 +2622,6 @@
 <translation id="3955163004258753966">மேம்பாட்டைத் துவக்குவதில் பிழை</translation>
 <translation id="3955193568934677022">பாதுகாக்கப்பட்ட உள்ளடக்கத்தை இயக்க, தளங்களை அனுமதி (பரிந்துரைக்கப்படுகிறது)</translation>
 <translation id="3955896417885489542">அமைவைத் தொடர்ந்து Google Play விருப்பங்களை மதிப்பாய்வு செய்</translation>
-<translation id="3956702100721821638">Google Playஐத் தொடர்புகொள்ள முடியவில்லை</translation>
 <translation id="3957079323242030166">Drive சேமிப்பக ஒதுக்கீட்டில் காப்புப் பிரதித் தரவு கணக்கிடப்படாது.</translation>
 <translation id="3957844511978444971">இந்த Google சேவைகள் அமைப்புகளைத் தேர்வுசெய்துள்ளதை உறுதிப்படுத்த, “ஏற்கிறேன்” என்பதைத் தட்டவும்.</translation>
 <translation id="3958088479270651626">புக்மார்க்குகளையும் அமைப்புகளையும் இறக்குமதி செய்</translation>
@@ -7133,7 +7131,6 @@
 <translation id="952992212772159698">செயலாக்கப்படவில்லை</translation>
 <translation id="956500788634395331">தீங்கிழைக்க சாத்தியமுள்ள நீட்டிப்புகளில் இருந்து பாதுகாக்கப்படுகிறீர்கள்</translation>
 <translation id="957960681186851048">இந்தத் தளம் பல கோப்புகளைத் தானாகப் பதிவிறக்க முயன்றது</translation>
-<translation id="9580706199804957">Google சேவைகளுடன் இணைக்க முடியவில்லை</translation>
 <translation id="958329785990007682">Javascriptடைத் தடு</translation>
 <translation id="960719561871045870">ஆபரேட்டர் குறியீடு</translation>
 <translation id="960987915827980018">1 மணிநேரம் உள்ளது</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index 5ef591c2..52b7a6f 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -2147,7 +2147,6 @@
 <translation id="3441653493275994384">స్క్రీన్</translation>
 <translation id="3441663102605358937">ఈ ఖాతాను వెరిఫై చేయడానికి, <ph name="ACCOUNT" />కు మళ్లీ సైన్ ఇన్ చేయండి</translation>
 <translation id="3445047461171030979">Google Assistant త్వరిత సమాధానాలు</translation>
-<translation id="3445770710327978113">ఇక్కడకు త్వరగా చేరుకోవడానికి, ఈ యాప్‌ను ఇన్‌స్టాల్ చేయండి</translation>
 <translation id="3445925074670675829">USB-C పరికరం</translation>
 <translation id="3446274660183028131">Windowsను ఇన్‌స్టాల్ చేయడానికి, దయచేసి parallels desktopను ప్రారంభించండి.</translation>
 <translation id="344630545793878684">అనేక వెబ్‌సైట్‌ల్లోని మీ డేటాను చదవండి</translation>
@@ -2631,7 +2630,6 @@
 <translation id="3955163004258753966">అప్‌గ్రేడ్‌ను ప్రారంభించడంలో ఎర్రర్</translation>
 <translation id="3955193568934677022">రక్షిత కంటెంట్‌ను ప్లే చేయడానికి సైట్‌లను అనుమతిస్తుంది (సిఫార్సు చేయబడింది)</translation>
 <translation id="3955896417885489542">సెటప్ తర్వాత Google ఎంపికలను సమీక్షించడానికి చూపు</translation>
-<translation id="3956702100721821638">Google Playని చేరుకోవడం సాధ్యం కాలేదు</translation>
 <translation id="3957079323242030166">బ్యాకప్ డేటా, మీ డిస్క్ స్టోరేజ్ కోటాలో లెక్కించబడదు.</translation>
 <translation id="3957844511978444971">ఈ Google సేవల సెట్టింగ్‌ల విషయంలో మీ ఎంపికను మీరు నిర్ధారిస్తున్నట్లు తెలియజేయడానికి “ఆమోదించు” నొక్కండి.</translation>
 <translation id="3958088479270651626">బుక్‌మార్క్‌లను మరియు సెట్టింగ్‌లను దిగుమతి చేయి</translation>
@@ -7150,7 +7148,6 @@
 <translation id="952992212772159698">సక్రియం చెయ్యబడలేదు</translation>
 <translation id="956500788634395331">మీకు హానికరమైన ఎక్స్‌టెన్షన్‌ల నుండి రక్షణ ఉంది</translation>
 <translation id="957960681186851048">ఈ సైట్ ఆటోమెటిక్‌గా పలు ఫైల్‌లను డౌన్‌లోడ్ చేయడానికి ప్రయత్నించింది</translation>
-<translation id="9580706199804957">Google సేవలకు కనెక్ట్ చేయడం సాధ్యం కాలేదు</translation>
 <translation id="958329785990007682">Javascriptను బ్లాక్ చేయండి</translation>
 <translation id="960719561871045870">ఆపరేటర్ కోడ్</translation>
 <translation id="960987915827980018">సుమారు 1 గంట మిగిలి ఉంది</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index 49e33ab..eda5112 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -2142,7 +2142,6 @@
 <translation id="3441653493275994384">หน้าจอ</translation>
 <translation id="3441663102605358937">ลงชื่อเข้าใช้ <ph name="ACCOUNT" /> อีกครั้งเพื่อยืนยันบัญชีนี้</translation>
 <translation id="3445047461171030979">คำตอบด่วนของ Google Assistant</translation>
-<translation id="3445770710327978113">หากต้องการกลับมาที่นี่อย่างรวดเร็ว ให้ติดตั้งแอปนี้</translation>
 <translation id="3445925074670675829">อุปกรณ์ USB-C</translation>
 <translation id="3446274660183028131">โปรดเปิด Parallels Desktop เพื่อติดตั้ง Windows</translation>
 <translation id="344630545793878684">อ่านข้อมูลบนเว็บไซต์จำนวนมาก</translation>
@@ -2623,7 +2622,6 @@
 <translation id="3955163004258753966">เกิดข้อผิดพลาดขณะเริ่มอัปเกรด</translation>
 <translation id="3955193568934677022">อนุญาตให้เว็บไซต์เล่นเนื้อหาที่ได้รับความคุ้มครอง (แนะนำ)</translation>
 <translation id="3955896417885489542">ตรวจสอบตัวเลือกของ Google Play หลังการตั้งค่า</translation>
-<translation id="3956702100721821638">ไม่สามารถเข้าถึง Google Play</translation>
 <translation id="3957079323242030166">ข้อมูลสำรองจะไม่นับรวมในโควตาพื้นที่เก็บข้อมูล Google ไดรฟ์</translation>
 <translation id="3957844511978444971">แตะ “ยอมรับ” เพื่อยืนยันการเลือกการตั้งค่าบริการของ Google เหล่านี้</translation>
 <translation id="3958088479270651626">นำเข้าบุ๊กมาร์กและการตั้งค่า</translation>
@@ -7132,7 +7130,6 @@
 <translation id="952992212772159698">ไม่ได้เปิดการใช้งาน</translation>
 <translation id="956500788634395331">คุณได้รับการปกป้องจากส่วนขยายที่อาจเป็นอันตราย</translation>
 <translation id="957960681186851048">เว็บไซต์นี้พยายามดาวน์โหลดไฟล์หลายไฟล์โดยอัตโนมัติ</translation>
-<translation id="9580706199804957">ไม่สามารถเชื่อมต่อกับบริการของ Google</translation>
 <translation id="958329785990007682">บล็อก JavaScript</translation>
 <translation id="960719561871045870">รหัสผู้ให้บริการ</translation>
 <translation id="960987915827980018">เหลือเวลาอีกประมาณ 1 ชั่วโมง</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index a0b9bc9..6f352111 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">Ağ yok</translation>
 <translation id="1056898198331236512">Uyarı</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Yeni PIN'inizi girin. PIN en az bir karakter uzunluğunda olmalıdır ve harflerle rakamların yanı sıra diğer karakterleri içerebilir.}other{Yeni PIN'inizi girin. PIN en az # karakter uzunluğunda olmalıdır ve harflerle rakamların yanı sıra diğer karakterleri içerebilir.}}</translation>
 <translation id="1059944192885972544">"<ph name="SEARCH_TEXT" />" İçin <ph name="NUM" /> Sekme Bulundu</translation>
 <translation id="1060292118287751956">Ekranın güncellenme sıklığını belirler</translation>
 <translation id="1061904396131502319">Mola verme zamanı yaklaştı</translation>
@@ -636,9 +637,11 @@
 <translation id="1688935057616748272">Bir harf yazın</translation>
 <translation id="168991973552362966">Yakındaki bir yazıcıyı ekleyin</translation>
 <translation id="1689945336726856614">&amp;URL'yi Kopyala</translation>
+<translation id="1690248886740053041">Mobil ağa bağlanılamadı. Teknik destek almak için lütfen operatörünüzle iletişime geçin.</translation>
 <translation id="1692115862433274081">Başka bir hesap kullan</translation>
 <translation id="1692118695553449118">Senkronizasyon açık.</translation>
 <translation id="1692210323591458290">Koyu mor</translation>
+<translation id="169279809881363536">Hiçbir profil bulunamadı. Yeni bir ağ oluşturmak için cihaz kamerasını kullanarak QR kodunu tarayın veya operatörünüz tarafından sağlanan etkinleştirme kodunu girin.</translation>
 <translation id="1697150536837697295">Sanat</translation>
 <translation id="1697686431566694143">Dosyayı düzenle</translation>
 <translation id="1698122934742150150">Yalnızca geçerli gizli oturum</translation>
@@ -1575,6 +1578,7 @@
 <translation id="2770465223704140727">Listeden kaldır</translation>
 <translation id="2770690685823456775">Şifrelerinizi başka bir klasöre dışa aktarın</translation>
 <translation id="2770929488047004208">Monitör çözünürlüğü</translation>
+<translation id="2770954829020464827">Ekranınızı paylaşırken ayrıntılar gizlenir</translation>
 <translation id="2771268254788431918">Mobil veri etkinleştirildi</translation>
 <translation id="2771816809568414714">Peynir</translation>
 <translation id="2772936498786524345">Ninja</translation>
@@ -1943,6 +1947,7 @@
 <translation id="3201422919974259695">Kullanılabilir USB cihazlar burada görünür.</translation>
 <translation id="3202131003361292969">Yol</translation>
 <translation id="3202173864863109533">Bu sekmenin sesi kapatılıyor.</translation>
+<translation id="3202218848974251205">Privacy Sandbox</translation>
 <translation id="3208321278970793882">Uygulama</translation>
 <translation id="3208584281581115441">Şimdi denetle</translation>
 <translation id="3208703785962634733">Onaylanmayan</translation>
@@ -2142,7 +2147,6 @@
 <translation id="3441653493275994384">Ekran</translation>
 <translation id="3441663102605358937">Bu hesabı doğrulamak için tekrar <ph name="ACCOUNT" /> hesabında oturum açın</translation>
 <translation id="3445047461171030979">Google Asistan hızlı yanıtlar</translation>
-<translation id="3445770710327978113">Buraya hızlı bir şekilde geri dönmek için bu uygulamayı yükleyin</translation>
 <translation id="3445925074670675829">USB-C cihaz</translation>
 <translation id="3446274660183028131">Windows'u yüklemek için Parallels Desktop'u başlatın.</translation>
 <translation id="344630545793878684">Birden fazla web sitesindeki verilerinize erişme</translation>
@@ -2163,6 +2167,7 @@
 <translation id="3459697287128633276">Hesabınızın Google Play Store'a erişmesini sağlamak için lütfen Kimlik Sağlayıcınızı kullanarak kimliğinizi doğrulayın.</translation>
 <translation id="3462311546193741693">Bu işlem, çoğu sitedeki oturumunuzu kapatır. Google Hesabınızda oturumunuz açık kalacağından senkronize edilmiş verileriniz temizlenebilecektir.</translation>
 <translation id="3462413494201477527">Hesap kurulumu iptal edilsin mi?</translation>
+<translation id="3464145797867108663">Çalışma profili ekle</translation>
 <translation id="346431825526753">Bu hesap çocuklar içindir ve <ph name="CUSTODIAN_EMAIL" /> tarafından yönetilmektedir</translation>
 <translation id="3468298837301810372">Etiket</translation>
 <translation id="3468999815377931311">Android telefon</translation>
@@ -2284,6 +2289,7 @@
 <translation id="360180734785106144">Kullanıma sunuldukça yeni özellikleri teklif etme</translation>
 <translation id="3602290021589620013">Önizleme</translation>
 <translation id="3603622770190368340">Ağ sertifikası edinme</translation>
+<translation id="3604193429970465812">İkincil hesaplar</translation>
 <translation id="3604713164406837697">Duvar kağıdını değiştir</translation>
 <translation id="3605780360466892872">İş adamı</translation>
 <translation id="3608576286259426129">Kullanıcı resmi önizlemesi</translation>
@@ -2608,6 +2614,7 @@
 
 <ph name="CONTROL_PANEL_APPLET_NAME" /> aracını başlatmak ister misiniz?</translation>
 <translation id="394183848452296464">Kısayol oluşturulamıyor</translation>
+<translation id="3943494825379372497">Uygulamalar ve sayfalar geri yüklensin mi?</translation>
 <translation id="3943582379552582368">&amp;Geri</translation>
 <translation id="3943857333388298514">Yapıştır</translation>
 <translation id="3948116654032448504"><ph name="SEARCH_ENGINE" /> içinde Resim &amp;ara</translation>
@@ -2623,7 +2630,6 @@
 <translation id="3955163004258753966">Yeni sürüme geçiş işlemi başlatılırken hata oluştu</translation>
 <translation id="3955193568934677022">Sitelerin korumalı içeriği oynatmasına izin ver (önerilir)</translation>
 <translation id="3955896417885489542">Kurulumun ardından Google Play seçeneklerini incele</translation>
-<translation id="3956702100721821638">Google Play'e ulaşılamadı</translation>
 <translation id="3957079323242030166">Yedekleme verileri Drive depolama alanı kotanızdan düşülmez.</translation>
 <translation id="3957844511978444971">Bu Google hizmetleri ayarlarına ait seçiminizi onaylamak için "Kabul et" seçeneğine dokunun.</translation>
 <translation id="3958088479270651626">Yer işaretlerini ve ayarları içe aktar</translation>
@@ -2693,6 +2699,7 @@
 <translation id="4046013316139505482">Bu uzantıların bu sitedeki bilgileri görmesi ve değiştirmesi gerekmiyor.</translation>
 <translation id="4046123991198612571">Sonraki parça</translation>
 <translation id="4047726037116394521">Ana sayfaya git</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{# kişiye bağlanılamıyor. Yakındakilerle Paylaş özelliğini bu kişilerle kullanabilmek için bu kişilerin Google Hesaplarıyla ilişkilendirilmiş e-posta adreslerini kişilerinize ekleyin.}other{# kişiye bağlanılamıyor. Yakındakilerle Paylaş özelliğini bu kişilerle kullanabilmek için bu kişilerin Google Hesaplarıyla ilişkilendirilmiş e-posta adreslerini kişilerinize ekleyin.}}</translation>
 <translation id="4050225813016893843">Kimlik doğrulama yöntemi</translation>
 <translation id="4052120076834320548">Çok küçük</translation>
 <translation id="4056908315660577142">Ebeveyninizin <ph name="APP_NAME" /> Chrome uygulaması için belirlediği süre sınırına ulaştınız. Bu uygulamayı yarın <ph name="TIME_LIMIT" /> kullanabilirsiniz.</translation>
@@ -3339,6 +3346,7 @@
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> şeklinde görünür (Varsayılan)</translation>
 <translation id="4864369630010738180">Oturum açılıyor...</translation>
 <translation id="4864805589453749318">Okul hesabı eklenmesine izin veren ebeveyni seçin.</translation>
+<translation id="4866265760644917470">Profil başarıyla eklendi.</translation>
 <translation id="486635084936119914">Belirli türdeki dosyaları indirildikten sonra otomatik olarak aç</translation>
 <translation id="48704129375571883">İlave özellikler ekle</translation>
 <translation id="4870758487381879312">Yapılandırma bilgilerini almak için yönetici tarafından sağlanan şifreyi girin</translation>
@@ -3622,6 +3630,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{Güvenliği ihlal edilmiş şifre değiştirildi. Güvenliği ihlal edilmiş # şifreniz daha var. Chrome, bu şifreyi hemen kontrol etmenizi öneriyor.}other{Güvenliği ihlal edilmiş şifre değiştirildi. Güvenliği ihlal edilmiş # şifreniz daha var. Chrome, bu şifreleri hemen kontrol etmenizi öneriyor.}}</translation>
 <translation id="5207949376430453814">Metin imlecini vurgula</translation>
 <translation id="5209320130288484488">Cihaz bulunamadı</translation>
+<translation id="5209572028385096813">Bu kullanıcı Family Link tarafından yönetiliyor</translation>
 <translation id="5210365745912300556">Sekmeyi kapat</translation>
 <translation id="5213481667492808996">"<ph name="NAME" />" veri hizmetiniz kullanıma hazır</translation>
 <translation id="5213891612754844763">Proxy ayarlarını göster</translation>
@@ -3707,6 +3716,7 @@
 <translation id="5302048478445481009">Dil</translation>
 <translation id="5302932258331363306">Değişiklikleri Göster</translation>
 <translation id="5304276686222516262">Kişi listesi indirilemedi. Lütfen ağ bağlantınızı kontrol edin veya &lt;a href="#" id="tryAgainLink"&gt;tekrar deneyin&lt;/a&gt;.</translation>
+<translation id="5305145881844743843">Bu hesap <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> tarafından yönetilmektedir</translation>
 <translation id="5305688511332277257">Hiç sertifika yüklenmedi</translation>
 <translation id="5307030433605830021">Kaynak desteklenmiyor</translation>
 <translation id="5308380583665731573">Bağlan</translation>
@@ -4089,6 +4099,7 @@
 <translation id="5740820643029013514">Sessiz mesajlaşmayı kullan (önerilir)</translation>
 <translation id="574104302965107104">Ekran yansıtma</translation>
 <translation id="574209121243317957">Ses Kalınlığı</translation>
+<translation id="5742505912938664543">Buraya ikincil hesap eklediğinizde bu hesabı kullanarak web'e göz atabilir, uygulama indirebilir, Gmail'inizi ve diğer Google hizmetlerini kontrol edebilirsiniz.</translation>
 <translation id="5746169159649715125">PDF olarak kaydet</translation>
 <translation id="5747552184818312860">Süre sonu tarihi</translation>
 <translation id="5747785204778348146">Geliştirici - kararsız</translation>
@@ -4429,6 +4440,7 @@
 <translation id="6129953537138746214">Boşluk</translation>
 <translation id="6130692320435119637">Kablosuz ağ ekle</translation>
 <translation id="6136114942382973861">İndirme çubuğunu kapat</translation>
+<translation id="6136287496450963112">Güvenlik anahtarınız PIN ile korunmuyor. Parmak izlerini yönetmek için önce PIN oluşturun.</translation>
 <translation id="6137767437444130246">Kullanıcı sertifikası</translation>
 <translation id="6138680304137685902">SHA-384 ile X9.62 ECDSA İmzası</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ağ yok</translation>
@@ -4609,6 +4621,7 @@
 <translation id="6331566915566907158">Chrome OS özelliklerini ve performansını iyileştirmeye yardımcı olun</translation>
 <translation id="6331818708794917058">Siteler, MIDI cihazlarına bağlanmak isteyebilir</translation>
 <translation id="6333064448949140209">Dosya, hata ayıklama amacıyla Google'a gönderilecektir</translation>
+<translation id="6334444530352320327">Uygulamalarınız ve OS ayarlarınız bu hesapla oturum açtığınız tüm Chromebook'larda senkronize edilir.<ph name="LINK_BEGIN" />Senkronizasyon Ayarları<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">Tüm siteler her reklamı gösterebilir</translation>
 <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" /> için yeni profil oluştur</translation>
 <translation id="6340017061976355871">Sunucuya bağlanamadı. Lütfen ağ bağlantınızı kontrol edip tekrar deneyin. Sorun devam ederse Chromebook'unuzu yeniden başlatın.</translation>
@@ -4910,6 +4923,7 @@
 <translation id="6709133671862442373">Haberler</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> uzantısını kullanarak bağlan</translation>
 <translation id="6710213216561001401">Önceki</translation>
+<translation id="6713233729292711163">Çalışma Profili ekle</translation>
 <translation id="6715803357256707211">Linux uygulamanızın yüklenmesi sırasında bir hata oluştu. Ayrıntılar için bildirimi tıklayın.</translation>
 <translation id="671619610707606484">Bu işlem, siteler tarafından depolanan <ph name="TOTAL_USAGE" /> veriyi temizleyecek</translation>
 <translation id="671928215901716392">Kilit ekranı</translation>
@@ -5278,6 +5292,7 @@
 <translation id="7121362699166175603">Geçmişi ve adres çubuğundaki otomatik tamamlamaları temizler. Google Hesabınızın <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> adresinde başka biçimlerde tarama geçmişi olabilir.</translation>
 <translation id="7121438501124788993">Geliştirici Modu</translation>
 <translation id="7121728544325372695">Akıllı Kısa Çizgiler</translation>
+<translation id="7122353087820324370">Uygulamalar ve OS ayarları ikincil hesaplarla senkronize edilmez.</translation>
 <translation id="7123030151043029868">Birden fazla dosyayı otomatik olarak indirmesine izin verilen siteler</translation>
 <translation id="7123360114020465152">Artık desteklenmiyor</translation>
 <translation id="7125148293026877011">Crostini'yi sil</translation>
@@ -5593,6 +5608,7 @@
 <translation id="750509436279396091">İndirilenler klasörünü aç</translation>
 <translation id="7506093026325926984">Bu şifre bu cihazda kaydedilecek</translation>
 <translation id="7506130076368211615">Yeni ağ kurun</translation>
+<translation id="7506242536428928412">Yeni güvenlik anahtarınızı kullanmak için yeni bir PIN ayarlayın.</translation>
 <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> cihazınız kurumsal yönetim için başarıyla kaydettirildi.</translation>
 <translation id="7507207699631365376">Bu sağlayıcının <ph name="BEGIN_LINK" />gizlilik politikasına<ph name="END_LINK" /> bakın</translation>
 <translation id="7507930499305566459">Durum Yanıtlayıcı Sertifikası</translation>
@@ -5756,6 +5772,7 @@
 <translation id="7691077781194517083">Bu güvenlik anahtarı sıfırlanamıyor <ph name="ERROR_CODE" /> Hatası.</translation>
 <translation id="7691698019618282776">Crostini'yi yeni sürüme geçir</translation>
 <translation id="7696063401938172191">"<ph name="PHONE_NAME" />" telefonunuzda:</translation>
+<translation id="7697166915480294040">Ekranınızı paylaşırken ayrıntılar gizlenir</translation>
 <translation id="7697598343108519171">QR kodunu taramak için kamerayı kullan</translation>
 <translation id="7699968112832915395">Hesap eklenemiyor</translation>
 <translation id="7701040980221191251">Yok</translation>
@@ -6212,6 +6229,8 @@
 <translation id="8184472985242519288">Tek tip</translation>
 <translation id="8186609076106987817">Sunucu dosyayı bulamadı.</translation>
 <translation id="8188389033983459049">Cihaz ayarlarınızı kontrol edin ve devam etmek için açın</translation>
+<translation id="8189306097519446565">Okul hesapları</translation>
+<translation id="8189750580333936930">Privacy Sandbox</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> ağına bağlanılıyor</translation>
 <translation id="8191230140820435481">Uygulamalarınızı, uzantılarınızı ve temalarınızı yönetme</translation>
 <translation id="8195027750202970175">Diskteki boyut</translation>
@@ -6903,6 +6922,7 @@
 <translation id="8986362086234534611">Unut</translation>
 <translation id="8986494364107987395">Kullanım istatistiklerini ve çökme raporlarını otomatik olarak Google'a gönder</translation>
 <translation id="8987927404178983737">Ay</translation>
+<translation id="8989823300731803443">Kaldığınız yerden devam edin.</translation>
 <translation id="8990209962746788689">QR kodu oluşturulamıyor</translation>
 <translation id="8991520179165052608">Site, mikrofonunuzu kullanabilir</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{1 öğe}other{# öğe}}</translation>
@@ -7132,7 +7152,6 @@
 <translation id="952992212772159698">Etkin değil</translation>
 <translation id="956500788634395331">Zararlı olabilecek uzantılardan korunuyorsunuz</translation>
 <translation id="957960681186851048">Bu site birden fazla dosyayı otomatik olarak indirmeye çalıştı</translation>
-<translation id="9580706199804957">Google hizmetlerine bağlanamadı</translation>
 <translation id="958329785990007682">Javascript'i engelle</translation>
 <translation id="960719561871045870">Operatör kodu</translation>
 <translation id="960987915827980018">Yaklaşık 1 saat kaldı</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index c38fc2e..c910622 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">Немає мереж</translation>
 <translation id="1056898198331236512">Застереження</translation>
 <translation id="1058262162121953039">PUK-код</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Введіть новий PIN-код. Він має містити принаймні один символ і може складатися з літер, чисел та інших символів.}one{Введіть новий PIN-код. Він має містити принаймні # символ і може складатися з літер, чисел та інших символів.}few{Введіть новий PIN-код. Він має містити принаймні # символи й може складатися з літер, чисел та інших символів.}many{Введіть новий PIN-код. Він має містити принаймні # символів і може складатися з літер, чисел та інших символів.}other{Введіть новий PIN-код. Він має містити принаймні # символу й може складатися з літер, чисел та інших символів.}}</translation>
 <translation id="1059944192885972544">Знайдено стільки вкладок за запитом "<ph name="SEARCH_TEXT" />": <ph name="NUM" /></translation>
 <translation id="1060292118287751956">Визначає частоту оновлення екрана</translation>
 <translation id="1061904396131502319">Невдовзі час зробити перерву</translation>
@@ -639,9 +640,11 @@
 <translation id="1688935057616748272">Введіть символ</translation>
 <translation id="168991973552362966">Додати принтер поблизу</translation>
 <translation id="1689945336726856614">Скопіювати &amp;URL-адресу</translation>
+<translation id="1690248886740053041">Не вдалося підключитися до мобільної мережі. Щоб отримати технічну підтримку, зв'яжіться з оператором.</translation>
 <translation id="1692115862433274081">Інший обліковий запис</translation>
 <translation id="1692118695553449118">Синхронізацію ввімкнено</translation>
 <translation id="1692210323591458290">Темно-фіолетовий</translation>
+<translation id="169279809881363536">Профілів не знайдено. Щоб налаштувати нову мережу, відскануйте QR-код камерою пристрою або введіть код активації, який надав оператор.</translation>
 <translation id="1697150536837697295">Мистецтво</translation>
 <translation id="1697686431566694143">Редагувати файл</translation>
 <translation id="1698122934742150150">Лише поточний сеанс анонімного перегляду</translation>
@@ -1578,6 +1581,7 @@
 <translation id="2770465223704140727">Видалити зі списку</translation>
 <translation id="2770690685823456775">Експортуйте паролі в іншу папку</translation>
 <translation id="2770929488047004208">Роздільна здатність монітора</translation>
+<translation id="2770954829020464827">Доки ви показуєте свій екран, деталі сповіщення буде сховано</translation>
 <translation id="2771268254788431918">Мобільне передавання даних активовано</translation>
 <translation id="2771816809568414714">Сир</translation>
 <translation id="2772936498786524345">Ніндзя</translation>
@@ -1946,6 +1950,7 @@
 <translation id="3201422919974259695">Тут з’являться доступні пристрої USB.</translation>
 <translation id="3202131003361292969">Шлях</translation>
 <translation id="3202173864863109533">Звук на цій вкладці вимкнено.</translation>
+<translation id="3202218848974251205">Конфіденційне ізольоване програмне середовище</translation>
 <translation id="3208321278970793882">Додаток</translation>
 <translation id="3208584281581115441">Перевірити</translation>
 <translation id="3208703785962634733">Не підтверджено</translation>
@@ -2145,7 +2150,6 @@
 <translation id="3441653493275994384">Екран</translation>
 <translation id="3441663102605358937">Щоб підтвердити обліковий запис <ph name="ACCOUNT" />, увійдіть у нього ще раз</translation>
 <translation id="3445047461171030979">Швидкі відповіді Google Асистента</translation>
-<translation id="3445770710327978113">Щоб швидко повертатися сюди, установіть додаток</translation>
 <translation id="3445925074670675829">Пристрій із портом USB типу C</translation>
 <translation id="3446274660183028131">Щоб установити Windows, запустіть додаток Parallels Desktop.</translation>
 <translation id="344630545793878684">Переглядати ваші дані на декількох веб-сайтах</translation>
@@ -2166,6 +2170,7 @@
 <translation id="3459697287128633276">Щоб надати своєму обліковому запису доступ до Google Play, автентифікуйтеся за допомогою постачальника ідентифікаторів.</translation>
 <translation id="3462311546193741693">Ви вийдете з більшості сайтів, але не з облікового запису Google. Тому синхронізовані дані можуть бути очищені.</translation>
 <translation id="3462413494201477527">Скасувати створення облікового запису?</translation>
+<translation id="3464145797867108663">Додати робочий профіль</translation>
 <translation id="346431825526753"><ph name="CUSTODIAN_EMAIL" /> керує цим обліковим записом для дітей.</translation>
 <translation id="3468298837301810372">Мітка</translation>
 <translation id="3468999815377931311">Телефон Android</translation>
@@ -2287,6 +2292,7 @@
 <translation id="360180734785106144">Пропонувати нові функції, коли вони з’являються</translation>
 <translation id="3602290021589620013">Попередній перегляд</translation>
 <translation id="3603622770190368340">Отримати сертифікат мережі</translation>
+<translation id="3604193429970465812">Додаткові облікові записи</translation>
 <translation id="3604713164406837697">Змінити фоновий малюнок</translation>
 <translation id="3605780360466892872">Консерватор</translation>
 <translation id="3608576286259426129">Попередній перегляд зображення користувача</translation>
@@ -2611,6 +2617,7 @@
 
   Запустити міні-додаток <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation>
 <translation id="394183848452296464">Не вдається створити ярлик</translation>
+<translation id="3943494825379372497">Відновити додатки та сторінки?</translation>
 <translation id="3943582379552582368">&amp;Назад</translation>
 <translation id="3943857333388298514">Вставити</translation>
 <translation id="3948116654032448504">Шукати зображення в <ph name="SEARCH_ENGINE" /></translation>
@@ -2626,7 +2633,6 @@
 <translation id="3955163004258753966">Помилка запуску оновлення</translation>
 <translation id="3955193568934677022">Дозволити сайтам відтворювати захищений вміст (рекомендується)</translation>
 <translation id="3955896417885489542">Перегляньте параметри Google Play після налаштування</translation>
-<translation id="3956702100721821638">Не вдалося з’єднатися з Google Play</translation>
 <translation id="3957079323242030166">Резервні копії даних не займають простір на Диску.</translation>
 <translation id="3957844511978444971">Натисніть "Прийняти", щоб підтвердити вибір цих налаштувань для сервісів Google.</translation>
 <translation id="3958088479270651626">Імпорт закладок і налаштувань</translation>
@@ -2696,6 +2702,7 @@
 <translation id="4046013316139505482">Зазначені розширення не можуть переглядати та змінювати інформацію на цьому сайті.</translation>
 <translation id="4046123991198612571">Наступна композиція</translation>
 <translation id="4047726037116394521">На головний екран</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{# контакт недоступний. Додайте електронну адресу його облікового запису Google у список контактів, щоб спільно користуватися функцією "Передавання поблизу".}one{# контакт недоступний. Додайте електронні адреси їхніх облікових записів Google у список контактів, щоб спільно користуватися функцією "Передавання поблизу".}few{# контакти недоступні. Додайте електронні адреси їхніх облікових записів Google у список контактів, щоб спільно користуватися функцією "Передавання поблизу".}many{# контактів недоступні. Додайте електронні адреси їхніх облікових записів Google у список контактів, щоб спільно користуватися функцією "Передавання поблизу".}other{# контакта недоступні. Додайте електронні адреси їхніх облікових записів Google у список контактів, щоб спільно користуватися функцією "Передавання поблизу".}}</translation>
 <translation id="4050225813016893843">Спосіб автентифікації</translation>
 <translation id="4052120076834320548">Дуже малий</translation>
 <translation id="4056908315660577142">Досягнено ліміту часу використання, який батьки встановили для додатка <ph name="APP_NAME" /> у Chrome. Завтра ти зможеш користуватися ним <ph name="TIME_LIMIT" />.</translation>
@@ -3342,6 +3349,7 @@
 <translation id="4863769717153320198"><ph name="WIDTH" />x<ph name="HEIGHT" /> (за умовчанням)</translation>
 <translation id="4864369630010738180">Вхід…</translation>
 <translation id="4864805589453749318">Вибери, хто з батьків дозволяє додати обліковий запис навчального закладу.</translation>
+<translation id="4866265760644917470">Профіль додано.</translation>
 <translation id="486635084936119914">Автоматично відкривати певні типи файлів після завантаження</translation>
 <translation id="48704129375571883">Додати більше функцій</translation>
 <translation id="4870758487381879312">Введіть наданий адміністратором пароль, щоб отримати інформацію про налаштування</translation>
@@ -3625,6 +3633,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{Зламаний пароль змінено. У вас є ще # зламаний пароль. Chrome радить негайно перевірити його.}one{Зламаний пароль змінено. У вас є ще # зламаний пароль. Chrome радить негайно перевірити їх.}few{Зламаний пароль змінено. У вас є ще # зламані паролі. Chrome радить негайно перевірити їх.}many{Зламаний пароль змінено. У вас є ще # зламаних паролів. Chrome радить негайно перевірити їх.}other{Зламаний пароль змінено. У вас є ще # зламаного пароля. Chrome радить негайно перевірити їх.}}</translation>
 <translation id="5207949376430453814">Підсвічувати місце введення тексту</translation>
 <translation id="5209320130288484488">Пристрої не знайдено.</translation>
+<translation id="5209572028385096813">Цим користувачем керують через Family Link</translation>
 <translation id="5210365745912300556">Закрити вкладку</translation>
 <translation id="5213481667492808996">Службу передавання даних "<ph name="NAME" />" активовано</translation>
 <translation id="5213891612754844763">Показати налаштування проксі</translation>
@@ -3710,6 +3719,7 @@
 <translation id="5302048478445481009">Мова</translation>
 <translation id="5302932258331363306">Показувати заміни</translation>
 <translation id="5304276686222516262">Не вдалося завантажити список контактів. Перевірте з'єднання або &lt;a href="#" id="tryAgainLink"&gt;повторіть спробу&lt;/a&gt;.</translation>
+<translation id="5305145881844743843">Цим обліковим записом керують через домен <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation>
 <translation id="5305688511332277257">Не встановлено жодного</translation>
 <translation id="5307030433605830021">Джерело не підтримується</translation>
 <translation id="5308380583665731573">Під’єднатися</translation>
@@ -4091,6 +4101,7 @@
 <translation id="5740820643029013514">Використовувати тихий режим для сповіщень (рекомендовано)</translation>
 <translation id="574104302965107104">Дзеркалювання дисплея</translation>
 <translation id="574209121243317957">Тон</translation>
+<translation id="5742505912938664543">Якщо ви додасте тут додатковий обліковий запис, то з його допомогою зможете переглядати сторінки в Інтернеті, завантажувати додатки, перевіряти пошту Gmail і користуватись іншими сервісами Google.</translation>
 <translation id="5746169159649715125">Зберегти у форматі PDF</translation>
 <translation id="5747552184818312860">Діє до</translation>
 <translation id="5747785204778348146">Для розробників (нестабільна)</translation>
@@ -4431,6 +4442,7 @@
 <translation id="6129953537138746214">Пробіл</translation>
 <translation id="6130692320435119637">Додати мережу Wi-Fi</translation>
 <translation id="6136114942382973861">Закрити панель завантажень</translation>
+<translation id="6136287496450963112">Ваш ключ безпеки не захищено PIN-кодом. Щоб керувати відбитками пальців, спершу створіть новий PIN-код.</translation>
 <translation id="6137767437444130246">Сертифікат користувача</translation>
 <translation id="6138680304137685902">Алгоритм ECDSA X9.62 з підписом SHA-384</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, немає мережі</translation>
@@ -4611,6 +4623,7 @@
 <translation id="6331566915566907158">Сприяти покращенню функцій і підвищенню продуктивності ОС Chrome</translation>
 <translation id="6331818708794917058">Сайти можуть запитувати дозвіл на підключення до пристроїв MIDI</translation>
 <translation id="6333064448949140209">Файл буде надіслано в Google для налагодження</translation>
+<translation id="6334444530352320327">Ваші налаштування додатків і ОС синхронізуватимуться на пристроях Chromebook, на яких ви ввійшли в цей обліковий запис.<ph name="LINK_BEGIN" />Синхронізувати налаштування<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">Усі сайти можуть показувати рекламу</translation>
 <translation id="6339668969738228384">Створити новий профіль для облікового запису <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="6340017061976355871">Не вдалося з’єднатись із сервером. Перевірте з’єднання з мережею та повторіть спробу. Якщо проблема не зникне, перезапустіть Chromebook.</translation>
@@ -4912,6 +4925,7 @@
 <translation id="6709133671862442373">Новини</translation>
 <translation id="6709357832553498500">Під’єднатися за допомогою розширення <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Назад</translation>
+<translation id="6713233729292711163">Додати робочий профіль</translation>
 <translation id="6715803357256707211">Під час встановлення додатка Linux сталася помилка. Щоб дізнатися більше, натисніть сповіщення.</translation>
 <translation id="671619610707606484">Буде видалено <ph name="TOTAL_USAGE" /> даних, збережених сайтами</translation>
 <translation id="671928215901716392">Блокування екрана</translation>
@@ -5280,6 +5294,7 @@
 <translation id="7121362699166175603">Видалення історії й варіантів автозавершень в адресному рядку. Історія веб-перегляду може також зберігатися у вашому обліковому записі Google на сторінці <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="7121438501124788993">Режим розробника</translation>
 <translation id="7121728544325372695">Розумні тире</translation>
+<translation id="7122353087820324370">Налаштування додатків і ОС не синхронізуються з додатковими обліковими записами.</translation>
 <translation id="7123030151043029868">Дозволено автоматично завантажувати кілька файлів</translation>
 <translation id="7123360114020465152">Більше не підтримується</translation>
 <translation id="7125148293026877011">Видалити Crostini</translation>
@@ -5595,6 +5610,7 @@
 <translation id="750509436279396091">Відкрити папку завантажень</translation>
 <translation id="7506093026325926984">Цей пароль буде збережно на цьому пристрої</translation>
 <translation id="7506130076368211615">Налаштувати нову мережу</translation>
+<translation id="7506242536428928412">Щоб використовувати новий ключ безпеки, укажіть новий PIN-код</translation>
 <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> зареєстровано для корпоративного керування.</translation>
 <translation id="7507207699631365376">Переглянути <ph name="BEGIN_LINK" />політику конфіденційності<ph name="END_LINK" /> цього постачальника</translation>
 <translation id="7507930499305566459">Сертифікат відповідача статусу</translation>
@@ -5758,6 +5774,7 @@
 <translation id="7691077781194517083">Не вдається скинути цей ключ безпеки. Помилка: <ph name="ERROR_CODE" />.</translation>
 <translation id="7691698019618282776">Оновлення Crostini</translation>
 <translation id="7696063401938172191">На телефоні <ph name="PHONE_NAME" />:</translation>
+<translation id="7697166915480294040">Доки ви показуєте свій екран, деталі сповіщення буде сховано</translation>
 <translation id="7697598343108519171">Зісканувати QR-код за допомогою камери</translation>
 <translation id="7699968112832915395">Не вдається додати обліковий запис</translation>
 <translation id="7701040980221191251">Немає</translation>
@@ -6215,6 +6232,8 @@
 <translation id="8184472985242519288">Однорідний текст</translation>
 <translation id="8186609076106987817">Серверу не вдалося знайти файл.</translation>
 <translation id="8188389033983459049">Щоб продовжити, перегляньте налаштування пристрою й увімкніть Bluetooth</translation>
+<translation id="8189306097519446565">Облікові записи закладу освіти</translation>
+<translation id="8189750580333936930">Конфіденційне ізольоване програмне середовище</translation>
 <translation id="8190193592390505034">З'єднання з <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Керувати вашими програмами, розширеннями та темами</translation>
 <translation id="8195027750202970175">Розмір на диску</translation>
@@ -6909,6 +6928,7 @@
 <translation id="8986362086234534611">Видалити</translation>
 <translation id="8986494364107987395">Автоматично надсилати статистику використання та звіти про аварійне завершення роботи в Google</translation>
 <translation id="8987927404178983737">Місяць</translation>
+<translation id="8989823300731803443">Продовжте з місця зупинки.</translation>
 <translation id="8990209962746788689">Не вдається створити QR-код</translation>
 <translation id="8991520179165052608">Сайт може використовувати мікрофон</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{1 елемента}one{# елемента}few{# елементів}many{# елементів}other{# елемента}}</translation>
@@ -7138,7 +7158,6 @@
 <translation id="952992212772159698">Не активовано</translation>
 <translation id="956500788634395331">Пристрій захищено від потенційно шкідливих розширень</translation>
 <translation id="957960681186851048">Цей сайт намагався автоматично завантажити декілька файлів</translation>
-<translation id="9580706199804957">Не вдалося під’єднатися до служб Google</translation>
 <translation id="958329785990007682">Блокувати JavaScript</translation>
 <translation id="960719561871045870">Код оператора</translation>
 <translation id="960987915827980018">Залишилася приблизно 1 год.</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb
index b5c3b40..0649fd6 100644
--- a/chrome/app/resources/generated_resources_ur.xtb
+++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">نیٹ ورک نہیں</translation>
 <translation id="1056898198331236512">وارننگ</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{‏اپنا نیا PIN درج کریں۔ PIN کم از کم ایک حرف طویل ہونا چاہیے اور اس میں حروف، اعداد اور دیگر کیریکٹرز شامل ہو سکتے ہیں۔}other{‏اپنا نیا PIN درج کریں۔ PIN کم از کم # حروف طویل ہونا چاہیے اور اس میں حروف، اعداد اور دیگر کیریکٹرز شامل ہو سکتے ہیں۔}}</translation>
 <translation id="1059944192885972544">'<ph name="SEARCH_TEXT" />' کیلئے <ph name="NUM" /> ٹیبز ملے</translation>
 <translation id="1060292118287751956">اس فریکوئنسی کا تعین کرتا ہے جسے اسکرین اپ ڈیٹ کرتی ہے</translation>
 <translation id="1061904396131502319">وقفے کا وقت تقریباً ہو گیا ہے</translation>
@@ -637,9 +638,11 @@
 <translation id="1688935057616748272">ایک حرف ٹائپ کریں</translation>
 <translation id="168991973552362966">قریبی پرنٹر شامل کریں</translation>
 <translation id="1689945336726856614">‏URL&amp; کاپی کریں</translation>
+<translation id="1690248886740053041">کسی موبائل نیٹ ورک سے منسلک ہونے سے قاصر۔ تکنیکی سپورٹ کیلئے، براہ کرم اپنے کیریئر سے رابطہ کریں۔</translation>
 <translation id="1692115862433274081">کوئی دوسرا اکاؤنٹ استعمال کریں</translation>
 <translation id="1692118695553449118">مطابقت پذیری آن ہے</translation>
 <translation id="1692210323591458290">گہرا جامنی</translation>
+<translation id="169279809881363536">‏کوئی پروفائل نہیں ملی۔ ایک نیا نیٹ ورک سیٹ اپ کرنے کیلئے، آلے کا کیمرا استعمال کر کے QR کوڈ اسکین کریں یا اپنے کیریئر کے ذریعے فراہم کردہ فعالیت کا کوڈ درج کریں۔</translation>
 <translation id="1697150536837697295">آرٹ</translation>
 <translation id="1697686431566694143">فائل میں ترمیم کریں</translation>
 <translation id="1698122934742150150">صرف موجودہ پوشیدگی سیشن</translation>
@@ -1576,6 +1579,7 @@
 <translation id="2770465223704140727">فہرست سے ہٹائیں</translation>
 <translation id="2770690685823456775">اپنے پاسورڈز کو کسی دوسرے فولڈر میں برآمد کریں</translation>
 <translation id="2770929488047004208">مانیٹر کا ریزولیوشن</translation>
+<translation id="2770954829020464827">آپ کی جانب سے اپنی اسکرین کے اشتراک کے دوران تفصیلات پوشیدہ ہوتی ہیں</translation>
 <translation id="2771268254788431918">موبائل ڈیٹا فعال کر دیا گیا</translation>
 <translation id="2771816809568414714">پنیر</translation>
 <translation id="2772936498786524345">اسنیکی</translation>
@@ -1944,6 +1948,7 @@
 <translation id="3201422919974259695">‏دستیاب USB آلات یہاں ظاہر ہوں گے۔</translation>
 <translation id="3202131003361292969">راستہ</translation>
 <translation id="3202173864863109533">اس ٹیب کی آڈیو خاموش کو کیا جا رہا ہے۔</translation>
+<translation id="3202218848974251205">رازداری سینڈ باکس</translation>
 <translation id="3208321278970793882">ایپ</translation>
 <translation id="3208584281581115441">ابھی چیک کریں</translation>
 <translation id="3208703785962634733">غیر توثیق شدہ</translation>
@@ -2143,7 +2148,6 @@
 <translation id="3441653493275994384">اسکرین</translation>
 <translation id="3441663102605358937">اس اکاؤنٹ کی توثیق کرنے کیلئے <ph name="ACCOUNT" /> میں دوبارہ سائن ان کریں</translation>
 <translation id="3445047461171030979">‏Google اسسٹنٹ کے فوری جوابات</translation>
-<translation id="3445770710327978113">فوری طور پر یہاں واپس آنے کے لئے اس ایپ کو انسٹال کریں</translation>
 <translation id="3445925074670675829">‏USB-C آلہ</translation>
 <translation id="3446274660183028131">‏براہ کرم Windows انسٹال کرنے کیلئے Parallels ڈیسک ٹاپ شروع کریں۔</translation>
 <translation id="344630545793878684">متعدد ویب سائٹس پر اپنا ڈیٹا پڑھیں</translation>
@@ -2164,6 +2168,7 @@
 <translation id="3459697287128633276">‏اپنے اکاؤنٹ کو Google Play اسٹور کی رسائي حاصل کرنے کا اہل بنانے کیلئے براہ کرم اپنے شناخت فراہم کنندہ کے ذریعے توثیق کریں۔</translation>
 <translation id="3462311546193741693">‏ایسا کرنے پر آپ اکثر سائٹس سے سائن آؤٹ ہو جاتے ہیں۔ آپ اپنے Google اکاؤنٹ میں سائن ان رہیں گے تاکہ آپ کے مطابقت پذیر ڈیٹا کو صاف کیا جا سکے۔</translation>
 <translation id="3462413494201477527">اکاؤنٹ سیٹ اپ منسوخ کریں؟</translation>
+<translation id="3464145797867108663">دفتری پروفائل شامل کریں</translation>
 <translation id="346431825526753">یہ <ph name="CUSTODIAN_EMAIL" /> کے زیر انتظام بچوں کیلئے ایک اکاؤنٹ ہے۔</translation>
 <translation id="3468298837301810372">لیبل</translation>
 <translation id="3468999815377931311">‏Android فون</translation>
@@ -2285,6 +2290,7 @@
 <translation id="360180734785106144">نئی خصوصیات کے دستیاب ہوتے ہی انہیں فراہم کریں</translation>
 <translation id="3602290021589620013">پیش منظر</translation>
 <translation id="3603622770190368340">نیٹ ورک سرٹیفیکیٹ حاصل کریں</translation>
+<translation id="3604193429970465812">ثانوی اکاؤنٹس</translation>
 <translation id="3604713164406837697">وال پیپر تبدیل کریں</translation>
 <translation id="3605780360466892872">بٹن ڈاؤن</translation>
 <translation id="3608576286259426129">صارف کی تصویر کا پیش منظر</translation>
@@ -2609,6 +2615,7 @@
 
   کیا آپ <ph name="CONTROL_PANEL_APPLET_NAME" /> کو شروع کرنا چاہیں گے؟</translation>
 <translation id="394183848452296464">شارٹ کٹ نہیں بنایا جا سکتا</translation>
+<translation id="3943494825379372497">ایپس اور صفحات بحال کریں؟</translation>
 <translation id="3943582379552582368">&amp;پیچھے</translation>
 <translation id="3943857333388298514">پیسٹ کریں</translation>
 <translation id="3948116654032448504">تصویر کیلئے <ph name="SEARCH_ENGINE" /> میں &amp;تلاش کریں</translation>
@@ -2624,7 +2631,6 @@
 <translation id="3955163004258753966">اپ گریڈ شروع کرنے میں خرابی</translation>
 <translation id="3955193568934677022">سائٹس کو محفوظ کردہ مواد چلانے کی اجازت دیں (تجویز کردہ)</translation>
 <translation id="3955896417885489542">‏سیٹ اپ کے بعد Google Play کے اختیارات کا جائزہ لیں</translation>
-<translation id="3956702100721821638">‏Google Play تک رسائی حاصل نہیں کی جا سکی</translation>
 <translation id="3957079323242030166">‏بیک اپ ڈیٹا کو آپ کے Drive اسٹوریج کوٹہ میں شمار نہیں کیا جائے گا۔</translation>
 <translation id="3957844511978444971">‏Google سروسز کی ان ترتیبات کے اپنے انتخاب کی توثیق کرنے کے لیے ”قبول کریں“ پر تھپتھپائیں۔</translation>
 <translation id="3958088479270651626">بُک مارکس اور ترتیبات درآمد کریں</translation>
@@ -2694,6 +2700,7 @@
 <translation id="4046013316139505482">ان ایکسٹینشنز کو اس سائٹ پر معلومات دیکھنا اور تبدیل کرنا درکار نہیں ہے۔</translation>
 <translation id="4046123991198612571">اگلا ٹریک</translation>
 <translation id="4047726037116394521">ہوم پر جائیں</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{‏# رابطہ دستیاب نہیں ہے۔ اس کے ساتھ 'قریبی اشتراک' کا استعمال کرنے کیلئے، اس کے Google اکاؤنٹ سے وابستہ ای میل پتے کو اپنے رابطوں میں شامل کریں۔}other{‏# رابطے دستیاب نہیں ہیں۔ ان کے ساتھ 'قریبی اشتراک' کا استعمال کرنے کیلئے، ان کے Google اکاؤنٹس سے وابستہ ای میل پتوں کو اپنے رابطوں میں شامل کریں۔}}</translation>
 <translation id="4050225813016893843">تصدیق کا طریقہ</translation>
 <translation id="4052120076834320548">چھوٹا</translation>
 <translation id="4056908315660577142">‏<ph name="APP_NAME" /> Chrome ایپ کے لیے آپ کے والدین کی سیٹ کی ہوئی آپ کی وقت کی حد پوری ہو گئی۔ اب آپ اسے <ph name="TIME_LIMIT" /> تک کل استعمال کر سکتے ہیں۔</translation>
@@ -3340,6 +3347,7 @@
 <translation id="4863769717153320198">‏<ph name="WIDTH" /> x <ph name="HEIGHT" /> جیسا نظر آتا ہے (ڈیفالٹ)</translation>
 <translation id="4864369630010738180">سائن ان کر رہا ہے…</translation>
 <translation id="4864805589453749318">والدین کو منتخب کریں جو اسکول اکاؤنٹ شامل کرنے کی اجازت دے رہے ہیں۔</translation>
+<translation id="4866265760644917470">پروفائل کامیابی کے ساتھ شامل ہو گئی۔</translation>
 <translation id="486635084936119914">ڈاؤن لوڈ کرنے کے بعد مخصوص فائل کی قسموں کو کھولیں</translation>
 <translation id="48704129375571883">اضافی خصوصیات شامل کریں</translation>
 <translation id="4870758487381879312">کنفیگریشن کی معلومات حاصل کرنے کیلئے منتظم کی طرف سے فراہم کردہ پاس ورڈ درج کریں</translation>
@@ -3623,6 +3631,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{‏متاثرہ پاس ورڈ کو کامیابی کے ساتھ تبدیل کر دیا گیا۔ آپ کے پاس # متاثرہ پاس ورڈ ہے۔ Chrome اس پاس ورڈ کو ابھی چیک کرنے کی تجویز کرتا ہے۔}other{‏متاثرہ پاس ورڈ کو کامیابی کے ساتھ تبدیل کر دیا گیا۔ آپ کے پاس # متاثرہ پاس ورڈز ہیں۔ Chrome ان پاس ورڈز کو ابھی چیک کرنے کی تجویز کرتا ہے۔}}</translation>
 <translation id="5207949376430453814">متن کیرٹ کو نمایاں کریں</translation>
 <translation id="5209320130288484488">کوئی آلات نہیں ملے</translation>
+<translation id="5209572028385096813">‏یہ صارف Family Link کے زیر انتظام ہے</translation>
 <translation id="5210365745912300556">ٹیب بند کریں</translation>
 <translation id="5213481667492808996">آپ کی '<ph name="NAME" />' کی ڈیٹا سروس استعمال کیلئے تیار ہے</translation>
 <translation id="5213891612754844763">پراکسی ترتیبات دکھائيں</translation>
@@ -3708,6 +3717,7 @@
 <translation id="5302048478445481009">زبان</translation>
 <translation id="5302932258331363306">متبادلات دکھائيں</translation>
 <translation id="5304276686222516262">‏رابطے کی فہرست ڈاؤن لوڈ کرنے سے قاصر۔ براہ کرم اپنا نیٹ ورک کنکشن چیک کریں یا &lt;a href="#" id="tryAgainLink"&gt;دوبارہ کوشش کریں&lt;/a&gt;۔</translation>
+<translation id="5305145881844743843">یہ اکاؤنٹ <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> کے زیر انتظام ہے</translation>
 <translation id="5305688511332277257">کوئی بھی انسٹال نہیں ہے</translation>
 <translation id="5307030433605830021">ماخذ تعاون یافتہ نہیں ہے</translation>
 <translation id="5308380583665731573">منسلک کریں</translation>
@@ -4088,6 +4098,7 @@
 <translation id="5740820643029013514">پرسکون پیغام رسانی کا استعمال کریں (تجویز کردہ)</translation>
 <translation id="574104302965107104">مررنگ ڈسپلے کریں</translation>
 <translation id="574209121243317957">پچ</translation>
+<translation id="5742505912938664543">‏آپ کے یہاں ثانوی اکاؤنٹ شامل کرنے پر، آپ اس اکاؤنٹ کا استعمال کر کے ویب براؤز کر سکتے ہیں، ایپس ڈاؤن لوڈ کر سکتے ہیں اور اپنی Gmail اور دیگر Google سروسز چیک کر سکتے ہیں۔</translation>
 <translation id="5746169159649715125">‏PDF کے بطور محفوظ کریں</translation>
 <translation id="5747552184818312860">میعاد کا اختتام</translation>
 <translation id="5747785204778348146">ڈویلپر - ناپائیدار</translation>
@@ -4428,6 +4439,7 @@
 <translation id="6129953537138746214">اسپیس</translation>
 <translation id="6130692320435119637">‏Wi-Fi شامل کریں</translation>
 <translation id="6136114942382973861">ڈاؤن لوڈز بار بند کریں</translation>
+<translation id="6136287496450963112">‏آپ کی سیکیورٹی کلید PIN کے ذریعے محفوظ نہیں ہے۔ فنگر پرنٹس کا نظم کرنے کیلئے، پہلے ایک PIN تخلیق کریں۔</translation>
 <translation id="6137767437444130246">صارف کا سرٹیفیکیٹ</translation>
 <translation id="6138680304137685902">‏SHA-384 کے ساتھ X9.62 ECDSA دستخط</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />، کوئی نیٹ ورک نہیں</translation>
@@ -4608,6 +4620,7 @@
 <translation id="6331566915566907158">‏Chrome OS کی خصوصیات اور کارکردگی کو بہتر بنانے میں مدد کریں</translation>
 <translation id="6331818708794917058">‏سائٹس MIDI آلات سے منسلک ہونے کے لیے پوچھ سکتی ہیں</translation>
 <translation id="6333064448949140209">‏ڈیبگ کرنے کیلئے فائل Google کو بھیج دی جائے گی</translation>
+<translation id="6334444530352320327">‏آپ کی ایپس اور OS کی ترتیبات ان Chromebooks میں مطابقت پذیر ہوں گی جہاں آپ اس اکاؤنٹ سے سائن ان ہیں۔<ph name="LINK_BEGIN" />مطابقت پذیری کی ترتیبات<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">سبھی سائٹس آپ کو کوئی اشتہار دکھا سکتی ہیں</translation>
 <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" /> کیلئے ایک نیا پروفائل بنائیں</translation>
 <translation id="6340017061976355871">‏سرور سے منسلک نہیں کیا جا سکا۔ براہ کرم اپنا نیٹ ورک کنکشن چیک کریں اور دوبارہ کوشش کریں۔ مسئلہ برقرار رہنے پر اپنا Chromebook دوبارہ شروع کریں۔</translation>
@@ -4909,6 +4922,7 @@
 <translation id="6709133671862442373">خبریں</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> کا استعمال کر کے منسلک کریں</translation>
 <translation id="6710213216561001401">گزشتہ</translation>
+<translation id="6713233729292711163">دفتری پروفائل شامل کریں</translation>
 <translation id="6715803357256707211">‏آپ کی Linux ایپلیکیشن کو انسٹال کرنے کے دوران ایک خرابی پیش آ گئی۔ تفصیلات کے لیے اطلاع پر کلک کریں۔</translation>
 <translation id="671619610707606484">اس سے سائٹس کا اسٹور کردہ <ph name="TOTAL_USAGE" /> ڈیٹا صاف ہو جائے گا</translation>
 <translation id="671928215901716392">اسکرین مقفل کریں</translation>
@@ -5277,6 +5291,7 @@
 <translation id="7121362699166175603">‏پتہ بار میں موجود سرگزشت اور خودکار تکمیلات کو صاف کر دیتا ہے۔ ممکن ہے کہ <ph name="BEGIN_LINK" />myactivity.google<ph name="END_LINK" /> پر آپ کے Google اکاؤنٹ میں براؤزنگ کی سرگزشت کی دیگر شکلیں موجود ہوں۔</translation>
 <translation id="7121438501124788993">ڈویلپر وضع</translation>
 <translation id="7121728544325372695">اسمارٹ ڈیشز</translation>
+<translation id="7122353087820324370">‏ایپس اور OS کی ترتیبات ثانوی اکاؤنٹس کے ساتھ مطابقت پذیر نہیں ہیں۔</translation>
 <translation id="7123030151043029868">خودکار طور پر متعدد فائلز ڈاؤن لوڈ کرنے کی اجازت ہے</translation>
 <translation id="7123360114020465152">مزید تعاون یافتہ نہیں ہے</translation>
 <translation id="7125148293026877011">‏Crostini حذف کریں</translation>
@@ -5592,6 +5607,7 @@
 <translation id="750509436279396091">ڈاؤن لوڈز کا فولڈر کھولیں</translation>
 <translation id="7506093026325926984">یہ پاس ورڈ اس آلے پر محفوظ کیا جائے گا</translation>
 <translation id="7506130076368211615">نیا نیٹ ورک سیٹ اپ کریں</translation>
+<translation id="7506242536428928412">‏اپنی نئی سیکیورٹی کلید استعمال کرنے کیلئے، ایک نیا PIN سیٹ کریں</translation>
 <translation id="7506541170099744506">آپ کے <ph name="DEVICE_TYPE" /> کا انٹرپرائز کے نظم و نسق کیلئے کامیابی سے اندراج کر لیا گیا ہے۔</translation>
 <translation id="7507207699631365376">اس فراہم کنندہ کی <ph name="BEGIN_LINK" />راز داری کی پالیسی<ph name="END_LINK" /> دیکھیں</translation>
 <translation id="7507930499305566459">صورتحال کا جواب دہندہ سرٹیفیکیٹ</translation>
@@ -5755,6 +5771,7 @@
 <translation id="7691077781194517083">اس سیکیورٹی کلید کو دوبارہ ترتیب نہیں دیا جا سکتا۔ خرابی <ph name="ERROR_CODE" />۔</translation>
 <translation id="7691698019618282776">‏Crostini اپ گریڈ</translation>
 <translation id="7696063401938172191">آپ کے '<ph name="PHONE_NAME" />' پر:</translation>
+<translation id="7697166915480294040">آپ کی جانب سے اپنی اسکرین کے اشتراک کے دوران تفصیلات پوشیدہ ہوتی ہیں</translation>
 <translation id="7697598343108519171">‏QR کوڈ کو اسکین کرنے کے لیے کیمرا استعمال کریں</translation>
 <translation id="7699968112832915395">اکاؤنٹ شامل نہیں کیا جا سکتا</translation>
 <translation id="7701040980221191251">کوئی نہیں</translation>
@@ -6212,6 +6229,8 @@
 <translation id="8184472985242519288">یکساں</translation>
 <translation id="8186609076106987817">سرور فائل کو تلاش نہیں کر سکا۔</translation>
 <translation id="8188389033983459049">اپنے آلے کی ترتیبات چیک کریں اور جاری رکھنے کیلئے اسے آن کریں</translation>
+<translation id="8189306097519446565">اسکول اکاؤنٹس</translation>
+<translation id="8189750580333936930">رازداری سینڈ باکس</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> سے منسلک کیا جا رہا ہے</translation>
 <translation id="8191230140820435481">اپنی ایپس، ایکسٹینشنز اور تھیمز کا نظم کریں</translation>
 <translation id="8195027750202970175">ڈسک پر سائز</translation>
@@ -6903,6 +6922,7 @@
 <translation id="8986362086234534611">بھول جائیں</translation>
 <translation id="8986494364107987395">‏خود کار طریقے سے Google کو استعمال کے اعداد و شمار اور کریش کی رپورٹیں بھیجیں</translation>
 <translation id="8987927404178983737">ماہ</translation>
+<translation id="8989823300731803443">آپ نے جہاں چھوڑا تھا وہیں سے جاری رکھیں۔</translation>
 <translation id="8990209962746788689">‏QR کوڈ تخلیق نہیں کیا جاسکا</translation>
 <translation id="8991520179165052608">سائٹ آپ کا مائیکروفون استعمال کر سکتی ہے</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{1 آئٹم}other{# آئٹمز}}</translation>
@@ -7132,7 +7152,6 @@
 <translation id="952992212772159698">فعال نہیں ہے</translation>
 <translation id="956500788634395331">آپ ممکنہ طور پر نقصان دہ ایکسٹینشنز سے محفوظ ہیں</translation>
 <translation id="957960681186851048">اس سائٹ نے متعدد فائلز کو خودکار طور پر ڈاؤن لوڈ کرنے کی کوشش کی ہے</translation>
-<translation id="9580706199804957">‏Google سروسز سے منسلک نہیں کیا جا سکا</translation>
 <translation id="958329785990007682">‏JavaScript مسدود کریں</translation>
 <translation id="960719561871045870">آپریٹر کوڈ</translation>
 <translation id="960987915827980018">قریب 1 گھنٹہ باقی ہے</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb
index 48685bd..285f013 100644
--- a/chrome/app/resources/generated_resources_uz.xtb
+++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -2145,7 +2145,6 @@
 <translation id="3441653493275994384">Ekran</translation>
 <translation id="3441663102605358937">Bu hisobni tasdiqlash uchun <ph name="ACCOUNT" /> hisobiga qaytadan kiring</translation>
 <translation id="3445047461171030979">Google Assistent tezkor javoblari</translation>
-<translation id="3445770710327978113">Buni tezroq ochish uchun quyidagi ilovani oʻrnating</translation>
 <translation id="3445925074670675829">USB-C qurilma</translation>
 <translation id="3446274660183028131">Windowsni oʻrnatish uchun Parallels Desktopni ishga tushiring.</translation>
 <translation id="344630545793878684">Bir nechta saytlardagi ma’lumotlarni ko‘rish</translation>
@@ -2629,7 +2628,6 @@
 <translation id="3955163004258753966">Yangilashni boshlashda xato</translation>
 <translation id="3955193568934677022">Saytlarga himoyalangan kontentni ijro qilish uchun ruxsat berish (tavsiya etiladi)</translation>
 <translation id="3955896417885489542">Sozlangandan keyin Google Play parametrlarini tekshiring</translation>
-<translation id="3956702100721821638">Google Play xizmatiga ulanib bo‘lmadi.</translation>
 <translation id="3957079323242030166">Zaxiralangan maʼlumotlar Google Drive omboringizdan joy egallamaydi.</translation>
 <translation id="3957844511978444971">Bu Google xizmatlari sozlamalarini tasdiqlash uchun Roziman tugmasini bosing.</translation>
 <translation id="3958088479270651626">Xatcho‘plar va sozlamalarni import qilish</translation>
@@ -7150,7 +7148,6 @@
 <translation id="952992212772159698">Faollashtirilmagan</translation>
 <translation id="956500788634395331">Zararli kengaytmalardan himoyalangansiz</translation>
 <translation id="957960681186851048">Bu sayt bir necha fayllarni avtomatik yuklab olishga urinib ko‘rdi</translation>
-<translation id="9580706199804957">Google xizmatlariga ulanib bo‘lmadi</translation>
 <translation id="958329785990007682">Javascriptni taqiqlash</translation>
 <translation id="960719561871045870">Operator kodi</translation>
 <translation id="960987915827980018">1 soatcha qoldi</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index a9828cd..64ef9fad 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -2142,7 +2142,6 @@
 <translation id="3441653493275994384">Màn hình</translation>
 <translation id="3441663102605358937">Đăng nhập lại vào <ph name="ACCOUNT" /> để xác minh tài khoản này</translation>
 <translation id="3445047461171030979">Các câu trả lời nhanh của Trợ lý Google</translation>
-<translation id="3445770710327978113">Để quay lại đây nhanh hơn, hãy cài đặt ứng dụng này</translation>
 <translation id="3445925074670675829">Thiết bị USB-C</translation>
 <translation id="3446274660183028131">Vui lòng chạy ứng dụng Parallels Desktop để cài đặt Windows.</translation>
 <translation id="344630545793878684">Đọc dữ liệu của bạn trên một số trang web</translation>
@@ -2623,7 +2622,6 @@
 <translation id="3955163004258753966">Lỗi khi bắt đầu nâng cấp</translation>
 <translation id="3955193568934677022">Cho phép trang web phát nội dung được bảo vệ (được đề xuất)</translation>
 <translation id="3955896417885489542">Xem lại các tùy chọn Google Play sau khi thiết lập</translation>
-<translation id="3956702100721821638">Không thể truy cập vào Google Play</translation>
 <translation id="3957079323242030166">Dữ liệu sao lưu sẽ không tính vào định mức bộ nhớ Drive của bạn.</translation>
 <translation id="3957844511978444971">Bằng việc nhấn vào “Chấp nhận”, bạn xác nhận chọn các tùy chọn cài đặt dịch vụ này của Google.</translation>
 <translation id="3958088479270651626">Nhập dấu trang và các mục cài đặt</translation>
@@ -7132,7 +7130,6 @@
 <translation id="952992212772159698">Chưa được kích hoạt</translation>
 <translation id="956500788634395331">Bạn sẽ được bảo vệ khỏi các tiện ích có thể gây hại</translation>
 <translation id="957960681186851048">Trang web này đã cố gắng tự động tải nhiều tệp xuống</translation>
-<translation id="9580706199804957">Không thể kết nối với các dịch vụ của Google</translation>
 <translation id="958329785990007682">Chặn JavaScript</translation>
 <translation id="960719561871045870">Mã của nhà mạng</translation>
 <translation id="960987915827980018">Còn khoảng 1 giờ</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index 3b3f275..907e468 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -2138,7 +2138,6 @@
 <translation id="3441653493275994384">屏幕</translation>
 <translation id="3441663102605358937">请重新登录 <ph name="ACCOUNT" /> 以验证此帐号</translation>
 <translation id="3445047461171030979">Google 助理快速解答</translation>
-<translation id="3445770710327978113">如需方便地快速回到这里,请安装该应用</translation>
 <translation id="3445925074670675829">USB-C 设备</translation>
 <translation id="3446274660183028131">请启动 Parallels Desktop 以安装 Windows。</translation>
 <translation id="344630545793878684">读取您在一些网站上的数据</translation>
@@ -2618,7 +2617,6 @@
 <translation id="3955163004258753966">开始升级时出错</translation>
 <translation id="3955193568934677022">允许网站播放受保护的内容(推荐)</translation>
 <translation id="3955896417885489542">完成设置后查看 Google Play 选项</translation>
-<translation id="3956702100721821638">无法连接到 Google Play</translation>
 <translation id="3957079323242030166">备份数据不会计入您的云端硬盘存储空间配额。</translation>
 <translation id="3957844511978444971">点按“接受”即表示您确认选择这些 Google 服务设置。</translation>
 <translation id="3958088479270651626">导入书签和设置</translation>
@@ -7126,7 +7124,6 @@
 <translation id="952992212772159698">未激活</translation>
 <translation id="956500788634395331">系统会保护您免受可能有害的扩展程序的威胁</translation>
 <translation id="957960681186851048">此网站试图自动下载多个文件</translation>
-<translation id="9580706199804957">无法连接到 Google 服务</translation>
 <translation id="958329785990007682">禁用 JavaScript</translation>
 <translation id="960719561871045870">运营商代码</translation>
 <translation id="960987915827980018">约剩 1 小时</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb
index 253a1950..23b0b6e 100644
--- a/chrome/app/resources/generated_resources_zh-HK.xtb
+++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">沒有網絡</translation>
 <translation id="1056898198331236512">警告</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{請輸入新 PIN。PIN 必須包含至少一個字元,可以使用字母、數字和其他字元。}other{請輸入新 PIN。PIN 必須包含至少 # 個字元,可以使用字母、數字和其他字元。}}</translation>
 <translation id="1059944192885972544">搵到 <ph name="NUM" /> 個同「<ph name="SEARCH_TEXT" />」相關嘅分頁</translation>
 <translation id="1060292118287751956">決定螢幕更新的頻率</translation>
 <translation id="1061904396131502319">快到休息時間了</translation>
@@ -636,9 +637,11 @@
 <translation id="1688935057616748272">請輸入一個字母</translation>
 <translation id="168991973552362966">新增附近的打印機</translation>
 <translation id="1689945336726856614">複製網址(&amp;U)</translation>
+<translation id="1690248886740053041">無法連線至流動網絡。如需技術支援,請聯絡您的流動網絡供應商。</translation>
 <translation id="1692115862433274081">使用其他帳戶</translation>
 <translation id="1692118695553449118">同步處理已開啟</translation>
 <translation id="1692210323591458290">深紫色</translation>
+<translation id="169279809881363536">找不到任何資料夾。如要設定新網絡,請使用裝置相機掃瞄 QR 碼,或輸入流動網絡供應商提供的啟動碼。</translation>
 <translation id="1697150536837697295">藝術</translation>
 <translation id="1697686431566694143">編輯檔案</translation>
 <translation id="1698122934742150150">只限目前的無痕模式工作階段</translation>
@@ -1574,6 +1577,7 @@
 <translation id="2770465223704140727">從清單中移除</translation>
 <translation id="2770690685823456775">將您的密碼匯出至其他資料夾</translation>
 <translation id="2770929488047004208">顯示器解像度</translation>
+<translation id="2770954829020464827">分享螢幕畫面時會隱藏詳細資料</translation>
 <translation id="2771268254788431918">已啟用流動數據</translation>
 <translation id="2771816809568414714">芝士</translation>
 <translation id="2772936498786524345">忍者</translation>
@@ -1942,6 +1946,7 @@
 <translation id="3201422919974259695">可用的 USB 裝置將會在這裡顯示。</translation>
 <translation id="3202131003361292969">路徑</translation>
 <translation id="3202173864863109533">此分頁的音效已設為靜音。</translation>
+<translation id="3202218848974251205">私隱沙箱</translation>
 <translation id="3208321278970793882">應用程式</translation>
 <translation id="3208584281581115441">立即檢查</translation>
 <translation id="3208703785962634733">尚未確認的</translation>
@@ -2141,7 +2146,6 @@
 <translation id="3441653493275994384">螢幕</translation>
 <translation id="3441663102605358937">請再次登入 <ph name="ACCOUNT" /> 以驗證此帳戶</translation>
 <translation id="3445047461171030979">「Google 助理」快速解答</translation>
-<translation id="3445770710327978113">如要迅速返回此處,請安裝此應用程式</translation>
 <translation id="3445925074670675829">USB-C 裝置</translation>
 <translation id="3446274660183028131">請啟動 Parallels Desktop 以安裝 Windows。</translation>
 <translation id="344630545793878684">讀取您在部分網站上的資料</translation>
@@ -2162,6 +2166,7 @@
 <translation id="3459697287128633276">如要使用您的帳戶存取「Google Play 商店」,請透過身分管理供應商驗證您的身分。</translation>
 <translation id="3462311546193741693">您會登出大多數網站,但會保持登入 Google 帳戶,以便清除已同步的資料。</translation>
 <translation id="3462413494201477527">取消帳戶建立?</translation>
+<translation id="3464145797867108663">新增工作設定檔</translation>
 <translation id="346431825526753">這是一個兒童帳戶 (由 <ph name="CUSTODIAN_EMAIL" /> 管理)。</translation>
 <translation id="3468298837301810372">標籤</translation>
 <translation id="3468999815377931311">Android 手機</translation>
@@ -2283,6 +2288,7 @@
 <translation id="360180734785106144">即時提供可用的新功能</translation>
 <translation id="3602290021589620013">預覽</translation>
 <translation id="3603622770190368340">取得網絡憑證</translation>
+<translation id="3604193429970465812">次要帳戶</translation>
 <translation id="3604713164406837697">變更桌布</translation>
 <translation id="3605780360466892872">小員工</translation>
 <translation id="3608576286259426129">使用者圖片預覽</translation>
@@ -2607,6 +2613,7 @@
 
   是否要開啟「<ph name="CONTROL_PANEL_APPLET_NAME" />」?</translation>
 <translation id="394183848452296464">無法建立捷徑</translation>
+<translation id="3943494825379372497">要還原應用程式和網頁嗎?</translation>
 <translation id="3943582379552582368">返回(&amp;B)</translation>
 <translation id="3943857333388298514">貼上</translation>
 <translation id="3948116654032448504">透過 <ph name="SEARCH_ENGINE" /> 搜尋圖片(&amp;S)</translation>
@@ -2622,7 +2629,6 @@
 <translation id="3955163004258753966">開始升級時發生錯誤</translation>
 <translation id="3955193568934677022">允許網站播放受保護的內容 (建議)</translation>
 <translation id="3955896417885489542">在設定完成後查看 Google Play 選項</translation>
-<translation id="3956702100721821638">無法連線至 Google Play</translation>
 <translation id="3957079323242030166">備份資料不會計算入「雲端硬碟」的儲存空間配額。</translation>
 <translation id="3957844511978444971">輕按 [接受],即表示您確認選擇這些 Google 服務設定。</translation>
 <translation id="3958088479270651626">匯入書籤和設定</translation>
@@ -2692,6 +2698,7 @@
 <translation id="4046013316139505482">這些擴充程式無需查看或變更此網站的資料。</translation>
 <translation id="4046123991198612571">下一首曲目</translation>
 <translation id="4047726037116394521">前往主畫面</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{無法連接 # 個聯絡人。如要與他們使用「咫尺共享」,請將他們的 Google 帳戶電郵地址加入您的通訊錄。}other{無法連接 # 個聯絡人。如要與他們使用「咫尺共享」,請將其 Google 帳戶電郵地址加入您的通訊錄。}}</translation>
 <translation id="4050225813016893843">驗證方法</translation>
 <translation id="4052120076834320548">最小</translation>
 <translation id="4056908315660577142">您已達到家長為「<ph name="APP_NAME" />」Chrome 應用程式設定的使用時間限制。明天可以使用 <ph name="TIME_LIMIT" />。</translation>
@@ -3338,6 +3345,7 @@
 <translation id="4863769717153320198">解像度:<ph name="WIDTH" /> x <ph name="HEIGHT" /> (預設)</translation>
 <translation id="4864369630010738180">正在登入…</translation>
 <translation id="4864805589453749318">請選取要授予新增學校帳戶權限的家長。</translation>
+<translation id="4866265760644917470">設定檔已成功新增。</translation>
 <translation id="486635084936119914">下載特定類型的檔案後自動開啟</translation>
 <translation id="48704129375571883">新增其他功能</translation>
 <translation id="4870758487381879312">輸入管理員提供的密碼,即可取得設定資料</translation>
@@ -3621,6 +3629,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{已成功變更被盜用的密碼。您還有 # 個被盜用的密碼。Chrome 建議您立即檢查此密碼。}other{已成功變更被盜用的密碼。您還有 # 個被盜用的密碼。Chrome 建議您立即檢查這些密碼。}}</translation>
 <translation id="5207949376430453814">突顯文字插入符號</translation>
 <translation id="5209320130288484488">找不到裝置</translation>
+<translation id="5209572028385096813">此使用者由 Family Link 管理</translation>
 <translation id="5210365745912300556">關閉分頁</translation>
 <translation id="5213481667492808996">「<ph name="NAME" />」的數據服務現可使用</translation>
 <translation id="5213891612754844763">顯示 Proxy 設定</translation>
@@ -3706,6 +3715,7 @@
 <translation id="5302048478445481009">語言</translation>
 <translation id="5302932258331363306">顯示替代項目</translation>
 <translation id="5304276686222516262">無法下載通訊錄。請檢查網絡連線,或&lt;a href="#" id="tryAgainLink"&gt;再試一次&lt;/a&gt;。</translation>
+<translation id="5305145881844743843">此帳戶是由 <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> 管理</translation>
 <translation id="5305688511332277257">未安裝任何憑證</translation>
 <translation id="5307030433605830021">不支援的來源</translation>
 <translation id="5308380583665731573">連線</translation>
@@ -4087,6 +4097,7 @@
 <translation id="5740820643029013514">使用靜態訊息功能 (建議)</translation>
 <translation id="574104302965107104">螢幕鏡像</translation>
 <translation id="574209121243317957">音調</translation>
+<translation id="5742505912938664543">在這裡新增次要帳戶後,您便可透過該帳戶瀏覽網絡、下載應用程式,以及查看 Gmail 和其他 Google 服務。</translation>
 <translation id="5746169159649715125">另存為 PDF</translation>
 <translation id="5747552184818312860">到期日</translation>
 <translation id="5747785204778348146">開發人員版 - 不穩定</translation>
@@ -4427,6 +4438,7 @@
 <translation id="6129953537138746214">空格</translation>
 <translation id="6130692320435119637">新增 Wi-Fi</translation>
 <translation id="6136114942382973861">閂下載內容列</translation>
+<translation id="6136287496450963112">您的安全密鑰並未受 PIN 保護。請先建立 PIN 以管理指紋。</translation>
 <translation id="6137767437444130246">使用者憑證</translation>
 <translation id="6138680304137685902">使用 SHA-384 的 X9.62 ECDSA 簽名</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />,沒有網絡</translation>
@@ -4607,6 +4619,7 @@
 <translation id="6331566915566907158">協助改善 Chrome 作業系統的功能和效能</translation>
 <translation id="6331818708794917058">網站可要求連接 MIDI 裝置</translation>
 <translation id="6333064448949140209">檔案將傳送至 Google 執行偵錯</translation>
+<translation id="6334444530352320327">您的應用程式和作業系統設定將在所有透過此帳戶登入的 Chromebook 上同步。<ph name="LINK_BEGIN" />同步設定<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">所有網站都可向您顯示任何廣告</translation>
 <translation id="6339668969738228384">為 <ph name="USER_EMAIL_ADDRESS" /> 建立新的個人檔案</translation>
 <translation id="6340017061976355871">無法連接伺服器。請檢查您的網絡連線,然後再試一次。如果問題持續,請重新啟動 Chromebook。</translation>
@@ -4908,6 +4921,7 @@
 <translation id="6709133671862442373">新聞內容</translation>
 <translation id="6709357832553498500">使用「<ph name="EXTENSIONNAME" />」連線</translation>
 <translation id="6710213216561001401">上一個</translation>
+<translation id="6713233729292711163">新增工作設定檔</translation>
 <translation id="6715803357256707211">安裝 Linux 應用程式時發生錯誤。按一下通知即可瞭解詳情。</translation>
 <translation id="671619610707606484">此操作會清除網站儲存的資料,共 <ph name="TOTAL_USAGE" /></translation>
 <translation id="671928215901716392">鎖定螢幕</translation>
@@ -5276,6 +5290,7 @@
 <translation id="7121362699166175603">清除記錄和網址列中的自動完成資料。您的 Google 帳戶在 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 上可能有其他形式的瀏覽記錄。</translation>
 <translation id="7121438501124788993">開發人員模式</translation>
 <translation id="7121728544325372695">智能破折號</translation>
+<translation id="7122353087820324370">應用程式和作業系統設定未同步至次要帳戶。</translation>
 <translation id="7123030151043029868">已允許自動下載多個檔案</translation>
 <translation id="7123360114020465152">已不再支援</translation>
 <translation id="7125148293026877011">刪除 Crostini</translation>
@@ -5591,6 +5606,7 @@
 <translation id="750509436279396091">開啟下載檔案資料夾</translation>
 <translation id="7506093026325926984">密碼將會儲存在此裝置上</translation>
 <translation id="7506130076368211615">設定新網絡</translation>
+<translation id="7506242536428928412">如要使用新的安全密鑰,請設定新 PIN</translation>
 <translation id="7506541170099744506">您的 <ph name="DEVICE_TYPE" /> 已成功註冊企業管理服務。</translation>
 <translation id="7507207699631365376">查看此供應商的<ph name="BEGIN_LINK" />私隱權政策<ph name="END_LINK" /></translation>
 <translation id="7507930499305566459">狀態回應程式憑證</translation>
@@ -5754,6 +5770,7 @@
 <translation id="7691077781194517083">無法重設此安全密鑰。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="7691698019618282776">Crostini 升級</translation>
 <translation id="7696063401938172191">在您的 <ph name="PHONE_NAME" /> 上:</translation>
+<translation id="7697166915480294040">分享螢幕畫面時會隱藏詳細資料</translation>
 <translation id="7697598343108519171">使用相機掃瞄 QR 碼</translation>
 <translation id="7699968112832915395">無法新增帳戶</translation>
 <translation id="7701040980221191251">沒有</translation>
@@ -6210,6 +6227,8 @@
 <translation id="8184472985242519288">平均</translation>
 <translation id="8186609076106987817">伺服器無法找到這個檔案。</translation>
 <translation id="8188389033983459049">檢查您的裝置設定並開啟藍牙以繼續</translation>
+<translation id="8189306097519446565">學校帳戶</translation>
+<translation id="8189750580333936930">私隱沙箱</translation>
 <translation id="8190193592390505034">正在連線至 <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">管理您的應用程式、擴充功能和主題</translation>
 <translation id="8195027750202970175">磁碟大小</translation>
@@ -6901,6 +6920,7 @@
 <translation id="8986362086234534611">清除</translation>
 <translation id="8986494364107987395">自動將使用統計資料和當機報告傳送給 Google</translation>
 <translation id="8987927404178983737">月</translation>
+<translation id="8989823300731803443">繼續使用上次開啟的應用程式和網頁。</translation>
 <translation id="8990209962746788689">無法建立二維條碼</translation>
 <translation id="8991520179165052608">網站可以使用您的麥克風</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{1 個項目}other{# 個項目}}</translation>
@@ -7130,7 +7150,6 @@
 <translation id="952992212772159698">未啟用</translation>
 <translation id="956500788634395331">保護您免受可能有害的擴充程式影響</translation>
 <translation id="957960681186851048">此網站曾嘗試自動下載多個檔案</translation>
-<translation id="9580706199804957">無法連線至 Google 服務</translation>
 <translation id="958329785990007682">禁止 JavaScript</translation>
 <translation id="960719561871045870">流動網絡供應商代碼</translation>
 <translation id="960987915827980018">還有約 1 個小時</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 018be21..2c9e9bb 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -57,6 +57,7 @@
 <translation id="1056775291175587022">沒有網路</translation>
 <translation id="1056898198331236512">警告</translation>
 <translation id="1058262162121953039">PUK</translation>
+<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{請輸入新的 PIN 碼。PIN 碼必須包含至少一個字元,可以使用英文字母、數字和其他字元。}other{請輸入新的 PIN 碼。PIN 碼必須包含至少 # 個字元,可以使用英文字母、數字和其他字元。}}</translation>
 <translation id="1059944192885972544">找到 <ph name="NUM" /> 個與「<ph name="SEARCH_TEXT" />」相符的分頁</translation>
 <translation id="1060292118287751956">決定畫面更新的頻率</translation>
 <translation id="1061904396131502319">快到休息時間了</translation>
@@ -636,9 +637,11 @@
 <translation id="1688935057616748272">請輸入英文字母</translation>
 <translation id="168991973552362966">新增鄰近印表機</translation>
 <translation id="1689945336726856614">複製網址(&amp;U)</translation>
+<translation id="1690248886740053041">無法連線到行動網路。如需技術支援,請與你的電信業者聯絡。</translation>
 <translation id="1692115862433274081">使用其他帳戶</translation>
 <translation id="1692118695553449118">同步功能已啟用</translation>
 <translation id="1692210323591458290">深紫色</translation>
+<translation id="169279809881363536">找不到任何資料夾。如要設定新網路,請使用裝置相機掃描 QR 圖碼,或是輸入電信業者提供的啟用代碼。</translation>
 <translation id="1697150536837697295">藝術</translation>
 <translation id="1697686431566694143">編輯檔案</translation>
 <translation id="1698122934742150150">僅適用於目前的無痕模式工作階段</translation>
@@ -1574,6 +1577,7 @@
 <translation id="2770465223704140727">從清單中移除</translation>
 <translation id="2770690685823456775">將你的密碼匯出至其他資料夾</translation>
 <translation id="2770929488047004208">顯示器解析度</translation>
+<translation id="2770954829020464827">分享螢幕畫面時會隱藏詳細資料</translation>
 <translation id="2771268254788431918">已啟用行動數據</translation>
 <translation id="2771816809568414714">乳酪</translation>
 <translation id="2772936498786524345">忍者</translation>
@@ -1942,6 +1946,7 @@
 <translation id="3201422919974259695">可用的 USB 裝置將會顯示在這裡。</translation>
 <translation id="3202131003361292969">路徑</translation>
 <translation id="3202173864863109533">分頁音訊已關閉。</translation>
+<translation id="3202218848974251205">Privacy Sandbox</translation>
 <translation id="3208321278970793882">應用程式</translation>
 <translation id="3208584281581115441">立即檢查</translation>
 <translation id="3208703785962634733">尚未確認的</translation>
@@ -2141,7 +2146,6 @@
 <translation id="3441653493275994384">螢幕</translation>
 <translation id="3441663102605358937">再次登入 <ph name="ACCOUNT" /> 以驗證這個帳戶</translation>
 <translation id="3445047461171030979">Google 助理快速解答</translation>
-<translation id="3445770710327978113">如要快速返回此處,請安裝這個應用程式</translation>
 <translation id="3445925074670675829">USB-C 裝置</translation>
 <translation id="3446274660183028131">請啟動 Parallels Desktop 以安裝 Windows。</translation>
 <translation id="344630545793878684">讀取你在多個網站上產生的資料</translation>
@@ -2162,6 +2166,7 @@
 <translation id="3459697287128633276">如要使用你的帳戶存取 Google Play 商店,請透過識別資訊提供者進行驗證。</translation>
 <translation id="3462311546193741693">大多數網站都會將你登出,但你仍會維持登入 Google 帳戶的狀態,讓系統可以清除同步資料。</translation>
 <translation id="3462413494201477527">取消設定帳戶?</translation>
+<translation id="3464145797867108663">新增工作資料夾</translation>
 <translation id="346431825526753">這是由 <ph name="CUSTODIAN_EMAIL" /> 所管理的兒童專用帳戶。</translation>
 <translation id="3468298837301810372">標籤</translation>
 <translation id="3468999815377931311">Android 手機</translation>
@@ -2283,6 +2288,7 @@
 <translation id="360180734785106144">在新功能推出時立即提供你使用</translation>
 <translation id="3602290021589620013">預覽</translation>
 <translation id="3603622770190368340">取得網路憑證</translation>
+<translation id="3604193429970465812">次要帳戶</translation>
 <translation id="3604713164406837697">變更桌布</translation>
 <translation id="3605780360466892872">小員工</translation>
 <translation id="3608576286259426129">使用者圖片預覽</translation>
@@ -2606,6 +2612,7 @@
 
   是否要開啟「<ph name="CONTROL_PANEL_APPLET_NAME" />」?</translation>
 <translation id="394183848452296464">無法建立捷徑</translation>
+<translation id="3943494825379372497">要還原應用程式和網頁嗎?</translation>
 <translation id="3943582379552582368">上一頁(&amp;B)</translation>
 <translation id="3943857333388298514">貼上</translation>
 <translation id="3948116654032448504">透過 <ph name="SEARCH_ENGINE" /> 搜尋圖片(&amp;S)</translation>
@@ -2621,7 +2628,6 @@
 <translation id="3955163004258753966">啟動升級時發生錯誤</translation>
 <translation id="3955193568934677022">允許網站播放受保護的內容 (建議)</translation>
 <translation id="3955896417885489542">在設定完成後顯示 Google Play 選項</translation>
-<translation id="3956702100721821638">無法連上 Google Play</translation>
 <translation id="3957079323242030166">備份資料不會計入你的雲端硬碟儲存空間配額。</translation>
 <translation id="3957844511978444971">輕觸 [接受] 即表示您確認所選的這些 Google 服務設定。</translation>
 <translation id="3958088479270651626">匯入書籤和設定</translation>
@@ -2691,6 +2697,7 @@
 <translation id="4046013316139505482">這些擴充功能不需要查看和變更這個網站上的資訊。</translation>
 <translation id="4046123991198612571">下一首曲目</translation>
 <translation id="4047726037116394521">前往主畫面</translation>
+<translation id="4049783682480068824">{COUNT,plural, =1{無法與 # 位聯絡人建立連線。如要使用鄰近分享功能分享內容,請將與對方 Google 帳戶相關聯的電子郵件地址加入聯絡人資料。}other{無法與 # 位聯絡人建立連線。如要使用鄰近分享功能分享內容,請將對方的 Google 帳戶登錄電子郵件地址加入聯絡人資料。}}</translation>
 <translation id="4050225813016893843">驗證方式</translation>
 <translation id="4052120076834320548">最小</translation>
 <translation id="4056908315660577142">你已達到貴家長為「<ph name="APP_NAME" />」這款 Chrome 應用程式設定的使用時間限制。你明天可以使用 <ph name="TIME_LIMIT" />。</translation>
@@ -3337,6 +3344,7 @@
 <translation id="4863769717153320198">螢幕解析度:<ph name="WIDTH" /> x <ph name="HEIGHT" /> (預設)</translation>
 <translation id="4864369630010738180">登入中...</translation>
 <translation id="4864805589453749318">請選取要授予新增學校帳戶權限的家長。</translation>
+<translation id="4866265760644917470">資料夾新增成功。</translation>
 <translation id="486635084936119914">下載特定類型的檔案後自動開啟</translation>
 <translation id="48704129375571883">新增其他功能</translation>
 <translation id="4870758487381879312">輸入管理員提供的密碼即可取得設定資訊</translation>
@@ -3620,6 +3628,7 @@
 <translation id="5206787458656075734">{COUNT,plural, =1{已成功變更遭外洩的密碼。你還有 # 組遭外洩的密碼。Chrome 建議你立即檢查這組密碼。}other{已成功變更遭外洩的密碼。你還有 # 組遭外洩的密碼。Chrome 建議你立即檢查這些密碼。}}</translation>
 <translation id="5207949376430453814">醒目顯示文字插入點</translation>
 <translation id="5209320130288484488">找不到裝置</translation>
+<translation id="5209572028385096813">這個使用者是由 Family Link 管理</translation>
 <translation id="5210365745912300556">關閉分頁</translation>
 <translation id="5213481667492808996">現在可以使用「<ph name="NAME" />」的數據服務了</translation>
 <translation id="5213891612754844763">顯示 Proxy 設定</translation>
@@ -3705,6 +3714,7 @@
 <translation id="5302048478445481009">語言</translation>
 <translation id="5302932258331363306">顯示替代項目</translation>
 <translation id="5304276686222516262">無法下載聯絡人清單。請檢查網路連線,或是&lt;a href="#" id="tryAgainLink"&gt;再試一次&lt;/a&gt;。</translation>
+<translation id="5305145881844743843">這個帳戶是由 <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> 管理</translation>
 <translation id="5305688511332277257">未安裝任何憑證</translation>
 <translation id="5307030433605830021">不支援的來源</translation>
 <translation id="5308380583665731573">連線</translation>
@@ -4086,6 +4096,7 @@
 <translation id="5740820643029013514">使用低擾式通知 (建議)</translation>
 <translation id="574104302965107104">螢幕鏡像</translation>
 <translation id="574209121243317957">音調</translation>
+<translation id="5742505912938664543">在這裡新增次要帳戶後,你就能透過該帳戶瀏覽網路、下載應用程式,以及檢查 Gmail 與使用其他 Google 服務。</translation>
 <translation id="5746169159649715125">另存為 PDF</translation>
 <translation id="5747552184818312860">有效期限</translation>
 <translation id="5747785204778348146">開發人員版 - 不穩定</translation>
@@ -4426,6 +4437,7 @@
 <translation id="6129953537138746214">空格</translation>
 <translation id="6130692320435119637">新增 Wi-Fi</translation>
 <translation id="6136114942382973861">關閉下載內容列</translation>
+<translation id="6136287496450963112">你的安全金鑰未設定 PIN 碼保護,如要管理指紋,請先建立 PIN 碼。</translation>
 <translation id="6137767437444130246">使用者憑證</translation>
 <translation id="6138680304137685902">使用 SHA-384 的 X9.62 ECDSA 簽章</translation>
 <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />,沒有網路連線</translation>
@@ -4606,6 +4618,7 @@
 <translation id="6331566915566907158">協助改善 Chrome 作業系統的功能與效能</translation>
 <translation id="6331818708794917058">網站可以要求連線至 MIDI 裝置</translation>
 <translation id="6333064448949140209">檔案會傳送給 Google 進行偵錯</translation>
+<translation id="6334444530352320327">當你使用這個帳戶登入後,所有 Chromebook 上的應用程式和作業系統設定都會保持同步。<ph name="LINK_BEGIN" />同步設定<ph name="LINK_END" /></translation>
 <translation id="6338981933082930623">所有網站都可以向你顯示任何廣告</translation>
 <translation id="6339668969738228384">為 <ph name="USER_EMAIL_ADDRESS" /> 建立新的個人資料</translation>
 <translation id="6340017061976355871">無法連上伺服器。請檢查網路連線狀態,然後再試一次。如果問題持續發生,請重新啟動 Chromebook。</translation>
@@ -4907,6 +4920,7 @@
 <translation id="6709133671862442373">新聞內容</translation>
 <translation id="6709357832553498500">使用「<ph name="EXTENSIONNAME" />」連線</translation>
 <translation id="6710213216561001401">返回</translation>
+<translation id="6713233729292711163">新增工作資料夾</translation>
 <translation id="6715803357256707211">安裝 Linux 應用程式的過程中發生錯誤。如需詳細資料,請按一下通知。</translation>
 <translation id="671619610707606484">這會清除網站儲存的資料,共 <ph name="TOTAL_USAGE" /></translation>
 <translation id="671928215901716392">鎖定螢幕</translation>
@@ -5275,6 +5289,7 @@
 <translation id="7121362699166175603">將歷史記錄和自動即時查詢從網址列中清除。你的 Google 帳戶可能會儲存其他形式的瀏覽記錄,請參閱 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />。</translation>
 <translation id="7121438501124788993">開發人員模式</translation>
 <translation id="7121728544325372695">智慧型破折號</translation>
+<translation id="7122353087820324370">應用程式和作業系統設定未同步到次要帳戶。</translation>
 <translation id="7123030151043029868">可以自動下載多個檔案</translation>
 <translation id="7123360114020465152">已停止支援</translation>
 <translation id="7125148293026877011">刪除 Crostini</translation>
@@ -5590,6 +5605,7 @@
 <translation id="750509436279396091">開啟下載內容資料夾</translation>
 <translation id="7506093026325926984">這組密碼會儲存在這部裝置上</translation>
 <translation id="7506130076368211615">設定新網路</translation>
+<translation id="7506242536428928412">如要使用新的安全金鑰,請設定新的 PIN 碼</translation>
 <translation id="7506541170099744506">你的 <ph name="DEVICE_TYPE" /> 已成功註冊企業管理服務。</translation>
 <translation id="7507207699631365376">查看這個供應商的<ph name="BEGIN_LINK" />隱私權政策<ph name="END_LINK" /></translation>
 <translation id="7507930499305566459">狀態回應程式憑證</translation>
@@ -5753,6 +5769,7 @@
 <translation id="7691077781194517083">無法重設這個安全金鑰。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="7691698019618282776">Crostini 升級</translation>
 <translation id="7696063401938172191">在你的「<ph name="PHONE_NAME" />」上:</translation>
+<translation id="7697166915480294040">分享螢幕畫面時會隱藏詳細資料</translation>
 <translation id="7697598343108519171">使用相機掃描 QR 圖碼</translation>
 <translation id="7699968112832915395">無法新增帳戶</translation>
 <translation id="7701040980221191251">無</translation>
@@ -6209,6 +6226,8 @@
 <translation id="8184472985242519288">平均</translation>
 <translation id="8186609076106987817">伺服器找不到檔案。</translation>
 <translation id="8188389033983459049">檢查裝置設定並開啟藍牙功能,以便繼續操作</translation>
+<translation id="8189306097519446565">學校帳戶</translation>
+<translation id="8189750580333936930">Privacy Sandbox</translation>
 <translation id="8190193592390505034">正在連線至 <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">管理你的應用程式、擴充功能和主題</translation>
 <translation id="8195027750202970175">佔磁碟容量</translation>
@@ -6900,6 +6919,7 @@
 <translation id="8986362086234534611">清除</translation>
 <translation id="8986494364107987395">自動傳送使用統計資料及當機報告給 Google</translation>
 <translation id="8987927404178983737">月</translation>
+<translation id="8989823300731803443">繼續使用上次開啟的應用程式和網頁。</translation>
 <translation id="8990209962746788689">無法建立 QR 圖碼</translation>
 <translation id="8991520179165052608">網站可以使用你的麥克風</translation>
 <translation id="8992117551007229513">{COUNT,plural, =1{1 個項目}other{# 個項目}}</translation>
@@ -7129,7 +7149,6 @@
 <translation id="952992212772159698">未啟用</translation>
 <translation id="956500788634395331">系統已限制可能有害的擴充功能</translation>
 <translation id="957960681186851048">這個網站試圖自動下載多個檔案</translation>
-<translation id="9580706199804957">無法連上 Google 服務</translation>
 <translation id="958329785990007682">封鎖 JavaScript</translation>
 <translation id="960719561871045870">電信業者代碼</translation>
 <translation id="960987915827980018">剩下約 1 個小時</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb
index ec1c889..cd6d0f4a 100644
--- a/chrome/app/resources/generated_resources_zu.xtb
+++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -2146,7 +2146,6 @@
 <translation id="3441653493275994384">Isikrini</translation>
 <translation id="3441663102605358937">Ngena ngemvume ku-<ph name="ACCOUNT" /> futhi ukuze uqinisekise le akhawunti</translation>
 <translation id="3445047461171030979">Izimpendulo ezisheshayo zomsizi we-Google</translation>
-<translation id="3445770710327978113">Ukuze ubuyele lapha ngokushesha, faka lolu hlelo lokusebenza</translation>
 <translation id="3445925074670675829">Idivayisi ye-USB-C</translation>
 <translation id="3446274660183028131">Sicela uqalise i-Parallels Desktop ukuze ufake i-Windows.</translation>
 <translation id="344630545793878684">Funda idatha yakho kumawebhusayithi athile</translation>
@@ -2629,7 +2628,6 @@
 <translation id="3955163004258753966">Iphutha ukuqalisa ukuthuthuka</translation>
 <translation id="3955193568934677022">Vumela amasayithi ukudlala okuqukethwe okuvikelwe (kunconyiwe)</translation>
 <translation id="3955896417885489542">Buyekeza izinketho ze-Google Play kulandela isethaphu</translation>
-<translation id="3956702100721821638">Ayikwazanga ukufinyelela i-Google Play</translation>
 <translation id="3957079323242030166">Idatha yokwenza isipele ngeke ibalwe esilinganisweni sakho sesitoreji seDrayivu.</translation>
 <translation id="3957844511978444971">Thepha okuthi "Yamukela" ukuze uqinisekise ukukhetha kakho kwalezi zilungiselelo zamasevisi e-Google.</translation>
 <translation id="3958088479270651626">Ngenisa amabhukhimakhi nezilungiselelo</translation>
@@ -7154,7 +7152,6 @@
 <translation id="952992212772159698">Ayenziwanga yasebenza</translation>
 <translation id="956500788634395331">Uvikelwe kusuka kwizandiso ezingase zibe ingozi</translation>
 <translation id="957960681186851048">Leli sayithi lizame ukulanda amafayela amaningi ngokuzenzakalela</translation>
-<translation id="9580706199804957">Ayikwazanga ukuxhuma namasevisi e-Google</translation>
 <translation id="958329785990007682">Vimba i-JavaScript</translation>
 <translation id="960719561871045870">Ikhodi ye-opharetha</translation>
 <translation id="960987915827980018">Kusele okungenani ihora elingu-1</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ar.xtb b/chrome/app/resources/google_chrome_strings_ar.xtb
index 8390eeb..383e04a 100644
--- a/chrome/app/resources/google_chrome_strings_ar.xtb
+++ b/chrome/app/resources/google_chrome_strings_ar.xtb
@@ -54,6 +54,7 @@
 <translation id="2309047409763057870">‏هذا تثبيت ثانوي من Google Chrome، ولا يمكن جعله متصفحك التلقائي.</translation>
 <translation id="2348335408836342058">‏يحتاج Chrome إلى إذن للوصول إلى الكاميرا والميكروفون من أجل الموقع الإلكتروني هذا.</translation>
 <translation id="234869673307233423">‏يتعذّر على Chrome التحقّق من كلمات المرور. يُرجى إعادة المحاولة.</translation>
+<translation id="235650106824528204">‏يمكن لمشرف الملف الشخصي للعمل إزالة أي بيانات مرتبطة بمتصفِّح Chrome والتي يتم إنشاؤها أثناء استخدام هذا الملف الشخصي (مثل إنشاء الإشارات المرجعية والسجلّ وكلمات المرور والإعدادات الأخرى).<ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">‏تعذر على Google Chrome مزامنة البيانات نظرًا لأن المزامنة غير متاحة في نطاقك.</translation>
 <translation id="2467438592969358367">‏يرغب Google Chrome في تصدير كلمات مرورك، لذا يُرجى كتابة كلمة مرور Windows للسماح بذلك.</translation>
 <translation id="2485422356828889247">إزالة التثبيت</translation>
@@ -173,12 +174,14 @@
 <translation id="573759479754913123">‏لمحة عن نظام التشغيل Chrome</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation>
 <translation id="5804318322022881572">‏تعذَّر إطلاق Chrome. يُرجى إعادة المحاولة.</translation>
+<translation id="5851757216820085940">‏إذا كانت لديك حسابات متعددة في Google، يمكنك إضافتها على جهاز <ph name="DEVICE_TYPE" />. وستكون حساباتك متوفّرة في متصفِّح Chrome و"متجر Play"، بالإضافة إلى خدمات مثل Gmail وDrive وYouTuve. <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">‏يحاول Google Chrome تعديل كلمات المرور.</translation>
 <translation id="5895138241574237353">إعادة التشغيل</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - تسجيل الدخول إلى الشبكة</translation>
 <translation id="5940385492829620908">‏الويب والإشارات المرجعية وغيرها من عناصر Chrome توجد هنا.</translation>
 <translation id="5941830788786076944">‏جعل Google Chrome المتصفّح التلقائي</translation>
 <translation id="6070348360322141662">‏لمزيد من الأمان، سيشفِّر Google Chrome بياناتك</translation>
+<translation id="608006075545470555">إضافة ملف شخصي للعمل على هذا المتصفِّح</translation>
 <translation id="6113794647360055231">‏Chrome أصبح أفضل</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878">‏<ph name="PAGE_TITLE" /> - الإصدار التجريبي من Google Chrome</translation>
@@ -190,10 +193,12 @@
 <translation id="6368958679917195344">‏أصبح نظام التشغيل Chrome متاحًا من خلال <ph name="BEGIN_LINK_CROS_OSS" />برنامج مفتوح المصدر<ph name="END_LINK_CROS_OSS" /> إضافي.</translation>
 <translation id="6515495397637126556">‏<ph name="PAGE_TITLE" /> - إصدار قناة مطوري البرامج من Google Chrome</translation>
 <translation id="6566149418543181476">‏جارٍ تحديث Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">‏نظام التشغيل Chrome</translation>
 <translation id="6650333065969705433">‏يجب إعادة تشغيل متصفِّح Chrome لاستخدام برنامج Rosetta والسماح له بتشغيل الوسائط المحمية</translation>
 <translation id="6676384891291319759">الدخول إلى الإنترنت</translation>
 <translation id="6679975945624592337">‏السماح بتشغيل Google Chrome في الخلفية</translation>
 <translation id="6750954913813541382">‏لإصلاح الأخطاء الإملائية، يرسِل Chrome النص الذي تكتبه في المتصفّح إلى Google.</translation>
+<translation id="6755885556185485672">‏لم يتم إيقاف "نظام التشغيل Chrome" بشكلٍ صحيح.</translation>
 <translation id="677276454032249905">‏هل تريد الخروج من Chrome على أي حال؟</translation>
 <translation id="683440813066116847">‏قاعدة الوارد إلى Google Chrome Canary للسماح بحركة مرور mDNS.</translation>
 <translation id="6885412569789873916">‏تطبيقات الإصدار التجريبي من Chrome</translation>
@@ -252,6 +257,7 @@
 <translation id="8498858610309223613">‏تم للتو تطبيق تحديث أمان خاص لمتصفِّح Google Chrome. ويمكنك الآن إعادة التشغيل وستتم استعادة علامات التبويب.</translation>
 <translation id="8521348052903287641">‏قاعدة الوارد إلى إصدار مطوري البرامج من Google Chrome للسماح بحركة مرور mDNS.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">هذا الملف الشخصي للعمل منفصِل تمامًا عن ملفك الشخصي.</translation>
 <translation id="8556340503434111824">‏يتوفر إصدار جديد من Google Chrome، وهو أسرع بكثير من ذي قبل.</translation>
 <translation id="861359755029082151">‏يسمح برنامج Rosetta لمتصفِّح Chrome بتشغيل الوسائط المحمية في هذه الصفحة.</translation>
 <translation id="8614913330719544658">‏لا يستجيب Google Chrome. هل تريد إعادة التشغيل الآن؟</translation>
@@ -270,6 +276,7 @@
 <translation id="8907709077090383765">‏للسماح لمتصفِّح Chrome بتشغيل الوسائط المحمية، يجب تثبيت برنامج Rosetta. هل تريد تنزيل البرنامج الآن؟</translation>
 <translation id="8914504000324227558">‏إعادة تشغيل Chrome</translation>
 <translation id="8922193594870374009">‏لإرسال رقم من <ph name="ORIGIN" /> إلى هاتفك الذي يعمل بنظام التشغيل Android، يُرجى تسجيل الدخول إلى متصفِّح Chrome على الجهازَين.</translation>
+<translation id="8986207147630327271">أنت على وشك إضافة ملف شخصي للعمل إلى هذا المتصفِّح ومنح المشرف إمكانية التحكُّم في هذا الملف الشخصي للعمل فقط.</translation>
 <translation id="8999208279178790196">{0,plural, =0{‏يتوفر تحديث لمتصفح Chrome}=1{‏يتوفر تحديث لمتصفح Chrome}two{‏يتوفر تحديث لمتصفح Chrome منذ يومين}few{‏يتوفر تحديث لمتصفح Chrome منذ # أيام}many{‏يتوفر تحديث لمتصفح Chrome منذ # يومًا}other{‏يتوفر تحديث لمتصفح Chrome منذ # يوم}}</translation>
 <translation id="9026991721384951619">‏تعذر على نظام التشغيل Chrome مزامنة البيانات نظرًا لأن تفاصيل تسجيل الدخول إلى حسابك قديمة.</translation>
 <translation id="9067395829937117663">‏يتطلب متصفح Google Chrome نظام التشغيل Windows 7 أو إصدارًا أحدث.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_as.xtb b/chrome/app/resources/google_chrome_strings_as.xtb
index 34e2dbc..273b6f6 100644
--- a/chrome/app/resources/google_chrome_strings_as.xtb
+++ b/chrome/app/resources/google_chrome_strings_as.xtb
@@ -56,6 +56,7 @@
 <translation id="2309047409763057870">এয়া Google Chromeৰ এক গৌণ ইনষ্টলেশ্বন আৰু ইয়াক আপোনাৰ ডিফ’ল্ট ব্ৰাউজাৰ কৰিব নোৱাৰি।</translation>
 <translation id="2348335408836342058">এই ছাইটটোত আপোনাৰ কেমেৰা আৰু মাইক্ৰ’ফ’ন এক্সেছ কৰিবলৈ Chromeক অনুমতিৰ আৱশ্যক</translation>
 <translation id="234869673307233423">Chromeএ আপোনাৰ পাছৱর্ডসমূহ পৰীক্ষা কৰিব নোৱাৰে। পাছত আকৌ চেষ্টা কৰক।</translation>
+<translation id="235650106824528204">কৰ্মস্থানৰ প্ৰ’ফাইলৰ প্ৰশাসকে এই প্ৰ’ফাইলৰ ব্যৱহাৰৰ সময়ত সৃষ্টি হোৱা যিকোনো Chrome ডেটা (যেনে, বুকমাৰ্কৰ সৃষ্টি, ইতিহাস, পাছৱৰ্ড আৰু অন্য ছেটিং) আঁতৰাব পাৰে। <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">আপোনাৰ ড’মেইনত ছিংক কৰা সুবিধাটো নাই বাবে Google Chromeএ আপোনাৰ ডেটা ছিংক কৰিব নোৱাৰে।</translation>
 <translation id="2467438592969358367">Google Chromeএ আপোনাৰ পাছৱর্ডসমূহ ৰপ্তানি কৰিব খোজে। এই কার্যৰ বাবে অনুমতি দিবলৈ আপোনাৰ Windowsৰ পাছৱর্ড দিয়ক।</translation>
 <translation id="2485422356828889247">আনইনষ্টল কৰক</translation>
@@ -177,12 +178,14 @@
 <translation id="573759479754913123">Chrome OSৰ বিষয়ে</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation>
 <translation id="5804318322022881572">Chrome লঞ্চ কৰিব পৰা নগ'ল। পুনৰ চেষ্টা কৰক।</translation>
+<translation id="5851757216820085940">যদি আপোনাৰ একাধিক Google একাউণ্ট থাকে, আপুনি সেইসমূহ নিজৰ <ph name="DEVICE_TYPE" />ত যোগ দিব পাৰে। আপোনাৰ একাউণ্টসমূহ Chrome ব্ৰাউজাৰ আৰু Play Storeৰ লগতে Gmail, Drive আৰু YouTubeৰ দৰে সেৱাত উপলব্ধ হ’ব।<ph name="LINK_BEGIN" />অধিক জানক<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">Google Chromeএ পাছৱর্ডসমূহ সম্পাদনা কৰিবলৈ চেষ্টা কৰি আছে।</translation>
 <translation id="5895138241574237353">ৰিষ্টাৰ্ট কৰক</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - নেটৱর্কত ছাইন ইন</translation>
 <translation id="5940385492829620908">আপোনাৰ ৱেব, বুকমার্ক আৰু Chromeৰ অন্য বস্তুবোৰ ইয়াত থাকে৷</translation>
 <translation id="5941830788786076944">Google Chromeক ডিফ'ল্ট ব্ৰাউজাৰ হিচাপে ছেট কৰক</translation>
 <translation id="6070348360322141662">অতিৰিক্ত সুৰক্ষাৰ বাবে Google Chromeএ আপোনাৰ ডেটা এনক্ৰিপ্ট কৰিব</translation>
+<translation id="608006075545470555">এই ব্ৰাউজাৰত কৰ্মস্থানৰ প্ৰ’ফাইল যোগ দিয়ক</translation>
 <translation id="6113794647360055231">Chrome অধিক ব্যৱহাৰৰ উপযোগী হৈছে</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome বিটা</translation>
@@ -194,10 +197,12 @@
 <translation id="6368958679917195344">অতিৰিক্ত <ph name="BEGIN_LINK_CROS_OSS" />মুক্ত উৎসৰ ছফ্টৱেৰ<ph name="END_LINK_CROS_OSS" />ৰ জৰিয়তে Chrome OSক ব্যৱহাৰযোগ্য কৰা হৈছে।</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation>
 <translation id="6566149418543181476">Google Chrome আপডে’ট কৰি থকা হৈছে (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">Chrome OS ছিষ্টেম</translation>
 <translation id="6650333065969705433">সুৰক্ষিত মিডিয়া প্লে’ কৰাৰ বাবে Rosetta ব্যৱহাৰ কৰিবলৈ আপুনি Chrome ৰিষ্টাৰ্ট কৰিবই লাগিব।</translation>
 <translation id="6676384891291319759">ইণ্টাৰনেট এক্সেছ কৰক</translation>
 <translation id="6679975945624592337">Google Chromeক নেপথ্যত চলিবলৈ দিয়ক</translation>
 <translation id="6750954913813541382">Chromeএ বানানৰ আসোঁৱাহসমূহ আঁতৰাবলৈ আপুনি ব্ৰাউজাৰত টাইপ কৰা পাঠ Googleলৈ পঠিয়ায়</translation>
+<translation id="6755885556185485672">Chrome OS সঠিকভাৱে বন্ধ হোৱা নাছিল।</translation>
 <translation id="677276454032249905">যিকোনো প্ৰকাৰে Chrome বন্ধ কৰিবনে?</translation>
 <translation id="683440813066116847">mDNS ট্ৰেফিকক অনুমতি দিবলৈ Google Chrome বিটাৰ অন্তৰ্গামী নিয়ম।</translation>
 <translation id="6885412569789873916">Chrome বিটা এপ্‌সমূহ</translation>
@@ -256,6 +261,7 @@
 <translation id="8498858610309223613">Google Chromeৰ এটা বিশেষ সুৰক্ষা আপডে’ট এইমাত্ৰ প্ৰয়োগ কৰা হৈছে। এতিয়াই ৰিষ্টাৰ্ট কৰক আৰু আমি আপোনাৰ টেববোৰ পুনঃস্থাপন কৰিম।</translation>
 <translation id="8521348052903287641">mDNS ট্ৰেফিকক অনুমতি দিবলৈ Google Chrome Devৰ অন্তৰ্গামী নিয়ম।</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">এই কৰ্মস্থানৰ প্ৰ’ফাইলটো আপোনাৰ ব্যক্তিগত প্ৰ’ফাইলৰ পৰা সম্পূৰ্ণৰূপে পৃথক।</translation>
 <translation id="8556340503434111824">Google Chromerৰ এটা নতুন সংস্কৰণ উপলব্ধ হৈছে আৰু এইটো সকলোতকৈ দ্ৰুত।</translation>
 <translation id="861359755029082151">এই পৃষ্ঠাখনত সুৰক্ষিত মিডিয়া প্লে’ কৰিবলৈ Rosettaই Chromeক সক্ষম কৰে।</translation>
 <translation id="8614913330719544658">Google Chromeএ সঁহাৰি জনোৱা নাই। এতিয়াই পুনৰ লঞ্চ কৰিবনে?</translation>
@@ -274,6 +280,7 @@
 <translation id="8907709077090383765">সুৰক্ষিত মিডিয়া Chromeএ প্লে’ কৰাৰ সুবিধাটো সক্ষম কৰিবলৈ আপুনি Rosetta ইনষ্টল কৰিব লাগিব। আপুনি এইটো এতিয়াই ইনষ্টল কৰিব বিচাৰেনে?</translation>
 <translation id="8914504000324227558">Chrome পুনৰ লঞ্চ কৰক</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" />ৰ পৰা এটা নম্বৰ আপোনাৰ Android ফ’নলৈ পঠিয়াবলৈ দুয়োটা ডিভাইচত Chromeত ছাইন ইন কৰক।</translation>
+<translation id="8986207147630327271">আপুনি এই ব্ৰাউজাৰত এটা কৰ্মস্থানৰ প্ৰ’ফাইল যোগ দিছে আৰু নিজৰ প্ৰশাসকক কেৱল কৰ্মস্থানৰ প্ৰ’ফাইলটোৰ ওপৰত নিয়ন্ত্ৰণ দিছে।</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chromeৰ এটা আপডে’ট উপলব্ধ}=1{Chromeৰ এটা আপডে’ট উপলব্ধ}one{# দিনৰ বাবে Chromeৰ এটা আপডে’ট উপলব্ধ}other{# দিনৰ বাবে Chromeৰ এটা আপডে’ট উপলব্ধ}}</translation>
 <translation id="9026991721384951619">আপোনাৰ একাউণ্টৰ ছাইন ইনৰ সবিশেষ তথ্যৰ ম্যাদ উকলি যোৱাৰ বাবে Chrome OS আপোনাৰ ডেটা ছিংক কৰিব নোৱাৰিলে।</translation>
 <translation id="9067395829937117663">Google Chromeক Windows 7 বা তাতোকৈ উন্নত সংস্কৰণৰ আৱশ্যক।</translation>
diff --git a/chrome/app/resources/google_chrome_strings_be.xtb b/chrome/app/resources/google_chrome_strings_be.xtb
index 6af20a83..2be0dd2 100644
--- a/chrome/app/resources/google_chrome_strings_be.xtb
+++ b/chrome/app/resources/google_chrome_strings_be.xtb
@@ -56,6 +56,7 @@
 <translation id="2309047409763057870">Гэта другасны ўсталяваны экзэмпляр Google Chrome – яго нельга зрабіць стандартным браўзерам.</translation>
 <translation id="2348335408836342058">Chrome запытвае дазвол на доступ да вашай камеры і мікрафона для гэтага сайта</translation>
 <translation id="234869673307233423">Браўзеру Chrome не ўдаецца праверыць паролі. Паўтарыце спробу пазней.</translation>
+<translation id="235650106824528204">Любыя даныя Chrome, створаныя пры выкарыстанні гэтага профілю (напрыклад, закладкі, гісторыя, паролі і іншыя налады), могуць быць выдалены адміністратарам працоўнага профілю. <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">Браўзеру Google Chrome не ўдалося сінхранізаваць даныя: для вашага дамена сінхранізацыя недаступная.</translation>
 <translation id="2467438592969358367">Google Chrome запытвае дазвол на экспартаванне вашых пароляў. Каб дазволіць гэта, увядзіце пароль Windows.</translation>
 <translation id="2485422356828889247">Выдаліць</translation>
@@ -177,12 +178,14 @@
 <translation id="573759479754913123">Пра Chrome OS</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> – Google Chrome Canary</translation>
 <translation id="5804318322022881572">Не ўдалося запусціць Chrome. Паўтарыце спробу.</translation>
+<translation id="5851757216820085940">Калі ў вас некалькі Уліковых запісаў Google, вы можаце дадаць іх на сваю прыладу <ph name="DEVICE_TYPE" />. Імі можна будзе карыстацца ў Краме Play і браўзеры Chrome, а таксама ў такіх сэрвісах, як Gmail, Дыск і YouTube. <ph name="LINK_BEGIN" />Даведацца больш<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">Google Chrome спрабуе змяніць паролі.</translation>
 <translation id="5895138241574237353">Перазапусціць</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Уваход у сетку</translation>
 <translation id="5940385492829620908">Тут знаходзяцца вашы вэб-старонкі, закладкі і іншыя даныя браўзера Chrome.</translation>
 <translation id="5941830788786076944">Зрабіць Google Chrome стандартным браўзерам</translation>
 <translation id="6070348360322141662">Для дадатковай бяспекі Google Chrome будзе шыфраваць вашы даныя</translation>
+<translation id="608006075545470555">Дадаванне працоўнага профілю ў гэты браўзер</translation>
 <translation id="6113794647360055231">Chrome стаў яшчэ лепшым</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> – Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome (бэта-версія)</translation>
@@ -194,10 +197,12 @@
 <translation id="6368958679917195344">Chrome OS працуе дзякуючы дадатковаму <ph name="BEGIN_LINK_CROS_OSS" />праграмнаму забеспячэнню з адкрытым зыходным кодам<ph name="END_LINK_CROS_OSS" />.</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" />: Google Chrome для распрацоўшчыкаў</translation>
 <translation id="6566149418543181476">Google Chrome абнаўляецца (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">Сістэма Chrome OS</translation>
 <translation id="6650333065969705433">Каб прайграваць абароненае мультымедыйнае змесціва пры дапамозе праграмы Rosetta, трэба перазапусціць Chrome.</translation>
 <translation id="6676384891291319759">Доступ у інтэрнэт</translation>
 <translation id="6679975945624592337">Дазволіць браўзеру Google Chrome працаваць у фонавым рэжыме</translation>
 <translation id="6750954913813541382">Для выпраўлення арфаграфічных памылак Chrome адпраўляе ў Google тэкст, які вы набіраеце ў браўзеры</translation>
+<translation id="6755885556185485672">Аперацыйная сістэма Chrome OS завяршыла працу некарэктна.</translation>
 <translation id="677276454032249905">Усё роўна выйсці з Chrome?</translation>
 <translation id="683440813066116847">Уваходнае правіла для Google Chrome Canary, якое дазваляе трафік mDNS.</translation>
 <translation id="6885412569789873916">Праграмы бэта-версіі Chrome</translation>
@@ -256,6 +261,7 @@
 <translation id="8498858610309223613">Толькі што было прыменена спецыяльнае абнаўленне бяспекі для Google Chrome. Перазапусціце браўзер, і вашы ўкладкі будуць адноўлены.</translation>
 <translation id="8521348052903287641">Уваходнае правіла версіі Google Chrome для распрацоўшчыкаў, якое дазваляе трафік mDNS.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">Гэты працоўны профіль і ваш асабісты профіль з'яўляюцца поўнасцю асобнымі профілямі.</translation>
 <translation id="8556340503434111824">Даступная новая версія Google Chrome. Яшчэ хутчэйшая.</translation>
 <translation id="861359755029082151">Дзякуючы праграме Rosetta браўзер Chrome зможа прайграваць абароненае мультымедыйнае змесціва на гэтай старонцы.</translation>
 <translation id="8614913330719544658">Google Chrome не адказвае. Перазапусціць?</translation>
@@ -274,6 +280,7 @@
 <translation id="8907709077090383765">Каб прайграваць у браўзеры Chome абароненае мультымедыйнае змесціва, трэба ўсталяваць праграму Rosetta. Зрабіць гэта зараз?</translation>
 <translation id="8914504000324227558">Перазапусціць Chrome</translation>
 <translation id="8922193594870374009">Каб адпраўляць нумары з <ph name="ORIGIN" /> на свой тэлефон Android, увайдзіце ў Chrome на абедзвюх прыладах.</translation>
+<translation id="8986207147630327271">Вы дадаяце працоўны профіль у гэты браўзер і даяце адміністратару кантроль толькі над працоўным профілем.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Ёсць абнаўленне Chrome}=1{Ёсць абнаўленне Chrome}one{Абнаўленне Chrome выйшла ўжо # дзень таму}few{Абнаўленне Chrome выйшла # дні таму}many{Абнаўленне Chrome выйшла # дзён таму}other{Абнаўленне Chrome выйшла # дня таму}}</translation>
 <translation id="9026991721384951619">Сінхранізаваць даныя ў сістэме Chrome OS не ўдалося: даныя ўліковага запісу для ўваходу састарэлі.</translation>
 <translation id="9067395829937117663">Для браўзера Google Chrome патрабуецца Windows 7 або навейшая версія.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_cs.xtb b/chrome/app/resources/google_chrome_strings_cs.xtb
index 5f75db2..b2765358 100644
--- a/chrome/app/resources/google_chrome_strings_cs.xtb
+++ b/chrome/app/resources/google_chrome_strings_cs.xtb
@@ -56,6 +56,7 @@
 <translation id="2309047409763057870">Toto je druhá instalace prohlížeče Google Chrome. Tuto instalaci nelze nastavit jako výchozí prohlížeč.</translation>
 <translation id="2348335408836342058">Chrome pro tento web potřebuje oprávnění k přístupu k fotoaparátu a mikrofonu</translation>
 <translation id="234869673307233423">Chrome nemůže zkontrolovat vaše hesla. Zkuste to později.</translation>
+<translation id="235650106824528204">Veškerá data prohlížeče Chrome vygenerovaná během používání tohoto profilu (jako je vytvoření záložek, historie, hesel a další nastavení) může administrátor pracovního profilu odstranit. <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">Google Chrome nemohl synchronizovat vaše data, protože Synchronizace ve vaší doméně není k dispozici.</translation>
 <translation id="2467438592969358367">Google Chrome chce exportovat vaše hesla. Tato akce vyžaduje zadání hesla systému Windows.</translation>
 <translation id="2485422356828889247">Odinstalovat</translation>
@@ -176,12 +177,14 @@
 <translation id="573759479754913123">O operačním systému Chrome OS</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> – Google Chrome Canary</translation>
 <translation id="5804318322022881572">Chrome nelze spustit. Zkuste to znovu.</translation>
+<translation id="5851757216820085940">Pokud máte několik účtů Google, můžete si je přidat do zařízení <ph name="DEVICE_TYPE" />. Vaše účty budou k dispozici v prohlížeči Chrome a Obchodě Play a také ve službách, jako jsou Gmail, Disk a YouTube.<ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">Google Chrome se pokouší upravit hesla.</translation>
 <translation id="5895138241574237353">Restartovat</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – přihlášení k síti</translation>
 <translation id="5940385492829620908">Zde jsou k dispozici vaše weby, záložky a další obsah Chromu.</translation>
 <translation id="5941830788786076944">Nastavit Google Chrome jako výchozí prohlížeč</translation>
 <translation id="6070348360322141662">V zájmu lepšího zabezpečení bude Google Chrome vaše data šifrovat</translation>
+<translation id="608006075545470555">Přidat do tohoto prohlížeče pracovní profil</translation>
 <translation id="6113794647360055231">Chrome je opět o něco lepší</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome Beta</translation>
@@ -193,10 +196,12 @@
 <translation id="6368958679917195344">Chrome OS by nemohl existovat bez dalšího <ph name="BEGIN_LINK_CROS_OSS" />softwaru s otevřeným zdrojovým kódem<ph name="END_LINK_CROS_OSS" />.</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation>
 <translation id="6566149418543181476">Aktualizace prohlížeče Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">Systém Chrome OS</translation>
 <translation id="6650333065969705433">Aby bylo možné přehrávat chráněná média pomocí nástroje Rosetta, je třeba restartovat Chrome.</translation>
 <translation id="6676384891291319759">Přístup k internetu</translation>
 <translation id="6679975945624592337">Nechat Google Chrome běžet na pozadí</translation>
 <translation id="6750954913813541382">Text zadaný v prohlížeči odesílá Chrome kvůli opravě pravopisných chyb do Googlu</translation>
+<translation id="6755885556185485672">Systém Chrome OS nebyl řádně ukončen.</translation>
 <translation id="677276454032249905">Přesto Chrome ukončit?</translation>
 <translation id="683440813066116847">Pravidlo příchozího provozu pro aplikaci Google Chrome Canary, které povolí provoz mDNS.</translation>
 <translation id="6885412569789873916">Chrome Beta – aplikace</translation>
@@ -255,6 +260,7 @@
 <translation id="8498858610309223613">Právě byla nainstalována mimořádná bezpečnostní aktualizace prohlížeče Google Chrome. Restartujte jej, vaše karty budou obnoveny.</translation>
 <translation id="8521348052903287641">Pravidlo příchozího provozu pro aplikaci Google Chrome Dev, které povolí provoz mDNS.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">Tento pracovní profil je zcela oddělen od vašeho osobního profilu.</translation>
 <translation id="8556340503434111824">Je k dispozici nová verze prohlížeče Google Chrome, ještě rychlejší než ty předchozí.</translation>
 <translation id="861359755029082151">Rosetta umožňuje prohlížeči Chrome na této stránce přehrávat chráněná média.</translation>
 <translation id="8614913330719544658">Google Chrome neodpovídá. Restartovat?</translation>
@@ -273,6 +279,7 @@
 <translation id="8907709077090383765">Aby prohlížeč Chrome mohl přehrávat chráněná média, je třeba nainstalovat nástroj Rosetta. Chcete ho nainstalovat hned?</translation>
 <translation id="8914504000324227558">Znovu spustit Chrome</translation>
 <translation id="8922193594870374009">Chcete-li poslat číslo z webu <ph name="ORIGIN" /> na svůj telefon Android, v obou zařízeních se přihlaste do Chromu.</translation>
+<translation id="8986207147630327271">Přidáváte do tohoto prohlížeče pracovní profil a povolujete administrátorovi ovládat pouze pracovní profil.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Je k dispozici aktualizace Chromu}=1{Je k dispozici aktualizace Chromu}few{Již # dny je k dispozici aktualizace Chromu}many{Již # dne je k dispozici aktualizace Chromu}other{Již # dní je k dispozici aktualizace Chromu}}</translation>
 <translation id="9026991721384951619">Chrome OS vaše data nemohl synchronizovat, protože vaše přihlašovací údaje nejsou aktuální.</translation>
 <translation id="9067395829937117663">Google Chrome vyžaduje systém Windows 7 nebo vyšší.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_en-GB.xtb b/chrome/app/resources/google_chrome_strings_en-GB.xtb
index 96c6046..29ccf25 100644
--- a/chrome/app/resources/google_chrome_strings_en-GB.xtb
+++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -168,6 +168,8 @@
 Google Chrome is unable to recover your settings.</translation>
 <translation id="556024056938947818">Google Chrome is trying to show passwords.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
+<translation id="5655746611259367388">You can manage this and other Google Accounts that you've added for <ph name="USER_NAME" /> from one place in <ph name="LINK_BEGIN" />Settings<ph name="LINK_END" />.
+          Permissions that you have granted to websites in the Chrome Browser and apps from Google Play may apply to all accounts.</translation>
 <translation id="5657226924540934362">If a setting doesn't show on this page, look in your <ph name="LINK_BEGIN" />
       Chrome OS settings<ph name="LINK_END" /></translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> may be dangerous, so Chrome has blocked it.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hy.xtb b/chrome/app/resources/google_chrome_strings_hy.xtb
index 1dd915e..b81ca25 100644
--- a/chrome/app/resources/google_chrome_strings_hy.xtb
+++ b/chrome/app/resources/google_chrome_strings_hy.xtb
@@ -166,6 +166,8 @@
 Google Chrome-ը չի կարողանում վերականգնել ձեր կարգավորումները:</translation>
 <translation id="556024056938947818">Google Chrome-ը փորձում է ցույց տալ գաղտնաբառերը:</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
+<translation id="5655746611259367388">Դուք կարող եք կառավարել <ph name="USER_NAME" />-ի այս և մյուս Google հաշիվները <ph name="LINK_BEGIN" />Կարգավորումներում<ph name="LINK_END" />։
+          Chrome դիտարկիչում և Google Play-ից ներբեռնված հավելվածներում կայքերին տրված ձեր թույլտվությունները կարող են կիրառվել բոլոր հաշիվների համար։</translation>
 <translation id="5657226924540934362">Եթե որևէ կարգավորում չտեսնեք այս էջում, փնտրեք այն ձեր <ph name="LINK_BEGIN" />
       Chrome OS-ի կարգավորումներում<ph name="LINK_END" /></translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> ֆայլը կարող է վտանգավոր լինել, և Chrome-ն արգելափակել է այն։</translation>
diff --git a/chrome/app/resources/google_chrome_strings_iw.xtb b/chrome/app/resources/google_chrome_strings_iw.xtb
index 751ff24..35106a7 100644
--- a/chrome/app/resources/google_chrome_strings_iw.xtb
+++ b/chrome/app/resources/google_chrome_strings_iw.xtb
@@ -52,6 +52,7 @@
 <translation id="2309047409763057870">‏זוהי התקנה משנית של Google Chrome, ולא ניתן להפוך אותו לדפדפן ברירת המחדל שלך.</translation>
 <translation id="2348335408836342058">‏Chrome זקוק להרשאת גישה אל המצלמה והמיקרופון בשביל האתר הזה</translation>
 <translation id="234869673307233423">‏Chrome לא יכול לבדוק את הסיסמאות שלך. כדאי לנסות שוב מאוחר יותר.</translation>
+<translation id="235650106824528204">‏המנהל של פרופיל העבודה יכול להסיר נתוני Chrome שמופקים בזמן השימוש בפרופיל (כמו יצירת סימניות, היסטוריה, סיסמאות והגדרות נוספות). <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">‏Google Chrome לא הצליח לסנכרן את הנתונים שלך מפני שהסנכרון אינו זמין עבור הדומיין שלך.</translation>
 <translation id="2467438592969358367">‏Google Chrome רוצה לייצא את הסיסמאות שלך. יש להקליד את הסיסמה שלך ל-Windows כדי לאפשר זאת.</translation>
 <translation id="2485422356828889247">הסרת התקנה</translation>
@@ -169,12 +170,14 @@
 <translation id="573759479754913123">‏מידע על מערכת ההפעלה של Chrome</translation>
 <translation id="5795887333006832406">‏<ph name="PAGE_TITLE" /> - Google Chrome בגרסת Canary</translation>
 <translation id="5804318322022881572">‏לא ניתן היה להפעיל את Chrome. יש לנסות שוב.</translation>
+<translation id="5851757216820085940">‏אם יש לך מספר חשבונות Google, ניתן להוסיף אותם למכשיר ה-<ph name="DEVICE_TYPE" />. החשבונות יהיו זמינים בדפדפן Chrome ובחנות Play, בנוסף לשירותים כמו Gmail, ‏Drive ו-YouTube‏.<ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">‏Google Chrome מנסה לערוך את הסיסמאות.</translation>
 <translation id="5895138241574237353">הפעלה מחדש</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – כניסה לרשת</translation>
 <translation id="5940385492829620908">‏היסטוריית האתרים, הסימניות ופריטים נוספים מ-Chrome נמצאים כאן.</translation>
 <translation id="5941830788786076944">‏הפוך את Google Chrome לדפדפן ברירת המחדל</translation>
 <translation id="6070348360322141662">‏לשיפור האבטחה, Google Chrome יצפין את הנתונים</translation>
+<translation id="608006075545470555">הוספת פרופיל עבודה לדפדפן זה</translation>
 <translation id="6113794647360055231">‏Chrome השתפר</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878">‏<ph name="PAGE_TITLE" /> - Google Chrome בגרסת ביטא</translation>
@@ -186,10 +189,12 @@
 <translation id="6368958679917195344">‏השימוש במערכת ההפעלה של Chrome מתאפשר באמצעות <ph name="BEGIN_LINK_CROS_OSS" />תוכנת קוד פתוח<ph name="END_LINK_CROS_OSS" /> נוספת.</translation>
 <translation id="6515495397637126556">‏<ph name="PAGE_TITLE" /> - Google Chrome בגרסת פיתוח</translation>
 <translation id="6566149418543181476">‏מעדכן את Google Chrome‏ (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">‏מערכת Chrome OS</translation>
 <translation id="6650333065969705433">‏כדי להשתמש ב-Rosetta כדי להפעיל קובצי מדיה מוגנים, עליך להפעיל מחדש את Chrome.</translation>
 <translation id="6676384891291319759">גישה אל האינטרנט</translation>
 <translation id="6679975945624592337">‏Google Chrome יכול לפעול ברקע</translation>
 <translation id="6750954913813541382">‏כדי לתקן שגיאות כתיב, הטקסט שהוקלד על ידך בדפדפן נשלח אל Google על ידי Chrome</translation>
+<translation id="6755885556185485672">‏כיבוי Chrome OS לא בוצע כהלכה.</translation>
 <translation id="677276454032249905">‏לסגור את Chrome בכל זאת?</translation>
 <translation id="683440813066116847">‏כלל נכנס עבור הגרסה הניסיונית של Google Chrome על מנת לאפשר תנועת mDNS.</translation>
 <translation id="6885412569789873916">‏אפליקציות לגרסת הבטא של Chrome</translation>
@@ -248,6 +253,7 @@
 <translation id="8498858610309223613">‏בוצע עדכון אבטחה מיוחד של Google Chrome. עכשיו עליך להפעיל מחדש את Chrome ואנחנו נשחזר את הכרטיסיות.</translation>
 <translation id="8521348052903287641">‏כלל נכנס לגרסת הפיתוח של Google Chrome כדי לאפשר תנועת mDNS.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">פרופיל העבודה שלך נפרד לחלוטין מהפרופיל האישי שלך.</translation>
 <translation id="8556340503434111824">‏גרסה חדשה של Google Chrome זמינה, והיא מהירה יותר מאי פעם.</translation>
 <translation id="861359755029082151">‏Rosetta מאפשרת ל-Chrome להפעיל קובצי מדיה מוגנים בדף זה.</translation>
 <translation id="8614913330719544658">‏Google Chrome אינו מגיב. להפעיל מחדש עכשיו?</translation>
@@ -266,6 +272,7 @@
 <translation id="8907709077090383765">‏כדי לאפשר ל-Chrome להפעיל קובצי מדיה מוגנים, עליך להתקין Rosetta. רוצה להתקין עכשיו?</translation>
 <translation id="8914504000324227558">‏הפעלה מחדש של Chrome</translation>
 <translation id="8922193594870374009">‏כדי לשלוח מספר מ-<ph name="ORIGIN" /> לטלפון Android, יש להיכנס אל Chrome בשני המכשירים.</translation>
+<translation id="8986207147630327271">בחרת להוסיף פרופיל עבודה לדפדפן זה ולתת למנהל המערכת שליטה רק על פרופיל העבודה.</translation>
 <translation id="8999208279178790196">{0,plural, =0{‏יש עדכון זמין ל-Chrome}=1{‏יש עדכון זמין ל-Chrome}two{‏עדכון ל-Chrome זמין כבר # ימים}many{‏עדכון ל-Chrome זמין כבר # ימים}other{‏עדכון ל-Chrome זמין כבר # ימים}}</translation>
 <translation id="9026991721384951619">‏מערכת ההפעלה של Chrome לא הצליחה לסנכרן את הנתונים שלך מפני שפרטי הכניסה של חשבונך אינם מעודכנים.</translation>
 <translation id="9067395829937117663">‏כדי להשתמש ב-Google Chrome יש צורך ב-Windows מגירסה 7 ואילך.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ja.xtb b/chrome/app/resources/google_chrome_strings_ja.xtb
index 22fbe9e..53e8071 100644
--- a/chrome/app/resources/google_chrome_strings_ja.xtb
+++ b/chrome/app/resources/google_chrome_strings_ja.xtb
@@ -52,6 +52,7 @@
 <translation id="2309047409763057870">この Google Chrome はセカンダリ インストールのため、既定のブラウザには設定できません。</translation>
 <translation id="2348335408836342058">このサイトを利用するには、Chrome でカメラとマイクの使用を許可する必要があります</translation>
 <translation id="234869673307233423">Chrome でパスワードを確認できません。しばらくしてからもう一度お試しください。</translation>
+<translation id="235650106824528204">このプロファイルの使用中に生成された Chrome データ(ブックマーク、履歴、パスワード、他の設定など)は、仕事用プロファイルの管理者によって削除される場合があります。<ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">お使いのドメインでは同期を利用できないため、Google Chrome はデータを同期できませんでした。</translation>
 <translation id="2467438592969358367">Google Chrome からパスワードをエクスポートするための許可を求められています。許可するには Windows のパスワードを入力してください。</translation>
 <translation id="2485422356828889247">アンインストール</translation>
@@ -169,12 +170,14 @@
 <translation id="573759479754913123">Chrome OS について</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation>
 <translation id="5804318322022881572">Chrome を起動できませんでした。もう一度お試しください。</translation>
+<translation id="5851757216820085940">Google アカウントを複数お持ちの場合、<ph name="DEVICE_TYPE" /> に追加できます。アカウントは Chrome ブラウザや Play ストアのほか、Gmail、ドライブ、YouTube などのサービスで使用できます。<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">Google Chrome でパスワードを編集しようとしています。</translation>
 <translation id="5895138241574237353">再起動</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - ネットワークにログイン</translation>
 <translation id="5940385492829620908">ウェブ、ブックマーク、その他の Chrome データを好みに設定できます。</translation>
 <translation id="5941830788786076944">Google Chrome を既定のブラウザにする</translation>
 <translation id="6070348360322141662">セキュリティ強化のため、データは Google Chrome で暗号化されます</translation>
+<translation id="608006075545470555">このブラウザに仕事用プロファイルを追加</translation>
 <translation id="6113794647360055231">進化する Chrome</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
@@ -186,10 +189,12 @@
 <translation id="6368958679917195344">Chrome OS は、さらに追加の<ph name="BEGIN_LINK_CROS_OSS" />オープンソース ソフトウェア<ph name="END_LINK_CROS_OSS" />によって実現しました。</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation>
 <translation id="6566149418543181476">Google Chrome を更新しています(<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">Chrome OS システム</translation>
 <translation id="6650333065969705433">Rosetta を使用して、保護されたメディアを再生するには、Chrome を再起動する必要があります。</translation>
 <translation id="6676384891291319759">インターネットにアクセス</translation>
 <translation id="6679975945624592337">Google Chrome をバックグラウンドで実行する</translation>
 <translation id="6750954913813541382">スペルミスを修正するために、ブラウザに入力したテキストが Chrome から Google に送信されます</translation>
+<translation id="6755885556185485672">Chrome OS は正しく終了しませんでした。</translation>
 <translation id="677276454032249905">今すぐ Chrome を終了しますか?</translation>
 <translation id="683440813066116847">mDNS トラフィックを許可する Google Chrome Canary のインバウンド ルールです。</translation>
 <translation id="6885412569789873916">Chrome ベータ版アプリ</translation>
@@ -248,6 +253,7 @@
 <translation id="8498858610309223613">Google Chrome の特別なセキュリティ アップデートが適用されました。今すぐ再起動してください。タブは復元されます。</translation>
 <translation id="8521348052903287641">mDNS トラフィックを許可する Google Chrome Dev のインバウンド ルールです。</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">この仕事用プロファイルは個人用プロファイルとは別に管理されます。</translation>
 <translation id="8556340503434111824">Google クロームブラウザがバージョンアップ!是非お試しください。</translation>
 <translation id="861359755029082151">Rosetta をインストールすると、このページ上の保護されたメディアを Chrome で再生できるようになります。</translation>
 <translation id="8614913330719544658">Google Chrome が応答しません。今すぐ再起動しますか?</translation>
@@ -266,6 +272,7 @@
 <translation id="8907709077090383765">保護されたメディアを Chrome で再生できるようにするには、Rosetta をインストールする必要があります。今すぐインストールしますか?</translation>
 <translation id="8914504000324227558">Chrome の再起動</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> から Android スマートフォンに番号を送信するには、両方のデバイスで Chrome にログインしてください。</translation>
+<translation id="8986207147630327271">このブラウザに仕事用プロファイルを追加し、管理者がこの仕事用プロファイルのみを管理できるようにします。</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chrome のアップデートが利用可能です}=1{Chrome のアップデートが利用可能です}other{Chrome のアップデートが利用可能になってから # 日経過しています}}</translation>
 <translation id="9026991721384951619">アカウントのログイン情報が最新ではないため、Chrome OS はデータを同期できませんでした。</translation>
 <translation id="9067395829937117663">Google Chrome のご利用には Windows 7 以上が必要です。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_km.xtb b/chrome/app/resources/google_chrome_strings_km.xtb
index 2d32d74..e6cd6ac0 100644
--- a/chrome/app/resources/google_chrome_strings_km.xtb
+++ b/chrome/app/resources/google_chrome_strings_km.xtb
@@ -56,6 +56,7 @@
 <translation id="2309047409763057870">នេះគឺជាការដំឡើេង Google Chrome បន្ទាប់បន្សំ ហើយវាមិនអាចធ្វើជាកម្មវិធីរុករកលំនាំដើមរបស់អ្នកបានទេ។</translation>
 <translation id="2348335408836342058">Chrome ត្រូវការ​ការអនុញ្ញាត​ដើម្បី​ចូលប្រើ​កាមេរ៉ា និង​មីក្រូហ្វូន​របស់អ្នក​សម្រាប់​ទំព័រនេះ</translation>
 <translation id="234869673307233423">Chrome មិន​អាចពិនិត្យ​ពាក្យសម្ងាត់របស់អ្នកបានទេ។ សូមព្យាយាមម្តងទៀតនៅពេលក្រោយ។</translation>
+<translation id="235650106824528204">អ្នកគ្រប់គ្រងកម្រងព័ត៌មានការងារអាចលុបទិន្នន័យ Chrome ទាំងឡាយ ដែលបង្កើតអំឡុងពេលប្រើកម្រងព័ត៌មាននេះ (ដូចជាការបង្កើតចំណាំ ប្រវត្តិ ពាក្យសម្ងាត់ និងការកំណត់ផ្សេងទៀត)។ <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">Google Chrome មិនអាចធ្វើសមកម្មទិន្នន័យរបស់អ្នកទេ ពីព្រោះ សមកម្ម មិនមានសម្រាប់ដែនរបស់អ្នកទេ។</translation>
 <translation id="2467438592969358367">Google Chrome ចង់​នាំចេញពាក្យ​សម្ងាត់​របស់អ្នក​។ សូមវាយ​បញ្ចូលពាក្យ​សម្ងាត់ Windows របស់អ្នក​ដើម្បីអនុញ្ញាត​ការនាំចេញ​នេះ។</translation>
 <translation id="2485422356828889247">លុបការតំឡើង</translation>
@@ -177,12 +178,14 @@
 <translation id="573759479754913123">អំពី Chrome OS</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation>
 <translation id="5804318322022881572">មិន​អាច​ចាប់ផ្ដើម Chrome បានទេ។ សូមព្យាយាម​ម្ដង​ទៀត។</translation>
+<translation id="5851757216820085940">ប្រសិនបើអ្នកមានគណនី Google ច្រើន អ្នកអាចបញ្ចូលគណនីទាំងនោះទៅក្នុង <ph name="DEVICE_TYPE" /> របស់អ្នក។ គណនីរបស់អ្នកនឹងអាចប្រើបាននៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិត Chrome និង Play Store ព្រមទាំងសេវាកម្មផ្សេងៗដូចជា Gmail, ថាស និង YouTube ជាដើម។<ph name="LINK_BEGIN" />ស្វែងយល់បន្ថែម<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">Google Chrome កំពុង​ព្យាយាម​កែ​ពាក្យសម្ងាត់​។</translation>
 <translation id="5895138241574237353">ចាប់ផ្តើមឡើងវិញ</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - ការចូល​បណ្ដាញ</translation>
 <translation id="5940385492829620908">គេហទំព័រ ចំណាំ និងរបស់ផ្សេងទៀតរបស់ Chrome របស់អ្នកនៅទីនេះ។</translation>
 <translation id="5941830788786076944">ដាក់ Google Chrome ជាកម្មវិធីរុករកលំនាំដើម</translation>
 <translation id="6070348360322141662">ដើម្បី​ទទួលបាន​សុវត្ថិភាព​បន្ថែម Google Chrome នឹង​អ៊ិនគ្រីប​ទិន្នន័យ​របស់​អ្នក</translation>
+<translation id="608006075545470555">បញ្ចូលកម្រងព័ត៌មានការងារទៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិតនេះ</translation>
 <translation id="6113794647360055231">Chrome កាន់តែប្រសើរជាងមុន</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
@@ -194,10 +197,12 @@
 <translation id="6368958679917195344">Chrome OS អាចបង្កើតឡើងដោយ <ph name="BEGIN_LINK_CROS_OSS" />កម្មវិធីប្រភពបើកចំហរ<ph name="END_LINK_CROS_OSS" /> បន្ថែម។</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation>
 <translation id="6566149418543181476">កំពុងអាប់ដេត Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">ប្រព័ន្ធ Chrome OS</translation>
 <translation id="6650333065969705433">ដើម្បីប្រើ Rosetta ឱ្យចាក់មេឌៀ​ដែលមាន​ការការពារ អ្នកត្រូវតែ​ចាប់ផ្ដើម Chrome ឡើងវិញ។</translation>
 <translation id="6676384891291319759">ចូលប្រើអ៊ីនធឺណិត</translation>
 <translation id="6679975945624592337">អនុញ្ញាត​ឱ្យ Google Chrome ដំណើរការ​នៅ​ផ្ទៃខាងក្រោយ</translation>
 <translation id="6750954913813541382">Chrome ផ្ញើអក្សរដែលអ្នក​វាយបញ្ចូលនៅក្នុង​កម្មវិធីរុករកតាមអ៊ីនធឺណិតទៅ Google ដើម្បីកែ​កំហុសអក្ខរាវិរុទ្ធ</translation>
+<translation id="6755885556185485672">Chrome OS មិនបានបិទត្រឹមត្រូវទេ។</translation>
 <translation id="677276454032249905">នៅ​តែ​ចង់​ចាក​ចេញពី Chrome ឬ?</translation>
 <translation id="683440813066116847">វិន័យត្រលប់ចូលសម្រាប់  Google Chrome Canary ដើម្បីអនុញ្ញាតចរាចរណ៍ mDNS។</translation>
 <translation id="6885412569789873916">កម្មវិធី Chrome បេតា</translation>
@@ -256,6 +261,7 @@
 <translation id="8498858610309223613">ការធ្វើបច្ចុប្បន្នភាព​ផ្នែកសុវត្ថិភាព​ពិសេសសម្រាប់ Google Chrome ទើបតែ​ត្រូវបានអនុវត្ត។ សូមចាប់ផ្ដើម​ឡើងវិញឥឡូវនេះ នោះយើងនឹង​ស្ដារផ្ទាំង​របស់អ្នក។</translation>
 <translation id="8521348052903287641">ក្បួនត្រលប់ចូលសម្រាប់ Google Chrome Dev ដែលត្រូវអនុញ្ញាតលើការធ្វើចរាចររបស់ mDNS ។</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">កម្រងព័ត៌មានការងារនេះគឺដាច់ដោយឡែកពីកម្រង​ព័ត៌មាន​ផ្ទាល់​ខ្លួនរបស់អ្នកទាំងស្រុង។</translation>
 <translation id="8556340503434111824">មានកំណែ Google Chrome ថ្មី ហើយវាលឿនជាងពេលណាទាំងអស់។</translation>
 <translation id="861359755029082151">Rosetta អនុញ្ញាតឱ្យ Chrome ចាក់​មេឌៀដែលមាន​ការការពារ​នៅលើ​ទំព័រនេះ។</translation>
 <translation id="8614913330719544658">Google Chrome មិនឆ្លើយតប។ បើកដំណើរការឡើងវិញឥឡូវនេះ?</translation>
@@ -274,6 +280,7 @@
 <translation id="8907709077090383765">ដើម្បីអនុញ្ញាតឱ្យ Chrome ចាក់​មេឌៀដែលមាន​ការការពារ អ្នកត្រូវ​ដំឡើង Rosetta។ តើអ្នកចង់ដំឡើង​វាឥឡូវនេះ​ដែរទេ?</translation>
 <translation id="8914504000324227558">ដំណើរការ Chrome ឡើងវិញ</translation>
 <translation id="8922193594870374009">ដើម្បីផ្ញើ​លេខទូរសព្ទពី <ph name="ORIGIN" /> ទៅទូរសព្ទ Android របស់អ្នក សូមចូល Chrome នៅលើឧបករណ៍​ទាំងពីរ។</translation>
+<translation id="8986207147630327271">អ្នកកំពុងបញ្ចូលកម្រងព័ត៌មានការងារទៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិតនេះ និងផ្ដល់លទ្ធភាពឱ្យអ្នកគ្រប់គ្រងរបស់អ្នកគ្រប់គ្រងតែកម្រងព័ត៌មានការងារប៉ុណ្ណោះ។</translation>
 <translation id="8999208279178790196">{0,plural, =0{មាន​កំណែថ្មី​របស់ Chrome ហើយ}=1{មាន​កំណែថ្មី​របស់ Chrome ហើយ}other{មាន​កំណែថ្មី​របស់ Chrome រយៈពេល # ថ្ងៃហើយ}}</translation>
 <translation id="9026991721384951619">Chrome OS មិនអាចធ្វើសមកម្មទិន្នន័យរបស់អ្នកទេ ពីព្រោះព័ត៌មានលំអិតគណនីចូលរបស់អ្នកហួសសម័យហើយ។</translation>
 <translation id="9067395829937117663">Google Chrome តម្រូវឲ្យមានប្រព័ន្ធប្រតិបត្តិការ Windows 7 ឬខ្ពស់ជាងនេះ។</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ko.xtb b/chrome/app/resources/google_chrome_strings_ko.xtb
index 8742130..de3b3da 100644
--- a/chrome/app/resources/google_chrome_strings_ko.xtb
+++ b/chrome/app/resources/google_chrome_strings_ko.xtb
@@ -56,6 +56,7 @@
 <translation id="2309047409763057870">Chrome의 보조 설치이며 기본 브라우저로 설정할 수 없습니다.</translation>
 <translation id="2348335408836342058">이 사이트에서 카메라와 마이크에 액세스하려면 Chrome에 권한이 필요합니다</translation>
 <translation id="234869673307233423">Chrome에서 비밀번호를 확인할 수 없습니다. 나중에 다시 시도하세요.</translation>
+<translation id="235650106824528204">북마크, 방문 기록, 비밀번호, 기타 설정 생성 등 이 프로필을 사용하는 동안 생성된 모든 Chrome 데이터는 직장 프로필 관리자가 삭제할 수 있습니다. <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">도메인에서 동기화를 사용할 수 없어 Chrome에서 데이터를 동기화하지 못했습니다.</translation>
 <translation id="2467438592969358367">Chrome에서 비밀번호를 내보내려고 합니다. 허용하려면 Windows 비밀번호를 입력하세요.</translation>
 <translation id="2485422356828889247">제거</translation>
@@ -177,12 +178,14 @@
 <translation id="573759479754913123">Chrome OS 정보</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Chrome Canary</translation>
 <translation id="5804318322022881572">Chrome을 실행할 수 없습니다. 다시 시도해 보세요.</translation>
+<translation id="5851757216820085940">Google 계정이 여러 개인 경우 <ph name="DEVICE_TYPE" />에 추가할 수 있습니다. Gmail, 드라이브, YouTube 같은 서비스와 Chrome 브라우저, Play Store에서 계정을 사용할 수 있습니다.<ph name="LINK_BEGIN" />자세히 알아보기<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">Chrome에서 비밀번호를 수정하려고 합니다.</translation>
 <translation id="5895138241574237353">다시 시작</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - 네트워크 로그인</translation>
 <translation id="5940385492829620908">웹, 북마크 및 기타 Chrome 콘텐츠가 여기에 저장됩니다.</translation>
 <translation id="5941830788786076944">Chrome을 기본 브라우저로</translation>
 <translation id="6070348360322141662">보안 강화를 위해 Chrome에서 사용자 데이터를 암호화합니다.</translation>
+<translation id="608006075545470555">이 브라우저에 직장 프로필 추가</translation>
 <translation id="6113794647360055231">더욱 업그레이드된 Chrome</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Chrome 베타</translation>
@@ -194,10 +197,12 @@
 <translation id="6368958679917195344">Chrome OS는 추가 <ph name="BEGIN_LINK_CROS_OSS" />오픈소스 소프트웨어<ph name="END_LINK_CROS_OSS" />를 사용했습니다.</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - 개발자용 Chrome</translation>
 <translation id="6566149418543181476">Chrome 업데이트 중(<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">Chrome OS 시스템</translation>
 <translation id="6650333065969705433">Rosetta를 사용하여 보호된 미디어를 재생하려면 Chrome을 다시 시작해야 합니다</translation>
 <translation id="6676384891291319759">인터넷 연결</translation>
 <translation id="6679975945624592337">백그라운드에서 Chrome을 실행</translation>
 <translation id="6750954913813541382">맞춤법 오류를 바로잡기 위해 Chrome에서 브라우저에 입력된 텍스트를 Google로 전송합니다.</translation>
+<translation id="6755885556185485672">Chrome OS가 제대로 종료되지 않았습니다.</translation>
 <translation id="677276454032249905">Chrome을 종료하시겠습니까?</translation>
 <translation id="683440813066116847">Chrome Canary가 mDNS 트래픽을 허용하는 인바운드 규칙입니다.</translation>
 <translation id="6885412569789873916">Chrome 베타 앱</translation>
@@ -256,6 +261,7 @@
 <translation id="8498858610309223613">Chrome 특별 보안 업데이트를 방금 적용했습니다. 다시 시작하면 탭이 복원됩니다.</translation>
 <translation id="8521348052903287641">Chrome 개발자에서 mDNS 트래픽을 허용할 때 사용되는 인바운드 규칙입니다.</translation>
 <translation id="8540666473246803645">Chrome</translation>
+<translation id="8550334526674375523">이 직장 프로필은 개인 프로필과 완전히 분리됩니다.</translation>
 <translation id="8556340503434111824">이전보다 더 빨라진 Chrome 새 버전을 사용할 수 있습니다.</translation>
 <translation id="861359755029082151">Chrome에서는 Rosetta를 통해 이 페이지에서 보호된 미디어를 재생할 수 있습니다.</translation>
 <translation id="8614913330719544658">Chrome이 응답하지 않습니다. 다시 시작하시겠습니까?</translation>
@@ -274,6 +280,7 @@
 <translation id="8907709077090383765">Chrome에서 보호된 미디어를 재생하려면 Rosetta를 설치해야 합니다. 지금 설치하시겠습니까?</translation>
 <translation id="8914504000324227558">Chrome 다시 시작</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" />에서 Android 휴대전화로 번호를 전송하려면 두 기기 모두에서 Chrome에 로그인하세요.</translation>
+<translation id="8986207147630327271">직장 프로필을 이 브라우저에 추가하고 직장 프로필 제어 권한을 관리자에게 부여합니다.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chrome 업데이트 출시}=1{Chrome 업데이트 출시}other{Chrome 업데이트가 출시된 지 #일 지남}}</translation>
 <translation id="9026991721384951619">계정의 로그인 세부정보가 오래되어 Chrome OS에서 데이터를 동기화하지 못했습니다.</translation>
 <translation id="9067395829937117663">Chrome은 Windows 7 이상 버전에서 사용할 수 있습니다.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lt.xtb b/chrome/app/resources/google_chrome_strings_lt.xtb
index 73ac6cc72..b1ef438d 100644
--- a/chrome/app/resources/google_chrome_strings_lt.xtb
+++ b/chrome/app/resources/google_chrome_strings_lt.xtb
@@ -56,6 +56,7 @@
 <translation id="2309047409763057870">Tai yra antrinis „Google Chrome“ diegimas, todėl ji negali būti nustatyta kaip numatytoji naršyklė.</translation>
 <translation id="2348335408836342058">„Chrome“ reikia leidimo, kad galėtų naudoti fotoaparatą ir mikrofoną šioje svetainėje</translation>
 <translation id="234869673307233423">„Chrome“ negali patikrinti jūsų slaptažodžių. Vėliau bandykite dar kartą.</translation>
+<translation id="235650106824528204">Visus „Chrome“ duomenis, sugeneruotus naudojant šį profilį (pvz., sukurtas žymes, istoriją, slaptažodžius ir kitus nustatymus), gali pašalinti darbo profilio administratorius. <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">„Google Chrome“ negali sinchronizuoti duomenų, nes jūsų domene sinchronizavimas nepasiekiamas.</translation>
 <translation id="2467438592969358367">„Google Chrome“ nori eksportuoti jūsų slaptažodžius. Įveskite „Windows“ slaptažodį, kad tai leistumėte.</translation>
 <translation id="2485422356828889247">Pašalinti</translation>
@@ -177,12 +178,14 @@
 <translation id="573759479754913123">Apie „Chrome“ OS</translation>
 <translation id="5795887333006832406">„<ph name="PAGE_TITLE" />“ – „Google Chrome Canary“</translation>
 <translation id="5804318322022881572">Nepavyko paleisti „Chrome“. Bandykite dar kartą.</translation>
+<translation id="5851757216820085940">Jei turite kelias „Google“ paskyras, galite pridėti jas prie „<ph name="DEVICE_TYPE" />“. Paskyros bus pasiekiamos „Chrome“ naršyklėje ir „Play“ parduotuvėje bei naudojant tokias paslaugas kaip „Gmail“, Diską ir „YouTube“. <ph name="LINK_BEGIN" />Sužinokite daugiau<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">„Google Chrome“ bando redaguoti slaptažodžius.</translation>
 <translation id="5895138241574237353">Paleisti iš naujo</translation>
 <translation id="5903106910045431592">„<ph name="PAGE_TITLE" />“ – prisijungimas prie tinklo</translation>
 <translation id="5940385492829620908">Čia saugoma žiniatinklio informacija, žymės ir kiti „Chrome“ duomenys.</translation>
 <translation id="5941830788786076944">Padarykite „Google Chrome“ numatytąja naršykle</translation>
 <translation id="6070348360322141662">Kad būtų papildomai užtikrintas saugumas, „Google Chrome“ užšifruos duomenis</translation>
+<translation id="608006075545470555">Darbo profilio pridėjimas prie šios naršyklės</translation>
 <translation id="6113794647360055231">„Chrome“ dabar dar tobulesnė</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" />– „Google Chrome“</translation>
 <translation id="6173637689840186878">„<ph name="PAGE_TITLE" />“ – „Google Chrome Beta“</translation>
@@ -194,10 +197,12 @@
 <translation id="6368958679917195344">„Chrome“ OS galima naudojant papildomą <ph name="BEGIN_LINK_CROS_OSS" />atvirojo šaltinio programinę įrangą<ph name="END_LINK_CROS_OSS" />.</translation>
 <translation id="6515495397637126556">„<ph name="PAGE_TITLE" />“ – „Google Chrome Dev“</translation>
 <translation id="6566149418543181476">Atnaujinama „Google Chrome“ (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">„Chrome“ OS sistema</translation>
 <translation id="6650333065969705433">Jei norite leisti apsaugotą mediją naudodami „Rosetta“, turite iš naujo paleisti „Chrome“.</translation>
 <translation id="6676384891291319759">Interneto prieiga</translation>
 <translation id="6679975945624592337">„Google Chrome“ leidimas fone</translation>
 <translation id="6750954913813541382">Kad ištaisytų rašybos klaidas, „Chrome“ tekstą, kurį įvedate naršyklėje, siunčia „Google“</translation>
+<translation id="6755885556185485672">„Chrome“ OS netinkamai išsijungė.</translation>
 <translation id="677276454032249905">Vis tiek išeiti iš „Chrome“?</translation>
 <translation id="683440813066116847">„Canary“ versijos „Google Chrome“ skirta taisyklė, pagal kurią leidžiamas gaunamas mDNS srautas.</translation>
 <translation id="6885412569789873916">„Chrome“ beta versijos programos</translation>
@@ -256,6 +261,7 @@
 <translation id="8498858610309223613">Ką tik pritaikytas specialus „Google Chrome“ skirtas saugos naujinys. Dabar paleiskite naršyklę iš naujo ir atkursime visus skirtukus.</translation>
 <translation id="8521348052903287641">„Dev“ versijos „Google Chrome“ skirta taisyklė, pagal kurią leidžiamas gaunamas mDNS srautas.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">Šis darbo profilis visiškai atskirtas nuo jūsų asmeninio profilio.</translation>
 <translation id="8556340503434111824">Galima nauja „Google Chrome“ versija, kuri greitesnė nei bet kada.</translation>
 <translation id="861359755029082151">Naudojant „Rosetta“ sistemoje „Chrome“ galima leisti apsaugotą mediją šiame puslapyje.</translation>
 <translation id="8614913330719544658">„Google Chrome“ neatsako. Paleisti iš naujo dabar?</translation>
@@ -274,6 +280,7 @@
 <translation id="8907709077090383765">Jei norite įgalinti „Chrome“ leisti apsaugotą mediją, turite įdiegti „Rosetta“. Ar norite ją dabar įdiegti?</translation>
 <translation id="8914504000324227558">Iš naujo paleisti „Chrome“</translation>
 <translation id="8922193594870374009">Jei norite iš <ph name="ORIGIN" /> į „Android“ telefoną išsiųsti numerį, prisijunkite prie „Chrome“ abiejuose įrenginiuose.</translation>
+<translation id="8986207147630327271">Pridedate darbo profilį prie šios naršyklės ir suteikiate administratoriui teisę valdyti tik darbo profilį.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Pasiekiamas „Chrome“ naujinys}=1{Pasiekiamas „Chrome“ naujinys}one{„Chrome“ naujinys pasiekiamas # dieną}few{„Chrome“ naujinys pasiekiamas # dienas}many{„Chrome“ naujinys pasiekiamas # dienos}other{„Chrome“ naujinys pasiekiamas # dienų}}</translation>
 <translation id="9026991721384951619">„Chrome“ OS negali sinchronizuoti duomenų, nes paskyros išsami prisijungimo informacija yra pasenusi.</translation>
 <translation id="9067395829937117663">Kad būtų galima naudoti „Google Chrome“, reikalinga 7 ar naujesnės versijos „Windows“.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ml.xtb b/chrome/app/resources/google_chrome_strings_ml.xtb
index 051d131..53f2d916 100644
--- a/chrome/app/resources/google_chrome_strings_ml.xtb
+++ b/chrome/app/resources/google_chrome_strings_ml.xtb
@@ -56,6 +56,7 @@
 <translation id="2309047409763057870">ഇത് Google Chrome-ന്റെ ദ്വിതീയ ഇൻസ്‌റ്റലേഷനായതിനാൽ, നിങ്ങളുടെ ഡിഫോൾട്ട് ബ്രൗസറാക്കാൻ കഴിയില്ല.</translation>
 <translation id="2348335408836342058">ഈ സൈറ്റിനായി, Chrome-ന് നിങ്ങളുടെ ക്യാമറയും മൈക്രോഫോണും ആക്‌സസ് ചെയ്യാനുള്ള അനുമതി ആവശ്യമാണ്</translation>
 <translation id="234869673307233423">Chrome-ന് നിങ്ങളുടെ പാസ്‌വേഡുകൾ പരിശോധിക്കാനാവുന്നില്ല. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.</translation>
+<translation id="235650106824528204">ഈ പ്രൊഫൈലിന്റെ ഉപയോഗത്തിനിടയിൽ ഉണ്ടായ ഏത് Chrome ഡാറ്റയും (ബുക്ക്‌മാർക്കുകൾ, ചരിത്രം, പാസ്‌വേഡുകൾ, മറ്റ് ക്രമീകരണം എന്നിവ സൃഷ്ടിക്കൽ പോലുള്ളവ) ഔദ്യോഗിക പ്രൊഫൈൽ അഡ്മിന് നീക്കം ചെയ്യാനാകും. <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">നിങ്ങളുടെ ഡൊമെയ്‌‌നിനായി സമന്വയം ലഭ്യമല്ലാത്തതിനാൽ Google Chrome-ന് നിങ്ങളുടെ ഡാറ്റ സമന്വയിപ്പിക്കാനായില്ല.</translation>
 <translation id="2467438592969358367">നിങ്ങളുടെ പാസ്‌വേഡുകൾ എക്‌സ്‌പോർട്ട് ചെയ്യാൻ Google Chrome ആഗ്രഹിക്കുന്നു. ഇത് അനുവദിക്കാൻ നിങ്ങളുടെ Windows പാസ്‌വേഡ് നൽകുക.</translation>
 <translation id="2485422356828889247">അണ്‍‌ഇന്‍‌സ്റ്റാള്‍‌ ചെയ്യുക</translation>
@@ -177,12 +178,14 @@
 <translation id="573759479754913123">Chrome OS-നെക്കുറിച്ച്</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation>
 <translation id="5804318322022881572">Chrome ലോഞ്ച് ചെയ്യാനായില്ല. വീണ്ടും ശ്രമിക്കുക.</translation>
+<translation id="5851757216820085940">നിങ്ങൾക്ക് ഒന്നിലധികം Google അക്കൗണ്ടുകൾ ഉണ്ടെങ്കിൽ, അവ നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> എന്നതിലേക്ക് ചേർക്കാൻ കഴിയും. നിങ്ങളുടെ അക്കൗണ്ടുകൾ Chrome ബ്രൗസറിലും Play സ്റ്റോറിലും Gmail, Drive, YouTube പോലുള്ള സേവനങ്ങളിലും ലഭ്യമാകും.<ph name="LINK_BEGIN" />കൂടുതലറിയുക<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">പാസ്‌വേഡുകൾ Google Chrome എഡിറ്റ് ചെയ്യാൻ ശ്രമിക്കുന്നു.</translation>
 <translation id="5895138241574237353">പുനരാരംഭിക്കുക</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - നെറ്റ്‌വർക്ക് സൈൻ ഇൻ</translation>
 <translation id="5940385492829620908">നിങ്ങളുടെ വെബും ബുക്ക്മാർക്കുകളും മറ്റ് Chrome ഫയലും ഇവിടെ തത്സമയമാണ്.</translation>
 <translation id="5941830788786076944">Google Chrome-നെ ഡിഫോൾട്ട് ബ്രൗസർ ആക്കുക</translation>
 <translation id="6070348360322141662">കൂടുതൽ സുരക്ഷ ലഭ്യമാക്കാൻ, Google Chrome നിങ്ങളുടെ ഡാറ്റ എന്‍‌ക്രിപ്‌റ്റ് ചെയ്യും</translation>
+<translation id="608006075545470555">ഈ ബ്രൗസറിലേക്ക് ഔദ്യോഗിക പ്രൊഫൈൽ ചേർക്കുക</translation>
 <translation id="6113794647360055231">Chrome കൂടുതൽ മികച്ചതായി</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome ബീറ്റ</translation>
@@ -194,10 +197,12 @@
 <translation id="6368958679917195344">അനുബന്ധ <ph name="BEGIN_LINK_CROS_OSS" />ഓപ്പണ്‍ ഉറവിട സോഫ്റ്റ്‍‌വെയർ<ph name="END_LINK_CROS_OSS" /> ഉപയോഗിച്ചാണ് Chrome OS നിര്‍മ്മിച്ചിരിക്കുന്നത്.</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation>
 <translation id="6566149418543181476">Google Chrome അപ്‌ഡേറ്റുചെയ്യുന്നു, (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">Chrome OS സിസ്‌റ്റം</translation>
 <translation id="6650333065969705433">പരിരക്ഷിത മീഡിയ പ്ലേ ചെയ്യുന്നതിന് Rosetta ഉപയോഗിക്കാൻ Chrome റീസ്‌റ്റാർട്ട് ചെയ്‌തിരിക്കണം.</translation>
 <translation id="6676384891291319759">ഇന്റര്‍‌നെറ്റ് ആക്‌സസ് ചെയ്യുക</translation>
 <translation id="6679975945624592337">പശ്ചാത്തലത്തില്‍ Google Chrome പ്രവര്‍ത്തിക്കാന്‍ അനുവദിക്കുക</translation>
 <translation id="6750954913813541382">അക്ഷരത്തെറ്റുകൾ പരിഹരിക്കാൻ നിങ്ങൾ ബ്രൗസറിൽ ടൈപ്പ് ചെയ്യുന്ന ടെക്‌സ്‌റ്റ് Chrome Google ലേക്ക് അയയ്ക്കുന്നു</translation>
+<translation id="6755885556185485672">Chrome OS ശരിയായി ഷട്ട്‌ഡൗൺ ചെയ്‌തിട്ടില്ല.</translation>
 <translation id="677276454032249905">എന്തായാലും Chrome-ൽ നിന്ന് പുറത്തുകടക്കണോ?</translation>
 <translation id="683440813066116847">mDNS ട്രാഫിക് അനുവദിക്കാൻ Google Chrome കാനറിയ്‌ക്കുള്ള ഇൻബൗണ്ട് റൂൾ.</translation>
 <translation id="6885412569789873916">Chrome ബീറ്റ ആപ്പുകൾ</translation>
@@ -256,6 +261,7 @@
 <translation id="8498858610309223613">Google Chrome-നുള്ള ഒരു പ്രത്യേക സുരക്ഷാ അപ്ഡേറ്റ് പ്രയോഗിച്ചിരിക്കുന്നു. ഇപ്പോൾ റീസ്‌റ്റാർട്ട് ചെയ്യുക, ഞങ്ങൾ നിങ്ങളുടെ ടാബുകൾ പുനഃസ്ഥാപിക്കും.</translation>
 <translation id="8521348052903287641">mDNS ട്രാഫിക് അനുവദിക്കുന്നതിന് Google Chrome Dev-ന് വേണ്ടിയുള്ള ഇൻബൗണ്ട് റൂൾ.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">ഈ ഔദ്യോഗിക പ്രൊഫൈൽ നിങ്ങളുടെ വ്യക്തിപരമായ പ്രൊഫൈലിൽ നിന്ന് തികച്ചും വ്യത്യസ്തമാണ്.</translation>
 <translation id="8556340503434111824">Google Chrome-ന്റെ പുതിയ പതിപ്പ് ലഭ്യമാണ്, അത് മുമ്പത്തേക്കാൾ വേഗതയേറിയതാണ്.</translation>
 <translation id="861359755029082151">Rosetta, ഈ പേജിൽ പരിരക്ഷിത മീഡിയ പ്ലേ ചെയ്യാൻ Chrome-നെ പ്രവർത്തനക്ഷമമാക്കുന്നു.</translation>
 <translation id="8614913330719544658">Google Chrome പ്രതികരിക്കുന്നില്ല. ഇപ്പോള്‍ വീണ്ടും സമാരംഭിക്കണോ?</translation>
@@ -274,6 +280,7 @@
 <translation id="8907709077090383765">പരിരക്ഷിത മീഡിയ പ്ലേ ചെയ്യുന്നതിന് Chrome പ്രവർത്തനക്ഷമമാക്കാൻ Rosetta ഇൻസ്‌റ്റാൾ ചെയ്യേണ്ടതുണ്ട്. ഇപ്പോൾ ഇൻസ്‌റ്റാൾ ചെയ്യണോ?</translation>
 <translation id="8914504000324227558">Chrome വീണ്ടും സമാരംഭിക്കുക</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> എന്നതിൽ നിന്ന് നിങ്ങളുടെ Android ഫോണിലേക്ക് ഒരു നമ്പർ അയയ്‌ക്കാൻ, രണ്ട് ഉപകരണങ്ങളിൽ നിന്നും Chrome-ൽ സൈൻ ഇൻ ചെയ്യുക.</translation>
+<translation id="8986207147630327271">നിങ്ങൾ ഈ ബ്രൗസറിലേക്ക് ഒരു ഔദ്യോഗിക പ്രൊഫൈൽ ചേർക്കുകയും നിങ്ങളുടെ അഡ്മിന് ഔദ്യോഗിക പ്രൊഫൈലിലേക്ക് മാത്രം നിയന്ത്രണം നൽകുകയും ചെയ്യുന്നു.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chrome-നൊരു അപ്‌ഡേറ്റ് ലഭ്യമാണ്}=1{Chrome-നൊരു അപ്‌ഡേറ്റ് ലഭ്യമാണ്}other{# ദിവസമായി Chrome-നൊരു അപ്‌ഡേറ്റ് ലഭ്യമാണ്}}</translation>
 <translation id="9026991721384951619">നിങ്ങളുടെ അക്കൗണ്ടിന്റെ സൈൻ ഇൻ വിശദാംശങ്ങൾ കാലഹരണപ്പെട്ടതിനാൽ Chrome OS-ന് നിങ്ങളുടെ ഡാറ്റ സമന്വയിപ്പിക്കാനായില്ല.</translation>
 <translation id="9067395829937117663">Google Chrome-ന് Windows 7 അല്ലെങ്കിൽ അതിനുശേഷമുള്ള പതിപ്പ് ആവശ്യമാണ്.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pl.xtb b/chrome/app/resources/google_chrome_strings_pl.xtb
index 23a64fd..1bcb27c 100644
--- a/chrome/app/resources/google_chrome_strings_pl.xtb
+++ b/chrome/app/resources/google_chrome_strings_pl.xtb
@@ -52,6 +52,7 @@
 <translation id="2309047409763057870">To jest druga instalacja Google Chrome. Nie można ustawić jej jako przeglądarki domyślnej.</translation>
 <translation id="2348335408836342058">Chrome potrzebuje uprawnień dostępu do aparatu i mikrofonu na tej stronie</translation>
 <translation id="234869673307233423">Chrome nie może sprawdzić Twoich haseł. Spróbuj później.</translation>
+<translation id="235650106824528204">Wszystkie dane Chrome wygenerowane podczas używania tego profilu (takie jak zakładki, historia, hasła i inne ustawienia) mogą zostać usunięte przez administratora profilu służbowego. <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">Google Chrome nie może zsynchronizować danych, ponieważ synchronizacja jest niedostępna w Twojej domenie.</translation>
 <translation id="2467438592969358367">Google Chrome chce wyeksportować Twoje hasła. Wpisz swoje hasło do Windows, by na to zezwolić.</translation>
 <translation id="2485422356828889247">Odinstaluj</translation>
@@ -168,12 +169,14 @@
 <translation id="573759479754913123">System operacyjny Chrome – informacje</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> – Google Chrome Canary</translation>
 <translation id="5804318322022881572">Nie udało się uruchomić Chrome. Spróbuj ponownie.</translation>
+<translation id="5851757216820085940">Jeśli masz wiele kont Google, możesz je dodać na swoim urządzeniu (<ph name="DEVICE_TYPE" />). Będą one dostępne w przeglądarce Chrome i Sklepie Play, a także w usługach Google takich jak Gmail, Dysk czy YouTube.<ph name="LINK_BEGIN" />Więcej informacji<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">Google Chrome próbuje edytować hasła.</translation>
 <translation id="5895138241574237353">Uruchom ponownie</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – logowanie do sieci</translation>
 <translation id="5940385492829620908">Tu są Twoje strony, zakładki i inne dane z Chrome.</translation>
 <translation id="5941830788786076944">Ustaw Google Chrome jako domyślną przeglądarkę</translation>
 <translation id="6070348360322141662">Dla większego bezpieczeństwa Google Chrome szyfruje dane</translation>
+<translation id="608006075545470555">Dodaj profil służbowy w tej przeglądarce</translation>
 <translation id="6113794647360055231">Chrome jest jeszcze lepszy</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome Beta</translation>
@@ -185,10 +188,12 @@
 <translation id="6368958679917195344">Opracowanie systemu operacyjnego Chrome było możliwe dzięki dodatkowemu <ph name="BEGIN_LINK_CROS_OSS" />oprogramowaniu typu open source<ph name="END_LINK_CROS_OSS" />.</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation>
 <translation id="6566149418543181476">Aktualizuję Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">System operacyjny Chrome</translation>
 <translation id="6650333065969705433">Aby używać Rosetty do odtwarzania chronionych treści multimedialnych, musisz ponownie uruchomić Chrome.</translation>
 <translation id="6676384891291319759">Skorzystaj z internetu</translation>
 <translation id="6679975945624592337">Zezwalaj Google Chrome na działanie w tle</translation>
 <translation id="6750954913813541382">Aby poprawić błędy pisowni, Chrome wysyła do Google to, co wpisujesz w przeglądarce</translation>
+<translation id="6755885556185485672">System operacyjny Chrome nie został poprawnie zamknięty.</translation>
 <translation id="677276454032249905">Zamknąć Chrome mimo to?</translation>
 <translation id="683440813066116847">Reguła dla ruchu przychodzącego w Google Chrome Canary zezwalająca na ruch mDNS.</translation>
 <translation id="6885412569789873916">Aplikacje do Chrome Beta</translation>
@@ -247,6 +252,7 @@
 <translation id="8498858610309223613">Właśnie została zastosowana specjalna aktualizacja zabezpieczeń Google Chrome. Uruchom ponownie Chrome teraz. Karty zostaną przywrócone.</translation>
 <translation id="8521348052903287641">Reguła dla ruchu przychodzącego w wersji deweloperskiej Google Chrome zezwalająca na ruch mDNS.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">Ten profil służbowy jest całkowicie oddzielony od Twojego profilu osobistego.</translation>
 <translation id="8556340503434111824">Dostępna jest nowa, szybsza niż kiedykolwiek wersja przeglądarki Google Chrome.</translation>
 <translation id="861359755029082151">Rosetta umożliwia odtwarzanie w Chrome chronionych treści multimedialnych na tej stronie.</translation>
 <translation id="8614913330719544658">Przeglądarka Google Chrome nie odpowiada. Uruchomić ją teraz ponownie?</translation>
@@ -265,6 +271,7 @@
 <translation id="8907709077090383765">Aby umożliwić odtwarzanie chronionych treści multimedialnych w Chrome, musisz zainstalować Rosettę. Czy chcesz to teraz zrobić?</translation>
 <translation id="8914504000324227558">Uruchom Chrome ponownie</translation>
 <translation id="8922193594870374009">Aby wysłać numer z <ph name="ORIGIN" /> na swój telefon z Androidem, zaloguj się w Chrome na obu urządzeniach.</translation>
+<translation id="8986207147630327271">Dodajesz profil służbowy w tej przeglądarce i dajesz swojemu administratorowi kontrolę tylko nad tym profilem.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Dostępna jest aktualizacja Chrome}=1{Dostępna jest aktualizacja Chrome}few{Aktualizacja Chrome jest dostępna od # dni}many{Aktualizacja Chrome jest dostępna od # dni}other{Aktualizacja Chrome jest dostępna od # dnia}}</translation>
 <translation id="9026991721384951619">Google Chrome nie może zsynchronizować danych, ponieważ dane logowania na Twoje konto są nieaktualne.</translation>
 <translation id="9067395829937117663">Google Chrome wymaga systemu Windows 7 lub nowszego.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sl.xtb b/chrome/app/resources/google_chrome_strings_sl.xtb
index e6810123..961cdecd 100644
--- a/chrome/app/resources/google_chrome_strings_sl.xtb
+++ b/chrome/app/resources/google_chrome_strings_sl.xtb
@@ -56,6 +56,7 @@
 <translation id="2309047409763057870">To je sekundarna namestitev Google Chroma in ga ni mogoče nastaviti kot privzeti brskalnik.</translation>
 <translation id="2348335408836342058">Chrome potrebuje dovoljenje za dostop do fotoaparata in mikrofona za to spletno mesto</translation>
 <translation id="234869673307233423">Chrome ne more preveriti vaših gesel. Poskusite pozneje.</translation>
+<translation id="235650106824528204">Podatke v Chromu, ki se ustvarijo med uporabo tega profila (na primer zaznamke, zgodovino, gesla in druge nastavitve), lahko odstrani skrbnik delovnega profila. <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">Google Chrome ni mogel sinhronizirati podatkov, ker sinhronizacija ni na voljo za vašo domeno.</translation>
 <translation id="2467438592969358367">Google Chrome želi izvoziti gesla. Če želite omogočiti to, vnesite geslo za Windows.</translation>
 <translation id="2485422356828889247">Odmeščanje</translation>
@@ -177,12 +178,14 @@
 <translation id="573759479754913123">O sistemu Chrome OS</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> – delovna različica Google Chroma</translation>
 <translation id="5804318322022881572">Chroma ni bilo mogoče zagnati. Poskusite znova.</translation>
+<translation id="5851757216820085940">Če imate več računov Google, jih lahko dodate v napravo <ph name="DEVICE_TYPE" />. Vaši računi bodo na voljo v brskalniku Chromu in Trgovini Play ter v storitvah, kot so Gmail, Drive in YouTube.<ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">Google Chrome poskuša urejati gesla.</translation>
 <translation id="5895138241574237353">Znova zaženi</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Prijava v omrežje</translation>
 <translation id="5940385492829620908">Tu so shranjeni vaš splet, zaznamki in druge stvari v Chromu.</translation>
 <translation id="5941830788786076944">Nastavi Google Chrome kot privzeti brskalnik</translation>
 <translation id="6070348360322141662">Zaradi večje varnosti bo Google Chrome šifriral vaše podatke</translation>
+<translation id="608006075545470555">Dodajanje delovnega profila v ta brskalnik</translation>
 <translation id="6113794647360055231">Chrome je pravkar postal še boljši</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> – Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> različica beta Google Chroma</translation>
@@ -194,10 +197,12 @@
 <translation id="6368958679917195344">Sistem Chrome OS uporablja dodatno <ph name="BEGIN_LINK_CROS_OSS" />odprtokodno programsko opremo<ph name="END_LINK_CROS_OSS" />.</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> različica Google Chroma za razvijalce</translation>
 <translation id="6566149418543181476">Posodabljanje Google Chroma (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">Sistem Chrome OS</translation>
 <translation id="6650333065969705433">Če želite uporabljati program Rosetta za predvajanje zaščitene predstavnosti, morate znova zagnati Chrome.</translation>
 <translation id="6676384891291319759">Dostop do interneta</translation>
 <translation id="6679975945624592337">Naj se Google Chrome izvaja v ozadju</translation>
 <translation id="6750954913813541382">Chrome zaradi odpravljanja napak pri črkovanju Googlu pošlje besedilo, ki ga vnesete v brskalnik</translation>
+<translation id="6755885556185485672">Chrome OS se ni pravilno zaustavil.</translation>
 <translation id="677276454032249905">Želite vseeno zapreti Chrome?</translation>
 <translation id="683440813066116847">Pravilo za dohodni promet za Google Chrome Canary, ki dovoli promet mDNS.</translation>
 <translation id="6885412569789873916">Aplikacije za Chrome Beta</translation>
@@ -256,6 +261,7 @@
 <translation id="8498858610309223613">Pravkar je bila nameščena posebna varnostna posodobitev za Google Chrome. Znova ga zaženite (vaše zavihke bomo obnovili).</translation>
 <translation id="8521348052903287641">Pravilo za dohodni promet za Google Chrome Dev, ki dovoli promet mDNS.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">Ta delovni profil je v celoti ločen od osebnega profila.</translation>
 <translation id="8556340503434111824">Na voljo je nova različica Google Chroma, ki je najhitrejša doslej.</translation>
 <translation id="861359755029082151">Program Rosetta Chromu omogoča predvajanje zaščitene predstavnosti na tej strani.</translation>
 <translation id="8614913330719544658">Google Chrome se ne odziva. Ga želite znova zagnati?</translation>
@@ -274,6 +280,7 @@
 <translation id="8907709077090383765">Če želite v Chromu omogočiti predvajanje zaščitene predstavnosti, morate namestiti program Rosetta. Ali ga želite namestiti zdaj?</translation>
 <translation id="8914504000324227558">Znova zaženi Chrome</translation>
 <translation id="8922193594870374009">Če želite telefonsko številko iz <ph name="ORIGIN" /> poslati v telefon Android, se prijavite v Chrome v obeh napravah.</translation>
+<translation id="8986207147630327271">V ta brskalnik dodajate delovni profil in skrbniku omogočate nadzor samo nad delovnim profilom.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Posodobitev za Chrome je na voljo}=1{Posodobitev za Chrome je na voljo}one{Posodobitev za Chrome je na voljo že # dan}two{Posodobitev za Chrome je na voljo že # dneva}few{Posodobitev za Chrome je na voljo že # dni}other{Posodobitev za Chrome je na voljo že # dni}}</translation>
 <translation id="9026991721384951619">Chrome OS ni mogel sinhronizirati podatkov, ker so podatki za prijavo v račun zastareli.</translation>
 <translation id="9067395829937117663">Za Google Chrome potrebujete Windows 7 ali novejši.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_tr.xtb b/chrome/app/resources/google_chrome_strings_tr.xtb
index d242c06..ececbf6 100644
--- a/chrome/app/resources/google_chrome_strings_tr.xtb
+++ b/chrome/app/resources/google_chrome_strings_tr.xtb
@@ -52,6 +52,7 @@
 <translation id="2309047409763057870">Bu, Google Chrome'un ikincil bir yüklemesidir ve varsayılan tarayıcınız yapılamaz.</translation>
 <translation id="2348335408836342058">Chrome'un bu sitede kameranıza ve mikrofonunuza erişmesi için izin gerekiyor</translation>
 <translation id="234869673307233423">Chrome, şifrelerinizi kontrol edemiyor. Daha sonra tekrar deneyin.</translation>
+<translation id="235650106824528204">Bu profil kullanılırken oluşturulan tüm Chrome verileri (yer işaretlerinin oluşturulması, geçmiş, şifreler ve diğer ayarlar gibi) iş profili yöneticisi tarafından kaldırılabilir. <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">Senkronizasyon, alan adınızda kullanılamadığından Google Chrome, verilerinizi senkronize edemedi.</translation>
 <translation id="2467438592969358367">Google Chrome şifrelerinizi dışa aktarmak istiyor. Buna izin vermek için Windows şifrenizi yazın.</translation>
 <translation id="2485422356828889247">Yüklemeyi Kaldır</translation>
@@ -171,12 +172,14 @@
 <translation id="573759479754913123">Chrome OS hakkında</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation>
 <translation id="5804318322022881572">Chrome başlatılamadı. Tekrar deneyin.</translation>
+<translation id="5851757216820085940">Birden fazla Google Hesabınız varsa bunları <ph name="DEVICE_TYPE" /> cihazınıza ekleyebilirsiniz. Hesaplarınız Chrome tarayıcı ve Play Store'un yanı sıra Gmail, Drive ve YouTube gibi hizmetlerde de kullanılabilir.<ph name="LINK_BEGIN" />Daha fazla bilgi<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">Google Chrome şifreleri düzenlemeyi deniyor.</translation>
 <translation id="5895138241574237353">Yeniden başlat</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Ağda Oturum Açın</translation>
 <translation id="5940385492829620908">Web, yer işaretleri ve diğer Chrome öğeleriniz burada bulunur.</translation>
 <translation id="5941830788786076944">Google Chrome varsayılan tarayıcı olsun</translation>
 <translation id="6070348360322141662">Google Chrome ek güvenlik sağlamak için verilerinizi şifreler</translation>
+<translation id="608006075545470555">Bu tarayıcıya İş Profili ekle</translation>
 <translation id="6113794647360055231">Chrome daha da iyi bir hale geldi</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
@@ -188,10 +191,12 @@
 <translation id="6368958679917195344">Chrome OS, 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="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation>
 <translation id="6566149418543181476">Google Chrome güncelleniyor (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">Chrome OS sistemi</translation>
 <translation id="6650333065969705433">Korunan medyayı izlemek üzere Rosetta'yı kullanmak için Chrome'u yeniden başlatmalısınız.</translation>
 <translation id="6676384891291319759">İnternet'e erişin</translation>
 <translation id="6679975945624592337">Google Chrome'un Arka Planda Çalışmasına İzin Ver</translation>
 <translation id="6750954913813541382">Yazım hatalarını düzeltmek için Chrome, tarayıcıda yazdığınız metni Google'a gönderir</translation>
+<translation id="6755885556185485672">Chrome OS doğru bir şekilde kapatılmadı.</translation>
 <translation id="677276454032249905">Yine de Chrome'dan çıkılsın mı?</translation>
 <translation id="683440813066116847">Google Chrome Canary'nin mDNS trafiğine izin vermeyi sağlayan gelen trafik kuralı.</translation>
 <translation id="6885412569789873916">Chrome Beta Uygulamaları</translation>
@@ -250,6 +255,7 @@
 <translation id="8498858610309223613">Google Chrome için özel bir güvenlik güncellemesi uygulandı. Uygulamayı hemen yeniden başlatın; açık sekmeleriniz geri yüklenir.</translation>
 <translation id="8521348052903287641">Google Chrome Dev'in mDNS trafiğine izin vermeyi sağlayan gelen trafik kuralı.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">Bu iş profili, kişisel profilinizden tamamen ayrıdır.</translation>
 <translation id="8556340503434111824">Kullanabileceğiniz yeni bir Google Chrome sürümü var ve bu sürüm, her zamankinden daha hızlı.</translation>
 <translation id="861359755029082151">Rosetta, Chrome'un bu sayfadaki korunan medyayı oynatmasını sağlar.</translation>
 <translation id="8614913330719544658">Google Chrome yanıt vermiyor. Yeniden başlatılsın mı?</translation>
@@ -268,6 +274,7 @@
 <translation id="8907709077090383765">Chrome'un korunan medyayı oynatmasını sağlamak için Rosetta'yı yüklemeniz gerekir. Şimdi yüklemek ister misiniz?</translation>
 <translation id="8914504000324227558">Chrome'u Yeniden Başlat</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> sitesinden Android telefonunuza numara göndermek için iki cihazdan da Chrome'da oturum açın.</translation>
+<translation id="8986207147630327271">Bu tarayıcıya bir iş profili ekliyor ve yöneticinize yalnızca iş profilini kontrol etme yetkisi veriyorsunuz.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Bir Chrome güncellemesi var}=1{Bir Chrome güncellemesi var}other{# gün önce kullanıma sunulmuş bir Chrome güncellemesi var}}</translation>
 <translation id="9026991721384951619">Hesap oturum açma ayrıntılarınız güncel olmadığından Chrome OS, verilerinizi senkronize edemedi.</translation>
 <translation id="9067395829937117663">Google Chrome, Windows 7 veya daha sonraki bir sürümü gerektirir.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uk.xtb b/chrome/app/resources/google_chrome_strings_uk.xtb
index 5da31e2..aefae30 100644
--- a/chrome/app/resources/google_chrome_strings_uk.xtb
+++ b/chrome/app/resources/google_chrome_strings_uk.xtb
@@ -52,6 +52,7 @@
 <translation id="2309047409763057870">Це додаткове встановлення Google Chrome. Його не можна зробити вашим веб-переглядачем за умовчанням.</translation>
 <translation id="2348335408836342058">Chrome потрібен дозвіл на використання камери й мікрофона, щоб надати цьому сайту доступ до них</translation>
 <translation id="234869673307233423">Chrome не може перевірити паролі. Повторіть спробу пізніше.</translation>
+<translation id="235650106824528204">Дані Chrome, створені під час використання цього профілю (наприклад, закладки, історія, паролі й інші налаштування), може видалити адміністратор робочого профілю. <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">Google Chrome не вдалося синхронізувати ваші дані, оскільки синхронізація для вашого домену недоступна.</translation>
 <translation id="2467438592969358367">Google Chrome хоче експортувати ваші паролі. Щоб дозволити, введіть свій пароль Windows.</translation>
 <translation id="2485422356828889247">Видалити</translation>
@@ -169,12 +170,14 @@
 <translation id="573759479754913123">Про ОС Chrome</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> – Google Chrome Canary</translation>
 <translation id="5804318322022881572">Не вдалося запустити Chrome. Повторіть спробу.</translation>
+<translation id="5851757216820085940">Якщо у вас кілька облікових записів Google, їх можна додати на <ph name="DEVICE_TYPE" />. Облікові записи будуть доступні у веб-переглядачі Chrome, Google Play і таких сервісах, як Gmail, Диск та YouTube.<ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">Google Chrome намагається змінити паролі.</translation>
 <translation id="5895138241574237353">Перезапустити</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Вхід у мережу</translation>
 <translation id="5940385492829620908">Тут містяться ваші веб-сторінки, закладки та інші дані Chrome.</translation>
 <translation id="5941830788786076944">Зробити Google Chrome переглядачем за промовчанням</translation>
 <translation id="6070348360322141662">Щоб підвищити безпеку, Google Chrome шифруватиме ваші дані</translation>
+<translation id="608006075545470555">Додати робочий профіль у цей веб-переглядач</translation>
 <translation id="6113794647360055231">Chrome став ще кращим</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Бета-версія Google Chrome</translation>
@@ -186,10 +189,12 @@
 <translation id="6368958679917195344">ОС Chrome стала можливою завдяки додатковому <ph name="BEGIN_LINK_CROS_OSS" />програмному забезпеченню з відкритим кодом<ph name="END_LINK_CROS_OSS" />.</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Версія Google Chrome для розробників</translation>
 <translation id="6566149418543181476">Google Chrome оновлюється (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">ОС Chrome</translation>
 <translation id="6650333065969705433">Щоб відтворювати захищений медіаконтент за допомогою додатка Rosetta, потрібно перезапустити Chrome.</translation>
 <translation id="6676384891291319759">Доступ до Інтернету</translation>
 <translation id="6679975945624592337">Дозволити Google Chrome працювати у фоновому режимі</translation>
 <translation id="6750954913813541382">Щоб виправляти орфографічні помилки, Chrome надсилає в Google текст, який ви вводите у веб-переглядачі</translation>
+<translation id="6755885556185485672">ОС Chrome завершила роботу неналежним чином.</translation>
 <translation id="677276454032249905">Усе одно вийти з Chrome?</translation>
 <translation id="683440813066116847">Вхідне правило для Google Chrome Canary дозволяє трафік mDNS.</translation>
 <translation id="6885412569789873916">Бета-версія додатків Chrome</translation>
@@ -248,6 +253,7 @@
 <translation id="8498858610309223613">Щойно було застосовано спеціальне оновлення для захисту Google Chrome. Перезапустіть веб-переглядач, і ваші вкладки буде відновлено.</translation>
 <translation id="8521348052903287641">Вхідне правило для Google Chrome для розробників дозволяє трафік mDNS.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">Цей робочий профіль не пов'язаний із вашим особистим профілем.</translation>
 <translation id="8556340503434111824">Доступна нова версія Google Chrome – швидша, ніж будь-коли.</translation>
 <translation id="861359755029082151">Завдяки додатку Rosetta у веб-переглядачі Chrome можна відтворювати захищений медіаконтент на цій сторінці.</translation>
 <translation id="8614913330719544658">Google Chrome не відповідає. Перезапустити зараз?</translation>
@@ -266,6 +272,7 @@
 <translation id="8907709077090383765">Щоб відтворювати в Chrome захищений медіаконтент, потрібно встановити сервіс Rosetta. Зробити це зараз?</translation>
 <translation id="8914504000324227558">Перезапустити Chrome</translation>
 <translation id="8922193594870374009">Щоб надіслати номер із сайту <ph name="ORIGIN" /> на телефон Android, увійдіть у Chrome на обох пристроях.</translation>
+<translation id="8986207147630327271">Ви додаєте робочий профіль у цей веб-переглядач і дозволяєте адміністратору керувати лише ним.</translation>
 <translation id="8999208279178790196">{0,plural, =0{Доступне оновлення Chrome}=1{Доступне оновлення Chrome}one{Оновлення Chrome доступне вже # день}few{Оновлення Chrome доступне вже # дні}many{Оновлення Chrome доступне вже # днів}other{Оновлення Chrome доступне вже # дня}}</translation>
 <translation id="9026991721384951619">ОС Chrome не вдалося синхронізувати ваші дані, оскільки дані для входу в обліковий запис застаріли.</translation>
 <translation id="9067395829937117663">Для роботи Google Chrome потрібно мати ОС Windows 7 або новішої версії.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ur.xtb b/chrome/app/resources/google_chrome_strings_ur.xtb
index 165f7f9..10e1065 100644
--- a/chrome/app/resources/google_chrome_strings_ur.xtb
+++ b/chrome/app/resources/google_chrome_strings_ur.xtb
@@ -56,6 +56,7 @@
 <translation id="2309047409763057870">‏یہ Google Chrome کا ثانوی انسٹالیشن ہے اور اسے آپ کا ڈیفالٹ براؤزر نہیں بنایا جا سکتا ہے۔</translation>
 <translation id="2348335408836342058">‏Chrome کو اس سائٹ کیلئے آپ کے کیمرے اور مائیکروفون تک رسائی کی اجازت درکار ہے</translation>
 <translation id="234869673307233423">‏Chrome آپ کے پاس ورڈز چیک نہیں کر سکتا ہے۔ بعد میں دوبارہ کوشش کریں۔</translation>
+<translation id="235650106824528204">‏دفتری پروفائل کا منتظم اس پروفائل کے استعمال کے دوران جنریٹ ہونے والے کسی بھی Chrome ڈیٹا (جیسے، بُک مارکس کی تخلیق، سرگزشت، پاس ورڈز اور دیگر ترتیبات) کو ہٹا سکتا ہے۔ <ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">‏Google Chrome کلاؤڈ آپ کے ڈیٹا کی مطابقت پذیری نہیں کر سکا کیونکہ مطابقت پذیری آپ کے ڈومین کیلئے فعال نہیں ہے۔</translation>
 <translation id="2467438592969358367">‏Google Chrome آپ کے پاس ورڈز برآمد کرنا چاہتا ہے۔ اس کی اجازت دینے کیلئے، اپنا Windows پاس ورڈ ٹائپ کریں۔</translation>
 <translation id="2485422356828889247">ان انسٹال کریں</translation>
@@ -177,12 +178,14 @@
 <translation id="573759479754913123">‏Chrome OS کے بارے میں</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation>
 <translation id="5804318322022881572">‏Chrome شروع نہیں ہو سکا۔ دوبارہ کوشش کریں۔</translation>
+<translation id="5851757216820085940">‏اگر آپ کے پاس متعدد Google اکاؤنٹس ہیں تو آپ انہیں اپنے <ph name="DEVICE_TYPE" /> میں شامل کر سکتے ہیں۔ آپ کے اکاؤنٹس Chrome براؤزر اور Play اسٹور، نیز Gmail, Drive اور YouTube جیسی سروسز میں دستیاب ہوں گے۔<ph name="LINK_BEGIN" />مزید جانیں<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">‏Google Chrome پاس ورڈز میں ترمیم کرنے کی کوشش کر رہا ہے۔</translation>
 <translation id="5895138241574237353">دوبارہ شروع کریں</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - نیٹ ورک سائن ان</translation>
 <translation id="5940385492829620908">‏آپ کا ویب، بُک مارکس اور دیگر Chrome مواد یہاں رہتے ہیں۔</translation>
 <translation id="5941830788786076944">‏Google Chrome کو ڈیفالٹ براؤزر بنائیں</translation>
 <translation id="6070348360322141662">‏اضافی سیکیورٹی کیلئے، Google Chrome آپ کا ڈیٹا مرموز کر دے گا</translation>
+<translation id="608006075545470555">اس براؤزر میں دفتری پروفائل شامل کریں</translation>
 <translation id="6113794647360055231">‏Chrome اور بھی بہتر ہوگیا ہے</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878">‏<ph name="PAGE_TITLE" /> - Google Chrome بی ٹا</translation>
@@ -194,10 +197,12 @@
 <translation id="6368958679917195344">‏Chrome OS کو اضافی <ph name="BEGIN_LINK_CROS_OSS" />اوپن سورس سافٹ ویئر<ph name="END_LINK_CROS_OSS" /> کے ذریعے ممکن بنایا جاتا ہے۔</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation>
 <translation id="6566149418543181476">‏Google Chrome کو اپ ڈیٹ کیا جا رہا ہے (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">‏Chrome OS سسٹم</translation>
 <translation id="6650333065969705433">‏تحفظ یافتہ میڈیا چلانے کی خاطر Rosetta استعمال کرنے کیلئے آپ کو Chrome ری سٹارٹ کرنا ضروری ہے۔</translation>
 <translation id="6676384891291319759">انٹرنیٹ تک رسائی حاصل کریں</translation>
 <translation id="6679975945624592337">‏Google Chrome کو پس منظر میں چلنے دیں</translation>
 <translation id="6750954913813541382">‏املا کی غلطیوں کو درست کرنے کے لیے، آپ براؤزر میں جو متن ٹائپ کرتے ہیں، Chrome اسے Google کو بھیج دیتا ہے</translation>
+<translation id="6755885556185485672">‏Chrome OS صحیح طریقے سے شٹ ڈاؤن نہیں ہوا۔</translation>
 <translation id="677276454032249905">‏بہر حال Chrome کو بند کریں؟</translation>
 <translation id="683440813066116847">‏mDNS ٹریفک کی اجازت دینے کیلئے Google Chrome Canary کیلئے ان باؤنڈ اصول۔</translation>
 <translation id="6885412569789873916">‏Chrome بی ٹا ایپس</translation>
@@ -256,6 +261,7 @@
 <translation id="8498858610309223613">‏Google Chrome کے لیے ایک خاص سیکیورٹی اپ ڈیٹ ابھی ابھی لاگو کیا گیا ہے۔ ابھی دوبارہ شروع کریں اور ہم آپ کے ٹیبز کو بحال کر دیں گے۔</translation>
 <translation id="8521348052903287641">‏mDNS ٹریفک کی اجازت دینے کے لیے Google Chrome Dev کے لیے ان باؤنڈ اصول۔</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">یہ دفتری پروفائل آپ کی ذاتی پروفائل سے پوری طرح علیحدہ ہے۔</translation>
 <translation id="8556340503434111824">‏Google Chrome کا ایک نیا ورژن دستیاب ہے اور پہلے سے کہیں زیادہ تیز ہے۔</translation>
 <translation id="861359755029082151">‏اس صفحے پر تحفظ یافتہ میڈیا چلانے کیلئے Rosetta‏ Chrome کو فعال کرتا ہے۔</translation>
 <translation id="8614913330719544658">‏Google Chrome جواب نہیں دے رہا ہے۔ ابھی دوبارہ شروع کریں؟</translation>
@@ -274,6 +280,7 @@
 <translation id="8907709077090383765">‏تحفظ یافتہ میڈیا چلانے کی خاطر Chrome کو فعال کرنے کیلئے، آپ کو Rosetta انسٹال کرنے کی ضرورت ہے۔ کیا آپ اسے ابھی انسٹال کرنا چاہتے ہیں؟</translation>
 <translation id="8914504000324227558">‏Chrome کو دوبارہ شروع کریں</translation>
 <translation id="8922193594870374009">‏<ph name="ORIGIN" /> سے اپنے Android فون پر نمبر بھیجنے کے لئے دونوں آلات پر Chrome میں سائن ان کریں۔</translation>
+<translation id="8986207147630327271">آپ اس براؤزر میں ایک دفتری پروفائل شامل کر رہے ہیں اور اپنے منتظم کو صرف دفتری پروفائل پر کنٹرول فراہم کر رہے ہیں۔</translation>
 <translation id="8999208279178790196">{0,plural, =0{‏Chrome کا اپ ڈیٹ دستیاب ہے}=1{‏Chrome کا اپ ڈیٹ دستیاب ہے}other{‏Chrome کا اپ ڈیٹ # دن سے دستیاب ہے}}</translation>
 <translation id="9026991721384951619">‏Chrome OS آپ کے اکاؤنٹ کی سائن ان تفصیلات پرانی ہونے کی وجہ سے آپ کے ڈیٹا کی مطابقت پذیری نہیں کر سکا۔</translation>
 <translation id="9067395829937117663">‏Google Chrome کیلئے Windows 7 یا اس کے بعد کا ورژن درکار ہے۔</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-HK.xtb b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
index 294e105..d620fd7 100644
--- a/chrome/app/resources/google_chrome_strings_zh-HK.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
@@ -56,6 +56,7 @@
 <translation id="2309047409763057870">這是以並行形式安裝的第二個 Google Chrome,因此無法設定為您的預設瀏覽器。</translation>
 <translation id="2348335408836342058">Chrome 需要取得權限,才能讓這個網站存取您的相機和麥克風</translation>
 <translation id="234869673307233423">Chrome 無法檢查密碼,請稍後再試。</translation>
+<translation id="235650106824528204">工作設定檔管理員可移除任何在使用此設定檔時產生的 Chrome 資料 (例如建立的書籤、記錄、密碼和其他設定)。<ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">您的網域無法使用「同步功能」,因此 Google Chrome 無法同步處理您的數據。</translation>
 <translation id="2467438592969358367">Google Chrome 想匯出您的密碼。請輸入 Windows 密碼以允許此操作。</translation>
 <translation id="2485422356828889247">解除安裝</translation>
@@ -176,12 +177,14 @@
 <translation id="573759479754913123">關於 Chrome 作業系統</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation>
 <translation id="5804318322022881572">無法啟動 Chrome,請再試一次。</translation>
+<translation id="5851757216820085940">如果您有多個 Google 帳戶,可以將這些帳戶新增至您的 <ph name="DEVICE_TYPE" />,您將可在 Chrome 瀏覽器、Play 商店,以及 Gmail、雲端硬碟和 YouTube 等服務上使用帳戶。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">Google Chrome 正在嘗試編輯密碼。</translation>
 <translation id="5895138241574237353">重新啟動</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - 網絡登入</translation>
 <translation id="5940385492829620908">您的網頁、書籤和其他 Chrome 資料在這裡直播。</translation>
 <translation id="5941830788786076944">將 Google Chrome 設為預設瀏覽器</translation>
 <translation id="6070348360322141662">為提高安全性,Google Chrome 會將您的資料加密</translation>
+<translation id="608006075545470555">將工作設定檔新增至此瀏覽器</translation>
 <translation id="6113794647360055231">Chrome 變得更好用了</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta 版</translation>
@@ -193,10 +196,12 @@
 <translation id="6368958679917195344">Chrome 作業系統的開發全賴其他<ph name="BEGIN_LINK_CROS_OSS" />開放原始碼軟件<ph name="END_LINK_CROS_OSS" />協助才得以面世。</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome 開發人員版</translation>
 <translation id="6566149418543181476">正在更新 Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">Chrome 作業系統</translation>
 <translation id="6650333065969705433">您必須重新啟動 Chrome,才能使用 Rosetta 播放受保護的媒體。</translation>
 <translation id="6676384891291319759">連線到互聯網</translation>
 <translation id="6679975945624592337">讓 Google Chrome 在背景執行</translation>
 <translation id="6750954913813541382">Chrome 會將您在瀏覽器中輸入的文字傳送至 Google,以修正拼字錯誤</translation>
+<translation id="6755885556185485672">Chrome 作業系統未正確關閉。</translation>
 <translation id="677276454032249905">仍要結束 Chrome 嗎?</translation>
 <translation id="683440813066116847">允許 mDNS 流量的 Google Chrome Canary 輸入規則。</translation>
 <translation id="6885412569789873916">Chrome 測試版應用程式</translation>
@@ -255,6 +260,7 @@
 <translation id="8498858610309223613">Google Chrome 剛套用了特別的安全性更新。請立即重新啟動,我們將會還原您的分頁。</translation>
 <translation id="8521348052903287641">允許 mDNS 流量的 Google Chrome 開發人員版輸入規則。</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">此工作設定檔與個人設定檔是完全分開。</translation>
 <translation id="8556340503434111824">Google Chrome 推出全新版本,速度更勝從前。</translation>
 <translation id="861359755029082151">Rosetta 讓 Chrome 能夠播放此頁面上的受保護媒體。</translation>
 <translation id="8614913330719544658">Google Chrome 沒有回應,要立即重新啟動嗎?</translation>
@@ -273,6 +279,7 @@
 <translation id="8907709077090383765">您需要安裝 Rosetta,才能讓 Chrome 播放受保護的媒體。您要現在安裝 Rosetta 嗎?</translation>
 <translation id="8914504000324227558">重新啟動 Chrome</translation>
 <translation id="8922193594870374009">如要將號碼從 <ph name="ORIGIN" /> 傳送至 Android 手機,請在這兩部裝置上登入 Chrome。</translation>
+<translation id="8986207147630327271">您即將在此瀏覽器中新增工作設定檔,並只將工作設定檔的控制權授予管理員。</translation>
 <translation id="8999208279178790196">{0,plural, =0{有可用的 Chrome 更新}=1{有可用的 Chrome 更新}other{Chrome 更新已發佈 # 天}}</translation>
 <translation id="9026991721384951619">您的帳戶登入詳情尚未更新,因此 Chrome 作業系統無法同步處理您的數據。</translation>
 <translation id="9067395829937117663">Google Chrome 只能在 Windows 7 或以上作業系統中執行。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-TW.xtb b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
index 56fe245d..becb930 100644
--- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -52,6 +52,7 @@
 <translation id="2309047409763057870">這是以並存形式安裝的次要 Google Chrome,無法設為您的預設瀏覽器。</translation>
 <translation id="2348335408836342058">Chrome 需要相關權限,才能讓這個網站使用你的攝影機和麥克風</translation>
 <translation id="234869673307233423">Chrome 無法檢查你的密碼,請稍後再試。</translation>
+<translation id="235650106824528204">凡是在使用這個資料夾期間產生的 Chrome 資料 (例如建立的書籤、歷史記錄、密碼和其他設定),工作資料夾管理員皆可予以移除。<ph name="LEARN_MORE" /></translation>
 <translation id="2429317896000329049">你的網域無法使用「同步功能」,因此 Google Chrome 無法同步處理你的資料。</translation>
 <translation id="2467438592969358367">Google Chrome 要求匯出你的密碼。如果允許,請輸入你的 Windows 密碼。</translation>
 <translation id="2485422356828889247">解除安裝</translation>
@@ -171,12 +172,14 @@
 <translation id="573759479754913123">關於 Chrome 作業系統</translation>
 <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary 版</translation>
 <translation id="5804318322022881572">無法啟動 Chrome,請再試一次。</translation>
+<translation id="5851757216820085940">如果你有多個 Google 帳戶,可以將這些帳戶新增到你的 <ph name="DEVICE_TYPE" />,這樣就能在 Chrome 瀏覽器和 Play 商店,以及 Gmail、雲端硬碟和 YouTube 等服務中使用這些帳戶。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
 <translation id="5867197326698922595">Google Chrome 正在嘗試編輯密碼。</translation>
 <translation id="5895138241574237353">重新啟動</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - 網路登入</translation>
 <translation id="5940385492829620908">你瀏覽的網頁、書籤和其他 Chrome 設定都在這裡。</translation>
 <translation id="5941830788786076944">使用 Google Chrome 做為我的預設瀏覽器</translation>
 <translation id="6070348360322141662">為了提升安全性,Google Chrome 會將你的資料加密保護</translation>
+<translation id="608006075545470555">在這個瀏覽器中新增工作資料夾</translation>
 <translation id="6113794647360055231">Chrome 變得更好用了</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome 測試版</translation>
@@ -188,10 +191,12 @@
 <translation id="6368958679917195344">Chrome 作業系統藉助了其他<ph name="BEGIN_LINK_CROS_OSS" />開放原始碼軟體<ph name="END_LINK_CROS_OSS" />的相關技術才得以問世。</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome 開發人員版</translation>
 <translation id="6566149418543181476">正在更新 Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation>
+<translation id="6568793831116033768">Chrome 作業系統</translation>
 <translation id="6650333065969705433">如要使用 Rosetta 播放設有保護的媒體,必須重新啟動 Chrome。</translation>
 <translation id="6676384891291319759">連線到網際網路</translation>
 <translation id="6679975945624592337">讓 Google Chrome 在背景執行</translation>
 <translation id="6750954913813541382">Chrome 會將你在瀏覽器中輸入的文字傳送至 Google,以修正拼字錯誤</translation>
+<translation id="6755885556185485672">Chrome 作業系統未正確關閉。</translation>
 <translation id="677276454032249905">確定要結束 Chrome 嗎?</translation>
 <translation id="683440813066116847">允許 mDNS 流量的 Google Chrome Canary 輸入規則。</translation>
 <translation id="6885412569789873916">Chrome 測試版應用程式</translation>
@@ -250,6 +255,7 @@
 <translation id="8498858610309223613">Google Chrome 剛才套用了特殊的安全性更新。請立即重新啟動,系統會恢復你原先開啟的分頁。</translation>
 <translation id="8521348052903287641">允許 mDNS 流量的 Google Chrome 開發人員版輸入規則。</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
+<translation id="8550334526674375523">這個工作資料夾與個人資料夾各自獨立。</translation>
 <translation id="8556340503434111824">Google Chrome 推出全新版本,速度更勝以往。</translation>
 <translation id="861359755029082151">Rosetta 可讓 Chrome 播放這個頁面中設有保護的媒體。</translation>
 <translation id="8614913330719544658">Google Chrome 沒有回應,要立即重新啟動嗎?</translation>
@@ -268,6 +274,7 @@
 <translation id="8907709077090383765">如果要讓 Chrome 播放設有保護的媒體,必須安裝 Rosetta。要立即安裝 Rosetta 嗎?</translation>
 <translation id="8914504000324227558">重新啟動 Chrome</translation>
 <translation id="8922193594870374009">如要將號碼從 <ph name="ORIGIN" /> 傳送到 Android 手機,請在這兩部裝置上登入 Chrome。</translation>
+<translation id="8986207147630327271">你即將在這個瀏覽器中新增工作資料夾,並僅將工作資料夾的控制權授予管理員。</translation>
 <translation id="8999208279178790196">{0,plural, =0{有可用的 Chrome 更新}=1{有可用的 Chrome 更新}other{Chrome 更新已發布 # 天}}</translation>
 <translation id="9026991721384951619">你的帳戶登入詳細資料尚未更新,因此 Chrome 作業系統無法同步處理你的資料。</translation>
 <translation id="9067395829937117663">Google Chrome 僅支援 Windows 7 以上版本的作業系統。</translation>
diff --git a/chrome/app/vector_icons/BUILD.gn b/chrome/app/vector_icons/BUILD.gn
index d109f38..bb5b1fa 100644
--- a/chrome/app/vector_icons/BUILD.gn
+++ b/chrome/app/vector_icons/BUILD.gn
@@ -31,6 +31,7 @@
     "caret_up.icon",
     "cast_for_education.icon",
     "chevron_right.icon",
+    "chrome_labs.icon",
     "click_to_call_illustration.icon",
     "click_to_call_illustration_dark.icon",
     "close_all.icon",
diff --git a/chrome/app/vector_icons/chrome_labs.icon b/chrome/app/vector_icons/chrome_labs.icon
new file mode 100644
index 0000000..5c33f82
--- /dev/null
+++ b/chrome/app/vector_icons/chrome_labs.icon
@@ -0,0 +1,39 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.

+// Use of this source code is governed by a BSD-style license that can be

+// found in the LICENSE file.

+

+CANVAS_DIMENSIONS, 32,

+MOVE_TO, 27.3f, 23.52f,

+R_LINE_TO, -8.37f, -11.99f,

+V_LINE_TO, 7.03f,

+R_H_LINE_TO, 3.04f,

+V_LINE_TO, 4,

+H_LINE_TO, 10.06f,

+R_V_LINE_TO, 3.03f,

+R_H_LINE_TO, 2.97f,

+R_V_LINE_TO, 4.49f,

+LINE_TO, 4.49f, 23.77f,

+R_ARC_TO, 2.73f, 2.73f, 0, 0, 0, -0.21f, 2.78f,

+ARC_TO, 2.58f, 2.58f, 0, 0, 0, 6.59f, 28,

+R_H_LINE_TO, 18.81f,

+CUBIC_TO, 26.83f, 28, 28, 26.8f, 28, 25.33f,

+R_CUBIC_TO, 0, -0.69f, -0.27f, -1.33f, -0.7f, -1.81f,

+CLOSE

+

+CANVAS_DIMENSIONS, 16,

+MOVE_TO, 13.65f, 11.76f,

+LINE_TO, 9.46f, 5.76f,

+V_LINE_TO, 3.52f,

+R_H_LINE_TO, 1.52f,

+V_LINE_TO, 2,

+H_LINE_TO, 5.03f,

+R_V_LINE_TO, 1.52f,

+R_H_LINE_TO, 1.49f,

+R_V_LINE_TO, 2.25f,

+R_LINE_TO, -4.27f, 6.12f,

+R_CUBIC_TO, -0.28f, 0.41f, -0.32f, 0.94f, -0.1f, 1.39f,

+R_CUBIC_TO, 0.22f, 0.45f, 0.67f, 0.73f, 1.15f, 0.73f,

+R_H_LINE_TO, 9.41f,

+R_CUBIC_TO, 0.71f, 0, 1.3f, -0.6f, 1.3f, -1.33f,

+R_CUBIC_TO, 0, -0.35f, -0.14f, -0.67f, -0.35f, -0.91f,

+CLOSE

diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index d922c9c..1ebb6408 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3515,6 +3515,8 @@
       "enterprise/connectors/connectors_manager.h",
       "enterprise/connectors/connectors_prefs.cc",
       "enterprise/connectors/connectors_prefs.h",
+      "enterprise/connectors/connectors_service.cc",
+      "enterprise/connectors/connectors_service.h",
       "enterprise/connectors/content_analysis_delegate.cc",
       "enterprise/connectors/content_analysis_delegate.h",
       "enterprise/connectors/content_analysis_dialog.cc",
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index b7ef1b8..0240977 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -2395,6 +2395,8 @@
     "policy/status_collector/status_collector.h",
     "policy/status_collector/status_collector_state.cc",
     "policy/status_collector/status_collector_state.h",
+    "policy/status_collector/tpm_status_combiner.cc",
+    "policy/status_collector/tpm_status_combiner.h",
     "policy/status_uploader.cc",
     "policy/status_uploader.h",
     "policy/system_features_disable_list_policy_handler.cc",
diff --git a/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.cc b/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.cc
index b234f14..e6eaee5 100644
--- a/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.cc
+++ b/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.cc
@@ -34,7 +34,9 @@
 #include "storage/browser/file_system/file_system_context.h"
 #include "storage/browser/file_system/file_system_url.h"
 #include "ui/aura/window.h"
+#include "ui/base/data_transfer_policy/data_transfer_endpoint.h"
 #include "ui/base/dragdrop/file_info/file_info.h"
+#include "ui/base/dragdrop/os_exchange_data.h"
 #include "url/gurl.h"
 
 namespace chromeos {
@@ -245,6 +247,18 @@
 
 ChromeDataExchangeDelegate::~ChromeDataExchangeDelegate() = default;
 
+void ChromeDataExchangeDelegate::SetExchangeDataSource(
+    aura::Window* target,
+    ui::OSExchangeData* os_exchange_data) {
+  DCHECK(os_exchange_data);
+  auto endpoint_type = ui::EndpointType::kGuestOs;
+  if (ash::window_util::IsArcWindow(target->GetToplevelWindow()))
+    endpoint_type = ui::EndpointType::kArc;
+
+  os_exchange_data->SetSource(
+      std::make_unique<ui::DataTransferEndpoint>(endpoint_type));
+}
+
 std::vector<ui::FileInfo> ChromeDataExchangeDelegate::GetFilenames(
     aura::Window* source,
     const std::vector<uint8_t>& data) const {
diff --git a/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.h b/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.h
index 2dfe724..66d36150 100644
--- a/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.h
+++ b/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.h
@@ -18,6 +18,8 @@
   ~ChromeDataExchangeDelegate() override;
 
   // DataExchangeDelegate:
+  void SetExchangeDataSource(aura::Window* target,
+                             ui::OSExchangeData* os_exchange_data) override;
   std::vector<ui::FileInfo> GetFilenames(
       aura::Window* source,
       const std::vector<uint8_t>& data) const override;
diff --git a/chrome/browser/chromeos/exo/chrome_data_exchange_delegate_unittest.cc b/chrome/browser/chromeos/exo/chrome_data_exchange_delegate_unittest.cc
index 13df0b7..db80ef7 100644
--- a/chrome/browser/chromeos/exo/chrome_data_exchange_delegate_unittest.cc
+++ b/chrome/browser/chromeos/exo/chrome_data_exchange_delegate_unittest.cc
@@ -29,7 +29,9 @@
 #include "ui/aura/test/test_window_delegate.h"
 #include "ui/aura/test/test_windows.h"
 #include "ui/aura/window.h"
+#include "ui/base/data_transfer_policy/data_transfer_endpoint.h"
 #include "ui/base/dragdrop/file_info/file_info.h"
+#include "ui/base/dragdrop/os_exchange_data.h"
 #include "ui/gfx/geometry/rect.h"
 #include "url/origin.h"
 
@@ -355,4 +357,17 @@
   EXPECT_EQ(true, data_exchange_delegate.HasUrlsInPickle(valid));
 }
 
+TEST_F(ChromeDataExchangeDelegateTest, SetExchangeDataSource) {
+  ChromeDataExchangeDelegate data_exchange_delegate;
+
+  ui::OSExchangeData os_exchange_data;
+
+  data_exchange_delegate.SetExchangeDataSource(arc_window_, &os_exchange_data);
+  EXPECT_EQ(ui::EndpointType::kArc, os_exchange_data.GetSource()->type());
+
+  data_exchange_delegate.SetExchangeDataSource(crostini_window_,
+                                               &os_exchange_data);
+  EXPECT_EQ(ui::EndpointType::kGuestOs, os_exchange_data.GetSource()->type());
+}
+
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/app_mode/kiosk_browsertest.cc b/chrome/browser/chromeos/login/app_mode/kiosk_browsertest.cc
index 7da67e4..34d3617 100644
--- a/chrome/browser/chromeos/login/app_mode/kiosk_browsertest.cc
+++ b/chrome/browser/chromeos/login/app_mode/kiosk_browsertest.cc
@@ -68,6 +68,7 @@
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/browser/profiles/profiles_state.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
+#include "chrome/browser/speech/extension_api/tts_engine_extension_api.h"
 #include "chrome/browser/ui/ash/wallpaper_controller_client.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_navigator.h"
@@ -1473,6 +1474,9 @@
 // TODO(crbug.com/1149893): Migrate to KioskDeviceOwnedTest.
 IN_PROC_BROWSER_TEST_F(KioskTest, SpokenFeedback) {
   test::SpeechMonitor sm;
+  // Disable the TTS engine for testing so that we don't wait for the TTS engine
+  // to load (the engine will never load on linux-chromeos builds).
+  TtsExtensionEngine::GetInstance()->DisableBuiltInTTSEngineForTesting();
   AccessibilityManager::Get()->EnableSpokenFeedback(true);
   StartAppLaunchFromLoginScreen(
       NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE);
diff --git a/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc b/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc
index 04fbe61..4d6153e 100644
--- a/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc
+++ b/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc
@@ -394,15 +394,15 @@
     std::string html_element_id;
     std::string popup_html_element_id;
     std::tie(html_element_id, popup_html_element_id) = pair;
-    test::OobeJS().ExpectHasNoAttribute(
-        "open", {kArcTosID, popup_html_element_id, "helpDialog"});
+    test::OobeJS().ExpectAttributeEQ(
+        "open", {kArcTosID, popup_html_element_id}, false);
     test::OobeJS().ClickOnPath({kArcTosID, html_element_id});
-    test::OobeJS().ExpectHasAttribute(
-        "open", {kArcTosID, popup_html_element_id, "helpDialog"});
+    test::OobeJS().ExpectAttributeEQ(
+        "open", {kArcTosID, popup_html_element_id}, true);
     test::OobeJS().ClickOnPath(
         {kArcTosID, popup_html_element_id, "closeButton"});
-    test::OobeJS().ExpectHasNoAttribute(
-        "open", {kArcTosID, popup_html_element_id, "helpDialog"});
+    test::OobeJS().ExpectAttributeEQ(
+        "open", {kArcTosID, popup_html_element_id}, false);
   }
   EXPECT_FALSE(screen_exit_result().has_value());
   EXPECT_THAT(
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_browsertest.cc b/chrome/browser/chromeos/login/demo_mode/demo_setup_browsertest.cc
index 3bc485a..4d92f1af 100644
--- a/chrome/browser/chromeos/login/demo_mode/demo_setup_browsertest.cc
+++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_browsertest.cc
@@ -161,13 +161,13 @@
   }
 
   void IsConfirmationDialogShown() {
-    test::OobeJS().ExpectHasAttribute(
-      "open", {"connect", "demoModeConfirmationDialog", "helpDialog"});
+    test::OobeJS().ExpectAttributeEQ(
+        "open", {"connect", "demoModeConfirmationDialog"}, true);
   }
 
   void IsConfirmationDialogHidden() {
-    test::OobeJS().ExpectHasNoAttribute(
-      "open", {"connect", "demoModeConfirmationDialog", "helpDialog"});
+    test::OobeJS().ExpectAttributeEQ(
+        "open", {"connect", "demoModeConfirmationDialog"}, false);
   }
 
   // TODO(michaelpg): Replace this with IsScreenDialogElementVisible, which is
diff --git a/chrome/browser/chromeos/login/reset_browsertest.cc b/chrome/browser/chromeos/login/reset_browsertest.cc
index 3ca277e5..ca622b1 100644
--- a/chrome/browser/chromeos/login/reset_browsertest.cc
+++ b/chrome/browser/chromeos/login/reset_browsertest.cc
@@ -52,7 +52,6 @@
 // HTML Elements
 constexpr char kResetScreen[] = "reset";
 constexpr char kConfirmationDialog[] = "confirmationDialog";
-constexpr char kHelpDialog[] = "helpDialog";
 constexpr char kTpmUpdate[] = "tpmFirmwareUpdate";
 constexpr char kTpmUpdateCheckbox[] = "tpmFirmwareUpdateCheckbox";
 
@@ -96,23 +95,23 @@
 
 void WaitForConfirmationDialogToOpen() {
   test::OobeJS()
-      .CreateAttributePresenceWaiter(
-          "open", true /*present*/,
-          {kResetScreen, kConfirmationDialog, kHelpDialog})
+      .CreateWaiter(
+          test::GetOobeElementPath({kResetScreen, kConfirmationDialog}) +
+          ".open")
       ->Wait();
 }
 
 void WaitForConfirmationDialogToClose() {
   test::OobeJS()
-      .CreateAttributePresenceWaiter(
-          "open", false /*present*/,
-          {kResetScreen, kConfirmationDialog, kHelpDialog})
+      .CreateWaiter(
+          test::GetOobeElementPath({kResetScreen, kConfirmationDialog}) +
+          ".open === false")
       ->Wait();
 }
 
 void ExpectConfirmationDialogClosed() {
-  test::OobeJS().ExpectHasNoAttribute(
-      "open", {kResetScreen, kConfirmationDialog, kHelpDialog});
+  test::OobeJS().ExpectAttributeEQ("open", {kResetScreen, kConfirmationDialog},
+                                   false);
 }
 
 }  // namespace
diff --git a/chrome/browser/chromeos/login/screens/mock_welcome_screen.h b/chrome/browser/chromeos/login/screens/mock_welcome_screen.h
index 0d8e88a..e83edef1 100644
--- a/chrome/browser/chromeos/login/screens/mock_welcome_screen.h
+++ b/chrome/browser/chromeos/login/screens/mock_welcome_screen.h
@@ -47,6 +47,7 @@
   MOCK_METHOD(void, ShowDemoModeConfirmationDialog, ());
   MOCK_METHOD(void, ShowEditRequisitionDialog, (const std::string&));
   MOCK_METHOD(void, ShowRemoraRequisitionDialog, ());
+  MOCK_METHOD(void, GiveChromeVoxHint, ());
 
  private:
   WelcomeScreen* screen_ = nullptr;
diff --git a/chrome/browser/chromeos/login/screens/multidevice_setup_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/multidevice_setup_screen_browsertest.cc
index d0c9319..710e78f 100644
--- a/chrome/browser/chromeos/login/screens/multidevice_setup_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/multidevice_setup_screen_browsertest.cc
@@ -22,6 +22,9 @@
 
 namespace chromeos {
 
+constexpr test::UIPath kMultideviceSetupPath = {"multidevice-setup-screen",
+                                                "impl", "multideviceSetup"};
+
 class MultiDeviceSetupScreenTest : public OobeBaseTest {
  public:
   MultiDeviceSetupScreenTest() = default;
@@ -61,17 +64,17 @@
   }
 
   void FinishDeviceSetup() {
+    const std::string elementJS =
+        test::GetOobeElementPath(kMultideviceSetupPath);
     test::OobeJS().Evaluate(
-        R"($('multidevice-setup-impl')
-          .$['multideviceSetup']
-          .fire('setup-exited', {didUserCompleteSetup: true});)");
+        elementJS + R"(.fire('setup-exited', {didUserCompleteSetup: true});)");
   }
 
   void CancelDeviceSetup() {
+    const std::string elementJS =
+        test::GetOobeElementPath(kMultideviceSetupPath);
     test::OobeJS().Evaluate(
-        R"($('multidevice-setup-impl')
-          .$['multideviceSetup']
-          .fire('setup-exited', {didUserCompleteSetup: false});)");
+        elementJS + R"(.fire('setup-exited', {didUserCompleteSetup: false});)");
   }
 
   void WaitForScreenShown() {
@@ -129,9 +132,9 @@
   WaitForScreenExit();
   EXPECT_EQ(screen_result_.value(), MultiDeviceSetupScreen::Result::NEXT);
   histogram_tester_.ExpectTotalCount(
-      "OOBE.StepCompletionTimeByExitReason.Multidevice-setup.Next", 1);
+      "OOBE.StepCompletionTimeByExitReason.Multidevice-setup-screen.Next", 1);
   histogram_tester_.ExpectTotalCount(
-      "OOBE.StepCompletionTime.Multidevice-setup", 1);
+      "OOBE.StepCompletionTime.Multidevice-setup-screen", 1);
   CheckUserChoice(true);
 }
 
@@ -145,9 +148,9 @@
   WaitForScreenExit();
   EXPECT_EQ(screen_result_.value(), MultiDeviceSetupScreen::Result::NEXT);
   histogram_tester_.ExpectTotalCount(
-      "OOBE.StepCompletionTimeByExitReason.Multidevice-setup.Next", 1);
+      "OOBE.StepCompletionTimeByExitReason.Multidevice-setup-screen.Next", 1);
   histogram_tester_.ExpectTotalCount(
-      "OOBE.StepCompletionTime.Multidevice-setup", 1);
+      "OOBE.StepCompletionTime.Multidevice-setup-screen", 1);
   CheckUserChoice(false);
 }
 
@@ -158,9 +161,9 @@
   EXPECT_EQ(screen_result_.value(),
             MultiDeviceSetupScreen::Result::NOT_APPLICABLE);
   histogram_tester_.ExpectTotalCount(
-      "OOBE.StepCompletionTimeByExitReason.Multidevice-setup.Next", 0);
+      "OOBE.StepCompletionTimeByExitReason.Multidevice-setup-screen.Next", 0);
   histogram_tester_.ExpectTotalCount(
-      "OOBE.StepCompletionTime.Multidevice-setup", 0);
+      "OOBE.StepCompletionTime.Multidevice-setup-screen", 0);
 }
 
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screens/update_required_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/update_required_screen_browsertest.cc
index 1cf3d6c9..c74e4a5 100644
--- a/chrome/browser/chromeos/login/screens/update_required_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/update_required_screen_browsertest.cc
@@ -64,8 +64,8 @@
                                          "noUsersDataMessage"};
 const test::UIPath kEolDeleteUsersDataLink = {"update-required",
                                               "deleteDataLink"};
-const test::UIPath kEolDeleteUsersDataConfirmDialog = {
-    "update-required", "confirmationDialog", "helpDialog"};
+const test::UIPath kEolDeleteUsersDataConfirmDialog = {"update-required",
+                                                       "confirmationDialog"};
 const test::UIPath kEolDeleteUsersDataConfirmButton = {"update-required",
                                                        "confirmDelete"};
 const test::UIPath kEolDeleteUsersDataCancelButton = {"update-required",
@@ -116,15 +116,17 @@
 
 void WaitForConfirmationDialogToOpen() {
   test::OobeJS()
-      .CreateAttributePresenceWaiter("open", true /*present*/,
-                                     kEolDeleteUsersDataConfirmDialog)
+      .CreateWaiter(
+          test::GetOobeElementPath({kEolDeleteUsersDataConfirmDialog}) +
+          ".open")
       ->Wait();
 }
 
 void WaitForConfirmationDialogToClose() {
   test::OobeJS()
-      .CreateAttributePresenceWaiter("open", false /*present*/,
-                                     kEolDeleteUsersDataConfirmDialog)
+      .CreateWaiter(
+          test::GetOobeElementPath({kEolDeleteUsersDataConfirmDialog}) +
+          ".open === false")
       ->Wait();
 }
 
diff --git a/chrome/browser/chromeos/login/screens/welcome_screen.cc b/chrome/browser/chromeos/login/screens/welcome_screen.cc
index d13ce812..d28b1c1 100644
--- a/chrome/browser/chromeos/login/screens/welcome_screen.cc
+++ b/chrome/browser/chromeos/login/screens/welcome_screen.cc
@@ -33,6 +33,8 @@
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/chromium_strings.h"
 #include "chrome/grit/generated_resources.h"
+#include "chromeos/constants/chromeos_features.h"
+#include "chromeos/constants/chromeos_switches.h"
 #include "components/language/core/browser/pref_names.h"
 #include "components/prefs/pref_service.h"
 #include "content/public/browser/browser_thread.h"
@@ -72,6 +74,13 @@
 constexpr const char kUserActionSetupDemoMode[] = "setupDemoMode";
 constexpr const char kUserActionSetupDemoModeGesture[] = "setupDemoModeGesture";
 constexpr const char kUserActionEnableDebugging[] = "enableDebugging";
+constexpr const char kUserActionActivateChromeVoxFromHint[] =
+    "activateChromeVoxFromHint";
+constexpr const char kUserActionDismissChromeVoxHint[] = "dismissChromeVoxHint";
+constexpr const char kUserActionCancelChromeVoxHint[] = "cancelChromeVoxHint";
+
+constexpr base::TimeDelta kChromeVoxHintTimerDuration =
+    base::TimeDelta::FromSeconds(20);
 
 struct WelcomeScreenA11yUserAction {
   const char* name_;
@@ -327,6 +336,7 @@
       base::DefaultTickClock::GetInstance(), this);
   if (view_) {
     view_->Show();
+    StartChromeVoxHintTimer();
   }
 }
 
@@ -353,6 +363,20 @@
     HandleAccelerator(ash::LoginAcceleratorAction::kStartDemoMode);
     return;
   }
+  if (action_id == kUserActionActivateChromeVoxFromHint) {
+    base::UmaHistogramBoolean("OOBE.WelcomeScreen.AcceptChromeVoxHint", true);
+    AccessibilityManager::Get()->EnableSpokenFeedback(true);
+    return;
+  }
+  if (action_id == kUserActionDismissChromeVoxHint) {
+    base::UmaHistogramBoolean("OOBE.WelcomeScreen.AcceptChromeVoxHint", false);
+    return;
+  }
+  if (action_id == kUserActionCancelChromeVoxHint) {
+    CancelChromeVoxHintTimer();
+    return;
+  }
+
   if (IsA11yUserAction(action_id)) {
     RecordA11yUserAction(action_id);
     if (action_id == kUserActionEnableSpokenFeedback) {
@@ -447,6 +471,7 @@
 
 void WelcomeScreen::OnContinueButtonPressed() {
   demo_mode_detector_.reset();
+  CancelChromeVoxHintTimer();
   exit_callback_.Run(Result::NEXT);
 }
 
@@ -516,4 +541,33 @@
   ash::LocaleUpdateController::Get()->OnLocaleChanged();
 }
 
+void WelcomeScreen::StartChromeVoxHintTimer() {
+  if (!features::IsOobeChromeVoxHintEnabled() ||
+      chromeos::switches::IsOOBEChromeVoxHintTimerDisabledForTesting()) {
+    return;
+  }
+
+  if (chromevox_hint_timer_activated_)
+    return;
+
+  // This timer should only be started once.
+  chromevox_hint_timer_activated_ = true;
+  chromevox_hint_timer_.Start(FROM_HERE, kChromeVoxHintTimerDuration, this,
+                              &WelcomeScreen::GiveChromeVoxHint);
+}
+
+void WelcomeScreen::CancelChromeVoxHintTimer() {
+  chromevox_hint_timer_.Stop();
+  chromevox_hint_timer_cancelled_for_testing_ = true;
+}
+
+void WelcomeScreen::GiveChromeVoxHint() {
+  if (view_)
+    view_->GiveChromeVoxHint();
+}
+
+void WelcomeScreen::GiveChromeVoxHintForTesting() {
+  GiveChromeVoxHint();
+}
+
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screens/welcome_screen.h b/chrome/browser/chromeos/login/screens/welcome_screen.h
index a3620b0..002649a 100644
--- a/chrome/browser/chromeos/login/screens/welcome_screen.h
+++ b/chrome/browser/chromeos/login/screens/welcome_screen.h
@@ -14,6 +14,7 @@
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
+#include "base/timer/timer.h"
 #include "chrome/browser/chromeos/login/demo_mode/demo_mode_detector.h"
 #include "chrome/browser/chromeos/login/screens/base_screen.h"
 #include "chrome/browser/chromeos/login/wizard_context.h"
@@ -106,6 +107,12 @@
     return &(context()->configuration);
   }
 
+  void CancelChromeVoxHintTimer();
+  void GiveChromeVoxHintForTesting();
+  bool GetChromeVoxHintTimerCancelledForTesting() {
+    return chromevox_hint_timer_cancelled_for_testing_;
+  }
+
  protected:
   // Exposes exit callback to test overrides.
   ScreenExitCallback* exit_callback() { return &exit_callback_; }
@@ -157,6 +164,10 @@
   void NotifyLocaleChange();
   void OnLocaleChangeResult(ash::LocaleNotificationResult result);
 
+  // ChromeVox hint.
+  void StartChromeVoxHintTimer();
+  void GiveChromeVoxHint();
+
   WelcomeView* view_ = nullptr;
   ScreenExitCallback exit_callback_;
 
@@ -175,6 +186,12 @@
 
   base::ObserverList<Observer>::Unchecked observers_;
 
+  base::OneShotTimer chromevox_hint_timer_;
+
+  bool chromevox_hint_timer_activated_ = false;
+
+  bool chromevox_hint_timer_cancelled_for_testing_ = false;
+
   base::WeakPtrFactory<WelcomeScreen> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(WelcomeScreen);
diff --git a/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc
index 42854758..e162ec7 100644
--- a/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc
@@ -4,6 +4,8 @@
 
 #include <memory>
 
+#include "ash/public/cpp/test/shell_test_api.h"
+#include "base/bind.h"
 #include "base/files/file_util.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_path_override.h"
@@ -12,6 +14,7 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
 #include "chrome/browser/chromeos/accessibility/magnification_manager.h"
+#include "chrome/browser/chromeos/accessibility/speech_monitor.h"
 #include "chrome/browser/chromeos/login/login_wizard.h"
 #include "chrome/browser/chromeos/login/screens/welcome_screen.h"
 #include "chrome/browser/chromeos/login/test/js_checker.h"
@@ -22,10 +25,12 @@
 #include "chrome/browser/chromeos/login/test/test_predicate_waiter.h"
 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
 #include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/browser/speech/extension_api/tts_engine_extension_api.h"
 #include "chrome/browser/ui/webui/chromeos/login/enable_debugging_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
 #include "chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h"
 #include "chrome/common/pref_names.h"
+#include "chrome/test/base/interactive_test_utils.h"
 #include "chromeos/constants/chromeos_paths.h"
 #include "chromeos/dbus/constants/dbus_switches.h"
 #include "chromeos/system/fake_statistics_provider.h"
@@ -40,7 +45,7 @@
 
 namespace {
 
-const char kStartupManifest[] =
+const char kStartupManifestEnglish[] =
     R"({
       "version": "1.0",
       "initial_locale" : "en-US",
@@ -48,11 +53,33 @@
       "keyboard_layout" : "xkb:us::eng",
     })";
 
+const char kStartupManifestFrench[] =
+    R"({
+      "version": "1.0",
+      "initial_locale" : "fr-FR",
+      "initial_timezone" : "Europe/Paris",
+      "keyboard_layout" : "xkb:fr::fra",
+    })";
+
 const char kCurrentLang[] =
     R"(document.getElementById('connect').$.welcomeScreen.currentLanguage)";
 const char kCurrentKeyboard[] =
     R"(document.getElementById('connect').currentKeyboard)";
 
+const test::UIPath kChromeVoxHintDialog = {"connect", "welcomeScreen",
+                                           "chromeVoxHint"};
+const char kSetAvailableVoices[] = R"(
+      chrome.tts.getVoices = function(callback) {
+        callback([
+          {'lang': 'en-US', 'voiceName': 'Chrome OS US English'},
+          {'lang': 'fr-FR', 'voiceName': 'Chrome OS français'}
+        ]);
+      };)";
+
+const char kChromeVoxHintLaptopSpokenString[] =
+    "Do you want to activate ChromeVox, the built-in screenreader for Chrome "
+    "OS? If so, press the space bar.";
+
 void ToggleAccessibilityFeature(const std::string& feature_name,
                                 bool new_value) {
   test::JSChecker js = test::OobeJS();
@@ -83,7 +110,7 @@
     EXPECT_TRUE(data_dir_.CreateUniqueTempDir());
     const base::FilePath startup_manifest =
         data_dir_.GetPath().AppendASCII("startup_manifest.json");
-    EXPECT_TRUE(base::WriteFile(startup_manifest, kStartupManifest));
+    EXPECT_TRUE(base::WriteFile(startup_manifest, kStartupManifestEnglish));
     path_override_ = std::make_unique<base::ScopedPathOverride>(
         chromeos::FILE_STARTUP_CUSTOMIZATION_MANIFEST, startup_manifest);
     return true;
@@ -485,4 +512,264 @@
   CheckTimezone(kTestTimezone);
 }
 
+class WelcomeScreenChromeVoxHintTest : public WelcomeScreenBrowserTest {
+ public:
+  WelcomeScreenChromeVoxHintTest() = default;
+  ~WelcomeScreenChromeVoxHintTest() override = default;
+
+  void WaitForChromeVoxHintDialogToOpen() {
+    test::OobeJS()
+        .CreateWaiter(test::GetOobeElementPath({kChromeVoxHintDialog}) +
+                      ".open")
+        ->Wait();
+  }
+
+  void WaitForChromeVoxHintDialogToClose() {
+    test::OobeJS()
+        .CreateWaiter(test::GetOobeElementPath({kChromeVoxHintDialog}) +
+                      ".open === false")
+        ->Wait();
+  }
+
+  void WaitForSpokenSuccessMetric() {
+    test::TestPredicateWaiter(
+        base::BindRepeating(
+            [](base::HistogramTester* tester) {
+              return tester->GetBucketCount(
+                         "OOBE.WelcomeScreen.ChromeVoxHintSpokenSuccess",
+                         true) == 1;
+            },
+            &histogram_tester_))
+        .Wait();
+    histogram_tester_.ExpectUniqueSample(
+        "OOBE.WelcomeScreen.ChromeVoxHintSpokenSuccess", true, 1);
+  }
+};
+
+// Assert that the ChromeVox hint gives speech output and shows a dialog.
+// Clicking the 'activate' button in the dialog should activate ChromeVox.
+IN_PROC_BROWSER_TEST_F(WelcomeScreenChromeVoxHintTest, LaptopClick) {
+  OobeScreenWaiter(WelcomeView::kScreenId).Wait();
+  TtsExtensionEngine::GetInstance()->DisableBuiltInTTSEngineForTesting();
+  test::ExecuteOobeJS(kSetAvailableVoices);
+  test::SpeechMonitor monitor;
+  test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, false);
+  welcome_screen()->GiveChromeVoxHintForTesting();
+  monitor.ExpectSpeech(kChromeVoxHintLaptopSpokenString);
+  monitor.Call([this]() {
+    ASSERT_FALSE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled());
+    WaitForChromeVoxHintDialogToOpen();
+    test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, true);
+    test::OobeJS().ClickOnPath(
+        {"connect", "welcomeScreen", "activateChromeVoxButton"});
+  });
+  monitor.ExpectSpeechPattern("*");
+  monitor.Call([this]() {
+    ASSERT_TRUE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled());
+    WaitForChromeVoxHintDialogToClose();
+    test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, false);
+    histogram_tester_.ExpectUniqueSample(
+        "OOBE.WelcomeScreen.AcceptChromeVoxHint", true, 1);
+  });
+  monitor.Replay();
+  WaitForSpokenSuccessMetric();
+}
+
+// Assert that the ChromeVox hint gives speech output and shows a dialog.
+// Pressing the space bar while the dialog is open should activate ChromeVox.
+IN_PROC_BROWSER_TEST_F(WelcomeScreenChromeVoxHintTest, LaptopSpaceBar) {
+  OobeScreenWaiter(WelcomeView::kScreenId).Wait();
+  TtsExtensionEngine::GetInstance()->DisableBuiltInTTSEngineForTesting();
+  test::ExecuteOobeJS(kSetAvailableVoices);
+  test::SpeechMonitor monitor;
+  test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, false);
+  welcome_screen()->GiveChromeVoxHintForTesting();
+  monitor.ExpectSpeech(kChromeVoxHintLaptopSpokenString);
+  monitor.Call([this]() {
+    ASSERT_FALSE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled());
+    WaitForChromeVoxHintDialogToOpen();
+    test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, true);
+    ASSERT_TRUE(ui_test_utils::SendKeyPressToWindowSync(
+        nullptr, ui::VKEY_SPACE, false /* control */, false /* shift */,
+        false /* alt */, false /* command */));
+  });
+  monitor.ExpectSpeechPattern("*");
+  monitor.Call([this]() {
+    ASSERT_TRUE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled());
+    WaitForChromeVoxHintDialogToClose();
+    test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, false);
+    histogram_tester_.ExpectUniqueSample(
+        "OOBE.WelcomeScreen.AcceptChromeVoxHint", true, 1);
+  });
+  monitor.Replay();
+  WaitForSpokenSuccessMetric();
+}
+
+// Tests the ChromeVox hint speech given in tablet mode.
+IN_PROC_BROWSER_TEST_F(WelcomeScreenChromeVoxHintTest, Tablet) {
+  OobeScreenWaiter(WelcomeView::kScreenId).Wait();
+  TtsExtensionEngine::GetInstance()->DisableBuiltInTTSEngineForTesting();
+  test::ExecuteOobeJS(kSetAvailableVoices);
+  ash::ShellTestApi().SetTabletModeEnabledForTest(true);
+  test::SpeechMonitor monitor;
+  welcome_screen()->GiveChromeVoxHintForTesting();
+  monitor.ExpectSpeech(
+      "Do you want to activate ChromeVox, the built-in screenreader for Chrome "
+      "OS? If so, press and hold both volume keys for five seconds.");
+  monitor.Replay();
+  WaitForSpokenSuccessMetric();
+}
+
+// Tests that the ChromeVox hint can be spoken, even if the necessary voice
+// hasn't loaded when the timer has fired.
+IN_PROC_BROWSER_TEST_F(WelcomeScreenChromeVoxHintTest, VoicesChanged) {
+  OobeScreenWaiter(WelcomeView::kScreenId).Wait();
+  TtsExtensionEngine::GetInstance()->DisableBuiltInTTSEngineForTesting();
+  const std::string set_no_english_voice = R"(
+    chrome.tts.getVoices = function(callback) {
+      callback([{'lang': 'fr-FR', 'voiceName': 'Chrome OS français'}]);
+    };)";
+  test::ExecuteOobeJS(set_no_english_voice);
+  test::SpeechMonitor monitor;
+  test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, false);
+  welcome_screen()->GiveChromeVoxHintForTesting();
+  // Wait for voiceschanged listener to register.
+  test::OobeJS()
+      .CreateWaiter(
+          "document.getElementById('connect')."
+          "voicesChangedListenerMaybeGiveChromeVoxHint_ !== undefined")
+      ->Wait();
+  const std::string load_english_voice = R"(
+    chrome.tts.getVoices = function(callback) {
+      callback([
+        {'lang': 'fr-FR', 'voiceName': 'Chrome OS français'},
+        {'lang': 'en-US', 'voiceName': 'Chrome OS US English'},
+      ]);
+    };
+    window.speechSynthesis.dispatchEvent(new Event('voiceschanged'));
+    )";
+  test::ExecuteOobeJS(load_english_voice);
+  monitor.ExpectSpeech(kChromeVoxHintLaptopSpokenString);
+  monitor.Replay();
+  WaitForSpokenSuccessMetric();
+}
+
+// Assert that clicking on one of the three buttons on the welcome screen
+// cancels the ChromeVox hint.
+IN_PROC_BROWSER_TEST_F(WelcomeScreenChromeVoxHintTest, CancelHint) {
+  WelcomeScreen* screen = welcome_screen();
+  OobeScreenWaiter(WelcomeView::kScreenId).Wait();
+  ASSERT_FALSE(screen->GetChromeVoxHintTimerCancelledForTesting());
+  test::OobeJS().ClickOnPath(
+      {"connect", "welcomeScreen", "accessibilitySettingsButton"});
+  ASSERT_TRUE(screen->GetChromeVoxHintTimerCancelledForTesting());
+}
+
+// Assert that activating ChromeVox before the hint cancels the hint's timeout.
+IN_PROC_BROWSER_TEST_F(WelcomeScreenChromeVoxHintTest,
+                       ActivateChromeVoxBeforeHint) {
+  WelcomeScreen* screen = welcome_screen();
+  OobeScreenWaiter(WelcomeView::kScreenId).Wait();
+  ASSERT_FALSE(screen->GetChromeVoxHintTimerCancelledForTesting());
+  ToggleAccessibilityFeature("accessibility-spoken-feedback", true);
+  ASSERT_TRUE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled());
+  ASSERT_TRUE(screen->GetChromeVoxHintTimerCancelledForTesting());
+}
+
+// Assert that activating ChromeVox (after the hint is given) closes the hint
+// dialog.
+IN_PROC_BROWSER_TEST_F(WelcomeScreenChromeVoxHintTest,
+                       ActivateChromeVoxAfterHint) {
+  WelcomeScreen* screen = welcome_screen();
+  OobeScreenWaiter(WelcomeView::kScreenId).Wait();
+  TtsExtensionEngine::GetInstance()->DisableBuiltInTTSEngineForTesting();
+  test::ExecuteOobeJS(kSetAvailableVoices);
+  test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, false);
+  screen->GiveChromeVoxHintForTesting();
+  WaitForChromeVoxHintDialogToOpen();
+  test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, true);
+  AccessibilityManager::Get()->EnableSpokenFeedback(true);
+  ASSERT_TRUE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled());
+  WaitForChromeVoxHintDialogToClose();
+  test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, false);
+}
+
+// Assert that we can dismiss the ChromeVox hint dialog and that the appropriate
+// metrics get recorded.
+IN_PROC_BROWSER_TEST_F(WelcomeScreenChromeVoxHintTest, DismissAfterHint) {
+  WelcomeScreen* screen = welcome_screen();
+  OobeScreenWaiter(WelcomeView::kScreenId).Wait();
+  TtsExtensionEngine::GetInstance()->DisableBuiltInTTSEngineForTesting();
+  test::ExecuteOobeJS(kSetAvailableVoices);
+  test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, false);
+  screen->GiveChromeVoxHintForTesting();
+  WaitForChromeVoxHintDialogToOpen();
+  test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, true);
+  test::OobeJS().ClickOnPath(
+      {"connect", "welcomeScreen", "dismissChromeVoxButton"});
+  WaitForChromeVoxHintDialogToClose();
+  test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, false);
+  histogram_tester_.ExpectUniqueSample("OOBE.WelcomeScreen.AcceptChromeVoxHint",
+                                       false, 1);
+}
+
+class WelcomeScreenInternationalChromeVoxHintTest
+    : public WelcomeScreenChromeVoxHintTest {
+ public:
+  bool SetUpUserDataDirectory() override {
+    if (!OobeBaseTest::SetUpUserDataDirectory())
+      return false;
+    EXPECT_TRUE(data_dir_.CreateUniqueTempDir());
+    const base::FilePath startup_manifest =
+        data_dir_.GetPath().AppendASCII("startup_manifest.json");
+    EXPECT_TRUE(base::WriteFile(startup_manifest, kStartupManifestFrench));
+    path_override_ = std::make_unique<base::ScopedPathOverride>(
+        chromeos::FILE_STARTUP_CUSTOMIZATION_MANIFEST, startup_manifest);
+    return true;
+  }
+
+ private:
+  std::unique_ptr<base::ScopedPathOverride> path_override_;
+  base::ScopedTempDir data_dir_;
+};
+
+// Tests the ChromeVox hint speech can be given in a language other than
+// English.
+IN_PROC_BROWSER_TEST_F(WelcomeScreenInternationalChromeVoxHintTest, SpeakHint) {
+  OobeScreenWaiter(WelcomeView::kScreenId).Wait();
+  TtsExtensionEngine::GetInstance()->DisableBuiltInTTSEngineForTesting();
+  test::ExecuteOobeJS(kSetAvailableVoices);
+  test::SpeechMonitor monitor;
+  welcome_screen()->GiveChromeVoxHintForTesting();
+  monitor.ExpectSpeechPatternWithLocale("*", "fr");
+  monitor.Replay();
+  WaitForSpokenSuccessMetric();
+}
+
+// Tests that the ChromeVox hint is spoken in English (after a timeout) if no
+// available voice can be loaded.
+IN_PROC_BROWSER_TEST_F(WelcomeScreenInternationalChromeVoxHintTest,
+                       DefaultAnnouncement) {
+  OobeScreenWaiter(WelcomeView::kScreenId).Wait();
+  TtsExtensionEngine::GetInstance()->DisableBuiltInTTSEngineForTesting();
+  // Load an English voice, but do not load a French voice.
+  // Also set the timeout for the fallback hint to 0 MS.
+  const std::string set_no_french_voice = R"(
+    chrome.tts.getVoices = function(callback) {
+      callback([{'lang': 'en-US', 'voiceName': 'Chrome OS US English'}]);
+    };)";
+  const std::string set_default_hint_timeout_ms = R"(
+    document.getElementById('connect').DEFAULT_CHROMEVOX_HINT_TIMEOUT_MS_ = 0;
+    )";
+  test::ExecuteOobeJS(set_default_hint_timeout_ms);
+  test::ExecuteOobeJS(set_no_french_voice);
+  test::SpeechMonitor monitor;
+  test::OobeJS().ExpectAttributeEQ("open", kChromeVoxHintDialog, false);
+  welcome_screen()->GiveChromeVoxHintForTesting();
+  // Expect speech in English, even though the system locale is French.
+  monitor.ExpectSpeechPatternWithLocale("*", "en-US");
+  monitor.Replay();
+  WaitForSpokenSuccessMetric();
+}
+
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/test/oobe_base_test.cc b/chrome/browser/chromeos/login/test/oobe_base_test.cc
index 52ab65e..3f47c42f 100644
--- a/chrome/browser/chromeos/login/test/oobe_base_test.cc
+++ b/chrome/browser/chromeos/login/test/oobe_base_test.cc
@@ -103,6 +103,8 @@
 void OobeBaseTest::SetUpCommandLine(base::CommandLine* command_line) {
   command_line->AppendSwitch(chromeos::switches::kLoginManager);
   command_line->AppendSwitch(chromeos::switches::kForceLoginManagerInTests);
+  command_line->AppendSwitch(
+      chromeos::switches::kDisableOOBEChromeVoxHintTimerForTesting);
   if (!needs_background_networking_)
     command_line->AppendSwitch(::switches::kDisableBackgroundNetworking);
   command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, "user");
diff --git a/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc b/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc
index e269aa7..57040e9 100644
--- a/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc
+++ b/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc
@@ -55,6 +55,7 @@
 #include "chrome/browser/chromeos/policy/status_collector/enterprise_activity_storage.h"
 #include "chrome/browser/chromeos/policy/status_collector/interval_map.h"
 #include "chrome/browser/chromeos/policy/status_collector/status_collector_state.h"
+#include "chrome/browser/chromeos/policy/status_collector/tpm_status_combiner.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
 #include "chrome/browser/chromeos/settings/cros_settings.h"
 #include "chrome/browser/crash_upload_list/crash_upload_list.h"
@@ -64,6 +65,7 @@
 #include "chrome/common/chrome_features.h"
 #include "chrome/common/pref_names.h"
 #include "chromeos/audio/cras_audio_handler.h"
+#include "chromeos/dbus/attestation/attestation_client.h"
 #include "chromeos/dbus/cryptohome/cryptohome_client.h"
 #include "chromeos/dbus/cryptohome/rpc.pb.h"
 #include "chromeos/dbus/cryptohome/tpm_util.h"
@@ -435,57 +437,23 @@
   return true;
 }
 
-// Converts the given GetTpmStatusReply to TpmStatusInfo.
-policy::TpmStatusInfo GetTpmStatusReplyToTpmStatusInfo(
-    const base::Optional<cryptohome::BaseReply>& reply) {
-  policy::TpmStatusInfo tpm_status_info;
-
-  if (!reply.has_value()) {
-    LOG(ERROR) << "GetTpmStatus call failed with empty reply.";
-    return tpm_status_info;
-  }
-  if (reply->has_error() &&
-      reply->error() != cryptohome::CRYPTOHOME_ERROR_NOT_SET) {
-    LOG(ERROR) << "GetTpmStatus failed with error: " << reply->error();
-    return tpm_status_info;
-  }
-  if (!reply->HasExtension(cryptohome::GetTpmStatusReply::reply)) {
-    LOG(ERROR)
-        << "GetTpmStatus failed with no GetTpmStatusReply extension in reply.";
-    return tpm_status_info;
-  }
-
-  auto reply_proto = reply->GetExtension(cryptohome::GetTpmStatusReply::reply);
-
-  tpm_status_info.enabled = reply_proto.enabled();
-  tpm_status_info.owned = reply_proto.owned();
-  tpm_status_info.initialized = reply_proto.initialized();
-  tpm_status_info.attestation_prepared = reply_proto.attestation_prepared();
-  tpm_status_info.attestation_enrolled = reply_proto.attestation_enrolled();
-  tpm_status_info.dictionary_attack_counter =
-      reply_proto.dictionary_attack_counter();
-  tpm_status_info.dictionary_attack_threshold =
-      reply_proto.dictionary_attack_threshold();
-  tpm_status_info.dictionary_attack_lockout_in_effect =
-      reply_proto.dictionary_attack_lockout_in_effect();
-  tpm_status_info.dictionary_attack_lockout_seconds_remaining =
-      reply_proto.dictionary_attack_lockout_seconds_remaining();
-  tpm_status_info.boot_lockbox_finalized = reply_proto.boot_lockbox_finalized();
-
-  return tpm_status_info;
-}
-
 void ReadTpmStatus(policy::DeviceStatusCollector::TpmStatusReceiver callback) {
   // D-Bus calls are allowed only on the UI thread.
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  chromeos::CryptohomeClient::Get()->GetTpmStatus(
-      cryptohome::GetTpmStatusRequest(),
-      base::BindOnce(
-          [](policy::DeviceStatusCollector::TpmStatusReceiver callback,
-             base::Optional<cryptohome::BaseReply> reply) {
-            std::move(callback).Run(GetTpmStatusReplyToTpmStatusInfo(reply));
-          },
-          std::move(callback)));
+  auto tpm_status_combiner =
+      base::MakeRefCounted<::policy::TpmStatusCombiner>(std::move(callback));
+  chromeos::TpmManagerClient::Get()->GetTpmNonsensitiveStatus(
+      ::tpm_manager::GetTpmNonsensitiveStatusRequest(),
+      base::BindOnce(&::policy::TpmStatusCombiner::OnGetTpmStatus,
+                     tpm_status_combiner));
+  chromeos::AttestationClient::Get()->GetStatus(
+      ::attestation::GetStatusRequest(),
+      base::BindOnce(&::policy::TpmStatusCombiner::OnGetEnrollmentStatus,
+                     tpm_status_combiner));
+  chromeos::TpmManagerClient::Get()->GetDictionaryAttackInfo(
+      ::tpm_manager::GetDictionaryAttackInfoRequest(),
+      base::BindOnce(&::policy::TpmStatusCombiner::OnGetDictionaryAttackInfo,
+                     tpm_status_combiner));
 }
 
 base::Version GetPlatformVersion() {
diff --git a/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc b/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc
index 0a7ebd3f0..77808d4 100644
--- a/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc
+++ b/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc
@@ -57,6 +57,7 @@
 #include "chrome/test/base/testing_browser_process.h"
 #include "chrome/test/base/testing_profile_manager.h"
 #include "chromeos/audio/cras_audio_handler.h"
+#include "chromeos/dbus/attestation/attestation_client.h"
 #include "chromeos/dbus/cros_disks_client.h"
 #include "chromeos/dbus/cros_healthd/cros_healthd_client.h"
 #include "chromeos/dbus/dbus_thread_manager.h"
@@ -280,7 +281,6 @@
   policy::DeviceStatusCollector::CPUStatisticsFetcher cpu_fetcher;
   policy::DeviceStatusCollector::CPUTempFetcher cpu_temp_fetcher;
   policy::StatusCollector::AndroidStatusFetcher android_status_fetcher;
-  policy::DeviceStatusCollector::TpmStatusFetcher tpm_status_fetcher;
   policy::DeviceStatusCollector::EMMCLifetimeFetcher emmc_lifetime_fetcher;
   policy::DeviceStatusCollector::StatefulPartitionInfoFetcher
       stateful_partition_info_fetcher;
@@ -294,24 +294,27 @@
 
 class TestingDeviceStatusCollector : public policy::DeviceStatusCollector {
  public:
+  // Note that that TpmStatusFetcher is null so the test exercises the
+  // production logic with fake tpm manager and attestation clients.
   TestingDeviceStatusCollector(
       PrefService* pref_service,
       chromeos::system::StatisticsProvider* provider,
       std::unique_ptr<TestingDeviceStatusCollectorOptions> options,
       base::SimpleTestClock* clock)
-      : policy::DeviceStatusCollector(pref_service,
-                                      provider,
-                                      options->volume_info_fetcher,
-                                      options->cpu_fetcher,
-                                      options->cpu_temp_fetcher,
-                                      options->android_status_fetcher,
-                                      options->tpm_status_fetcher,
-                                      options->emmc_lifetime_fetcher,
-                                      options->stateful_partition_info_fetcher,
-                                      options->cros_healthd_data_fetcher,
-                                      options->graphics_status_fetcher,
-                                      options->crash_report_info_fetcher,
-                                      clock),
+      : policy::DeviceStatusCollector(
+            pref_service,
+            provider,
+            options->volume_info_fetcher,
+            options->cpu_fetcher,
+            options->cpu_temp_fetcher,
+            options->android_status_fetcher,
+            policy::DeviceStatusCollector::TpmStatusFetcher(),
+            options->emmc_lifetime_fetcher,
+            options->stateful_partition_info_fetcher,
+            options->cros_healthd_data_fetcher,
+            options->graphics_status_fetcher,
+            options->crash_report_info_fetcher,
+            clock),
         test_clock_(*clock) {
     // Set the baseline time to a fixed value (1 hour after day start) to
     // prevent test flakiness due to a single activity period spanning two days.
@@ -454,17 +457,6 @@
   return true;
 }
 
-void GetEmptyTpmStatus(
-    policy::DeviceStatusCollector::TpmStatusReceiver receiver) {
-  std::move(receiver).Run(policy::TpmStatusInfo());
-}
-
-void GetFakeTpmStatus(
-    const policy::TpmStatusInfo& tpm_status_info,
-    policy::DeviceStatusCollector::TpmStatusReceiver receiver) {
-  std::move(receiver).Run(tpm_status_info);
-}
-
 em::DiskLifetimeEstimation GetEmptyEMMCLifetimeEstimation() {
   return em::DiskLifetimeEstimation();
 }
@@ -799,6 +791,7 @@
     chromeos::CrasAudioHandler::InitializeForTesting();
     chromeos::CryptohomeClient::InitializeFake();
     chromeos::PowerManagerClient::InitializeFake();
+    chromeos::AttestationClient::InitializeFake();
     chromeos::TpmManagerClient::InitializeFake();
     chromeos::LoginState::Initialize();
   }
@@ -806,6 +799,7 @@
   ~DeviceStatusCollectorTest() override {
     chromeos::LoginState::Shutdown();
     chromeos::TpmManagerClient::Shutdown();
+    chromeos::AttestationClient::Shutdown();
     chromeos::PowerManagerClient::Shutdown();
     chromeos::CryptohomeClient::Shutdown();
     chromeos::CrasAudioHandler::Shutdown();
@@ -866,7 +860,7 @@
     options->cpu_temp_fetcher = base::BindRepeating(&GetEmptyCPUTempInfo);
     options->android_status_fetcher =
         base::BindRepeating(&GetEmptyAndroidStatus);
-    options->tpm_status_fetcher = base::BindRepeating(&GetEmptyTpmStatus);
+
     options->emmc_lifetime_fetcher =
         base::BindRepeating(&GetEmptyEMMCLifetimeEstimation);
     options->stateful_partition_info_fetcher =
@@ -2229,47 +2223,94 @@
 }
 
 TEST_F(DeviceStatusCollectorTest, TpmStatusReporting) {
-  // Create a fake TPM status info and populate it with some random values.
-  const policy::TpmStatusInfo kFakeTpmStatus{
-      true,  /* enabled */
-      false, /* owned */
-      true,  /* initialized */
-      false, /* attestation_prepared */
-      true,  /* attestation_enrolled */
-      5,     /* dictionary_attack_counter */
-      10,    /* dictionary_attack_threshold */
-      false, /* dictionary_attack_lockout_in_effect */
-      0,     /* dictionary_attack_lockout_seconds_remaining */
-      true   /* boot_lockbox_finalized */
-  };
-  auto options = CreateEmptyDeviceStatusCollectorOptions();
-  options->tpm_status_fetcher =
-      base::BindRepeating(&GetFakeTpmStatus, kFakeTpmStatus);
-  RestartStatusCollector(std::move(options));
+  auto* tpm_status_reply = chromeos::TpmManagerClient::Get()
+                               ->GetTestInterface()
+                               ->mutable_nonsensitive_status_reply();
+  tpm_status_reply->set_is_enabled(true);
+  tpm_status_reply->set_is_owned(true);
+  tpm_status_reply->set_is_owner_password_present(false);
+  auto* enrollment_status_reply = chromeos::AttestationClient::Get()
+                                      ->GetTestInterface()
+                                      ->mutable_status_reply();
+  enrollment_status_reply->set_prepared_for_enrollment(true);
+  enrollment_status_reply->set_enrolled(false);
+  auto* da_info_reply = chromeos::TpmManagerClient::Get()
+                            ->GetTestInterface()
+                            ->mutable_dictionary_attack_info_reply();
+  da_info_reply->set_dictionary_attack_counter(5);
+  da_info_reply->set_dictionary_attack_threshold(10);
+  da_info_reply->set_dictionary_attack_lockout_in_effect(false);
+  da_info_reply->set_dictionary_attack_lockout_seconds_remaining(0);
 
   GetStatus();
 
   EXPECT_TRUE(device_status_.has_tpm_status_info());
-  EXPECT_EQ(kFakeTpmStatus.enabled, device_status_.tpm_status_info().enabled());
-  EXPECT_EQ(kFakeTpmStatus.owned, device_status_.tpm_status_info().owned());
-  EXPECT_EQ(kFakeTpmStatus.initialized,
+  EXPECT_EQ(tpm_status_reply->is_enabled(),
+            device_status_.tpm_status_info().enabled());
+  EXPECT_EQ(tpm_status_reply->is_owned(),
+            device_status_.tpm_status_info().owned());
+  EXPECT_EQ(tpm_status_reply->is_owned() &&
+                !tpm_status_reply->is_owner_password_present(),
             device_status_.tpm_status_info().tpm_initialized());
-  EXPECT_EQ(kFakeTpmStatus.attestation_prepared,
+  EXPECT_EQ(enrollment_status_reply->prepared_for_enrollment(),
             device_status_.tpm_status_info().attestation_prepared());
-  EXPECT_EQ(kFakeTpmStatus.attestation_enrolled,
+  EXPECT_EQ(enrollment_status_reply->enrolled(),
             device_status_.tpm_status_info().attestation_enrolled());
-  EXPECT_EQ(kFakeTpmStatus.dictionary_attack_counter,
+  EXPECT_EQ(da_info_reply->dictionary_attack_counter(),
             device_status_.tpm_status_info().dictionary_attack_counter());
-  EXPECT_EQ(kFakeTpmStatus.dictionary_attack_threshold,
+  EXPECT_EQ(da_info_reply->dictionary_attack_threshold(),
             device_status_.tpm_status_info().dictionary_attack_threshold());
   EXPECT_EQ(
-      kFakeTpmStatus.dictionary_attack_lockout_in_effect,
+      da_info_reply->dictionary_attack_lockout_in_effect(),
       device_status_.tpm_status_info().dictionary_attack_lockout_in_effect());
-  EXPECT_EQ(kFakeTpmStatus.dictionary_attack_lockout_seconds_remaining,
+  EXPECT_EQ(da_info_reply->dictionary_attack_lockout_seconds_remaining(),
             device_status_.tpm_status_info()
                 .dictionary_attack_lockout_seconds_remaining());
-  EXPECT_EQ(kFakeTpmStatus.boot_lockbox_finalized,
-            device_status_.tpm_status_info().boot_lockbox_finalized());
+  EXPECT_EQ(false, device_status_.tpm_status_info().boot_lockbox_finalized());
+}
+
+// Checks if tpm status is partially reported even if any error happens
+// among the multiple D-Bus calls.
+TEST_F(DeviceStatusCollectorTest, TpmStatusReportingAnyDBusError) {
+  auto* tpm_status_reply = chromeos::TpmManagerClient::Get()
+                               ->GetTestInterface()
+                               ->mutable_nonsensitive_status_reply();
+  auto* enrollment_status_reply = chromeos::AttestationClient::Get()
+                                      ->GetTestInterface()
+                                      ->mutable_status_reply();
+  auto* da_info_reply = chromeos::TpmManagerClient::Get()
+                            ->GetTestInterface()
+                            ->mutable_dictionary_attack_info_reply();
+
+  tpm_status_reply->set_status(::tpm_manager::STATUS_DBUS_ERROR);
+  enrollment_status_reply->set_prepared_for_enrollment(true);
+  GetStatus();
+  EXPECT_EQ(enrollment_status_reply->prepared_for_enrollment(),
+            device_status_.tpm_status_info().attestation_prepared());
+  // Reset the error status.
+  tpm_status_reply->set_status(::tpm_manager::STATUS_SUCCESS);
+
+  RestartStatusCollector();
+
+  enrollment_status_reply->set_status(::attestation::STATUS_DBUS_ERROR);
+  da_info_reply->set_dictionary_attack_counter(5);
+  GetStatus();
+  // Reset the error status.
+  EXPECT_EQ(da_info_reply->dictionary_attack_counter(),
+            device_status_.tpm_status_info().dictionary_attack_counter());
+  // Reset the error status.
+  enrollment_status_reply->set_status(::attestation::STATUS_SUCCESS);
+
+  RestartStatusCollector();
+
+  da_info_reply->set_status(::tpm_manager::STATUS_DBUS_ERROR);
+  tpm_status_reply->set_is_enabled(true);
+  GetStatus();
+  EXPECT_TRUE(device_status_.has_tpm_status_info());
+  EXPECT_EQ(tpm_status_reply->is_enabled(),
+            device_status_.tpm_status_info().enabled());
+  // Reset the error status (for symmetry).
+  da_info_reply->set_status(::tpm_manager::STATUS_SUCCESS);
 }
 
 TEST_F(DeviceStatusCollectorTest, NoTimeZoneReporting) {
diff --git a/chrome/browser/chromeos/policy/status_collector/tpm_status_combiner.cc b/chrome/browser/chromeos/policy/status_collector/tpm_status_combiner.cc
new file mode 100644
index 0000000..5ad5c094
--- /dev/null
+++ b/chrome/browser/chromeos/policy/status_collector/tpm_status_combiner.cc
@@ -0,0 +1,76 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/policy/status_collector/tpm_status_combiner.h"
+
+#include <utility>
+
+#include "base/logging.h"
+
+namespace policy {
+
+TpmStatusCombiner::TpmStatusCombiner(
+    DeviceStatusCollector::TpmStatusReceiver callback)
+    : callback_(std::move(callback)) {
+  DCHECK(!callback_.is_null());
+}
+
+TpmStatusCombiner::~TpmStatusCombiner() = default;
+
+void TpmStatusCombiner::OnGetTpmStatus(
+    const ::tpm_manager::GetTpmNonsensitiveStatusReply& reply) {
+  has_tpm_status_ = true;
+  if (reply.status() == ::tpm_manager::STATUS_SUCCESS) {
+    tpm_status_info_.enabled = reply.is_enabled();
+    tpm_status_info_.owned = reply.is_owned();
+    // Wiped owner password means the TPm initialization is done and no any
+    // further operations needed.
+    tpm_status_info_.initialized =
+        reply.is_owned() && !reply.is_owner_password_present();
+  } else {
+    LOG(WARNING) << "Failed to get tpm status.";
+  }
+  RunCallbackIfComplete();
+}
+
+void TpmStatusCombiner::OnGetEnrollmentStatus(
+    const ::attestation::GetStatusReply& reply) {
+  has_enrollment_status_ = true;
+  if (reply.status() == ::attestation::STATUS_SUCCESS) {
+    tpm_status_info_.attestation_prepared = reply.prepared_for_enrollment();
+    tpm_status_info_.attestation_enrolled = reply.enrolled();
+  } else {
+    LOG(WARNING) << "Failed to get enrollment info.";
+  }
+
+  RunCallbackIfComplete();
+}
+
+void TpmStatusCombiner::OnGetDictionaryAttackInfo(
+    const ::tpm_manager::GetDictionaryAttackInfoReply& reply) {
+  has_dictionary_attack_info_ = true;
+  if (reply.status() == ::tpm_manager::STATUS_SUCCESS) {
+    tpm_status_info_.dictionary_attack_counter =
+        reply.dictionary_attack_counter();
+    tpm_status_info_.dictionary_attack_threshold =
+        reply.dictionary_attack_threshold();
+    tpm_status_info_.dictionary_attack_lockout_in_effect =
+        reply.dictionary_attack_lockout_in_effect();
+    tpm_status_info_.dictionary_attack_lockout_seconds_remaining =
+        reply.dictionary_attack_lockout_seconds_remaining();
+  } else {
+    LOG(WARNING) << "Failed to get dictionary attack info.";
+  }
+
+  RunCallbackIfComplete();
+}
+
+void TpmStatusCombiner::RunCallbackIfComplete() {
+  if (!has_tpm_status_ || !has_enrollment_status_ ||
+      !has_dictionary_attack_info_)
+    return;
+  std::move(callback_).Run(tpm_status_info_);
+}
+
+}  // namespace policy
diff --git a/chrome/browser/chromeos/policy/status_collector/tpm_status_combiner.h b/chrome/browser/chromeos/policy/status_collector/tpm_status_combiner.h
new file mode 100644
index 0000000..9110f60
--- /dev/null
+++ b/chrome/browser/chromeos/policy/status_collector/tpm_status_combiner.h
@@ -0,0 +1,73 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_POLICY_STATUS_COLLECTOR_TPM_STATUS_COMBINER_H_
+#define CHROME_BROWSER_CHROMEOS_POLICY_STATUS_COLLECTOR_TPM_STATUS_COMBINER_H_
+
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_refptr.h"
+#include "chrome/browser/chromeos/policy/status_collector/device_status_collector.h"
+#include "chromeos/dbus/attestation/interface.pb.h"
+#include "chromeos/dbus/tpm_manager/tpm_manager.pb.h"
+
+namespace policy {
+
+// This class is meant to combine multiple statuses around TPM and enrollment.
+// Because the result `policy::TpmStatusInfo` comes from different sources of
+// D-Bus calls, this class is designed to be used as a shared pointer that
+// resides in multiple callbacks. When all the replies of the D-Bus calls, which
+// are sent by the user of this class, are finished, this class combines the
+// results into a single `policy::TpmStatusInfo` and get destroyed naturally
+// when all the callbacks of the D-Bus calls are done.
+//
+// Note that in order to increase test coverage of `DeviceStatusCollector`, this
+// class doesn't have its own unittest; instead, it is tested along with
+// `DeviceStatusCollector` end-to-end.
+class TpmStatusCombiner : public base::RefCounted<TpmStatusCombiner> {
+ public:
+  // The passed `callback` is invoked when all the D-Bus responses of
+  // interest are received.
+  explicit TpmStatusCombiner(DeviceStatusCollector::TpmStatusReceiver callback);
+
+  // Not copyable or movable.
+  TpmStatusCombiner(const TpmStatusCombiner&) = delete;
+  TpmStatusCombiner& operator=(const TpmStatusCombiner&) = delete;
+  TpmStatusCombiner(TpmStatusCombiner&&) = delete;
+  TpmStatusCombiner& operator=(TpmStatusCombiner&&) = delete;
+
+  // Designed to be the callback of
+  // `TpmManagerClient::GetTpmNonsensitiveStatus()`.
+  void OnGetTpmStatus(
+      const ::tpm_manager::GetTpmNonsensitiveStatusReply& reply);
+  // Designed to be the callback of `AttestationClient::GetStatus()`.
+  void OnGetEnrollmentStatus(const ::attestation::GetStatusReply& reply);
+  // Designed to be the callback of
+  // `AttestationClient::GetDictionaryAttackInfoReply()`.
+  void OnGetDictionaryAttackInfo(
+      const ::tpm_manager::GetDictionaryAttackInfoReply& reply);
+
+ private:
+  // `RefCounted` subclass requires the destructor to be non-public.
+  friend class base::RefCounted<TpmStatusCombiner>;
+  ~TpmStatusCombiner();
+
+  // Called when receiving any D-Bus response. If it's the last D-Bus response
+  // we expect to handle, runs the callback passed in
+  void RunCallbackIfComplete();
+
+  // Invoked when all D-Bus response are handled.
+  DeviceStatusCollector::TpmStatusReceiver callback_;
+
+  // The combined result passed into `callback_`.
+  policy::TpmStatusInfo tpm_status_info_;
+
+  // Indicates each D-Bus response being received or not.
+  bool has_tpm_status_ = false;
+  bool has_enrollment_status_ = false;
+  bool has_dictionary_attack_info_ = false;
+};
+
+}  // namespace policy
+
+#endif  // CHROME_BROWSER_CHROMEOS_POLICY_STATUS_COLLECTOR_TPM_STATUS_COMBINER_H_
diff --git a/chrome/browser/download/notification/download_item_notification.cc b/chrome/browser/download/notification/download_item_notification.cc
index d037f5e..9d8983b0 100644
--- a/chrome/browser/download/notification/download_item_notification.cc
+++ b/chrome/browser/download/notification/download_item_notification.cc
@@ -23,7 +23,7 @@
 #include "chrome/browser/download/download_crx_util.h"
 #include "chrome/browser/download/download_item_model.h"
 #include "chrome/browser/download/notification/download_notification_manager.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/notifications/notification_display_service.h"
 #include "chrome/browser/notifications/notification_display_service_factory.h"
 #include "chrome/browser/notifications/notification_handler.h"
@@ -901,7 +901,6 @@
   bool time_remaining_known = (!item_->IsPaused() &&
                                item_->TimeRemaining(&time_remaining));
 
-
   // A download scheduled to be opened when complete.
   if (item_->GetOpenWhenComplete()) {
     // "Opening when complete"
@@ -1037,9 +1036,12 @@
 }
 
 bool DownloadItemNotification::AllowedToOpenWhileScanning() const {
-  return !enterprise_connectors::ConnectorsManager::GetInstance()
-              ->DelayUntilVerdict(
-                  enterprise_connectors::AnalysisConnector::FILE_DOWNLOADED);
+  auto* service =
+      enterprise_connectors::ConnectorsServiceFactory::GetForBrowserContext(
+          profile());
+  return !service ||
+         !service->DelayUntilVerdict(
+             enterprise_connectors::AnalysisConnector::FILE_DOWNLOADED);
 }
 
 Browser* DownloadItemNotification::GetBrowser() const {
diff --git a/chrome/browser/download/notification/download_item_notification_unittest.cc b/chrome/browser/download/notification/download_item_notification_unittest.cc
index b1ebb6f6..1d721c2 100644
--- a/chrome/browser/download/notification/download_item_notification_unittest.cc
+++ b/chrome/browser/download/notification/download_item_notification_unittest.cc
@@ -16,14 +16,13 @@
 #include "chrome/browser/download/chrome_download_manager_delegate.h"
 #include "chrome/browser/download/notification/download_notification_manager.h"
 #include "chrome/browser/download/offline_item_utils.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
-#include "chrome/browser/enterprise/connectors/connectors_prefs.h"
 #include "chrome/browser/notifications/notification_display_service.h"
 #include "chrome/browser/notifications/notification_display_service_factory.h"
 #include "chrome/browser/notifications/notification_display_service_tester.h"
 #include "chrome/browser/notifications/notification_handler.h"
 #include "chrome/browser/notifications/notification_test_util.h"
 #include "chrome/browser/notifications/platform_notification_service_impl.h"
+#include "chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.h"
 #include "chrome/test/base/testing_browser_process.h"
 #include "chrome/test/base/testing_profile.h"
 #include "chrome/test/base/testing_profile_manager.h"
@@ -85,12 +84,9 @@
         GURL("http://www.example.com/download.bin")));
     content::DownloadItemUtils::AttachInfo(download_item_.get(), profile_,
                                            nullptr);
-    enterprise_connectors::ConnectorsManager::GetInstance()->SetUpForTesting();
   }
 
   void TearDown() override {
-    enterprise_connectors::ConnectorsManager::GetInstance()
-        ->TearDownForTesting();
     download_item_notification_ = nullptr;  // will be free'd in the manager.
     download_notification_manager_.reset();
     profile_manager_.reset();
@@ -280,29 +276,29 @@
   CreateDownloadItemNotification();
 
   // Can't open while scanning.
-  profile_manager_->local_state()->Get()->SetManagedPref(
-      enterprise_connectors::kOnFileDownloadedPref,
-      std::make_unique<base::Value>(*base::JSONReader::Read(R"([
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(),
+                                      enterprise_connectors::FILE_DOWNLOADED,
+                                      R"(
         {
           "service_provider": "google",
           "enable": [{"url_list": ["*"], "tags": ["malware"]}],
           "block_until_verdict": 1
         }
-      ])")));
+      )");
   EXPECT_CALL(*download_item_, OpenDownload()).Times(0);
   EXPECT_CALL(*download_item_, SetOpenWhenComplete(true)).Times(1);
   download_item_notification_->Click(base::nullopt, base::nullopt);
 
   // Can be opened while scanning.
-  profile_manager_->local_state()->Get()->SetManagedPref(
-      enterprise_connectors::kOnFileDownloadedPref,
-      std::make_unique<base::Value>(*base::JSONReader::Read(R"([
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(),
+                                      enterprise_connectors::FILE_DOWNLOADED,
+                                      R"(
         {
           "service_provider": "google",
           "enable": [{"url_list": ["*"], "tags": ["malware"]}],
           "block_until_verdict": 0
         }
-      ])")));
+      )");
   EXPECT_CALL(*download_item_, OpenDownload()).Times(1);
   download_item_notification_->Click(base::nullopt, base::nullopt);
 
diff --git a/chrome/browser/enterprise/connectors/analysis_service_settings_unittest.cc b/chrome/browser/enterprise/connectors/analysis_service_settings_unittest.cc
index df6030d7..6510e13 100644
--- a/chrome/browser/enterprise/connectors/analysis_service_settings_unittest.cc
+++ b/chrome/browser/enterprise/connectors/analysis_service_settings_unittest.cc
@@ -5,7 +5,7 @@
 #include "chrome/browser/enterprise/connectors/analysis_service_settings.h"
 #include "base/json/json_reader.h"
 #include "base/no_destructor.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "content/public/test/browser_task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/enterprise/connectors/connectors_manager.cc b/chrome/browser/enterprise/connectors/connectors_manager.cc
index 3c0cc45..9950305 100644
--- a/chrome/browser/enterprise/connectors/connectors_manager.cc
+++ b/chrome/browser/enterprise/connectors/connectors_manager.cc
@@ -19,111 +19,30 @@
 
 namespace enterprise_connectors {
 
-const base::Feature kEnterpriseConnectorsEnabled{
-    "EnterpriseConnectorsEnabled", base::FEATURE_ENABLED_BY_DEFAULT};
-
-const char kServiceProviderConfig[] = R"({
-  "version": "1",
-  "service_providers" : [
-    {
-      "name": "google",
-      "display_name": "Google Cloud",
-      "version": {
-        "1": {
-          "analysis": {
-            "url": "https://safebrowsing.google.com/safebrowsing/uploads/scan",
-            "supported_tags": [
-              {
-                "name": "malware",
-                "display_name": "Threat protection",
-                "mime_types": [
-                  "application/vnd.microsoft.portable-executable",
-                  "application/vnd.rar",
-                  "application/x-msdos-program",
-                  "application/zip"
-                ],
-                "max_file_size": 52428800
-              },
-              {
-                "name": "dlp",
-                "display_name": "Sensitive data protection",
-                "mime_types": [
-                  "application/gzip",
-                  "application/msword",
-                  "application/pdf",
-                  "application/postscript",
-                  "application/rtf",
-                  "application/vnd.google-apps.document.internal",
-                  "application/vnd.google-apps.spreadsheet.internal",
-                  "application/vnd.ms-cab-compressed",
-                  "application/vnd.ms-excel",
-                  "application/vnd.ms-powerpoint",
-                  "application/vnd.ms-xpsdocument",
-                  "application/vnd.oasis.opendocument.text",
-                  "application/vnd.openxmlformats-officedocument.presentationml.presentation",
-                  "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
-                  "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
-                  "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
-                  "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
-                  "application/vnd.ms-excel.sheet.macroenabled.12",
-                  "application/vnd.ms-excel.template.macroenabled.12",
-                  "application/vnd.ms-word.document.macroenabled.12",
-                  "application/vnd.ms-word.template.macroenabled.12",
-                  "application/vnd.rar",
-                  "application/vnd.wordperfect",
-                  "application/x-7z-compressed",
-                  "application/x-bzip",
-                  "application/x-bzip2",
-                  "application/x-tar",
-                  "application/zip",
-                  "text/csv",
-                  "text/plain"
-                ],
-                "max_file_size": 52428800
-              }
-            ]
-          },
-          "reporting": {
-            "url": "https://chromereporting-pa.googleapis.com/v1/events"
-          }
-        }
-      }
-    }
-  ]
-})";
-
-ConnectorsManager::ConnectorsManager() {
-  StartObservingPrefs();
+ConnectorsManager::ConnectorsManager(PrefService* pref_service,
+                                     ServiceProviderConfig* config,
+                                     bool observe_prefs)
+    : service_provider_config_(config) {
+  if (observe_prefs)
+    StartObservingPrefs(pref_service);
 }
 
 ConnectorsManager::~ConnectorsManager() = default;
 
-// static
-ConnectorsManager* ConnectorsManager::GetInstance() {
-  static base::NoDestructor<ConnectorsManager> manager;
-  return manager.get();
-}
-
 bool ConnectorsManager::IsConnectorEnabled(AnalysisConnector connector) const {
-  if (!base::FeatureList::IsEnabled(kEnterpriseConnectorsEnabled))
-    return false;
-
   if (analysis_connector_settings_.count(connector) == 1)
     return true;
 
   const char* pref = ConnectorPref(connector);
-  return pref && g_browser_process->local_state()->HasPrefPath(pref);
+  return pref && pref_change_registrar_.prefs()->HasPrefPath(pref);
 }
 
 bool ConnectorsManager::IsConnectorEnabled(ReportingConnector connector) const {
-  if (!base::FeatureList::IsEnabled(kEnterpriseConnectorsEnabled))
-    return false;
-
   if (reporting_connector_settings_.count(connector) == 1)
     return true;
 
   const char* pref = ConnectorPref(connector);
-  return pref && g_browser_process->local_state()->HasPrefPath(pref);
+  return pref && pref_change_registrar_.prefs()->HasPrefPath(pref);
 }
 
 base::Optional<ReportingSettings> ConnectorsManager::GetReportingSettings(
@@ -189,11 +108,11 @@
   DCHECK(pref);
 
   const base::ListValue* policy_value =
-      g_browser_process->local_state()->GetList(pref);
+      pref_change_registrar_.prefs()->GetList(pref);
   if (policy_value && policy_value->is_list()) {
     for (const base::Value& service_settings : policy_value->GetList())
       analysis_connector_settings_[connector].emplace_back(
-          service_settings, service_provider_config_);
+          service_settings, *service_provider_config_);
   }
 }
 
@@ -206,11 +125,11 @@
   DCHECK(pref);
 
   const base::ListValue* policy_value =
-      g_browser_process->local_state()->GetList(pref);
+      pref_change_registrar_.prefs()->GetList(pref);
   if (policy_value && policy_value->is_list()) {
     for (const base::Value& service_settings : policy_value->GetList())
       reporting_connector_settings_[connector].emplace_back(
-          service_settings, service_provider_config_);
+          service_settings, *service_provider_config_);
   }
 }
 
@@ -229,14 +148,12 @@
   return false;
 }
 
-void ConnectorsManager::StartObservingPrefs() {
-  pref_change_registrar_.Init(g_browser_process->local_state());
-  if (base::FeatureList::IsEnabled(kEnterpriseConnectorsEnabled)) {
-    StartObservingPref(AnalysisConnector::FILE_ATTACHED);
-    StartObservingPref(AnalysisConnector::FILE_DOWNLOADED);
-    StartObservingPref(AnalysisConnector::BULK_DATA_ENTRY);
-    StartObservingPref(ReportingConnector::SECURITY_EVENT);
-  }
+void ConnectorsManager::StartObservingPrefs(PrefService* pref_service) {
+  pref_change_registrar_.Init(pref_service);
+  StartObservingPref(AnalysisConnector::FILE_ATTACHED);
+  StartObservingPref(AnalysisConnector::FILE_DOWNLOADED);
+  StartObservingPref(AnalysisConnector::BULK_DATA_ENTRY);
+  StartObservingPref(ReportingConnector::SECURITY_EVENT);
 }
 
 void ConnectorsManager::StartObservingPref(AnalysisConnector connector) {
@@ -271,18 +188,4 @@
   return reporting_connector_settings_;
 }
 
-void ConnectorsManager::SetUpForTesting() {
-  StartObservingPrefs();
-}
-
-void ConnectorsManager::TearDownForTesting() {
-  pref_change_registrar_.RemoveAll();
-  ClearCacheForTesting();
-}
-
-void ConnectorsManager::ClearCacheForTesting() {
-  analysis_connector_settings_.clear();
-  reporting_connector_settings_.clear();
-}
-
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/connectors_manager.h b/chrome/browser/enterprise/connectors/connectors_manager.h
index 7194051..6c31aa8 100644
--- a/chrome/browser/enterprise/connectors/connectors_manager.h
+++ b/chrome/browser/enterprise/connectors/connectors_manager.h
@@ -6,35 +6,20 @@
 #define CHROME_BROWSER_ENTERPRISE_CONNECTORS_CONNECTORS_MANAGER_H_
 
 #include "base/callback_forward.h"
-#include "base/feature_list.h"
 #include "base/optional.h"
 #include "chrome/browser/enterprise/connectors/analysis_service_settings.h"
 #include "chrome/browser/enterprise/connectors/common.h"
 #include "chrome/browser/enterprise/connectors/reporting_service_settings.h"
 #include "chrome/browser/enterprise/connectors/service_provider_config.h"
 #include "components/prefs/pref_change_registrar.h"
+#include "components/prefs/pref_service.h"
 #include "url/gurl.h"
 
-namespace base {
-template <typename T>
-class NoDestructor;
-}
-
 namespace enterprise_connectors {
 
-// Controls whether the Enterprise Connectors policies should be read by
-// ConnectorsManager.
-extern const base::Feature kEnterpriseConnectorsEnabled;
-
-// For the moment, service provider configurations are static and only support
-// google endpoints.  Therefore the configurtion is placed here directly.
-// Once the configuation becomes more dynamic this static string will be
-// removed and replaced with a service to keep it up to date.
-extern const char kServiceProviderConfig[];
-
-// Manages access to Connector policies. This class is responsible for caching
-// the Connector policies, validate them against approved service providers and
-// provide a simple interface to them.
+// Manages access to Connector policies for a given profile. This class is
+// responsible for caching the Connector policies, validate them against
+// approved service providers and provide a simple interface to them.
 class ConnectorsManager {
  public:
   // Maps used to cache connectors settings.
@@ -43,7 +28,10 @@
   using ReportingConnectorsSettings =
       std::map<ReportingConnector, std::vector<ReportingServiceSettings>>;
 
-  static ConnectorsManager* GetInstance();
+  ConnectorsManager(PrefService* pref_service,
+                    ServiceProviderConfig* config,
+                    bool observe_prefs = true);
+  ~ConnectorsManager();
 
   // Validates which settings should be applied to a reporting event
   // against cached policies. Cache the policy value the first time this is
@@ -70,20 +58,7 @@
   const ReportingConnectorsSettings& GetReportingConnectorsSettingsForTesting()
       const;
 
-  // Helpers to reset the ConnectorManager instance across test since it would
-  // otherwise persist its state.
-  void SetUpForTesting();
-  void TearDownForTesting();
-  void ClearCacheForTesting();
-
  private:
-  friend class base::NoDestructor<ConnectorsManager>;
-
-  // Constructor and destructor are declared as private so callers use
-  // GetInstance instead.
-  ConnectorsManager();
-  ~ConnectorsManager();
-
   // Validates which settings should be applied to an analysis connector event
   // against connector policies. Cache the policy value the first time this is
   // called for every different connector.
@@ -95,9 +70,9 @@
   void CacheAnalysisConnectorPolicy(AnalysisConnector connector);
   void CacheReportingConnectorPolicy(ReportingConnector connector);
 
-  // Sets up |pref_change_registrar_| if kEnterpriseConntorsEnabled is true.
-  // Used by the constructor and SetUpForTesting.
-  void StartObservingPrefs();
+  // Sets up |pref_change_registrar_|. Used by the constructor and
+  // SetUpForTesting.
+  void StartObservingPrefs(PrefService* pref_service);
   void StartObservingPref(AnalysisConnector connector);
   void StartObservingPref(ReportingConnector connector);
 
@@ -109,8 +84,7 @@
 
   // Cached values of available service providers. This information validates
   // the Connector policies have a valid provider.
-  ServiceProviderConfig service_provider_config_ =
-      ServiceProviderConfig(kServiceProviderConfig);
+  ServiceProviderConfig* service_provider_config_;
 
   // Cached values of the connector policies. Updated when a connector is first
   // used or when a policy is updated.
diff --git a/chrome/browser/enterprise/connectors/connectors_manager_unittest.cc b/chrome/browser/enterprise/connectors/connectors_manager_unittest.cc
index bdea860..c19b591 100644
--- a/chrome/browser/enterprise/connectors/connectors_manager_unittest.cc
+++ b/chrome/browser/enterprise/connectors/connectors_manager_unittest.cc
@@ -13,13 +13,12 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/enterprise/connectors/common.h"
 #include "chrome/browser/enterprise/connectors/connectors_prefs.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/test/base/testing_browser_process.h"
 #include "chrome/test/base/testing_profile.h"
 #include "chrome/test/base/testing_profile_manager.h"
 #include "components/prefs/pref_service.h"
 #include "components/prefs/scoped_user_pref_update.h"
-#include "components/safe_browsing/core/common/safe_browsing_prefs.h"
-#include "components/safe_browsing/core/features.h"
 #include "content/public/test/browser_task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -75,11 +74,7 @@
     profile_ = profile_manager_.CreateTestingProfile("test-user");
   }
 
-  void SetUp() override { ConnectorsManager::GetInstance()->SetUpForTesting(); }
-
-  void TearDown() override {
-    ConnectorsManager::GetInstance()->TearDownForTesting();
-  }
+  PrefService* pref_service() { return profile_->GetPrefs(); }
 
   void ValidateSettings(const AnalysisSettings& settings) {
     ASSERT_EQ(settings.block_until_verdict, expected_block_until_verdict_);
@@ -101,20 +96,20 @@
 
   class ScopedConnectorPref {
    public:
-    ScopedConnectorPref(const char* pref, const char* pref_value)
-        : pref_(pref) {
+    ScopedConnectorPref(PrefService* pref_service,
+                        const char* pref,
+                        const char* pref_value)
+        : pref_service_(pref_service), pref_(pref) {
       auto maybe_pref_value =
           base::JSONReader::Read(pref_value, base::JSON_ALLOW_TRAILING_COMMAS);
       EXPECT_TRUE(maybe_pref_value.has_value());
-      TestingBrowserProcess::GetGlobal()->local_state()->Set(
-          pref, maybe_pref_value.value());
+      pref_service_->Set(pref, maybe_pref_value.value());
     }
 
-    ~ScopedConnectorPref() {
-      TestingBrowserProcess::GetGlobal()->local_state()->ClearPref(pref_);
-    }
+    ~ScopedConnectorPref() { pref_service_->ClearPref(pref_); }
 
    private:
+    PrefService* pref_service_;
     const char* pref_;
   };
 
@@ -138,9 +133,7 @@
       public testing::WithParamInterface<
           std::tuple<AnalysisConnector, const char*>> {
  public:
-  ConnectorsManagerConnectorPoliciesTest() {
-    scoped_feature_list_.InitWithFeatures({kEnterpriseConnectorsEnabled}, {});
-  }
+  ConnectorsManagerConnectorPoliciesTest() = default;
 
   AnalysisConnector connector() const { return std::get<0>(GetParam()); }
 
@@ -204,23 +197,22 @@
 };
 
 TEST_P(ConnectorsManagerConnectorPoliciesTest, NormalPref) {
-  ASSERT_TRUE(ConnectorsManager::GetInstance()
-                  ->GetAnalysisConnectorsSettingsForTesting()
-                  .empty());
-  ScopedConnectorPref scoped_pref(pref(), kNormalAnalysisSettingsPref);
+  ConnectorsManager manager(pref_service(), GetServiceProviderConfig());
+  ASSERT_TRUE(manager.GetAnalysisConnectorsSettingsForTesting().empty());
+  ScopedConnectorPref scoped_pref(pref_service(), pref(),
+                                  kNormalAnalysisSettingsPref);
   SetUpExpectedAnalysisSettings(kNormalAnalysisSettingsPref);
 
   // Verify that the expected settings are returned normally.
   auto settings_from_manager =
-      ConnectorsManager::GetInstance()->GetAnalysisSettings(GURL(url()),
-                                                            connector());
+      manager.GetAnalysisSettings(GURL(url()), connector());
   ASSERT_EQ(expect_settings_, settings_from_manager.has_value());
   if (settings_from_manager.has_value())
     ValidateSettings(settings_from_manager.value());
 
   // Verify that the expected settings are also returned by the cached settings.
-  const auto& cached_settings = ConnectorsManager::GetInstance()
-                                    ->GetAnalysisConnectorsSettingsForTesting();
+  const auto& cached_settings =
+      manager.GetAnalysisConnectorsSettingsForTesting();
   ASSERT_EQ(1u, cached_settings.size());
   ASSERT_EQ(1u, cached_settings.count(connector()));
   ASSERT_EQ(1u, cached_settings.at(connector()).size());
@@ -233,20 +225,16 @@
 }
 
 TEST_P(ConnectorsManagerConnectorPoliciesTest, EmptyPref) {
+  ConnectorsManager manager(pref_service(), GetServiceProviderConfig());
   // If the connector's settings list is empty, no analysis settings are ever
   // returned.
-  ASSERT_TRUE(ConnectorsManager::GetInstance()
-                  ->GetAnalysisConnectorsSettingsForTesting()
-                  .empty());
-  ScopedConnectorPref scoped_pref(pref(), kEmptySettingsPref);
+  ASSERT_TRUE(manager.GetAnalysisConnectorsSettingsForTesting().empty());
+  ScopedConnectorPref scoped_pref(pref_service(), pref(), kEmptySettingsPref);
 
-  ASSERT_FALSE(ConnectorsManager::GetInstance()
-                   ->GetAnalysisSettings(GURL(url()), connector())
-                   .has_value());
+  ASSERT_FALSE(
+      manager.GetAnalysisSettings(GURL(url()), connector()).has_value());
 
-  ASSERT_TRUE(ConnectorsManager::GetInstance()
-                  ->GetAnalysisConnectorsSettingsForTesting()
-                  .empty());
+  ASSERT_TRUE(manager.GetAnalysisConnectorsSettingsForTesting().empty());
 }
 
 INSTANTIATE_TEST_CASE_P(
@@ -276,17 +264,18 @@
 };
 
 TEST_P(ConnectorsManagerAnalysisConnectorsTest, DynamicPolicies) {
+  ConnectorsManager manager(pref_service(), GetServiceProviderConfig());
   // The cache is initially empty.
-  auto* manager = ConnectorsManager::GetInstance();
-  ASSERT_TRUE(manager->GetAnalysisConnectorsSettingsForTesting().empty());
+  ASSERT_TRUE(manager.GetAnalysisConnectorsSettingsForTesting().empty());
 
   // Once the pref is updated, the settings should be cached, and analysis
   // settings can be obtained.
   {
-    ScopedConnectorPref scoped_pref(pref(), kNormalAnalysisSettingsPref);
+    ScopedConnectorPref scoped_pref(pref_service(), pref(),
+                                    kNormalAnalysisSettingsPref);
 
     const auto& cached_settings =
-        manager->GetAnalysisConnectorsSettingsForTesting();
+        manager.GetAnalysisConnectorsSettingsForTesting();
     ASSERT_FALSE(cached_settings.empty());
     ASSERT_EQ(1u, cached_settings.count(connector()));
     ASSERT_EQ(1u, cached_settings.at(connector()).size());
@@ -304,42 +293,13 @@
   }
 
   // The cache should be empty again after the pref is reset.
-  ASSERT_TRUE(manager->GetAnalysisConnectorsSettingsForTesting().empty());
+  ASSERT_TRUE(manager.GetAnalysisConnectorsSettingsForTesting().empty());
 }
 
 INSTANTIATE_TEST_CASE_P(ConnectorsManagerAnalysisConnectorsTest,
                         ConnectorsManagerAnalysisConnectorsTest,
                         testing::ValuesIn(kAllAnalysisConnectors));
 
-class ConnectorsManagerAnalysisNoFeatureTest
-    : public ConnectorsManagerAnalysisConnectorsTest {
- public:
-  ConnectorsManagerAnalysisNoFeatureTest()
-      : ConnectorsManagerAnalysisConnectorsTest(false) {}
-};
-
-TEST_P(ConnectorsManagerAnalysisNoFeatureTest, Test) {
-  ScopedConnectorPref scoped_pref(pref(), kNormalAnalysisSettingsPref);
-
-  for (const char* url :
-       {kDlpAndMalwareUrl, kOnlyDlpUrl, kOnlyMalwareUrl, kNoTagsUrl}) {
-    // Only base::nullopt should be returned when the feature is disabled,
-    // regardless of what Connector or URL is used.
-    auto settings = ConnectorsManager::GetInstance()->GetAnalysisSettings(
-        GURL(url), connector());
-    ASSERT_FALSE(settings.has_value());
-  }
-
-  // No cached settings imply the connector value was never read.
-  ASSERT_TRUE(ConnectorsManager::GetInstance()
-                  ->GetAnalysisConnectorsSettingsForTesting()
-                  .empty());
-}
-
-INSTANTIATE_TEST_CASE_P(,
-                        ConnectorsManagerAnalysisNoFeatureTest,
-                        testing::ValuesIn(kAllAnalysisConnectors));
-
 class ConnectorsManagerReportingDynamicTest
     : public ConnectorsManagerTest,
       public testing::WithParamInterface<ReportingConnector> {
@@ -354,17 +314,18 @@
 };
 
 TEST_P(ConnectorsManagerReportingDynamicTest, DynamicPolicies) {
+  ConnectorsManager manager(pref_service(), GetServiceProviderConfig());
   // The cache is initially empty.
-  auto* manager = ConnectorsManager::GetInstance();
-  ASSERT_TRUE(manager->GetReportingConnectorsSettingsForTesting().empty());
+  ASSERT_TRUE(manager.GetReportingConnectorsSettingsForTesting().empty());
 
   // Once the pref is updated, the settings should be cached, and reporting
   // settings can be obtained.
   {
-    ScopedConnectorPref scoped_pref(pref(), kNormalReportingSettingsPref);
+    ScopedConnectorPref scoped_pref(pref_service(), pref(),
+                                    kNormalReportingSettingsPref);
 
     const auto& cached_settings =
-        manager->GetReportingConnectorsSettingsForTesting();
+        manager.GetReportingConnectorsSettingsForTesting();
     ASSERT_FALSE(cached_settings.empty());
     ASSERT_EQ(1u, cached_settings.count(connector()));
     ASSERT_EQ(1u, cached_settings.at(connector()).size());
@@ -376,77 +337,11 @@
   }
 
   // The cache should be empty again after the pref is reset.
-  ASSERT_TRUE(manager->GetAnalysisConnectorsSettingsForTesting().empty());
+  ASSERT_TRUE(manager.GetAnalysisConnectorsSettingsForTesting().empty());
 }
 
 INSTANTIATE_TEST_CASE_P(ConnectorsManagerReportingDynamicTest,
                         ConnectorsManagerReportingDynamicTest,
                         testing::ValuesIn(kAllReportingConnectors));
 
-// Tests to make sure getting reporting settings work with both the feature flag
-// and the OnSecurityEventEnterpriseConnector policy. The parameter for these
-// tests is a tuple of:
-//
-//   enum class ReportingConnector[]: array of all reporting connectors.
-//   bool: enable feature flag.
-//   int: policy value.  0: don't set, 1: set to normal, 2: set to empty.
-class ConnectorsManagerReportingFeatureTest
-    : public ConnectorsManagerTest,
-      public testing::WithParamInterface<
-          std::tuple<ReportingConnector, bool, int>> {
- public:
-  ConnectorsManagerReportingFeatureTest() {
-    if (enable_feature_flag()) {
-      scoped_feature_list_.InitWithFeatures({kEnterpriseConnectorsEnabled}, {});
-    } else {
-      scoped_feature_list_.InitWithFeatures({}, {kEnterpriseConnectorsEnabled});
-    }
-  }
-
-  ReportingConnector connector() const { return std::get<0>(GetParam()); }
-  bool enable_feature_flag() const { return std::get<1>(GetParam()); }
-  int policy_value() const { return std::get<2>(GetParam()); }
-
-  const char* pref() const { return ConnectorPref(connector()); }
-
-  const char* pref_value() const {
-    switch (policy_value()) {
-      case 1:
-        return kNormalReportingSettingsPref;
-      case 2:
-        return kEmptySettingsPref;
-    }
-    NOTREACHED();
-    return nullptr;
-  }
-
-  bool reporting_enabled() const {
-    return enable_feature_flag() && policy_value() == 1;
-  }
-};
-
-TEST_P(ConnectorsManagerReportingFeatureTest, Test) {
-  std::unique_ptr<ScopedConnectorPref> scoped_pref;
-  if (policy_value() != 0)
-    scoped_pref = std::make_unique<ScopedConnectorPref>(pref(), pref_value());
-
-  auto settings =
-      ConnectorsManager::GetInstance()->GetReportingSettings(connector());
-  EXPECT_EQ(reporting_enabled(), settings.has_value());
-  if (settings.has_value())
-    ValidateSettings(settings.value());
-
-  EXPECT_EQ(enable_feature_flag() && policy_value() == 1,
-            !ConnectorsManager::GetInstance()
-                 ->GetReportingConnectorsSettingsForTesting()
-                 .empty());
-}
-
-INSTANTIATE_TEST_CASE_P(
-    ,
-    ConnectorsManagerReportingFeatureTest,
-    testing::Combine(testing::ValuesIn(kAllReportingConnectors),
-                     testing::Bool(),
-                     testing::ValuesIn({0, 1, 2})));
-
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/connectors_prefs.cc b/chrome/browser/enterprise/connectors/connectors_prefs.cc
index aee3a2b..884728d 100644
--- a/chrome/browser/enterprise/connectors/connectors_prefs.cc
+++ b/chrome/browser/enterprise/connectors/connectors_prefs.cc
@@ -16,7 +16,7 @@
 
 const char kOnSecurityEventPref[] = "enterprise_connectors.on_security_event";
 
-void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
+void RegisterProfilePrefs(PrefRegistrySimple* registry) {
   registry->RegisterListPref(kOnFileAttachedPref);
   registry->RegisterListPref(kOnFileDownloadedPref);
   registry->RegisterListPref(kOnBulkDataEntryPref);
diff --git a/chrome/browser/enterprise/connectors/connectors_prefs.h b/chrome/browser/enterprise/connectors/connectors_prefs.h
index 7bb6b96..ebdb2e95 100644
--- a/chrome/browser/enterprise/connectors/connectors_prefs.h
+++ b/chrome/browser/enterprise/connectors/connectors_prefs.h
@@ -21,7 +21,7 @@
 // Pref that maps to the "OnSecurityEventEnterpriseConnector" policy.
 extern const char kOnSecurityEventPref[];
 
-void RegisterLocalStatePrefs(PrefRegistrySimple* registry);
+void RegisterProfilePrefs(PrefRegistrySimple* registry);
 
 }  // namespace enterprise_connectors
 
diff --git a/chrome/browser/enterprise/connectors/connectors_service.cc b/chrome/browser/enterprise/connectors/connectors_service.cc
new file mode 100644
index 0000000..fcbb2be
--- /dev/null
+++ b/chrome/browser/enterprise/connectors/connectors_service.cc
@@ -0,0 +1,184 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
+#include <memory>
+
+#include "base/memory/singleton.h"
+#include "base/no_destructor.h"
+#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/service_provider_config.h"
+#include "components/keyed_service/content/browser_context_dependency_manager.h"
+#include "components/user_prefs/user_prefs.h"
+#include "content/public/browser/browser_context.h"
+
+namespace enterprise_connectors {
+
+const base::Feature kEnterpriseConnectorsEnabled{
+    "EnterpriseConnectorsEnabled", base::FEATURE_ENABLED_BY_DEFAULT};
+
+const char kServiceProviderConfig[] = R"({
+  "version": "1",
+  "service_providers" : [
+    {
+      "name": "google",
+      "display_name": "Google Cloud",
+      "version": {
+        "1": {
+          "analysis": {
+            "url": "https://safebrowsing.google.com/safebrowsing/uploads/scan",
+            "supported_tags": [
+              {
+                "name": "malware",
+                "display_name": "Threat protection",
+                "mime_types": [
+                  "application/vnd.microsoft.portable-executable",
+                  "application/vnd.rar",
+                  "application/x-msdos-program",
+                  "application/zip"
+                ],
+                "max_file_size": 52428800
+              },
+              {
+                "name": "dlp",
+                "display_name": "Sensitive data protection",
+                "mime_types": [
+                  "application/gzip",
+                  "application/msword",
+                  "application/pdf",
+                  "application/postscript",
+                  "application/rtf",
+                  "application/vnd.google-apps.document.internal",
+                  "application/vnd.google-apps.spreadsheet.internal",
+                  "application/vnd.ms-cab-compressed",
+                  "application/vnd.ms-excel",
+                  "application/vnd.ms-powerpoint",
+                  "application/vnd.ms-xpsdocument",
+                  "application/vnd.oasis.opendocument.text",
+                  "application/vnd.openxmlformats-officedocument.presentationml.presentation",
+                  "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+                  "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
+                  "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+                  "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
+                  "application/vnd.ms-excel.sheet.macroenabled.12",
+                  "application/vnd.ms-excel.template.macroenabled.12",
+                  "application/vnd.ms-word.document.macroenabled.12",
+                  "application/vnd.ms-word.template.macroenabled.12",
+                  "application/vnd.rar",
+                  "application/vnd.wordperfect",
+                  "application/x-7z-compressed",
+                  "application/x-bzip",
+                  "application/x-bzip2",
+                  "application/x-tar",
+                  "application/zip",
+                  "text/csv",
+                  "text/plain"
+                ],
+                "max_file_size": 52428800
+              }
+            ]
+          },
+          "reporting": {
+            "url": "https://chromereporting-pa.googleapis.com/v1/events"
+          }
+        }
+      }
+    }
+  ]
+})";
+
+ServiceProviderConfig* GetServiceProviderConfig() {
+  static base::NoDestructor<ServiceProviderConfig> config(
+      kServiceProviderConfig);
+  return config.get();
+}
+
+// --------------------------------
+// ConnectorsService implementation
+// --------------------------------
+
+ConnectorsService::ConnectorsService(std::unique_ptr<ConnectorsManager> manager)
+    : connectors_manager_(std::move(manager)) {
+  DCHECK(connectors_manager_);
+}
+
+ConnectorsService::~ConnectorsService() = default;
+
+base::Optional<ReportingSettings> ConnectorsService::GetReportingSettings(
+    ReportingConnector connector) {
+  if (!base::FeatureList::IsEnabled(kEnterpriseConnectorsEnabled))
+    return base::nullopt;
+
+  return connectors_manager_->GetReportingSettings(connector);
+}
+
+base::Optional<AnalysisSettings> ConnectorsService::GetAnalysisSettings(
+    const GURL& url,
+    AnalysisConnector connector) {
+  if (!base::FeatureList::IsEnabled(kEnterpriseConnectorsEnabled))
+    return base::nullopt;
+
+  return connectors_manager_->GetAnalysisSettings(url, connector);
+}
+
+bool ConnectorsService::IsConnectorEnabled(AnalysisConnector connector) const {
+  if (!base::FeatureList::IsEnabled(kEnterpriseConnectorsEnabled))
+    return false;
+
+  return connectors_manager_->IsConnectorEnabled(connector);
+}
+
+bool ConnectorsService::IsConnectorEnabled(ReportingConnector connector) const {
+  if (!base::FeatureList::IsEnabled(kEnterpriseConnectorsEnabled))
+    return false;
+
+  return connectors_manager_->IsConnectorEnabled(connector);
+}
+
+bool ConnectorsService::DelayUntilVerdict(AnalysisConnector connector) {
+  if (!base::FeatureList::IsEnabled(kEnterpriseConnectorsEnabled))
+    return false;
+
+  return connectors_manager_->DelayUntilVerdict(connector);
+}
+
+ConnectorsManager* ConnectorsService::ConnectorsManagerForTesting() {
+  return connectors_manager_.get();
+}
+
+// ---------------------------------------
+// ConnectorsServiceFactory implementation
+// ---------------------------------------
+
+// static
+ConnectorsServiceFactory* ConnectorsServiceFactory::GetInstance() {
+  return base::Singleton<ConnectorsServiceFactory>::get();
+}
+
+ConnectorsService* ConnectorsServiceFactory::GetForBrowserContext(
+    content::BrowserContext* context) {
+  return static_cast<ConnectorsService*>(
+      GetInstance()->GetServiceForBrowserContext(context, true));
+}
+
+ConnectorsServiceFactory::ConnectorsServiceFactory()
+    : BrowserContextKeyedServiceFactory(
+          "ConnectorsService",
+          BrowserContextDependencyManager::GetInstance()) {}
+
+ConnectorsServiceFactory::~ConnectorsServiceFactory() = default;
+
+KeyedService* ConnectorsServiceFactory::BuildServiceInstanceFor(
+    content::BrowserContext* context) const {
+  return new ConnectorsService(std::make_unique<ConnectorsManager>(
+      user_prefs::UserPrefs::Get(context), GetServiceProviderConfig(),
+      base::FeatureList::IsEnabled(kEnterpriseConnectorsEnabled)));
+}
+
+content::BrowserContext* ConnectorsServiceFactory::GetBrowserContextToUse(
+    content::BrowserContext* context) const {
+  return context;
+}
+
+}  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/connectors_service.h b/chrome/browser/enterprise/connectors/connectors_service.h
new file mode 100644
index 0000000..15a9bd3
--- /dev/null
+++ b/chrome/browser/enterprise/connectors/connectors_service.h
@@ -0,0 +1,82 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_ENTERPRISE_CONNECTORS_CONNECTORS_SERVICE_H_
+#define CHROME_BROWSER_ENTERPRISE_CONNECTORS_CONNECTORS_SERVICE_H_
+
+#include <memory>
+
+#include "base/feature_list.h"
+#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "content/public/browser/browser_context.h"
+
+namespace base {
+template <typename T>
+struct DefaultSingletonTraits;
+}
+
+namespace enterprise_connectors {
+
+// Controls whether the Enterprise Connectors policies should be read by
+// ConnectorsManager.
+extern const base::Feature kEnterpriseConnectorsEnabled;
+
+// For the moment, service provider configurations are static and only support
+// google endpoints.  Therefore the configuration is placed here directly.
+// Once the configuration becomes more dynamic this static string will be
+// removed and replaced with a service to keep it up to date.
+extern const char kServiceProviderConfig[];
+
+// Accessor for the ServiceProviderConfig.
+ServiceProviderConfig* GetServiceProviderConfig();
+
+// A keyed service to access ConnectorsManager, which tracks Connector policies.
+class ConnectorsService : public KeyedService {
+ public:
+  explicit ConnectorsService(std::unique_ptr<ConnectorsManager> manager);
+  ~ConnectorsService() override;
+
+  // Accessors that check kEnterpriseConnectorsEnabled is enabled, and then call
+  // the corresponding method in ConnectorsManager.
+  base::Optional<ReportingSettings> GetReportingSettings(
+      ReportingConnector connector);
+  base::Optional<AnalysisSettings> GetAnalysisSettings(
+      const GURL& url,
+      AnalysisConnector connector);
+
+  bool IsConnectorEnabled(AnalysisConnector connector) const;
+  bool IsConnectorEnabled(ReportingConnector connector) const;
+
+  bool DelayUntilVerdict(AnalysisConnector connector);
+
+  // Testing functions.
+  ConnectorsManager* ConnectorsManagerForTesting();
+
+ private:
+  std::unique_ptr<ConnectorsManager> connectors_manager_;
+};
+
+class ConnectorsServiceFactory : public BrowserContextKeyedServiceFactory {
+ public:
+  static ConnectorsServiceFactory* GetInstance();
+  static ConnectorsService* GetForBrowserContext(
+      content::BrowserContext* context);
+
+ private:
+  ConnectorsServiceFactory();
+  ~ConnectorsServiceFactory() override;
+  friend struct base::DefaultSingletonTraits<ConnectorsServiceFactory>;
+
+  // BrowserContextKeyedServiceFactory:
+  KeyedService* BuildServiceInstanceFor(
+      content::BrowserContext* context) const override;
+  content::BrowserContext* GetBrowserContextToUse(
+      content::BrowserContext* context) const override;
+};
+
+}  // namespace enterprise_connectors
+
+#endif  // CHROME_BROWSER_ENTERPRISE_CONNECTORS_CONNECTORS_SERVICE_H_
diff --git a/chrome/browser/enterprise/connectors/connectors_service_unittest.cc b/chrome/browser/enterprise/connectors/connectors_service_unittest.cc
new file mode 100644
index 0000000..4f589b2f
--- /dev/null
+++ b/chrome/browser/enterprise/connectors/connectors_service_unittest.cc
@@ -0,0 +1,178 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
+
+#include "base/json/json_reader.h"
+#include "base/test/scoped_feature_list.h"
+#include "chrome/browser/enterprise/connectors/common.h"
+#include "chrome/test/base/testing_browser_process.h"
+#include "chrome/test/base/testing_profile_manager.h"
+#include "components/enterprise/common/proto/connectors.pb.h"
+#include "content/public/test/browser_task_environment.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+
+namespace enterprise_connectors {
+
+namespace {
+
+constexpr char kEmptySettingsPref[] = "[]";
+
+constexpr char kNormalAnalysisSettingsPref[] = R"([
+  {
+    "service_provider": "google",
+    "enable": [
+      {"url_list": ["*"], "tags": ["dlp", "malware"]}
+    ],
+    "disable": [
+      {"url_list": ["no.dlp.com", "no.dlp.or.malware.ca"], "tags": ["dlp"]},
+      {"url_list": ["no.malware.com", "no.dlp.or.malware.ca"],
+           "tags": ["malware"]}
+    ],
+    "block_until_verdict": 1,
+    "block_password_protected": true,
+    "block_large_files": true,
+    "block_unsupported_file_types": true
+  }
+])";
+
+constexpr char kNormalReportingSettingsPref[] = R"([
+  {
+    "service_provider": "google"
+  }
+])";
+
+constexpr char kDlpAndMalwareUrl[] = "https://foo.com";
+constexpr char kOnlyDlpUrl[] = "https://no.malware.com";
+constexpr char kOnlyMalwareUrl[] = "https://no.dlp.com";
+constexpr char kNoTagsUrl[] = "https://no.dlp.or.malware.ca";
+
+}  // namespace
+class ConnectorsServiceTest : public testing::Test {
+ public:
+  ConnectorsServiceTest()
+      : profile_manager_(TestingBrowserProcess::GetGlobal()) {
+    EXPECT_TRUE(profile_manager_.SetUp());
+    profile_ = profile_manager_.CreateTestingProfile("test-user");
+  }
+
+ protected:
+  content::BrowserTaskEnvironment task_environment_;
+  base::test::ScopedFeatureList scoped_feature_list_;
+  TestingProfileManager profile_manager_;
+  TestingProfile* profile_;
+};
+
+class ConnectorsServiceAnalysisNoFeatureTest
+    : public ConnectorsServiceTest,
+      public testing::WithParamInterface<AnalysisConnector> {
+ public:
+  ConnectorsServiceAnalysisNoFeatureTest() {
+    scoped_feature_list_.InitWithFeatures({}, {kEnterpriseConnectorsEnabled});
+  }
+
+  AnalysisConnector connector() { return GetParam(); }
+};
+
+TEST_P(ConnectorsServiceAnalysisNoFeatureTest, AnalysisConnectors) {
+  profile_->GetPrefs()->Set(
+      ConnectorPref(connector()),
+      *base::JSONReader::Read(kNormalAnalysisSettingsPref));
+  auto* service = ConnectorsServiceFactory::GetForBrowserContext(profile_);
+  for (const char* url :
+       {kDlpAndMalwareUrl, kOnlyDlpUrl, kOnlyMalwareUrl, kNoTagsUrl}) {
+    // Only base::nullopt should be returned when the feature is disabled,
+    // regardless of what Connector or URL is used.
+    auto settings = service->GetAnalysisSettings(GURL(url), connector());
+    ASSERT_FALSE(settings.has_value());
+  }
+
+  // No cached settings imply the connector value was never read.
+  ASSERT_TRUE(service->ConnectorsManagerForTesting()
+                  ->GetAnalysisConnectorsSettingsForTesting()
+                  .empty());
+}
+
+INSTANTIATE_TEST_CASE_P(,
+                        ConnectorsServiceAnalysisNoFeatureTest,
+                        testing::Values(FILE_ATTACHED,
+                                        FILE_DOWNLOADED,
+                                        BULK_DATA_ENTRY));
+
+// Tests to make sure getting reporting settings work with both the feature flag
+// and the OnSecurityEventEnterpriseConnector policy. The parameter for these
+// tests is a tuple of:
+//
+//   enum class ReportingConnector[]: array of all reporting connectors.
+//   bool: enable feature flag.
+//   int: policy value.  0: don't set, 1: set to normal, 2: set to empty.
+class ConnectorsServiceReportingFeatureTest
+    : public ConnectorsServiceTest,
+      public testing::WithParamInterface<
+          std::tuple<ReportingConnector, bool, int>> {
+ public:
+  ConnectorsServiceReportingFeatureTest() {
+    if (enable_feature_flag()) {
+      scoped_feature_list_.InitWithFeatures({kEnterpriseConnectorsEnabled}, {});
+    } else {
+      scoped_feature_list_.InitWithFeatures({}, {kEnterpriseConnectorsEnabled});
+    }
+  }
+
+  ReportingConnector connector() const { return std::get<0>(GetParam()); }
+  bool enable_feature_flag() const { return std::get<1>(GetParam()); }
+  int policy_value() const { return std::get<2>(GetParam()); }
+
+  const char* pref() const { return ConnectorPref(connector()); }
+
+  const char* pref_value() const {
+    switch (policy_value()) {
+      case 1:
+        return kNormalReportingSettingsPref;
+      case 2:
+        return kEmptySettingsPref;
+    }
+    NOTREACHED();
+    return nullptr;
+  }
+
+  bool reporting_enabled() const {
+    return enable_feature_flag() && policy_value() == 1;
+  }
+
+  void ValidateSettings(const ReportingSettings& settings) {
+    // For now, the URL is the same for both legacy and new policies, so
+    // checking the specific URL here.  When service providers become
+    // configurable this will change.
+    ASSERT_EQ(GURL("https://chromereporting-pa.googleapis.com/v1/events"),
+              settings.reporting_url);
+  }
+};
+
+TEST_P(ConnectorsServiceReportingFeatureTest, Test) {
+  if (policy_value() != 0)
+    profile_->GetPrefs()->Set(pref(), *base::JSONReader::Read(pref_value()));
+
+  auto settings = ConnectorsServiceFactory::GetForBrowserContext(profile_)
+                      ->GetReportingSettings(connector());
+  EXPECT_EQ(reporting_enabled(), settings.has_value());
+  if (settings.has_value())
+    ValidateSettings(settings.value());
+
+  EXPECT_EQ(enable_feature_flag() && policy_value() == 1,
+            !ConnectorsServiceFactory::GetForBrowserContext(profile_)
+                 ->ConnectorsManagerForTesting()
+                 ->GetReportingConnectorsSettingsForTesting()
+                 .empty());
+}
+
+INSTANTIATE_TEST_CASE_P(
+    ,
+    ConnectorsServiceReportingFeatureTest,
+    testing::Combine(testing::Values(ReportingConnector::SECURITY_EVENT),
+                     testing::Bool(),
+                     testing::ValuesIn({0, 1, 2})));
+
+}  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/content_analysis_delegate.cc b/chrome/browser/enterprise/connectors/content_analysis_delegate.cc
index 5548224..af4695b6 100644
--- a/chrome/browser/enterprise/connectors/content_analysis_delegate.cc
+++ b/chrome/browser/enterprise/connectors/content_analysis_delegate.cc
@@ -27,7 +27,7 @@
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/enterprise/connectors/common.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/enterprise/connectors/content_analysis_dialog.h"
 #include "chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router.h"
 #include "chrome/browser/file_util_service.h"
@@ -272,15 +272,16 @@
   if (!policy::GetDMToken(profile).is_valid())
     return false;
 
+  auto* service =
+      enterprise_connectors::ConnectorsServiceFactory::GetForBrowserContext(
+          profile);
   // If the corresponding Connector policy isn't set, don't perform scans.
-  if (!enterprise_connectors::ConnectorsManager::GetInstance()
-           ->IsConnectorEnabled(connector))
+  if (!service || !service->IsConnectorEnabled(connector))
     return false;
 
   // Check that |url| matches the appropriate URL patterns by getting settings.
   // No settings means no matches were found.
-  auto settings = enterprise_connectors::ConnectorsManager::GetInstance()
-                      ->GetAnalysisSettings(url, connector);
+  auto settings = service->GetAnalysisSettings(url, connector);
   if (!settings.has_value()) {
     return false;
   }
diff --git a/chrome/browser/enterprise/connectors/content_analysis_delegate_browsertest.cc b/chrome/browser/enterprise/connectors/content_analysis_delegate_browsertest.cc
index 3c3c562..9e98020 100644
--- a/chrome/browser/enterprise/connectors/content_analysis_delegate_browsertest.cc
+++ b/chrome/browser/enterprise/connectors/content_analysis_delegate_browsertest.cc
@@ -57,20 +57,18 @@
   // simulate an async callback.
   void ReturnAuthorizedResponse() {
     FinishRequest(authorization_request_.get(), authorization_result_,
-                  enterprise_connectors::ContentAnalysisResponse());
+                  ContentAnalysisResponse());
   }
 
-  void SetResponseForText(
-      BinaryUploadService::Result result,
-      const enterprise_connectors::ContentAnalysisResponse& response) {
+  void SetResponseForText(BinaryUploadService::Result result,
+                          const ContentAnalysisResponse& response) {
     prepared_text_result_ = result;
     prepared_text_response_ = response;
   }
 
-  void SetResponseForFile(
-      const std::string& path,
-      BinaryUploadService::Result result,
-      const enterprise_connectors::ContentAnalysisResponse& response) {
+  void SetResponseForFile(const std::string& path,
+                          BinaryUploadService::Result result,
+                          const ContentAnalysisResponse& response) {
     prepared_file_results_[path] = result;
     prepared_file_responses_[path] = response;
   }
@@ -108,11 +106,10 @@
   std::unique_ptr<Request> authorization_request_;
 
   BinaryUploadService::Result prepared_text_result_;
-  enterprise_connectors::ContentAnalysisResponse prepared_text_response_;
+  ContentAnalysisResponse prepared_text_response_;
 
   std::map<std::string, BinaryUploadService::Result> prepared_file_results_;
-  std::map<std::string, enterprise_connectors::ContentAnalysisResponse>
-      prepared_file_responses_;
+  std::map<std::string, ContentAnalysisResponse> prepared_file_responses_;
 
   int requests_count_ = 0;
   bool should_automatically_authorize_ = false;
@@ -156,25 +153,21 @@
 
 // A fake delegate with minimal overrides to obtain behavior that's as close to
 // the real one as possible.
-class MinimalFakeContentAnalysisDelegate
-    : public enterprise_connectors::ContentAnalysisDelegate {
+class MinimalFakeContentAnalysisDelegate : public ContentAnalysisDelegate {
  public:
   MinimalFakeContentAnalysisDelegate(
       content::WebContents* web_contents,
-      enterprise_connectors::ContentAnalysisDelegate::Data data,
-      enterprise_connectors::ContentAnalysisDelegate::CompletionCallback
-          callback)
-      : enterprise_connectors::ContentAnalysisDelegate(
-            web_contents,
-            std::move(data),
-            std::move(callback),
-            safe_browsing::DeepScanAccessPoint::UPLOAD) {}
+      ContentAnalysisDelegate::Data data,
+      ContentAnalysisDelegate::CompletionCallback callback)
+      : ContentAnalysisDelegate(web_contents,
+                                std::move(data),
+                                std::move(callback),
+                                safe_browsing::DeepScanAccessPoint::UPLOAD) {}
 
-  static std::unique_ptr<enterprise_connectors::ContentAnalysisDelegate> Create(
+  static std::unique_ptr<ContentAnalysisDelegate> Create(
       content::WebContents* web_contents,
-      enterprise_connectors::ContentAnalysisDelegate::Data data,
-      enterprise_connectors::ContentAnalysisDelegate::CompletionCallback
-          callback) {
+      ContentAnalysisDelegate::Data data,
+      ContentAnalysisDelegate::CompletionCallback callback) {
     return std::make_unique<MinimalFakeContentAnalysisDelegate>(
         web_contents, std::move(data), std::move(callback));
   }
@@ -214,11 +207,14 @@
           ],
           "block_until_verdict": 1
         })";
-    safe_browsing::SetAnalysisConnector(enterprise_connectors::FILE_ATTACHED,
+    safe_browsing::SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                                        FILE_ATTACHED,
                                         kBlockingScansForDlpAndMalware);
-    safe_browsing::SetAnalysisConnector(enterprise_connectors::BULK_DATA_ENTRY,
+    safe_browsing::SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                                        BULK_DATA_ENTRY,
                                         kBlockingScansForDlpAndMalware);
-    safe_browsing::SetOnSecurityEventReporting(true);
+    safe_browsing::SetOnSecurityEventReporting(browser()->profile()->GetPrefs(),
+                                               true);
 
     client_ = std::make_unique<policy::MockCloudPolicyClient>();
     extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(
@@ -252,7 +248,7 @@
 IN_PROC_BROWSER_TEST_F(ContentAnalysisDelegateBrowserTest, Unauthorized) {
   EnableUploadsScanningAndReporting();
 
-  enterprise_connectors::ContentAnalysisDelegate::SetFactoryForTesting(
+  ContentAnalysisDelegate::SetFactoryForTesting(
       base::BindRepeating(&MinimalFakeContentAnalysisDelegate::Create));
 
   FakeBinaryUploadServiceStorage()->SetAuthorized(false);
@@ -261,24 +257,22 @@
   base::RunLoop run_loop;
   base::RepeatingClosure quit_closure = run_loop.QuitClosure();
 
-  enterprise_connectors::ContentAnalysisDelegate::Data data;
+  ContentAnalysisDelegate::Data data;
   data.text.emplace_back(text());
   data.paths.emplace_back(FILE_PATH_LITERAL("/tmp/foo.doc"));
   ASSERT_TRUE(ContentAnalysisDelegate::IsEnabled(
-      browser()->profile(), GURL(kTestUrl), &data,
-      enterprise_connectors::AnalysisConnector::FILE_ATTACHED));
+      browser()->profile(), GURL(kTestUrl), &data, FILE_ATTACHED));
 
   // Nothing should be reported for unauthorized users.
   safe_browsing::EventReportValidator validator(client());
   validator.ExpectNoReport();
 
-  enterprise_connectors::ContentAnalysisDelegate::CreateForWebContents(
+  ContentAnalysisDelegate::CreateForWebContents(
       browser()->tab_strip_model()->GetActiveWebContents(), std::move(data),
       base::BindLambdaForTesting(
           [&quit_closure, &called](
-              const enterprise_connectors::ContentAnalysisDelegate::Data& data,
-              const enterprise_connectors::ContentAnalysisDelegate::Result&
-                  result) {
+              const ContentAnalysisDelegate::Data& data,
+              const ContentAnalysisDelegate::Result& result) {
             ASSERT_EQ(result.text_results.size(), 1u);
             ASSERT_EQ(result.paths_results.size(), 1u);
             ASSERT_TRUE(result.text_results[0]);
@@ -304,7 +298,7 @@
   // Set up delegate and upload service.
   EnableUploadsScanningAndReporting();
 
-  enterprise_connectors::ContentAnalysisDelegate::SetFactoryForTesting(
+  ContentAnalysisDelegate::SetFactoryForTesting(
       base::BindRepeating(&MinimalFakeContentAnalysisDelegate::Create));
 
   FakeBinaryUploadServiceStorage()->SetAuthorized(true);
@@ -315,8 +309,7 @@
   CreateFilesForTest({"ok.doc", "bad.exe"},
                      {"ok file content", "bad file content"}, &data);
   ASSERT_TRUE(ContentAnalysisDelegate::IsEnabled(
-      browser()->profile(), GURL(kTestUrl), &data,
-      enterprise_connectors::AnalysisConnector::FILE_ATTACHED));
+      browser()->profile(), GURL(kTestUrl), &data, FILE_ATTACHED));
 
   // The malware verdict means an event should be reported.
   safe_browsing::EventReportValidator validator(client());
@@ -334,19 +327,17 @@
       safe_browsing::EventResultToString(safe_browsing::EventResult::BLOCKED),
       /*username*/ kUserName);
 
-  enterprise_connectors::ContentAnalysisResponse ok_response;
+  ContentAnalysisResponse ok_response;
   auto* ok_result = ok_response.add_results();
-  ok_result->set_status(
-      enterprise_connectors::ContentAnalysisResponse::Result::SUCCESS);
+  ok_result->set_status(ContentAnalysisResponse::Result::SUCCESS);
   ok_result->set_tag("malware");
 
-  enterprise_connectors::ContentAnalysisResponse bad_response;
+  ContentAnalysisResponse bad_response;
   auto* bad_result = bad_response.add_results();
-  bad_result->set_status(
-      enterprise_connectors::ContentAnalysisResponse::Result::SUCCESS);
+  bad_result->set_status(ContentAnalysisResponse::Result::SUCCESS);
   bad_result->set_tag("malware");
   auto* bad_rule = bad_result->add_triggered_rules();
-  bad_rule->set_action(enterprise_connectors::TriggeredRule::BLOCK);
+  bad_rule->set_action(TriggeredRule::BLOCK);
   bad_rule->set_rule_name("malware");
 
   FakeBinaryUploadServiceStorage()->SetResponseForFile(
@@ -386,7 +377,7 @@
   // Set up delegate and upload service.
   EnableUploadsScanningAndReporting();
 
-  enterprise_connectors::ContentAnalysisDelegate::SetFactoryForTesting(
+  ContentAnalysisDelegate::SetFactoryForTesting(
       base::BindRepeating(&MinimalFakeContentAnalysisDelegate::Create));
 
   FakeBinaryUploadServiceStorage()->SetAuthorized(true);
@@ -394,19 +385,18 @@
   safe_browsing::EventReportValidator validator(client());
   // Prepare a complex DLP response to test that the verdict is reported
   // correctly in the sensitive data event.
-  enterprise_connectors::ContentAnalysisResponse response;
+  ContentAnalysisResponse response;
   auto* result = response.add_results();
-  result->set_status(
-      enterprise_connectors::ContentAnalysisResponse::Result::SUCCESS);
+  result->set_status(ContentAnalysisResponse::Result::SUCCESS);
   result->set_tag("dlp");
 
   auto* rule1 = result->add_triggered_rules();
-  rule1->set_action(enterprise_connectors::TriggeredRule::REPORT_ONLY);
+  rule1->set_action(TriggeredRule::REPORT_ONLY);
   rule1->set_rule_id("1");
   rule1->set_rule_name("resource rule 1");
 
   auto* rule2 = result->add_triggered_rules();
-  rule2->set_action(enterprise_connectors::TriggeredRule::BLOCK);
+  rule2->set_action(TriggeredRule::BLOCK);
   rule2->set_rule_id("3");
   rule2->set_rule_name("resource rule 2");
 
@@ -437,8 +427,7 @@
   data.text.emplace_back(text());
   data.text.emplace_back(text());
   ASSERT_TRUE(ContentAnalysisDelegate::IsEnabled(
-      browser()->profile(), GURL(kTestUrl), &data,
-      enterprise_connectors::AnalysisConnector::BULK_DATA_ENTRY));
+      browser()->profile(), GURL(kTestUrl), &data, BULK_DATA_ENTRY));
 
   // Start test.
   ContentAnalysisDelegate::CreateForWebContents(
@@ -501,9 +490,9 @@
 
   // Set up delegate and upload service.
   EnableUploadsScanningAndReporting();
-  safe_browsing::SetAnalysisConnector(
-      enterprise_connectors::FILE_ATTACHED,
-      base::StringPrintf(R"({
+  safe_browsing::SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                                      FILE_ATTACHED,
+                                      base::StringPrintf(R"({
         "service_provider": "google",
         "enable": [
           {
@@ -513,9 +502,10 @@
         ],
         "block_until_verdict": 1,
         "block_password_protected": %s
-      })", bool_setting_value()));
+      })",
+                                                         bool_setting_value()));
 
-  enterprise_connectors::ContentAnalysisDelegate::SetFactoryForTesting(
+  ContentAnalysisDelegate::SetFactoryForTesting(
       base::BindRepeating(&MinimalFakeContentAnalysisDelegate::Create));
 
   FakeBinaryUploadServiceStorage()->SetAuthorized(true);
@@ -528,8 +518,7 @@
   ContentAnalysisDelegate::Data data;
   data.paths.emplace_back(test_zip);
   ASSERT_TRUE(ContentAnalysisDelegate::IsEnabled(
-      browser()->profile(), GURL(kTestUrl), &data,
-      enterprise_connectors::AnalysisConnector::FILE_ATTACHED));
+      browser()->profile(), GURL(kTestUrl), &data, FILE_ATTACHED));
 
   // The file should be reported as unscanned.
   safe_browsing::EventReportValidator validator(client());
@@ -579,9 +568,9 @@
 
   // Set up delegate and upload service.
   EnableUploadsScanningAndReporting();
-  safe_browsing::SetAnalysisConnector(
-      enterprise_connectors::FILE_ATTACHED,
-      base::StringPrintf(R"({
+  safe_browsing::SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                                      FILE_ATTACHED,
+                                      base::StringPrintf(R"({
         "service_provider": "google",
         "enable": [
           {
@@ -591,9 +580,10 @@
         ],
         "block_until_verdict": 1,
         "block_unsupported_file_types": %s
-      })", bool_setting_value()));
+      })",
+                                                         bool_setting_value()));
 
-  enterprise_connectors::ContentAnalysisDelegate::SetFactoryForTesting(
+  ContentAnalysisDelegate::SetFactoryForTesting(
       base::BindRepeating(&MinimalFakeContentAnalysisDelegate::Create));
 
   FakeBinaryUploadServiceStorage()->SetAuthorized(true);
@@ -603,8 +593,7 @@
   ContentAnalysisDelegate::Data data;
   CreateFilesForTest({"a.sh"}, {"file content"}, &data);
   ASSERT_TRUE(ContentAnalysisDelegate::IsEnabled(
-      browser()->profile(), GURL(kTestUrl), &data,
-      enterprise_connectors::AnalysisConnector::FILE_ATTACHED));
+      browser()->profile(), GURL(kTestUrl), &data, FILE_ATTACHED));
 
   // The file should be reported as unscanned.
   safe_browsing::EventReportValidator validator(client());
@@ -657,9 +646,9 @@
 
   // Set up delegate and upload service.
   EnableUploadsScanningAndReporting();
-  safe_browsing::SetAnalysisConnector(
-      enterprise_connectors::FILE_ATTACHED,
-      base::StringPrintf(R"({
+  safe_browsing::SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                                      FILE_ATTACHED,
+                                      base::StringPrintf(R"({
         "service_provider": "google",
         "enable": [
           {
@@ -669,9 +658,10 @@
         ],
         "block_until_verdict": 1,
         "block_large_files": %s
-      })", bool_setting_value()));
+      })",
+                                                         bool_setting_value()));
 
-  enterprise_connectors::ContentAnalysisDelegate::SetFactoryForTesting(
+  ContentAnalysisDelegate::SetFactoryForTesting(
       base::BindRepeating(&MinimalFakeContentAnalysisDelegate::Create));
 
   FakeBinaryUploadServiceStorage()->SetAuthorized(true);
@@ -684,8 +674,7 @@
       {"large.doc"},
       {std::string(BinaryUploadService::kMaxUploadSizeBytes + 1, 'a')}, &data);
   ASSERT_TRUE(ContentAnalysisDelegate::IsEnabled(
-      browser()->profile(), GURL(kTestUrl), &data,
-      enterprise_connectors::AnalysisConnector::FILE_ATTACHED));
+      browser()->profile(), GURL(kTestUrl), &data, FILE_ATTACHED));
 
   // The file should be reported as unscanned.
   safe_browsing::EventReportValidator validator(client());
@@ -739,9 +728,9 @@
 
   // Set up delegate and upload service.
   EnableUploadsScanningAndReporting();
-  safe_browsing::SetAnalysisConnector(
-      enterprise_connectors::FILE_ATTACHED,
-      base::StringPrintf(R"({
+  safe_browsing::SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                                      FILE_ATTACHED,
+                                      base::StringPrintf(R"({
         "service_provider": "google",
         "enable": [
           {
@@ -750,9 +739,10 @@
           }
         ],
         "block_until_verdict": %s
-      })", int_setting_value()));
+      })",
+                                                         int_setting_value()));
 
-  enterprise_connectors::ContentAnalysisDelegate::SetFactoryForTesting(
+  ContentAnalysisDelegate::SetFactoryForTesting(
       base::BindRepeating(&MinimalFakeContentAnalysisDelegate::Create));
 
   FakeBinaryUploadServiceStorage()->SetAuthorized(true);
@@ -763,27 +753,24 @@
 
   CreateFilesForTest({"foo.doc"}, {"foo content"}, &data);
   ASSERT_TRUE(ContentAnalysisDelegate::IsEnabled(
-      browser()->profile(), GURL(kTestUrl), &data,
-      enterprise_connectors::AnalysisConnector::FILE_ATTACHED));
+      browser()->profile(), GURL(kTestUrl), &data, FILE_ATTACHED));
 
   // The file should be reported as malware and sensitive content.
   safe_browsing::EventReportValidator validator(client());
-  enterprise_connectors::ContentAnalysisResponse response;
+  ContentAnalysisResponse response;
 
   auto* malware_result = response.add_results();
-  malware_result->set_status(
-      enterprise_connectors::ContentAnalysisResponse::Result::SUCCESS);
+  malware_result->set_status(ContentAnalysisResponse::Result::SUCCESS);
   malware_result->set_tag("malware");
   auto* malware_rule = malware_result->add_triggered_rules();
-  malware_rule->set_action(enterprise_connectors::TriggeredRule::BLOCK);
+  malware_rule->set_action(TriggeredRule::BLOCK);
   malware_rule->set_rule_name("malware");
 
   auto* dlp_result = response.add_results();
-  dlp_result->set_status(
-      enterprise_connectors::ContentAnalysisResponse::Result::SUCCESS);
+  dlp_result->set_status(ContentAnalysisResponse::Result::SUCCESS);
   dlp_result->set_tag("dlp");
   auto* dlp_rule = dlp_result->add_triggered_rules();
-  dlp_rule->set_action(enterprise_connectors::TriggeredRule::BLOCK);
+  dlp_rule->set_action(TriggeredRule::BLOCK);
   dlp_rule->set_rule_id("0");
   dlp_rule->set_rule_name("some_dlp_rule");
 
diff --git a/chrome/browser/enterprise/connectors/content_analysis_delegate_unittest.cc b/chrome/browser/enterprise/connectors/content_analysis_delegate_unittest.cc
index d3387371..012e6a1f 100644
--- a/chrome/browser/enterprise/connectors/content_analysis_delegate_unittest.cc
+++ b/chrome/browser/enterprise/connectors/content_analysis_delegate_unittest.cc
@@ -20,7 +20,7 @@
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/enterprise/connectors/common.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/enterprise/connectors/fake_content_analysis_delegate.h"
 #include "chrome/browser/policy/dm_token_utils.h"
 #include "chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.h"
@@ -146,12 +146,6 @@
     }
   }
 
-  void SetUp() override { ConnectorsManager::GetInstance()->SetUpForTesting(); }
-
-  void TearDown() override {
-    ConnectorsManager::GetInstance()->TearDownForTesting();
-  }
-
   Profile* profile() { return profile_; }
 
   content::WebContents* contents() {
@@ -217,7 +211,7 @@
 
 TEST_F(ContentAnalysisDelegateIsEnabledTest, NoDMToken) {
   EnableFeatures();
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED,
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
                                       kBlockingScansForDlpAndMalware);
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateInvalidTokenForTesting());
@@ -243,7 +237,7 @@
 
 TEST_F(ContentAnalysisDelegateIsEnabledTest, NoFeatureNoDMToken) {
   DisableFeatures();
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED,
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
                                       kBlockingScansForDlpAndMalware);
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateInvalidTokenForTesting());
@@ -259,7 +253,7 @@
   DisableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED,
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
                                       kBlockingScansForDlpAndMalware);
 
   ContentAnalysisDelegate::Data data;
@@ -285,7 +279,8 @@
   EnableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, kNothingEnabled);
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
+                                      kNothingEnabled);
 
   ContentAnalysisDelegate::Data data;
   EXPECT_FALSE(ContentAnalysisDelegate::IsEnabled(profile(), GURL(), &data,
@@ -298,7 +293,7 @@
   EnableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_DOWNLOADED,
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_DOWNLOADED,
                                       kBlockingScansForDlpAndMalware);
 
   ContentAnalysisDelegate::Data data;
@@ -312,7 +307,8 @@
   EnableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, kBlockingScansForDlp);
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
+                                      kBlockingScansForDlp);
 
   ContentAnalysisDelegate::Data data;
   EXPECT_TRUE(ContentAnalysisDelegate::IsEnabled(profile(), GURL(), &data,
@@ -325,8 +321,10 @@
   EnableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, kBlockingScansForDlp);
-  safe_browsing::SetAnalysisConnector(FILE_DOWNLOADED, kBlockingScansForDlp);
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
+                                      kBlockingScansForDlp);
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_DOWNLOADED,
+                                      kBlockingScansForDlp);
 
   ContentAnalysisDelegate::Data data;
   EXPECT_TRUE(ContentAnalysisDelegate::IsEnabled(profile(), GURL(), &data,
@@ -339,8 +337,10 @@
   EnableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, kBlockingScansForDlp);
-  safe_browsing::SetAnalysisConnector(FILE_DOWNLOADED, kBlockingScansForDlp);
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
+                                      kBlockingScansForDlp);
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_DOWNLOADED,
+                                      kBlockingScansForDlp);
   GURL url(kTestUrl);
 
   ContentAnalysisDelegate::Data data;
@@ -355,7 +355,7 @@
   EnableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED,
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
                                       R"(
         {
           "service_provider": "google",
@@ -385,7 +385,7 @@
   EnableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED,
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
                                       R"(
         {
           "service_provider": "google",
@@ -450,7 +450,8 @@
   EnableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, kNothingEnabled);
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
+                                      kNothingEnabled);
 
   ContentAnalysisDelegate::Data data;
   EXPECT_FALSE(ContentAnalysisDelegate::IsEnabled(profile(), GURL(), &data,
@@ -463,7 +464,7 @@
   EnableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_DOWNLOADED,
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_DOWNLOADED,
                                       kBlockingScansForDlpAndMalware);
 
   ContentAnalysisDelegate::Data data;
@@ -477,7 +478,7 @@
   EnableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED,
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
                                       R"(
         {
           "service_provider": "google",
@@ -502,7 +503,7 @@
   EnableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED,
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
                                       kBlockingScansForDlpAndMalware);
 
   ContentAnalysisDelegate::Data data;
@@ -524,7 +525,7 @@
   EnableFeatures();
   ScopedSetDMToken scoped_dm_token(
       policy::DMToken::CreateValidTokenForTesting(kDmToken));
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED,
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
                                       R"(
         {
           "service_provider": "google",
@@ -593,15 +594,17 @@
 
     for (auto connector : {FILE_ATTACHED, BULK_DATA_ENTRY}) {
       if (include_dlp_ && include_malware_) {
-        safe_browsing::SetAnalysisConnector(connector,
+        safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), connector,
                                             kBlockingScansForDlpAndMalware);
       } else if (include_dlp_) {
-        safe_browsing::SetAnalysisConnector(connector, kBlockingScansForDlp);
+        safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), connector,
+                                            kBlockingScansForDlp);
       } else if (include_malware_) {
-        safe_browsing::SetAnalysisConnector(connector,
+        safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), connector,
                                             kBlockingScansForMalware);
       } else {
-        safe_browsing::SetAnalysisConnector(connector, kNothingEnabled);
+        safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), connector,
+                                            kNothingEnabled);
       }
     }
   }
@@ -610,9 +613,9 @@
     BaseTest::SetUp();
 
     EnableFeatures();
-    safe_browsing::SetAnalysisConnector(FILE_ATTACHED,
+    safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
                                         kBlockingScansForDlpAndMalware);
-    safe_browsing::SetAnalysisConnector(BULK_DATA_ENTRY,
+    safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), BULK_DATA_ENTRY,
                                         kBlockingScansForDlpAndMalware);
 
     ContentAnalysisDelegate::SetFactoryForTesting(base::BindRepeating(
@@ -862,7 +865,7 @@
 TEST_F(ContentAnalysisDelegateAuditOnlyTest, FileIsEncrypted) {
   content::InProcessUtilityThreadHelper in_process_utility_thread_helper;
 
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, R"(
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED, R"(
     {
       "service_provider": "google",
       "enable": [
@@ -913,7 +916,7 @@
        MAYBE_FileIsEncrypted_PolicyAllows) {
   content::InProcessUtilityThreadHelper in_process_utility_thread_helper;
 
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, R"(
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED, R"(
     {
       "service_provider": "google",
       "enable": [
@@ -1221,7 +1224,7 @@
 }
 
 TEST_F(ContentAnalysisDelegateAuditOnlyTest, NoDelay) {
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, R"(
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED, R"(
     {
       "service_provider": "google",
       "enable": [
@@ -1388,7 +1391,7 @@
 }
 
 TEST_F(ContentAnalysisDelegateAuditOnlyTest, UnsupportedTypesBlockPolicy) {
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, R"(
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED, R"(
     {
       "service_provider": "google",
       "enable": [
@@ -1531,7 +1534,7 @@
   void SetUp() override {
     BaseTest::SetUp();
     EnableFeatures();
-    safe_browsing::SetAnalysisConnector(FILE_ATTACHED,
+    safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
                                         kBlockingScansForDlpAndMalware);
 
     ContentAnalysisDelegate::SetFactoryForTesting(base::BindRepeating(
@@ -1616,13 +1619,9 @@
   const char* bool_setting() const { return GetParam() ? "true" : "false"; }
 
   AnalysisSettings settings() {
-    // Clear the cache before getting settings so there's no race with the pref
-    // change and the cached values being updated.
-    ConnectorsManager::GetInstance()->ClearCacheForTesting();
-
     base::Optional<AnalysisSettings> settings =
-        ConnectorsManager::GetInstance()->GetAnalysisSettings(GURL(kTestUrl),
-                                                              FILE_ATTACHED);
+        ConnectorsServiceFactory::GetForBrowserContext(profile())
+            ->GetAnalysisSettings(GURL(kTestUrl), FILE_ATTACHED);
     EXPECT_TRUE(settings.has_value());
     return std::move(settings.value());
   }
@@ -1640,7 +1639,8 @@
       "block_large_files": %s
     })",
                                  bool_setting());
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, pref);
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
+                                      pref);
   EXPECT_EQ(allowed(),
             ContentAnalysisDelegate::ResultShouldAllowDataUse(
                 safe_browsing::BinaryUploadService::Result::FILE_TOO_LARGE,
@@ -1655,7 +1655,8 @@
       "block_password_protected": %s
     })",
                                  bool_setting());
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, pref);
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
+                                      pref);
   EXPECT_EQ(allowed(),
             ContentAnalysisDelegate::ResultShouldAllowDataUse(
                 safe_browsing::BinaryUploadService::Result::FILE_ENCRYPTED,
@@ -1670,7 +1671,8 @@
       "block_unsupported_file_types": %s
     })",
                                  bool_setting());
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, pref);
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(), FILE_ATTACHED,
+                                      pref);
   EXPECT_EQ(allowed(), ContentAnalysisDelegate::ResultShouldAllowDataUse(
                            safe_browsing::BinaryUploadService::Result::
                                DLP_SCAN_UNSUPPORTED_FILE_TYPE,
diff --git a/chrome/browser/enterprise/connectors/content_analysis_dialog_browsertest.cc b/chrome/browser/enterprise/connectors/content_analysis_dialog_browsertest.cc
index 61b8368..49022bd 100644
--- a/chrome/browser/enterprise/connectors/content_analysis_dialog_browsertest.cc
+++ b/chrome/browser/enterprise/connectors/content_analysis_dialog_browsertest.cc
@@ -427,7 +427,8 @@
 
   // Setup policies to enable deep scanning, its UI and the responses to be
   // simulated.
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED,
+  safe_browsing::SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                                      FILE_ATTACHED,
                                       kBlockingScansForDlpAndMalware);
   SetStatusCallbackResponse(
       safe_browsing::SimpleContentAnalysisResponseForTesting(
@@ -489,7 +490,8 @@
 
   // Setup policies to enable deep scanning, its UI and the responses to be
   // simulated.
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, kBlockingScansForDlp);
+  safe_browsing::SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                                      FILE_ATTACHED, kBlockingScansForDlp);
   SetStatusCallbackResponse(
       safe_browsing::SimpleContentAnalysisResponseForTesting(
           /*dlp=*/true, /*malware=*/base::nullopt));
@@ -531,7 +533,8 @@
   base::ScopedAllowBlockingForTesting allow_blocking;
 
   // Setup policies.
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED, kBlockingScansForDlp);
+  safe_browsing::SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                                      FILE_ATTACHED, kBlockingScansForDlp);
 
   // Setup the DLP warning response.
   enterprise_connectors::ContentAnalysisResponse response;
@@ -588,7 +591,8 @@
 
   // Setup policies to enable deep scanning, its UI and the responses to be
   // simulated.
-  safe_browsing::SetAnalysisConnector(FILE_ATTACHED,
+  safe_browsing::SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                                      FILE_ATTACHED,
                                       kBlockingScansForDlpAndMalware);
 
   SetStatusCallbackResponse(
diff --git a/chrome/browser/enterprise/connectors/reporting_service_settings_unittest.cc b/chrome/browser/enterprise/connectors/reporting_service_settings_unittest.cc
index a6b1b224..4f7badc 100644
--- a/chrome/browser/enterprise/connectors/reporting_service_settings_unittest.cc
+++ b/chrome/browser/enterprise/connectors/reporting_service_settings_unittest.cc
@@ -5,7 +5,7 @@
 #include "chrome/browser/enterprise/connectors/reporting_service_settings.h"
 #include "base/json/json_reader.h"
 #include "base/no_destructor.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/enterprise/connectors/service_provider_config.h"
 #include "content/public/test/browser_task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/enterprise/connectors/service_provider_config_unittest.cc b/chrome/browser/enterprise/connectors/service_provider_config_unittest.cc
index 3ddc591..7247c2a 100644
--- a/chrome/browser/enterprise/connectors/service_provider_config_unittest.cc
+++ b/chrome/browser/enterprise/connectors/service_provider_config_unittest.cc
@@ -5,7 +5,7 @@
 #include "chrome/browser/enterprise/connectors/service_provider_config.h"
 
 #include "base/json/json_reader.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace enterprise_connectors {
diff --git a/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router.cc b/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router.cc
index 7a86ff4..f1624d7 100644
--- a/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router.cc
+++ b/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router.cc
@@ -20,7 +20,7 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/chrome_content_browser_client.h"
 #include "chrome/browser/enterprise/connectors/common.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/policy/chrome_browser_policy_connector.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_attributes_entry.h"
@@ -894,7 +894,8 @@
 
 bool SafeBrowsingPrivateEventRouter::IsRealtimeReportingEnabled() {
   auto settings =
-      enterprise_connectors::ConnectorsManager::GetInstance()
+      enterprise_connectors::ConnectorsServiceFactory::GetForBrowserContext(
+          context_)
           ->GetReportingSettings(
               enterprise_connectors::ReportingConnector::SECURITY_EVENT);
   return settings.has_value();
@@ -964,6 +965,7 @@
   event_list.Append(std::move(wrapper));
 
   client_->UploadSecurityEventReport(
+      context_,
       policy::RealtimeReportingJobConfiguration::BuildReport(
           std::move(event_list),
           reporting::GetContext(Profile::FromBrowserContext(context_))),
diff --git a/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_factory.cc b/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_factory.cc
index 560dcbcd..50b4be94 100644
--- a/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_factory.cc
+++ b/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_factory.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_factory.h"
 
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
@@ -33,6 +34,7 @@
           BrowserContextDependencyManager::GetInstance()) {
   DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory());
   DependsOn(IdentityManagerFactory::GetInstance());
+  DependsOn(enterprise_connectors::ConnectorsServiceFactory::GetInstance());
 }
 
 SafeBrowsingPrivateEventRouterFactory::
diff --git a/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_unittest.cc b/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_unittest.cc
index d1c8aa7..12fd5ba 100644
--- a/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_unittest.cc
+++ b/chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_unittest.cc
@@ -17,7 +17,8 @@
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/enterprise/connectors/common.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_prefs.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_factory.h"
 #include "chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.h"
 #include "chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_utils.h"
@@ -60,7 +61,7 @@
 namespace {
 
 ACTION_P(CaptureArg, wrapper) {
-  *wrapper = arg0.Clone();
+  *wrapper = arg1.Clone();
 }
 
 constexpr char kConnectorsPrefValue[] = R"([
@@ -224,7 +225,7 @@
   }
 
   void SetReportingPolicy(bool enabled) {
-    safe_browsing::SetOnSecurityEventReporting(enabled);
+    safe_browsing::SetOnSecurityEventReporting(profile_->GetPrefs(), enabled);
 
     // If we are not enabling reporting, or if the client has already been
     // set for testing, just return.
@@ -270,7 +271,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
       .WillOnce(CaptureArg(&report));
 
   TriggerOnPolicySpecifiedPasswordReuseDetectedEvent();
@@ -306,7 +307,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
       .WillOnce(CaptureArg(&report));
 
   TriggerOnPolicySpecifiedPasswordChangedEvent();
@@ -339,7 +340,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
       .WillOnce(CaptureArg(&report));
 
   TriggerOnDangerousDownloadOpenedEvent();
@@ -389,7 +390,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
       .WillOnce(CaptureArg(&report));
 
   TriggerOnSecurityInterstitialProceededEvent();
@@ -429,7 +430,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
       .WillOnce(CaptureArg(&report));
 
   TriggerOnSecurityInterstitialShownEvent();
@@ -469,7 +470,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
       .WillOnce(CaptureArg(&report));
 
   TriggerOnDangerousDownloadEvent();
@@ -511,7 +512,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
       .WillOnce(CaptureArg(&report));
 
   TriggerOnDangerousDownloadEventBypass();
@@ -551,7 +552,7 @@
       api::safe_browsing_private::OnSecurityInterstitialShown::kEventName);
   event_router_->AddEventObserver(&event_observer);
 
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(1);
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(1);
   TriggerOnSecurityInterstitialShownEvent();
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(1u, event_observer.PassEventArgs().GetList().size());
@@ -559,7 +560,7 @@
 
   // Now turn off policy.  This time no report should be generated.
   SetReportingPolicy(false);
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(0);
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(0);
   TriggerOnSecurityInterstitialShownEvent();
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(1u, event_observer.PassEventArgs().GetList().size());
@@ -578,7 +579,7 @@
 
   // Now turn on policy.
   SetReportingPolicy(true);
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(1);
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(1);
   TriggerOnSecurityInterstitialShownEvent();
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(1u, event_observer.PassEventArgs().GetList().size());
@@ -593,7 +594,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(0);
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(0);
 
   TriggerOnPolicySpecifiedPasswordReuseDetectedEvent();
   base::RunLoop().RunUntilIdle();
@@ -609,7 +610,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(0);
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(0);
 
   TriggerOnPolicySpecifiedPasswordChangedEvent();
   base::RunLoop().RunUntilIdle();
@@ -626,7 +627,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(0);
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(0);
 
   TriggerOnDangerousDownloadOpenedEvent();
   base::RunLoop().RunUntilIdle();
@@ -643,7 +644,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(0);
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(0);
 
   TriggerOnSecurityInterstitialProceededEvent();
   base::RunLoop().RunUntilIdle();
@@ -660,7 +661,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(0);
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(0);
 
   TriggerOnSecurityInterstitialShownEvent();
   base::RunLoop().RunUntilIdle();
@@ -677,7 +678,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(0);
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(0);
 
   TriggerOnDangerousDownloadEvent();
   base::RunLoop().RunUntilIdle();
@@ -694,7 +695,7 @@
   event_router_->AddEventObserver(&event_observer);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(0);
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(0);
 
   TriggerOnDangerousDownloadEventBypass();
   base::RunLoop().RunUntilIdle();
@@ -707,7 +708,7 @@
   SetUpRouters(/*realtime_reporting_enable=*/true, /*authorized=*/true);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
       .WillOnce(CaptureArg(&report));
 
   TriggerOnSensitiveDataEvent(safe_browsing::EventResult::ALLOWED);
@@ -757,7 +758,7 @@
   SetUpRouters(/*realtime_reporting_enable=*/true, /*authorized=*/true);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
       .WillOnce(CaptureArg(&report));
 
   TriggerOnSensitiveDataEvent(safe_browsing::EventResult::BLOCKED);
@@ -807,7 +808,7 @@
   SetUpRouters(/*realtime_reporting_enable=*/true, /*authorized=*/true);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
       .WillOnce(CaptureArg(&report));
 
   TriggerOnUnscannedFileEvent(safe_browsing::EventResult::ALLOWED);
@@ -851,7 +852,7 @@
   SetUpRouters(/*realtime_reporting_enable=*/true, /*authorized=*/true);
 
   base::Value report;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
       .WillOnce(CaptureArg(&report));
 
   TriggerOnUnscannedFileEvent(safe_browsing::EventResult::BLOCKED);
@@ -902,7 +903,7 @@
       ->SetIdentityManagerForTesting(
           identity_test_environment.identity_manager());
 
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
       .WillRepeatedly(Return());
 
   // With no primary account, we should not set the username.
@@ -967,10 +968,8 @@
 #endif
 
     if (is_policy_enabled_) {
-      scoped_connector_pref_ = std::make_unique<ScopedConnectorPref>(
-          ConnectorPref(
-              enterprise_connectors::ReportingConnector::SECURITY_EVENT),
-          kConnectorsPrefValue);
+      profile_->GetPrefs()->Set(enterprise_connectors::kOnSecurityEventPref,
+                                *base::JSONReader::Read(kConnectorsPrefValue));
     }
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
@@ -992,15 +991,6 @@
 #endif
   }
 
-  void SetUp() override {
-    enterprise_connectors::ConnectorsManager::GetInstance()->SetUpForTesting();
-  }
-
-  void TearDown() override {
-    enterprise_connectors::ConnectorsManager::GetInstance()
-        ->TearDownForTesting();
-  }
-
   bool should_init() {
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING) && !BUILDFLAG(IS_CHROMEOS_ASH)
     return is_feature_flag_enabled_;
@@ -1010,27 +1000,7 @@
   }
 
  protected:
-  class ScopedConnectorPref {
-   public:
-    ScopedConnectorPref(const char* pref, const char* pref_value)
-        : pref_(pref) {
-      auto maybe_pref_value =
-          base::JSONReader::Read(pref_value, base::JSON_ALLOW_TRAILING_COMMAS);
-      EXPECT_TRUE(maybe_pref_value.has_value());
-      TestingBrowserProcess::GetGlobal()->local_state()->Set(
-          pref, maybe_pref_value.value());
-    }
-
-    ~ScopedConnectorPref() {
-      TestingBrowserProcess::GetGlobal()->local_state()->ClearPref(pref_);
-    }
-
-   private:
-    const char* pref_;
-  };
-
   base::test::ScopedFeatureList scoped_feature_list_;
-  std::unique_ptr<ScopedConnectorPref> scoped_connector_pref_;
   const bool is_feature_flag_enabled_;
   const bool is_manageable_;
   const bool is_policy_enabled_;
@@ -1067,13 +1037,13 @@
 #endif
 
   if (should_report) {
-    EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(1);
+    EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(1);
   } else if (client_) {
     // Because the test will crate a |client_| object when the policy is
     // set, even if the feature flag or other conditions indicate that
     // reports should not be sent, it is possible that the pointer is not
     // null. In this case, make sure UploadSecurityEventReport() is not called.
-    EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(0);
+    EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(0);
   }
 
   TriggerOnPolicySpecifiedPasswordChangedEvent();
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index cc411df..8279ada 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -7229,7 +7229,7 @@
   // Bring the bubble alert error again by clicking its menu item.
   global_error->ExecuteMenuItem(nullptr);
 
-  // Install another webstore extension that will trigger an erorr of type
+  // Install another webstore extension that will trigger an error of type
   // BUBBLE_ALERT.
   // Make sure that this bubble alert does not replace the current bubble alert.
   {
diff --git a/chrome/browser/media/kaleidoscope/kaleidoscope_ui.cc b/chrome/browser/media/kaleidoscope/kaleidoscope_ui.cc
index 0841190..66909e08 100644
--- a/chrome/browser/media/kaleidoscope/kaleidoscope_ui.cc
+++ b/chrome/browser/media/kaleidoscope/kaleidoscope_ui.cc
@@ -290,6 +290,19 @@
   html_source->AddResourcePath("content.js", IDR_KALEIDOSCOPE_CONTENT_JS);
   html_source->AddResourcePath("shared.css", IDR_KALEIDOSCOPE_SHARED_CSS);
 
+  // Google Sans.
+  html_source->AddResourcePath("resources/fonts/fonts.css",
+                               IDR_GOOGLE_SANS_CSS);
+  html_source->AddResourcePath("resources/fonts/GoogleSans-Bold.woff2",
+                               IDR_GOOGLE_SANS_BOLD);
+  html_source->AddResourcePath("resources/fonts/GoogleSans-Medium.woff2",
+                               IDR_GOOGLE_SANS_MEDIUM);
+  html_source->AddResourcePath("resources/fonts/GoogleSans-Regular.woff2",
+                               IDR_GOOGLE_SANS_REGULAR);
+  html_source->AddResourcePath(
+      "resources/fonts/GoogleSansDisplay-Regular.woff2",
+      IDR_GOOGLE_SANS_DISPLAY_REGULAR);
+
   html_source->SetDefaultResource(IDR_KALEIDOSCOPE_HTML);
 #endif  // BUILDFLAG(ENABLE_KALEIDOSCOPE)
 
diff --git a/chrome/browser/media/router/discovery/mdns/cast_media_sink_service_impl.h b/chrome/browser/media/router/discovery/mdns/cast_media_sink_service_impl.h
index 6339bc6..78fbd19 100644
--- a/chrome/browser/media/router/discovery/mdns/cast_media_sink_service_impl.h
+++ b/chrome/browser/media/router/discovery/mdns/cast_media_sink_service_impl.h
@@ -245,7 +245,7 @@
   // |cast_sink|: Cast sink created from mDNS service description or DIAL sink.
   // |backoff_entry|: backoff entry holds failure count and calculates back-off
   // for next retry.
-  // |error_state|: erorr encountered when opending cast channel.
+  // |error_state|: error encountered when opending cast channel.
   void OnChannelErrorMayRetry(MediaSinkInternal cast_sink,
                               std::unique_ptr<net::BackoffEntry> backoff_entry,
                               cast_channel::ChannelError error_state,
diff --git a/chrome/browser/metrics/ukm_browsertest.cc b/chrome/browser/metrics/ukm_browsertest.cc
index fef63a0..b26019d 100644
--- a/chrome/browser/metrics/ukm_browsertest.cc
+++ b/chrome/browser/metrics/ukm_browsertest.cc
@@ -1096,8 +1096,13 @@
 // Make sure that pending data is deleted when user deletes history.
 // Keep in sync with testHistoryDelete in ios/chrome/browser/metrics/
 // ukm_egtest.mm.
-// Quite flaky: https://crbug.com/1131541
-IN_PROC_BROWSER_TEST_F(UkmBrowserTest, DISABLED_HistoryDeleteCheck) {
+// Quite flaky on Android: https://crbug.com/1131541
+#if defined(OS_ANDROID)
+#define MAYBE_HistoryDeleteCheck DISABLED_HistoryDeleteCheck
+#else
+#define MAYBE_HistoryDeleteCheck HistoryDeleteCheck
+#endif
+IN_PROC_BROWSER_TEST_F(UkmBrowserTest, MAYBE_HistoryDeleteCheck) {
   ukm::UkmTestHelper ukm_test_helper(GetUkmService());
   MetricsConsentOverride metrics_consent(true);
 
diff --git a/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc b/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
index 098bf9c..ccc5997 100644
--- a/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
+++ b/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
@@ -85,7 +85,10 @@
   auto* manager = permissions::PermissionRequestManager::FromWebContents(
       permission_prompt_->web_contents());
 
-  switch (manager->ReasonForUsingQuietUi()) {
+  auto quiet_ui_reason = manager->ReasonForUsingQuietUi();
+  if (!quiet_ui_reason)
+    return base::string16();
+  switch (*quiet_ui_reason) {
     case QuietUiReason::kEnabledInPrefs:
     case QuietUiReason::kPredictedVeryUnlikelyGrant:
       return l10n_util::GetStringUTF16(
@@ -108,7 +111,10 @@
   auto* manager = permissions::PermissionRequestManager::FromWebContents(
       permission_prompt_->web_contents());
 
-  switch (manager->ReasonForUsingQuietUi()) {
+  auto quiet_ui_reason = manager->ReasonForUsingQuietUi();
+  if (!quiet_ui_reason)
+    return false;
+  switch (*quiet_ui_reason) {
     case QuietUiReason::kEnabledInPrefs:
     case QuietUiReason::kPredictedVeryUnlikelyGrant:
     case QuietUiReason::kTriggeredByCrowdDeny:
@@ -131,7 +137,10 @@
       permission_prompt_->web_contents());
 
   // This will be used as the text of the link in the expanded state.
-  switch (manager->ReasonForUsingQuietUi()) {
+  auto quiet_ui_reason = manager->ReasonForUsingQuietUi();
+  if (!quiet_ui_reason)
+    return base::string16();
+  switch (*quiet_ui_reason) {
     case QuietUiReason::kEnabledInPrefs:
     case QuietUiReason::kPredictedVeryUnlikelyGrant:
     case QuietUiReason::kTriggeredByCrowdDeny:
@@ -179,7 +188,10 @@
 
   auto* manager = permissions::PermissionRequestManager::FromWebContents(
       permission_prompt_->web_contents());
-  switch (manager->ReasonForUsingQuietUi()) {
+  auto quiet_ui_reason = manager->ReasonForUsingQuietUi();
+  if (!quiet_ui_reason)
+    return true;
+  switch (*quiet_ui_reason) {
     case QuietUiReason::kEnabledInPrefs:
     case QuietUiReason::kPredictedVeryUnlikelyGrant:
     case QuietUiReason::kTriggeredByCrowdDeny:
@@ -199,7 +211,10 @@
 
   auto* manager = permissions::PermissionRequestManager::FromWebContents(
       permission_prompt_->web_contents());
-  switch (manager->ReasonForUsingQuietUi()) {
+  auto quiet_ui_reason = manager->ReasonForUsingQuietUi();
+  if (!quiet_ui_reason)
+    return true;
+  switch (*quiet_ui_reason) {
     case QuietUiReason::kEnabledInPrefs:
     case QuietUiReason::kPredictedVeryUnlikelyGrant:
     case QuietUiReason::kTriggeredByCrowdDeny:
@@ -254,7 +269,10 @@
   auto* manager = permissions::PermissionRequestManager::FromWebContents(
       permission_prompt_->web_contents());
 
-  switch (manager->ReasonForUsingQuietUi()) {
+  auto quiet_ui_reason = manager->ReasonForUsingQuietUi();
+  if (!quiet_ui_reason)
+    return base::string16();
+  switch (*quiet_ui_reason) {
     case QuietUiReason::kEnabledInPrefs:
     case QuietUiReason::kPredictedVeryUnlikelyGrant:
     case QuietUiReason::kTriggeredByCrowdDeny:
diff --git a/chrome/browser/permissions/prediction_based_permission_ui_selector.cc b/chrome/browser/permissions/prediction_based_permission_ui_selector.cc
index 50b4d53..f6a1084 100644
--- a/chrome/browser/permissions/prediction_based_permission_ui_selector.cc
+++ b/chrome/browser/permissions/prediction_based_permission_ui_selector.cc
@@ -1,9 +1,10 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
+// Copyright 2020 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
 #include "chrome/browser/permissions/prediction_based_permission_ui_selector.h"
 
+#include "base/command_line.h"
 #include "base/feature_list.h"
 #include "base/time/default_clock.h"
 #include "base/util/values/values_util.h"
@@ -11,6 +12,7 @@
 #include "chrome/browser/permissions/prediction_service_request.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/chrome_features.h"
+#include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
 #include "components/permissions/permission_util.h"
 #include "components/permissions/prediction_service/prediction_service.h"
@@ -23,7 +25,7 @@
 using QuietUiReason = PredictionBasedPermissionUiSelector::QuietUiReason;
 using Decision = PredictionBasedPermissionUiSelector::Decision;
 
-const auto VeryUnlikely = permissions::
+constexpr auto VeryUnlikely = permissions::
     PermissionSuggestion_Likelihood_DiscretizedLikelihood_VERY_UNLIKELY;
 
 // The data we consider can only be at most 28 days old to match the data that
@@ -34,11 +36,48 @@
 constexpr char kPermissionActionEntryActionKey[] = "action";
 constexpr char kPermissionActionEntryTimestampKey[] = "time";
 
+base::Optional<
+    permissions::PermissionSuggestion_Likelihood_DiscretizedLikelihood>
+ParsePredictionServiceMockLikelihood(const std::string& value) {
+  if (value == "very-unlikely") {
+    return permissions::
+        PermissionSuggestion_Likelihood_DiscretizedLikelihood_VERY_UNLIKELY;
+  } else if (value == "unlikely") {
+    return permissions::
+        PermissionSuggestion_Likelihood_DiscretizedLikelihood_UNLIKELY;
+  } else if (value == "neutral") {
+    return permissions::
+        PermissionSuggestion_Likelihood_DiscretizedLikelihood_NEUTRAL;
+  } else if (value == "likely") {
+    return permissions::
+        PermissionSuggestion_Likelihood_DiscretizedLikelihood_LIKELY;
+  } else if (value == "very-likely") {
+    return permissions::
+        PermissionSuggestion_Likelihood_DiscretizedLikelihood_VERY_LIKELY;
+  }
+
+  return base::nullopt;
+}
+
+bool ShouldPredictionTriggerQuietUi(
+    permissions::PermissionUmaUtil::PredictionGrantLikelihood likelihood) {
+  return likelihood == VeryUnlikely;
+}
+
 }  // namespace
 
 PredictionBasedPermissionUiSelector::PredictionBasedPermissionUiSelector(
     Profile* profile)
-    : profile_(profile) {}
+    : profile_(profile) {
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kPredictionServiceMockLikelihood)) {
+    auto mock_likelihood = ParsePredictionServiceMockLikelihood(
+        base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+            switches::kPredictionServiceMockLikelihood));
+    if (mock_likelihood.has_value())
+      set_likelihood_override(mock_likelihood.value());
+  }
+}
 
 PredictionBasedPermissionUiSelector::~PredictionBasedPermissionUiSelector() =
     default;
@@ -51,6 +90,18 @@
     return;
   }
 
+  if (likelihood_override_for_testing_.has_value()) {
+    if (ShouldPredictionTriggerQuietUi(
+            likelihood_override_for_testing_.value())) {
+      std::move(callback).Run(
+          Decision(QuietUiReason::kPredictedVeryUnlikelyGrant,
+                   Decision::ShowNoWarning()));
+    } else {
+      std::move(callback).Run(Decision::UseNormalUiAndShowNoWarning());
+    }
+    return;
+  }
+
   last_request_grant_likelihood_ = base::nullopt;
 
   DCHECK(!request_);
@@ -139,8 +190,7 @@
   last_request_grant_likelihood_ =
       response->suggestion(0).grant_likelihood().discretized_likelihood();
 
-  if (response->suggestion(0).grant_likelihood().discretized_likelihood() ==
-      VeryUnlikely) {
+  if (ShouldPredictionTriggerQuietUi(last_request_grant_likelihood_.value())) {
     std::move(callback_).Run(Decision(
         QuietUiReason::kPredictedVeryUnlikelyGrant, Decision::ShowNoWarning()));
     return;
diff --git a/chrome/browser/permissions/prediction_based_permission_ui_selector.h b/chrome/browser/permissions/prediction_based_permission_ui_selector.h
index 20781d3..0059688 100644
--- a/chrome/browser/permissions/prediction_based_permission_ui_selector.h
+++ b/chrome/browser/permissions/prediction_based_permission_ui_selector.h
@@ -23,6 +23,8 @@
 class PredictionBasedPermissionUiSelector
     : public permissions::NotificationPermissionUiSelector {
  public:
+  using PredictionGrantLikelihood =
+      permissions::PermissionUmaUtil::PredictionGrantLikelihood;
   // Constructs an instance in the context of the given |profile|.
   explicit PredictionBasedPermissionUiSelector(Profile* profile);
   ~PredictionBasedPermissionUiSelector() override;
@@ -38,8 +40,8 @@
 
   void Cancel() override;
 
-  base::Optional<permissions::PermissionUmaUtil::PredictionGrantLikelihood>
-  PredictedGrantLikelihoodForUKM() override;
+  base::Optional<PredictionGrantLikelihood> PredictedGrantLikelihoodForUKM()
+      override;
 
  private:
   permissions::PredictionRequestFeatures BuildPredictionRequestFeatures(
@@ -50,10 +52,15 @@
       std::unique_ptr<permissions::GetSuggestionsResponse> response);
   bool IsAllowedToUseAssistedPrompts();
 
+  void set_likelihood_override(PredictionGrantLikelihood mock_likelihood) {
+    likelihood_override_for_testing_ = mock_likelihood;
+  }
+
   Profile* profile_;
   std::unique_ptr<PredictionServiceRequest> request_;
-  base::Optional<permissions::PermissionUmaUtil::PredictionGrantLikelihood>
-      last_request_grant_likelihood_;
+  base::Optional<PredictionGrantLikelihood> last_request_grant_likelihood_;
+
+  base::Optional<PredictionGrantLikelihood> likelihood_override_for_testing_;
 
   DecisionMadeCallback callback_;
 };
diff --git a/chrome/browser/permissions/prediction_based_permission_ui_selector_unittest.cc b/chrome/browser/permissions/prediction_based_permission_ui_selector_unittest.cc
new file mode 100644
index 0000000..a27eb983
--- /dev/null
+++ b/chrome/browser/permissions/prediction_based_permission_ui_selector_unittest.cc
@@ -0,0 +1,92 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/permissions/prediction_based_permission_ui_selector.h"
+
+#include "base/command_line.h"
+#include "base/run_loop.h"
+#include "base/test/bind.h"
+#include "base/test/scoped_command_line.h"
+#include "base/test/scoped_feature_list.h"
+#include "chrome/common/chrome_features.h"
+#include "chrome/test/base/testing_profile.h"
+#include "components/permissions/test/mock_permission_request.h"
+#include "components/safe_browsing/core/common/safe_browsing_prefs.h"
+#include "content/public/test/browser_task_environment.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+using Decision = PredictionBasedPermissionUiSelector::Decision;
+}  // namespace
+
+class PredictionBasedPermissionUiSelectorTest : public testing::Test {
+ public:
+  PredictionBasedPermissionUiSelectorTest()
+      : testing_profile_(std::make_unique<TestingProfile>()) {}
+
+  void SetUp() override {
+    feature_list_.InitWithFeatures(
+        {features::kQuietNotificationPrompts, features::kPermissionPredictions},
+        {});
+
+    safe_browsing::SetSafeBrowsingState(
+        testing_profile_->GetPrefs(),
+        safe_browsing::SafeBrowsingState::ENHANCED_PROTECTION);
+  }
+
+  TestingProfile* profile() { return testing_profile_.get(); }
+
+  Decision SelectUiToUseAndGetDecision(
+      PredictionBasedPermissionUiSelector* selector) {
+    base::Optional<Decision> actual_decision;
+    base::RunLoop run_loop;
+
+    permissions::MockPermissionRequest request(
+        "request", permissions::PermissionRequestType::PERMISSION_NOTIFICATIONS,
+        permissions::PermissionRequestGestureType::GESTURE);
+
+    selector->SelectUiToUse(
+        &request, base::BindLambdaForTesting([&](const Decision& decision) {
+          actual_decision = decision;
+          run_loop.Quit();
+        }));
+    run_loop.Run();
+
+    return actual_decision.value();
+  }
+
+ private:
+  content::BrowserTaskEnvironment task_environment_;
+  base::test::ScopedFeatureList feature_list_;
+  std::unique_ptr<TestingProfile> testing_profile_;
+};
+
+TEST_F(PredictionBasedPermissionUiSelectorTest,
+       CommandLineMocksDecisionCorrectly) {
+  struct {
+    const char* command_line_value;
+    const Decision expected_decision;
+  } const kTests[] = {
+      {"very-unlikely", Decision(PredictionBasedPermissionUiSelector::
+                                     QuietUiReason::kPredictedVeryUnlikelyGrant,
+                                 Decision::ShowNoWarning())},
+      {"unlikely", Decision::UseNormalUiAndShowNoWarning()},
+      {"neutral", Decision::UseNormalUiAndShowNoWarning()},
+      {"likely", Decision::UseNormalUiAndShowNoWarning()},
+      {"very-likely", Decision::UseNormalUiAndShowNoWarning()},
+  };
+
+  for (const auto& test : kTests) {
+    base::test::ScopedCommandLine scoped_command_line;
+    base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+        "prediction-service-mock-likelihood", test.command_line_value);
+
+    PredictionBasedPermissionUiSelector prediction_selector(profile());
+
+    Decision decision = SelectUiToUseAndGetDecision(&prediction_selector);
+
+    EXPECT_EQ(test.expected_decision.quiet_ui_reason, decision.quiet_ui_reason);
+    EXPECT_EQ(test.expected_decision.warning_reason, decision.warning_reason);
+  }
+}
diff --git a/chrome/browser/policy/device_management_service_configuration.cc b/chrome/browser/policy/device_management_service_configuration.cc
index bba36f0..ce90fd83 100644
--- a/chrome/browser/policy/device_management_service_configuration.cc
+++ b/chrome/browser/policy/device_management_service_configuration.cc
@@ -13,6 +13,7 @@
 #include "build/chromeos_buildflags.h"
 #include "components/policy/core/browser/browser_policy_connector.h"
 #include "components/version_info/version_info.h"
+#include "content/public/browser/browser_context.h"
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 #include "chromeos/system/statistics_provider.h"
@@ -21,7 +22,7 @@
 #if defined(OS_WIN) || defined(OS_MAC) || \
     ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_ANDROID))
 #include "chrome/browser/enterprise/connectors/common.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #endif
 
 namespace policy {
@@ -94,13 +95,18 @@
 }
 
 std::string
-DeviceManagementServiceConfiguration::GetReportingConnectorServerUrl() {
+DeviceManagementServiceConfiguration::GetReportingConnectorServerUrl(
+    content::BrowserContext* context) {
 #if defined(OS_WIN) || defined(OS_MAC) || \
     ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_ANDROID))
-  auto settings =
-      enterprise_connectors::ConnectorsManager::GetInstance()
-          ->GetReportingSettings(
-              enterprise_connectors::ReportingConnector::SECURITY_EVENT);
+  auto* service =
+      enterprise_connectors::ConnectorsServiceFactory::GetForBrowserContext(
+          context);
+  if (!service)
+    return std::string();
+
+  auto settings = service->GetReportingSettings(
+      enterprise_connectors::ReportingConnector::SECURITY_EVENT);
   return settings ? settings->reporting_url.spec() : std::string();
 #else
   return std::string();
diff --git a/chrome/browser/policy/device_management_service_configuration.h b/chrome/browser/policy/device_management_service_configuration.h
index 7140a1a1..3aa9304a 100644
--- a/chrome/browser/policy/device_management_service_configuration.h
+++ b/chrome/browser/policy/device_management_service_configuration.h
@@ -11,6 +11,10 @@
 #include "base/macros.h"
 #include "components/policy/core/common/cloud/device_management_service.h"
 
+namespace content {
+class BrowserContext;
+}
+
 namespace policy {
 
 // The real implementation of the device management service configuration that
@@ -29,7 +33,8 @@
   std::string GetPlatformParameter() override;
   std::string GetRealtimeReportingServerUrl() override;
   std::string GetEncryptedReportingServerUrl() override;
-  std::string GetReportingConnectorServerUrl() override;
+  std::string GetReportingConnectorServerUrl(
+      content::BrowserContext* context) override;
 
  private:
   const std::string dm_server_url_;
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 58a0fba..ef712056 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -518,6 +518,13 @@
   registry->RegisterDictionaryPref(kRegisteredSupervisedUserAllowlists);
   registry->RegisterIntegerPref(kSupervisedUsersNextId, 0);
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+
+#if !defined(OS_ANDROID)
+  registry->RegisterListPref(enterprise_connectors::kOnFileAttachedPref);
+  registry->RegisterListPref(enterprise_connectors::kOnFileDownloadedPref);
+  registry->RegisterListPref(enterprise_connectors::kOnBulkDataEntryPref);
+  registry->RegisterListPref(enterprise_connectors::kOnSecurityEventPref);
+#endif  // !defined(OS_ANDROID)
 }
 
 // Register prefs used only for migration (clearing or moving to a new key).
@@ -662,7 +669,6 @@
 
   registry->RegisterIntegerPref(first_run::kTosDialogBehavior, 0);
 #else  // defined(OS_ANDROID)
-  enterprise_connectors::RegisterLocalStatePrefs(registry);
   enterprise_reporting::RegisterLocalStatePrefs(registry);
   gcm::RegisterPrefs(registry);
   IntranetRedirectDetector::RegisterPrefs(registry);
@@ -928,6 +934,7 @@
   captions::CaptionController::RegisterProfilePrefs(registry);
   ChromeAuthenticatorRequestDelegate::RegisterProfilePrefs(registry);
   DevToolsWindow::RegisterProfilePrefs(registry);
+  enterprise_connectors::RegisterProfilePrefs(registry);
   enterprise_reporting::RegisterProfilePrefs(registry);
   extensions::CommandService::RegisterProfilePrefs(registry);
   extensions::TabsCaptureVisibleTabFunction::RegisterProfilePrefs(registry);
@@ -1108,6 +1115,14 @@
   local_state->ClearPref(kRegisteredSupervisedUserAllowlists);
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
+#if !defined(OS_ANDROID)
+  // Added 11/2020
+  local_state->ClearPref(enterprise_connectors::kOnFileAttachedPref);
+  local_state->ClearPref(enterprise_connectors::kOnFileDownloadedPref);
+  local_state->ClearPref(enterprise_connectors::kOnBulkDataEntryPref);
+  local_state->ClearPref(enterprise_connectors::kOnSecurityEventPref);
+#endif  // !defined(OS_ANDROID)
+
   // Please don't delete the following line. It is used by PRESUBMIT.py.
   // END_MIGRATE_OBSOLETE_LOCAL_STATE_PREFS
 }
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
index 196465ed..76841e4 100644
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -1898,7 +1898,8 @@
 
 void ProfileManager::SetNonPersonalProfilePrefs(Profile* profile) {
   PrefService* prefs = profile->GetPrefs();
-  prefs->SetBoolean(prefs::kSigninAllowed, false);
+  if (!profile->IsEphemeralGuestProfile())
+    prefs->SetBoolean(prefs::kSigninAllowed, false);
   prefs->SetBoolean(bookmarks::prefs::kEditBookmarksEnabled, false);
   prefs->SetBoolean(bookmarks::prefs::kShowBookmarkBar, false);
   prefs->ClearPref(DefaultSearchManager::kDefaultSearchProviderDataPrefName);
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/annotation/node_identifier_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/annotation/node_identifier_test.js
index 8e5d160..7da998f 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/annotation/node_identifier_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/annotation/node_identifier_test.js
@@ -16,11 +16,6 @@
     return ChromeVoxState.instance.getCurrentRange().start.node;
   }
 
-  /** @override */
-  setUp() {
-    window.RoleType = chrome.automation.RoleType;
-  }
-
   get basicButtonDoc() {
     return `
       <p>Start here</p>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/annotation/user_annotation_handler_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/annotation/user_annotation_handler_test.js
index f829fedc..1d7997a 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/annotation/user_annotation_handler_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/annotation/user_annotation_handler_test.js
@@ -49,12 +49,6 @@
     return ChromeVoxState.instance.getCurrentRange().start.node;
   }
 
-  /** @override */
-  setUp() {
-    window.doCmd = this.doCmd;
-    window.RoleType = chrome.automation.RoleType;
-  }
-
   // Test documents //
   get basicButtonDoc() {
     return `
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js
index a65afaf8..ff6d503 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js
@@ -13,9 +13,7 @@
 ChromeVoxBackgroundTest = class extends ChromeVoxNextE2ETest {
   /** @override */
   setUp() {
-    window.EventType = chrome.automation.EventType;
-    window.RoleType = chrome.automation.RoleType;
-    window.doCmd = this.doCmd;
+    super.setUp();
     window.doGesture = this.doGesture;
     window.simulateHitTestResult = this.simulateHitTestResult;
     window.press = this.press;
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/cursors_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/cursors_test.js
index 356943e..1bb4c31 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/cursors_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/cursors_test.js
@@ -23,6 +23,7 @@
 
   /** @override */
   setUp() {
+    super.setUp();
     // Various aliases.
     window.BACKWARD = constants.Dir.BACKWARD;
     window.FORWARD = constants.Dir.FORWARD;
@@ -32,7 +33,6 @@
     window.NODE = cursors.Unit.NODE;
     window.BOUND = cursors.Movement.BOUND;
     window.DIRECTIONAL = cursors.Movement.DIRECTIONAL;
-    window.RoleType = chrome.automation.RoleType;
   }
 
   /**
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/download_handler_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/download_handler_test.js
index b1297d4..a3880b5 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/download_handler_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/download_handler_test.js
@@ -34,6 +34,7 @@
 
   /** @override */
   setUp() {
+    super.setUp();
     window.simulateEvent = this.simulateEvent.bind(this);
   }
 
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing_test.js
index d064711..743a534 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing_test.js
@@ -13,7 +13,6 @@
 ChromeVoxEditingTest = class extends ChromeVoxNextE2ETest {
   constructor() {
     super();
-    window.RoleType = chrome.automation.RoleType;
   }
 
   press(keyCode, modifiers) {
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/keyboard_handler_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/keyboard_handler_test.js
index 2234668d..b28ac38 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/keyboard_handler_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/keyboard_handler_test.js
@@ -11,6 +11,7 @@
 ChromeVoxBackgroundKeyboardHandlerTest = class extends ChromeVoxNextE2ETest {
   /** @override */
   setUp() {
+    super.setUp();
     window.keyboardHandler = new BackgroundKeyboardHandler();
   }
 };
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/live_regions_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/live_regions_test.js
index 2567097..e64436f 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/live_regions_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/live_regions_test.js
@@ -11,12 +11,6 @@
  * Test fixture for Live Regions.
  */
 ChromeVoxLiveRegionsTest = class extends ChromeVoxNextE2ETest {
-  /** @override */
-  setUp() {
-    window.RoleType = chrome.automation.RoleType;
-    window.TreeChangeType = chrome.automation.TreeChangeType;
-  }
-
   /**
    * Simulates work done when users interact using keyboard, braille, or
    * touch.
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/locale_output_helper_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/locale_output_helper_test.js
index f4c4ee3..744a850 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/locale_output_helper_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/locale_output_helper_test.js
@@ -31,7 +31,7 @@
 
   /** @override */
   setUp() {
-    window.doCmd = this.doCmd;
+    super.setUp();
     // Mock this api to return a predefined set of voices.
     chrome.tts.getVoices = function(callback) {
       callback([
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output_test.js
index 0fdc3b2..7b7e560 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output_test.js
@@ -99,8 +99,8 @@
 ChromeVoxOutputE2ETest = class extends ChromeVoxNextE2ETest {
   /** @override */
   setUp() {
+    super.setUp();
     window.Dir = AutomationUtil.Dir;
-    window.RoleType = chrome.automation.RoleType;
     this.forceContextualLastOutput();
   }
 };
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/portals_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/portals_test.js
index 06fc246..ee8d617 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/portals_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/portals_test.js
@@ -10,13 +10,6 @@
  */
 ChromeVoxPortalsTest = class extends ChromeVoxNextE2ETest {
   /** @override */
-  setUp() {
-    window.EventType = chrome.automation.EventType;
-    window.RoleType = chrome.automation.RoleType;
-    window.doCmd = this.doCmd;
-  }
-
-  /** @override */
   testGenCppIncludes() {
     super.testGenCppIncludes();
     GEN(`#include "third_party/blink/public/common/features.h"`);
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/recovery_strategy_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/recovery_strategy_test.js
index 45c6cd9..e4e98dff 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/recovery_strategy_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/recovery_strategy_test.js
@@ -13,7 +13,6 @@
 ChromeVoxRecoveryStrategyTest = class extends ChromeVoxNextE2ETest {
   constructor() {
     super();
-    window.RoleType = chrome.automation.RoleType;
   }
 };
 
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/settings_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/settings_test.js
index 1d8dbf5..470ed2d 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/settings_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/settings_test.js
@@ -12,11 +12,6 @@
  */
 ChromeVoxSettingsPagesTest = class extends ChromeVoxNextE2ETest {
   /** @override */
-  setUp() {
-    window.doCmd = this.doCmd;
-  }
-
-  /** @override */
   testGenCppIncludes() {
     super.testGenCppIncludes();
     GEN(`
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/smart_sticky_mode_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/smart_sticky_mode_test.js
index f79b92c..acadf6f 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/smart_sticky_mode_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/smart_sticky_mode_test.js
@@ -11,7 +11,7 @@
 ChromeVoxSmartStickyModeTest = class extends ChromeVoxNextE2ETest {
   /** @override */
   setUp() {
-    window.doCmd = this.doCmd;
+    super.setUp();
     this.ssm_ = new SmartStickyMode();
     // Deregister from actual range changes.
     ChromeVoxState.removeObserver(this.ssm_);
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel_test_base.js b/chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel_test_base.js
index feecaea..ff4fef9 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel_test_base.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/panel/panel_test_base.js
@@ -9,11 +9,6 @@
  * Base class for Panel tests.
  */
 ChromeVoxPanelTestBase = class extends ChromeVoxNextE2ETest {
-  /** @override */
-  setUp() {
-    window.doCmd = this.doCmd;
-  }
-
   getPanelWindow() {
     let panelWindow = null;
     while (!panelWindow) {
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/testing/chromevox_next_e2e_test_base.js b/chrome/browser/resources/chromeos/accessibility/chromevox/testing/chromevox_next_e2e_test_base.js
index eb2a6ba..9da31e6b 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/testing/chromevox_next_e2e_test_base.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/testing/chromevox_next_e2e_test_base.js
@@ -35,6 +35,14 @@
     }
   }
 
+  /** @override */
+  setUp() {
+    window.EventType = chrome.automation.EventType;
+    window.RoleType = chrome.automation.RoleType;
+    window.TreeChangeType = chrome.automation.TreeChangeType;
+    window.doCmd = this.doCmd;
+  }
+
   /** @return {!MockFeedback} */
   createMockFeedback() {
     const mockFeedback =
diff --git a/chrome/browser/resources/chromeos/accessibility/common/automation_util.js b/chrome/browser/resources/chromeos/accessibility/common/automation_util.js
index 175c65b..881be4b4 100644
--- a/chrome/browser/resources/chromeos/accessibility/common/automation_util.js
+++ b/chrome/browser/resources/chromeos/accessibility/common/automation_util.js
@@ -107,32 +107,47 @@
    * @return {AutomationNode}
    */
   static findNextNode(cur, dir, pred, opt_restrictions) {
-    const restrictions = {};
-    opt_restrictions = opt_restrictions || {
-      leaf: undefined,
-      root: undefined,
-      visit: undefined,
-      skipInitialSubtree: !AutomationPredicate.container(cur) && pred(cur)
-    };
-
-    restrictions.root = opt_restrictions.root || AutomationPredicate.root;
-    restrictions.leaf = opt_restrictions.leaf || function(node) {
-      // Treat nodes matched by |pred| as leaves except for containers.
-      return !AutomationPredicate.container(node) && pred(node);
-    };
-
-    restrictions.skipInitialSubtree = opt_restrictions.skipInitialSubtree;
-    restrictions.skipInitialAncestry = opt_restrictions.skipInitialAncestry;
-
-    restrictions.visit = function(node) {
-      return pred(node) && !AutomationPredicate.shouldIgnoreNode(node);
-    };
-
-    const walker = new AutomationTreeWalker(cur, dir, restrictions);
+    const walker = createWalker(cur, dir, pred, opt_restrictions);
     return walker.next().node;
   }
 
   /**
+   * Finds all nodes in the given direction in depth first order.
+   *
+   * Let D be the dfs linearization of |cur.root|. Then, let F be the list after
+   * applying |pred| as a filter to D. This method will return the directed next
+   * node of |cur| in F.
+   * The restrictions option will further filter F. For example,
+   * |skipInitialSubtree| will remove any |pred| matches in the subtree of |cur|
+   * from F.
+   * @param {!AutomationNode} cur Node to begin the search
+   *     from.
+   * @param {Dir} dir
+   * @param {AutomationPredicate.Unary} pred A predicate to apply
+   *     to a candidate node.
+   * @param {AutomationTreeWalkerRestriction=} opt_restrictions |leaf|, |root|,
+   *     |skipInitialAncestry|, and |skipInitialSubtree| are valid restrictions
+   *     used when finding the next node.
+   *     By default:
+   *        the root predicate ges set to |AutomationPredicate.root|.
+   *        |skipInitialSubtree| is false if |cur| is a container or matches
+   *        |pred|. This alleviates the caller from syncing forwards.
+   *        Leaves are nodes matched by |prred| which are not also containers.
+   *        This takes care of syncing backwards.
+   * @return {!Array<!AutomationNode>}
+   */
+  static findAllNodes(cur, dir, pred, opt_restrictions) {
+    const walker = createWalker(cur, dir, pred, opt_restrictions);
+    const nodes = [];
+    let currentNode = walker.next().node;
+    while (currentNode) {
+      nodes.push(currentNode);
+      currentNode = walker.next().node;
+    }
+    return nodes;
+  }
+
+  /**
    * Given nodes a_1, ..., a_n starting at |cur| in pre order traversal, apply
    * |pred| to a_i and a_(i - 1) until |pred| is satisfied.  Returns a_(i - 1)
    * or a_i (depending on opt_before) or null if no match was found.
@@ -443,4 +458,42 @@
     return null;
   }
 };
+
+/**
+ * @param {!AutomationNode} cur Node to begin the search
+ *     from.
+ * @param {Dir} dir
+ * @param {AutomationPredicate.Unary} pred A predicate to apply
+ *     to a candidate node.
+ * @param {AutomationTreeWalkerRestriction=} opt_restrictions |leaf|, |root|,
+ *     |skipInitialAncestry|, and |skipInitialSubtree| are valid restrictions
+ *     used when finding the next node.
+ * @return {!AutomationTreeWalker} Instance of tree walker initialized with
+ *    given parameters.
+ */
+function createWalker(cur, dir, pred, opt_restrictions) {
+  const restrictions = {};
+  opt_restrictions = opt_restrictions || {
+    leaf: undefined,
+    root: undefined,
+    visit: undefined,
+    skipInitialSubtree: !AutomationPredicate.container(cur) && pred(cur)
+  };
+
+  restrictions.root = opt_restrictions.root || AutomationPredicate.root;
+  restrictions.leaf = opt_restrictions.leaf || function(node) {
+    // Treat nodes matched by |pred| as leaves except for containers.
+    return !AutomationPredicate.container(node) && pred(node);
+  };
+
+  restrictions.skipInitialSubtree = opt_restrictions.skipInitialSubtree;
+  restrictions.skipInitialAncestry = opt_restrictions.skipInitialAncestry;
+
+  restrictions.visit = function(node) {
+    return pred(node) && !AutomationPredicate.shouldIgnoreNode(node);
+  };
+
+  return new AutomationTreeWalker(cur, dir, restrictions);
+}
+
 });  // goog.scope
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_utils.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_utils.js
index 52bdf6c..242af1a 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_utils.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_utils.js
@@ -466,37 +466,82 @@
    *     within the paragraph adjacent to the given node.
    */
   static getNextParagraph(node, direction) {
+    const blockParent = ParagraphUtils.getFirstBlockAncestor(node);
+    if (blockParent === null) {
+      return [];
+    }
     let nextNode = AutomationUtil.findNextNode(
-        node, direction, AutomationPredicate.leafWithText,
-        {skipInitialSubtree: true});
-    while (
-        nextNode !== null &&
-        (NodeUtils.shouldIgnoreNode(nextNode, /* includeOffscreen= */ true) ||
-         NodeUtils.isNotSelectable(nextNode) ||
-         ParagraphUtils.inSameParagraph(node, nextNode))) {
+        node, direction, NodeUtils.isValidLeafNode, {skipInitialSubtree: true});
+    while (nextNode !== null &&
+           ParagraphUtils.getFirstBlockAncestor(nextNode) === blockParent) {
       nextNode = AutomationUtil.findNextNode(
-          nextNode, direction, AutomationPredicate.leafWithText);
+          nextNode, direction, NodeUtils.isValidLeafNode);
     }
     if (nextNode === null) {
       return [];
     }
 
     // Now construct an array with all leaf nodes within the block.
-    const nodes = [];
-    do {
-      if (!NodeUtils.shouldIgnoreNode(nextNode, /* includeOffscreen= */ true) &&
-          !NodeUtils.isNotSelectable(nextNode)) {
-        nodes.push(nextNode);
-      }
-      nextNode = AutomationUtil.findNextNode(
-          nextNode, direction, AutomationPredicate.leafWithText);
-    } while (nextNode !== null &&
-             ParagraphUtils.inSameParagraph(nodes[0], nextNode));
+    const nodes = NodeUtils.getNextNodesInParagraph(nextNode, direction);
+    if (direction === constants.Dir.FORWARD) {
+      nodes.unshift(nextNode);
+    } else {
+      nodes.push(nextNode);
+    }
+    return nodes;
+  }
+
+  /**
+   * @param {!AutomationNode} node Leaf node.
+   * @param {constants.Dir} direction
+   * @return {!Array<!AutomationNode>} The selectable leaf nodes in the given
+   *     direction from the given node, until a paragraph break is reached.
+   */
+  static getNextNodesInParagraph(node, direction) {
+    const blockParent = ParagraphUtils.getFirstBlockAncestor(node);
+    if (blockParent === null) {
+      return [];
+    }
+    const nodes = AutomationUtil.findAllNodes(
+        node, direction,
+        /* pred= */ NodeUtils.isValidLeafNode, /* opt_restrictions= */ {
+          root: (node) =>
+              node === blockParent,  // Only traverse within the block
+        });
 
     // Reverse the nodes if we were traversing backward, so the returned result
     // is in natural DOM order.
     return direction === constants.Dir.BACKWARD ? nodes.reverse() : nodes;
   }
+
+  /**
+   * @param {!AutomationNode} node Leaf node.
+   * @return {!Array<!AutomationNode>} All selectable leaf nodes in the
+   *     paragraph that the given leaf node belongs to.
+   */
+  static getAllNodesInParagraph(node) {
+    const blockParent = ParagraphUtils.getFirstBlockAncestor(node);
+    if (blockParent === null) {
+      return [];
+    }
+    return AutomationUtil.findAllNodes(
+        blockParent, constants.Dir.FORWARD,
+        /* pred= */ NodeUtils.isValidLeafNode, /* opt_restrictions= */ {
+          root: (node) =>
+              node === blockParent,  // Only traverse within the block
+        });
+  }
+
+  /**
+   * @param {!AutomationNode} node
+   * @return {boolean} Whether the given node is a valid leaf node that is can
+   *     be ingested by Select-to-speak.
+   */
+  static isValidLeafNode(node) {
+    return AutomationPredicate.leafWithText(node) &&
+        !NodeUtils.shouldIgnoreNode(node, /* includeOffscreen= */ true) &&
+        !NodeUtils.isNotSelectable(node);
+  }
 }
 
 /**
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_utils_unittest.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_utils_unittest.js
index a44f763..52efae3 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_utils_unittest.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_utils_unittest.js
@@ -551,6 +551,90 @@
   assertEquals(result.length, 0);
 });
 
+TEST_F('SelectToSpeakNodeUtilsUnitTest', 'getNextNodesInParagraph', function() {
+  const root = createMockNode({role: 'rootWebArea'});
+  createMockNode({role: 'paragraph', display: 'block', parent: root, root});
+  const paragraph2 =
+      createMockNode({role: 'paragraph', display: 'block', parent: root, root});
+  const text1 = createMockNode(
+      {role: 'staticText', parent: paragraph2, root, name: 'Line 1'});
+  const text2 = createMockNode(
+      {role: 'staticText', parent: paragraph2, root, name: 'Line 2'});
+  const text3 = createMockNode(
+      {role: 'staticText', parent: paragraph2, root, name: 'Line 3'});
+  createMockNode({role: 'paragraph', display: 'block', parent: root, root});
+
+  let result = NodeUtils.getNextNodesInParagraph(text2, constants.Dir.FORWARD);
+  assertEquals(result.length, 1);
+  assertEquals(result[0], text3);
+
+  result = NodeUtils.getNextNodesInParagraph(text1, constants.Dir.FORWARD);
+  assertEquals(result.length, 2);
+  assertEquals(result[0], text2);
+  assertEquals(result[1], text3);
+
+  result = NodeUtils.getNextNodesInParagraph(text3, constants.Dir.FORWARD);
+  assertEquals(result.length, 0);
+
+  result = NodeUtils.getNextNodesInParagraph(text3, constants.Dir.BACKWARD);
+  assertEquals(result.length, 2);
+  assertEquals(result[0], text1);
+  assertEquals(result[1], text2);
+
+  result = NodeUtils.getNextNodesInParagraph(text2, constants.Dir.BACKWARD);
+  assertEquals(result.length, 1);
+  assertEquals(result[0], text1);
+
+  result = NodeUtils.getNextNodesInParagraph(text1, constants.Dir.BACKWARD);
+  assertEquals(result.length, 0);
+});
+
+TEST_F('SelectToSpeakNodeUtilsUnitTest', 'getAllNodesInParagraph', function() {
+  const root = createMockNode({role: 'rootWebArea'});
+  const paragraph1 =
+      createMockNode({role: 'paragraph', display: 'block', parent: root, root});
+  const text1 = createMockNode(
+      {role: 'staticText', parent: paragraph1, root, name: 'Line 1'});
+  const text2 = createMockNode(
+      {role: 'staticText', parent: paragraph1, root, name: 'Line 2'});
+  const paragraph2 =
+      createMockNode({role: 'paragraph', display: 'block', parent: root, root});
+  const text3 = createMockNode(
+      {role: 'staticText', parent: paragraph2, root, name: 'Line 3'});
+  const text4 = createMockNode(
+      {role: 'staticText', parent: paragraph2, root, name: 'Line 4'});
+  const text5 = createMockNode(
+      {role: 'staticText', parent: paragraph2, root, name: 'Line 5'});
+
+  let result = NodeUtils.getAllNodesInParagraph(text1);
+  assertEquals(result.length, 2);
+  assertEquals(result[0], text1);
+  assertEquals(result[1], text2);
+
+  result = NodeUtils.getAllNodesInParagraph(text2);
+  assertEquals(result.length, 2);
+  assertEquals(result[0], text1);
+  assertEquals(result[1], text2);
+
+  result = NodeUtils.getAllNodesInParagraph(text3);
+  assertEquals(result.length, 3);
+  assertEquals(result[0], text3);
+  assertEquals(result[1], text4);
+  assertEquals(result[2], text5);
+
+  result = NodeUtils.getAllNodesInParagraph(text4);
+  assertEquals(result.length, 3);
+  assertEquals(result[0], text3);
+  assertEquals(result[1], text4);
+  assertEquals(result[2], text5);
+
+  result = NodeUtils.getAllNodesInParagraph(text5);
+  assertEquals(result.length, 3);
+  assertEquals(result[0], text3);
+  assertEquals(result[1], text4);
+  assertEquals(result[2], text5);
+});
+
 /**
  * Creates a AutomationNode-like object.
  * @param {!Object} properties
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak.js
index fbca576..50666acf 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak.js
@@ -277,6 +277,15 @@
         // more items are being read.
         return;
       }
+      if (this.navigationControlFlag_ && nodes.length === 1 &&
+          nodes[0].role === RoleType.INLINE_TEXT_BOX &&
+          (rect.width === 0 || rect.height === 0)) {
+        // If this is a single click (zero sized selection) on a text node, then
+        // expand to entire paragraph.
+        // TODO(crbug.com/1143823): Navigate to the sentence instead of whole
+        // block.
+        nodes = NodeUtils.getAllNodesInParagraph(nodes[0]);
+      }
       this.startSpeechQueue_(nodes, {clearFocusRing: true});
       MetricsUtils.recordStartEvent(
           MetricsUtils.StartSpeechMethod.MOUSE, this.prefsManager_);
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_e2e_test_base.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_e2e_test_base.js
index 66deb67..840c09f2 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_e2e_test_base.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_e2e_test_base.js
@@ -75,4 +75,17 @@
         {keyCode: SelectToSpeak.READ_SELECTION_KEY_CODE});
     selectToSpeak.fireMockKeyUpEvent({keyCode: SelectToSpeak.SEARCH_KEY_CODE});
   }
+
+  /**
+   * Triggers speech using the search key and clicking with the mouse.
+   * @param {Object} downEvent The mouse-down event.
+   * @param {Object} upEvent The mouse-up event.
+   */
+  triggerReadMouseSelectedText(downEvent, upEvent) {
+    selectToSpeak.fireMockKeyDownEvent(
+        {keyCode: SelectToSpeak.SEARCH_KEY_CODE});
+    selectToSpeak.fireMockMouseDownEvent(downEvent);
+    selectToSpeak.fireMockMouseUpEvent(upEvent);
+    selectToSpeak.fireMockKeyUpEvent({keyCode: SelectToSpeak.SEARCH_KEY_CODE});
+  }
 };
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_mouse_selection_test.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_mouse_selection_test.js
index 94aaf89..25937af 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_mouse_selection_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_mouse_selection_test.js
@@ -16,19 +16,6 @@
     chrome.tts = this.mockTts;
   }
 
-  /**
-   * Triggers speech using the search key and clicking with the mouse.
-   * @param {Object} downEvent The mouse-down event.
-   * @param {Object} upEvent The mouse-up event.
-   */
-  selectRangeForSpeech(downEvent, upEvent) {
-    selectToSpeak.fireMockKeyDownEvent(
-        {keyCode: SelectToSpeak.SEARCH_KEY_CODE});
-    selectToSpeak.fireMockMouseDownEvent(downEvent);
-    selectToSpeak.fireMockMouseUpEvent(upEvent);
-    selectToSpeak.fireMockKeyUpEvent({keyCode: SelectToSpeak.SEARCH_KEY_CODE});
-  }
-
   tapTrayButton(desktop, callback) {
     const button = desktop.find({
       roleType: 'button',
@@ -64,7 +51,7 @@
           screenX: textNode.location.left + 1,
           screenY: textNode.location.top + 1
         };
-        this.selectRangeForSpeech(event, event);
+        this.triggerReadMouseSelectedText(event, event);
       });
 });
 
@@ -100,7 +87,7 @@
               screenX: lastNode.location.left + lastNode.location.width,
               screenY: lastNode.location.top + lastNode.location.height
             };
-            this.selectRangeForSpeech(downEvent, upEvent);
+            this.triggerReadMouseSelectedText(downEvent, upEvent);
           });
     });
 
@@ -134,7 +121,7 @@
               screenX: lastNode.location.left + lastNode.location.width,
               screenY: lastNode.location.top + lastNode.location.height
             };
-            this.selectRangeForSpeech(downEvent, upEvent);
+            this.triggerReadMouseSelectedText(downEvent, upEvent);
           });
     });
 
@@ -227,7 +214,7 @@
               screenX: textNode.location.left + 1,
               screenY: textNode.location.top + 1
             };
-            this.selectRangeForSpeech(event, event);
+            this.triggerReadMouseSelectedText(event, event);
           });
     });
 
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_navigation_control_test.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_navigation_control_test.js
index eda50cf..8e7b468 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_navigation_control_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/select_to_speak_navigation_control_test.js
@@ -99,3 +99,45 @@
                 this.mockTts.pendingUtterances()[0], 'Paragraph 1');
           });
     });
+
+TEST_F(
+    'SelectToSpeakNavigationControlTest', 'ReadsParagraphOnClick', function() {
+      const bodyHtml = `
+      <p id="p1">Sentence <span>one</span>. Sentence two.</p>
+      <p id="p2">Paragraph <span>two</span></p>'
+    `;
+      this.runWithLoadedTree(bodyHtml, (root) => {
+        this.mockTts.setOnSpeechCallbacks([this.newCallback((utterance) => {
+          // Speech for first click.
+          assertTrue(this.mockTts.currentlySpeaking());
+          assertEquals(this.mockTts.pendingUtterances().length, 1);
+          this.assertEqualsCollapseWhitespace(
+              this.mockTts.pendingUtterances()[0],
+              'Sentence one . Sentence two.');
+
+          this.mockTts.setOnSpeechCallbacks([this.newCallback((utterance) => {
+            // Speech for second click.
+            assertTrue(this.mockTts.currentlySpeaking());
+            assertEquals(this.mockTts.pendingUtterances().length, 1);
+            this.assertEqualsCollapseWhitespace(
+                this.mockTts.pendingUtterances()[0], 'Paragraph two');
+          })]);
+
+          // Click on node in second paragraph.
+          const textNode2 = this.findTextNode(root, 'two');
+          const mouseEvent2 = {
+            screenX: textNode2.location.left + 1,
+            screenY: textNode2.location.top + 1
+          };
+          this.triggerReadMouseSelectedText(mouseEvent2, mouseEvent2);
+        })]);
+
+        // Click on node in first paragraph.
+        const textNode1 = this.findTextNode(root, 'one');
+        const event1 = {
+          screenX: textNode1.location.left + 1,
+          screenY: textNode1.location.top + 1
+        };
+        this.triggerReadMouseSelectedText(event1, event1);
+      });
+    });
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_en-GB.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_en-GB.xtb
index 4eb5321..d5036c17 100644
--- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_en-GB.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_en-GB.xtb
@@ -195,7 +195,7 @@
 <translation id="2419852971200420169">Description list</translation>
 <translation id="2421113964388408478">Deletion</translation>
 <translation id="2422937916923936891">Menu item tick box</translation>
-<translation id="2428534162001909979">Command Menus</translation>
+<translation id="2428534162001909979">Command menus</translation>
 <translation id="242998846562331953">Subtitle</translation>
 <translation id="2435422727584637732">Dodger Blue</translation>
 <translation id="2450814015951372393">Tick box</translation>
diff --git a/chrome/browser/resources/chromeos/login/BUILD.gn b/chrome/browser/resources/chromeos/login/BUILD.gn
index d3d4e10a..71bef9a 100644
--- a/chrome/browser/resources/chromeos/login/BUILD.gn
+++ b/chrome/browser/resources/chromeos/login/BUILD.gn
@@ -69,10 +69,12 @@
     "components:fake_oobe",
     "components:login_screen_behavior",
     "components:oobe_dialog_host_behavior",
+    "components:oobe_modal_dialog",
     "components/oobe_dialog:oobe_dialog",
     "components/oobe_i18n_behavior:oobe_i18n_behavior",
     "//ui/webui/resources/js/cr/ui:dialogs",
   ]
+  externs_list = [ "$externs_path/tts.js" ]
 }
 
 js_library("offline_ad_login") {
@@ -116,7 +118,7 @@
 js_library("arc_terms_of_service") {
   deps = [
     "components:oobe_dialog_host_behavior",
-    "components:oobe_help_dialog",
+    "components:oobe_modal_dialog",
     "components/oobe_dialog:oobe_dialog",
     "components/oobe_i18n_behavior:oobe_i18n_behavior",
   ]
@@ -257,6 +259,7 @@
     ":web_view_helper",
     "components:login_screen_behavior",
     "components:oobe_dialog_host_behavior",
+    "components:oobe_modal_dialog",
     "components/oobe_dialog:oobe_dialog",
     "components/oobe_i18n_behavior:oobe_i18n_behavior",
   ]
@@ -277,6 +280,7 @@
 js_library("oobe_reset") {
   deps = [
     "components:oobe_dialog_host_behavior",
+    "components:oobe_modal_dialog",
     "components/oobe_dialog:oobe_dialog",
     "components/oobe_i18n_behavior:oobe_i18n_behavior",
   ]
@@ -350,6 +354,7 @@
     "components:login_screen_behavior",
     "components:multi_step_behavior",
     "components:oobe_dialog_host_behavior",
+    "components:oobe_modal_dialog",
     "components/oobe_dialog:oobe_dialog",
     "components/oobe_i18n_behavior:oobe_i18n_behavior",
   ]
@@ -358,6 +363,7 @@
 js_library("saml_confirm_password") {
   deps = [
     "components:oobe_dialog_host_behavior",
+    "components:oobe_modal_dialog",
     "components/oobe_dialog:oobe_dialog",
     "components/oobe_i18n_behavior:oobe_i18n_behavior",
   ]
@@ -376,6 +382,7 @@
     "components:login_screen_behavior",
     "components:multi_step_behavior",
     "components:oobe_dialog_host_behavior",
+    "components:oobe_modal_dialog",
     "components/oobe_dialog:oobe_dialog",
     "components/oobe_i18n_behavior:oobe_i18n_behavior",
   ]
diff --git a/chrome/browser/resources/chromeos/login/arc_terms_of_service.html b/chrome/browser/resources/chromeos/login/arc_terms_of_service.html
index 280494c..f5553af3f 100644
--- a/chrome/browser/resources/chromeos/login/arc_terms_of_service.html
+++ b/chrome/browser/resources/chromeos/login/arc_terms_of_service.html
@@ -142,7 +142,7 @@
             text-key="[[acceptTextKey]]"></oobe-text-button>
       </div>
     </oobe-dialog>
-    <oobe-help-dialog id="arcMetricsPopup" on-close="onOverlayClosed_"
+    <oobe-modal-dialog id="arcMetricsPopup" on-close="onOverlayClosed_"
         title-key="arcLearnMoreStatisticsTitle">
       <div slot="content">
         <p>[[i18nDynamic(locale, 'arcLearnMoreStatisticsP1')]]</p>
@@ -150,8 +150,8 @@
         <p>[[i18nDynamic(locale, 'arcLearnMoreStatisticsP3')]]</p>
         <p>[[i18nDynamic(locale, 'arcLearnMoreStatisticsP4')]]</p>
       </div>
-    </oobe-help-dialog>
-    <oobe-help-dialog id="arcBackupRestorePopup" on-close="onOverlayClosed_"
+    </oobe-modal-dialog>
+    <oobe-modal-dialog id="arcBackupRestorePopup" on-close="onOverlayClosed_"
         title-key="arcLearnMoreBackupAndRestoreTitle">
       <div slot="content">
         <p>[[i18nDynamic(locale, 'arcLearnMoreBackupAndRestoreP1')]]</p>
@@ -160,8 +160,8 @@
         <p>[[i18nDynamic(locale, 'arcLearnMoreBackupAndRestoreP4')]]</p>
         <p>[[i18nDynamic(locale, 'arcLearnMoreBackupAndRestoreP5')]]</p>
       </div>
-    </oobe-help-dialog>
-    <oobe-help-dialog id="arcBackupRestoreChildPopup"
+    </oobe-modal-dialog>
+    <oobe-modal-dialog id="arcBackupRestoreChildPopup"
         on-close="onOverlayClosed_"
         title-key="arcLearnMoreBackupAndRestoreTitle">
       <div slot="content">
@@ -169,22 +169,22 @@
         <p>[[i18nDynamic(locale, 'arcLearnMoreBackupAndRestoreChildP2')]]</p>
         <p>[[i18nDynamic(locale, 'arcLearnMoreBackupAndRestoreChildP3')]]</p>
       </div>
-    </oobe-help-dialog>
-    <oobe-help-dialog id="arcLocationServicePopup"
+    </oobe-modal-dialog>
+    <oobe-modal-dialog id="arcLocationServicePopup"
         on-close="onOverlayClosed_"
         title-key="arcLearnMoreLocationServiceTitle">
       <div slot="content">
         <p>[[i18nDynamic(locale, 'arcLearnMoreLocationServiceP1')]]</p>
         <p>[[i18nDynamic(locale, 'arcLearnMoreLocationServiceP2')]]</p>
       </div>
-    </oobe-help-dialog>
-    <oobe-help-dialog id="arcPaiPopup" on-close="onOverlayClosed_"
+    </oobe-modal-dialog>
+    <oobe-modal-dialog id="arcPaiPopup" on-close="onOverlayClosed_"
         title-key="arcLearnMorePaiServiceTitle">
       <div slot="content">
         <p>[[i18nDynamic(locale, 'arcLearnMorePaiService')]]</p>
       </div>
-    </oobe-help-dialog>
-    <oobe-help-dialog id="arcTosOverlayPrivacyPolicy"
+    </oobe-modal-dialog>
+    <oobe-modal-dialog id="arcTosOverlayPrivacyPolicy"
         on-close="onOverlayClosed_">
       <div slot="content" id = "arcTosOverlayWebviewContainer">
         <webview id="arcTosOverlayWebview" hidden="[[overlayLoading_]]"
@@ -194,6 +194,6 @@
             hidden="[[!overlayLoading_]]" style="height: 100%;">
         </throbber-notice>
       </div>
-    </oobe-help-dialog>
+    </oobe-modal-dialog>
   </template>
 </dom-module>
diff --git a/chrome/browser/resources/chromeos/login/components/BUILD.gn b/chrome/browser/resources/chromeos/login/components/BUILD.gn
index e9d3d4c..710e63e 100644
--- a/chrome/browser/resources/chromeos/login/components/BUILD.gn
+++ b/chrome/browser/resources/chromeos/login/components/BUILD.gn
@@ -25,7 +25,7 @@
     ":multi_step_behavior",
     ":oobe_buttons",
     ":oobe_dialog_host_behavior",
-    ":oobe_help_dialog",
+    ":oobe_modal_dialog",
     ":oobe_types",
   ]
 }
@@ -64,7 +64,7 @@
 js_library("oobe_dialog_host_behavior") {
 }
 
-js_library("oobe_help_dialog") {
+js_library("oobe_modal_dialog") {
   deps = [ "oobe_i18n_behavior:oobe_i18n_behavior" ]
 }
 
diff --git a/chrome/browser/resources/chromeos/login/components/oobe_fonts.css b/chrome/browser/resources/chromeos/login/components/oobe_fonts.css
index 163e728..c3b8eb64 100644
--- a/chrome/browser/resources/chromeos/login/components/oobe_fonts.css
+++ b/chrome/browser/resources/chromeos/login/components/oobe_fonts.css
@@ -8,12 +8,12 @@
   --oobe-header-font-family: "Google Sans", Roboto, sans-serif;
 
   --oobe-header-font-size: 28px;
-  --oobe-help-dialog-header-font-size: 15px;
+  --oobe-modal-dialog-header-font-size: 15px;
   --oobe-default-font-size: 13px;
 
   --oobe-default-font-weight: 400; /* regular */
   --oobe-header-font-weight: 400; /* regular */
-  --oobe-help-dialog-header-font-weight: 500; /* medium */
+  --oobe-modal-dialog-header-font-weight: 500; /* medium */
 
   --oobe-header-text-color: var(--google-grey-900);
   --oobe-subheader-text-color: var(--google-grey-700);
@@ -31,12 +31,12 @@
       font-weight: var(--oobe-default-font-weight);
   };
 
-  /* OOBE Help Dialog
+  /* OOBE Modal Dialog
   */
-  --oobe-help-dialog-header-font: {
+  --oobe-modal-dialog-header-font: {
     font-family: var(--oobe-default-font-family);
-    font-size: var(--oobe-help-dialog-header-font-size);
-    font-weight: var(--oobe-help-dialog-header-font-weight);
+    font-size: var(--oobe-modal-dialog-header-font-size);
+    font-weight: var(--oobe-modal-dialog-header-font-weight);
   };
 }
 
diff --git a/chrome/browser/resources/chromeos/login/components/oobe_help_dialog.html b/chrome/browser/resources/chromeos/login/components/oobe_modal_dialog.html
similarity index 74%
rename from chrome/browser/resources/chromeos/login/components/oobe_help_dialog.html
rename to chrome/browser/resources/chromeos/login/components/oobe_modal_dialog.html
index 44f70af..f8582fb 100644
--- a/chrome/browser/resources/chromeos/login/components/oobe_help_dialog.html
+++ b/chrome/browser/resources/chromeos/login/components/oobe_modal_dialog.html
@@ -11,9 +11,9 @@
 <link rel="import" href="/components/oobe_i18n_behavior.html">
 
 <!--
-OOBE Help Dialog
+OOBE Modal Dialog
 
-Implements the 'OOBE Help Dialog' according to MD specs.
+Implements the 'OOBE Modal Dialog' according to MD specs.
 
 The dialog provides two properties that can be set directly from HTML.
   - titleKey - ID of the localized string to be used for the title.
@@ -26,31 +26,37 @@
   a default button with the text 'Close' will be shown. Users might want to
   trigger some action on their side by using 'on-close=myMethod'.
 -->
-<dom-module id="oobe-help-dialog">
+<dom-module id="oobe-modal-dialog">
   <template>
     <style include="oobe-common">
       :host {
         flex: 1 1 auto;
-        --cr-dialog-title-slot-padding-bottom: 8px;
-        --cr-dialog-width: 552px;
+        --cr-dialog-title-slot-padding-bottom:
+            var(--oobe-modal-dialog-title-slot-padding-bottom, 8px);
+        --cr-dialog-width: var(--oobe-modal-dialog-width, 552px);
         --cr-primary-text-color: var(--oobe-header-text-color);
         --cr-secondary-text-color: var(--oobe-text-color);
       }
 
-      #helpDialogTitle {
-        @apply --oobe-help-dialog-header-font;
+      #modalDialogTitle {
+        @apply --oobe-modal-dialog-header-font;
         margin: 0;
         user-select: none;
       }
 
       #contentContainer {
         @apply --oobe-default-font;
-        padding-bottom: 12px;
+        padding-bottom:
+            var(--oobe-modal-dialog-content-slot-padding-bottom, 12px);
+        padding-inline-end:
+            var(--oobe-modal-dialog-content-slot-padding-end, 20px);
+        padding-inline-start:
+            var(--oobe-modal-dialog-content-slot-padding-start, 20px);
       }
     </style>
-    <cr-dialog id="helpDialog" on-close="onClose_">
+    <cr-dialog id="modalDialog" on-close="onClose_">
       <!-- Title -->
-      <div id="helpDialogTitle" slot="title">
+      <div id="modalDialogTitle" slot="title">
         <slot name="title">[[i18nDynamic(locale, titleKey)]]</slot>
       </div>
       <!-- Content to be shown -->
diff --git a/chrome/browser/resources/chromeos/login/components/oobe_help_dialog.js b/chrome/browser/resources/chromeos/login/components/oobe_modal_dialog.js
similarity index 72%
rename from chrome/browser/resources/chromeos/login/components/oobe_help_dialog.js
rename to chrome/browser/resources/chromeos/login/components/oobe_modal_dialog.js
index 107c19c6..d3255d6 100644
--- a/chrome/browser/resources/chromeos/login/components/oobe_help_dialog.js
+++ b/chrome/browser/resources/chromeos/login/components/oobe_modal_dialog.js
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 Polymer({
-  is: 'oobe-help-dialog',
+  is: 'oobe-modal-dialog',
 
   behaviors: [OobeI18nBehavior],
 
@@ -22,17 +22,21 @@
     },
   },
 
-  ready: function() {},
+  get open() {
+    return this.$.modalDialog.open;
+  },
 
-  /* Shows the help dialog and changes the focus to the close button. */
-  showDialog: function() {
+  ready() {},
+
+  /* Shows the modal dialog and changes the focus to the close button. */
+  showDialog() {
     chrome.send('enableShelfButtons', [false]);
-    this.$.helpDialog.showModal();
+    this.$.modalDialog.showModal();
     this.$.closeButton.focus();
   },
 
-  hideDialog: function() {
-    this.$.helpDialog.close();
+  hideDialog() {
+    this.$.modalDialog.close();
   },
 
   onClose_() {
diff --git a/chrome/browser/resources/chromeos/login/md_login.js b/chrome/browser/resources/chromeos/login/md_login.js
index ba48b4e..02801f8 100644
--- a/chrome/browser/resources/chromeos/login/md_login.js
+++ b/chrome/browser/resources/chromeos/login/md_login.js
@@ -24,7 +24,6 @@
 
 // <include src="screen_error_message.js">
 // <include src="screen_discover.js">
-// <include src="screen_multidevice_setup.js">
 
 // <include src="../../gaia_auth_host/authenticator.js">
 
@@ -52,7 +51,6 @@
         login.AutolaunchScreen.register();
         login.ErrorMessageScreen.register();
         login.DiscoverScreen.register();
-        login.MultiDeviceSetupScreen.register();
 
         cr.ui.Bubble.decorate($('bubble-persistent'));
         $('bubble-persistent').persistent = true;
diff --git a/chrome/browser/resources/chromeos/login/oobe.js b/chrome/browser/resources/chromeos/login/oobe.js
index ce4dd5cf..6aa5040f 100644
--- a/chrome/browser/resources/chromeos/login/oobe.js
+++ b/chrome/browser/resources/chromeos/login/oobe.js
@@ -25,7 +25,6 @@
 
 // <include src="screen_error_message.js">
 // <include src="screen_discover.js">
-// <include src="screen_multidevice_setup.js">
 
 // <include src="../../gaia_auth_host/authenticator.js">
 // <include src="multi_tap_detector.js">
@@ -44,7 +43,6 @@
         login.AccountPickerScreen.register();
         login.ErrorMessageScreen.register();
         login.DiscoverScreen.register();
-        login.MultiDeviceSetupScreen.register();
 
         cr.ui.Bubble.decorate($('bubble-persistent'));
         $('bubble-persistent').persistent = true;
diff --git a/chrome/browser/resources/chromeos/login/oobe_eula.css b/chrome/browser/resources/chromeos/login/oobe_eula.css
index f957eea..1da9e30 100644
--- a/chrome/browser/resources/chromeos/login/oobe_eula.css
+++ b/chrome/browser/resources/chromeos/login/oobe_eula.css
@@ -13,8 +13,18 @@
   min-height: 300px;
 }
 
+#additionalToS {
+  --oobe-modal-dialog-content-slot-padding-bottom: 0;
+  --oobe-modal-dialog-content-slot-padding-end: 0;
+  --oobe-modal-dialog-content-slot-padding-start: 0;
+  --oobe-modal-dialog-title-slot-padding-bottom: 16px;
+  --oobe-modal-dialog-width: 512px;
+}
+
 #additionalChromeToSFrame {
   height: 300px;
+  padding-inline-end: 20px;
+  padding-inline-start: 20px;
 }
 
 #securitySettings,
@@ -53,4 +63,3 @@
 #settings-close-button {
   padding-inline-end: 18px;
 }
-
diff --git a/chrome/browser/resources/chromeos/login/oobe_eula.html b/chrome/browser/resources/chromeos/login/oobe_eula.html
index 1ed19f2..8a36c281 100644
--- a/chrome/browser/resources/chromeos/login/oobe_eula.html
+++ b/chrome/browser/resources/chromeos/login/oobe_eula.html
@@ -4,7 +4,6 @@
 
 <link rel="import" href="chrome://resources/cr_elements/shared_style_css.html">
 <link rel="import" href="chrome://resources/cr_elements/cr_checkbox/cr_checkbox.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
 <link rel="import" href="chrome://resources/html/action_link.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-styles/color.html">
@@ -99,18 +98,18 @@
             on-click="onSecuritySettingsCloseClicked_"></oobe-text-button>
       </div>
     </oobe-dialog>
-    <cr-dialog id="additionalToS" ignore-popstate
+    <oobe-modal-dialog id="additionalToS" ignore-popstate
         on-close="focusAdditionalTermsLink_"
         on-cancel="focusAdditionalTermsLink_">
       <div slot="title">
         [[i18nDynamic(locale, 'oobeEulaAditionalTerms')]]
       </div>
-      <webview slot="body" role="document" class="flex oobe-tos-webview"
+      <webview slot="content" role="document" class="flex oobe-tos-webview"
           id="additionalChromeToSFrame">
       </webview>
-      <oobe-text-button id="close-additional-tos" slot="button-container"
+      <oobe-text-button id="close-additional-tos" slot="buttons"
           on-click="hideToSDialog_" text-key="oobeModalDialogClose" inverse>
       </oobe-text-button>
-    </cr-dialog>
+    </oobe-modal-dialog>
   </template>
 </dom-module>
diff --git a/chrome/browser/resources/chromeos/login/oobe_eula.js b/chrome/browser/resources/chromeos/login/oobe_eula.js
index 5333447..29a3f79 100644
--- a/chrome/browser/resources/chromeos/login/oobe_eula.js
+++ b/chrome/browser/resources/chromeos/login/oobe_eula.js
@@ -411,7 +411,7 @@
    * Shows additional terms of service dialog.
    */
   showAdditionalTosDialog() {
-    this.$.additionalToS.showModal();
+    this.$.additionalToS.showDialog();
     this.$.additionalToS.focus();
   },
 
@@ -421,7 +421,7 @@
    * @private
    */
   hideToSDialog_() {
-    this.$.additionalToS.close();
+    this.$.additionalToS.hideDialog();
   },
 
   /**
diff --git a/chrome/browser/resources/chromeos/login/oobe_hid_detection.html b/chrome/browser/resources/chromeos/login/oobe_hid_detection.html
index 3696ceb..7999e599 100644
--- a/chrome/browser/resources/chromeos/login/oobe_hid_detection.html
+++ b/chrome/browser/resources/chromeos/login/oobe_hid_detection.html
@@ -100,7 +100,7 @@
     </oobe-dialog>
 
     <!-- Popup that displays the PIN for pairing with a bluetooth keyboard. -->
-    <oobe-help-dialog id="hid-pin-popup" on-close="onPinDialogClosed_">
+    <oobe-modal-dialog id="hid-pin-popup" on-close="onPinDialogClosed_">
       <h1 slot="title">[[pinDialogTitle]]</h1>
       <div slot="content" class="content-padding">
         <div>
@@ -119,6 +119,6 @@
           [[i18nDynamic(locale, 'hidDetectionBluetoothPairingCodeExplanation')]]
         </div>
       </div>
-    </oobe-help-dialog>
+    </oobe-modal-dialog>
   </template>
 </dom-module>
diff --git a/chrome/browser/resources/chromeos/login/oobe_reset.html b/chrome/browser/resources/chromeos/login/oobe_reset.html
index 86d9257..e5d0ad4 100644
--- a/chrome/browser/resources/chromeos/login/oobe_reset.html
+++ b/chrome/browser/resources/chromeos/login/oobe_reset.html
@@ -104,7 +104,7 @@
     </oobe-dialog>
 
     <!-- Powerwash confirmation dialog (depends on powerwash mode) -->
-    <oobe-help-dialog id="confirmationDialog" on-close="onDialogClosed_">
+    <oobe-modal-dialog id="confirmationDialog" on-close="onDialogClosed_">
       <div slot="title">[[confirmationDialogTitle_]]</div>
       <div slot="content">[[confirmationDialogText_]]</div>
       <div slot="buttons">
@@ -114,6 +114,6 @@
             id="confirmPowerwash"
             text-key="confirmResetButton"></oobe-text-button>
       </div>
-    </oobe-help-dialog>
+    </oobe-modal-dialog>
   </template>
 </dom-module>
diff --git a/chrome/browser/resources/chromeos/login/oobe_welcome.html b/chrome/browser/resources/chromeos/login/oobe_welcome.html
index c6629d3b..3eb53dac 100644
--- a/chrome/browser/resources/chromeos/login/oobe_welcome.html
+++ b/chrome/browser/resources/chromeos/login/oobe_welcome.html
@@ -70,6 +70,8 @@
         on-next-button-clicked="onWelcomeNextButtonClicked_"
         on-enable-debugging-clicked="onEnableDebuggingClicked_"
         on-launch-advanced-options="onWelcomeLaunchAdvancedOptions_"
+        on-chromevox-hint-accepted="onChromeVoxHintAccepted_"
+        on-chromevox-hint-dismissed="onChromeVoxHintDismissed_"
         timezone-button-visible=
             "[[isTimezoneButtonVisible_(highlightStrength)]]"
         debugging-link-visible="[[debuggingLinkVisible_]]">
@@ -291,7 +293,7 @@
       </div>
     </oobe-dialog>
     <!-- Demo Mode confirmation dialog -->
-    <oobe-help-dialog id="demoModeConfirmationDialog">
+    <oobe-modal-dialog id="demoModeConfirmationDialog">
       <div slot="title">
         [[i18nDynamic(locale, 'enableDemoModeDialogTitle')]]
       </div>
@@ -306,6 +308,6 @@
             id="okButton"
             text-key="enableDemoModeDialogConfirm"></oobe-text-button>
       </div>
-    </oobe-help-dialog>
+    </oobe-modal-dialog>
   </template>
 </dom-module>
diff --git a/chrome/browser/resources/chromeos/login/oobe_welcome.js b/chrome/browser/resources/chromeos/login/oobe_welcome.js
index 5cd62f3fa..5f98ce9 100644
--- a/chrome/browser/resources/chromeos/login/oobe_welcome.js
+++ b/chrome/browser/resources/chromeos/login/oobe_welcome.js
@@ -6,6 +6,17 @@
  * @fileoverview Polymer element for displaying material design OOBE.
  */
 
+/** @const {string} */
+const DEFAULT_CHROMEVOX_HINT_LOCALE = 'en-US';
+
+/**
+ * The extension ID of the speech engine (Google Speech Synthesis) used to
+ * give the default ChromeVox hint.
+ * @const {string}
+ */
+const DEFAULT_CHROMEVOX_HINT_VOICE_EXTENSION_ID =
+    'gjjabgpgjpampikjhjpfhneeoapjbjaf';
+
 Polymer({
   is: 'oobe-welcome-element',
 
@@ -75,6 +86,29 @@
      * Controls displaying of "Enable debugging features" link.
      */
     debuggingLinkVisible_: Boolean,
+
+    /**
+     * Used to save the function instance created when doing
+     * this.maybeGiveChromeVoxHint.bind(this).
+     * @private {function(this:SpeechSynthesis, Event): *|null|undefined}
+     */
+    voicesChangedListenerMaybeGiveChromeVoxHint_: {type: Function},
+
+    /**
+     * The id of the timer that's set when setting a timeout on
+     * giveChromeVoxHint.
+     * Only gets set if the initial call to maybeGiveChromeVoxHint fails.
+     * @private {number|undefined}
+     */
+    defaultChromeVoxHintTimeoutId_: {type: Number},
+
+    /**
+     * The time in MS to wait before giving the ChromeVox hint in English.
+     * Declared as a property so it can be modified in a test.
+     * @private {number}
+     * @const
+     */
+    DEFAULT_CHROMEVOX_HINT_TIMEOUT_MS_: {type: Number, value: 40 * 1000}
   },
 
   /** Overridden from LoginScreenBehavior. */
@@ -84,6 +118,7 @@
     'showDemoModeConfirmationDialog',
     'showEditRequisitionDialog',
     'showRemoraRequisitionDialog',
+    'maybeGiveChromeVoxHint',
   ],
 
   /**
@@ -124,6 +159,7 @@
    */
   onBeforeHide() {
     this.hideAllScreens_();
+    this.cleanupChromeVoxHint_();
   },
 
   /**
@@ -300,6 +336,7 @@
    * @private
    */
   onWelcomeLaunchAdvancedOptions_() {
+    this.cancelChromeVoxHint_();
     this.showScreen_('oobeAdvancedOptionsScreen');
   },
 
@@ -309,6 +346,7 @@
    * @private
    */
   onWelcomeSelectLanguageButtonClicked_() {
+    this.cancelChromeVoxHint_();
     this.showScreen_('languageScreen');
   },
 
@@ -318,6 +356,7 @@
    * @private
    */
   onWelcomeAccessibilityButtonClicked_() {
+    this.cancelChromeVoxHint_();
     this.showScreen_('accessibilityScreen');
   },
 
@@ -327,6 +366,7 @@
    * @private
    */
   onWelcomeTimezoneButtonClicked_() {
+    this.cancelChromeVoxHint_();
     this.showScreen_('timezoneScreen');
   },
 
@@ -406,6 +446,9 @@
    */
   refreshA11yInfo(data) {
     this.a11yStatus = data;
+    if (data.spokenFeedbackEnabled) {
+      this.closeChromeVoxHint_();
+    }
   },
 
   /**
@@ -574,4 +617,152 @@
   onDeviceRequisitionClicked_() {
     cr.ui.Oobe.handleAccelerator(ACCELERATOR_DEVICE_REQUISITION);
   },
+
+  /** ******************** ChromeVox hint section ******************* */
+
+  /** @private */
+  onChromeVoxHintAccepted_() {
+    this.userActed('activateChromeVoxFromHint');
+  },
+
+  /** @private */
+  onChromeVoxHintDismissed_() {
+    this.userActed('dismissChromeVoxHint');
+  },
+
+  /**
+   * @suppress {missingProperties}
+   * @private
+   */
+  showChromeVoxHint_() {
+    this.$.welcomeScreen.showChromeVoxHint();
+  },
+
+  /**
+   * @suppress {missingProperties}
+   * @private
+   */
+  closeChromeVoxHint_() {
+    this.$.welcomeScreen.closeChromeVoxHint();
+  },
+
+  /** @private */
+  cancelChromeVoxHint_() {
+    this.userActed('cancelChromeVoxHint');
+    this.cleanupChromeVoxHint_();
+  },
+
+  /**
+   * Initially called from WelcomeScreenHandler.
+   * If we find a matching voice for the current locale, show the ChromeVox hint
+   * dialog and give a spoken announcement with instructions for activating
+   * ChromeVox. If we can't find a matching voice, call this function again
+   * whenever a SpeechSynthesis voiceschanged event fires.
+   */
+  maybeGiveChromeVoxHint() {
+    chrome.tts.getVoices((voices) => {
+      const locale = loadTimeData.getString('language');
+      const voiceName = this.findVoiceForLocale_(voices, locale);
+      if (!voiceName) {
+        this.onVoiceNotLoaded_();
+        return;
+      }
+
+      const ttsOptions =
+          /** @type {!chrome.tts.TtsOptions} */ ({lang: locale, voiceName});
+      this.giveChromeVoxHint_(locale, ttsOptions, false);
+    });
+  },
+
+  /**
+   * Returns a voice name from |voices| that matches |locale|.
+   * Returns undefined if no voice can be found.
+   * Both |locale| and |voice.lang| will be in the form 'language-region'.
+   * Examples include 'en', 'en-US', 'fr', and 'fr-CA'.
+   * @param {Array<!chrome.tts.TtsVoice>} voices
+   * @param {string} locale
+   * @return {string|undefined}
+   * @private
+   */
+  findVoiceForLocale_(voices, locale) {
+    const language = locale.toLowerCase().split('-')[0];
+    const voice = voices.find(voice => {
+      return !!(
+          voice.lang && voice.lang.toLowerCase().split('-')[0] === language);
+    });
+    return voice ? voice.voiceName : undefined;
+  },
+
+  /**
+   * Called if we couldn't find a voice in which to announce the ChromeVox
+   * hint.
+   * Registers a voiceschanged listener that tries to give the hint when new
+   * voices are loaded. Also sets a timeout that gives the hint in the default
+   * locale as a last resort.
+   * @private
+   */
+  onVoiceNotLoaded_() {
+    if (!this.voicesChangedListenerMaybeGiveChromeVoxHint_) {
+      // Add voiceschanged listener that tries to give the hint when new voices
+      // are loaded.
+      this.voicesChangedListenerMaybeGiveChromeVoxHint_ =
+          this.maybeGiveChromeVoxHint.bind(this);
+      window.speechSynthesis.addEventListener(
+          'voiceschanged', this.voicesChangedListenerMaybeGiveChromeVoxHint_,
+          false);
+    }
+
+    if (!this.defaultChromeVoxHintTimeoutId_) {
+      // Set a timeout that gives the ChromeVox hint in the default locale.
+      const ttsOptions = /** @type {!chrome.tts.TtsOptions} */ ({
+        lang: DEFAULT_CHROMEVOX_HINT_LOCALE,
+        extensionId: DEFAULT_CHROMEVOX_HINT_VOICE_EXTENSION_ID
+      });
+      this.defaultChromeVoxHintTimeoutId_ = window.setTimeout(
+          this.giveChromeVoxHint_.bind(
+              this, DEFAULT_CHROMEVOX_HINT_LOCALE, ttsOptions, true),
+          this.DEFAULT_CHROMEVOX_HINT_TIMEOUT_MS_);
+    }
+  },
+
+  /**
+   * Shows the ChromeVox hint dialog and plays the spoken announcement. Gives
+   * the spoken announcement with the provided options.
+   * @param {string} locale
+   * @param {!chrome.tts.TtsOptions} options
+   * @param {boolean} isDefaultHint
+   * @private
+   */
+  giveChromeVoxHint_(locale, options, isDefaultHint) {
+    if (isDefaultHint) {
+      console.warn(
+          'No voice available for ' + loadTimeData.getString('language') +
+          ', giving default hint in English.');
+    }
+    this.cleanupChromeVoxHint_();
+    const msgId = this.$.welcomeScreen.isInTabletMode ?
+        'chromeVoxHintAnnouncementTextTablet' :
+        'chromeVoxHintAnnouncementTextLaptop';
+    const message = this.i18n(msgId);
+    chrome.tts.speak(message, options, () => {
+      this.showChromeVoxHint_();
+      chrome.send('WelcomeScreen.recordChromeVoxHintSpokenSuccess');
+    });
+  },
+
+  /**
+   * Clear timeout and remove voiceschanged listener.
+   * @private
+   */
+  cleanupChromeVoxHint_() {
+    if (this.defaultChromeVoxHintTimeoutId_) {
+      window.clearTimeout(this.defaultChromeVoxHintTimeoutId_);
+    }
+    window.speechSynthesis.removeEventListener(
+        'voiceschanged',
+        /** @type {function(this:SpeechSynthesis, Event): *} */
+        (this.voicesChangedListenerMaybeGiveChromeVoxHint_),
+        /* useCapture */ false);
+    this.voicesChangedListenerMaybeGiveChromeVoxHint_ = null;
+  }
 });
diff --git a/chrome/browser/resources/chromeos/login/oobe_welcome_dialog.html b/chrome/browser/resources/chromeos/login/oobe_welcome_dialog.html
index 3431e60..d4ba0a3b 100644
--- a/chrome/browser/resources/chromeos/login/oobe_welcome_dialog.html
+++ b/chrome/browser/resources/chromeos/login/oobe_welcome_dialog.html
@@ -153,5 +153,19 @@
         </oobe-text-button>
       </div>
     </oobe-dialog>
+    <oobe-modal-dialog id="chromeVoxHint">
+      <div slot="title">
+        <p>[[i18nDynamic(locale, 'chromeVoxHintText')]]</p>
+      </div>
+      <div slot="buttons">
+        <oobe-text-button id="dismissChromeVoxButton"
+            on-click="dismissChromeVoxHint_"
+            text-key="continueWithoutChromeVox">
+        </oobe-text-button>
+        <oobe-text-button id="activateChromeVoxButton" inverse
+            on-click="activateChromeVox_" text-key="activateChromeVox">
+        </oobe-text-button>
+      </div>
+    </oobe-modal-dialog>
   </template>
 </dom-module>
diff --git a/chrome/browser/resources/chromeos/login/oobe_welcome_dialog.js b/chrome/browser/resources/chromeos/login/oobe_welcome_dialog.js
index 9bd9902..a79c696e 100644
--- a/chrome/browser/resources/chromeos/login/oobe_welcome_dialog.js
+++ b/chrome/browser/resources/chromeos/login/oobe_welcome_dialog.js
@@ -394,6 +394,16 @@
 
       this.titleLongTouchDetector_ = new TitleLongTouchDetector(
           this.$.title, this.onTitleLongTouch_.bind(this));
+      this.$.chromeVoxHint.addEventListener('keydown', (event) => {
+        // When the ChromeVox hint dialog is open, allow users to press the
+        // space bar to activate ChromeVox. This is intended to help first time
+        // users easily activate ChromeVox.
+        if (this.$.chromeVoxHint.open && event.key === ' ') {
+          this.activateChromeVox_();
+          event.preventDefault();
+          event.stopPropagation();
+        }
+      });
       this.focus();
     },
 
@@ -436,5 +446,36 @@
     onWindowResize() {
       this.isInPortraitMode = window.innerHeight > window.innerWidth;
     },
+
+    // ChromeVox hint section.
+
+    /**
+     * Called to show the ChromeVox hint dialog.
+     */
+    showChromeVoxHint() {
+      this.$.chromeVoxHint.showDialog();
+    },
+
+    /**
+     * Called to close the ChromeVox hint dialog.
+     */
+    closeChromeVoxHint() {
+      this.$.chromeVoxHint.hideDialog();
+    },
+
+    /**
+     * Called when the 'Continue without ChromeVox' button is clicked.
+     * @private
+     */
+    dismissChromeVoxHint_() {
+      this.fire('chromevox-hint-dismissed');
+      this.closeChromeVoxHint();
+    },
+
+    /** @private */
+    activateChromeVox_() {
+      this.closeChromeVoxHint();
+      this.fire('chromevox-hint-accepted');
+    }
   });
 }
diff --git a/chrome/browser/resources/chromeos/login/saml_confirm_password.html b/chrome/browser/resources/chromeos/login/saml_confirm_password.html
index 8d76e67..0546d90 100644
--- a/chrome/browser/resources/chromeos/login/saml_confirm_password.html
+++ b/chrome/browser/resources/chromeos/login/saml_confirm_password.html
@@ -6,7 +6,6 @@
 
 <link rel="import" href="chrome://resources/cr_elements/shared_style_css.html">
 <link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
 <link rel="import" href="chrome://resources/cr_elements/cr_input/cr_input.html">
 
 <link rel="import" href="/components/common_styles.html">
@@ -26,10 +25,10 @@
     <style include="oobe-dialog-host">
     </style>
     <style include="cr-shared-style">
-      #cancelConfirmDlg::part(dialog) {
-        color: var(--primary-text-color);
-        font-size: 15px;
-        width: 384px;
+      #cancelConfirmDlg {
+        --oobe-modal-dialog-content-slot-padding-bottom: 0;
+        --oobe-modal-dialog-title-slot-padding-bottom: 0;
+        --oobe-modal-dialog-width: 384px;
       }
 
       .cancel-button {
@@ -75,12 +74,12 @@
       </div>
     </oobe-dialog>
 
-    <cr-dialog id="cancelConfirmDlg"
+    <oobe-modal-dialog id="cancelConfirmDlg"
         on-close="onDialogOverlayClosed_">
-      <div slot="body">
+      <div slot="title">
         [[i18nDynamic(locale, 'accountSetupCancelDialogTitle')]]
       </div>
-      <div slot="button-container">
+      <div slot="buttons">
         <cr-button class="action-button" on-click="onCancelNo_">
           [[i18nDynamic(locale, 'accountSetupCancelDialogNo')]]
         </cr-button>
@@ -88,7 +87,7 @@
           [[i18nDynamic(locale, 'accountSetupCancelDialogYes')]]
         </cr-button>
       </div>
-    </cr-dialog>
+    </oobe-modal-dialog>
 
   </template>
 </dom-module>
diff --git a/chrome/browser/resources/chromeos/login/saml_confirm_password.js b/chrome/browser/resources/chromeos/login/saml_confirm_password.js
index 724a8c1e..153a1c0 100644
--- a/chrome/browser/resources/chromeos/login/saml_confirm_password.js
+++ b/chrome/browser/resources/chromeos/login/saml_confirm_password.js
@@ -82,7 +82,7 @@
 
   reset() {
     if (this.$.cancelConfirmDlg.open)
-      this.$.cancelConfirmDlg.close();
+      this.$.cancelConfirmDlg.hideDialog();
     this.setUIStep(UIState.PASSWORD);
     this.$.passwordInput.invalid = false;
     this.$.passwordInput.value = '';
@@ -93,15 +93,15 @@
   },
 
   onCancel_() {
-    this.$.cancelConfirmDlg.showModal();
+    this.$.cancelConfirmDlg.showDialog();
   },
 
   onCancelNo_() {
-    this.$.cancelConfirmDlg.close();
+    this.$.cancelConfirmDlg.hideDialog();
   },
 
   onCancelYes_() {
-    this.$.cancelConfirmDlg.close();
+    this.$.cancelConfirmDlg.hideDialog();
 
     cr.ui.Oobe.showScreen({id: 'gaia-signin'});
     cr.ui.Oobe.resetSigninUI(true);
diff --git a/chrome/browser/resources/chromeos/login/screen_multidevice_setup.html b/chrome/browser/resources/chromeos/login/screen_multidevice_setup.html
index 31a4b95..204b72c6 100644
--- a/chrome/browser/resources/chromeos/login/screen_multidevice_setup.html
+++ b/chrome/browser/resources/chromeos/login/screen_multidevice_setup.html
@@ -1,10 +1,12 @@
 <!-- Copyright 2018 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. -->
+<link rel="import" href="chrome://resources/html/polymer.html">
 <link rel="import" href="chrome://oobe/custom_elements.html">
-<link rel="stylesheet" href="chrome://resources/css/overlay.css">
 
-<div class="step right hidden" id="multidevice-setup" hidden>
-  <multidevice-setup-first-run id="multidevice-setup-impl">
-  </multidevice-setup-first-run>
-</div>
+<dom-module id="multidevice-setup-element">
+  <template>
+    <multidevice-setup-first-run id="impl">
+    </multidevice-setup-first-run>
+  </template>
+</dom-module>
diff --git a/chrome/browser/resources/chromeos/login/screen_multidevice_setup.js b/chrome/browser/resources/chromeos/login/screen_multidevice_setup.js
index 046751c..9877a373 100644
--- a/chrome/browser/resources/chromeos/login/screen_multidevice_setup.js
+++ b/chrome/browser/resources/chromeos/login/screen_multidevice_setup.js
@@ -5,17 +5,22 @@
 /**
  * @fileoverview MultiDevice setup screen for login/OOBE.
  */
-login.createScreen('MultiDeviceSetupScreen', 'multidevice-setup', function() {
-  return {
-    get defaultControl() {
-      return $('multidevice-setup-impl');
-    },
 
-    /**
-     * This is called after resources are updated.
-     */
-    updateLocalizedContent() {
-      $('multidevice-setup-impl').updateLocalizedContent();
-    },
-  };
+Polymer({
+  is: 'multidevice-setup-element',
+
+  behaviors: [OobeI18nBehavior, LoginScreenBehavior],
+
+  ready() {
+    this.initializeLoginScreen('MultiDeviceSetupScreen', {});
+  },
+
+
+  get defaultControl() {
+    return this.$.impl;
+  },
+
+  updateLocalizedContent() {
+    this.$.impl.updateLocalizedContent();
+  },
 });
diff --git a/chrome/browser/resources/chromeos/login/structure/components_common.html b/chrome/browser/resources/chromeos/login/structure/components_common.html
index ad4ce4ed..b195240 100644
--- a/chrome/browser/resources/chromeos/login/structure/components_common.html
+++ b/chrome/browser/resources/chromeos/login/structure/components_common.html
@@ -9,7 +9,7 @@
 
 <include src="../components/oobe_icons.html">
 <include src="../components/oobe_buttons.html">
-<include src="../components/oobe_help_dialog.html">
+<include src="../components/oobe_modal_dialog.html">
 <include src="../components/html-echo.html">
 <include src="../notification_card.html">
 
@@ -44,6 +44,7 @@
 <include src="../marketing_opt_in.html">
 <include src="../oobe_screen_assistant_optin_flow.html">
 <include src="../multidevice_setup_first_run.html">
+<include src="../screen_multidevice_setup.html">
 <include src="../security_token_pin.html">
 <include src="../gesture_navigation.html">
 <include src="../screen_tpm_error.html">
diff --git a/chrome/browser/resources/chromeos/login/structure/components_common.js b/chrome/browser/resources/chromeos/login/structure/components_common.js
index dc7a324..a0fe9af 100644
--- a/chrome/browser/resources/chromeos/login/structure/components_common.js
+++ b/chrome/browser/resources/chromeos/login/structure/components_common.js
@@ -13,7 +13,7 @@
 // <include src="../components/login_screen_behavior.js">
 // <include src="../components/multi_step_behavior.js">
 // <include src="../components/oobe_buttons.js">
-// <include src="../components/oobe_help_dialog.js">
+// <include src="../components/oobe_modal_dialog.js">
 // <include src="../components/html-echo.js">
 // <include src="../notification_card.js">
 
@@ -43,6 +43,7 @@
 // <include src="../marketing_opt_in.js">
 // <include src="../oobe_screen_assistant_optin_flow.js">
 // <include src="../multidevice_setup_first_run.js">
+// <include src="../screen_multidevice_setup.js">
 // <include src="../security_token_pin.js">
 // <include src="../gesture_navigation.js">
 // <include src="../screen_tpm_error.js">
diff --git a/chrome/browser/resources/chromeos/login/structure/screens_common.html b/chrome/browser/resources/chromeos/login/structure/screens_common.html
index df1980c..5db0626 100644
--- a/chrome/browser/resources/chromeos/login/structure/screens_common.html
+++ b/chrome/browser/resources/chromeos/login/structure/screens_common.html
@@ -44,7 +44,9 @@
 <app-downloading-element id="app-downloading" class="step hidden" hidden>
 </app-downloading-element>
 <include src="../screen_discover.html">
-<include src="../screen_multidevice_setup.html">
+<multidevice-setup-element id="multidevice-setup-screen" class="step hidden"
+    hidden>
+</multidevice-setup-element>
 <gesture-navigation-element id="gesture-navigation" class="step hidden" hidden>
 </gesture-navigation-element>
 <marketing-opt-in-element id="marketing-opt-in" class="step hidden" hidden>
diff --git a/chrome/browser/resources/chromeos/login/update_required_card.html b/chrome/browser/resources/chromeos/login/update_required_card.html
index 24efd8d4..07a6167 100644
--- a/chrome/browser/resources/chromeos/login/update_required_card.html
+++ b/chrome/browser/resources/chromeos/login/update_required_card.html
@@ -153,7 +153,7 @@
     </oobe-dialog>
 
     <!-- Delete users data confirmation dialog (shown when EOL reached) -->
-    <oobe-help-dialog id="confirmationDialog"
+    <oobe-modal-dialog id="confirmationDialog"
         title-key="eolDeleteUsersDataPopupTitle">
       <div slot="content">
         [[i18nDynamic(locale, 'eolDeleteUsersDataPopupMessage', deviceName)]]
@@ -166,7 +166,7 @@
             id="confirmDelete" text-key="eolDeleteUsersDataConfirm">
         </oobe-text-button>
       </div>
-    </oobe-help-dialog>
+    </oobe-modal-dialog>
 
   </template>
 </dom-module>
diff --git a/chrome/browser/resources/chromeos/login/user_creation.html b/chrome/browser/resources/chromeos/login/user_creation.html
index 34e35068..1937c15 100644
--- a/chrome/browser/resources/chromeos/login/user_creation.html
+++ b/chrome/browser/resources/chromeos/login/user_creation.html
@@ -173,11 +173,11 @@
         </oobe-next-button>
       </div>
     </oobe-dialog>
-    <oobe-help-dialog id="learnMoreDialog"
+    <oobe-modal-dialog id="learnMoreDialog"
         title-key="childSignInLearnMoreDialogTitle">
       <div slot="content" class="card-text">
         [[i18nDynamic(locale, 'childSignInLearnMoreDialogText')]]
       </div>
-    </oobe-help-dialog>
+    </oobe-modal-dialog>
   </template>
 </dom-module>
diff --git a/chrome/browser/resources/nearby_share/nearby_discovery_page.html b/chrome/browser/resources/nearby_share/nearby_discovery_page.html
index 2adc689..e6cd64a 100644
--- a/chrome/browser/resources/nearby_share/nearby_discovery_page.html
+++ b/chrome/browser/resources/nearby_share/nearby_discovery_page.html
@@ -119,6 +119,21 @@
     line-height: 20px;
     margin-inline-end: var(--nearby-page-space-large-inline);
   }
+
+  nearby-device {
+    animation: 200ms cubic-bezier(0.4, 0, 0.2, 1) slide-up;
+    animation: 200ms linear fade-in;
+  }
+
+  @keyframes fade-in {
+    0% { opacity: 0; }
+    100% { opacity: 1; }
+  }
+
+  @keyframes slide-up {
+    0% { transform: translateY(2px); }
+    100% { transform: translateY(0); }
+  }
 </style>
 
 <nearby-page-template title="$i18n{nearbyShareDiscoveryPageTitle}"
diff --git a/chrome/browser/resources/pdf/viewport.js b/chrome/browser/resources/pdf/viewport.js
index ab8bcd6..6c760291 100644
--- a/chrome/browser/resources/pdf/viewport.js
+++ b/chrome/browser/resources/pdf/viewport.js
@@ -1070,33 +1070,18 @@
    * @param {!KeyboardEvent} e
    * @private
    */
-  pageUpHandler_(e) {
-    // Go to the previous page if we are fit-to-page or fit-to-height.
+  pageUpDownSpaceHandler_(e) {
+    const direction =
+        e.key === 'PageUp' || (e.key === ' ' && e.shiftKey) ? -1 : 1;
+    // Go to the previous/next page if we are fit-to-page or fit-to-height.
     if (this.isPagedMode_()) {
-      this.goToPreviousPage();
+      direction === 1 ? this.goToNextPage() : this.goToPreviousPage();
       // Since we do the movement of the page.
       e.preventDefault();
     } else if (
         /** @type {!{fromScriptingAPI: (boolean|undefined)}} */ (e)
             .fromScriptingAPI) {
-      this.position.y -= this.size.height;
-    }
-  }
-
-  /**
-   * @param {!KeyboardEvent} e
-   * @private
-   */
-  pageDownHandler_(e) {
-    // Go to the next page if we are fit-to-page or fit-to-height.
-    if (this.isPagedMode_()) {
-      this.goToNextPage();
-      // Since we do the movement of the page.
-      e.preventDefault();
-    } else if (
-        /** @type {!{fromScriptingAPI: (boolean|undefined)}} */ (e)
-            .fromScriptingAPI) {
-      this.position.y += this.size.height;
+      this.position.y += direction * this.size.height;
     }
   }
 
@@ -1178,18 +1163,10 @@
    */
   handleDirectionalKeyEvent(e, formFieldFocused) {
     switch (e.key) {
-      case '':
-        if (e.shiftKey) {
-          this.pageUpHandler_(e);
-        } else {
-          this.pageDownHandler_(e);
-        }
-        return true;
+      case ' ':
       case 'PageUp':
-        this.pageUpHandler_(e);
-        return true;
       case 'PageDown':
-        this.pageDownHandler_(e);
+        this.pageUpDownSpaceHandler_(e);
         return true;
       case 'ArrowLeft':
         this.arrowLeftHandler_(e, formFieldFocused);
diff --git a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.html b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.html
index c14bdca3..e543c5f 100644
--- a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.html
+++ b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.html
@@ -23,7 +23,7 @@
 
     #backButton {
       --cr-icon-button-fill-color: var(--theme-text-color);
-      --cr-icon-button-icon-size: 20px;
+      --cr-icon-button-icon-size: 22px;
       --cr-icon-button-margin-start: 4px;
       --cr-icon-button-size: 36px;
       margin-top: 4px;
diff --git a/chrome/browser/resources/signin/profile_picker/profile_picker.js b/chrome/browser/resources/signin/profile_picker/profile_picker.js
index 46ca80f..5b7c296 100644
--- a/chrome/browser/resources/signin/profile_picker/profile_picker.js
+++ b/chrome/browser/resources/signin/profile_picker/profile_picker.js
@@ -1,5 +1,5 @@
 import './profile_picker_app.js';
 
 export {ensureLazyLoaded} from './ensure_lazy_loaded.js';
-export {ManageProfilesBrowserProxy, ManageProfilesBrowserProxyImpl, ProfileState} from './manage_profiles_browser_proxy.js';
-export {navigateTo, NavigationBehavior, Routes} from './navigation_behavior.js';
+export {AutogeneratedThemeColorInfo, ManageProfilesBrowserProxy, ManageProfilesBrowserProxyImpl, ProfileState} from './manage_profiles_browser_proxy.js';
+export {navigateTo, navigateToStep, NavigationBehavior, ProfileCreationSteps, Routes} from './navigation_behavior.js';
diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsing/BUILD.gn
index 306e491c..b19f77f 100644
--- a/chrome/browser/safe_browsing/BUILD.gn
+++ b/chrome/browser/safe_browsing/BUILD.gn
@@ -87,8 +87,6 @@
       "client_side_detection_service.h",
       "client_side_detection_service_factory.cc",
       "client_side_detection_service_factory.h",
-      "client_side_model_loader.cc",
-      "client_side_model_loader.h",
       "delayed_warning_navigation_throttle.cc",
       "delayed_warning_navigation_throttle.h",
       "safe_browsing_blocking_page.cc",
@@ -124,6 +122,7 @@
       "//chrome/common/safe_browsing:proto",
       "//components/safe_browsing/content",
       "//components/safe_browsing/content/browser",
+      "//components/safe_browsing/content/browser:client_side_model_loader",
       "//components/safe_browsing/content/password_protection",
       "//components/safe_browsing/content/triggers:ad_popup_trigger",
       "//components/safe_browsing/content/triggers:ad_redirect_trigger",
diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service.cc b/chrome/browser/safe_browsing/chrome_password_protection_service.cc
index 9309aef..3145880 100644
--- a/chrome/browser/safe_browsing/chrome_password_protection_service.cc
+++ b/chrome/browser/safe_browsing/chrome_password_protection_service.cc
@@ -1250,17 +1250,25 @@
     // is called.
     std::string username_or_email =
         username.empty() ? GetAccountInfo().email : username;
-    extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(profile_)
-        ->OnPolicySpecifiedPasswordReuseDetected(
-            web_contents->GetLastCommittedURL(), username_or_email,
-            is_phishing_url);
+    auto* router =
+        extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(
+            profile_);
+    if (router) {
+      router->OnPolicySpecifiedPasswordReuseDetected(
+          web_contents->GetLastCommittedURL(), username_or_email,
+          is_phishing_url);
+    }
   }
 }
 
 void ChromePasswordProtectionService::ReportPasswordChanged() {
   if (!IsIncognito()) {
-    extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(profile_)
-        ->OnPolicySpecifiedPasswordChanged(GetAccountInfo().email);
+    auto* router =
+        extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(
+            profile_);
+    if (router) {
+      router->OnPolicySpecifiedPasswordChanged(GetAccountInfo().email);
+    }
   }
 }
 #endif
diff --git a/chrome/browser/safe_browsing/client_side_detection_host.h b/chrome/browser/safe_browsing/client_side_detection_host.h
index a743450..ce343b8 100644
--- a/chrome/browser/safe_browsing/client_side_detection_host.h
+++ b/chrome/browser/safe_browsing/client_side_detection_host.h
@@ -13,6 +13,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "chrome/browser/safe_browsing/ui_manager.h"
+#include "components/safe_browsing/content/browser/client_side_model_loader.h"
 #include "components/safe_browsing/core/db/database_manager.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "mojo/public/cpp/bindings/remote.h"
diff --git a/chrome/browser/safe_browsing/client_side_detection_host_unittest.cc b/chrome/browser/safe_browsing/client_side_detection_host_unittest.cc
index 0f6e5e64..58ce7fb 100644
--- a/chrome/browser/safe_browsing/client_side_detection_host_unittest.cc
+++ b/chrome/browser/safe_browsing/client_side_detection_host_unittest.cc
@@ -20,13 +20,13 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "chrome/browser/safe_browsing/client_side_detection_service.h"
-#include "chrome/browser/safe_browsing/client_side_model_loader.h"
 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
 #include "chrome/browser/safe_browsing/ui_manager.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/prefs/scoped_user_pref_update.h"
+#include "components/safe_browsing/content/browser/client_side_model_loader.h"
 #include "components/safe_browsing/content/common/safe_browsing.mojom-shared.h"
 #include "components/safe_browsing/core/common/safe_browsing_prefs.h"
 #include "components/safe_browsing/core/db/database_manager.h"
diff --git a/chrome/browser/safe_browsing/client_side_detection_service.h b/chrome/browser/safe_browsing/client_side_detection_service.h
index 32b08b9..baa0aa7c 100644
--- a/chrome/browser/safe_browsing/client_side_detection_service.h
+++ b/chrome/browser/safe_browsing/client_side_detection_service.h
@@ -27,9 +27,9 @@
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
-#include "chrome/browser/safe_browsing/client_side_model_loader.h"
 #include "components/keyed_service/core/keyed_service.h"
 #include "components/prefs/pref_change_registrar.h"
+#include "components/safe_browsing/content/browser/client_side_model_loader.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.cc b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.cc
index 02ab0d16..c1785dd 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.cc
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.cc
@@ -5,7 +5,7 @@
 #include "chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.h"
 #include "base/callback_helpers.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/enterprise/connectors/content_analysis_dialog.h"
 #include "chrome/browser/enterprise/connectors/fake_content_analysis_delegate.h"
 #include "chrome/browser/policy/dm_token_utils.h"
@@ -80,18 +80,16 @@
 
 DeepScanningBrowserTestBase::~DeepScanningBrowserTestBase() = default;
 
-void DeepScanningBrowserTestBase::SetUpOnMainThread() {
-  enterprise_connectors::ConnectorsManager::GetInstance()->SetUpForTesting();
-}
-
 void DeepScanningBrowserTestBase::TearDownOnMainThread() {
-  enterprise_connectors::ConnectorsManager::GetInstance()->TearDownForTesting();
   enterprise_connectors::ContentAnalysisDelegate::ResetFactoryForTesting();
 
-  ClearAnalysisConnector(enterprise_connectors::FILE_ATTACHED);
-  ClearAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED);
-  ClearAnalysisConnector(enterprise_connectors::BULK_DATA_ENTRY);
-  SetOnSecurityEventReporting(false);
+  ClearAnalysisConnector(browser()->profile()->GetPrefs(),
+                         enterprise_connectors::FILE_ATTACHED);
+  ClearAnalysisConnector(browser()->profile()->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED);
+  ClearAnalysisConnector(browser()->profile()->GetPrefs(),
+                         enterprise_connectors::BULK_DATA_ENTRY);
+  SetOnSecurityEventReporting(browser()->profile()->GetPrefs(), false);
 }
 
 void DeepScanningBrowserTestBase::SetUpDelegate() {
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.h b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.h
index 06d8265e..0109ab8 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.h
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.h
@@ -18,7 +18,6 @@
   DeepScanningBrowserTestBase();
   ~DeepScanningBrowserTestBase() override;
 
-  void SetUpOnMainThread() override;
   void TearDownOnMainThread() override;
 
   // Sets up a FakeContentAnalysisDelegate to use this class's StatusCallback
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.cc b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.cc
index 8b33e447..faf17c7e 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.cc
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.cc
@@ -15,6 +15,7 @@
 #include "components/policy/core/common/cloud/realtime_reporting_job_configuration.h"
 #include "components/prefs/scoped_user_pref_update.h"
 #include "components/safe_browsing/core/common/safe_browsing_prefs.h"
+#include "content/public/browser/browser_context.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -51,8 +52,8 @@
   content_size_ = expected_content_size;
   result_ = expected_result;
   username_ = expected_username;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
-      .WillOnce([this](base::Value& report,
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
+      .WillOnce([this](content::BrowserContext* context, base::Value& report,
                        base::OnceCallback<void(bool)>& callback) {
         ValidateReport(&report);
         if (!done_closure_.is_null())
@@ -80,8 +81,8 @@
   content_size_ = expected_content_size;
   result_ = expected_result;
   username_ = expected_username;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
-      .WillOnce([this](base::Value& report,
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
+      .WillOnce([this](content::BrowserContext* context, base::Value& report,
                        base::OnceCallback<void(bool)>& callback) {
         ValidateReport(&report);
         if (!done_closure_.is_null())
@@ -110,8 +111,8 @@
   content_size_ = expected_content_size;
   result_ = expected_result;
   username_ = expected_username;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
-      .WillOnce([this](base::Value& report,
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
+      .WillOnce([this](content::BrowserContext* context, base::Value& report,
                        base::OnceCallback<void(bool)>& callback) {
         ValidateReport(&report);
         if (!done_closure_.is_null())
@@ -142,21 +143,21 @@
   content_size_ = expected_content_size;
   result_ = expected_result;
   username_ = expected_username;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
-      .WillOnce([this](base::Value& report,
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
+      .WillOnce([this](content::BrowserContext* context, base::Value& report,
                        base::OnceCallback<void(bool)>& callback) {
         ValidateReport(&report);
       })
-      .WillOnce(
-          [this, expected_dlp_verdict](
-              base::Value& report, base::OnceCallback<void(bool)>& callback) {
-            event_key_ = SafeBrowsingPrivateEventRouter::kKeySensitiveDataEvent;
-            threat_type_ = base::nullopt;
-            dlp_verdict_ = expected_dlp_verdict;
-            ValidateReport(&report);
-            if (!done_closure_.is_null())
-              done_closure_.Run();
-          });
+      .WillOnce([this, expected_dlp_verdict](
+                    content::BrowserContext* context, base::Value& report,
+                    base::OnceCallback<void(bool)>& callback) {
+        event_key_ = SafeBrowsingPrivateEventRouter::kKeySensitiveDataEvent;
+        threat_type_ = base::nullopt;
+        dlp_verdict_ = expected_dlp_verdict;
+        ValidateReport(&report);
+        if (!done_closure_.is_null())
+          done_closure_.Run();
+      });
 }
 
 void EventReportValidator::
@@ -182,13 +183,13 @@
   result_ = expected_result;
   dlp_verdict_ = expected_dlp_verdict;
   username_ = expected_username;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
-      .WillOnce([this](base::Value& report,
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
+      .WillOnce([this](content::BrowserContext* context, base::Value& report,
                        base::OnceCallback<void(bool)>& callback) {
         ValidateReport(&report);
       })
       .WillOnce([this, expected_threat_type](
-                    base::Value& report,
+                    content::BrowserContext* context, base::Value& report,
                     base::OnceCallback<void(bool)>& callback) {
         event_key_ = SafeBrowsingPrivateEventRouter::kKeyDangerousDownloadEvent;
         threat_type_ = expected_threat_type;
@@ -219,8 +220,8 @@
   content_size_ = expected_content_size;
   result_ = expected_result;
   username_ = expected_username;
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _))
-      .WillOnce([this](base::Value& report,
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _))
+      .WillOnce([this](content::BrowserContext* context, base::Value& report,
                        base::OnceCallback<void(bool)>& callback) {
         ValidateReport(&report);
         if (!done_closure_.is_null())
@@ -333,17 +334,17 @@
 }
 
 void EventReportValidator::ExpectNoReport() {
-  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _)).Times(0);
+  EXPECT_CALL(*client_, UploadSecurityEventReport_(_, _, _)).Times(0);
 }
 
 void EventReportValidator::SetDoneClosure(base::RepeatingClosure closure) {
   done_closure_ = std::move(closure);
 }
 
-void SetAnalysisConnector(enterprise_connectors::AnalysisConnector connector,
+void SetAnalysisConnector(PrefService* prefs,
+                          enterprise_connectors::AnalysisConnector connector,
                           const std::string& pref_value) {
-  ListPrefUpdate settings_list(g_browser_process->local_state(),
-                               ConnectorPref(connector));
+  ListPrefUpdate settings_list(prefs, ConnectorPref(connector));
   DCHECK(settings_list.Get());
   if (!settings_list->empty())
     settings_list->Clear();
@@ -351,8 +352,8 @@
   settings_list->Append(*base::JSONReader::Read(pref_value));
 }
 
-void SetOnSecurityEventReporting(bool enabled) {
-  ListPrefUpdate settings_list(g_browser_process->local_state(),
+void SetOnSecurityEventReporting(PrefService* prefs, bool enabled) {
+  ListPrefUpdate settings_list(prefs,
                                enterprise_connectors::kOnSecurityEventPref);
   DCHECK(settings_list.Get());
   if (enabled) {
@@ -369,9 +370,10 @@
 }
 
 void ClearAnalysisConnector(
+    PrefService* prefs,
+
     enterprise_connectors::AnalysisConnector connector) {
-  ListPrefUpdate settings_list(g_browser_process->local_state(),
-                               ConnectorPref(connector));
+  ListPrefUpdate settings_list(prefs, ConnectorPref(connector));
   DCHECK(settings_list.Get());
   settings_list->Clear();
 }
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.h b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.h
index bd983f4..7fd6b00 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.h
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.h
@@ -146,10 +146,12 @@
 };
 
 // Helper functions that set Connector policies for testing.
-void SetAnalysisConnector(enterprise_connectors::AnalysisConnector connector,
+void SetAnalysisConnector(PrefService* prefs,
+                          enterprise_connectors::AnalysisConnector connector,
                           const std::string& pref_value);
-void SetOnSecurityEventReporting(bool enabled);
-void ClearAnalysisConnector(enterprise_connectors::AnalysisConnector connector);
+void SetOnSecurityEventReporting(PrefService* prefs, bool enabled);
+void ClearAnalysisConnector(PrefService* prefs,
+                            enterprise_connectors::AnalysisConnector connector);
 
 }  // namespace safe_browsing
 
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_utils.cc b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_utils.cc
index b1e64e0a..64607585 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_utils.cc
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_utils.cc
@@ -118,16 +118,19 @@
                        return (c >= '0' && c <= '9') ||
                               (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f');
                      }));
+  auto* router =
+      extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(profile);
+  if (!router)
+    return;
 
   for (const auto& result : response.results()) {
     // Only report results with triggered rules.
     if (result.triggered_rules().empty())
       continue;
 
-    extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(profile)
-        ->OnAnalysisConnectorWarningBypassed(
-            url, file_name, download_digest_sha256, mime_type, trigger,
-            access_point, result, content_size);
+    router->OnAnalysisConnectorWarningBypassed(
+        url, file_name, download_digest_sha256, mime_type, trigger,
+        access_point, result, content_size);
   }
 }
 
diff --git a/chrome/browser/safe_browsing/download_protection/deep_scanning_browsertest.cc b/chrome/browser/safe_browsing/download_protection/deep_scanning_browsertest.cc
index 47c6b7c5..adf5f154 100644
--- a/chrome/browser/safe_browsing/download_protection/deep_scanning_browsertest.cc
+++ b/chrome/browser/safe_browsing/download_protection/deep_scanning_browsertest.cc
@@ -116,7 +116,7 @@
   }
 
   void SetUpReporting() {
-    SetOnSecurityEventReporting(true);
+    SetOnSecurityEventReporting(browser()->profile()->GetPrefs(), true);
     client_ = std::make_unique<policy::MockCloudPolicyClient>();
     extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(
         browser()->profile())
@@ -158,7 +158,8 @@
 
     SetDMTokenForTesting(
         policy::DMToken::CreateValidTokenForTesting("dm_token"));
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED,
+    SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED,
                          R"({
                               "service_provider": "google",
                               "enable": [
@@ -754,7 +755,8 @@
     browser()->profile()->GetPrefs()->SetInteger(
         prefs::kDownloadRestrictions,
         static_cast<int>(DownloadPrefs::DownloadRestriction::DANGEROUS_FILES));
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED,
+    SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED,
                          R"({
                               "service_provider": "google",
                               "enable": [
@@ -991,7 +993,8 @@
 
 IN_PROC_BROWSER_TEST_P(MetadataCheckAndDeepScanningBrowserTest, Test) {
   SetUpReporting();
-  SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED,
+  SetAnalysisConnector(browser()->profile()->GetPrefs(),
+                       enterprise_connectors::FILE_DOWNLOADED,
                        R"({
                             "service_provider": "google",
                             "enable": [
diff --git a/chrome/browser/safe_browsing/download_protection/deep_scanning_request.cc b/chrome/browser/safe_browsing/download_protection/deep_scanning_request.cc
index 56ac5232..a170cc7 100644
--- a/chrome/browser/safe_browsing/download_protection/deep_scanning_request.cc
+++ b/chrome/browser/safe_browsing/download_protection/deep_scanning_request.cc
@@ -13,7 +13,7 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/download/download_prefs.h"
 #include "chrome/browser/enterprise/connectors/common.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router.h"
 #include "chrome/browser/policy/dm_token_utils.h"
 #include "chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.h"
@@ -167,18 +167,21 @@
 /* static */
 base::Optional<enterprise_connectors::AnalysisSettings>
 DeepScanningRequest::ShouldUploadBinary(download::DownloadItem* item) {
-  auto* connectors_manager =
-      enterprise_connectors::ConnectorsManager::GetInstance();
+  auto* service =
+      enterprise_connectors::ConnectorsServiceFactory::GetForBrowserContext(
+          content::DownloadItemUtils::GetBrowserContext(item));
 
   // If the download Connector is not enabled, don't scan.
-  if (!connectors_manager->IsConnectorEnabled(
-          enterprise_connectors::AnalysisConnector::FILE_DOWNLOADED))
+  if (!service ||
+      !service->IsConnectorEnabled(
+          enterprise_connectors::AnalysisConnector::FILE_DOWNLOADED)) {
     return base::nullopt;
+  }
 
   // Check that item->GetURL() matches the appropriate URL patterns by getting
   // settings. No settings means no matches were found and that the downloaded
   // file shouldn't be uploaded.
-  return connectors_manager->GetAnalysisSettings(
+  return service->GetAnalysisSettings(
       item->GetURL(),
       enterprise_connectors::AnalysisConnector::FILE_DOWNLOADED);
 }
diff --git a/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc b/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc
index 6573154..01f74db 100644
--- a/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc
+++ b/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc
@@ -11,8 +11,8 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/download/download_prefs.h"
 #include "chrome/browser/enterprise/connectors/common.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
 #include "chrome/browser/enterprise/connectors/connectors_prefs.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router.h"
 #include "chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_factory.h"
 #include "chrome/browser/policy/dm_token_utils.h"
@@ -183,14 +183,10 @@
 
     SetDMTokenForTesting(
         policy::DMToken::CreateValidTokenForTesting("dm_token"));
-
-    enterprise_connectors::ConnectorsManager::GetInstance()->SetUpForTesting();
   }
 
   void TearDown() override {
     SetDMTokenForTesting(policy::DMToken::CreateEmptyTokenForTesting());
-    enterprise_connectors::ConnectorsManager::GetInstance()
-        ->TearDownForTesting();
   }
 
   void AddUrlToProfilePrefList(const char* pref_name, const GURL& url) {
@@ -240,14 +236,11 @@
   void SetLastResult(DownloadCheckResult result) { last_result_ = result; }
 
   base::Optional<enterprise_connectors::AnalysisSettings> settings() {
-    // Clear the cache before getting settings so there's no race with the pref
-    // change and the cached values being updated.
-    enterprise_connectors::ConnectorsManager::GetInstance()
-        ->ClearCacheForTesting();
-
     return DeepScanningRequest::ShouldUploadBinary(&item_);
   }
 
+  TestingProfile* profile() { return profile_; }
+
  protected:
   content::BrowserTaskEnvironment task_environment_;
   TestingProfileManager profile_manager_;
@@ -268,7 +261,8 @@
 };
 
 TEST_F(DeepScanningRequestTest, ChecksFeatureFlags) {
-  SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED,
+  SetAnalysisConnector(profile_->GetPrefs(),
+                       enterprise_connectors::FILE_DOWNLOADED,
                        kScanForDlpAndMalware);
 
   // Try each request with settings indicating both DLP and Malware requests
@@ -319,7 +313,8 @@
   EnableAllFeatures();
 
   {
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED,
+    SetAnalysisConnector(profile_->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED,
                          kScanForDlpAndMalware);
     DeepScanningRequest request(
         &item_, DeepScanningRequest::DeepScanTrigger::TRIGGER_POLICY,
@@ -343,7 +338,8 @@
   }
 
   {
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED,
+    SetAnalysisConnector(profile_->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED,
                          kScanForMalware);
     DeepScanningRequest request(
         &item_, DeepScanningRequest::DeepScanTrigger::TRIGGER_POLICY,
@@ -359,7 +355,8 @@
   }
 
   {
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED, kScanForDlp);
+    SetAnalysisConnector(profile_->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED, kScanForDlp);
     DeepScanningRequest request(
         &item_, DeepScanningRequest::DeepScanTrigger::TRIGGER_POLICY,
         base::DoNothing(), &download_protection_service_, settings().value());
@@ -373,7 +370,8 @@
   }
 
   {
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED, kNoScan);
+    SetAnalysisConnector(profile_->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED, kNoScan);
     EXPECT_FALSE(settings().has_value());
     DeepScanningRequest request(
         &item_, DeepScanningRequest::DeepScanTrigger::TRIGGER_POLICY,
@@ -444,7 +442,7 @@
     download_protection_service_.GetFakeBinaryUploadService()
         ->SetAuthForTesting(true);
 
-    SetOnSecurityEventReporting(true);
+    SetOnSecurityEventReporting(profile_->GetPrefs(), true);
     EnableAllFeatures();
   }
 
@@ -460,7 +458,8 @@
 };
 
 TEST_F(DeepScanningReportingTest, ProcessesResponseCorrectly) {
-  SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED,
+  SetAnalysisConnector(profile_->GetPrefs(),
+                       enterprise_connectors::FILE_DOWNLOADED,
                        kScanForDlpAndMalware);
 
   {
@@ -807,7 +806,8 @@
         DownloadPrefs::DownloadRestriction::MALICIOUS_FILES));
 
 TEST_P(DeepScanningDownloadRestrictionsTest, GeneratesCorrectReport) {
-  SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED, kScanForMalware);
+  SetAnalysisConnector(profile_->GetPrefs(),
+                       enterprise_connectors::FILE_DOWNLOADED, kScanForMalware);
   {
     DeepScanningRequest request(
         &item_, DeepScanningRequest::DeepScanTrigger::TRIGGER_POLICY,
@@ -893,7 +893,8 @@
 TEST_F(DeepScanningRequestTest, ShouldUploadBinary_MalwareListPolicy) {
   SetFeatures(/*enabled*/ {enterprise_connectors::kEnterpriseConnectorsEnabled},
               /*disabled*/ {});
-  SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED, kScanForMalware);
+  SetAnalysisConnector(profile_->GetPrefs(),
+                       enterprise_connectors::FILE_DOWNLOADED, kScanForMalware);
 
   content::DownloadItemUtils::AttachInfo(&item_, profile_, nullptr);
   EXPECT_CALL(item_, GetURL()).WillRepeatedly(ReturnRef(download_url_));
@@ -908,7 +909,8 @@
 
   // With the new malware policy list set, the item should not be uploaded since
   // DeepScanningRequest honours that policy.
-  SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED,
+  SetAnalysisConnector(profile_->GetPrefs(),
+                       enterprise_connectors::FILE_DOWNLOADED,
                        base::StringPrintf(
                            R"({
                             "service_provider": "google",
@@ -924,7 +926,8 @@
 }
 
 TEST_F(DeepScanningRequestTest, PopulatesRequest) {
-  SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED,
+  SetAnalysisConnector(profile_->GetPrefs(),
+                       enterprise_connectors::FILE_DOWNLOADED,
                        kScanForDlpAndMalware);
 
   EnableAllFeatures();
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_service.cc b/chrome/browser/safe_browsing/download_protection/download_protection_service.cc
index 9a4e1e38..94aef6c 100644
--- a/chrome/browser/safe_browsing/download_protection/download_protection_service.cc
+++ b/chrome/browser/safe_browsing/download_protection/download_protection_service.cc
@@ -554,11 +554,14 @@
     const download::DownloadItem* item,
     Profile* profile) {
   std::string raw_digest_sha256 = item->GetHash();
-  extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(profile)
-      ->OnDangerousDownloadOpened(
-          item->GetURL(), item->GetTargetFilePath().AsUTF8Unsafe(),
-          base::HexEncode(raw_digest_sha256.data(), raw_digest_sha256.size()),
-          item->GetMimeType(), item->GetTotalBytes());
+  auto* router =
+      extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(profile);
+  if (router) {
+    router->OnDangerousDownloadOpened(
+        item->GetURL(), item->GetTargetFilePath().AsUTF8Unsafe(),
+        base::HexEncode(raw_digest_sha256.data(), raw_digest_sha256.size()),
+        item->GetMimeType(), item->GetTotalBytes());
+  }
 }
 
 bool DownloadProtectionService::MaybeBeginFeedbackForDownload(
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc b/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc
index 67b97e5..afbbc06d 100644
--- a/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc
+++ b/chrome/browser/safe_browsing/download_protection/download_protection_service_unittest.cc
@@ -37,7 +37,7 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router_factory.h"
 #include "chrome/browser/history/history_service_factory.h"
 #include "chrome/browser/password_manager/account_password_store_factory.h"
@@ -371,13 +371,9 @@
 
     identity_test_env_adaptor_ =
         std::make_unique<IdentityTestEnvironmentProfileAdaptor>(profile());
-
-    enterprise_connectors::ConnectorsManager::GetInstance()->SetUpForTesting();
   }
 
   void TearDown() override {
-    enterprise_connectors::ConnectorsManager::GetInstance()
-        ->TearDownForTesting();
     client_download_request_subscription_ = {};
     ppapi_download_request_subscription_ = {};
     native_file_system_write_request_subscription_ = {};
@@ -3015,7 +3011,8 @@
       enterprise_connectors::ContentAnalysisResponse());
 
   {
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED, R"(
+    SetAnalysisConnector(profile()->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED, R"(
                          {
                            "service_provider": "google",
                            "enable": [
@@ -3036,7 +3033,8 @@
   }
 
   {
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED, R"(
+    SetAnalysisConnector(profile()->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED, R"(
                          {
                            "service_provider": "google",
                            "enable": [
@@ -3088,7 +3086,8 @@
       enterprise_connectors::ContentAnalysisResponse());
 
   {
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED, R"(
+    SetAnalysisConnector(profile()->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED, R"(
                          {
                            "service_provider": "google",
                            "enable": [
@@ -3109,7 +3108,8 @@
   }
 
   {
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED, R"(
+    SetAnalysisConnector(profile()->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED, R"(
                          {
                            "service_provider": "google",
                            "enable": [
@@ -3168,7 +3168,8 @@
       .Times(2);
 
   {
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED, R"(
+    SetAnalysisConnector(profile()->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED, R"(
                          {
                            "service_provider": "google",
                            "enable": [
@@ -3189,7 +3190,8 @@
   }
 
   {
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED, R"(
+    SetAnalysisConnector(profile()->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED, R"(
                          {
                            "service_provider": "google",
                            "enable": [
@@ -3897,7 +3899,8 @@
               ExtractImageFeatures(
                   tmp_path_, BinaryFeatureExtractor::kDefaultOptions, _, _));
 
-  SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED,
+  SetAnalysisConnector(profile()->GetPrefs(),
+                       enterprise_connectors::FILE_DOWNLOADED,
                        R"({
                             "service_provider": "google",
                             "enable": [
@@ -3952,7 +3955,8 @@
               ExtractImageFeatures(
                   tmp_path_, BinaryFeatureExtractor::kDefaultOptions, _, _));
 
-  ClearAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED);
+  ClearAnalysisConnector(profile()->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED);
 
   TestBinaryUploadService* test_upload_service =
       static_cast<TestBinaryUploadService*>(
@@ -3999,7 +4003,8 @@
                 ExtractImageFeatures(
                     tmp_path_, BinaryFeatureExtractor::kDefaultOptions, _, _));
 
-    SetAnalysisConnector(enterprise_connectors::FILE_DOWNLOADED, R"(
+    SetAnalysisConnector(profile()->GetPrefs(),
+                         enterprise_connectors::FILE_DOWNLOADED, R"(
                          {
                            "service_provider": "google",
                            "enable": [
diff --git a/chrome/browser/safe_browsing/download_protection/download_reporter.cc b/chrome/browser/safe_browsing/download_protection/download_reporter.cc
index 32fa9fc..2d7d418 100644
--- a/chrome/browser/safe_browsing/download_protection/download_reporter.cc
+++ b/chrome/browser/safe_browsing/download_protection/download_reporter.cc
@@ -69,13 +69,17 @@
   Profile* profile = Profile::FromBrowserContext(browser_context);
   if (profile) {
     std::string raw_digest_sha256 = download->GetHash();
-    extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(profile)
-        ->OnDangerousDownloadEvent(
-            download->GetURL(), download->GetTargetFilePath().AsUTF8Unsafe(),
-            base::HexEncode(raw_digest_sha256.data(), raw_digest_sha256.size()),
-            DangerTypeToThreatType(download->GetDangerType()),
-            download->GetMimeType(), download->GetTotalBytes(),
-            EventResult::WARNED);
+    auto* router =
+        extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(
+            profile);
+    if (router) {
+      router->OnDangerousDownloadEvent(
+          download->GetURL(), download->GetTargetFilePath().AsUTF8Unsafe(),
+          base::HexEncode(raw_digest_sha256.data(), raw_digest_sha256.size()),
+          DangerTypeToThreatType(download->GetDangerType()),
+          download->GetMimeType(), download->GetTotalBytes(),
+          EventResult::WARNED);
+    }
   }
 }
 
@@ -87,12 +91,16 @@
   Profile* profile = Profile::FromBrowserContext(browser_context);
   if (profile) {
     std::string raw_digest_sha256 = download->GetHash();
-    extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(profile)
-        ->OnDangerousDownloadWarningBypassed(
-            download->GetURL(), download->GetTargetFilePath().AsUTF8Unsafe(),
-            base::HexEncode(raw_digest_sha256.data(), raw_digest_sha256.size()),
-            DangerTypeToThreatType(original_danger_type),
-            download->GetMimeType(), download->GetTotalBytes());
+    auto* router =
+        extensions::SafeBrowsingPrivateEventRouterFactory::GetForProfile(
+            profile);
+    if (router) {
+      router->OnDangerousDownloadWarningBypassed(
+          download->GetURL(), download->GetTargetFilePath().AsUTF8Unsafe(),
+          base::HexEncode(raw_digest_sha256.data(), raw_digest_sha256.size()),
+          DangerTypeToThreatType(original_danger_type), download->GetMimeType(),
+          download->GetTotalBytes());
+    }
   }
 }
 
diff --git a/chrome/browser/sharing/sharing_fcm_sender_unittest.cc b/chrome/browser/sharing/sharing_fcm_sender_unittest.cc
index 3753d4a4..c9b6441 100644
--- a/chrome/browser/sharing/sharing_fcm_sender_unittest.cc
+++ b/chrome/browser/sharing/sharing_fcm_sender_unittest.cc
@@ -116,9 +116,9 @@
       std::unique_ptr<sync_pb::SharingMessageSpecifics> specifics,
       CommitFinishedCallback on_commit_callback) override {
     specifics_ = std::move(*specifics);
-    sync_pb::SharingMessageCommitError commit_erorr;
-    commit_erorr.set_error_code(error_code_);
-    std::move(on_commit_callback).Run(commit_erorr);
+    sync_pb::SharingMessageCommitError commit_error;
+    commit_error.set_error_code(error_code_);
+    std::move(on_commit_callback).Run(commit_error);
   }
 
   // SharingMessageBridge:
@@ -506,7 +506,7 @@
                          testing::ValuesIn(kWebPushResultTestData));
 
 struct CommitErrorCodeTestData {
-  const sync_pb::SharingMessageCommitError::ErrorCode commit_erorr_code;
+  const sync_pb::SharingMessageCommitError::ErrorCode commit_error_code;
   const SharingSendMessageResult expected_result;
 } kCommitErrorCodeTestData[] = {
     {sync_pb::SharingMessageCommitError::NONE,
@@ -541,7 +541,7 @@
 TEST_P(SharingFCMSenderCommitErrorCodeTest, ErrorCodeTest) {
   test_sync_service_.SetActiveDataTypes({syncer::SHARING_MESSAGE});
 
-  fake_sharing_message_bridge_.set_error_code(GetParam().commit_erorr_code);
+  fake_sharing_message_bridge_.set_error_code(GetParam().commit_error_code);
 
   chrome_browser_sharing::FCMChannelConfiguration fcm_channel;
   fcm_channel.set_sender_id_fcm_token(kSenderIdFcmToken);
diff --git a/chrome/browser/signin/account_consistency_mode_manager.cc b/chrome/browser/signin/account_consistency_mode_manager.cc
index 7863f7a8..bdebfdc 100644
--- a/chrome/browser/signin/account_consistency_mode_manager.cc
+++ b/chrome/browser/signin/account_consistency_mode_manager.cc
@@ -168,7 +168,7 @@
   // causes crashes if the AccountConsistencyModeManager is instantiated. See
   // https://crbug.com/940026
   return profile->IsRegularProfile() && !profile->IsGuestSession() &&
-         !profile->IsEphemeralGuestProfile() && !profile->IsSystemProfile();
+         !profile->IsSystemProfile();
 }
 
 AccountConsistencyMethod
diff --git a/chrome/browser/signin/account_consistency_mode_manager_unittest.cc b/chrome/browser/signin/account_consistency_mode_manager_unittest.cc
index 6d8aa6eb..f47d179 100644
--- a/chrome/browser/signin/account_consistency_mode_manager_unittest.cc
+++ b/chrome/browser/signin/account_consistency_mode_manager_unittest.cc
@@ -172,7 +172,8 @@
       AccountConsistencyModeManager::IsDiceMigrationCompleted(profile.get()));
 }
 
-TEST(AccountConsistencyModeManagerTest, DiceOnlyForRegularProfile) {
+TEST(AccountConsistencyModeManagerTest,
+     DiceOnlyForRegularAndEphemeralGuestProfile) {
   content::BrowserTaskEnvironment task_environment;
 
   {
@@ -209,8 +210,12 @@
         otr_profile));
   }
 
+  // OTR Guest profile.
   {
-    // Guest profile.
+    base::test::ScopedFeatureList scoped_feature_list;
+    TestingProfile::SetScopedFeatureListForEphemeralGuestProfiles(
+        scoped_feature_list, false);
+
     TestingProfile::Builder profile_builder;
     profile_builder.SetGuestSession();
     std::unique_ptr<Profile> profile = profile_builder.Build();
@@ -224,6 +229,25 @@
         profile.get()));
   }
 
+  // Ephemeral Guest profile.
+  {
+    base::test::ScopedFeatureList scoped_feature_list;
+    if (TestingProfile::SetScopedFeatureListForEphemeralGuestProfiles(
+            scoped_feature_list, true)) {
+      TestingProfile::Builder profile_builder;
+      profile_builder.SetGuestSession();
+      std::unique_ptr<Profile> profile = profile_builder.Build();
+      ASSERT_TRUE(profile->IsEphemeralGuestProfile());
+      EXPECT_TRUE(AccountConsistencyModeManager::IsDiceEnabledForProfile(
+          profile.get()));
+      EXPECT_EQ(
+          signin::AccountConsistencyMethod::kDice,
+          AccountConsistencyModeManager::GetMethodForProfile(profile.get()));
+      EXPECT_TRUE(AccountConsistencyModeManager::ShouldBuildServiceForProfile(
+          profile.get()));
+    }
+  }
+
   {
     // Legacy supervised profile.
     TestingProfile::Builder profile_builder;
diff --git a/chrome/browser/speech/extension_api/tts_extension_api.cc b/chrome/browser/speech/extension_api/tts_extension_api.cc
index 1d71a2e..7bc2770 100644
--- a/chrome/browser/speech/extension_api/tts_extension_api.cc
+++ b/chrome/browser/speech/extension_api/tts_extension_api.cc
@@ -293,7 +293,8 @@
   utterance->SetDesiredEventTypes(desired_event_types);
   utterance->SetEngineId(voice_extension_id);
   utterance->SetOptions(options.get());
-  utterance->SetEventDelegate(new TtsExtensionEventHandler(extension_id()));
+  if (extension())
+    utterance->SetEventDelegate(new TtsExtensionEventHandler(extension_id()));
 
   content::TtsController* controller = content::TtsController::GetInstance();
   controller->SpeakOrEnqueue(std::move(utterance));
diff --git a/chrome/browser/sync_file_system/local/canned_syncable_file_system.cc b/chrome/browser/sync_file_system/local/canned_syncable_file_system.cc
index b861b4eb..ef38225 100644
--- a/chrome/browser/sync_file_system/local/canned_syncable_file_system.cc
+++ b/chrome/browser/sync_file_system/local/canned_syncable_file_system.cc
@@ -106,13 +106,13 @@
 
 void OnCreateSnapshotFileAndVerifyData(
     const std::string& expected_data,
-    const CannedSyncableFileSystem::StatusCallback& callback,
+    CannedSyncableFileSystem::StatusCallback callback,
     base::File::Error result,
     const base::File::Info& file_info,
     const base::FilePath& platform_path,
     scoped_refptr<storage::ShareableFileReference> /* file_ref */) {
   if (result != base::File::FILE_OK) {
-    callback.Run(result);
+    std::move(callback).Run(result);
     return;
   }
   EXPECT_EQ(expected_data.size(), static_cast<size_t>(file_info.size));
@@ -120,13 +120,13 @@
   const bool read_status = base::ReadFileToString(platform_path, &data);
   EXPECT_TRUE(read_status);
   EXPECT_EQ(expected_data, data);
-  callback.Run(result);
+  std::move(callback).Run(result);
 }
 
 void OnCreateSnapshotFile(
     base::File::Info* file_info_out,
     base::FilePath* platform_path_out,
-    const CannedSyncableFileSystem::StatusCallback& callback,
+    CannedSyncableFileSystem::StatusCallback callback,
     base::File::Error result,
     const base::File::Info& file_info,
     const base::FilePath& platform_path,
@@ -136,21 +136,29 @@
   DCHECK(platform_path_out);
   *file_info_out = file_info;
   *platform_path_out = platform_path;
-  callback.Run(result);
+  std::move(callback).Run(result);
 }
 
-void OnReadDirectory(CannedSyncableFileSystem::FileEntryList* entries_out,
-                     CannedSyncableFileSystem::StatusCallback callback,
-                     base::File::Error error,
-                     storage::FileSystemOperation::FileEntryList entries,
-                     bool has_more) {
-  DCHECK(entries_out);
-  entries_out->reserve(entries_out->size() + entries.size());
-  std::copy(entries.begin(), entries.end(), std::back_inserter(*entries_out));
+class DirectoryHelper {
+ public:
+  explicit DirectoryHelper(CannedSyncableFileSystem::StatusCallback callback)
+      : callback_(std::move(callback)) {}
 
-  if (!has_more)
-    std::move(callback).Run(error);
-}
+  void OnReadDirectory(CannedSyncableFileSystem::FileEntryList* entries_out,
+                       base::File::Error error,
+                       storage::FileSystemOperation::FileEntryList entries,
+                       bool has_more) {
+    DCHECK(entries_out);
+    entries_out->reserve(entries_out->size() + entries.size());
+    std::copy(entries.begin(), entries.end(), std::back_inserter(*entries_out));
+
+    if (!has_more)
+      std::move(callback_).Run(error);
+  }
+
+ private:
+  CannedSyncableFileSystem::StatusCallback callback_;
+};
 
 class WriteHelper {
  public:
@@ -167,7 +175,7 @@
 
   ScopedTextBlob* scoped_text_blob() const { return blob_data_.get(); }
 
-  void DidWrite(const base::Callback<void(int64_t result)>& completion_callback,
+  void DidWrite(base::OnceCallback<void(int64_t result)> completion_callback,
                 File::Error error,
                 int64_t bytes,
                 bool complete) {
@@ -176,9 +184,9 @@
       if (!complete)
         return;
     }
-    completion_callback.Run(error == base::File::FILE_OK
-                                ? bytes_written_
-                                : static_cast<int64_t>(error));
+    std::move(completion_callback)
+        .Run(error == base::File::FILE_OK ? bytes_written_
+                                          : static_cast<int64_t>(error));
   }
 
  private:
@@ -518,143 +526,144 @@
       storage::OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT, std::move(callback));
 }
 
-void CannedSyncableFileSystem::DoCreateDirectory(
-    const FileSystemURL& url,
-    const StatusCallback& callback) {
+void CannedSyncableFileSystem::DoCreateDirectory(const FileSystemURL& url,
+                                                 StatusCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
   operation_runner()->CreateDirectory(
-      url, false /* exclusive */, false /* recursive */, callback);
+      url, false /* exclusive */, false /* recursive */, std::move(callback));
 }
 
-void CannedSyncableFileSystem::DoCreateFile(
-    const FileSystemURL& url,
-    const StatusCallback& callback) {
+void CannedSyncableFileSystem::DoCreateFile(const FileSystemURL& url,
+                                            StatusCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
-  operation_runner()->CreateFile(url, false /* exclusive */, callback);
+  operation_runner()->CreateFile(url, false /* exclusive */,
+                                 std::move(callback));
 }
 
-void CannedSyncableFileSystem::DoCopy(
-    const FileSystemURL& src_url,
-    const FileSystemURL& dest_url,
-    const StatusCallback& callback) {
+void CannedSyncableFileSystem::DoCopy(const FileSystemURL& src_url,
+                                      const FileSystemURL& dest_url,
+                                      StatusCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
   operation_runner()->Copy(
       src_url, dest_url, storage::FileSystemOperation::OPTION_NONE,
       storage::FileSystemOperation::ERROR_BEHAVIOR_ABORT,
-      storage::FileSystemOperationRunner::CopyProgressCallback(), callback);
+      storage::FileSystemOperationRunner::CopyProgressCallback(),
+      std::move(callback));
 }
 
-void CannedSyncableFileSystem::DoMove(
-    const FileSystemURL& src_url,
-    const FileSystemURL& dest_url,
-    const StatusCallback& callback) {
+void CannedSyncableFileSystem::DoMove(const FileSystemURL& src_url,
+                                      const FileSystemURL& dest_url,
+                                      StatusCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
-  operation_runner()->Move(
-      src_url, dest_url, storage::FileSystemOperation::OPTION_NONE, callback);
+  operation_runner()->Move(src_url, dest_url,
+                           storage::FileSystemOperation::OPTION_NONE,
+                           std::move(callback));
 }
 
 void CannedSyncableFileSystem::DoTruncateFile(const FileSystemURL& url,
                                               int64_t size,
-                                              const StatusCallback& callback) {
+                                              StatusCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
-  operation_runner()->Truncate(url, size, callback);
+  operation_runner()->Truncate(url, size, std::move(callback));
 }
 
-void CannedSyncableFileSystem::DoTouchFile(
-    const FileSystemURL& url,
-    const base::Time& last_access_time,
-    const base::Time& last_modified_time,
-    const StatusCallback& callback) {
+void CannedSyncableFileSystem::DoTouchFile(const FileSystemURL& url,
+                                           const base::Time& last_access_time,
+                                           const base::Time& last_modified_time,
+                                           StatusCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
-  operation_runner()->TouchFile(url, last_access_time,
-                                last_modified_time, callback);
+  operation_runner()->TouchFile(url, last_access_time, last_modified_time,
+                                std::move(callback));
 }
 
-void CannedSyncableFileSystem::DoRemove(
-    const FileSystemURL& url, bool recursive,
-    const StatusCallback& callback) {
+void CannedSyncableFileSystem::DoRemove(const FileSystemURL& url,
+                                        bool recursive,
+                                        StatusCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
-  operation_runner()->Remove(url, recursive, callback);
+  operation_runner()->Remove(url, recursive, std::move(callback));
 }
 
-void CannedSyncableFileSystem::DoFileExists(
-    const FileSystemURL& url, const StatusCallback& callback) {
+void CannedSyncableFileSystem::DoFileExists(const FileSystemURL& url,
+                                            StatusCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
-  operation_runner()->FileExists(url, callback);
+  operation_runner()->FileExists(url, std::move(callback));
 }
 
-void CannedSyncableFileSystem::DoDirectoryExists(
-    const FileSystemURL& url, const StatusCallback& callback) {
+void CannedSyncableFileSystem::DoDirectoryExists(const FileSystemURL& url,
+                                                 StatusCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
-  operation_runner()->DirectoryExists(url, callback);
+  operation_runner()->DirectoryExists(url, std::move(callback));
 }
 
-void CannedSyncableFileSystem::DoVerifyFile(
-    const FileSystemURL& url,
-    const std::string& expected_data,
-    const StatusCallback& callback) {
+void CannedSyncableFileSystem::DoVerifyFile(const FileSystemURL& url,
+                                            const std::string& expected_data,
+                                            StatusCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
   operation_runner()->CreateSnapshotFile(
       url, base::BindOnce(&OnCreateSnapshotFileAndVerifyData, expected_data,
-                          callback));
+                          std::move(callback)));
 }
 
 void CannedSyncableFileSystem::DoGetMetadataAndPlatformPath(
     const FileSystemURL& url,
     base::File::Info* info,
     base::FilePath* platform_path,
-    const StatusCallback& callback) {
+    StatusCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
   operation_runner()->CreateSnapshotFile(
-      url,
-      base::BindOnce(&OnCreateSnapshotFile, info, platform_path, callback));
+      url, base::BindOnce(&OnCreateSnapshotFile, info, platform_path,
+                          std::move(callback)));
 }
 
-void CannedSyncableFileSystem::DoReadDirectory(
-    const FileSystemURL& url,
-    FileEntryList* entries,
-    const StatusCallback& callback) {
+void CannedSyncableFileSystem::DoReadDirectory(const FileSystemURL& url,
+                                               FileEntryList* entries,
+                                               StatusCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
+
+  auto directory_helper =
+      std::make_unique<DirectoryHelper>(std::move(callback));
+
   operation_runner()->ReadDirectory(
-      url, base::BindRepeating(&OnReadDirectory, entries, callback));
+      url, base::BindRepeating(&DirectoryHelper::OnReadDirectory,
+                               std::move(directory_helper), entries));
 }
 
 void CannedSyncableFileSystem::DoWrite(
     const FileSystemURL& url,
     std::unique_ptr<storage::BlobDataHandle> blob_data_handle,
-    const WriteCallback& callback) {
+    WriteCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
   WriteHelper* helper = new WriteHelper;
   operation_runner()->Write(
       url, std::move(blob_data_handle), 0,
-      base::Bind(&WriteHelper::DidWrite, base::Owned(helper), callback));
+      base::BindRepeating(&WriteHelper::DidWrite, base::Owned(helper),
+                          std::move(callback)));
 }
 
-void CannedSyncableFileSystem::DoWriteString(
-    const FileSystemURL& url,
-    const std::string& data,
-    const WriteCallback& callback) {
+void CannedSyncableFileSystem::DoWriteString(const FileSystemURL& url,
+                                             const std::string& data,
+                                             WriteCallback callback) {
   EXPECT_TRUE(io_task_runner_->RunsTasksInCurrentSequence());
   EXPECT_TRUE(is_filesystem_opened_);
   auto blob_storage_context = std::make_unique<storage::BlobStorageContext>();
   WriteHelper* helper = new WriteHelper(std::move(blob_storage_context), data);
-  operation_runner()->Write(url,
-                            helper->scoped_text_blob()->GetBlobDataHandle(), 0,
-                            base::BindRepeating(&WriteHelper::DidWrite,
-                                                base::Owned(helper), callback));
+  operation_runner()->Write(
+      url, helper->scoped_text_blob()->GetBlobDataHandle(), 0,
+      base::BindRepeating(&WriteHelper::DidWrite, base::Owned(helper),
+                          std::move(callback)));
 }
 
 void CannedSyncableFileSystem::DoGetUsageAndQuota(
@@ -671,7 +680,7 @@
 
 void CannedSyncableFileSystem::DidOpenFileSystem(
     base::SingleThreadTaskRunner* original_task_runner,
-    const base::Closure& quit_closure,
+    base::OnceClosure quit_closure,
     const GURL& root,
     const std::string& name,
     File::Error result) {
@@ -685,19 +694,19 @@
         FROM_HERE, base::BindOnce(&CannedSyncableFileSystem::DidOpenFileSystem,
                                   base::Unretained(this),
                                   base::RetainedRef(original_task_runner),
-                                  quit_closure, root, name, result));
+                                  std::move(quit_closure), root, name, result));
     return;
   }
   result_ = result;
   root_url_ = root;
-  quit_closure.Run();
+  std::move(quit_closure).Run();
 }
 
 void CannedSyncableFileSystem::DidInitializeFileSystemContext(
-    const base::Closure& quit_closure,
+    base::OnceClosure quit_closure,
     SyncStatusCode status) {
   sync_status_ = status;
-  quit_closure.Run();
+  std::move(quit_closure).Run();
 }
 
 void CannedSyncableFileSystem::InitializeSyncStatusObserver() {
diff --git a/chrome/browser/sync_file_system/local/canned_syncable_file_system.h b/chrome/browser/sync_file_system/local/canned_syncable_file_system.h
index 1ef5bd8..4766da9d 100644
--- a/chrome/browser/sync_file_system/local/canned_syncable_file_system.h
+++ b/chrome/browser/sync_file_system/local/canned_syncable_file_system.h
@@ -55,8 +55,8 @@
   typedef base::OnceCallback<
       void(const GURL& root, const std::string& name, base::File::Error result)>
       OpenFileSystemCallback;
-  typedef base::Callback<void(base::File::Error)> StatusCallback;
-  typedef base::Callback<void(int64_t)> WriteCallback;
+  typedef base::OnceCallback<void(base::File::Error)> StatusCallback;
+  typedef base::RepeatingCallback<void(int64_t)> WriteCallback;
   typedef storage::FileSystemOperation::FileEntryList FileEntryList;
 
   enum QuotaMode {
@@ -162,45 +162,43 @@
   // They can be also called directly if the caller is already on IO thread.
   void DoOpenFileSystem(OpenFileSystemCallback callback);
   void DoCreateDirectory(const storage::FileSystemURL& url,
-                         const StatusCallback& callback);
-  void DoCreateFile(const storage::FileSystemURL& url,
-                    const StatusCallback& callback);
+                         StatusCallback callback);
+  void DoCreateFile(const storage::FileSystemURL& url, StatusCallback callback);
   void DoCopy(const storage::FileSystemURL& src_url,
               const storage::FileSystemURL& dest_url,
-              const StatusCallback& callback);
+              StatusCallback callback);
   void DoMove(const storage::FileSystemURL& src_url,
               const storage::FileSystemURL& dest_url,
-              const StatusCallback& callback);
+              StatusCallback callback);
   void DoTruncateFile(const storage::FileSystemURL& url,
                       int64_t size,
-                      const StatusCallback& callback);
+                      StatusCallback callback);
   void DoTouchFile(const storage::FileSystemURL& url,
                    const base::Time& last_access_time,
                    const base::Time& last_modified_time,
-                   const StatusCallback& callback);
+                   StatusCallback callback);
   void DoRemove(const storage::FileSystemURL& url,
                 bool recursive,
-                const StatusCallback& callback);
-  void DoFileExists(const storage::FileSystemURL& url,
-                    const StatusCallback& callback);
+                StatusCallback callback);
+  void DoFileExists(const storage::FileSystemURL& url, StatusCallback callback);
   void DoDirectoryExists(const storage::FileSystemURL& url,
-                         const StatusCallback& callback);
+                         StatusCallback callback);
   void DoVerifyFile(const storage::FileSystemURL& url,
                     const std::string& expected_data,
-                    const StatusCallback& callback);
+                    StatusCallback callback);
   void DoGetMetadataAndPlatformPath(const storage::FileSystemURL& url,
                                     base::File::Info* info,
                                     base::FilePath* platform_path,
-                                    const StatusCallback& callback);
+                                    StatusCallback callback);
   void DoReadDirectory(const storage::FileSystemURL& url,
                        FileEntryList* entries,
-                       const StatusCallback& callback);
+                       StatusCallback callback);
   void DoWrite(const storage::FileSystemURL& url,
                std::unique_ptr<storage::BlobDataHandle> blob_data_handle,
-               const WriteCallback& callback);
+               WriteCallback callback);
   void DoWriteString(const storage::FileSystemURL& url,
                      const std::string& data,
-                     const WriteCallback& callback);
+                     WriteCallback callback);
   void DoGetUsageAndQuota(int64_t* usage,
                           int64_t* quota,
                           storage::StatusCallback callback);
@@ -211,11 +209,11 @@
 
   // Callbacks.
   void DidOpenFileSystem(base::SingleThreadTaskRunner* original_task_runner,
-                         const base::Closure& quit_closure,
+                         base::OnceClosure quit_closure,
                          const GURL& root,
                          const std::string& name,
                          base::File::Error result);
-  void DidInitializeFileSystemContext(const base::Closure& quit_closure,
+  void DidInitializeFileSystemContext(base::OnceClosure quit_closure,
                                       sync_file_system::SyncStatusCode status);
 
   void InitializeSyncStatusObserver();
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
index d0304353..2e73f916 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
@@ -171,6 +171,7 @@
 <translation id="2157851137955077194">To share something from your phone to another device, turn on sync in Chrome settings on both devices</translation>
 <translation id="2158408438301413340">Chrome couldn’t check all passwords</translation>
 <translation id="2169830938017475061">Now</translation>
+<translation id="2172688499998841696">Image descriptions are off</translation>
 <translation id="2175927920773552910">QR code</translation>
 <translation id="218608176142494674">Sharing</translation>
 <translation id="2195339740518523951">Get Chrome’s strongest security</translation>
@@ -208,6 +209,7 @@
 Touch and hold any word to search. To refine your search, select more or fewer words. To edit your search, open the panel, tap the icon to open in a new tab, and make your changes in the search box.</translation>
 <translation id="2459390580524506445">Enhanced voice search</translation>
 <translation id="246532703174860178">Share</translation>
+<translation id="247737702124049222">Image descriptions are on</translation>
 <translation id="2478076885740497414">Install app</translation>
 <translation id="2479148705183875116">Go to Settings</translation>
 <translation id="2482878487686419369">Notifications</translation>
@@ -313,6 +315,7 @@
 <translation id="3232754137068452469">Web App</translation>
 <translation id="3236059992281584593">1 min left</translation>
 <translation id="3244271242291266297">MM</translation>
+<translation id="3250563604907490871">Image descriptions will resume when you connect to Wi-Fi</translation>
 <translation id="3254409185687681395">Bookmark this page</translation>
 <translation id="3259831549858767975">Make everything on the page smaller</translation>
 <translation id="3264124641674805320">How to download content for later</translation>
@@ -678,7 +681,7 @@
 <translation id="5817918615728894473">Pair</translation>
 <translation id="583281660410589416">Unknown</translation>
 <translation id="5833984609253377421">Share link</translation>
-<translation id="5836192821815272682">Downloading Chrome Update…</translation>
+<translation id="5836192821815272682">Downloading Chrome update…</translation>
 <translation id="5853623416121554550">paused</translation>
 <translation id="5854512288214985237">No statistics or crash reports are sent to Google</translation>
 <translation id="5854790677617711513">Older than 30 days</translation>
@@ -897,6 +900,7 @@
 <translation id="7274013316676448362">Blocked site</translation>
 <translation id="7286572596625053347">Change <ph name="LANGUAGE" />?</translation>
 <translation id="7290209999329137901">Rename unavailable</translation>
+<translation id="7291910923717764901">Image descriptions added for this page</translation>
 <translation id="7293171162284876153">To start sync, turn on 'Sync your Chrome data'.</translation>
 <translation id="7293429513719260019">Select language</translation>
 <translation id="729975465115245577">Your device doesn’t have an app to store the passwords file.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
index c70d241f..f8bff03 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
@@ -171,6 +171,7 @@
 <translation id="2157851137955077194">Ձեր հեռախոսի բովանդակությամբ մեկ այլ սարքի հետ կիսվելու համար միացրեք համաժամացումը երկու սարքերի Chrome-ի կարգավորումներում</translation>
 <translation id="2158408438301413340">Chrome-ին չհաջողվեց ստուգել բոլոր գաղտնաբառերը</translation>
 <translation id="2169830938017475061">Հիմա</translation>
+<translation id="2172688499998841696">Պատկերների նկարագրություններն անջատված են</translation>
 <translation id="2175927920773552910">QR կոդ</translation>
 <translation id="218608176142494674">Ընդհանուր օգտագործում</translation>
 <translation id="2195339740518523951">Ուժեղացրեք Chrome-ի անվտանգությունը</translation>
@@ -208,6 +209,7 @@
 Որոնելու համար հպեք որևէ բառի և պահեք։ Հարցումը հստակեցնելու համար ընտրեք ավելի շատ կամ քիչ բառեր։ Որոնումը փոփոխելու համար բացեք վահանակը, բացեք հավելվածը նոր ներդիրում՝ սեղմելով պատկերակին, այնուհետև կատարեք ձեր փոփոխությունները որոնման դաշտում։</translation>
 <translation id="2459390580524506445">Բարելավված ձայնային որոնում</translation>
 <translation id="246532703174860178">Կիսվել</translation>
+<translation id="247737702124049222">Պատկերների նկարագրությունները միացված են</translation>
 <translation id="2478076885740497414">Տեղադրել հավելվածը</translation>
 <translation id="2479148705183875116">Անցնել կարգավորումներ</translation>
 <translation id="2482878487686419369">Ծանուցումներ</translation>
@@ -313,6 +315,7 @@
 <translation id="3232754137068452469">Վեբ ծրագիր</translation>
 <translation id="3236059992281584593">Մնացել է 1 րոպե</translation>
 <translation id="3244271242291266297">ամիս</translation>
+<translation id="3250563604907490871">Պատկերի նկարագրությունները կցուցադրվեն, երբ միանաք Wi-Fi-ին</translation>
 <translation id="3254409185687681395">Էջանշել այս էջը</translation>
 <translation id="3259831549858767975">Էջում ամեն ինչ փոքրացնել</translation>
 <translation id="3264124641674805320">Ինչպես բովանդակություն ներբեռնել ավելի ուշ դիտման համար</translation>
@@ -897,6 +900,7 @@
 <translation id="7274013316676448362">Արգելափակված կայք</translation>
 <translation id="7286572596625053347">Փոխե՞լ լեզուն (<ph name="LANGUAGE" />)</translation>
 <translation id="7290209999329137901">Հնարավոր չէ վերանվանել</translation>
+<translation id="7291910923717764901">Այս պատկերի համար ավելացված նկարագրությունները</translation>
 <translation id="7293171162284876153">Սկսելու համար միացրեք «Համաժամացնել Chrome-ի տվյալները» կարգավորումը:</translation>
 <translation id="7293429513719260019">Ընտրել լեզուն</translation>
 <translation id="729975465115245577">Ձեր սարքը գաղտնաբառերի ֆայլ պահելու հավելված չունի:</translation>
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_ui_browsertest.cc b/chrome/browser/ui/ash/holding_space/holding_space_ui_browsertest.cc
index 1ce5ae3..8e4db75 100644
--- a/chrome/browser/ui/ash/holding_space/holding_space_ui_browsertest.cc
+++ b/chrome/browser/ui/ash/holding_space/holding_space_ui_browsertest.cc
@@ -250,6 +250,9 @@
 
 // Verifies that drag-and-drop of holding space items works.
 IN_PROC_BROWSER_TEST_P(HoldingSpaceUiDragAndDropBrowserTest, DragAndDrop) {
+  ui::ScopedAnimationDurationScaleMode scoped_animation_duration_scale_mode(
+      ui::ScopedAnimationDurationScaleMode::ZERO_DURATION);
+
   // Verify drag-and-drop of download items.
   HoldingSpaceItem* const download_file = AddDownloadFile();
 
@@ -320,6 +323,9 @@
 
 // Verifies that opening holding space items works.
 IN_PROC_BROWSER_TEST_F(HoldingSpaceUiBrowserTest, OpenItem) {
+  ui::ScopedAnimationDurationScaleMode scoped_animation_duration_scale_mode(
+      ui::ScopedAnimationDurationScaleMode::ZERO_DURATION);
+
   auto* const activation_client = wm::GetActivationClient(
       HoldingSpaceBrowserTestBase::GetRootWindowForNewWindows());
 
diff --git a/chrome/browser/ui/commander/apps_command_source.cc b/chrome/browser/ui/commander/apps_command_source.cc
index fb24652..5889db85 100644
--- a/chrome/browser/ui/commander/apps_command_source.cc
+++ b/chrome/browser/ui/commander/apps_command_source.cc
@@ -32,11 +32,11 @@
   };
 
   CommandSource::CommandResults results;
-  const base::string16& folded_input = base::i18n::FoldCase(input);
   std::vector<gfx::Range> ranges;
+  FuzzyFinder finder(input);
   for (const auto& command_spec : command_map) {
     base::string16 title = base::ASCIIToUTF16(command_spec.title);
-    double score = FuzzyFind(folded_input, title, &ranges);
+    double score = finder.Find(title, &ranges);
     if (score == 0)
       continue;
 
diff --git a/chrome/browser/ui/commander/bookmark_command_source.cc b/chrome/browser/ui/commander/bookmark_command_source.cc
index 107728b..bb62524 100644
--- a/chrome/browser/ui/commander/bookmark_command_source.cc
+++ b/chrome/browser/ui/commander/bookmark_command_source.cc
@@ -49,10 +49,10 @@
   DCHECK(model && model->loaded());
   std::vector<bookmarks::UrlAndTitle> bookmarks;
   model->GetBookmarks(&bookmarks);
-  const base::string16& folded_input = base::i18n::FoldCase(input);
+  FuzzyFinder finder(input);
   std::vector<gfx::Range> ranges;
   for (bookmarks::UrlAndTitle& bookmark : bookmarks) {
-    double score = FuzzyFind(folded_input, bookmark.title, &ranges);
+    double score = finder.Find(bookmark.title, &ranges);
     if (score > 0) {
       auto item = CreateOpenBookmarkItem(bookmark, browser);
       item->score = score;
@@ -83,12 +83,12 @@
     results = GetMatchingBookmarks(browser, input);
   }
 
-  const base::string16& folded_input = base::i18n::FoldCase(input);
+  FuzzyFinder finder(input);
   std::vector<gfx::Range> ranges;
   // TODO(lgrey): Temporarily using an untranslated string since it's not
   // yet clear which commands will ship.
   base::string16 open_title = base::ASCIIToUTF16("Open bookmark...");
-  double score = FuzzyFind(folded_input, open_title, &ranges);
+  double score = finder.Find(open_title, &ranges);
   if (score > 0) {
     auto verb = std::make_unique<CommandItem>();
     verb->title = open_title;
diff --git a/chrome/browser/ui/commander/fuzzy_finder.cc b/chrome/browser/ui/commander/fuzzy_finder.cc
index f1fce38..93a1d46 100644
--- a/chrome/browser/ui/commander/fuzzy_finder.cc
+++ b/chrome/browser/ui/commander/fuzzy_finder.cc
@@ -138,15 +138,16 @@
 
 namespace commander {
 
-double FuzzyFind(const base::string16& needle,
-                 const base::string16& haystack,
-                 std::vector<gfx::Range>* matched_ranges) {
-  if (needle.size() == 0)
-    return 0;
-  DCHECK(needle == base::i18n::FoldCase(needle));
+FuzzyFinder::FuzzyFinder(const base::string16& needle)
+    : needle_(base::i18n::FoldCase(needle)) {}
+
+double FuzzyFinder::Find(const base::string16& haystack,
+                         std::vector<gfx::Range>* matched_ranges) {
   matched_ranges->clear();
+  if (needle_.size() == 0)
+    return 0;
   const base::string16& folded = base::i18n::FoldCase(haystack);
-  size_t m = needle.size();
+  size_t m = needle_.size();
   size_t n = folded.size();
   // Special case 0: M > N. We don't allow skipping anything in |needle|, so
   // no match possible.
@@ -156,8 +157,8 @@
   // Special case 1: M == N. It must be either an exact match,
   // or a non-match.
   if (m == n) {
-    if (folded == needle) {
-      matched_ranges->emplace_back(0, needle.length());
+    if (folded == needle_) {
+      matched_ranges->emplace_back(0, needle_.length());
       return kMaxScore;
     } else {
       return 0;
@@ -174,7 +175,7 @@
   //      Scored based on how far into haystack needle is found, normalized by
   //      haystack length.
   if (m == 1) {
-    size_t substring_position = folded.find(needle);
+    size_t substring_position = folded.find(needle_);
     while (substring_position != std::string::npos) {
       if (substring_position == 0) {
         // Prefix match.
@@ -196,7 +197,7 @@
                                        substring_position + 1);
         }
       }
-      substring_position = folded.find(needle, substring_position + 1);
+      substring_position = folded.find(needle_, substring_position + 1);
     }
     if (matched_ranges->empty()) {
       return 0;
@@ -214,7 +215,7 @@
   //    full O(mn) matching algorithm.
   // ***TEMPORARY***: The full algorithm isn't implemented yet, so we will use
   // this unconditionally for now.
-  return ConsecutiveMatchWithGaps(needle, folded, matched_ranges);
+  return ConsecutiveMatchWithGaps(needle_, folded, matched_ranges);
 }
 
 }  // namespace commander
diff --git a/chrome/browser/ui/commander/fuzzy_finder.h b/chrome/browser/ui/commander/fuzzy_finder.h
index 0b61576..b277452 100644
--- a/chrome/browser/ui/commander/fuzzy_finder.h
+++ b/chrome/browser/ui/commander/fuzzy_finder.h
@@ -12,18 +12,27 @@
 
 namespace commander {
 
-// Returns a score from 0 to 1 based on how well |needle| matches |haystack|.
-// 0 means no match. |matched_ranges| will be filled with the ranges of
-// |haystack| that match |needle| so they can be highlighted in the UI; see
-// comment on commander::CommandItem |matched_ranges| for a worked example.
-// |needle| is expected to already be case folded (this is DCHECKED) to save
-// redundant processing, as one needle will be checked against many haystacks.
-// TODO(lgrey): This currently uses an algorithm which is not guaranteed to
-// return the optimal match. Update this to use a more comprehensive method
-// when inputs are small enough.
-double FuzzyFind(const base::string16& needle,
-                 const base::string16& haystack,
-                 std::vector<gfx::Range>* matched_ranges);
+class FuzzyFinder {
+ public:
+  explicit FuzzyFinder(const base::string16& needle);
+  ~FuzzyFinder() = default;
+  FuzzyFinder(const FuzzyFinder& other) = delete;
+  FuzzyFinder& operator=(const FuzzyFinder& other) = delete;
+
+  // Returns a score from 0 to 1 based on how well |needle_| matches |haystack|.
+  // 0 means no match. |matched_ranges| will be filled with the ranges of
+  // |haystack| that match |needle| so they can be highlighted in the UI; see
+  // comment on commander::CommandItem |matched_ranges| for a worked example.
+  // TODO(lgrey): This currently uses an algorithm which is not guaranteed to
+  // return the optimal match. Update this to use a more comprehensive method
+  // when inputs are small enough.
+  double Find(const base::string16& haystack,
+              std::vector<gfx::Range>* matched_ranges);
+
+ private:
+  // Case-folded input string.
+  base::string16 needle_;
+};
 
 }  // namespace commander
 
diff --git a/chrome/browser/ui/commander/fuzzy_finder_unittest.cc b/chrome/browser/ui/commander/fuzzy_finder_unittest.cc
index 73ebe6a..0460da8 100644
--- a/chrome/browser/ui/commander/fuzzy_finder_unittest.cc
+++ b/chrome/browser/ui/commander/fuzzy_finder_unittest.cc
@@ -9,6 +9,17 @@
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace commander {
+
+namespace {
+// Convenience function to avoid visual noise from constructing FuzzyFinder
+// objects in-test.
+double FuzzyFind(const base::string16& needle,
+                 const base::string16& haystack,
+                 std::vector<gfx::Range>* matched_ranges) {
+  return FuzzyFinder(needle).Find(haystack, matched_ranges);
+}
+}  // namespace
+
 TEST(CommanderFuzzyFinder, NonmatchIsZero) {
   std::vector<gfx::Range> ranges;
   EXPECT_EQ(0, FuzzyFind(base::ASCIIToUTF16("orange"),
@@ -39,15 +50,14 @@
 // coverage rather than ensuring the path is taken).
 TEST(CommanderFuzzyFinder, SingleCharNeedle) {
   std::vector<gfx::Range> ranges;
+  FuzzyFinder finder(base::ASCIIToUTF16("o"));
 
-  double prefix_score =
-      FuzzyFind(base::ASCIIToUTF16("o"), base::ASCIIToUTF16("orange"), &ranges);
+  double prefix_score = finder.Find(base::ASCIIToUTF16("orange"), &ranges);
   EXPECT_EQ(ranges, std::vector<gfx::Range>({{0, 1}}));
-  double internal_score =
-      FuzzyFind(base::ASCIIToUTF16("o"), base::ASCIIToUTF16("phone"), &ranges);
+  double internal_score = finder.Find(base::ASCIIToUTF16("phone"), &ranges);
   EXPECT_EQ(ranges, std::vector<gfx::Range>({{2, 3}}));
-  double boundary_score = FuzzyFind(
-      base::ASCIIToUTF16("o"), base::ASCIIToUTF16("phone operator"), &ranges);
+  double boundary_score =
+      finder.Find(base::ASCIIToUTF16("phone operator"), &ranges);
   EXPECT_EQ(ranges, std::vector<gfx::Range>({{6, 7}}));
 
   // Expected ordering:
@@ -59,8 +69,7 @@
   EXPECT_GT(boundary_score, internal_score);
 
   // ...and non-matches should have score = 0.
-  EXPECT_EQ(0, FuzzyFind(base::ASCIIToUTF16("o"),
-                         base::ASCIIToUTF16("aquarium"), &ranges));
+  EXPECT_EQ(0, finder.Find(base::ASCIIToUTF16("aquarium"), &ranges));
   EXPECT_TRUE(ranges.empty());
 }
 
@@ -73,12 +82,10 @@
 
 TEST(CommanderFuzzyFinder, PrefixRanksHigherThanInternal) {
   std::vector<gfx::Range> ranges;
-
-  double prefix_rank = FuzzyFind(base::ASCIIToUTF16("orange"),
-                                 base::ASCIIToUTF16("Orange juice"), &ranges);
+  FuzzyFinder finder(base::ASCIIToUTF16("orange"));
+  double prefix_rank = finder.Find(base::ASCIIToUTF16("Orange juice"), &ranges);
   double non_prefix_rank =
-      FuzzyFind(base::ASCIIToUTF16("orange"),
-                base::ASCIIToUTF16("William of Orange"), &ranges);
+      finder.Find(base::ASCIIToUTF16("William of Orange"), &ranges);
 
   EXPECT_GT(prefix_rank, 0);
   EXPECT_GT(non_prefix_rank, 0);
diff --git a/chrome/browser/ui/commander/simple_command_source.cc b/chrome/browser/ui/commander/simple_command_source.cc
index e34d00d..65e9aba 100644
--- a/chrome/browser/ui/commander/simple_command_source.cc
+++ b/chrome/browser/ui/commander/simple_command_source.cc
@@ -66,14 +66,14 @@
       {IDC_DEV_TOOLS_TOGGLE, base::ASCIIToUTF16("Toggle developer tools")},
   };
   CommandSource::CommandResults results;
-  const base::string16& folded_input = base::i18n::FoldCase(input);
+  FuzzyFinder finder(input);
   std::vector<gfx::Range> ranges;
   for (const auto& command_spec : command_map) {
     if (!chrome::IsCommandEnabled(browser, command_spec.id))
       continue;
     base::string16 title = command_spec.title;
     base::Erase(title, '&');
-    double score = FuzzyFind(folded_input, title, &ranges);
+    double score = finder.Find(title, &ranges);
     if (score == 0)
       continue;
 
diff --git a/chrome/browser/ui/content_settings/content_setting_bubble_model.cc b/chrome/browser/ui/content_settings/content_setting_bubble_model.cc
index db13edb53..f7846df 100644
--- a/chrome/browser/ui/content_settings/content_setting_bubble_model.cc
+++ b/chrome/browser/ui/content_settings/content_setting_bubble_model.cc
@@ -1498,9 +1498,10 @@
   // the correct PermissionRequestManager state. Fix that.
   permissions::PermissionRequestManager* manager =
       permissions::PermissionRequestManager::FromWebContents(web_contents);
-  if (!manager->ShouldCurrentRequestUseQuietUI())
+  auto quiet_ui_reason = manager->ReasonForUsingQuietUi();
+  if (!quiet_ui_reason)
     return;
-  switch (manager->ReasonForUsingQuietUi()) {
+  switch (*quiet_ui_reason) {
     case QuietUiReason::kEnabledInPrefs:
     case QuietUiReason::kPredictedVeryUnlikelyGrant:
       set_message(l10n_util::GetStringUTF16(
@@ -1563,8 +1564,9 @@
   permissions::PermissionRequestManager* manager =
       permissions::PermissionRequestManager::FromWebContents(web_contents());
 
-  DCHECK(manager->ShouldCurrentRequestUseQuietUI());
-  switch (manager->ReasonForUsingQuietUi()) {
+  auto quiet_ui_reason = manager->ReasonForUsingQuietUi();
+  DCHECK(quiet_ui_reason);
+  switch (*quiet_ui_reason) {
     case QuietUiReason::kEnabledInPrefs:
     case QuietUiReason::kTriggeredByCrowdDeny:
     case QuietUiReason::kPredictedVeryUnlikelyGrant:
@@ -1585,7 +1587,10 @@
   permissions::PermissionRequestManager* manager =
       permissions::PermissionRequestManager::FromWebContents(web_contents());
 
-  switch (manager->ReasonForUsingQuietUi()) {
+  auto quiet_ui_reason = manager->ReasonForUsingQuietUi();
+  if (!quiet_ui_reason)
+    return;
+  switch (*quiet_ui_reason) {
     case QuietUiReason::kEnabledInPrefs:
     case QuietUiReason::kTriggeredByCrowdDeny:
     case QuietUiReason::kPredictedVeryUnlikelyGrant:
diff --git a/chrome/browser/ui/profile_picker.h b/chrome/browser/ui/profile_picker.h
index 854ceecd..4eb57dc 100644
--- a/chrome/browser/ui/profile_picker.h
+++ b/chrome/browser/ui/profile_picker.h
@@ -75,6 +75,9 @@
   // Returns the web view (embedded in the picker) for testing.
   static views::WebView* GetWebViewForTesting();
 
+  // Returns the simple toolbar (embedded in the picker) for testing.
+  static views::View* GetToolbarForTesting();
+
   // Overrides the timeout delay for waiting for extended account info.
   static void SetExtendedAccountInfoTimeoutForTesting(base::TimeDelta timeout);
 
diff --git a/chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop_unittest.cc b/chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop_unittest.cc
index b91d081..a6d84e9 100644
--- a/chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop_unittest.cc
+++ b/chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop_unittest.cc
@@ -14,7 +14,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/enterprise/connectors/content_analysis_delegate.h"
 #include "chrome/browser/enterprise/connectors/fake_content_analysis_delegate.h"
 #include "chrome/browser/policy/dm_token_utils.h"
@@ -40,15 +40,6 @@
         {enterprise_connectors::kEnterpriseConnectorsEnabled}, {});
   }
 
-  void SetUp() override {
-    enterprise_connectors::ConnectorsManager::GetInstance()->SetUpForTesting();
-  }
-
-  void TearDown() override {
-    enterprise_connectors::ConnectorsManager::GetInstance()
-        ->TearDownForTesting();
-  }
-
   void RunUntilDone() { run_loop_->Run(); }
 
   content::WebContents* contents() {
@@ -72,15 +63,16 @@
               ],
               "block_until_verdict": 1
           })";
-      safe_browsing::SetAnalysisConnector(enterprise_connectors::FILE_ATTACHED,
-                                          kEnabled);
       safe_browsing::SetAnalysisConnector(
-          enterprise_connectors::BULK_DATA_ENTRY, kEnabled);
+          profile_->GetPrefs(), enterprise_connectors::FILE_ATTACHED, kEnabled);
+      safe_browsing::SetAnalysisConnector(
+          profile_->GetPrefs(), enterprise_connectors::BULK_DATA_ENTRY,
+          kEnabled);
     } else {
       safe_browsing::ClearAnalysisConnector(
-          enterprise_connectors::FILE_ATTACHED);
+          profile_->GetPrefs(), enterprise_connectors::FILE_ATTACHED);
       safe_browsing::ClearAnalysisConnector(
-          enterprise_connectors::BULK_DATA_ENTRY);
+          profile_->GetPrefs(), enterprise_connectors::BULK_DATA_ENTRY);
     }
 
     run_loop_.reset(new base::RunLoop());
diff --git a/chrome/browser/ui/views/download/download_item_view.cc b/chrome/browser/ui/views/download/download_item_view.cc
index ebe6c14..33a3d42a 100644
--- a/chrome/browser/ui/views/download/download_item_view.cc
+++ b/chrome/browser/ui/views/download/download_item_view.cc
@@ -33,8 +33,7 @@
 #include "chrome/browser/download/chrome_download_manager_delegate.h"
 #include "chrome/browser/download/download_stats.h"
 #include "chrome/browser/download/drag_download_item.h"
-#include "chrome/browser/enterprise/connectors/common.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/icon_manager.h"
 #include "chrome/browser/safe_browsing/advanced_protection_status_manager.h"
 #include "chrome/browser/safe_browsing/advanced_protection_status_manager_factory.h"
@@ -781,7 +780,8 @@
 
   const bool allow_open_during_deep_scan =
       (mode_ == Mode::kDeepScanning) &&
-      !enterprise_connectors::ConnectorsManager::GetInstance()
+      !enterprise_connectors::ConnectorsServiceFactory::GetForBrowserContext(
+           model_->profile())
            ->DelayUntilVerdict(
                enterprise_connectors::AnalysisConnector::FILE_DOWNLOADED);
   open_button_->SetEnabled((mode_ == Mode::kNormal) || prompt_to_scan ||
diff --git a/chrome/browser/ui/views/profiles/profile_picker_interactive_uitest.cc b/chrome/browser/ui/views/profiles/profile_picker_interactive_uitest.cc
index 5031338..6281d8b 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_interactive_uitest.cc
+++ b/chrome/browser/ui/views/profiles/profile_picker_interactive_uitest.cc
@@ -111,7 +111,7 @@
 IN_PROC_BROWSER_TEST_F(ProfilePickerInteractiveUiTest, CloseWithKeyboard) {
   // Open a new picker.
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuManageProfiles);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
   WaitForFirstPaint(web_contents(), GURL("chrome://profile-picker"));
   EXPECT_TRUE(ProfilePicker::IsOpen());
   SendCloseWindowKeyboardCommand();
@@ -126,7 +126,7 @@
 IN_PROC_BROWSER_TEST_F(ProfilePickerInteractiveUiTest, ExitWithKeyboard) {
   // Open a new picker.
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuManageProfiles);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
   WaitForFirstPaint(web_contents(), GURL("chrome://profile-picker"));
   EXPECT_TRUE(ProfilePicker::IsOpen());
 
@@ -148,7 +148,7 @@
 IN_PROC_BROWSER_TEST_F(ProfilePickerInteractiveUiTest, FullscreenWithKeyboard) {
   // Open a new picker.
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuManageProfiles);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
   WaitForFirstPaint(web_contents(), GURL("chrome://profile-picker"));
   EXPECT_TRUE(ProfilePicker::IsOpen());
 
@@ -179,7 +179,7 @@
 IN_PROC_BROWSER_TEST_F(ProfilePickerInteractiveUiTest,
                        CloseSigninWithKeyboard) {
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuAddNewProfile);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
 
   // Simulate a click on the signin button.
   base::MockCallback<base::OnceClosure> switch_failure_callback;
@@ -187,7 +187,7 @@
   ProfilePicker::SwitchToSignIn(SK_ColorRED, switch_failure_callback.Get());
 
   // Switch to the signin webview.
-  WaitForNewWebView();
+  WaitForLayoutWithToolbar();
   WaitForFirstPaint(web_contents(),
                     GaiaUrls::GetInstance()->signin_chrome_sync_dice());
 
diff --git a/chrome/browser/ui/views/profiles/profile_picker_test_base.cc b/chrome/browser/ui/views/profiles/profile_picker_test_base.cc
index ac452a3..5df47d20 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_test_base.cc
+++ b/chrome/browser/ui/views/profiles/profile_picker_test_base.cc
@@ -19,31 +19,33 @@
 
 namespace {
 
-// Waits until a web view is added as a child view of the given view.
-class WebViewAddedWaiter : public views::ViewObserver {
+// Waits until a view's visibility has the expected value.
+class ViewVisibilityChangedWaiter : public views::ViewObserver {
  public:
-  WebViewAddedWaiter(
-      views::View* top_view,
-      base::RepeatingCallback<views::WebView*()> current_web_view_getter)
-      : current_web_view_getter_(current_web_view_getter) {
-    observation_.Observe(top_view);
-  }
-  ~WebViewAddedWaiter() override = default;
+  ViewVisibilityChangedWaiter(views::View* view, bool expect_toolbar_visible)
+      : view_(view), expect_toolbar_visible_(expect_toolbar_visible) {}
+  ~ViewVisibilityChangedWaiter() override = default;
 
-  void Wait() { run_loop_.Run(); }
+  void Wait() {
+    if (view_->GetVisible() == expect_toolbar_visible_)
+      return;
+    observation_.Observe(view_);
+    run_loop_.Run();
+  }
 
  private:
   // ViewObserver:
-  void OnChildViewAdded(views::View* observed_view,
-                        views::View* child) override {
-    if (child == current_web_view_getter_.Run()) {
-      ASSERT_TRUE(child);
+  void OnViewVisibilityChanged(views::View* observed_view,
+                               views::View* starting_view) override {
+    if (observed_view == starting_view &&
+        starting_view->GetVisible() == expect_toolbar_visible_) {
       run_loop_.Quit();
     }
   }
 
   base::RunLoop run_loop_;
-  base::RepeatingCallback<views::WebView*()> current_web_view_getter_;
+  views::View* const view_;
+  bool expect_toolbar_visible_;
   base::ScopedObservation<views::View, views::ViewObserver> observation_{this};
 };
 
@@ -100,13 +102,16 @@
   return ProfilePicker::GetWebViewForTesting();
 }
 
-void ProfilePickerTestBase::WaitForNewWebView() {
-  ASSERT_TRUE(view());
-  WebViewAddedWaiter(view(),
-                     base::BindRepeating(&ProfilePickerTestBase::web_view,
-                                         base::Unretained(this)))
+void ProfilePickerTestBase::WaitForLayoutWithToolbar() {
+  ViewVisibilityChangedWaiter(ProfilePicker::GetToolbarForTesting(),
+                              /*expect_toolbar_visible=*/true)
       .Wait();
-  EXPECT_TRUE(web_view());
+}
+
+void ProfilePickerTestBase::WaitForLayoutWithoutToolbar() {
+  ViewVisibilityChangedWaiter(ProfilePicker::GetToolbarForTesting(),
+                              /*expect_toolbar_visible=*/false)
+      .Wait();
 }
 
 void ProfilePickerTestBase::WaitForFirstPaint(content::WebContents* contents,
diff --git a/chrome/browser/ui/views/profiles/profile_picker_test_base.h b/chrome/browser/ui/views/profiles/profile_picker_test_base.h
index 7176045..9eacc2f 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_test_base.h
+++ b/chrome/browser/ui/views/profiles/profile_picker_test_base.h
@@ -34,8 +34,10 @@
   // Returns the internal web view for the profile picker.
   views::WebView* web_view();
 
-  // Waits until a new internal web view has been added to the main picker view.
-  void WaitForNewWebView();
+  // Waits until a relayout of the main view has been performed. This implies
+  // the appropriate web_contents() is attached to the layout.
+  void WaitForLayoutWithToolbar();
+  void WaitForLayoutWithoutToolbar();
 
   // Waits until the web contents does the first non-empty paint for `url`.
   void WaitForFirstPaint(content::WebContents* contents, const GURL& url);
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.cc b/chrome/browser/ui/views/profiles/profile_picker_view.cc
index 3c0a000..9a85303 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_view.cc
+++ b/chrome/browser/ui/views/profiles/profile_picker_view.cc
@@ -42,10 +42,13 @@
 #include "content/public/browser/context_menu_params.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_urls.h"
 #include "ui/views/controls/webview/webview.h"
 #include "ui/views/layout/fill_layout.h"
+#include "ui/views/layout/flex_layout.h"
 #include "ui/views/view.h"
+#include "ui/views/view_class_properties.h"
 #include "ui/views/widget/widget.h"
 #include "url/url_constants.h"
 
@@ -140,6 +143,13 @@
 }
 
 // static
+views::View* ProfilePicker::GetToolbarForTesting() {
+  if (!g_profile_picker_view)
+    return nullptr;
+  return g_profile_picker_view->toolbar_;
+}
+
+// static
 void ProfilePicker::SetExtendedAccountInfoTimeoutForTesting(
     base::TimeDelta timeout) {
   if (g_profile_picker_view) {
@@ -176,6 +186,10 @@
 
   if (state_ == kNotStarted) {
     state_ = kInitializing;
+    // Build the layout synchronously before creating the system profile to
+    // simplify tests.
+    BuildLayout();
+
     g_browser_process->profile_manager()->CreateProfileAsync(
         ProfileManager::GetSystemProfilePath(),
         base::BindRepeating(&ProfilePickerView::OnSystemProfileCreated,
@@ -214,11 +228,12 @@
 void ProfilePickerView::Init(ProfilePicker::EntryPoint entry_point,
                              Profile* system_profile) {
   DCHECK_EQ(state_, kInitializing);
-  CreateWebView(system_profile);
-  DCHECK(web_view_);
+  system_profile_contents_ = content::WebContents::Create(
+      content::WebContents::CreateParams(system_profile));
+  system_profile_contents_->SetDelegate(this);
   // To record metrics using javascript, extensions are needed.
   extensions::ChromeExtensionWebContentsObserver::CreateForWebContents(
-      web_view_->GetWebContents());
+      system_profile_contents_.get());
 
   CreateDialogWidget(this, nullptr, nullptr);
 
@@ -230,9 +245,9 @@
       views::HWNDForWidget(GetWidget()));
 #endif
 
-  web_view_->LoadInitialURL(CreateURLForEntryPoint(entry_point));
+  ShowScreen(system_profile_contents_.get(),
+             CreateURLForEntryPoint(entry_point), /*show_toolbar=*/false);
   GetWidget()->Show();
-  web_view_->RequestFocus();
   state_ = kReady;
 
   if (entry_point == ProfilePicker::EntryPoint::kOnStartup) {
@@ -314,22 +329,27 @@
   // make sure the flow does not create multiple profiles simultaneously.
   signed_in_profile_being_created_ = profile;
 
-  // Rebuild the view.
-  // TODO(crbug.com/1126913): Add the simple toolbar with the back button.
-  RemoveAllChildViews(true);
-  CreateWebView(profile);
-  web_view_->LoadInitialURL(GaiaUrls::GetInstance()->signin_chrome_sync_dice());
-  web_view_->RequestFocus();
+  // TODO(crbug.com/1126913): Build the simple toolbar with the back button.
+
+  new_profile_contents_ = content::WebContents::Create(
+      content::WebContents::CreateParams(signed_in_profile_being_created_));
+  new_profile_contents_->SetDelegate(this);
+  ShowScreen(new_profile_contents_.get(),
+             GaiaUrls::GetInstance()->signin_chrome_sync_dice(),
+             /*show_toolbar=*/true);
 }
 
 void ProfilePickerView::SwitchToSyncConfirmation() {
-  // TODO(crbug.com/1126913): Remove the simple toolbar with the back button
-  // (once it is added for the GAIA part).
-  web_view_->LoadInitialURL(GURL(chrome::kChromeUISyncConfirmationURL));
-  web_view_->RequestFocus();
+  // The sync confirmation screen cannot render in the system profile web
+  // contents and thus `new_profile_contents_` is used for this. As there is no
+  // back button on the confirmation screen, the performance of going back to
+  // the signin screen is no concern any more.
+  ShowScreen(new_profile_contents_.get(),
+             GURL(chrome::kChromeUISyncConfirmationURL),
+             /*show_toolbar=*/false);
 
   SyncConfirmationUI* sync_confirmation_ui = static_cast<SyncConfirmationUI*>(
-      web_view_->GetWebContents()->GetWebUI()->GetController());
+      new_profile_contents_->GetWebUI()->GetController());
   sync_confirmation_ui->InitializeMessageHandlerWithProfile(
       signed_in_profile_being_created_);
 }
@@ -433,6 +453,42 @@
   Navigate(&params);
 }
 
+void ProfilePickerView::BuildLayout() {
+  SetLayoutManager(std::make_unique<views::FlexLayout>())
+      ->SetOrientation(views::LayoutOrientation::kVertical)
+      .SetMainAxisAlignment(views::LayoutAlignment::kStart)
+      .SetCrossAxisAlignment(views::LayoutAlignment::kStretch)
+      .SetDefault(
+          views::kFlexBehaviorKey,
+          views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToMinimum,
+                                   views::MaximumFlexSizeRule::kUnbounded));
+
+  auto toolbar = std::make_unique<views::View>();
+  toolbar->SetProperty(
+      views::kFlexBehaviorKey,
+      views::FlexSpecification(views::MinimumFlexSizeRule::kPreferred,
+                               views::MaximumFlexSizeRule::kPreferred));
+  toolbar_ = AddChildView(std::move(toolbar));
+
+  auto web_view = std::make_unique<views::WebView>();
+  web_view->set_allow_accelerators(true);
+  web_view_ = AddChildView(std::move(web_view));
+}
+
+void ProfilePickerView::ShowScreen(content::WebContents* contents,
+                                   const GURL& url,
+                                   bool show_toolbar) {
+  contents->GetController().LoadURL(url, content::Referrer(),
+                                    ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
+                                    std::string());
+  web_view_->SetWebContents(contents);
+  web_view_->RequestFocus();
+
+  // Change visibility of the toolbar after swapping wc in `web_view_` to make
+  // it easier for tests to detect changing of the screen.
+  toolbar_->SetVisible(show_toolbar);
+}
+
 void ProfilePickerView::OnRefreshTokenUpdatedForAccount(
     const CoreAccountInfo& account_info) {
   DCHECK(!account_info.IsEmpty());
@@ -445,7 +501,8 @@
   // any glitches of the redirect page getting displayed. This is needed because
   // in some cases (such as managed signed-in), there are further delays before
   // any follow-up UI is shown.
-  web_view_->LoadInitialURL(GURL(url::kAboutBlankURL));
+  ShowScreen(new_profile_contents_.get(), GURL(url::kAboutBlankURL),
+             /*show_toolbar=*/true);
 
   base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
       FROM_HERE,
@@ -603,14 +660,3 @@
   }
 #endif  // OS_MAC
 }
-
-void ProfilePickerView::CreateWebView(Profile* profile) {
-  auto web_view = std::make_unique<views::WebView>(profile);
-  web_view->GetWebContents()->SetDelegate(this);
-  web_view->set_allow_accelerators(true);
-  // Set the member before adding to the hieararchy to make it easier for tests
-  // to detect that a new WebView has been created.
-  web_view_ = web_view.get();
-  AddChildView(std::move(web_view));
-  SetLayoutManager(std::make_unique<views::FillLayout>());
-}
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.h b/chrome/browser/ui/views/profiles/profile_picker_view.h
index 9141802..1a0d006 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_view.h
+++ b/chrome/browser/ui/views/profiles/profile_picker_view.h
@@ -21,6 +21,7 @@
 namespace content {
 struct ContextMenuParams;
 class RenderFrameHost;
+class WebContents;
 }  // namespace content
 
 // Dialog widget that contains the Desktop Profile picker webui.
@@ -94,6 +95,14 @@
       const CoreAccountInfo& account_info) override;
   void OnExtendedAccountInfoUpdated(const AccountInfo& account_info) override;
 
+  // Builds the views hieararchy.
+  void BuildLayout();
+
+  // Shows a screen with `url` in `contents` and potentially `show_toolbar`.
+  void ShowScreen(content::WebContents* contents,
+                  const GURL& url,
+                  bool show_toolbar);
+
   // Helper functions to deal with the lack of extended account info.
   void SetExtendedAccountInfoTimeoutForTesting(base::TimeDelta timeout);
   void OnExtendedAccountInfoTimeout(const std::string& email);
@@ -113,9 +122,6 @@
   // on Windows).
   void ConfigureAccelerators();
 
-  // Creates and configures the internal web view, and adds it as a child view.
-  void CreateWebView(Profile* profile);
-
   ScopedKeepAlive keep_alive_;
   State state_ = State::kNotStarted;
 
@@ -125,12 +131,20 @@
   // Handler for unhandled key events from renderer.
   views::UnhandledKeyboardEventHandler unhandled_keyboard_event_handler_;
 
-  // The current WebView object, owned by the view hierarchy.
+  // Views, owned by the view hierarchy.
+  views::View* toolbar_ = nullptr;
   views::WebView* web_view_ = nullptr;
 
+  // The web contents backed by the system profile. This is used for displaying
+  // the WebUI pages.
+  std::unique_ptr<content::WebContents> system_profile_contents_;
+
   // Assigned a value at the beginning of a signed-in profile creation flow,
   // until the end of the flow (i.e. for the rest of the lifetime of this view).
   Profile* signed_in_profile_being_created_ = nullptr;
+  // The web contents backed by `signed_in_profile_being_created_`, with the
+  // same lifetime. This is used for displaying the sign-in flow.
+  std::unique_ptr<content::WebContents> new_profile_contents_;
 
   base::string16 name_for_signed_in_profile_;
   base::OnceClosure on_profile_name_available_;
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc b/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc
index f7f4af1..36d6a06 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc
+++ b/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc
@@ -244,7 +244,7 @@
 
 IN_PROC_BROWSER_TEST_F(ProfilePickerCreationFlowBrowserTest, ShowChoice) {
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuAddNewProfile);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
   EXPECT_TRUE(ProfilePicker::IsOpen());
   WaitForFirstPaint(web_contents(),
                     GURL("chrome://profile-picker/new-profile"));
@@ -255,22 +255,22 @@
   ASSERT_EQ(1u, BrowserList::GetInstance()->size());
 
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuAddNewProfile);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
 
   // Simulate a click on the signin button.
   base::MockCallback<base::OnceClosure> switch_failure_callback;
   EXPECT_CALL(switch_failure_callback, Run()).Times(0);
   ProfilePicker::SwitchToSignIn(kProfileColor, switch_failure_callback.Get());
 
-  // The DICE navigation happens in a new web view (for the profile being
+  // The DICE navigation happens in a new web contents (for the profile being
   // created), wait for it.
-  WaitForNewWebView();
+  WaitForLayoutWithToolbar();
   WaitForFirstPaint(web_contents(),
                     GaiaUrls::GetInstance()->signin_chrome_sync_dice());
 
   // Add an account - simulate a successful Gaia sign-in.
   Profile* profile_being_created =
-      static_cast<Profile*>(web_view()->GetBrowserContext());
+      static_cast<Profile*>(web_contents()->GetBrowserContext());
   syncer::SyncService* sync_service =
       ProfileSyncServiceFactory::GetForProfile(profile_being_created);
   signin::IdentityManager* identity_manager =
@@ -317,22 +317,22 @@
   ASSERT_EQ(1u, BrowserList::GetInstance()->size());
 
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuAddNewProfile);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
 
   // Simulate a click on the signin button.
   base::MockCallback<base::OnceClosure> switch_failure_callback;
   EXPECT_CALL(switch_failure_callback, Run()).Times(0);
   ProfilePicker::SwitchToSignIn(kProfileColor, switch_failure_callback.Get());
 
-  // The DICE navigation happens in a new web view (for the profile being
+  // The DICE navigation happens in a new web contents (for the profile being
   // created), wait for it.
-  WaitForNewWebView();
+  WaitForLayoutWithToolbar();
   WaitForFirstPaint(web_contents(),
                     GaiaUrls::GetInstance()->signin_chrome_sync_dice());
 
   // Disable sync by setting the device as managed in prefs.
   Profile* profile_being_created =
-      static_cast<Profile*>(web_view()->GetBrowserContext());
+      static_cast<Profile*>(web_contents()->GetBrowserContext());
   syncer::SyncPrefs prefs(profile_being_created->GetPrefs());
   prefs.SetManagedForTest(true);
   syncer::SyncService* sync_service =
@@ -381,22 +381,22 @@
   ASSERT_EQ(1u, BrowserList::GetInstance()->size());
 
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuAddNewProfile);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
 
   // Simulate a click on the signin button.
   base::MockCallback<base::OnceClosure> switch_failure_callback;
   EXPECT_CALL(switch_failure_callback, Run()).Times(0);
   ProfilePicker::SwitchToSignIn(kProfileColor, switch_failure_callback.Get());
 
-  // The DICE navigation happens in a new web view (for the profile being
+  // The DICE navigation happens in a new web contents (for the profile being
   // created), wait for it.
-  WaitForNewWebView();
+  WaitForLayoutWithToolbar();
   WaitForFirstPaint(web_contents(),
                     GaiaUrls::GetInstance()->signin_chrome_sync_dice());
 
   // Add an account - simulate a successful Gaia sign-in.
   Profile* profile_being_created =
-      static_cast<Profile*>(web_view()->GetBrowserContext());
+      static_cast<Profile*>(web_contents()->GetBrowserContext());
   signin::IdentityManager* identity_manager =
       IdentityManagerFactory::GetForProfile(profile_being_created);
   CoreAccountInfo core_account_info =
@@ -442,16 +442,16 @@
   ASSERT_EQ(1u, BrowserList::GetInstance()->size());
 
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuAddNewProfile);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
 
   // Simulate a click on the signin button.
   base::MockCallback<base::OnceClosure> switch_failure_callback;
   EXPECT_CALL(switch_failure_callback, Run()).Times(0);
   ProfilePicker::SwitchToSignIn(kProfileColor, switch_failure_callback.Get());
 
-  // The DICE navigation happens in a new web view (for the profile being
+  // The DICE navigation happens in a new web contents (for the profile being
   // created), wait for it.
-  WaitForNewWebView();
+  WaitForLayoutWithToolbar();
   WaitForFirstPaint(web_contents(),
                     GaiaUrls::GetInstance()->signin_chrome_sync_dice());
 
@@ -502,22 +502,22 @@
                            /*is_consented_primary_account=*/true);
 
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuAddNewProfile);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
 
   // Simulate a click on the signin button.
   base::MockCallback<base::OnceClosure> switch_failure_callback;
   EXPECT_CALL(switch_failure_callback, Run()).Times(0);
   ProfilePicker::SwitchToSignIn(kProfileColor, switch_failure_callback.Get());
 
-  // The DICE navigation happens in a new web view (for the profile being
+  // The DICE navigation happens in a new web contents (for the profile being
   // created), wait for it.
-  WaitForNewWebView();
+  WaitForLayoutWithToolbar();
   WaitForFirstPaint(web_contents(),
                     GaiaUrls::GetInstance()->signin_chrome_sync_dice());
 
   // Add an account - simulate a successful Gaia sign-in.
   Profile* profile_being_created =
-      static_cast<Profile*>(web_view()->GetBrowserContext());
+      static_cast<Profile*>(web_contents()->GetBrowserContext());
   signin::IdentityManager* identity_manager =
       IdentityManagerFactory::GetForProfile(profile_being_created);
   CoreAccountInfo core_account_info =
@@ -552,21 +552,21 @@
   ASSERT_EQ(1u, BrowserList::GetInstance()->size());
 
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuAddNewProfile);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
 
   // Simulate a click on the signin button.
   base::MockCallback<base::OnceClosure> switch_failure_callback;
   EXPECT_CALL(switch_failure_callback, Run()).Times(0);
   ProfilePicker::SwitchToSignIn(kProfileColor, switch_failure_callback.Get());
 
-  // The DICE navigation happens in a new web view (for the profile being
+  // The DICE navigation happens in a new web contents (for the profile being
   // created), wait for it.
-  WaitForNewWebView();
+  WaitForLayoutWithToolbar();
   WaitForFirstPaint(web_contents(),
                     GaiaUrls::GetInstance()->signin_chrome_sync_dice());
 
   Profile* profile_being_created =
-      static_cast<Profile*>(web_view()->GetBrowserContext());
+      static_cast<Profile*>(web_contents()->GetBrowserContext());
   signin::IdentityManager* identity_manager =
       IdentityManagerFactory::GetForProfile(profile_being_created);
 
@@ -628,22 +628,22 @@
   ASSERT_EQ(1u, BrowserList::GetInstance()->size());
 
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuAddNewProfile);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
 
   // Simulate a click on the signin button.
   base::MockCallback<base::OnceClosure> switch_failure_callback;
   EXPECT_CALL(switch_failure_callback, Run()).Times(0);
   ProfilePicker::SwitchToSignIn(kProfileColor, switch_failure_callback.Get());
 
-  // The DICE navigation happens in a new web view (for the profile being
+  // The DICE navigation happens in a new web contents (for the profile being
   // created), wait for it.
-  WaitForNewWebView();
+  WaitForLayoutWithToolbar();
   WaitForFirstPaint(web_contents(),
                     GaiaUrls::GetInstance()->signin_chrome_sync_dice());
 
   // Add an account - simulate a successful Gaia sign-in.
   Profile* profile_being_created =
-      static_cast<Profile*>(web_view()->GetBrowserContext());
+      static_cast<Profile*>(web_contents()->GetBrowserContext());
   signin::IdentityManager* identity_manager =
       IdentityManagerFactory::GetForProfile(profile_being_created);
   // Consumer-looking gmail address avoids code that forces the sync service to
@@ -699,22 +699,22 @@
   ASSERT_EQ(1u, BrowserList::GetInstance()->size());
 
   ProfilePicker::Show(ProfilePicker::EntryPoint::kProfileMenuAddNewProfile);
-  WaitForNewWebView();
+  WaitForLayoutWithoutToolbar();
 
   // Simulate a click on the signin button.
   base::MockCallback<base::OnceClosure> switch_failure_callback;
   EXPECT_CALL(switch_failure_callback, Run()).Times(0);
   ProfilePicker::SwitchToSignIn(kProfileColor, switch_failure_callback.Get());
 
-  // The DICE navigation happens in a new web view (for the profile being
+  // The DICE navigation happens in a new web contents (for the profile being
   // created), wait for it.
-  WaitForNewWebView();
+  WaitForLayoutWithToolbar();
   WaitForFirstPaint(web_contents(),
                     GaiaUrls::GetInstance()->signin_chrome_sync_dice());
 
   // Add an account - simulate a successful Gaia sign-in.
   Profile* profile_being_created =
-      static_cast<Profile*>(web_view()->GetBrowserContext());
+      static_cast<Profile*>(web_contents()->GetBrowserContext());
   signin::IdentityManager* identity_manager =
       IdentityManagerFactory::GetForProfile(profile_being_created);
   // Consumer-looking gmail address avoids code that forces the sync service to
diff --git a/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_platform_impl_chromeos.cc b/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_platform_impl_chromeos.cc
index 50ff4201..7054422 100644
--- a/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_platform_impl_chromeos.cc
+++ b/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_platform_impl_chromeos.cc
@@ -17,6 +17,7 @@
 #include "chrome/grit/chromium_strings.h"
 #include "chrome/grit/generated_resources.h"
 #include "ui/base/l10n/l10n_util.h"
+#include "ui/chromeos/devicetype_utils.h"
 
 RelaunchNotificationControllerPlatformImpl::
     RelaunchNotificationControllerPlatformImpl() = default;
@@ -86,16 +87,16 @@
     SystemTrayClient::Get()->SetUpdateNotificationState(
         ash::NotificationStyle::kAdminRecommended,
         l10n_util::GetStringUTF16(IDS_RELAUNCH_RECOMMENDED_OVERDUE_TITLE),
-        l10n_util::GetStringFUTF16(
-            IDS_RELAUNCH_RECOMMENDED_OVERDUE_BODY,
-            base::UTF8ToUTF16(enterprise_display_domain)));
+        l10n_util::GetStringFUTF16(IDS_RELAUNCH_RECOMMENDED_OVERDUE_BODY,
+                                   base::UTF8ToUTF16(enterprise_display_domain),
+                                   ui::GetChromeOSDeviceName()));
   } else {
     SystemTrayClient::Get()->SetUpdateNotificationState(
         ash::NotificationStyle::kAdminRecommended,
         l10n_util::GetStringUTF16(IDS_RELAUNCH_RECOMMENDED_TITLE),
-        l10n_util::GetStringFUTF16(
-            IDS_RELAUNCH_RECOMMENDED_BODY,
-            base::UTF8ToUTF16(enterprise_display_domain)));
+        l10n_util::GetStringFUTF16(IDS_RELAUNCH_RECOMMENDED_BODY,
+                                   base::UTF8ToUTF16(enterprise_display_domain),
+                                   ui::GetChromeOSDeviceName()));
   }
 }
 
@@ -115,7 +116,8 @@
         relaunch_required_timer_->GetWindowTitle(),
         l10n_util::GetStringFUTF16(
             IDS_RELAUNCH_REQUIRED_BODY,
-            base::UTF8ToUTF16(connector->GetEnterpriseDomainManager())));
+            base::UTF8ToUTF16(connector->GetEnterpriseDomainManager()),
+            ui::GetChromeOSDeviceName()));
   }
 }
 
diff --git a/chrome/browser/ui/views/sharing/sharing_browsertest.cc b/chrome/browser/ui/views/sharing/sharing_browsertest.cc
index c7af158..d7df306 100644
--- a/chrome/browser/ui/views/sharing/sharing_browsertest.cc
+++ b/chrome/browser/ui/views/sharing/sharing_browsertest.cc
@@ -48,9 +48,9 @@
     std::unique_ptr<sync_pb::SharingMessageSpecifics> specifics,
     CommitFinishedCallback on_commit_callback) {
   specifics_ = std::move(*specifics);
-  sync_pb::SharingMessageCommitError commit_erorr;
-  commit_erorr.set_error_code(sync_pb::SharingMessageCommitError::NONE);
-  std::move(on_commit_callback).Run(commit_erorr);
+  sync_pb::SharingMessageCommitError commit_error;
+  commit_error.set_error_code(sync_pb::SharingMessageCommitError::NONE);
+  std::move(on_commit_callback).Run(commit_error);
 }
 
 base::WeakPtr<syncer::ModelTypeControllerDelegate>
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_button.cc b/chrome/browser/ui/views/toolbar/chrome_labs_button.cc
index 9b26d71d..02ac747 100644
--- a/chrome/browser/ui/views/toolbar/chrome_labs_button.cc
+++ b/chrome/browser/ui/views/toolbar/chrome_labs_button.cc
@@ -15,9 +15,7 @@
 }
 
 void ChromeLabsButton::UpdateIcon() {
-  // TODO(elainechien): Replace kHorizontalMenuIcon with Chrome Labs icon when
-  // available.
-  UpdateIconsWithStandardColors(kHorizontalMenuIcon);
+  UpdateIconsWithStandardColors(kChromeLabsIcon);
 }
 
 const char* ChromeLabsButton::GetClassName() const {
diff --git a/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h
index e132f7f..9eb779a5 100644
--- a/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h
+++ b/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h
@@ -16,7 +16,7 @@
 // WebUI representation.
 class MultiDeviceSetupScreenView {
  public:
-  constexpr static StaticOobeScreenId kScreenId{"multidevice-setup"};
+  constexpr static StaticOobeScreenId kScreenId{"multidevice-setup-screen"};
 
   virtual ~MultiDeviceSetupScreenView() = default;
 
diff --git a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc
index d57ed6beb..8e98ddb 100644
--- a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc
@@ -11,6 +11,7 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
+#include "base/metrics/histogram_functions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task_runner_util.h"
 #include "base/values.h"
@@ -184,6 +185,15 @@
                IDS_ENABLE_DEMO_MODE_DIALOG_CONFIRM);
   builder->Add("enableDemoModeDialogCancel",
                IDS_ENABLE_DEMO_MODE_DIALOG_CANCEL);
+
+  // Strings for ChromeVox hint.
+  builder->Add("activateChromeVox", IDS_OOBE_ACTIVATE_CHROMEVOX);
+  builder->Add("continueWithoutChromeVox", IDS_OOBE_CONTINUE_WITHOUT_CHROMEVOX);
+  builder->Add("chromeVoxHintText", IDS_OOBE_CHROMEVOX_HINT_TEXT);
+  builder->Add("chromeVoxHintAnnouncementTextLaptop",
+               IDS_OOBE_CHROMEVOX_HINT_ANNOUNCEMENT_TEXT_LAPTOP);
+  builder->Add("chromeVoxHintAnnouncementTextTablet",
+               IDS_OOBE_CHROMEVOX_HINT_ANNOUNCEMENT_TEXT_TABLET);
 }
 
 void WelcomeScreenHandler::DeclareJSCallbacks() {
@@ -195,6 +205,8 @@
               &WelcomeScreenHandler::HandleSetTimezoneId);
   AddCallback("WelcomeScreen.setDeviceRequisition",
               &WelcomeScreenHandler::HandleSetDeviceRequisition);
+  AddCallback("WelcomeScreen.recordChromeVoxHintSpokenSuccess",
+              &WelcomeScreenHandler::HandleRecordChromeVoxHintSpokenSuccess);
 }
 
 void WelcomeScreenHandler::GetAdditionalParameters(
@@ -287,6 +299,17 @@
     screen_->SetDeviceRequisition(requisition);
 }
 
+void WelcomeScreenHandler::GiveChromeVoxHint() {
+  // Show the ChromeVox hint dialog and give a spoken announcement with
+  // instructions for activating ChromeVox.
+  CallJS("login.WelcomeScreen.maybeGiveChromeVoxHint");
+}
+
+void WelcomeScreenHandler::HandleRecordChromeVoxHintSpokenSuccess() {
+  base::UmaHistogramBoolean("OOBE.WelcomeScreen.ChromeVoxHintSpokenSuccess",
+                            true);
+}
+
 void WelcomeScreenHandler::OnAccessibilityStatusChanged(
     const AccessibilityStatusEventDetails& details) {
   if (details.notification_type == ACCESSIBILITY_MANAGER_SHUTDOWN)
@@ -312,6 +335,8 @@
                        MagnificationManager::Get()->IsDockedMagnifierEnabled());
   a11y_info.SetBoolean("virtualKeyboardEnabled",
                        AccessibilityManager::Get()->IsVirtualKeyboardEnabled());
+  if (screen_ && AccessibilityManager::Get()->IsSpokenFeedbackEnabled())
+    screen_->CancelChromeVoxHintTimer();
   CallJS("login.WelcomeScreen.refreshA11yInfo", a11y_info);
 }
 
diff --git a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h
index 20e1aba..3318ec8b 100644
--- a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h
+++ b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h
@@ -50,6 +50,9 @@
   virtual void ShowDemoModeConfirmationDialog() = 0;
   virtual void ShowEditRequisitionDialog(const std::string& requisition) = 0;
   virtual void ShowRemoraRequisitionDialog() = 0;
+
+  // ChromeVox hint.
+  virtual void GiveChromeVoxHint() = 0;
 };
 
 // WebUI implementation of WelcomeScreenView. It is used to interact with
@@ -72,6 +75,7 @@
   void ShowDemoModeConfirmationDialog() override;
   void ShowEditRequisitionDialog(const std::string& requisition) override;
   void ShowRemoraRequisitionDialog() override;
+  void GiveChromeVoxHint() override;
 
   // BaseScreenHandler:
   void DeclareLocalizedValues(
@@ -93,6 +97,7 @@
   void HandleEnableSelectToSpeak(bool /* enabled */);
   void HandleEnableDockedMagnifier(bool /* enabled */);
   void HandleSetDeviceRequisition(const std::string& requisition);
+  void HandleRecordChromeVoxHintSpokenSuccess();
 
   // Notification of a change in the accessibility settings.
   void OnAccessibilityStatusChanged(
diff --git a/chrome/browser/ui/webui/downloads/downloads_ui.cc b/chrome/browser/ui/webui/downloads/downloads_ui.cc
index b5413d4..3651f9d 100644
--- a/chrome/browser/ui/webui/downloads/downloads_ui.cc
+++ b/chrome/browser/ui/webui/downloads/downloads_ui.cc
@@ -14,7 +14,7 @@
 #include "base/threading/thread.h"
 #include "base/values.h"
 #include "chrome/browser/defaults.h"
-#include "chrome/browser/enterprise/connectors/connectors_manager.h"
+#include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/safe_browsing/advanced_protection_status_manager.h"
 #include "chrome/browser/safe_browsing/advanced_protection_status_manager_factory.h"
@@ -153,7 +153,8 @@
 
   source->AddBoolean(
       "allowOpenNow",
-      !enterprise_connectors::ConnectorsManager::GetInstance()
+      !enterprise_connectors::ConnectorsServiceFactory::GetForBrowserContext(
+           profile)
            ->DelayUntilVerdict(
                enterprise_connectors::AnalysisConnector::FILE_DOWNLOADED));
 
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt
index 74c17b0..bc96d9a2 100644
--- a/chrome/build/linux.pgo.txt
+++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@
-chrome-linux-master-1607320769-89cdddd8995ad3be12a676e570aae350fc15988d.profdata
+chrome-linux-master-1607341806-34092e6e948e6283aae1770f567faca0b14a9512.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index 180519c..1b2a2213 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-master-1607320769-d0ad4f5a17a630b334cdaa2bc2220f2b7c7c5cc2.profdata
+chrome-mac-master-1607341806-857507b5a91b3ce5824fe454e7d197a8b05189bf.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 95935400..036047e 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-master-1607320769-266f8d6f8ffba3874a821f44f98b77515c76c883.profdata
+chrome-win32-master-1607331580-9909f67f911bba407df7ff9d177d8d5f0f5ef14c.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index 226cabf2..c61eb98 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-master-1607309475-be47e6675d78a40c2743c701a82c248ac3d955c3.profdata
+chrome-win64-master-1607341806-af6783e2515ff922f8cbb2f88290f0ca953ce5b4.profdata
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
index 4e0bafd..509c74f 100644
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -429,6 +429,11 @@
 // TODO(bauerb): Remove when this flag is not needed anymore.
 const char kPermissionRequestApiUrl[]       = "permission-request-api-url";
 
+// Used to mock the response received from the Web Permission Prediction
+// Service. Used for testing.
+const char kPredictionServiceMockLikelihood[] =
+    "prediction-service-mock-likelihood";
+
 // Use IPv6 only for privet HTTP.
 const char kPrivetIPv6Only[]                   = "privet-ipv6-only";
 
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
index 73f70ca..7dfdfc3 100644
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -136,6 +136,7 @@
 extern const char kPackExtensionKey[];
 extern const char kPermissionRequestApiScope[];
 extern const char kPermissionRequestApiUrl[];
+extern const char kPredictionServiceMockLikelihood[];
 extern const char kPrivetIPv6Only[];
 extern const char kProductVersion[];
 extern const char kProfileDirectory[];
diff --git a/chrome/common/extensions/api/_api_features.json b/chrome/common/extensions/api/_api_features.json
index 3280c9b..19846da 100644
--- a/chrome/common/extensions/api/_api_features.json
+++ b/chrome/common/extensions/api/_api_features.json
@@ -855,10 +855,16 @@
     "dependencies": ["permission:topSites"],
     "contexts": ["blessed_extension"]
   },
-  "tts": {
+  "tts": [{
     "dependencies": ["permission:tts"],
     "contexts": ["blessed_extension"]
-  },
+  }, {
+    "channel": "stable",
+    "contexts": ["webui"],
+    "matches": [
+      "chrome://oobe/*"
+    ]
+  }],
   "ttsEngine": {
     "dependencies": ["permission:ttsEngine"],
     "contexts": ["blessed_extension"]
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index a3c0970..6baebea 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -3604,6 +3604,7 @@
     "../browser/permissions/crowd_deny_preload_data_unittest.cc",
     "../browser/permissions/crowd_deny_safe_browsing_request_unittest.cc",
     "../browser/permissions/permission_context_base_feature_policy_unittest.cc",
+    "../browser/permissions/prediction_based_permission_ui_selector_unittest.cc",
     "../browser/permissions/pref_notification_permission_ui_selector_unittest.cc",
     "../browser/persisted_state_db/persisted_state_db_factory_unittest.cc",
     "../browser/persisted_state_db/persisted_state_db_unittest.cc",
@@ -4416,6 +4417,7 @@
       "../browser/download/download_shelf_unittest.cc",
       "../browser/enterprise/connectors/analysis_service_settings_unittest.cc",
       "../browser/enterprise/connectors/connectors_manager_unittest.cc",
+      "../browser/enterprise/connectors/connectors_service_unittest.cc",
       "../browser/enterprise/connectors/enterprise_connectors_policy_handler_unittest.cc",
       "../browser/enterprise/connectors/reporting_service_settings_unittest.cc",
       "../browser/enterprise/connectors/service_provider_config_unittest.cc",
@@ -5642,7 +5644,6 @@
       "../browser/safe_browsing/client_side_detection_host_unittest.cc",
       "../browser/safe_browsing/client_side_detection_service_factory_unittest.cc",
       "../browser/safe_browsing/client_side_detection_service_unittest.cc",
-      "../browser/safe_browsing/client_side_model_loader_unittest.cc",
       "../browser/safe_browsing/cloud_content_scanning/binary_fcm_service_unittest.cc",
       "../browser/safe_browsing/cloud_content_scanning/binary_upload_service_unittest.cc",
       "../browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.cc",
diff --git a/chrome/test/data/pdf/fullscreen_test.js b/chrome/test/data/pdf/fullscreen_test.js
index 27d14c4..acc2004 100644
--- a/chrome/test/data/pdf/fullscreen_test.js
+++ b/chrome/test/data/pdf/fullscreen_test.js
@@ -69,10 +69,11 @@
 
     chrome.test.succeed();
   },
-  async function testArrowKeysUpdatePage() {
+  async function testKeysUpdatePage() {
     await ensureFullscreen();
     chrome.test.assertEq(0, viewer.viewport.getMostVisiblePage());
 
+    // Test arrow keys.
     pressAndReleaseKeyOn(viewer, 0, '', 'ArrowDown');
     chrome.test.assertEq(1, viewer.viewport.getMostVisiblePage());
 
@@ -85,6 +86,20 @@
     pressAndReleaseKeyOn(viewer, 0, '', 'ArrowLeft');
     chrome.test.assertEq(0, viewer.viewport.getMostVisiblePage());
 
+    // Test Space key.
+    pressAndReleaseKeyOn(viewer, 0, '', ' ');
+    chrome.test.assertEq(1, viewer.viewport.getMostVisiblePage());
+
+    pressAndReleaseKeyOn(viewer, 0, 'shift', ' ');
+    chrome.test.assertEq(0, viewer.viewport.getMostVisiblePage());
+
+    // Test PageUp/PageDown keys.
+    pressAndReleaseKeyOn(viewer, 0, '', 'PageDown');
+    chrome.test.assertEq(1, viewer.viewport.getMostVisiblePage());
+
+    pressAndReleaseKeyOn(viewer, 0, '', 'PageUp');
+    chrome.test.assertEq(0, viewer.viewport.getMostVisiblePage());
+
     chrome.test.succeed();
   }
 ];
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json
index 3aeee72e4..aaf2881 100644
--- a/chrome/test/data/policy/policy_test_cases.json
+++ b/chrome/test/data/policy/policy_test_cases.json
@@ -7773,7 +7773,7 @@
             }
           ]
         },
-        "prefs": { "enterprise_connectors.on_file_attached": { "location": "local_state" } }
+        "prefs": { "enterprise_connectors.on_file_attached": {} }
       }
     ]
   },
@@ -7808,7 +7808,7 @@
             }
           ]
         },
-        "prefs": { "enterprise_connectors.on_file_downloaded": { "location": "local_state" } }
+        "prefs": { "enterprise_connectors.on_file_downloaded": {} }
       }
     ]
   },
@@ -7841,7 +7841,7 @@
             }
           ]
         },
-        "prefs": { "enterprise_connectors.on_bulk_data_entry": { "location": "local_state" } }
+        "prefs": { "enterprise_connectors.on_bulk_data_entry": {} }
       }
     ]
   },
@@ -7857,7 +7857,7 @@
             }
           ]
         },
-        "prefs": { "enterprise_connectors.on_security_event": { "location": "local_state" } }
+        "prefs": { "enterprise_connectors.on_security_event": {} }
       }
     ]
   },
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn
index 17ead35..4c34766 100644
--- a/chrome/test/data/webui/BUILD.gn
+++ b/chrome/test/data/webui/BUILD.gn
@@ -30,6 +30,10 @@
       "tab_search/tab_search_interactive_ui_tests.js",
     ]
 
+    if (!is_chromeos_ash) {
+      sources += [ "signin/local_profile_customization_interactive_ui_test.js" ]
+    }
+
     gen_include_files = [
       "polymer_browser_test_base.js",
       "polymer_interactive_ui_test.js",
diff --git a/chrome/test/data/webui/cr_components/chromeos/network/network_list_item_test.js b/chrome/test/data/webui/cr_components/chromeos/network/network_list_item_test.js
index dbb8e68c..b45d79f 100644
--- a/chrome/test/data/webui/cr_components/chromeos/network/network_list_item_test.js
+++ b/chrome/test/data/webui/cr_components/chromeos/network/network_list_item_test.js
@@ -16,9 +16,10 @@
 // #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 // #import {FakeNetworkConfig} from 'chrome://test/chromeos/fake_network_config_mojom.m.js';
 // #import {MojoInterfaceProviderImpl} from 'chrome://resources/cr_components/chromeos/network/mojo_interface_provider.m.js';
+// #import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 // clang-format on
 
-suite('NetworkListTest', function() {
+suite('NetworkListItemTest', function() {
   /** @type {!NetworkListItem|undefined} */
   let listItem;
 
@@ -27,6 +28,10 @@
   let mojoApi_ = null;
 
   setup(function() {
+    loadTimeData.overrideValues({
+      updatedCellularActivationUi: true,
+    });
+
     mojom = chromeos.networkConfig.mojom;
     mojoApi_ = new FakeNetworkConfig();
     network_config.MojoInterfaceProviderImpl.getInstance().remote_ = mojoApi_;
@@ -69,19 +74,21 @@
     let providerName = listItem.$$('#networkProviderName');
     assertFalse(!!providerName.textContent.trim());
 
-    const tether = OncMojo.getDefaultManagedProperties(
-        chromeos.networkConfig.mojom.NetworkType.kTether, 'tether1_guid', '');
-    tether.name = OncMojo.createManagedString('tether1');
-    tether.typeProperties.tether.carrier = 'Google Fi';
-    initProperties(tether);
+    const cellular = OncMojo.getDefaultManagedProperties(
+        chromeos.networkConfig.mojom.NetworkType.kCellular, 'cellular1_guid',
+        '');
+    cellular.name = OncMojo.createManagedString('cellular1');
+    cellular.typeProperties.cellular.homeProvider = {name: 'Verizon Wireless'};
+    cellular.typeProperties.cellular.eid = '10000';
+    initProperties(cellular);
 
-    listItem.item =
-        OncMojo.getDefaultNetworkState(mojom.NetworkType.kTether, 'tether1');
+    listItem.item = OncMojo.getDefaultNetworkState(
+        mojom.NetworkType.kCellular, 'cellular1');
 
     await flushAsync();
 
     providerName = listItem.$$('#networkProviderName');
     assertTrue(!!providerName);
-    assertEquals('Google Fi', providerName.textContent.trim());
+    assertEquals('Verizon Wireless', providerName.textContent.trim());
   });
 });
diff --git a/chrome/test/data/webui/signin/BUILD.gn b/chrome/test/data/webui/signin/BUILD.gn
index 32f8168..5b3a3f3 100644
--- a/chrome/test/data/webui/signin/BUILD.gn
+++ b/chrome/test/data/webui/signin/BUILD.gn
@@ -15,15 +15,29 @@
                   ]
   deps = [
     ":dice_web_signin_intercept_test",
-    ":profile_creation_flow_test",
+    ":local_profile_customization_test",
     ":profile_customization_test",
     ":profile_picker_app_test",
+    ":profile_type_choice_test",
     ":test_dice_web_signin_intercept_browser_proxy",
     ":test_manage_profiles_browser_proxy",
     ":test_profile_customization_browser_proxy",
   ]
 }
 
+js_library("local_profile_customization_test") {
+  deps = [
+    ":test_manage_profiles_browser_proxy",
+    "..:chai_assert",
+    "..:test_util.m",
+    "//chrome/browser/resources/signin/profile_picker:lazy_load",
+    "//chrome/browser/resources/signin/profile_picker:profile_picker",
+    "//ui/webui/resources/js:cr.m",
+    "//ui/webui/resources/js:load_time_data.m",
+  ]
+  externs_list = [ "$externs_path/mocha-2.5.js" ]
+}
+
 js_library("dice_web_signin_intercept_test") {
   deps = [
     ":test_dice_web_signin_intercept_browser_proxy",
@@ -35,7 +49,7 @@
   externs_list = [ "$externs_path/mocha-2.5.js" ]
 }
 
-js_library("profile_creation_flow_test") {
+js_library("profile_type_choice_test") {
   deps = [
     "..:chai_assert",
     "..:test_util.m",
diff --git a/chrome/test/data/webui/signin/local_profile_customization_focus_test.js b/chrome/test/data/webui/signin/local_profile_customization_focus_test.js
new file mode 100644
index 0000000..23b649c
--- /dev/null
+++ b/chrome/test/data/webui/signin/local_profile_customization_focus_test.js
@@ -0,0 +1,149 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import {ensureLazyLoaded, ManageProfilesBrowserProxyImpl, navigateTo, Routes} from 'chrome://profile-picker/profile_picker.js';
+import {webUIListenerCallback} from 'chrome://resources/js/cr.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {assertEquals, assertTrue} from '../chai_assert.js';
+import {flushTasks, waitBeforeNextRender, whenAttributeIs, whenCheck} from '../test_util.m.js';
+
+import {TestManageProfilesBrowserProxy} from './test_manage_profiles_browser_proxy.js';
+
+suite('LocalProfileCustomizationFocusTest', function() {
+  /** @type {!ProfilePickerAppElement} */
+  let testElement;
+
+  /** @type {!TestManageProfilesBrowserProxy} */
+  let browserProxy;
+
+  async function resetTestElement(route) {
+    document.body.innerHTML = '';
+    navigateTo(route);
+    testElement = /** @type {!ProfilePickerAppElement} */ (
+        document.createElement('profile-picker-app'));
+    document.body.appendChild(testElement);
+    await waitBeforeNextRender(testElement);
+  }
+
+  setup(function() {
+    browserProxy = new TestManageProfilesBrowserProxy();
+    ManageProfilesBrowserProxyImpl.instance_ = browserProxy;
+    return resetTestElement(Routes.MAIN);
+  });
+
+
+  /** @param {!ProfilePickerMainViewElement} mainView */
+  async function setupMainView(mainView) {
+    assertTrue(!!mainView);
+    await whenCheck(mainView, () => mainView.classList.contains('active'));
+    await browserProxy.whenCalled('initializeMainView');
+    webUIListenerCallback(
+        'profiles-list-changed', [browserProxy.profileSample]);
+    flushTasks();
+  }
+
+  /** @param {!ProfilePickerMainViewElement} mainView */
+  function navigateToProfileCreationFromMainView(mainView) {
+    mainView.$$('#addProfile').focus();
+    mainView.$$('#addProfile').querySelectorAll('cr-icon-button')[0].click();
+    flush();
+  }
+
+  async function setupProfileCreation() {
+    await Promise.all([
+      browserProxy.whenCalled('getNewProfileSuggestedThemeInfo'),
+      ensureLazyLoaded(),
+    ]);
+    browserProxy.reset();
+    flush();
+    await waitBeforeNextRender(testElement);
+  }
+
+  /**
+   * @param {boolean} focused
+   * @param {boolean} valid
+   */
+  async function verifyProfileName(focused, valid) {
+    const profileNameInput = /** @type {!CrInputElement} */ (
+        testElement.$$('local-profile-customization').$$('#nameInput'));
+    assertTrue(!!profileNameInput);
+    await whenAttributeIs(profileNameInput, 'focused_', focused ? '' : null);
+    assertEquals(!valid, profileNameInput.invalid);
+  }
+
+  test('ProfileCreationFlowWithSigninPromo', async function() {
+    assertTrue(loadTimeData.getValue('isBrowserSigninAllowed'));
+    navigateTo(Routes.NEW_PROFILE);
+    await setupProfileCreation();
+    const choice = /** @type {!ProfileTypeChoiceElement} */ (
+        testElement.$$('profile-type-choice'));
+    assertTrue(!!choice);
+    await whenCheck(choice, () => choice.classList.contains('active'));
+    choice.$$('#notNowButton').focus();
+    choice.$$('#notNowButton').click();
+    flush();
+    await waitBeforeNextRender(testElement);
+    const customization =
+        /** @type {!LocalProfileCustomizationElement} */ (
+            testElement.$$('local-profile-customization'));
+    assertTrue(!!customization);
+    await whenCheck(
+        customization, () => customization.classList.contains('active'));
+    await verifyProfileName(true, true);
+    customization.$$('#backButton').focus();
+    await verifyProfileName(false, false);
+
+    // Navigate back and in again.
+    customization.$$('#backButton').click();
+    flush();
+    await whenCheck(choice, () => choice.classList.contains('active'));
+    choice.$$('#notNowButton').focus();
+    choice.$$('#notNowButton').click();
+    flush();
+    await whenCheck(
+        customization, () => customization.classList.contains('active'));
+    await verifyProfileName(true, false);
+    customization.$$('#nameInput').value = 'Work';
+    assertFalse(customization.$$('#nameInput').invalid);
+  });
+
+  test('BrowserSigninNotAllowed', async function() {
+    loadTimeData.overrideValues({
+      isBrowserSigninAllowed: false,
+    });
+    await resetTestElement(Routes.MAIN);
+    const mainView = /** @type {!ProfilePickerMainViewElement} */ (
+        testElement.$$('profile-picker-main-view'));
+    await setupMainView(mainView);
+    navigateToProfileCreationFromMainView(mainView);
+    await setupProfileCreation();
+    let customization =
+        /** @type {!LocalProfileCustomizationElement} */ (
+            testElement.$$('local-profile-customization'));
+    await whenCheck(
+        customization, () => customization.classList.contains('active'));
+    await verifyProfileName(true, true);
+    customization.$$('#backButton').focus();
+    await verifyProfileName(false, false);
+    customization.$$('#backButton').click();
+    flush();
+    await whenCheck(mainView, () => mainView.classList.contains('active'));
+    navigateToProfileCreationFromMainView(mainView);
+    await whenCheck(
+        customization, () => customization.classList.contains('active'));
+    await verifyProfileName(true, false);
+
+    // Open the profile creation flow directly.
+    await resetTestElement(Routes.NEW_PROFILE);
+    await setupProfileCreation();
+    customization =
+        /** @type {!LocalProfileCustomizationElement} */ (
+            testElement.$$('local-profile-customization'));
+    await whenCheck(
+        customization, () => customization.classList.contains('active'));
+    await verifyProfileName(true, true);
+  });
+});
diff --git a/chrome/test/data/webui/signin/local_profile_customization_interactive_ui_test.js b/chrome/test/data/webui/signin/local_profile_customization_interactive_ui_test.js
new file mode 100644
index 0000000..4778454
--- /dev/null
+++ b/chrome/test/data/webui/signin/local_profile_customization_interactive_ui_test.js
@@ -0,0 +1,41 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/** @fileoverview Test suite for the WebUI tab search. */
+
+GEN_INCLUDE(['//chrome/test/data/webui/polymer_interactive_ui_test.js']);
+
+GEN('#include "content/public/test/browser_test.h"');
+GEN('#include "chrome/browser/ui/ui_features.h"');
+
+// eslint-disable-next-line no-var
+var LocalProfileCustomizationFocusTest =
+    class extends PolymerInteractiveUITest {
+  /** @override */
+  get browsePreload() {
+    return 'chrome://profile-picker/test_loader.html?module=signin/local_profile_customization_focus_test.js';
+  }
+
+  /** @override */
+  get extraLibraries() {
+    return [
+      '//third_party/mocha/mocha.js',
+      '//chrome/test/data/webui/mocha_adapter.js',
+    ];
+  }
+
+  /** @override */
+  get featureList() {
+    return {
+      enabled: [
+        'features::kProfilesUIRevamp',
+        'features::kNewProfilePicker',
+      ]
+    };
+  }
+};
+
+TEST_F('LocalProfileCustomizationFocusTest', 'All', function() {
+  mocha.run();
+});
diff --git a/chrome/test/data/webui/signin/local_profile_customization_test.js b/chrome/test/data/webui/signin/local_profile_customization_test.js
new file mode 100644
index 0000000..e4d34ac
--- /dev/null
+++ b/chrome/test/data/webui/signin/local_profile_customization_test.js
@@ -0,0 +1,158 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'chrome://profile-picker/lazy_load.js';
+
+import {AutogeneratedThemeColorInfo, ManageProfilesBrowserProxyImpl, navigateToStep, ProfileCreationSteps, Routes} from 'chrome://profile-picker/profile_picker.js';
+import {webUIListenerCallback} from 'chrome://resources/js/cr.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {assertEquals, assertFalse, assertTrue} from '../chai_assert.js';
+import {flushTasks, isChildVisible, waitBeforeNextRender} from '../test_util.m.js';
+
+import {TestManageProfilesBrowserProxy} from './test_manage_profiles_browser_proxy.js';
+
+suite('LocalProfileCustomizationTest', function() {
+  /** @type {!LocalProfileCustomizationElement} */
+  let customizeProfileElement;
+
+  /** @type {!TestManageProfilesBrowserProxy} */
+  let browserProxy;
+
+  async function resetCustomizeProfileElement() {
+    document.body.innerHTML = '';
+    customizeProfileElement = /** @type {!LocalProfileCustomizationElement} */ (
+        document.createElement('local-profile-customization'));
+    document.body.appendChild(customizeProfileElement);
+    await waitBeforeNextRender(customizeProfileElement);
+    await setProfileTheme(browserProxy.profileThemeInfo);
+  }
+
+  setup(function() {
+    browserProxy = new TestManageProfilesBrowserProxy();
+    ManageProfilesBrowserProxyImpl.instance_ = browserProxy;
+    return resetCustomizeProfileElement();
+  });
+
+  /** @param {!AutogeneratedThemeColorInfo} theme */
+  async function setProfileTheme(theme) {
+    browserProxy.setProfileThemeInfo(theme);
+    customizeProfileElement.$$('#colorPicker').selectedTheme = {
+      type: 2,
+      info: {
+        chromeThemeId: browserProxy.profileThemeInfo.colorId,
+      },
+    };
+    await browserProxy.whenCalled('getProfileThemeInfo');
+    browserProxy.resetResolver('getProfileThemeInfo');
+  }
+
+  /**
+   * @param {string} profileName
+   * @param {number} profileColor
+   * @param {string} avatarUrl
+   * @param {boolean} isGeneric
+   * @param {boolean} createShortcut
+   */
+  async function verifyCreateProfileCalledWithParams(
+      profileName, profileColor, avatarUrl, isGeneric, createShortcut) {
+    const args = await browserProxy.whenCalled('createProfile');
+    assertEquals(args[0], profileName);
+    assertEquals(args[1], profileColor);
+    assertEquals(args[2], avatarUrl);
+    assertEquals(args[3], isGeneric);
+    assertEquals(args[4], createShortcut);
+    browserProxy.resetResolver('createProfile');
+  }
+
+  test('ProfileName', async function() {
+    const profileNameInput = /** @type {!CrInputElement} */ (
+        customizeProfileElement.$$('#nameInput'));
+    assertTrue(isChildVisible(customizeProfileElement, '#nameInput'));
+    assertFalse(profileNameInput.invalid);
+    assertTrue(customizeProfileElement.$$('#save').disabled);
+
+    // Invalid profile name.
+    profileNameInput.value = '\t';
+    assertTrue(profileNameInput.invalid);
+    profileNameInput.value = ' ';
+    assertTrue(profileNameInput.invalid);
+    assertTrue(customizeProfileElement.$$('#save').disabled);
+    // Valid profil name.
+    profileNameInput.value = 'Work';
+    assertFalse(profileNameInput.invalid);
+    assertFalse(customizeProfileElement.$$('#save').disabled);
+    customizeProfileElement.$$('#save').click();
+    await verifyCreateProfileCalledWithParams(
+        'Work', browserProxy.profileThemeInfo.color, '', true, false);
+  });
+
+  test('ThemeSelectionChanges', async function() {
+    function verifyAppliedTheme() {
+      assertEquals(
+          getComputedStyle(customizeProfileElement.$$('#headerContainer'))
+              .backgroundColor,
+          browserProxy.profileThemeInfo.themeFrameColor);
+      assertEquals(
+          getComputedStyle(customizeProfileElement.$$('#backButton'))
+              .getPropertyValue('--cr-icon-button-fill-color')
+              .trim(),
+          browserProxy.profileThemeInfo.themeFrameTextColor);
+      assertEquals(
+          getComputedStyle(customizeProfileElement.$$('#title')).color,
+          browserProxy.profileThemeInfo.themeFrameTextColor);
+      assertEquals(
+          (customizeProfileElement.$$('img').src).split('/').pop(),
+          browserProxy.profileThemeInfo.themeGenericAvatar);
+    }
+    assertTrue(isChildVisible(customizeProfileElement, '#colorPicker'));
+    verifyAppliedTheme();
+    await setProfileTheme({
+      color: -3413569,
+      colorId: 7,
+      themeFrameColor: 'rgb(203, 233, 191)',
+      themeFrameTextColor: 'rgb(32, 33, 36)',
+      themeGenericAvatar: 'AvatarUrl-7',
+      themeShapeColor: 'rgb(255, 255, 255)'
+    });
+    verifyAppliedTheme();
+    assertTrue(customizeProfileElement.$$('#save').disabled);
+    customizeProfileElement.$$('#nameInput').value = 'Personal';
+    customizeProfileElement.$$('#save').click();
+    await verifyCreateProfileCalledWithParams(
+        'Personal', browserProxy.profileThemeInfo.color, '', true, false);
+  });
+
+  test('createShortcut', async function() {
+    assertTrue(!!customizeProfileElement.$$('cr-checkbox'));
+    assertTrue(customizeProfileElement.$$('cr-checkbox').hidden);
+    loadTimeData.overrideValues({
+      profileShortcutsEnabled: true,
+    });
+    await resetCustomizeProfileElement();
+    assertTrue(isChildVisible(customizeProfileElement, '#nameInput'));
+    const createShortcut = /** @type {!CrCheckboxElement} */ (
+        customizeProfileElement.$$('cr-checkbox'));
+    assertFalse(createShortcut.hidden);
+    assertTrue(createShortcut.checked);
+    createShortcut.click();
+    assertFalse(createShortcut.checked);
+    customizeProfileElement.$$('#nameInput').value = 'Personal';
+    customizeProfileElement.$$('#save').click();
+    await verifyCreateProfileCalledWithParams(
+        'Personal', browserProxy.profileThemeInfo.color, '', true, false);
+    // Profile creation in progress should disable the save button.
+    assertTrue(customizeProfileElement.$$('#save').disabled);
+    // Fire profile creation finished.
+    webUIListenerCallback('create-profile-finished');
+    flushTasks();
+    assertFalse(customizeProfileElement.$$('#save').disabled);
+    createShortcut.click();
+    assertTrue(createShortcut.checked);
+    customizeProfileElement.$$('#save').click();
+    await verifyCreateProfileCalledWithParams(
+        'Personal', browserProxy.profileThemeInfo.color, '', true, true);
+  });
+});
diff --git a/chrome/test/data/webui/signin/profile_picker_app_test.js b/chrome/test/data/webui/signin/profile_picker_app_test.js
index e6e13965..e9b80cd 100644
--- a/chrome/test/data/webui/signin/profile_picker_app_test.js
+++ b/chrome/test/data/webui/signin/profile_picker_app_test.js
@@ -8,7 +8,7 @@
 import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {assertEquals, assertTrue} from '../chai_assert.js';
-import {waitBeforeNextRender} from '../test_util.m.js';
+import {flushTasks, waitBeforeNextRender, whenAttributeIs, whenCheck} from '../test_util.m.js';
 
 import {TestManageProfilesBrowserProxy} from './test_manage_profiles_browser_proxy.js';
 
@@ -39,11 +39,34 @@
    * @return {!Promise} Promise that resolves when initialization is complete
    *     and the lazy loaded module has been loaded.
    */
-  function waitForProfileCretionLoad() {
-    return Promise.all([
+  async function waitForProfileCretionLoad() {
+    await Promise.all([
       browserProxy.whenCalled('getNewProfileSuggestedThemeInfo'),
       ensureLazyLoaded(),
     ]);
+    browserProxy.reset();
+  }
+
+  /** @param {!HTMLElement} element */
+  function verifyProfileCreationViewStyle(element) {
+    assertEquals(
+        getComputedStyle(element.$$('#headerContainer'))
+            .getPropertyValue('--theme-frame-color')
+            .trim(),
+        browserProxy.profileThemeInfo.themeFrameColor);
+    assertEquals(
+        getComputedStyle(element.$$('#headerContainer'))
+            .getPropertyValue('--theme-text-color')
+            .trim(),
+        browserProxy.profileThemeInfo.themeFrameTextColor);
+    assertEquals(
+        getComputedStyle(element.$$('#headerContainer')).backgroundColor,
+        browserProxy.profileThemeInfo.themeFrameColor);
+    assertEquals(
+        getComputedStyle(element.$$('#backButton'))
+            .getPropertyValue('--cr-icon-button-fill-color')
+            .trim(),
+        browserProxy.profileThemeInfo.themeFrameTextColor);
   }
 
   test('ProfilePickerMainView', async function() {
@@ -51,34 +74,29 @@
         testElement.shadowRoot.querySelectorAll('[slot=view]').length, 1);
     const mainView = /** @type {!ProfilePickerMainViewElement} */ (
         testElement.$$('profile-picker-main-view'));
-    assertTrue(mainView.classList.contains('active'));
+    await whenCheck(mainView, () => mainView.classList.contains('active'));
     await browserProxy.whenCalled('initializeMainView');
     assertTrue(mainView.$$('#wrapper').hidden);
-    const profile = {
-      profilePath: 'profile1',
-      localProfileName: 'Work',
-      isSyncing: true,
-      gaiaName: 'Alice',
-      userName: 'Alice@gmail.com',
-      isManaged: false,
-      avatarIcon: 'url',
-    };
-    webUIListenerCallback('profiles-list-changed', [profile]);
-    flush();
+
+    webUIListenerCallback(
+        'profiles-list-changed', [browserProxy.profileSample]);
+    flushTasks();
     assertEquals(
         mainView.shadowRoot.querySelectorAll('profile-card').length, 1);
     mainView.$$('#addProfile').querySelectorAll('cr-icon-button')[0].click();
     await waitForProfileCretionLoad();
-    await waitBeforeNextRender(testElement);
     assertEquals(
         testElement.shadowRoot.querySelectorAll('[slot=view]').length, 2);
-    assertTrue(!mainView.classList.contains('active'));
+    const choice = /** @type {!ProfileTypeChoiceElement} */ (
+        testElement.$$('profile-type-choice'));
+    assertTrue(!!choice);
+    await whenCheck(choice, () => choice.classList.contains('active'));
+    verifyProfileCreationViewStyle(choice);
   });
 
   test('SignInPromoSignIn', async function() {
-    resetTestElement(Routes.NEW_PROFILE);
+    await resetTestElement(Routes.NEW_PROFILE);
     await waitForProfileCretionLoad();
-    await waitBeforeNextRender(testElement);
     const choice = /** @type {!ProfileTypeChoiceElement} */ (
         testElement.$$('profile-type-choice'));
     assertTrue(!!choice);
@@ -89,33 +107,61 @@
     return browserProxy.whenCalled('loadSignInProfileCreationFlow');
   });
 
-  test('SignInPromoLocalProfile', async function() {
-    resetTestElement(Routes.NEW_PROFILE);
+  test('ThemeColorConsistentInProfileCreationViews', async function() {
+    await resetTestElement(Routes.NEW_PROFILE);
     await waitForProfileCretionLoad();
-    await waitBeforeNextRender(testElement);
-
     const choice = /** @type {!ProfileTypeChoiceElement} */ (
         testElement.$$('profile-type-choice'));
     assertTrue(!!choice);
+    await whenCheck(choice, () => choice.classList.contains('active'));
+    verifyProfileCreationViewStyle(choice);
     choice.$$('#notNowButton').click();
+    await waitBeforeNextRender(testElement);
     const customization =
         /** @type {!LocalProfileCustomizationElement} */ (
             testElement.$$('local-profile-customization'));
     assertTrue(!!customization);
-    assertTrue(customization.classList.contains('active'));
+    await whenCheck(
+        customization, () => customization.classList.contains('active'));
+    verifyProfileCreationViewStyle(customization);
+
+    // Test color changes from the local profile customization is reflected in
+    // the profile type choice.
+    browserProxy.resetResolver('getProfileThemeInfo');
+    const colorPicker = customization.$$('#colorPicker');
+    assertTrue(!!colorPicker);
+    assertTrue(!!colorPicker.selectedTheme);
+    browserProxy.setProfileThemeInfo({
+      color: -3413569,
+      colorId: 7,
+      themeFrameColor: 'rgb(203, 233, 191)',
+      themeFrameTextColor: 'rgb(32, 33, 36)',
+      themeGenericAvatar: 'AvatarUrl-7',
+      themeShapeColor: 'rgb(255, 255, 255)'
+    });
+    // Select different color.
+    colorPicker.selectedTheme = {
+      type: 2,
+      info: {
+        chromeThemeId: browserProxy.profileThemeInfo.colorId,
+      },
+    };
+    await browserProxy.whenCalled('getProfileThemeInfo');
+    verifyProfileCreationViewStyle(customization);
+    customization.$$('#backButton').click();
+    await whenCheck(choice, () => choice.classList.contains('active'));
+    verifyProfileCreationViewStyle(choice);
   });
 
   test('ProfileCreationNotAllowed', async function() {
-    document.body.innerHTML = '';
     loadTimeData.overrideValues({
       isProfileCreationAllowed: false,
     });
-    resetTestElement(Routes.NEW_PROFILE);
+    await resetTestElement(Routes.NEW_PROFILE);
     assertEquals(
         testElement.shadowRoot.querySelectorAll('[slot=view]').length, 1);
     const mainView = /** @type {!ProfilePickerMainViewElement} */ (
         testElement.$$('profile-picker-main-view'));
-    await waitBeforeNextRender(testElement);
-    assertTrue(mainView.classList.contains('active'));
+    await whenCheck(mainView, () => mainView.classList.contains('active'));
   });
 });
diff --git a/chrome/test/data/webui/signin/profile_creation_flow_test.js b/chrome/test/data/webui/signin/profile_type_choice_test.js
similarity index 88%
rename from chrome/test/data/webui/signin/profile_creation_flow_test.js
rename to chrome/test/data/webui/signin/profile_type_choice_test.js
index a4a8f02..b07f1a7 100644
--- a/chrome/test/data/webui/signin/profile_creation_flow_test.js
+++ b/chrome/test/data/webui/signin/profile_type_choice_test.js
@@ -7,13 +7,13 @@
 import {assertTrue} from '../chai_assert.js';
 import {isChildVisible} from '../test_util.m.js';
 
-suite('ProfileCreationFlowTest', function() {
+suite('ProfileTypeChoiceTest', function() {
   /** @type {!ProfileTypeChoiceElement} */
   let choice;
 
   setup(function() {
     document.body.innerHTML = '';
-    choice = /** @type {!ProfileTypeChoiceElement} */(
+    choice = /** @type {!ProfileTypeChoiceElement} */ (
         document.createElement('profile-type-choice'));
     document.body.append(choice);
   });
diff --git a/chrome/test/data/webui/signin/signin_browsertest.js b/chrome/test/data/webui/signin/signin_browsertest.js
index 512b6f0..ec6e5fdc 100644
--- a/chrome/test/data/webui/signin/signin_browsertest.js
+++ b/chrome/test/data/webui/signin/signin_browsertest.js
@@ -85,10 +85,10 @@
  * This has to be declared as a variable for TEST_F to find it correctly.
  */
 // eslint-disable-next-line no-var
-var ProfileCreationFlowTest = class extends SigninBrowserTest {
+var ProfileTypeChoiceTest = class extends SigninBrowserTest {
   /** @override */
   get browsePreload() {
-    return 'chrome://profile-picker/test_loader.html?module=signin/profile_creation_flow_test.js';
+    return 'chrome://profile-picker/test_loader.html?module=signin/profile_type_choice_test.js';
   }
 
   /** @override */
@@ -102,7 +102,34 @@
   }
 };
 
-TEST_F('ProfileCreationFlowTest', 'Buttons', function() {
+TEST_F('ProfileTypeChoiceTest', 'Buttons', function() {
+  mocha.run();
+});
+
+
+/**
+ * Test fixture for
+ * chrome/browser/resources/signin/profile_picker/profile_creation_flow/local_profile_customization.html.
+ * This has to be declared as a variable for TEST_F to find it correctly.
+ */
+// eslint-disable-next-line no-var
+var LocalProfileCustomizationTest = class extends SigninBrowserTest {
+  /** @override */
+  get browsePreload() {
+    return 'chrome://profile-picker/test_loader.html?module=signin/local_profile_customization_test.js';
+  }
+
+  /** @override */
+  get featureList() {
+    return {
+      enabled: [
+        'features::kProfilesUIRevamp',
+      ]
+    };
+  }
+};
+
+TEST_F('LocalProfileCustomizationTest', 'All', function() {
   mocha.run();
 });
 
diff --git a/chrome/test/data/webui/signin/test_manage_profiles_browser_proxy.js b/chrome/test/data/webui/signin/test_manage_profiles_browser_proxy.js
index adc1aa9..9a747bd 100644
--- a/chrome/test/data/webui/signin/test_manage_profiles_browser_proxy.js
+++ b/chrome/test/data/webui/signin/test_manage_profiles_browser_proxy.js
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import {ManageProfilesBrowserProxy} from 'chrome://profile-picker/profile_picker.js';
+import {AutogeneratedThemeColorInfo, ManageProfilesBrowserProxy, ProfileState} from 'chrome://profile-picker/profile_picker.js';
 
 import {TestBrowserProxy} from '../test_browser_proxy.m.js';
 
@@ -22,6 +22,32 @@
       'loadSignInProfileCreationFlow',
       'createProfile',
     ]);
+
+    /** @type {!AutogeneratedThemeColorInfo} */
+    this.profileThemeInfo = {
+      colorId: 22,
+      color: -10799479,
+      themeFrameColor: 'rgb(70, 42, 104)',
+      themeShapeColor: 'rgb(109, 65, 161)',
+      themeFrameTextColor: 'rgb(255, 255, 255)',
+      themeGenericAvatar: 'AvatarUrl-22'
+    };
+
+    /** @type {!ProfileState} */
+    this.profileSample = {
+      profilePath: 'profile1',
+      localProfileName: 'Work',
+      isSyncing: true,
+      gaiaName: 'Alice',
+      userName: 'Alice@gmail.com',
+      isManaged: false,
+      avatarIcon: 'url',
+    };
+  }
+
+  /** @param {!AutogeneratedThemeColorInfo} profileThemeInfo */
+  setProfileThemeInfo(profileThemeInfo) {
+    this.profileThemeInfo = profileThemeInfo;
   }
 
   /** @override */
@@ -52,27 +78,13 @@
   /** @override */
   getNewProfileSuggestedThemeInfo() {
     this.methodCalled('getNewProfileSuggestedThemeInfo');
-    return Promise.resolve({
-      colorId: 0,
-      color: 0,
-      themeFrameColor: '',
-      themeShapeColor: '',
-      themeFrameTextColor: '',
-      themeGenericAvatar: ''
-    });
+    return Promise.resolve(this.profileThemeInfo);
   }
 
   /** @override */
   getProfileThemeInfo(theme) {
     this.methodCalled('getProfileThemeInfo');
-    return Promise.resolve({
-      colorId: theme.colorId,
-      color: theme.color || 0,
-      themeFrameColor: '',
-      themeShapeColor: '',
-      themeFrameTextColor: '',
-      themeGenericAvatar: ''
-    });
+    return Promise.resolve(this.profileThemeInfo);
   }
 
   /** @override */
diff --git a/chrome/test/data/webui/test_util.js b/chrome/test/data/webui/test_util.js
index c6ec4d5..e07d5f5 100644
--- a/chrome/test/data/webui/test_util.js
+++ b/chrome/test/data/webui/test_util.js
@@ -44,6 +44,28 @@
   }
 
   /**
+   * Observes an HTML element and fires a promise when the check function is
+   * satisfied.
+   * @param {!HTMLElement} target
+   * @param {Function} check
+   * @return {!Promise}
+   */
+  /* #export */ function whenCheck(target, check) {
+    return check() ?
+        Promise.resolve() :
+        new Promise(resolve => new MutationObserver((list, observer) => {
+                                 if (check()) {
+                                   observer.disconnect();
+                                   resolve();
+                                 }
+                               }).observe(target, {
+          attributes: true,
+          childList: true,
+          subtree: true
+        }));
+  }
+
+  /**
    * Converts an event occurrence to a promise.
    * @param {string} eventType
    * @param {!Element|!EventTarget|!Window} target
diff --git a/chromeos/constants/chromeos_features.cc b/chromeos/constants/chromeos_features.cc
index 5e2b1ce..60b0ef6 100644
--- a/chromeos/constants/chromeos_features.cc
+++ b/chromeos/constants/chromeos_features.cc
@@ -270,6 +270,10 @@
 const base::Feature kEnableLocalSearchService{
     "EnableLocalSearchService", base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Enables the OOBE ChromeVox hint dialog and announcement feature.
+const base::Feature kEnableOobeChromeVoxHint{"EnableOobeChromeVoxHint",
+                                             base::FEATURE_ENABLED_BY_DEFAULT};
+
 // Enables Device End Of Lifetime warning notifications.
 const base::Feature kEolWarningNotifications{"EolWarningNotifications",
                                              base::FEATURE_ENABLED_BY_DEFAULT};
@@ -773,6 +777,10 @@
   return base::FeatureList::IsEnabled(kNewOobeLayout);
 }
 
+bool IsOobeChromeVoxHintEnabled() {
+  return base::FeatureList::IsEnabled(kEnableOobeChromeVoxHint);
+}
+
 bool IsClipboardHistoryEnabled() {
   return base::FeatureList::IsEnabled(kClipboardHistory) ||
          base::FeatureList::IsEnabled(kClipboardHistorySimpleRender);
diff --git a/chromeos/constants/chromeos_features.h b/chromeos/constants/chromeos_features.h
index 73761be..63e0696 100644
--- a/chromeos/constants/chromeos_features.h
+++ b/chromeos/constants/chromeos_features.h
@@ -130,6 +130,7 @@
 extern const base::Feature kEnableHostnameSetting;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 extern const base::Feature kEnableLocalSearchService;
+extern const base::Feature kEnableOobeChromeVoxHint;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 extern const base::Feature kEolWarningNotifications;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
@@ -344,6 +345,7 @@
 bool IsClipboardHistoryNudgeSessionResetEnabled();
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 bool IsClipboardHistorySimpleRenderEnabled();
+COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsOobeChromeVoxHintEnabled();
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsOobeScreensPriorityEnabled();
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsPhoneHubEnabled();
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsPhoneHubUseBleEnabled();
diff --git a/chromeos/constants/chromeos_switches.cc b/chromeos/constants/chromeos_switches.cc
index fc46df7..0aa4211 100644
--- a/chromeos/constants/chromeos_switches.cc
+++ b/chromeos/constants/chromeos_switches.cc
@@ -231,6 +231,11 @@
 // Disables the multiple display layout UI.
 const char kDisableMultiDisplayLayout[] = "disable-multi-display-layout";
 
+// Disables the ChromeVox hint timer in OOBE, which can lead to unexpected
+// behavior during tests.
+const char kDisableOOBEChromeVoxHintTimerForTesting[] =
+    "disable-oobe-chromevox-hint-timer-for-testing";
+
 // Disables per-user timezone.
 const char kDisablePerUserTimezone[] = "disable-per-user-timezone";
 
@@ -671,5 +676,10 @@
       kUpdateRequiredAueForTest);
 }
 
+bool IsOOBEChromeVoxHintTimerDisabledForTesting() {
+  return base::CommandLine::ForCurrentProcess()->HasSwitch(
+      kDisableOOBEChromeVoxHintTimerForTesting);
+}
+
 }  // namespace switches
 }  // namespace chromeos
diff --git a/chromeos/constants/chromeos_switches.h b/chromeos/constants/chromeos_switches.h
index 33fe4dd..109c851 100644
--- a/chromeos/constants/chromeos_switches.h
+++ b/chromeos/constants/chromeos_switches.h
@@ -92,6 +92,8 @@
 extern const char kDisableMultiDisplayLayout[];
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const char kDisableNewZIPUnpacker[];
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
+extern const char kDisableOOBEChromeVoxHintTimerForTesting[];
+COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 extern const char kDisablePerUserTimezone[];
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const char kDisableRollbackOption[];
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
@@ -282,6 +284,10 @@
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 bool IsAueReachedForUpdateRequiredForTest();
 
+// Returns true if the OOBE ChromeVox hint timer is disabled for testing.
+COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
+bool IsOOBEChromeVoxHintTimerDisabledForTesting();
+
 }  // namespace switches
 }  // namespace chromeos
 
diff --git a/chromeos/dbus/cryptohome/cryptohome_client.cc b/chromeos/dbus/cryptohome/cryptohome_client.cc
index 077aa5026..eebd78b 100644
--- a/chromeos/dbus/cryptohome/cryptohome_client.cc
+++ b/chromeos/dbus/cryptohome/cryptohome_client.cc
@@ -284,16 +284,6 @@
   }
 
   // CryptohomeClient override.
-  void TpmGetPassword(DBusMethodCallback<std::string> callback) override {
-    dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
-                                 cryptohome::kCryptohomeTpmGetPassword);
-    proxy_->CallMethod(
-        &method_call, kTpmDBusTimeoutMs,
-        base::BindOnce(&CryptohomeClientImpl::OnStringMethod,
-                       weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
-  }
-
-  // CryptohomeClient override.
   void TpmIsOwned(DBusMethodCallback<bool> callback) override {
     dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
                                  cryptohome::kCryptohomeTpmIsOwned);
@@ -461,17 +451,6 @@
     return CallBoolMethodAndBlock(&method_call, is_first_install);
   }
 
-  // CryptohomeClient override.
-  void TpmGetVersion(DBusMethodCallback<TpmVersionInfo> callback) override {
-    dbus::MethodCall method_call(
-        cryptohome::kCryptohomeInterface,
-        cryptohome::kCryptohomeTpmGetVersionStructured);
-    proxy_->CallMethod(
-        &method_call, kTpmDBusTimeoutMs,
-        base::BindOnce(&CryptohomeClientImpl::OnTpmGetVersion,
-                       weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
-  }
-
   void GetKeyDataEx(
       const cryptohome::AccountIdentifier& id,
       const cryptohome::AuthorizationRequest& auth,
@@ -991,28 +970,6 @@
     std::move(callback).Run(std::move(token_info));
   }
 
-  // Handles responses for TpmGetVersion.
-  void OnTpmGetVersion(DBusMethodCallback<TpmVersionInfo> callback,
-                       dbus::Response* response) {
-    if (!response) {
-      std::move(callback).Run(base::nullopt);
-      return;
-    }
-    dbus::MessageReader reader(response);
-    TpmVersionInfo version;
-    if (!reader.PopUint32(&version.family) ||
-        !reader.PopUint64(&version.spec_level) ||
-        !reader.PopUint32(&version.manufacturer) ||
-        !reader.PopUint32(&version.tpm_model) ||
-        !reader.PopUint64(&version.firmware_version) ||
-        !reader.PopString(&version.vendor_specific)) {
-      std::move(callback).Run(base::nullopt);
-      LOG(ERROR) << "Invalid response: " << response->ToString();
-      return;
-    }
-    std::move(callback).Run(std::move(version));
-  }
-
   // Handles AsyncCallStatus signal.
   void AsyncCallStatusReceived(dbus::Signal* signal) {
     dbus::MessageReader reader(signal);
diff --git a/chromeos/dbus/cryptohome/cryptohome_client.h b/chromeos/dbus/cryptohome/cryptohome_client.h
index 36bb3f35..218dd07 100644
--- a/chromeos/dbus/cryptohome/cryptohome_client.h
+++ b/chromeos/dbus/cryptohome/cryptohome_client.h
@@ -120,17 +120,6 @@
     int slot = -1;
   };
 
-  // Holds TPM version info. Mirrors cryptohome::Tpm::TpmVersionInfo from CrOS
-  // side.
-  struct TpmVersionInfo {
-    uint32_t family = 0;
-    uint64_t spec_level = 0;
-    uint32_t manufacturer = 0;
-    uint32_t tpm_model = 0;
-    uint64_t firmware_version = 0;
-    std::string vendor_specific;
-  };
-
   // Creates and initializes the global instance. |bus| must not be null.
   static void Initialize(dbus::Bus* bus);
 
@@ -234,9 +223,6 @@
   // TODO(hashimoto): Remove this method. crbug.com/141006
   virtual bool CallTpmIsEnabledAndBlock(bool* enabled) = 0;
 
-  // Calls TpmGetPassword method.
-  virtual void TpmGetPassword(DBusMethodCallback<std::string> callback) = 0;
-
   // Calls TpmIsOwned method.
   virtual void TpmIsOwned(DBusMethodCallback<bool> callback) = 0;
 
@@ -309,10 +295,6 @@
   // succeeds. This method blocks until the call returns.
   virtual bool InstallAttributesIsFirstInstall(bool* is_first_install) = 0;
 
-  // Asynchronously gets the underlying TPM version information and passes it to
-  // the given callback.
-  virtual void TpmGetVersion(DBusMethodCallback<TpmVersionInfo> callback) = 0;
-
   // Asynchronously calls the GetKeyDataEx method. |callback| will be invoked
   // with the reply protobuf.
   // GetKeyDataEx returns information about the key specified in |request|. At
diff --git a/chromeos/dbus/cryptohome/fake_cryptohome_client.cc b/chromeos/dbus/cryptohome/fake_cryptohome_client.cc
index 1a794b9..0ab6f5f 100644
--- a/chromeos/dbus/cryptohome/fake_cryptohome_client.cc
+++ b/chromeos/dbus/cryptohome/fake_cryptohome_client.cc
@@ -44,9 +44,6 @@
 
 }  // namespace
 
-// static
-constexpr char FakeCryptohomeClient::kStubTpmPassword[] = "Stub-TPM-password";
-
 FakeCryptohomeClient::FakeCryptohomeClient() {
   DCHECK(!g_instance);
   g_instance = this;
@@ -185,13 +182,6 @@
   return true;
 }
 
-void FakeCryptohomeClient::TpmGetPassword(
-    DBusMethodCallback<std::string> callback) {
-  base::ThreadTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE,
-      base::BindOnce(std::move(callback), std::string(kStubTpmPassword)));
-}
-
 void FakeCryptohomeClient::TpmIsOwned(DBusMethodCallback<bool> callback) {
   base::ThreadTaskRunnerHandle::Get()->PostTask(
       FROM_HERE, base::BindOnce(std::move(callback), true));
@@ -325,12 +315,6 @@
   return true;
 }
 
-void FakeCryptohomeClient::TpmGetVersion(
-    DBusMethodCallback<TpmVersionInfo> callback) {
-  base::ThreadTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE, base::BindOnce(std::move(callback), TpmVersionInfo()));
-}
-
 void FakeCryptohomeClient::GetKeyDataEx(
     const cryptohome::AccountIdentifier& cryptohome_id,
     const cryptohome::AuthorizationRequest& auth,
diff --git a/chromeos/dbus/cryptohome/fake_cryptohome_client.h b/chromeos/dbus/cryptohome/fake_cryptohome_client.h
index c2e80c5..bd3e9fb3 100644
--- a/chromeos/dbus/cryptohome/fake_cryptohome_client.h
+++ b/chromeos/dbus/cryptohome/fake_cryptohome_client.h
@@ -37,9 +37,6 @@
   // Checks that a FakeCryptohome instance was initialized and returns it.
   static FakeCryptohomeClient* Get();
 
-  // Expose stub password for tests.
-  static const char kStubTpmPassword[];
-
   // CryptohomeClient overrides
   void AddObserver(Observer* observer) override;
   void RemoveObserver(Observer* observer) override;
@@ -76,7 +73,6 @@
   void TpmIsReady(DBusMethodCallback<bool> callback) override;
   void TpmIsEnabled(DBusMethodCallback<bool> callback) override;
   bool CallTpmIsEnabledAndBlock(bool* enabled) override;
-  void TpmGetPassword(DBusMethodCallback<std::string> callback) override;
   void TpmIsOwned(DBusMethodCallback<bool> callback) override;
   bool CallTpmIsOwnedAndBlock(bool* owned) override;
   void TpmIsBeingOwned(DBusMethodCallback<bool> callback) override;
@@ -100,7 +96,6 @@
   void InstallAttributesIsReady(DBusMethodCallback<bool> callback) override;
   bool InstallAttributesIsInvalid(bool* is_invalid) override;
   bool InstallAttributesIsFirstInstall(bool* is_first_install) override;
-  void TpmGetVersion(DBusMethodCallback<TpmVersionInfo> callback) override;
   void GetKeyDataEx(
       const cryptohome::AccountIdentifier& cryptohome_id,
       const cryptohome::AuthorizationRequest& auth,
diff --git a/chromeos/dbus/cryptohome/tpm_util.cc b/chromeos/dbus/cryptohome/tpm_util.cc
index bd97157..f36ff17 100644
--- a/chromeos/dbus/cryptohome/tpm_util.cc
+++ b/chromeos/dbus/cryptohome/tpm_util.cc
@@ -32,16 +32,6 @@
   return result;
 }
 
-void GetTpmVersion(GetTpmVersionCallback callback) {
-  CryptohomeClient::Get()->TpmGetVersion(base::BindOnce(
-      [](GetTpmVersionCallback callback,
-         base::Optional<CryptohomeClient::TpmVersionInfo> tpm_version_info) {
-        std::move(callback).Run(
-            tpm_version_info.value_or(CryptohomeClient::TpmVersionInfo()));
-      },
-      std::move(callback)));
-}
-
 bool InstallAttributesGet(const std::string& name, std::string* value) {
   std::vector<uint8_t> buf;
   bool success = false;
diff --git a/chromeos/dbus/cryptohome/tpm_util.h b/chromeos/dbus/cryptohome/tpm_util.h
index e2d0eaf..e8dd3e50 100644
--- a/chromeos/dbus/cryptohome/tpm_util.h
+++ b/chromeos/dbus/cryptohome/tpm_util.h
@@ -28,12 +28,6 @@
 // generating).
 COMPONENT_EXPORT(CRYPTOHOME_CLIENT) bool TpmIsBeingOwned();
 
-// Asynchronous. Provides the TPM version information in |callback|.
-using GetTpmVersionCallback = base::OnceCallback<void(
-    const CryptohomeClient::TpmVersionInfo& tpm_version_info)>;
-COMPONENT_EXPORT(CRYPTOHOME_CLIENT)
-void GetTpmVersion(GetTpmVersionCallback callback);
-
 // Blocking calls to CryptohomeClient methods.
 COMPONENT_EXPORT(CRYPTOHOME_CLIENT)
 bool InstallAttributesGet(const std::string& name, std::string* value);
diff --git a/chromeos/dbus/tpm_manager/fake_tpm_manager_client.cc b/chromeos/dbus/tpm_manager/fake_tpm_manager_client.cc
index 182b7dd..0b2e04f 100644
--- a/chromeos/dbus/tpm_manager/fake_tpm_manager_client.cc
+++ b/chromeos/dbus/tpm_manager/fake_tpm_manager_client.cc
@@ -56,7 +56,7 @@
 void FakeTpmManagerClient::GetDictionaryAttackInfo(
     const ::tpm_manager::GetDictionaryAttackInfoRequest& request,
     GetDictionaryAttackInfoCallback callback) {
-  NOTIMPLEMENTED();
+  PostProtoResponse(std::move(callback), dictionary_attack_info_reply_);
 }
 
 void FakeTpmManagerClient::TakeOwnership(
@@ -100,6 +100,11 @@
   return &version_info_reply_;
 }
 
+::tpm_manager::GetDictionaryAttackInfoReply*
+FakeTpmManagerClient::mutable_dictionary_attack_info_reply() {
+  return &dictionary_attack_info_reply_;
+}
+
 int FakeTpmManagerClient::clear_stored_owner_password_count() const {
   return clear_stored_owner_password_count_;
 }
diff --git a/chromeos/dbus/tpm_manager/fake_tpm_manager_client.h b/chromeos/dbus/tpm_manager/fake_tpm_manager_client.h
index fb295fd..c853b85 100644
--- a/chromeos/dbus/tpm_manager/fake_tpm_manager_client.h
+++ b/chromeos/dbus/tpm_manager/fake_tpm_manager_client.h
@@ -50,6 +50,8 @@
   mutable_nonsensitive_status_reply() override;
   void set_non_nonsensitive_status_dbus_error_count(int count) override;
   ::tpm_manager::GetVersionInfoReply* mutable_version_info_reply() override;
+  ::tpm_manager::GetDictionaryAttackInfoReply*
+  mutable_dictionary_attack_info_reply() override;
   int clear_stored_owner_password_count() const override;
   void EmitOwnershipTakenSignal() override;
 
@@ -57,6 +59,7 @@
   ::tpm_manager::GetTpmNonsensitiveStatusReply nonsensitive_status_reply_;
   int nonsensitive_status_dbus_error_count_ = 0;
   ::tpm_manager::GetVersionInfoReply version_info_reply_;
+  ::tpm_manager::GetDictionaryAttackInfoReply dictionary_attack_info_reply_;
   int clear_stored_owner_password_count_ = 0;
 
   // The observer list of ownership taken signal.
diff --git a/chromeos/dbus/tpm_manager/tpm_manager_client.h b/chromeos/dbus/tpm_manager/tpm_manager_client.h
index 516389e..be4e973b 100644
--- a/chromeos/dbus/tpm_manager/tpm_manager_client.h
+++ b/chromeos/dbus/tpm_manager/tpm_manager_client.h
@@ -56,6 +56,10 @@
     // Gets a mutable reply that is returned when `GetVersionInfo()` is called.
     virtual ::tpm_manager::GetVersionInfoReply*
     mutable_version_info_reply() = 0;
+    // Gets a mutable reply that is returned when `GetDictionaryAttackInfo()` is
+    // called.
+    virtual ::tpm_manager::GetDictionaryAttackInfoReply*
+    mutable_dictionary_attack_info_reply() = 0;
     // Gets the count of `ClearStoredOwnerPassword()` being called.
     virtual int clear_stored_owner_password_count() const = 0;
     // Emits ownership taken signal.
diff --git a/chromeos/strings/chromeos_strings_ar.xtb b/chromeos/strings/chromeos_strings_ar.xtb
index 75cdc72..2192597f 100644
--- a/chromeos/strings/chromeos_strings_ar.xtb
+++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732">يدير <ph name="MANAGER" /> هذا المستخدم، ويمكنه إدارة الإعدادات ومراقبة نشاط المستخدم عن بُعد.</translation>
 <translation id="150962533380566081">‏PUK غير صالح.</translation>
 <translation id="1510238584712386396">مشغِّل التطبيقات</translation>
+<translation id="1621067168122174824">تشغيل اختبار فحص البطارية</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" />(<ph name="THREAD_COUNT" /> عملية)</translation>
 <translation id="1641857168437328880">وحدة تغذية المستندات (وجه واحد)</translation>
 <translation id="1644574205037202324">السجل</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">خطاب</translation>
 <translation id="1706391837335750954">توفُّر برنامج تعيين نظام أسماء النطاقات</translation>
 <translation id="1743558184855585519">تُعتبر البطارية مستهلكة عند وصولها إلى الحدّ.</translation>
+<translation id="1792647875738159689">جارٍ إلغاء المسح الضوئي</translation>
 <translation id="1905710495812624430">تم تجاوز الحد الأقصى لعدد المحاولات المسموح بها.</translation>
 <translation id="1930797645656624981">‏خدمة أسلوب الإدخال لنظام التشغيل Chrome</translation>
 <translation id="1947737735496445907">تمت الطباعة</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">إعادة التحميل</translation>
 <translation id="3009958530611748826">اختيار مجلّد لحفظ عمليات المسح الضوئي فيه</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> ميلي أمبير</translation>
+<translation id="3069085583900247081">تعذّر إجراء اختبار</translation>
 <translation id="3083667275341675831">بيانات تشخيص الاتصال</translation>
 <translation id="3091839911843451378">تعذَّرت الطباعة - توقّفت الطابعة</translation>
 <translation id="3102119246920354026">ذاكرة التخزين المؤقت</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">ستتم إزالة طلبات الطباعة التي مرَّ عليها أكثر من يوم.</translation>
 <translation id="3268178239013324452">تعذَّرت الطباعة - باب الطابعة مفتوح</translation>
 <translation id="3310640316857623290">وقت استجابة "نظام أسماء النطاقات" أعلى بكثير من الحدّ الأقصى المسموح به.</translation>
+<translation id="3328783797891415197">الاختبار قيد التشغيل.</translation>
 <translation id="3369013195428705271">هل تريد فعلاً محو سجلّ الطباعة بالكامل؟ لن يتم محو مهام الطباعة الجارية.</translation>
 <translation id="3456078764689556234">عدد الصفحات التي تمت طباعتها: <ph name="PRINTED_PAGES" /> من أصل <ph name="TOTAL_PAGES" />.</translation>
 <translation id="3459509316159669723">الطباعة</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">الطابعة</translation>
 <translation id="4131410914670010031">أبيض وأسود</translation>
 <translation id="4145784616224233563">‏الجدار الناري لبروتوكل HTTP</translation>
+<translation id="4170700058716978431">تعذّر إجراء الاختبار.</translation>
 <translation id="4227825898293920515">تنتهي صلاحية كلمة المرور في <ph name="TIME" /></translation>
 <translation id="4238516577297848345">ما من مهام قيد الطباعة.</translation>
 <translation id="4297501883039923494">توقّفت الطابعة - خطأ غير معروف</translation>
@@ -105,17 +110,20 @@
 <translation id="4773299976671772492">متوقفة</translation>
 <translation id="4808449224298348341">تم إلغاء مهمة الطباعة للمستند <ph name="DOCUMENT_TITLE" />.</translation>
 <translation id="4832079907277790330">اختيار مجلّد في تطبيق "الملفات"...</translation>
+<translation id="4848429997038228357">قيد التشغيل</translation>
 <translation id="4890353053343094602">اختيار كلمة مرور جديدة فورًا</translation>
 <translation id="4917889632206600977">توقّفت الطابعة - نفد الورق</translation>
 <translation id="4921665434385737356">تم شحن <ph name="RATE" /> خلال <ph name="NUM_SECONDS" /> ثانية.</translation>
 <translation id="4932733599132424254">التاريخ</translation>
 <translation id="4985509611418653372">تشغيل</translation>
+<translation id="500920857929044050">إيقاف الاختبار</translation>
 <translation id="5154917547274118687">الذاكرة</translation>
 <translation id="5168185087976003268">حالة البطارية</translation>
 <translation id="520299634122159966">لا تتوفّر أجهزة مسح ضوئي.</translation>
 <translation id="5212543919916444558">يتعذَّر عليَّ العثور على شيء مفيد في هذه الشاشة.
 يُرجى تجربة النقر على الميكروفون لمطالبتي بأي شيء.</translation>
 <translation id="5222676887888702881">تسجيل الخروج</translation>
+<translation id="5264277876637023664">‏تشغيل اختبار وحدة المعالجة المركزية (CPU)</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />، <ph name="PRINTER_NAME" />، <ph name="CREATION_TIME" />، <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">إعادة تشغيل سلاسل الإجراءات</translation>
 <translation id="5317780077021120954">حفظ</translation>
@@ -128,17 +136,22 @@
 <translation id="54609108002486618">تتم إدارته</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">مزيد من المعلومات في مركز المساعدة</translation>
+<translation id="5635169860413004179">عرض التقرير</translation>
 <translation id="5719918614880940190">‏هذا يقيس استخدام وحدة المعالجة المركزية (CPU)، ويقدِّم بيانات مجمّعة عن كل النوى.</translation>
+<translation id="5797428682393400134">نجح الاختبار</translation>
 <translation id="5832805196449965646">إضافة شخص</translation>
 <translation id="5895138241574237353">إعادة التشغيل</translation>
+<translation id="5931523347251946569">لم يتم العثور على الملف.</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />، الإصدار <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">إغلاق</translation>
 <translation id="6048107060512778456">تعذَّرت الطباعة - الورق مكدّس</translation>
 <translation id="6050189528197190982">تدرج الرمادي</translation>
 <translation id="6058625436358447366">يُرجى إدخال كلمتي المرور القديمة والجديدة لإنهاء الإجراء.</translation>
 <translation id="6061772781719867950">‏حدث خطأ في طلبات HTTPS.</translation>
+<translation id="6104112872696127344">تم إلغاء المسح الضوئي.</translation>
 <translation id="6106186594183574873">يُرجى إدخال كلمة المرور القديمة لإنهاء الإجراء.</translation>
 <translation id="6108689792487843350">يتعذّر الوصول إلى البوابة</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" /> غيغاهرتز / <ph name="MAX" /> غيغاهرتز</translation>
 <translation id="6146993107019042706">يُرجى إدخال كلمة مرور جديدة لإنهاء الإجراء.</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">مزيد من المعلومات</translation>
@@ -149,6 +162,7 @@
 <translation id="649050271426829538">توقّفت الطابعة - الورق مكدّس</translation>
 <translation id="6517239166834772319">استكشاف</translation>
 <translation id="6527081081771465939">‏بروتوكول حماية شبكة Wi-Fi غير معروف.</translation>
+<translation id="6532051501443766164">إخفاء التقرير</translation>
 <translation id="65587193855025101">المسطَّح</translation>
 <translation id="6564646048574748301">تعذَّرت الطباعة - لا يمكن الوصول إلى الطابعة</translation>
 <translation id="6618744767048954150">قيد التشغيل</translation>
@@ -156,6 +170,7 @@
 <translation id="6643016212128521049">محو</translation>
 <translation id="6704062477274546131">دقة نظام أسماء النطاقات</translation>
 <translation id="6747215703636344499">توقّفت الطابعة - دُرج الإخراج ممتلئ</translation>
+<translation id="6756731097889387912">تعذّر إلغاء عملية المسح الضوئي.</translation>
 <translation id="6766275201586212568">‏تعذَّر التحويل باستخدام نظام أسماء النطاقات (DNS).</translation>
 <translation id="6768237774506518020">‏إن متوسط تعطُّل التحويل باستخدام نظام أسماء النطاقات (DNS) عالٍ.</translation>
 <translation id="6839141349259399400">هل يتعذَّر الاتصال بالماسحات الضوئية؟</translation>
@@ -171,6 +186,7 @@
 <translation id="7648838807254605802">‏وقت استجابة بروتوكول HTTPS طويل.</translation>
 <translation id="7658239707568436148">إلغاء</translation>
 <translation id="7690294790491645610">تأكيد كلمة المرور الجديدة</translation>
+<translation id="7732651821766520760">اختبار <ph name="TEST_NAME" /></translation>
 <translation id="7805768142964895445">الحالة</translation>
 <translation id="7855434858642800953">تم حفظ الملف الذي تم مسحه ضوئيًا.</translation>
 <translation id="7928373994957558460">عرض مكان الملف</translation>
@@ -198,6 +214,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">التلقائي</translation>
 <translation id="8845001906332463065">الحصول على مساعدة</translation>
+<translation id="8881098542468797602">نجح الاختبار.</translation>
 <translation id="8910721771319628100">وقت استجابة الشبكة التلقائية أعلى من الحدّ الأقصى.</translation>
 <translation id="8919837981463578619">تعذَّرت الطباعة - دُرج الورق غير متوفّر</translation>
 <translation id="8928727111548978589">تعذَّرت الطباعة - نفد الورق</translation>
@@ -207,4 +224,6 @@
 <translation id="910415269708673980">تحديث تذكرة من أجل <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="9106415115617144481">جارٍ المسح ضوئيًا للصفحة رقم <ph name="PAGE_NUMBER" />.</translation>
 <translation id="9111102763498581341">فتح القفل</translation>
+<translation id="9149391708638971077">تشغيل اختبار الذاكرة</translation>
+<translation id="982713511914535780">تشغيل اختبار تفريغ شحن البطارية</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_as.xtb b/chromeos/strings/chromeos_strings_as.xtb
index 1eb11c6..5eabfc1 100644
--- a/chromeos/strings/chromeos_strings_as.xtb
+++ b/chromeos/strings/chromeos_strings_as.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" />এ এই ব্যৱহাৰকাৰীগৰাকীক পৰিচালনা কৰে আৰু হয়তো দূৰৰ পৰা ছেটিং পৰিচালনা কৰে আৰু ব্যৱহাৰকাৰীৰ কাৰ্যকলাপ নিৰীক্ষণ কৰে।</translation>
 <translation id="150962533380566081">অমান্য PUK।</translation>
 <translation id="1510238584712386396">লঞ্চাৰ</translation>
+<translation id="1621067168122174824">চাৰ্জ পৰীক্ষা চলাওক</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> টা থ্ৰেড)</translation>
 <translation id="1641857168437328880">নথি ফীডাৰ (এফাল থকা)</translation>
 <translation id="1644574205037202324">ইতিহাস</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">লেটাৰ</translation>
 <translation id="1706391837335750954">DNS ৰিজলভাৰ প্ৰেজেণ্ট</translation>
 <translation id="1743558184855585519">বেটাৰীটোৱে সীমাটোত উপনীত হোৱাৰ পাছত ইয়াক খৰচ হোৱা বুলি ধৰা হয়</translation>
+<translation id="1792647875738159689">স্কেন বাতিল কৰি থকা হৈছে</translation>
 <translation id="1905710495812624430">চেষ্টা কৰাৰ সৰ্বাধিক সীমা অতিক্ৰম কৰিছে।</translation>
 <translation id="1930797645656624981">Chrome OS ইনপুট পদ্ধতি সেৱা</translation>
 <translation id="1947737735496445907">প্ৰিণ্ট কৰা হ’ল</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">ৰিফ্ৰেশ্ব কৰক</translation>
 <translation id="3009958530611748826">ছেভ কৰিবলৈ এটা ফ’ল্ডাৰ বাছনি কৰক</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />এমএ</translation>
+<translation id="3069085583900247081">পৰীক্ষা বিফল হৈছে</translation>
 <translation id="3083667275341675831">সংযোগ সম্পৰ্কীয় ডায়গন’ষ্টিক্স</translation>
 <translation id="3091839911843451378">বিফল হৈছে - বন্ধ হৈছে</translation>
 <translation id="3122464029669770682">CPU</translation>
@@ -61,6 +64,7 @@
 <translation id="3246869037381808805">১ দিনতকৈ পুৰণি প্ৰিণ্ট কাৰ্যসমূহ আঁতৰোৱা হ’ব</translation>
 <translation id="3268178239013324452">বিফল হৈছে - দুৱাৰ খোল খাই আছে</translation>
 <translation id="3310640316857623290">DNSৰ বিলম্বতা যথেষ্ট পৰিমাণে অনুমতি দিয়া সীমাতকৈ ওপৰত আছে</translation>
+<translation id="3328783797891415197">পৰীক্ষা চলি আছে</translation>
 <translation id="3369013195428705271">আপুনি সকলো প্ৰিণ্টৰ ইতিহাস নিশ্চিতভাৱে মচিব বিচাৰেনে? আপোনাৰ চলি থকা প্ৰিণ্টৰ কামসমূহ মচা নহয়।</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> খনৰ ভিতৰত <ph name="PRINTED_PAGES" /> নম্বৰৰ পৃষ্ঠাখন প্ৰিণ্ট কৰা হৈছে।</translation>
 <translation id="3459509316159669723">প্ৰিণ্টিং</translation>
@@ -80,6 +84,7 @@
 <translation id="4034824040120875894">প্ৰিণ্টাৰ</translation>
 <translation id="4131410914670010031">ক’লা আৰু বগা</translation>
 <translation id="4145784616224233563">HTTPৰ ফায়াৰৱাল</translation>
+<translation id="4170700058716978431">বিফল হৈছে</translation>
 <translation id="4227825898293920515">পাছৱর্ডৰ ম্যাদ উকলাৰ সময় <ph name="TIME" /></translation>
 <translation id="4238516577297848345">কোনো প্ৰিণ্টৰ কাম চলি থকা নাই</translation>
 <translation id="4297501883039923494">বন্ধ হৈছে - অজ্ঞাত আসোঁৱাহ</translation>
@@ -104,16 +109,19 @@
 <translation id="4773299976671772492">বন্ধ হৈছে</translation>
 <translation id="4808449224298348341">বাতিল কৰা প্ৰিণ্টিঙৰ কাৰ্য <ph name="DOCUMENT_TITLE" /></translation>
 <translation id="4832079907277790330">Files এপ্‌টোত ফ’ল্ডাৰ বাছনি কৰক...</translation>
+<translation id="4848429997038228357">চলি আছে</translation>
 <translation id="4890353053343094602">তৎক্ষণাত নতুন এটা বাছনি কৰক</translation>
 <translation id="4917889632206600977">বন্ধ হৈছে - কাগজ শেষ হৈছে</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> ছেকেণ্ডত <ph name="RATE" /> চাৰ্জ হৈছে।</translation>
 <translation id="4932733599132424254">তাৰিখ</translation>
 <translation id="4985509611418653372">চলাওক</translation>
+<translation id="500920857929044050">পৰীক্ষা কৰা বন্ধ কৰক</translation>
 <translation id="5168185087976003268">বেটাৰীৰ অৱস্থা</translation>
 <translation id="520299634122159966">কোনো স্কেনাৰ নাই</translation>
 <translation id="5212543919916444558">আপোনাক সহায় কৰিব পৰাকৈ মই আপোনাৰ স্ক্ৰীণত একো বিচাৰি পোৱা নাই।
 মোক কিবা সুধিবলৈ মাইকটো টিপক।</translation>
 <translation id="5222676887888702881">ছাইন আউট কৰক</translation>
+<translation id="5264277876637023664">চিপিইউ পৰীক্ষা চলাওক</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">ৰুটিন পুনৰ চলাওক</translation>
 <translation id="5317780077021120954">ছেভ কৰক</translation>
@@ -126,17 +134,22 @@
 <translation id="54609108002486618">পৰিচালিত</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">সহায় কেন্দ্ৰত অধিক জানক</translation>
+<translation id="5635169860413004179">ৰিপ’ৰ্ট চাওক</translation>
 <translation id="5719918614880940190">এইটোৱে চিপিইউৰ ব্যৱহাৰ জোখে আৰু ই সকলো মুখ্য বস্তুৰ একত্ৰীকৰণ</translation>
+<translation id="5797428682393400134">সফল</translation>
 <translation id="5832805196449965646">অন্য লোক যোগ কৰক</translation>
 <translation id="5895138241574237353">ৰিষ্টাৰ্ট কৰক</translation>
+<translation id="5931523347251946569">ফাইলটো পোৱা নগ’ল</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, সংস্কৰণ <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">বন্ধ কৰক</translation>
 <translation id="6048107060512778456">বিফল হৈছে - কাগজ ঠাহ খাই গৈছে</translation>
 <translation id="6050189528197190982">গ্ৰে’স্কে’ল</translation>
 <translation id="6058625436358447366">সম্পূর্ণ কৰিবলৈ আপোনাৰ পুৰণি আৰু নতুন পাছৱর্ডসমূহ দিয়ক</translation>
 <translation id="6061772781719867950">HTTPৰ অনুৰোধ বিফল হৈছে</translation>
+<translation id="6104112872696127344">স্কেনিং বাতিল কৰা হৈছে</translation>
 <translation id="6106186594183574873">সম্পূর্ণ কৰিবলৈ আপোনাৰ পুৰণি পাছৱর্ড দিয়ক</translation>
 <translation id="6108689792487843350">গেইটৱে'টো পাব পৰা অৱস্থাত নাই</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" /> গিগাহাৰ্টজ / <ph name="MAX" /> গিগাহাৰ্টজ</translation>
 <translation id="6146993107019042706">সম্পূর্ণ কৰিবলৈ আপোনাৰ নতুন পাছৱর্ড দিয়ক</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">অধিক জানক</translation>
@@ -147,6 +160,7 @@
 <translation id="649050271426829538">বন্ধ হৈছে - কাগজ ঠাহ খাই গৈছে</translation>
 <translation id="6517239166834772319">অন্বেষণ</translation>
 <translation id="6527081081771465939">ৱাই-ফাইৰ অজ্ঞাত সুৰক্ষাৰ প্ৰ'টকল</translation>
+<translation id="6532051501443766164">ৰিপ’ৰ্ট লুকুৱাওক</translation>
 <translation id="65587193855025101">ফ্লে'টবেড</translation>
 <translation id="6564646048574748301">বিফল হৈছে - প্ৰিণ্টাৰৰ সৈতে সংযোগ কৰিব পৰা নাই</translation>
 <translation id="6618744767048954150">চলি আছে</translation>
@@ -154,6 +168,7 @@
 <translation id="6643016212128521049">মচক</translation>
 <translation id="6704062477274546131">DNS ৰিজ’লিউশ্বন</translation>
 <translation id="6747215703636344499">বন্ধ হৈছে - আউটপুট ভৰ্তি হৈ গৈছে</translation>
+<translation id="6756731097889387912">স্কেনিং বাতিল কৰিব পৰা নগ’ল</translation>
 <translation id="6766275201586212568">DNSৰ সমাধান বিফল হৈছে</translation>
 <translation id="6768237774506518020">DNSৰ সমাধান বিফল হোৱাৰ হাৰ উচ্চ</translation>
 <translation id="6839141349259399400">স্কেনাৰৰ সৈতে সংযোগ কৰিব পৰা নাই নেকি?</translation>
@@ -169,6 +184,7 @@
 <translation id="7648838807254605802">HTTPSৰ বেছি বিলম্বতা</translation>
 <translation id="7658239707568436148">বাতিল কৰক</translation>
 <translation id="7690294790491645610">নতুন পাছৱর্ড নিশ্চিত কৰক</translation>
+<translation id="7732651821766520760"><ph name="TEST_NAME" /> পৰীক্ষা</translation>
 <translation id="7805768142964895445">স্থিতি</translation>
 <translation id="7855434858642800953">স্কেন কৰা ফাইল ছেভ কৰা হ'ল!</translation>
 <translation id="7928373994957558460">ফাইলৰ অৱস্থান দেখুৱাওক</translation>
@@ -196,12 +212,16 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">ডিফ’ল্ট</translation>
 <translation id="8845001906332463065">সহায় পাওক</translation>
+<translation id="8881098542468797602">পৰীক্ষা সফল হৈছে</translation>
 <translation id="8910721771319628100">ডিফ’ল্ট নেটৱৰ্ক বিলম্বতাৰ সীমাৰ ওপৰত আছে</translation>
 <translation id="8919837981463578619">বিফল হৈছে - ট্ৰে’ উপলব্ধ নহয়</translation>
 <translation id="8928727111548978589">বিফল হৈছে - কাগজ শেষ হৈছে</translation>
 <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> <ph name="ATTEMPTS_LEFT" /> টা প্ৰয়াস বাকী আছে</translation>
+<translation id="8970109610781093811">পুনৰ চলাওক</translation>
 <translation id="9088306295921699330">এতিয়ালৈকে কৰা ব্যৱহাৰৰ পৰিমাণ</translation>
 <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" />ৰ টিকেট ৰিফ্ৰেশ্ব কৰক</translation>
 <translation id="9106415115617144481"><ph name="PAGE_NUMBER" /> নম্বৰ পৃষ্ঠাখন স্কেন কৰি থকা হৈছে</translation>
 <translation id="9111102763498581341">আনলক</translation>
+<translation id="9149391708638971077">মেম’ৰি পৰীক্ষা চলাওক</translation>
+<translation id="982713511914535780">ডিচাৰ্জ পৰীক্ষা চলাওক</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_be.xtb b/chromeos/strings/chromeos_strings_be.xtb
index 2aa5e5c4..7ac26a3 100644
--- a/chromeos/strings/chromeos_strings_be.xtb
+++ b/chromeos/strings/chromeos_strings_be.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" /> можа кіраваць наладамі гэтага карыстальніка і адсочваць яго дзеянні.</translation>
 <translation id="150962533380566081">Няправільны PUK-код.</translation>
 <translation id="1510238584712386396">Панэль запуску</translation>
+<translation id="1621067168122174824">Выканаць праверку зарадкі</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (ланцужкоў: <ph name="THREAD_COUNT" />)</translation>
 <translation id="1641857168437328880">Прылада для падачы дакументаў (адным бокам)</translation>
 <translation id="1644574205037202324">Гісторыя</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706391837335750954">Наяўнасць DNS-рэзолвера</translation>
 <translation id="1743558184855585519">Калі ліміт на колькасць перазарадак дасягнуты, акумулятар лічыцца зрасходаваным</translation>
+<translation id="1792647875738159689">Сканіраванне скасоўваецца</translation>
 <translation id="1905710495812624430">Перавышана максімальная колькасць спроб.</translation>
 <translation id="1930797645656624981">Сэрвіс метадаў уводу Chrome OS</translation>
 <translation id="1947737735496445907">Надрукавана</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">АБНАВІЦЬ</translation>
 <translation id="3009958530611748826">Выберыце папку для захавання</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> мА</translation>
+<translation id="3069085583900247081">Праверка не пройдзена</translation>
 <translation id="3083667275341675831">Дыягностыка падключэння</translation>
 <translation id="3091839911843451378">Збой: работа спынена</translation>
 <translation id="3122464029669770682">Працэсар</translation>
@@ -61,6 +64,7 @@
 <translation id="3246869037381808805">Заданні друку, старэйшыя за 1 дзень, будуць выдалены</translation>
 <translation id="3268178239013324452">Збой: дзверцы прынтара адкрыты</translation>
 <translation id="3310640316857623290">Затрымка DNS значна перавышае дапушчальнае парогавае значэнне</translation>
+<translation id="3328783797891415197">Выконваецца праверка</translation>
 <translation id="3369013195428705271">Сапраўды выдаліць гісторыю друку? Бягучыя заданні друку выдалены не будуць.</translation>
 <translation id="3456078764689556234">Надрукавана старонка <ph name="PRINTED_PAGES" /> з <ph name="TOTAL_PAGES" />.</translation>
 <translation id="3459509316159669723">Друк</translation>
@@ -80,6 +84,7 @@
 <translation id="4034824040120875894">Прынтар</translation>
 <translation id="4131410914670010031">Чорна-белы друк</translation>
 <translation id="4145784616224233563">Брандмаўар HTTP</translation>
+<translation id="4170700058716978431">НЕ ПРОЙДЗЕНА</translation>
 <translation id="4227825898293920515">Тэрмін дзеяння пароля заканчваецца праз <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Няма дзеючых заданняў друку</translation>
 <translation id="4297501883039923494">Спынена: невядомая памылка</translation>
@@ -104,16 +109,19 @@
 <translation id="4773299976671772492">Спынена</translation>
 <translation id="4808449224298348341">Заданне друку "<ph name="DOCUMENT_TITLE" />" скасавана</translation>
 <translation id="4832079907277790330">Выбраць папку ў праграме "Файлы"...</translation>
+<translation id="4848429997038228357">ВЫКОНВАЕЦЦА</translation>
 <translation id="4890353053343094602">Неадкладна задайце новы</translation>
 <translation id="4917889632206600977">Спынена: скончылася папера</translation>
 <translation id="4921665434385737356">Зараджана: <ph name="RATE" /> за <ph name="NUM_SECONDS" /> с.</translation>
 <translation id="4932733599132424254">Дата</translation>
 <translation id="4985509611418653372">Запусціць</translation>
+<translation id="500920857929044050">Спыніць праверку</translation>
 <translation id="5168185087976003268">Стан акумулятара</translation>
 <translation id="520299634122159966">Няма даступных сканераў</translation>
 <translation id="5212543919916444558">Я не магу знайсці на экране нічога, з чым я мог бы вам дапамагчы.
 Каб спытаць мяне аб чым-небудзь, паспрабуйце дакрануцца да мікрафона.</translation>
 <translation id="5222676887888702881">Выйсці</translation>
+<translation id="5264277876637023664">Выканаць праверку ЦП</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">Перазапусціць паслядоўнасці дзеянняў</translation>
 <translation id="5317780077021120954">Захаваць</translation>
@@ -126,17 +134,22 @@
 <translation id="54609108002486618">Пад кіраваннем</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">Даведацца больш у Даведачным цэнтры</translation>
+<translation id="5635169860413004179">Паглядзець справаздачу</translation>
 <translation id="5719918614880940190">Замервае выкарыстанне працэсара (даныя даюцца па ўсіх ядрах разам)</translation>
+<translation id="5797428682393400134">ПРОЙДЗЕНА</translation>
 <translation id="5832805196449965646">Дадаць карыстальніка</translation>
 <translation id="5895138241574237353">Перазапусціць</translation>
+<translation id="5931523347251946569">Файл не знойдзены</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, версія <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">Закрыць</translation>
 <translation id="6048107060512778456">Збой: захрасла папера</translation>
 <translation id="6050189528197190982">Адценні шэрага</translation>
 <translation id="6058625436358447366">Каб закончыць, увядзіце стары і новы паролі</translation>
 <translation id="6061772781719867950">Збой HTTP-запытаў</translation>
+<translation id="6104112872696127344">Сканіраванне скасавана</translation>
 <translation id="6106186594183574873">Каб закончыць, увядзіце стары пароль</translation>
 <translation id="6108689792487843350">Шлюз недаступны</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" /> ГГц / <ph name="MAX" /> ГГц</translation>
 <translation id="6146993107019042706">Каб закончыць, увядзіце новы пароль</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">Даведацца больш</translation>
@@ -147,6 +160,7 @@
 <translation id="649050271426829538">Спынена: захрасла папера</translation>
 <translation id="6517239166834772319">Агляд</translation>
 <translation id="6527081081771465939">Невядомы пратакол сістэмы бяспекі Wi-Fi</translation>
+<translation id="6532051501443766164">Схаваць справаздачу</translation>
 <translation id="65587193855025101">Планшэтны сканер</translation>
 <translation id="6564646048574748301">Збой: прынтар недаступны</translation>
 <translation id="6618744767048954150">Выконваецца</translation>
@@ -154,6 +168,7 @@
 <translation id="6643016212128521049">Ачысціць</translation>
 <translation id="6704062477274546131">Супастаўленне імён DNS</translation>
 <translation id="6747215703636344499">Спынена: выхадны латок запоўнены</translation>
+<translation id="6756731097889387912">Не ўдалося скасаваць сканіраванне</translation>
 <translation id="6766275201586212568">Збой супастаўленняў імён DNS</translation>
 <translation id="6768237774506518020">Высокі працэнт збояў супастаўленняў імён DNS</translation>
 <translation id="6839141349259399400">Не ўдаецца падключыцца да сканераў?</translation>
@@ -169,6 +184,7 @@
 <translation id="7648838807254605802">Вялікая затрымка HTTPS</translation>
 <translation id="7658239707568436148">Скасаваць</translation>
 <translation id="7690294790491645610">Пацвердзіце новы пароль</translation>
+<translation id="7732651821766520760"><ph name="TEST_NAME" /> (праверка)</translation>
 <translation id="7805768142964895445">Стан</translation>
 <translation id="7855434858642800953">Файл адсканіраванага відарыса захаваны!</translation>
 <translation id="7928373994957558460">Паказаць месцазнаходжанне файла</translation>
@@ -196,12 +212,16 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">Стандартна</translation>
 <translation id="8845001906332463065">Атрымаць даведку</translation>
+<translation id="8881098542468797602">Праверка пройдзена</translation>
 <translation id="8910721771319628100">Затрымка ў стандартнай сетцы перавышае парогавае значэнне</translation>
 <translation id="8919837981463578619">Збой: няма латка</translation>
 <translation id="8928727111548978589">Збой: скончылася папера</translation>
 <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> Засталося спроб: <ph name="ATTEMPTS_LEFT" /></translation>
+<translation id="8970109610781093811">Выканаць яшчэ раз</translation>
 <translation id="9088306295921699330">Бягучае выкарыстанне</translation>
 <translation id="910415269708673980">Абнавіце білет для <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="9106415115617144481">Сканіруецца старонка <ph name="PAGE_NUMBER" /></translation>
 <translation id="9111102763498581341">Разблакіраваць</translation>
+<translation id="9149391708638971077">Выканаць праверку памяці</translation>
+<translation id="982713511914535780">Выканаць праверку разрадкі</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_cs.xtb b/chromeos/strings/chromeos_strings_cs.xtb
index 593b473..9d5f646 100644
--- a/chromeos/strings/chromeos_strings_cs.xtb
+++ b/chromeos/strings/chromeos_strings_cs.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732">Tohoto uživatele spravuje doména <ph name="MANAGER" />, která také může vzdáleně spravovat nastavení a sledovat jeho aktivitu.</translation>
 <translation id="150962533380566081">Neplatný kód PUK.</translation>
 <translation id="1510238584712386396">Spouštěč</translation>
+<translation id="1621067168122174824">Spustit test nabití</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (počet vláken: <ph name="THREAD_COUNT" />)</translation>
 <translation id="1641857168437328880">Podavač dokumentů (jednostranných)</translation>
 <translation id="1644574205037202324">Historie</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706391837335750954">Přítomnost resolveru DNS</translation>
 <translation id="1743558184855585519">Až baterie dosáhne tohoto limitu, bude považována za vybitou</translation>
+<translation id="1792647875738159689">Rušení skenování</translation>
 <translation id="1905710495812624430">Byl překročen maximální povolený počet pokusů.</translation>
 <translation id="1930797645656624981">Služba metod zadávání systému Chrome OS</translation>
 <translation id="1947737735496445907">Vytištěno</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">OBNOVIT</translation>
 <translation id="3009958530611748826">Vyberte cílovou složku</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation>
+<translation id="3069085583900247081">Test se nezdařil</translation>
 <translation id="3083667275341675831">Diagnostika připojení</translation>
 <translation id="3091839911843451378">Tisk selhal – zastaveno</translation>
 <translation id="3102119246920354026">Mezipaměť</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">Tiskové úlohy starší než 1 den budou odstraněny</translation>
 <translation id="3268178239013324452">Tisk selhal – jsou otevřená dvířka</translation>
 <translation id="3310640316857623290">DNS má latenci výrazně nad prahovou hodnotou</translation>
+<translation id="3328783797891415197">Běží test</translation>
 <translation id="3369013195428705271">Opravdu chcete vymazat celou historii tisku? Probíhající tiskové úlohy vymazány nebudou.</translation>
 <translation id="3456078764689556234">Vytisknuta stránka <ph name="PRINTED_PAGES" /> z <ph name="TOTAL_PAGES" />.</translation>
 <translation id="3459509316159669723">Tisk</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">Tiskárna</translation>
 <translation id="4131410914670010031">Černobíle</translation>
 <translation id="4145784616224233563">Firewall HTTP</translation>
+<translation id="4170700058716978431">NEZDAŘILO SE</translation>
 <translation id="4227825898293920515">Platnost hesla vyprší za <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Nemáte žádné probíhající tiskové úlohy</translation>
 <translation id="4297501883039923494">Zastaveno – neznámá chyba</translation>
@@ -105,17 +110,20 @@
 <translation id="4773299976671772492">Zastaveno</translation>
 <translation id="4808449224298348341">Byla zrušena tisková úloha <ph name="DOCUMENT_TITLE" /></translation>
 <translation id="4832079907277790330">Vyberte složku v aplikaci Soubory…</translation>
+<translation id="4848429997038228357">PROBÍHÁ</translation>
 <translation id="4890353053343094602">Ihned si zvolte nové</translation>
 <translation id="4917889632206600977">Zastaveno – došel papír</translation>
 <translation id="4921665434385737356">Nabito na <ph name="RATE" /> za <ph name="NUM_SECONDS" /> s.</translation>
 <translation id="4932733599132424254">Datum</translation>
 <translation id="4985509611418653372">Spustit</translation>
+<translation id="500920857929044050">Zastavit test</translation>
 <translation id="5154917547274118687">Paměť</translation>
 <translation id="5168185087976003268">Opotřebení baterie</translation>
 <translation id="520299634122159966">Nejsou k dispozici žádné skenery</translation>
 <translation id="5212543919916444558">Na obrazovce nevidím nic, s čím vám můžu pomoct.
 Zkuste klepnout na mikrofon a zeptat se.</translation>
 <translation id="5222676887888702881">Odhlásit se</translation>
+<translation id="5264277876637023664">Spustit test procesoru</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">Znovu spustit sledy činností</translation>
 <translation id="5317780077021120954">Uložit</translation>
@@ -128,17 +136,22 @@
 <translation id="54609108002486618">Spravovaný</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">Další informace v centru nápovědy</translation>
+<translation id="5635169860413004179">Zobrazit přehled</translation>
 <translation id="5719918614880940190">Tento údaj měří využití procesoru a jedná se o agregaci všech jader</translation>
+<translation id="5797428682393400134">ÚSPĚCH</translation>
 <translation id="5832805196449965646">Přidat uživatele</translation>
 <translation id="5895138241574237353">Restartovat</translation>
+<translation id="5931523347251946569">Soubor nebyl nalezen</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, verze <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">Zavřít</translation>
 <translation id="6048107060512778456">Tisk selhal – zasekl se papír</translation>
 <translation id="6050189528197190982">Stupně šedé</translation>
 <translation id="6058625436358447366">Chcete-li akci dokončit, zadejte své staré a nové heslo</translation>
 <translation id="6061772781719867950">Neúspěšné požadavky HTTP</translation>
+<translation id="6104112872696127344">Skenování bylo zrušeno</translation>
 <translation id="6106186594183574873">Chcete-li akci dokončit, zadejte své staré heslo</translation>
 <translation id="6108689792487843350">Brána není dostupná</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" /> GHz / <ph name="MAX" /> GHz</translation>
 <translation id="6146993107019042706">Chcete-li akci dokončit, zadejte své nové heslo</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">Další informace</translation>
@@ -149,6 +162,7 @@
 <translation id="649050271426829538">Zastaveno – zasekl se papír</translation>
 <translation id="6517239166834772319">Explore</translation>
 <translation id="6527081081771465939">Neznámý bezpečnostní protokol Wi-Fi</translation>
+<translation id="6532051501443766164">Skrýt přehled</translation>
 <translation id="65587193855025101">Předlohové sklo</translation>
 <translation id="6564646048574748301">Tisk selhal – tiskárna není dostupná</translation>
 <translation id="6618744767048954150">Probíhá</translation>
@@ -156,6 +170,7 @@
 <translation id="6643016212128521049">Vymazat</translation>
 <translation id="6704062477274546131">Překlad DNS</translation>
 <translation id="6747215703636344499">Zastaveno – výstupní zásobník je plný</translation>
+<translation id="6756731097889387912">Skenování se nepodařilo zrušit</translation>
 <translation id="6766275201586212568">Neúspěšné překlady DNS</translation>
 <translation id="6768237774506518020">Vysoká míra selhání překladu DNS</translation>
 <translation id="6839141349259399400">Nemůžete se připojit ke skenerům?</translation>
@@ -171,6 +186,7 @@
 <translation id="7648838807254605802">Vysoká latence HTTPS</translation>
 <translation id="7658239707568436148">Zrušit</translation>
 <translation id="7690294790491645610">Potvrďte nové heslo</translation>
+<translation id="7732651821766520760">Test <ph name="TEST_NAME" /></translation>
 <translation id="7805768142964895445">Stav</translation>
 <translation id="7855434858642800953">Naskenovaný soubor byl uložen</translation>
 <translation id="7928373994957558460">Zobrazit umístění souboru</translation>
@@ -198,6 +214,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">Výchozí</translation>
 <translation id="8845001906332463065">Nápověda</translation>
+<translation id="8881098542468797602">Test byl úspěšný</translation>
 <translation id="8910721771319628100">Výchozí síť má latenci nad prahovou hodnotou</translation>
 <translation id="8919837981463578619">Tisk selhal – chybí zásobník</translation>
 <translation id="8928727111548978589">Tisk selhal – došel papír</translation>
@@ -207,4 +224,6 @@
 <translation id="910415269708673980">Obnovte lístek pro <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="9106415115617144481">Skenování stránky <ph name="PAGE_NUMBER" /></translation>
 <translation id="9111102763498581341">Odemknout</translation>
+<translation id="9149391708638971077">Spustit test paměti</translation>
+<translation id="982713511914535780">Spustit test vybíjení</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb
index 9bbe855..a82251eb3 100644
--- a/chromeos/strings/chromeos_strings_en-GB.xtb
+++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -36,6 +36,7 @@
 <translation id="1947737735496445907">Printed</translation>
 <translation id="1979103255016296513">Password change overdue</translation>
 <translation id="1980044825731880088">CPU speed</translation>
+<translation id="2008685064673031089">Prime search</translation>
 <translation id="2080070583977670716">More settings</translation>
 <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation>
 <translation id="2161394479394250669">Cancel print job</translation>
@@ -44,6 +45,7 @@
 <translation id="2364498172489649528">Passed</translation>
 <translation id="2375079107209812402"><ph name="ATTEMPTS_LEFT" /> attempts left</translation>
 <translation id="2391082728065870591">Send feedback report</translation>
+<translation id="2446553403094072641">Floating point accuracy</translation>
 <translation id="2461822463642141190">Current</translation>
 <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation>
 <translation id="2517472476991765520">Scan</translation>
@@ -52,6 +54,7 @@
 <translation id="2740531572673183784">OK</translation>
 <translation id="2805756323405976993">Apps</translation>
 <translation id="2872961005593481000">Shut down</translation>
+<translation id="2878387241690264070">Discharged <ph name="RATE" /> in <ph name="NUM_SECONDS" /> seconds.</translation>
 <translation id="3008341117444806826">REFRESH</translation>
 <translation id="3009958530611748826">Select a folder to save to</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation>
@@ -112,9 +115,11 @@
 <translation id="4832079907277790330">Select folder in the Files app…</translation>
 <translation id="4848429997038228357">RUNNING</translation>
 <translation id="4890353053343094602">Choose a new one immediately</translation>
+<translation id="4891842000192098784">Stress</translation>
 <translation id="4917889632206600977">Stopped – out of paper</translation>
 <translation id="4921665434385737356">Charged <ph name="RATE" /> in <ph name="NUM_SECONDS" /> seconds.</translation>
 <translation id="4932733599132424254">Date</translation>
+<translation id="498186245079027698">Check the scanner and try again. Make sure that there is enough local space to save scanned files.</translation>
 <translation id="4985509611418653372">Run</translation>
 <translation id="500920857929044050">Stop test</translation>
 <translation id="5154917547274118687">Memory</translation>
@@ -138,6 +143,7 @@
 <translation id="5551702563755460533">Find out more in the Help Centre</translation>
 <translation id="5635169860413004179">See report</translation>
 <translation id="5719918614880940190">This measures the CPU usage, and is an aggregation of all cores</translation>
+<translation id="5781694279199921985">Save session log</translation>
 <translation id="5797428682393400134">SUCCESS</translation>
 <translation id="5832805196449965646">Add Person</translation>
 <translation id="5895138241574237353">Restart</translation>
@@ -174,6 +180,8 @@
 <translation id="6766275201586212568">Failed DNS resolutions</translation>
 <translation id="6768237774506518020">High DNS resolution failure rate</translation>
 <translation id="6839141349259399400">Can't connect to scanners?</translation>
+<translation id="6853312040151791195">Discharging rate</translation>
+<translation id="6898743098396957679">Couldn't complete scanning</translation>
 <translation id="7028979494427204405"><ph name="MANAGER" /> manages this device and has access to all user activity, including web pages visited, passwords and email.</translation>
 <translation id="714876143603641390">LAN connectivity</translation>
 <translation id="7162487448488904999">Gallery</translation>
@@ -186,12 +194,15 @@
 <translation id="7648838807254605802">High HTTPS latency</translation>
 <translation id="7658239707568436148">Cancel</translation>
 <translation id="7690294790491645610">Confirm new password</translation>
+<translation id="773153675489693198">Cycle count</translation>
 <translation id="7732651821766520760"><ph name="TEST_NAME" /> test</translation>
 <translation id="7805768142964895445">Status</translation>
 <translation id="7855434858642800953">Scanned file saved!</translation>
 <translation id="7928373994957558460">Show file location</translation>
 <translation id="7936303884198020182">No name servers found</translation>
+<translation id="7960831585769876809">Temperature</translation>
 <translation id="8041089156583427627">Send Feedback</translation>
+<translation id="8075838845814659848">Remaining charge</translation>
 <translation id="808894953321890993">Change password</translation>
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation>
 <translation id="8160445423316272678">Place your document on the scanner and select <ph name="SPAN_BEGIN" />Scan<ph name="SPAN_END" /> to get started</translation>
@@ -219,6 +230,7 @@
 <translation id="8919837981463578619">Failed – Tray missing</translation>
 <translation id="8928727111548978589">Failed – Out of paper</translation>
 <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> <ph name="ATTEMPTS_LEFT" /> attempts left</translation>
+<translation id="8968751544471797276">Charging rate</translation>
 <translation id="8970109610781093811">Run again</translation>
 <translation id="9088306295921699330">Current usage</translation>
 <translation id="910415269708673980">Refresh ticket for <ph name="PRINCIPAL_NAME" /></translation>
diff --git a/chromeos/strings/chromeos_strings_hy.xtb b/chromeos/strings/chromeos_strings_hy.xtb
index 75ab7ba..f6d4096b 100644
--- a/chromeos/strings/chromeos_strings_hy.xtb
+++ b/chromeos/strings/chromeos_strings_hy.xtb
@@ -36,6 +36,7 @@
 <translation id="1947737735496445907">Տպված է</translation>
 <translation id="1979103255016296513">Գաղտնաբառի փոփոխման ժամկետն անցել է</translation>
 <translation id="1980044825731880088">CPU-ի արագությունը</translation>
+<translation id="2008685064673031089">Prime որոնում</translation>
 <translation id="2080070583977670716">Այլ կարգավորումներ</translation>
 <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation>
 <translation id="2161394479394250669">Չեղարկել տպման առաջադրանքը</translation>
@@ -44,6 +45,7 @@
 <translation id="2364498172489649528">Անցել է ստուգում</translation>
 <translation id="2375079107209812402">Մնաց <ph name="ATTEMPTS_LEFT" /> փորձ</translation>
 <translation id="2391082728065870591">Ուղարկել կարծիքների վերաբերյալ հաշվետվություն</translation>
+<translation id="2446553403094072641">Լողացող կետի ճշգրտությունը</translation>
 <translation id="2461822463642141190">Ընթացիկ</translation>
 <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation>
 <translation id="2517472476991765520">Որոնել</translation>
@@ -52,6 +54,7 @@
 <translation id="2740531572673183784">Եղավ</translation>
 <translation id="2805756323405976993">Հավելվածներ</translation>
 <translation id="2872961005593481000">Անջատել</translation>
+<translation id="2878387241690264070">Լիցքաթափվել է <ph name="RATE" /> <ph name="NUM_SECONDS" /> վայրկյանում։</translation>
 <translation id="3008341117444806826">ԹԱՐՄԱՑՆԵԼ</translation>
 <translation id="3009958530611748826">Ընտրեք պանակ, որում պետք է պահել</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> մԱ</translation>
@@ -112,9 +115,11 @@
 <translation id="4832079907277790330">Ընտրել պանակ «Ֆայլեր» հավելվածում…</translation>
 <translation id="4848429997038228357">ՓՈՐՁԱՐԿՎՈՒՄ Է</translation>
 <translation id="4890353053343094602">Հնարավորինս արագ փոխեք գաղտնաբառը</translation>
+<translation id="4891842000192098784">Ծանրաբեռնվածություն</translation>
 <translation id="4917889632206600977">Դադարեցվել է – Թուղթ չկա</translation>
 <translation id="4921665434385737356">Լիցքավորվել է <ph name="RATE" />-ով՝ <ph name="NUM_SECONDS" /> վայրկյանում։</translation>
 <translation id="4932733599132424254">Ամսաթիվ</translation>
+<translation id="498186245079027698">Ստուգեք սկաները և նորից փորձեք։ Համոզվեք, որ սկանավորված ֆայլերը պահելու համար բավարար տարածք կա։</translation>
 <translation id="4985509611418653372">Գործարկել</translation>
 <translation id="500920857929044050">Դադարեցնել փորձարկումը</translation>
 <translation id="5154917547274118687">Հիշողություն</translation>
@@ -138,6 +143,7 @@
 <translation id="5551702563755460533">Իմանալ ավելին Օգնության կենտրոնում</translation>
 <translation id="5635169860413004179">Դիտել հաշվետվությունը</translation>
 <translation id="5719918614880940190">Սա չափում է CPU-ի օգտագործումը և միավորում բոլոր ցուցանիշները</translation>
+<translation id="5781694279199921985">Պահել աշխատաշրջանի տվյալները</translation>
 <translation id="5797428682393400134">ՀԱՋՈՂՎԵՑ</translation>
 <translation id="5832805196449965646">Ավելացնել անձ</translation>
 <translation id="5895138241574237353">Վերագործարկել</translation>
@@ -174,6 +180,8 @@
 <translation id="6766275201586212568">DNS-ի անհաջող լուծումներ</translation>
 <translation id="6768237774506518020">DNS-ի լուծման խափանումների բարձր մակարդակ</translation>
 <translation id="6839141349259399400">Չի՞ հաջողվում միանալ սկաներներին։</translation>
+<translation id="6853312040151791195">Լիցքաթափման արագությունը</translation>
+<translation id="6898743098396957679">Չհաջողվեց ավարտել սկանավորումը</translation>
 <translation id="7028979494427204405">Այս սարքը կառավարվում է <ph name="MANAGER" />-ի կողմից, և վերջինիս տեսանելի են օգտատիրոջ բոլոր գործողությունները, այդ թվում՝ այցելած կայքերը, գաղտնաբառերը և նամակները:</translation>
 <translation id="714876143603641390">LAN-ի կապ</translation>
 <translation id="7162487448488904999">Ցուցասրահ</translation>
@@ -186,12 +194,15 @@
 <translation id="7648838807254605802">HTTPS-ի բարձր հապաղում</translation>
 <translation id="7658239707568436148">Չեղարկել</translation>
 <translation id="7690294790491645610">Հաստատեք նոր գաղտնաբառը</translation>
+<translation id="773153675489693198">Շրջափուլերի թիվը</translation>
 <translation id="7732651821766520760"><ph name="TEST_NAME" /> փորձարկում</translation>
 <translation id="7805768142964895445">Կարգավիճակ</translation>
 <translation id="7855434858642800953">Սկանավորված ֆայլը պահված է</translation>
 <translation id="7928373994957558460">Ցուցադրել ֆայլի հասցեն</translation>
 <translation id="7936303884198020182">DNS սերվերներ չեն գտնվել</translation>
+<translation id="7960831585769876809">Ջերմաստիճան</translation>
 <translation id="8041089156583427627">Կարծիք հայտնել</translation>
+<translation id="8075838845814659848">Մարտկոցի լիցքը</translation>
 <translation id="808894953321890993">Փոխել գաղտնաբառը</translation>
 <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation>
 <translation id="8160445423316272678">Փաստաթուղթը դրեք սկաների վրա և սեղմեք <ph name="SPAN_BEGIN" />Սկանավորել<ph name="SPAN_END" />։</translation>
@@ -219,6 +230,7 @@
 <translation id="8919837981463578619">Չհաջողվեց տպել – Դարակը բացակայում է</translation>
 <translation id="8928727111548978589">Չհաջողվեց տպել – Թուղթը սպառվել է</translation>
 <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> Մնացած փորձերի քանակը՝ <ph name="ATTEMPTS_LEFT" />։</translation>
+<translation id="8968751544471797276">Լիցքավորման արագությունը</translation>
 <translation id="8970109610781093811">Կրկնել</translation>
 <translation id="9088306295921699330">Օգտագործված տարածքը</translation>
 <translation id="910415269708673980">Թարմացրեք <ph name="PRINCIPAL_NAME" /> հաշվի տոմսը</translation>
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb
index 79cec07..a64e4ba 100644
--- a/chromeos/strings/chromeos_strings_iw.xtb
+++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732">המשתמש הזה מנוהל על ידי <ph name="MANAGER" />. הדומיין הזה עשוי לנהל מרחוק את ההגדרות ולעקוב אחר פעילות המשתמש.</translation>
 <translation id="150962533380566081">‏PUK לא חוקי.</translation>
 <translation id="1510238584712386396">מרכז האפליקציות</translation>
+<translation id="1621067168122174824">הפעלה של בדיקת טעינה</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> שרשורים)</translation>
 <translation id="1641857168437328880">הכנסת מסמכים (צד אחד)</translation>
 <translation id="1644574205037202324">היסטוריה</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706391837335750954">‏מקודד DNS נוכח</translation>
 <translation id="1743558184855585519">הסוללה נחשבת לריקה לאחר שהיא מגיעה למגבלה</translation>
+<translation id="1792647875738159689">הסריקה מתבטלת</translation>
 <translation id="1905710495812624430">חריגה ממספר הניסיונות המרבי המותר.</translation>
 <translation id="1930797645656624981">‏שירות שיטת הקלט של Chrome OS</translation>
 <translation id="1947737735496445907">הודפסה</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">רענון</translation>
 <translation id="3009958530611748826">בחירת תיקייה לשמירה</translation>
 <translation id="3054177598518735801">mA<ph name="CURRENT_VALUE" /></translation>
+<translation id="3069085583900247081">הבדיקה נכשלה</translation>
 <translation id="3083667275341675831">אבחון קישוריות</translation>
 <translation id="3091839911843451378">נכשלה – משימת ההדפסה הופסקה</translation>
 <translation id="3102119246920354026">מטמון</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">משימות הדפסה בנות יותר מיום אחד יוסרו</translation>
 <translation id="3268178239013324452">נכשלה – דלת המדפסת פתוחה</translation>
 <translation id="3310640316857623290">‏זמן האחזור של ה-DNS גבוה במידה משמעותית מהסף המותר</translation>
+<translation id="3328783797891415197">הבדיקה מתבצעת</translation>
 <translation id="3369013195428705271">לנקות את כל היסטוריית ההדפסות? משימות ההדפסה הנוכחיות לא יימחקו.</translation>
 <translation id="3456078764689556234">הודפס עמוד <ph name="PRINTED_PAGES" /> מתוך <ph name="TOTAL_PAGES" />.</translation>
 <translation id="3459509316159669723">הדפסה</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">מדפסת</translation>
 <translation id="4131410914670010031">שחור ולבן</translation>
 <translation id="4145784616224233563">‏חומת אש מסוג HTTP</translation>
+<translation id="4170700058716978431">הבדיקה הסתיימה בכישלון</translation>
 <translation id="4227825898293920515">תוקף הסיסמה יפוג בעוד <ph name="TIME" /></translation>
 <translation id="4238516577297848345">אין משימות הדפסה שמתבצעות כרגע</translation>
 <translation id="4297501883039923494">הפסיקה – שגיאה לא ידועה</translation>
@@ -105,17 +110,20 @@
 <translation id="4773299976671772492">הופסק</translation>
 <translation id="4808449224298348341">משימת ההדפסה <ph name="DOCUMENT_TITLE" /> בוטלה</translation>
 <translation id="4832079907277790330">בחירת תיקייה מהאפליקציה 'קבצים'…</translation>
+<translation id="4848429997038228357">הבדיקה מתבצעת</translation>
 <translation id="4890353053343094602">יש לבחור מיד סיסמה חדשה</translation>
 <translation id="4917889632206600977">הפסיקה – הנייר נגמר</translation>
 <translation id="4921665434385737356">התבצעה טעינה של <ph name="RATE" /> ב-<ph name="NUM_SECONDS" /> שניות.</translation>
 <translation id="4932733599132424254">תאריך</translation>
 <translation id="4985509611418653372">הרצה</translation>
+<translation id="500920857929044050">הפסקת הבדיקה</translation>
 <translation id="5154917547274118687">זיכרון</translation>
 <translation id="5168185087976003268">תקינות הסוללה</translation>
 <translation id="520299634122159966">אין סורקים זמינים</translation>
 <translation id="5212543919916444558">לא מצאתי במסך משהו שאוכל לעזור בו.
 אפשר להקיש על המיקרופון כדי לשאול אותי משהו.</translation>
 <translation id="5222676887888702881">יציאה</translation>
+<translation id="5264277876637023664">‏הפעלת בדיקה של יחידת העיבוד המרכזית (CPU)</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">הפעלת תרחישים מחדש</translation>
 <translation id="5317780077021120954">שמירה</translation>
@@ -128,17 +136,22 @@
 <translation id="54609108002486618">מנוהל</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">מידע נוסף זמין במרכז העזרה</translation>
+<translation id="5635169860413004179">להצגת הדוח</translation>
 <translation id="5719918614880940190">‏מדד של השימוש ביחידת העיבוד המרכזית (CPU), הנצבר מכל הליבות</translation>
+<translation id="5797428682393400134">הבדיקה הסתיימה בהצלחה</translation>
 <translation id="5832805196449965646">הוספת משתמש</translation>
 <translation id="5895138241574237353">הפעלה מחדש</translation>
+<translation id="5931523347251946569">הקובץ לא נמצא</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, גרסה <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">סגירה</translation>
 <translation id="6048107060512778456">נכשלה – חסימת נייר</translation>
 <translation id="6050189528197190982">גווני אפור</translation>
 <translation id="6058625436358447366">כדי לסיים יש להזין את הסיסמה הישנה והחדשה</translation>
 <translation id="6061772781719867950">‏בקשות HTTP שנכשלו</translation>
+<translation id="6104112872696127344">הסריקה בוטלה</translation>
 <translation id="6106186594183574873">כדי לסיים יש להזין את הסיסמה הישנה</translation>
 <translation id="6108689792487843350">לא ניתן להגיע אל השער</translation>
+<translation id="6114428539405324828">‏GHz‏ <ph name="MAX" /> / GHz‏ <ph name="CURRENT" /></translation>
 <translation id="6146993107019042706">כדי לסיים, יש להזין את הסיסמה החדשה</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">למידע נוסף</translation>
@@ -149,6 +162,7 @@
 <translation id="649050271426829538">הפסיקה – חסימת נייר</translation>
 <translation id="6517239166834772319">‏מה חדש ב-Chromebook</translation>
 <translation id="6527081081771465939">‏פרוטוקול אבטחת Wi-Fi לא מזוהה</translation>
+<translation id="6532051501443766164">הסתרת הדוח</translation>
 <translation id="65587193855025101">שטוח</translation>
 <translation id="6564646048574748301">נכשלה – לא ניתן להתחבר אל המדפסת</translation>
 <translation id="6618744767048954150">הבדיקה מתבצעת עכשיו</translation>
@@ -156,6 +170,7 @@
 <translation id="6643016212128521049">ניקוי</translation>
 <translation id="6704062477274546131">‏פענוח DNS</translation>
 <translation id="6747215703636344499">הפסיקה – מגש הפלט מלא</translation>
+<translation id="6756731097889387912">לא ניתן היה לבטל את הסריקה</translation>
 <translation id="6766275201586212568">‏בקשות לזיהוי DNS שנכשלו</translation>
 <translation id="6768237774506518020">‏שיעור כישלון גבוה לנסיונות זיהוי DNS</translation>
 <translation id="6839141349259399400">לא ניתן להתחבר לסורקים?</translation>
@@ -171,6 +186,7 @@
 <translation id="7648838807254605802">‏זמן רב של אחזור HTTPS</translation>
 <translation id="7658239707568436148">ביטול</translation>
 <translation id="7690294790491645610">אישור הסיסמה החדשה</translation>
+<translation id="7732651821766520760">בדיקת <ph name="TEST_NAME" /></translation>
 <translation id="7805768142964895445">סטטוס</translation>
 <translation id="7855434858642800953">נשמר הקובץ שנסרק!</translation>
 <translation id="7928373994957558460">הצגת מיקום הקובץ</translation>
@@ -198,6 +214,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">ברירת מחדל</translation>
 <translation id="8845001906332463065">קבלת עזרה</translation>
+<translation id="8881098542468797602">הבדיקה הושלמה בהצלחה</translation>
 <translation id="8910721771319628100">רשת ברירת המחדל חורגת מסף זמן האחזור</translation>
 <translation id="8919837981463578619">נכשלה – המגש לא נמצא</translation>
 <translation id="8928727111548978589">נכשלה – הנייר נגמר</translation>
@@ -207,4 +224,6 @@
 <translation id="910415269708673980">רענון הכרטיס עבור <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="9106415115617144481">מתבצעת סריקה של עמוד <ph name="PAGE_NUMBER" /></translation>
 <translation id="9111102763498581341">ביטול נעילה</translation>
+<translation id="9149391708638971077">הפעלה של בדיקת זיכרון</translation>
+<translation id="982713511914535780">הפעלת בדיקה של פריקת הסוללה</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb
index 338c513c..d187d59 100644
--- a/chromeos/strings/chromeos_strings_ja.xtb
+++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732">このユーザーは <ph name="MANAGER" /> によって管理されています。設定の管理とユーザー アクティビティの監視がリモートで行われることがあります。</translation>
 <translation id="150962533380566081">無効な PUK です。</translation>
 <translation id="1510238584712386396">ランチャー</translation>
+<translation id="1621067168122174824">充電テストを実行</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" />(スレッド数 <ph name="THREAD_COUNT" />)</translation>
 <translation id="1641857168437328880">ドキュメント フィーダー(片面)</translation>
 <translation id="1644574205037202324">履歴</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706391837335750954">DNS Resolver の存在</translation>
 <translation id="1743558184855585519">バッテリーの制限値に達すると消費したものと見なされます</translation>
+<translation id="1792647875738159689">スキャンをキャンセルしています</translation>
 <translation id="1905710495812624430">最大試行回数を超えました。</translation>
 <translation id="1930797645656624981">Chrome OS の入力方法サービス</translation>
 <translation id="1947737735496445907">印刷完了</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">更新</translation>
 <translation id="3009958530611748826">保存先のフォルダを選択</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation>
+<translation id="3069085583900247081">テストに失敗しました</translation>
 <translation id="3083667275341675831">接続診断</translation>
 <translation id="3091839911843451378">失敗 - 停止中です</translation>
 <translation id="3102119246920354026">キャッシュ</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">昨日より前の印刷ジョブは削除されます</translation>
 <translation id="3268178239013324452">失敗 - 扉が開いています</translation>
 <translation id="3310640316857623290">DNS の応答時間が許容値を大幅に超えています</translation>
+<translation id="3328783797891415197">テスト実行中</translation>
 <translation id="3369013195428705271">印刷履歴をすべて削除してもよろしいですか?実行中の印刷ジョブは削除されません。</translation>
 <translation id="3456078764689556234"><ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /> ページを印刷しました。</translation>
 <translation id="3459509316159669723">印刷</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">プリンタ</translation>
 <translation id="4131410914670010031">白黒</translation>
 <translation id="4145784616224233563">HTTP ファイアウォール</translation>
+<translation id="4170700058716978431">失敗</translation>
 <translation id="4227825898293920515">パスワードの有効期限はあと <ph name="TIME" />です</translation>
 <translation id="4238516577297848345">実行中の印刷ジョブはありません</translation>
 <translation id="4297501883039923494">停止 - 不明なエラー</translation>
@@ -105,17 +110,20 @@
 <translation id="4773299976671772492">停止しました</translation>
 <translation id="4808449224298348341">キャンセルされた印刷ジョブ <ph name="DOCUMENT_TITLE" /></translation>
 <translation id="4832079907277790330">ファイルアプリ内のフォルダを選択...</translation>
+<translation id="4848429997038228357">実行中</translation>
 <translation id="4890353053343094602">新しいパスワードを今すぐ選択してください</translation>
 <translation id="4917889632206600977">停止 - 用紙切れ</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> 秒で <ph name="RATE" /> 充電しました。</translation>
 <translation id="4932733599132424254">日付</translation>
 <translation id="4985509611418653372">実行</translation>
+<translation id="500920857929044050">テストを停止</translation>
 <translation id="5154917547274118687">メモリ</translation>
 <translation id="5168185087976003268">電池の状態</translation>
 <translation id="520299634122159966">使用できるスキャナはありません</translation>
 <translation id="5212543919916444558">画面からはサポートできる内容が見つかりませんでした。
 マイクをタップして質問してみてください。</translation>
 <translation id="5222676887888702881">ログアウト</translation>
+<translation id="5264277876637023664">CPU テストを実行</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />、<ph name="PRINTER_NAME" />、<ph name="CREATION_TIME" />、<ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">ルーティンを再実行</translation>
 <translation id="5317780077021120954">保存</translation>
@@ -128,17 +136,22 @@
 <translation id="54609108002486618">管理対象</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">ヘルプセンターで詳細を確認</translation>
+<translation id="5635169860413004179">レポートを表示</translation>
 <translation id="5719918614880940190">コア CPU 全体の使用状況を測定します</translation>
+<translation id="5797428682393400134">完了</translation>
 <translation id="5832805196449965646">ユーザーを追加</translation>
 <translation id="5895138241574237353">再起動</translation>
+<translation id="5931523347251946569">ファイルが見つかりません</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />、バージョン <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">閉じる</translation>
 <translation id="6048107060512778456">失敗 - 紙詰まりです</translation>
 <translation id="6050189528197190982">グレースケール</translation>
 <translation id="6058625436358447366">終了するには、古いパスワードと新しいパスワードを入力してください</translation>
 <translation id="6061772781719867950">HTTP リクエストが失敗しました</translation>
+<translation id="6104112872696127344">スキャンをキャンセルしました</translation>
 <translation id="6106186594183574873">終了するには、古いパスワードを入力してください</translation>
 <translation id="6108689792487843350">ゲートウェイにアクセスできません</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" /> GHz / <ph name="MAX" /> GHz</translation>
 <translation id="6146993107019042706">終了するには、新しいパスワードを入力してください</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">詳細</translation>
@@ -149,6 +162,7 @@
 <translation id="649050271426829538">停止 - 紙詰まり</translation>
 <translation id="6517239166834772319">使い方・ヒント</translation>
 <translation id="6527081081771465939">Wi-Fi のセキュリティ プロトコルが不明です</translation>
+<translation id="6532051501443766164">レポートを非表示</translation>
 <translation id="65587193855025101">フラットベッド</translation>
 <translation id="6564646048574748301">失敗 - プリンタにアクセスできません</translation>
 <translation id="6618744767048954150">実行中</translation>
@@ -156,6 +170,7 @@
 <translation id="6643016212128521049">削除</translation>
 <translation id="6704062477274546131">DNS の解決</translation>
 <translation id="6747215703636344499">停止 - 排紙トレイがいっぱいです</translation>
+<translation id="6756731097889387912">スキャンをキャンセルできませんでした</translation>
 <translation id="6766275201586212568">DNS 解決に失敗しました</translation>
 <translation id="6768237774506518020">DNS 解決の失敗率が高くなっています</translation>
 <translation id="6839141349259399400">スキャナに接続できない場合</translation>
@@ -171,6 +186,7 @@
 <translation id="7648838807254605802">HTTPS レイテンシが高くなっています</translation>
 <translation id="7658239707568436148">キャンセル</translation>
 <translation id="7690294790491645610">新しいパスワードの確認入力</translation>
+<translation id="7732651821766520760"><ph name="TEST_NAME" /> テスト</translation>
 <translation id="7805768142964895445">ステータス</translation>
 <translation id="7855434858642800953">スキャンしたファイルを保存しました。</translation>
 <translation id="7928373994957558460">ファイルの場所を表示</translation>
@@ -198,6 +214,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">既定</translation>
 <translation id="8845001906332463065">ヘルプ</translation>
+<translation id="8881098542468797602">テストが完了しました</translation>
 <translation id="8910721771319628100">デフォルトのネットワークの応答時間がしきい値を超えています</translation>
 <translation id="8919837981463578619">失敗 - トレイがありません</translation>
 <translation id="8928727111548978589">失敗 - 用紙がありません</translation>
@@ -207,4 +224,6 @@
 <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" /> のチケットを更新してください</translation>
 <translation id="9106415115617144481"><ph name="PAGE_NUMBER" /> ページ目をスキャンしています</translation>
 <translation id="9111102763498581341">ロック解除</translation>
+<translation id="9149391708638971077">メモリテストを実行</translation>
+<translation id="982713511914535780">放電テストを実行</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_km.xtb b/chromeos/strings/chromeos_strings_km.xtb
index cf996ca..579e550 100644
--- a/chromeos/strings/chromeos_strings_km.xtb
+++ b/chromeos/strings/chromeos_strings_km.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" /> គ្រប់គ្រង​អ្នកប្រើប្រាស់នេះ និង​អាចតាមដាន​សកម្មភាពអ្នកប្រើប្រាស់ និង​គ្រប់គ្រង​ការកំណត់ពីចម្ងាយបាន។</translation>
 <translation id="150962533380566081">PUK មិនត្រឹមត្រូវ។</translation>
 <translation id="1510238584712386396">ឡាន់ឆ័រ</translation>
+<translation id="1621067168122174824">ដំណើរការតេស្តសាកថ្ម</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (កម្រងសារ <ph name="THREAD_COUNT" />)</translation>
 <translation id="1641857168437328880">ឧបករណ៍​បញ្ចូល​ឯកសារ (ម្ខាង)</translation>
 <translation id="1644574205037202324">ប្រវត្តិ</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">សំបុត្រ</translation>
 <translation id="1706391837335750954">កម្មវិធីបំប្លែង DNS បច្ចុប្បន្ន</translation>
 <translation id="1743558184855585519">ថ្មត្រូវបានចាត់ទុកថាអស់ នៅពេលឈានដល់កម្រិតកំណត់</translation>
+<translation id="1792647875738159689">កំពុងបោះបង់ការស្កេន</translation>
 <translation id="1905710495812624430">បាន​លើស​ការ​ព្យាយាម​ចូូល​អតិបរមា​ដែល​បាន​អនុញ្ញាត​ហើយ​។​</translation>
 <translation id="1930797645656624981">សេវាកម្ម​វិធី​បញ្ចូល Chrome OS</translation>
 <translation id="1947737735496445907">បានបោះពុម្ព</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">ផ្ទុក​ឡើង​វិញ</translation>
 <translation id="3009958530611748826">ជ្រើសរើសថត ដើម្បីរក្សាទុកឯកសារស្កេន</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation>
+<translation id="3069085583900247081">ការធ្វើតេស្ត​​មិនបានសម្រេចទេ</translation>
 <translation id="3083667275341675831">ការវិភាគអំពីការតភ្ជាប់</translation>
 <translation id="3091839911843451378">មិនបានសម្រេច - ​​​ម៉ាស៊ីន​បោះពុម្ពបានឈប់</translation>
 <translation id="3102119246920354026">ឃ្លាំងសម្ងាត់</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">កិច្ចការបោះពុម្ពដែលចាស់ជាង 1 ថ្ងៃនឹងត្រូវលុបចេញ</translation>
 <translation id="3268178239013324452">មិនបានសម្រេច - ​​​ទ្វារចំហ</translation>
 <translation id="3310640316857623290">កម្រិតពន្យាររបស់ DNS ខ្ពស់ជាងកម្រិតអនុញ្ញាតខ្លាំង</translation>
+<translation id="3328783797891415197">កំពុងដំណើរការតេស្ត</translation>
 <translation id="3369013195428705271">តើអ្នក​ពិតជាចង់​សម្អាត​ប្រវត្តិបោះពុម្ព​ទាំងអស់​មែនឬ? ការងារ​បោះពុម្ព​របស់អ្នកដែល​កំពុងដំណើរការ​នឹងមិនត្រូវបាន​សម្អាតទេ។</translation>
 <translation id="3456078764689556234">បានបោះពុម្ព​ទំព័រទី <ph name="PRINTED_PAGES" /> ក្នុងចំណោម <ph name="TOTAL_PAGES" />។</translation>
 <translation id="3459509316159669723">កំពុងបោះពុម្ព</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">ម៉ាស៊ីន​បោះពុម្ព</translation>
 <translation id="4131410914670010031">ពណ៌ខ្មៅ និងស</translation>
 <translation id="4145784616224233563">ជញ្ជាំងភ្លើង HTTP</translation>
+<translation id="4170700058716978431">មិនបានសម្រេច</translation>
 <translation id="4227825898293920515">ពាក្យសម្ងាត់ផុតកំណត់​ក្នុងរយៈពេល <ph name="TIME" /></translation>
 <translation id="4238516577297848345">មិនមានកិច្ចការបោះពុម្ពកំពុងដំណើរការទេ</translation>
 <translation id="4297501883039923494">បានឈប់ - មានបញ្ហា​ដែលមិនស្គាល់</translation>
@@ -105,16 +110,19 @@
 <translation id="4773299976671772492">បានឈប់</translation>
 <translation id="4808449224298348341">បានបោះបង់​ការងារបោះពុម្ព <ph name="DOCUMENT_TITLE" /></translation>
 <translation id="4832079907277790330">ជ្រើសរើសថតនៅក្នុងកម្មវិធី Files...</translation>
+<translation id="4848429997038228357">កំពុងដំណើរការ</translation>
 <translation id="4890353053343094602">សូមជ្រើសរើស​ពាក្យសម្ងាត់​ថ្មីភ្លាមៗ</translation>
 <translation id="4917889632206600977">បានឈប់ - អស់​ក្រដាស</translation>
 <translation id="4921665434385737356">បានសាកថ្ម <ph name="RATE" /> ក្នុងរយៈពេល <ph name="NUM_SECONDS" /> វិនាទី។</translation>
 <translation id="4932733599132424254">កាលបរិច្ឆេទ</translation>
 <translation id="4985509611418653372">ដំណើរការ</translation>
+<translation id="500920857929044050">បញ្ឈប់​ការធ្វើតេស្ត</translation>
 <translation id="5154917547274118687">មេម៉ូរី</translation>
 <translation id="5168185087976003268">គុណភាព​ថ្ម</translation>
 <translation id="520299634122159966">មិនមាន​ឧបករណ៍ស្កេន​ទេ</translation>
 <translation id="5212543919916444558">ខ្ញុំរកមិនឃើញអ្វីដែលខ្ញុំអាចជួយបាននៅលើអេក្រង់របស់អ្នកទេ។ សាកល្បងចុចមីក្រូហ្វូន ដើម្បីសួរខ្ញុំអំពីអ្វីម្យ៉ាង។</translation>
 <translation id="5222676887888702881">ចាកចេញ</translation>
+<translation id="5264277876637023664">ដំណើរការតេស្ត CPU</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">ដំណើរការ​ទម្លាប់ឡើងវិញ</translation>
 <translation id="5317780077021120954">រក្សាទុក</translation>
@@ -127,17 +135,22 @@
 <translation id="54609108002486618">បាន​គ្រប់គ្រង</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />៖ <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">ស្វែងយល់បន្ថែម​នៅក្នុង​មជ្ឈមណ្ឌលជំនួយ</translation>
+<translation id="5635169860413004179">មើល​របាយការណ៍</translation>
 <translation id="5719918614880940190">សកម្មភាពនេះវាស់ស្ទង់ការប្រើប្រាស់ CPU ហើយគឺជាការវាស់ស្ទង់ការប្រើប្រាស់សរុបនៃស្នូលទាំងអស់</translation>
+<translation id="5797428682393400134">ជោគជ័យ</translation>
 <translation id="5832805196449965646">បន្ថែមបុគ្គល</translation>
 <translation id="5895138241574237353">ចាប់ផ្តើមឡើងវិញ</translation>
+<translation id="5931523347251946569">រក​មិន​ឃើញ​ឯកសារទេ</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, កំណែ <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">បិទ</translation>
 <translation id="6048107060512778456">មិនបានសម្រេច - ​​ជាប់ក្រដាស</translation>
 <translation id="6050189528197190982">មាត្រដ្ឋានប្រផេះ</translation>
 <translation id="6058625436358447366">ដើម្បី​បញ្ចប់ សូម​បញ្ចូល​ពាក្យសម្ងាត់​ចាស់ និងថ្មី​របស់អ្នក</translation>
 <translation id="6061772781719867950">សំណើ HTTPS ដែលមិនដំណើរការ</translation>
+<translation id="6104112872696127344">បានបោះបង់ការស្កេនហើយ</translation>
 <translation id="6106186594183574873">ដើម្បី​បញ្ចប់ សូម​បញ្ចូល​ពាក្យសម្ងាត់​ចាស់​របស់អ្នក</translation>
 <translation id="6108689792487843350">មិនអាចភ្ជាប់ជាមួយច្រកបានទេ</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" />GHz / <ph name="MAX" />GHz</translation>
 <translation id="6146993107019042706">ដើម្បី​បញ្ចប់ សូម​បញ្ចូល​ពាក្យសម្ងាត់​ថ្មីរបស់អ្នក</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">ស្វែងយល់​បន្ថែម</translation>
@@ -148,6 +161,7 @@
 <translation id="649050271426829538">បានឈប់ - ជាប់​ក្រដាស</translation>
 <translation id="6517239166834772319">រុករក</translation>
 <translation id="6527081081771465939">មិនស្គាល់​ប្រូតូកូល​សុវត្ថិភាព WiFi</translation>
+<translation id="6532051501443766164">លាក់របាយការណ៍</translation>
 <translation id="65587193855025101">ផ្ទៃ​កញ្ចក់</translation>
 <translation id="6564646048574748301">មិនបានសម្រេច - ​​មិនអាចភ្ជាប់​ម៉ាស៊ីនបោះពុម្ព​បាន</translation>
 <translation id="6618744767048954150">កំពុងដំណើរការ</translation>
@@ -155,6 +169,7 @@
 <translation id="6643016212128521049">ជម្រះ</translation>
 <translation id="6704062477274546131">ដំណោះស្រាយ DNS</translation>
 <translation id="6747215703636344499">បានឈប់ - ថាសដាក់​ក្រដាស​បោះពុម្ព​ពេញហើយ</translation>
+<translation id="6756731097889387912">មិនអាចបោះបង់ការស្កេនបានទេ</translation>
 <translation id="6766275201586212568">កម្រិតច្បាស់ DNS ដែលមិនដំណើរការ</translation>
 <translation id="6768237774506518020">អត្រាមិនដំណើរការ​នៃកម្រិតច្បាស់ DNS ខ្ពស់</translation>
 <translation id="6839141349259399400">មិនអាច​ភ្ជាប់​ម៉ាស៊ីនស្កេន​បានទេឬ​?</translation>
@@ -170,6 +185,7 @@
 <translation id="7648838807254605802">ការពន្យារ HTTPS ខ្ពស់</translation>
 <translation id="7658239707568436148">បដិសេធ</translation>
 <translation id="7690294790491645610">បញ្ជាក់​ពាក្យ​សម្ងាត់​ថ្មី</translation>
+<translation id="7732651821766520760">តេស្ត <ph name="TEST_NAME" /></translation>
 <translation id="7805768142964895445">ស្ថានភាព</translation>
 <translation id="7855434858642800953">បានរក្សាទុក​ឯកសារ​ដែលបានស្កេន!</translation>
 <translation id="7928373994957558460">បង្ហាញ​ទីតាំង​ឯកសារ</translation>
@@ -197,12 +213,16 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">លំនាំដើម</translation>
 <translation id="8845001906332463065">ទទួលជំនួយ</translation>
+<translation id="8881098542468797602">ការធ្វើតេស្តបានជោគជ័យ</translation>
 <translation id="8910721771319628100">កម្រិត​ពន្យាររបស់បណ្ដាញលំនាំដើមខ្ពស់ពេក</translation>
 <translation id="8919837981463578619">មិនបានសម្រេច - ​​បាត់ថាសដាក់ក្រដាស</translation>
 <translation id="8928727111548978589">មិនបានសម្រេច - ​​អស់ក្រដាស</translation>
 <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> អាច​ព្យាយាម​បាន <ph name="ATTEMPTS_LEFT" /> ដងទៀត</translation>
+<translation id="8970109610781093811">ដំណើរការម្ដងទៀត</translation>
 <translation id="9088306295921699330">ការប្រើប្រាស់​បច្ចុប្បន្ន</translation>
 <translation id="910415269708673980">ផ្ទុកសំបុត្រ​ឡើងវិញសម្រាប់ <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="9106415115617144481">កំពុង​ស្កេន​ទំព័រ <ph name="PAGE_NUMBER" /></translation>
 <translation id="9111102763498581341">ដោះសោរ</translation>
+<translation id="9149391708638971077">ដំណើរការតេស្តអង្គចងចាំ</translation>
+<translation id="982713511914535780">ដំណើរការតេស្តនៃការបញ្ចេញថាមពល</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_ko.xtb b/chromeos/strings/chromeos_strings_ko.xtb
index 608b1355..8d2efdd 100644
--- a/chromeos/strings/chromeos_strings_ko.xtb
+++ b/chromeos/strings/chromeos_strings_ko.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" />에서 이 사용자를 관리하며, 원격으로 설정을 관리하고 사용자 활동을 모니터링할 수 있습니다.</translation>
 <translation id="150962533380566081">잘못된 PUK입니다.</translation>
 <translation id="1510238584712386396">런처</translation>
+<translation id="1621067168122174824">충전 테스트 실행</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" />(스레드 <ph name="THREAD_COUNT" />개)</translation>
 <translation id="1641857168437328880">서류 급지(단면)</translation>
 <translation id="1644574205037202324">방문 기록</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706391837335750954">DNS 리졸버 존재</translation>
 <translation id="1743558184855585519">배터리가 한도에 도달하면 소모된 것으로 간주됨</translation>
+<translation id="1792647875738159689">스캔 취소 중</translation>
 <translation id="1905710495812624430">허용되는 최대 시도 횟수를 초과했습니다.</translation>
 <translation id="1930797645656624981">Chrome OS 입력 방법 서비스</translation>
 <translation id="1947737735496445907">인쇄됨</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">새로고침</translation>
 <translation id="3009958530611748826">저장 폴더 선택</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation>
+<translation id="3069085583900247081">테스트 실패</translation>
 <translation id="3083667275341675831">연결 진단</translation>
 <translation id="3091839911843451378">실패 - 중지됨</translation>
 <translation id="3102119246920354026">캐시</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">1일 이상 경과한 인쇄 작업은 삭제됩니다.</translation>
 <translation id="3268178239013324452">실패 - 덮개 열림</translation>
 <translation id="3310640316857623290">DNS 지연 시간이 허용되는 기준을 훨씬 초과했습니다.</translation>
+<translation id="3328783797891415197">테스트 실행 중</translation>
 <translation id="3369013195428705271">모든 인쇄 기록을 삭제하시겠습니까? 진행 중인 인쇄 작업은 삭제되지 않습니다.</translation>
 <translation id="3456078764689556234">인쇄된 페이지 <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /></translation>
 <translation id="3459509316159669723">인쇄</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">프린터</translation>
 <translation id="4131410914670010031">흑백</translation>
 <translation id="4145784616224233563">HTTP 방화벽</translation>
+<translation id="4170700058716978431">실패</translation>
 <translation id="4227825898293920515">비밀번호가 <ph name="TIME" /> 후에 만료됨</translation>
 <translation id="4238516577297848345">진행 중인 인쇄 작업 없음</translation>
 <translation id="4297501883039923494">중지됨 - 알 수 없는 오류</translation>
@@ -105,17 +110,20 @@
 <translation id="4773299976671772492">중지됨</translation>
 <translation id="4808449224298348341"><ph name="DOCUMENT_TITLE" /> 인쇄 작업 취소됨</translation>
 <translation id="4832079907277790330">파일 앱에서 폴더 선택…</translation>
+<translation id="4848429997038228357">실행 중</translation>
 <translation id="4890353053343094602">지금 바로 새 비밀번호를 선택하세요.</translation>
 <translation id="4917889632206600977">중지됨 - 용지 부족</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" />초 동안 <ph name="RATE" /> 충전했습니다.</translation>
 <translation id="4932733599132424254">날짜</translation>
 <translation id="4985509611418653372">실행</translation>
+<translation id="500920857929044050">테스트 중지</translation>
 <translation id="5154917547274118687">메모리</translation>
 <translation id="5168185087976003268">배터리 상태</translation>
 <translation id="520299634122159966">사용 가능한 스캐너 없음</translation>
 <translation id="5212543919916444558">화면에 도움을 드릴 수 있는 항목이 보이지 않습니다.
 마이크를 탭하여 무엇이든지 물어보세요.</translation>
 <translation id="5222676887888702881">로그아웃</translation>
+<translation id="5264277876637023664">CPU 테스트 실행</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">루틴 다시 실행</translation>
 <translation id="5317780077021120954">저장</translation>
@@ -128,17 +136,22 @@
 <translation id="54609108002486618">관리</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">고객센터에서 자세히 알아보기</translation>
+<translation id="5635169860413004179">보고서 보기</translation>
 <translation id="5719918614880940190">CPU 사용량을 측정하며, 모든 코어에서 집계한 값입니다.</translation>
+<translation id="5797428682393400134">완료</translation>
 <translation id="5832805196449965646">사용자 추가</translation>
 <translation id="5895138241574237353">다시 시작</translation>
+<translation id="5931523347251946569">파일을 찾을 수 없음</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, 버전 <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">닫기</translation>
 <translation id="6048107060512778456">실패 - 용지 걸림</translation>
 <translation id="6050189528197190982">회색조</translation>
 <translation id="6058625436358447366">완료하려면 이전 및 새 비밀번호를 입력하세요.</translation>
 <translation id="6061772781719867950">HTTPS 요청 실패함</translation>
+<translation id="6104112872696127344">스캔이 취소되었습니다.</translation>
 <translation id="6106186594183574873">완료하려면 이전 비밀번호를 입력하세요.</translation>
 <translation id="6108689792487843350">게이트웨이에 연결할 수 없습니다.</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" />GHz/<ph name="MAX" />GHz</translation>
 <translation id="6146993107019042706">완료하려면 새 비밀번호를 입력하세요.</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">자세히 알아보기</translation>
@@ -149,6 +162,7 @@
 <translation id="649050271426829538">중지됨 - 용지 걸림</translation>
 <translation id="6517239166834772319">살펴보기</translation>
 <translation id="6527081081771465939">알려지지 않은 Wi-Fi 보안 프로토콜입니다.</translation>
+<translation id="6532051501443766164">보고서 숨기기</translation>
 <translation id="65587193855025101">평판</translation>
 <translation id="6564646048574748301">실패 - 프린터에 연결할 수 없음</translation>
 <translation id="6618744767048954150">실행 중</translation>
@@ -156,6 +170,7 @@
 <translation id="6643016212128521049">삭제</translation>
 <translation id="6704062477274546131">DNS 변환</translation>
 <translation id="6747215703636344499">중지됨 - 배지대 가득 참</translation>
+<translation id="6756731097889387912">스캔을 취소할 수 없음</translation>
 <translation id="6766275201586212568">DNS 변환 실패함</translation>
 <translation id="6768237774506518020">DNS 변환 실패율 높음</translation>
 <translation id="6839141349259399400">스캐너에 연결할 수 없나요?</translation>
@@ -171,6 +186,7 @@
 <translation id="7648838807254605802">HTTPS 지연 시간 높음</translation>
 <translation id="7658239707568436148">취소</translation>
 <translation id="7690294790491645610">새 비밀번호 확인</translation>
+<translation id="7732651821766520760"><ph name="TEST_NAME" /> 테스트</translation>
 <translation id="7805768142964895445">상태</translation>
 <translation id="7855434858642800953">스캔한 파일이 저장되었습니다.</translation>
 <translation id="7928373994957558460">파일 위치 표시</translation>
@@ -198,6 +214,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">기본값</translation>
 <translation id="8845001906332463065">도움말 보기</translation>
+<translation id="8881098542468797602">테스트 성공</translation>
 <translation id="8910721771319628100">기본 네트워크가 지연 시간 기준을 초과했습니다.</translation>
 <translation id="8919837981463578619">실패 - 트레이 없음</translation>
 <translation id="8928727111548978589">실패 - 용지 없음</translation>
@@ -207,4 +224,6 @@
 <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" /> 티켓을 새로고침하세요.</translation>
 <translation id="9106415115617144481"><ph name="PAGE_NUMBER" />페이지 스캔 중</translation>
 <translation id="9111102763498581341">잠금 해제</translation>
+<translation id="9149391708638971077">메모리 테스트 실행</translation>
+<translation id="982713511914535780">방전 테스트 실행</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_lt.xtb b/chromeos/strings/chromeos_strings_lt.xtb
index f024527..dccd92e 100644
--- a/chromeos/strings/chromeos_strings_lt.xtb
+++ b/chromeos/strings/chromeos_strings_lt.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" /> valdo šį naudotoją ir gali nuotoliniu būdu valdyti nustatymus bei stebėti naudotojo veiklą.</translation>
 <translation id="150962533380566081">Netinkamas PUK.</translation>
 <translation id="1510238584712386396">Paleidimo priemonė</translation>
+<translation id="1621067168122174824">Vykdyti įkrovimo bandymą</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (gijų: <ph name="THREAD_COUNT" />)</translation>
 <translation id="1641857168437328880">Dokumentų tiektuvas (vienpusis)</translation>
 <translation id="1644574205037202324">Istorija</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Laiškas</translation>
 <translation id="1706391837335750954">DNS pavadinimų vertimo programos aptikimas</translation>
 <translation id="1743558184855585519">Akumuliatorius laikomas išeikvotu, kai pasiekia apribojimą</translation>
+<translation id="1792647875738159689">Atšaukiamas nuskaitymas</translation>
 <translation id="1905710495812624430">Viršytas didžiausias bandymų skaičius.</translation>
 <translation id="1930797645656624981">„Chrome“ OS įvesties metodo paslauga</translation>
 <translation id="1947737735496445907">Atspausdinta</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">ATNAUJINTI</translation>
 <translation id="3009958530611748826">Pasirinkite aplanką, kuriame pageidaujate išsaugoti</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation>
+<translation id="3069085583900247081">Bandymas nepavyko</translation>
 <translation id="3083667275341675831">Ryšio diagnostika</translation>
 <translation id="3091839911843451378">Nepavyko – sustabdyta</translation>
 <translation id="3102119246920354026">Talpykla</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">Senesnės nei 1 dienos spausdinimo užduotys bus pašalintos</translation>
 <translation id="3268178239013324452">Nepavyko – atidarytos durelės</translation>
 <translation id="3310640316857623290">DNS delsa gerokai viršija leistiną slenksčio vertę</translation>
+<translation id="3328783797891415197">Vykdomas bandymas</translation>
 <translation id="3369013195428705271">Ar tikrai norite išvalyti visą spausdinimo istoriją? Vykdomos spausdinimo užduotys nebus išvalytos.</translation>
 <translation id="3456078764689556234">Atspausdinta <ph name="PRINTED_PAGES" /> iš <ph name="TOTAL_PAGES" /> psl.</translation>
 <translation id="3459509316159669723">Spausdinimas</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">Spausdintuvas</translation>
 <translation id="4131410914670010031">Nespalvotai</translation>
 <translation id="4145784616224233563">HTTP užkarda</translation>
+<translation id="4170700058716978431">NESĖKMINGAS</translation>
 <translation id="4227825898293920515">Slaptažodžio galiojimas baigsis už <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Nėra vykstančių spausdinimo užduočių</translation>
 <translation id="4297501883039923494">Sustabdyta – nežinoma klaida</translation>
@@ -105,17 +110,20 @@
 <translation id="4773299976671772492">Sustabdyta</translation>
 <translation id="4808449224298348341">Spausdinimo užduotis atšaukta: <ph name="DOCUMENT_TITLE" /></translation>
 <translation id="4832079907277790330">Pasirinkite aplanką Failų programoje...</translation>
+<translation id="4848429997038228357">VYKDOMA</translation>
 <translation id="4890353053343094602">Nedelsdami pasirinkite naują</translation>
 <translation id="4917889632206600977">Sustabdyta – baigėsi popierius</translation>
 <translation id="4921665434385737356">Įkrauta: <ph name="RATE" /> per <ph name="NUM_SECONDS" /> sek.</translation>
 <translation id="4932733599132424254">Data</translation>
 <translation id="4985509611418653372">Vykdyti</translation>
+<translation id="500920857929044050">Stabdyti bandymą</translation>
 <translation id="5154917547274118687">Atmintis</translation>
 <translation id="5168185087976003268">Akumuliatoriaus būsena</translation>
 <translation id="520299634122159966">Nėra pasiekiamų skaitytuvų</translation>
 <translation id="5212543919916444558">Ekrane nieko nerasta, dėl ko galėtume jums padėti.
 Palieskite mikrofoną, kad užduotumėte reikiamus klausimus.</translation>
 <translation id="5222676887888702881">Atsijungti</translation>
+<translation id="5264277876637023664">Vykdyti centrinio procesoriaus bandymą</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, „<ph name="PRINTER_NAME" />“, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">Iš naujo vykdyti veiksmų sekas</translation>
 <translation id="5317780077021120954">Išsaugoti</translation>
@@ -128,17 +136,22 @@
 <translation id="54609108002486618">Valdoma</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">Sužinokite daugiau pagalbos centre</translation>
+<translation id="5635169860413004179">Žr. ataskaitą</translation>
 <translation id="5719918614880940190">Tai įvertina centrinio procesoriaus naudojimą ir nurodo apibendrintus visų branduolių duomenis</translation>
+<translation id="5797428682393400134">SĖKMINGAS</translation>
 <translation id="5832805196449965646">Pridėti asmenį</translation>
 <translation id="5895138241574237353">Paleisti iš naujo</translation>
+<translation id="5931523347251946569">Failas nerastas</translation>
 <translation id="5982592372228113572">(„<ph name="BOARD_NAME" />“, <ph name="MILESTONE_VERSION" /> versija)</translation>
 <translation id="6040143037577758943">Uždaryti</translation>
 <translation id="6048107060512778456">Nepavyko – įstrigęs popierius</translation>
 <translation id="6050189528197190982">Pilkumo tonas</translation>
 <translation id="6058625436358447366">Norėdami užbaigti įveskite seną ir naują slaptažodžius</translation>
 <translation id="6061772781719867950">Nepavykusios HTTP užklausos</translation>
+<translation id="6104112872696127344">Nuskaitymas atšauktas</translation>
 <translation id="6106186594183574873">Norėdami užbaigti įveskite seną slaptažodį</translation>
 <translation id="6108689792487843350">Tinklų sietuvas nepasiekiamas</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" /> GHz / <ph name="MAX" /> GHz</translation>
 <translation id="6146993107019042706">Norėdami užbaigti įveskite naują slaptažodį</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">Sužinokite daugiau</translation>
@@ -149,6 +162,7 @@
 <translation id="649050271426829538">Sustabdyta – įstrigęs popierius</translation>
 <translation id="6517239166834772319">Explore</translation>
 <translation id="6527081081771465939">Nežinomas „Wi-Fi“ saugos protokolas</translation>
+<translation id="6532051501443766164">Slėpti ataskaitą</translation>
 <translation id="65587193855025101">Plokščiasis</translation>
 <translation id="6564646048574748301">Nepavyko – spausdintuvas nepasiekiamas</translation>
 <translation id="6618744767048954150">Vykdoma</translation>
@@ -156,6 +170,7 @@
 <translation id="6643016212128521049">Išvalyti</translation>
 <translation id="6704062477274546131">DNS pavadinimų vertimas</translation>
 <translation id="6747215703636344499">Sustabdyta – išvestis pilna</translation>
+<translation id="6756731097889387912">Nepavyko atšaukti nuskaitymo</translation>
 <translation id="6766275201586212568">Nepavykę DNS nustatymo veiksmai</translation>
 <translation id="6768237774506518020">Aukštas DNS nustatymo trikčių rodiklis</translation>
 <translation id="6839141349259399400">Nepavyko prisijungti prie skaitytuvų?</translation>
@@ -171,6 +186,7 @@
 <translation id="7648838807254605802">Didelė HTTPS delsa</translation>
 <translation id="7658239707568436148">Atšaukti</translation>
 <translation id="7690294790491645610">Patvirtinkite naują slaptažodį</translation>
+<translation id="7732651821766520760">Bandymas „<ph name="TEST_NAME" />“</translation>
 <translation id="7805768142964895445">Būsena</translation>
 <translation id="7855434858642800953">Nuskaitytas failas išsaugotas!</translation>
 <translation id="7928373994957558460">Rodyti failo vietą</translation>
@@ -198,6 +214,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">Numatytasis</translation>
 <translation id="8845001906332463065">Gauti pagalbos</translation>
+<translation id="8881098542468797602">Bandymas sėkmingas</translation>
 <translation id="8910721771319628100">Numatytojo tinklo delsa viršija slenksčio vertę</translation>
 <translation id="8919837981463578619">Nepavyko – nėra dėklo</translation>
 <translation id="8928727111548978589">Nepavyko – baigėsi popierius</translation>
@@ -207,4 +224,6 @@
 <translation id="910415269708673980">Atnaujinkite <ph name="PRINCIPAL_NAME" /> bilietą</translation>
 <translation id="9106415115617144481">Nuskaitomas <ph name="PAGE_NUMBER" /> psl.</translation>
 <translation id="9111102763498581341">Atrakinti</translation>
+<translation id="9149391708638971077">Vykdyti atminties bandymą</translation>
+<translation id="982713511914535780">Vykdyti iškrovimo bandymą</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb
index d49c12a..3bb0b241 100644
--- a/chromeos/strings/chromeos_strings_ml.xtb
+++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" /> ആണ് ഈ ഉപയോക്താവിനെ മാനേജ് ചെയ്യുന്നത്, ഒപ്പം വിദൂരമായി ക്രമീകരണം മാനേജ് ചെയ്യുകയും ഉപയോക്തൃ ആക്‌റ്റിവിറ്റി നിരീക്ഷിക്കുകയും ചെയ്തേക്കാം.</translation>
 <translation id="150962533380566081">അസാധുവായ PUK.</translation>
 <translation id="1510238584712386396">ലോഞ്ചർ</translation>
+<translation id="1621067168122174824">ചാർജ് ടെസ്റ്റ് റൺ ചെയ്യുക</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> ത്രെഡുകൾ)</translation>
 <translation id="1641857168437328880">ഡോക്യുമെന്റ് ഫീഡർ (ഒരു വശമുള്ളത്)</translation>
 <translation id="1644574205037202324">ചരിത്രം</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">ലെറ്റർ</translation>
 <translation id="1706391837335750954">DNS റിസോൾവർ അവതരണം</translation>
 <translation id="1743558184855585519">ബാറ്ററി അതിന്റെ പരിധിയിലെത്തിക്കഴിഞ്ഞാൽ അത് ഉപയോഗമായി കണക്കാക്കപ്പെടുന്നു</translation>
+<translation id="1792647875738159689">സ്കാൻ ചെയ്യൽ റദ്ദാക്കുന്നു</translation>
 <translation id="1905710495812624430">അനുവദനീയമായ പരമാവധി ശ്രമങ്ങൾ നടത്തിക്കഴിഞ്ഞു.</translation>
 <translation id="1930797645656624981">Chrome OS ഇൻപുട്ട് രീതി സേവനം</translation>
 <translation id="1947737735496445907">പ്രിന്റ് ചെയ്‌തു</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">പുതുക്കിയെടുക്കുക</translation>
 <translation id="3009958530611748826">സംരക്ഷിക്കാൻ ഒരു ഫോൾഡർ തിരഞ്ഞെടുക്കുക</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation>
+<translation id="3069085583900247081">ടെസ്റ്റ് പരാജയപ്പെട്ടു</translation>
 <translation id="3083667275341675831">കണക്റ്റിവിറ്റി തകരാർ കണ്ടെത്തൽ</translation>
 <translation id="3091839911843451378">പ്രിന്റ് ചെയ്യാനായില്ല - പ്രവർത്തനം നിർത്തി</translation>
 <translation id="3102119246920354026">കാഷെ</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">1 ദിവസം മുമ്പുള്ള പ്രിന്റ് ജോലികൾ നീക്കം ചെയ്യും</translation>
 <translation id="3268178239013324452">പ്രിന്റ് ചെയ്യാനായില്ല - വാതിൽ തുറന്നിരിക്കുന്നു</translation>
 <translation id="3310640316857623290">DNS പ്രതികരണ സമയം അനുവദിക്കപ്പെട്ട പരിധിയേക്കാൾ വളരെ മുകളിലാണ്</translation>
+<translation id="3328783797891415197">ടെസ്‌റ്റ് റൺ ചെയ്യുന്നു</translation>
 <translation id="3369013195428705271">എല്ലാ പ്രിന്റ് ചരിത്രവും മായ്‌ക്കണമെന്ന് തീർച്ചയാണോ? നിങ്ങളുടെ പുരോഗതിയിലുള്ള പ്രിന്റ് ജോലികൾ മായ്ക്കില്ല.</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" />-ൽ <ph name="PRINTED_PAGES" /> പേജ് പ്രിന്റ് ചെയ്‌തു.</translation>
 <translation id="3459509316159669723">പ്രിന്റിംഗ്</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">പ്രിന്റർ</translation>
 <translation id="4131410914670010031">കറുപ്പും വെള്ളയും</translation>
 <translation id="4145784616224233563">HTTP ഫയര്‍വാള്‍</translation>
+<translation id="4170700058716978431">പരാജയപ്പെട്ടു</translation>
 <translation id="4227825898293920515">പാസ്‌വേഡ് <ph name="TIME" /> സമയത്തിനുള്ളിൽ കാലഹരണപ്പെടും</translation>
 <translation id="4238516577297848345">പ്രിന്റ് ജോലികളൊന്നും പുരോഗമിക്കുന്നില്ല</translation>
 <translation id="4297501883039923494">പ്രിന്റ് ജോലി നിർത്തി - അജ്ഞാതമായ പിശക്</translation>
@@ -105,16 +110,19 @@
 <translation id="4773299976671772492">അവസാനിപ്പിച്ചു</translation>
 <translation id="4808449224298348341"><ph name="DOCUMENT_TITLE" /> എന്ന പ്രിന്റ് ജോലി റദ്ദാക്കി</translation>
 <translation id="4832079907277790330">Files ആപ്പിൽ ഫോൾഡർ തിരഞ്ഞെടുക്കുക...</translation>
+<translation id="4848429997038228357">റൺ ചെയ്യുന്നു</translation>
 <translation id="4890353053343094602">പുതിയ പാസ്‌വേഡ് പെട്ടെന്ന് തിരഞ്ഞെടുക്കുക</translation>
 <translation id="4917889632206600977">പ്രിന്റ് ജോലി നിർത്തി - പേപ്പറില്ല</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> സെക്കന്റിൽ <ph name="RATE" /> ചാർജ് ചെയ്‌തു.</translation>
 <translation id="4932733599132424254">തീയതി</translation>
 <translation id="4985509611418653372">റൺ ചെയ്യുക</translation>
+<translation id="500920857929044050">ടെസ്‌റ്റ് നിർത്തുക</translation>
 <translation id="5154917547274118687">മെമ്മറി</translation>
 <translation id="5168185087976003268">ബാറ്ററിയുടെ പ്രവർത്തനക്ഷമത</translation>
 <translation id="520299634122159966">ലഭ്യമായ സ്‌കാനറുകളൊന്നുമില്ല</translation>
 <translation id="5212543919916444558">എനിക്ക് സഹായിക്കാനാവുന്ന ഒന്നും നിങ്ങളുടെ സ്‌ക്രീനിൽ കണ്ടെത്താനാവുന്നില്ല. എന്നോട് എന്തെങ്കിലും ആവശ്യപ്പെടാൻ മൈക്ക് ടാപ്പ് ചെയ്യുന്നത് പരീക്ഷിക്കൂ.</translation>
 <translation id="5222676887888702881">സൈൻ ഔട്ട് ചെയ്യുക</translation>
+<translation id="5264277876637023664">CPU ടെസ്‌റ്റ് റണ്‍ ചെയ്യുക</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">ദിനചര്യകൾ വീണ്ടും റൺ ചെയ്യുക</translation>
 <translation id="5317780077021120954">സംരക്ഷിക്കുക</translation>
@@ -127,17 +135,22 @@
 <translation id="54609108002486618">നിയന്ത്രിതം</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">സഹായകേന്ദ്രത്തിൽ കൂടുതലറിയുക</translation>
+<translation id="5635169860413004179">റിപ്പോർട്ട് കാണുക</translation>
 <translation id="5719918614880940190">ഇത് CPU ഉപയോഗം കണക്കാക്കുന്നു, എല്ലാ കോറുകളുടെയും സംഗ്രഹവുമാണ് ഇത്</translation>
+<translation id="5797428682393400134">വിജയകരം</translation>
 <translation id="5832805196449965646">വ്യക്തിയെ ചേർക്കുക</translation>
 <translation id="5895138241574237353">പുനരാരംഭിക്കുക</translation>
+<translation id="5931523347251946569">ഫയൽ കണ്ടെത്തിയില്ല</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, <ph name="MILESTONE_VERSION" /> പതിപ്പ്)</translation>
 <translation id="6040143037577758943">അടയ്ക്കുക</translation>
 <translation id="6048107060512778456">പ്രിന്റ് ചെയ്യാനായില്ല - പേപ്പർ ജാമായിരിക്കുന്നു</translation>
 <translation id="6050189528197190982">ഗ്രേസ്‌കെയിൽ</translation>
 <translation id="6058625436358447366">പൂർത്തിയാക്കാൻ നിങ്ങളുടെ പഴയ പാസ്‌വേഡും പുതിയ പാസ്‌വേഡും നൽകുക</translation>
 <translation id="6061772781719867950">പരാജയപ്പെട്ട HTTP അഭ്യർത്ഥനകൾ</translation>
+<translation id="6104112872696127344">സ്‌കാൻ ചെയ്യൽ റദ്ദാക്കി</translation>
 <translation id="6106186594183574873">പൂർത്തിയാക്കാൻ നിങ്ങളുടെ പഴയ പാസ്‌വേഡ് നൽകുക</translation>
 <translation id="6108689792487843350">ഗേറ്റ്‌വേയിലേക്ക് എത്താനാകുന്നില്ല</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" />GHz / <ph name="MAX" />GHz</translation>
 <translation id="6146993107019042706">പൂർത്തിയാക്കാൻ നിങ്ങളുടെ പുതിയ പാസ്‌വേഡ് നൽകുക</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">കൂടുതലറിയുക</translation>
@@ -148,6 +161,7 @@
 <translation id="649050271426829538">പ്രിന്റ് ജോലി നിർത്തി - പേപ്പർ ജാമായി</translation>
 <translation id="6517239166834772319">അടുത്തറിയുക</translation>
 <translation id="6527081081771465939">അജ്ഞാതമായ വെെഫെെ സുരക്ഷാ പ്രോട്ടോക്കോൾ</translation>
+<translation id="6532051501443766164">റിപ്പോർട്ട് മറയ്‌ക്കുക</translation>
 <translation id="65587193855025101">ഫ്ലാറ്റ്ബെഡ്</translation>
 <translation id="6564646048574748301">പ്രിന്റ് ചെയ്യാനായില്ല - പ്രിന്റർ ലഭ്യമല്ല</translation>
 <translation id="6618744767048954150">റൺ ചെയ്യുന്നു</translation>
@@ -155,6 +169,7 @@
 <translation id="6643016212128521049">മായ്‌ക്കുക</translation>
 <translation id="6704062477274546131">DNS റെസല്യൂഷൻ</translation>
 <translation id="6747215703636344499">പ്രിന്റ് ജോലി നിർത്തി - ഔട്ട്പുട്ട് നിറഞ്ഞിരിക്കുന്നു</translation>
+<translation id="6756731097889387912">സ്‌കാൻ ചെയ്യൽ റദ്ദാക്കാനായില്ല</translation>
 <translation id="6766275201586212568">പരാജയപ്പെട്ട DNS റെസല്യൂഷനുകൾ</translation>
 <translation id="6768237774506518020">ഉയർന്ന DNS റെസല്യൂഷൻ ഫെയ്‌ലിയർ നിരക്ക്</translation>
 <translation id="6839141349259399400">സ്‌കാനറുകളിലേക്ക് കണക്റ്റ് ചെയ്യാനാകുന്നില്ലേ?</translation>
@@ -170,6 +185,7 @@
 <translation id="7648838807254605802">ഉയർന്ന HTTPS പ്രതികരണ സമയം</translation>
 <translation id="7658239707568436148">റദ്ദാക്കൂ</translation>
 <translation id="7690294790491645610">പുതിയ പാസ്‌വേഡ് സ്ഥിരീകരിക്കുക</translation>
+<translation id="7732651821766520760"><ph name="TEST_NAME" /> ടെസ്‌റ്റ്</translation>
 <translation id="7805768142964895445">നില</translation>
 <translation id="7855434858642800953">സ്‌കാൻ ചെയ്ത ഫയൽ സംരക്ഷിച്ചു!</translation>
 <translation id="7928373994957558460">ഫയൽ ലൊക്കേഷൻ കാണിക്കുക</translation>
@@ -197,6 +213,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">ഡിഫോൾട്ട്</translation>
 <translation id="8845001906332463065">സഹായം നേടുക</translation>
+<translation id="8881098542468797602">ടെസ്റ്റ് പൂർത്തിയായി</translation>
 <translation id="8910721771319628100">ഡിഫോൾട്ട് നെറ്റ്‌വർക്ക് പ്രതികരണ സമയം പരിധിക്ക് മുകളിലാണ്</translation>
 <translation id="8919837981463578619">പ്രിന്റ് ചെയ്യാനായില്ല - ട്രേ കാണുന്നില്ല</translation>
 <translation id="8928727111548978589">പ്രിന്റ് ചെയ്യാനായില്ല - പേപ്പറില്ല</translation>
@@ -206,4 +223,6 @@
 <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" /> എന്നതിനുള്ള ടിക്കറ്റ് പുതുക്കിയെടുക്കുക</translation>
 <translation id="9106415115617144481"><ph name="PAGE_NUMBER" />-ാമത്തെ പേജ് സ്‌കാൻ ചെയ്യുന്നു</translation>
 <translation id="9111102763498581341">അണ്‍ലോക്ക് ചെയ്യുക</translation>
+<translation id="9149391708638971077">മെമ്മറി ടെസ്റ്റ് റണ്‍ ചെയ്യുക</translation>
+<translation id="982713511914535780">ഡിസ്‌ചാർജ്ജ് ടെസ്‌റ്റ് റൺ ചെയ്യുക</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_pl.xtb b/chromeos/strings/chromeos_strings_pl.xtb
index 01509a0..c78c120 100644
--- a/chromeos/strings/chromeos_strings_pl.xtb
+++ b/chromeos/strings/chromeos_strings_pl.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" /> zarządza tym użytkownikiem i może zdalnie monitorować jego aktywność oraz zarządzać ustawieniami.</translation>
 <translation id="150962533380566081">Nieprawidłowy PUK.</translation>
 <translation id="1510238584712386396">Menu z aplikacjami</translation>
+<translation id="1621067168122174824">Przeprowadź test ładowania</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" />-wątkowy)</translation>
 <translation id="1641857168437328880">Podajnik dokumentów (jednostronny)</translation>
 <translation id="1644574205037202324">Historia</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706391837335750954">Resolver DNS – obecność</translation>
 <translation id="1743558184855585519">Kiedy bateria osiągnie limit, uważana jest za zużytą</translation>
+<translation id="1792647875738159689">Anuluję skanowanie</translation>
 <translation id="1905710495812624430">Przekroczono maksymalną liczbę prób.</translation>
 <translation id="1930797645656624981">Usługa Metoda wprowadzania Chrome OS</translation>
 <translation id="1947737735496445907">Wydrukowano</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">ODŚWIEŻ</translation>
 <translation id="3009958530611748826">Wybierz folder zapisu</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation>
+<translation id="3069085583900247081">Niepowodzenie testu</translation>
 <translation id="3083667275341675831">Diagnostyka problemów z łącznością</translation>
 <translation id="3091839911843451378">Niepowodzenie – drukarka została zatrzymana</translation>
 <translation id="3102119246920354026">Pamięć podręczna</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">Zadania drukowania starsze niż 1 dzień zostaną usunięte</translation>
 <translation id="3268178239013324452">Niepowodzenie – otwarte drzwiczki drukarki</translation>
 <translation id="3310640316857623290">Opóźnienie DNS znacznie przekracza dopuszczalny próg</translation>
+<translation id="3328783797891415197">Test w toku</translation>
 <translation id="3369013195428705271">Czy na pewno chcesz usunąć całą historię drukowania? Bieżące zadania drukowania nie zostaną usunięte.</translation>
 <translation id="3456078764689556234">Wydrukowano stronę <ph name="PRINTED_PAGES" /> z <ph name="TOTAL_PAGES" />.</translation>
 <translation id="3459509316159669723">Drukowanie</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">Drukarka</translation>
 <translation id="4131410914670010031">Czarno-biały</translation>
 <translation id="4145784616224233563">Zapora sieciowa HTTP</translation>
+<translation id="4170700058716978431">NEGATYWNY</translation>
 <translation id="4227825898293920515">Hasło wygasa za <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Brak zadań drukowania w toku</translation>
 <translation id="4297501883039923494">Zatrzymano – nieznany błąd</translation>
@@ -105,17 +110,20 @@
 <translation id="4773299976671772492">Zatrzymano</translation>
 <translation id="4808449224298348341">Zadanie drukowania <ph name="DOCUMENT_TITLE" /> zostało anulowane</translation>
 <translation id="4832079907277790330">Wybierz Folder w aplikacji Pliki...</translation>
+<translation id="4848429997038228357">W TOKU</translation>
 <translation id="4890353053343094602">Jak najszybciej wybierz nowe.</translation>
 <translation id="4917889632206600977">Zatrzymano – brak papieru</translation>
 <translation id="4921665434385737356">Naładowano <ph name="RATE" /> w ciągu <ph name="NUM_SECONDS" /> s.</translation>
 <translation id="4932733599132424254">Data</translation>
 <translation id="4985509611418653372">Uruchom</translation>
+<translation id="500920857929044050">Zatrzymaj test</translation>
 <translation id="5154917547274118687">Pamięć</translation>
 <translation id="5168185087976003268">Kondycja baterii</translation>
 <translation id="520299634122159966">Brak dostępnych skanerów</translation>
 <translation id="5212543919916444558">Na Twoim ekranie nie ma nic, w czym mogę pomóc.
 Kliknij mikrofon i zadaj pytanie.</translation>
 <translation id="5222676887888702881">Wyloguj się</translation>
+<translation id="5264277876637023664">Przeprowadź test procesora</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">Uruchom ponownie testy</translation>
 <translation id="5317780077021120954">Zapisz</translation>
@@ -128,17 +136,22 @@
 <translation id="54609108002486618">Zarządzany</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">Dowiedz się więcej w Centrum pomocy</translation>
+<translation id="5635169860413004179">Wyświetl raport</translation>
 <translation id="5719918614880940190">To narzędzie mierzy obciążenie procesora (wszystkich rdzeni)</translation>
+<translation id="5797428682393400134">POZYTYWNY</translation>
 <translation id="5832805196449965646">Dodaj osobę</translation>
 <translation id="5895138241574237353">Uruchom ponownie</translation>
+<translation id="5931523347251946569">Nie znaleziono pliku</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, wersja <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">Zamknij</translation>
 <translation id="6048107060512778456">Niepowodzenie – zacięcie papieru</translation>
 <translation id="6050189528197190982">Skala odcieni szarości</translation>
 <translation id="6058625436358447366">Aby zakończyć, wpisz stare i nowe hasło</translation>
 <translation id="6061772781719867950">nieudane żądania HTTPS</translation>
+<translation id="6104112872696127344">Skanowanie zostało anulowane</translation>
 <translation id="6106186594183574873">Aby zakończyć, wpisz stare hasło</translation>
 <translation id="6108689792487843350">Brama jest nieosiągalna</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" /> GHz / <ph name="MAX" /> GHz</translation>
 <translation id="6146993107019042706">Aby zakończyć, wpisz nowe hasło</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">Dowiedz się więcej</translation>
@@ -149,6 +162,7 @@
 <translation id="649050271426829538">Zatrzymano – zacięcie papieru</translation>
 <translation id="6517239166834772319">Odkrywaj</translation>
 <translation id="6527081081771465939">Nieznany protokół zabezpieczeń Wi-Fi</translation>
+<translation id="6532051501443766164">Ukryj raport</translation>
 <translation id="65587193855025101">Szyba</translation>
 <translation id="6564646048574748301">Niepowodzenie – drukarka jest nieosiągalna</translation>
 <translation id="6618744767048954150">W toku</translation>
@@ -156,6 +170,7 @@
 <translation id="6643016212128521049">Wyczyść</translation>
 <translation id="6704062477274546131">Rozwiązywanie nazw DNS</translation>
 <translation id="6747215703636344499">Zatrzymano – odbiornik papieru jest pełny</translation>
+<translation id="6756731097889387912">Nie udało się anulować skanowania</translation>
 <translation id="6766275201586212568">błędy rozpoznawania nazw DNS</translation>
 <translation id="6768237774506518020">dużo błędów rozpoznania nazwy DNS</translation>
 <translation id="6839141349259399400">Nie możesz połączyć się ze skanerami?</translation>
@@ -171,6 +186,7 @@
 <translation id="7648838807254605802">duże opóźnienie HTTPS</translation>
 <translation id="7658239707568436148">Anuluj</translation>
 <translation id="7690294790491645610">Potwierdź nowe hasło</translation>
+<translation id="7732651821766520760">Test: <ph name="TEST_NAME" /></translation>
 <translation id="7805768142964895445">Stan</translation>
 <translation id="7855434858642800953">Zeskanowany plik został zapisany.</translation>
 <translation id="7928373994957558460">Pokaż lokalizację pliku</translation>
@@ -198,6 +214,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">Domyślny</translation>
 <translation id="8845001906332463065">Uzyskaj pomoc</translation>
+<translation id="8881098542468797602">Test zakończył się powodzeniem</translation>
 <translation id="8910721771319628100">Sieć domyślna przekroczyła próg opóźnienia</translation>
 <translation id="8919837981463578619">Niepowodzenie – nie znaleziono tacy</translation>
 <translation id="8928727111548978589">Niepowodzenie – brak papieru</translation>
@@ -207,4 +224,6 @@
 <translation id="910415269708673980">Odśwież bilet przypisany do konta <ph name="PRINCIPAL_NAME" />.</translation>
 <translation id="9106415115617144481">Skanowanie strony <ph name="PAGE_NUMBER" /></translation>
 <translation id="9111102763498581341">Odblokuj</translation>
+<translation id="9149391708638971077">Przeprowadź test pamięci</translation>
+<translation id="982713511914535780">Przeprowadź test rozładowywania</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb
index 7a7addf..a7bc34f 100644
--- a/chromeos/strings/chromeos_strings_sl.xtb
+++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" /> upravlja tega uporabnika in lahko na daljavo upravlja nastavitve ter nadzira dejavnost uporabnika.</translation>
 <translation id="150962533380566081">Neveljavna koda PUK.</translation>
 <translation id="1510238584712386396">Zaganjalnik</translation>
+<translation id="1621067168122174824">Zaženi preizkus napolnjenosti</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (št. niti: <ph name="THREAD_COUNT" />)</translation>
 <translation id="1641857168437328880">Podajalnik dokumentov (enostransko)</translation>
 <translation id="1644574205037202324">Zgodovina</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706391837335750954">Prisotnost razreševalnika DNS</translation>
 <translation id="1743558184855585519">Baterija se smatra kot izrabljena, ko doseže omejitev števila polnjenj.</translation>
+<translation id="1792647875738159689">Preklic optičnega branja</translation>
 <translation id="1905710495812624430">Preseženo je največje dovoljeno število dovoljenih poskusov.</translation>
 <translation id="1930797645656624981">Storitev načina vnosa v okolju OS Chrome</translation>
 <translation id="1947737735496445907">Natisnjeno</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">OSVEŽI</translation>
 <translation id="3009958530611748826">Izberite mapo za shranjevanje</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation>
+<translation id="3069085583900247081">Preizkus ni uspel</translation>
 <translation id="3083667275341675831">Diagnosticiranje povezav</translation>
 <translation id="3091839911843451378">Napaka – ustavljeno</translation>
 <translation id="3102119246920354026">Predpomnilnik</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">Izbrisana bodo tiskalna opravila, starejša od 1 dneva</translation>
 <translation id="3268178239013324452">Napaka – vrata so odprta</translation>
 <translation id="3310640316857623290">Zakasnitev DNS-ja je znatno nad dovoljenim pragom</translation>
+<translation id="3328783797891415197">Preizkus se izvaja</translation>
 <translation id="3369013195428705271">Ali ste prepričani, da želite izbrisati vso zgodovino tiskanja? Tiskalna opravila, ki potekajo, ne bodo izbrisana.</translation>
 <translation id="3456078764689556234">Natisnjena <ph name="PRINTED_PAGES" />. stran od <ph name="TOTAL_PAGES" />.</translation>
 <translation id="3459509316159669723">Tiskanje</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">Tiskalnik</translation>
 <translation id="4131410914670010031">Črno-belo</translation>
 <translation id="4145784616224233563">Požarni zid HTTP</translation>
+<translation id="4170700058716978431">NI USPEL</translation>
 <translation id="4227825898293920515">Geslo poteče čez toliko časa: <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Nobeno tiskalno opravilo ne poteka</translation>
 <translation id="4297501883039923494">Ustavljeno – neznana napaka</translation>
@@ -105,17 +110,20 @@
 <translation id="4773299976671772492">Ustavljeno</translation>
 <translation id="4808449224298348341">Preklicano tiskalno opravilo za dokument <ph name="DOCUMENT_TITLE" /></translation>
 <translation id="4832079907277790330">Izberite mapo v aplikaciji Datoteke ...</translation>
+<translation id="4848429997038228357">IZVAJANJE</translation>
 <translation id="4890353053343094602">Takoj izberite novo</translation>
 <translation id="4917889632206600977">Ustavljeno – zmanjkalo je papirja</translation>
 <translation id="4921665434385737356">Napolnjeno <ph name="RATE" /> v <ph name="NUM_SECONDS" /> s.</translation>
 <translation id="4932733599132424254">Datum</translation>
 <translation id="4985509611418653372">Izvedi</translation>
+<translation id="500920857929044050">Ustavi preizkus</translation>
 <translation id="5154917547274118687">Pomnilnik</translation>
 <translation id="5168185087976003268">Stanje baterije</translation>
 <translation id="520299634122159966">Ni razpoložljivih optičnih bralnikov</translation>
 <translation id="5212543919916444558">Na zaslonu ni ničesar uporabnega.
 Poskusite vprašati tako, da se dotaknete mikrofona.</translation>
 <translation id="5222676887888702881">Odjava</translation>
+<translation id="5264277876637023664">Zaženi preizkus CPE-ja</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">Znova zaženi rutine</translation>
 <translation id="5317780077021120954">Shrani</translation>
@@ -128,17 +136,22 @@
 <translation id="54609108002486618">Upravljan</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">Preberite več o tem v centru za pomoč.</translation>
+<translation id="5635169860413004179">Ogled poročila</translation>
 <translation id="5719918614880940190">Meri uporabo CPE-ja in predstavlja združene podatke za vsa jedra.</translation>
+<translation id="5797428682393400134">USPEH</translation>
 <translation id="5832805196449965646">Dodaj osebo</translation>
 <translation id="5895138241574237353">Znova zaženi</translation>
+<translation id="5931523347251946569">Datoteke ni bilo mogoče najti</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, različica <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">Zapri</translation>
 <translation id="6048107060512778456">Napaka – zastoj papirja</translation>
 <translation id="6050189528197190982">Sivine</translation>
 <translation id="6058625436358447366">Za dokončanje vnesite staro in novo geslo</translation>
 <translation id="6061772781719867950">Neuspele zahteve HTTP</translation>
+<translation id="6104112872696127344">Optično branje je preklicano</translation>
 <translation id="6106186594183574873">Za dokončanje vnesite staro geslo</translation>
 <translation id="6108689792487843350">Prehod ni dosegljiv</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" /> GHz/<ph name="MAX" /> GHz</translation>
 <translation id="6146993107019042706">Za dokončanje vnesite novo geslo</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">Več o tem</translation>
@@ -149,6 +162,7 @@
 <translation id="649050271426829538">Ustavljeno – zastoj papirja</translation>
 <translation id="6517239166834772319">Raziskovanje</translation>
 <translation id="6527081081771465939">Neznani varnostni protokol za Wi-Fi</translation>
+<translation id="6532051501443766164">Skrij poročilo</translation>
 <translation id="65587193855025101">Plosko</translation>
 <translation id="6564646048574748301">Napaka – tiskalnik je nedosegljiv</translation>
 <translation id="6618744767048954150">Preverjanje poteka</translation>
@@ -156,6 +170,7 @@
 <translation id="6643016212128521049">Izbriši</translation>
 <translation id="6704062477274546131">Razrešitev DNS-ja</translation>
 <translation id="6747215703636344499">Ustavljeno – izhodni pladenj je poln</translation>
+<translation id="6756731097889387912">Optičnega branja ni bilo mogoče preklicati</translation>
 <translation id="6766275201586212568">Neuspele razrešitve DNS</translation>
 <translation id="6768237774506518020">Visoko število napak pri razreševanju DNS</translation>
 <translation id="6839141349259399400">Ni mogoče vzpostaviti povezave z optičnimi bralniki?</translation>
@@ -171,6 +186,7 @@
 <translation id="7648838807254605802">Velika zakasnitev HTTPS</translation>
 <translation id="7658239707568436148">Prekliči</translation>
 <translation id="7690294790491645610">Potrdite novo geslo</translation>
+<translation id="7732651821766520760">Preizkus: <ph name="TEST_NAME" /></translation>
 <translation id="7805768142964895445">Stanje</translation>
 <translation id="7855434858642800953">Optično prebrana datoteka je shranjena.</translation>
 <translation id="7928373994957558460">Pokaži lokacijo datoteke</translation>
@@ -198,6 +214,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">Privzeto</translation>
 <translation id="8845001906332463065">Poiščite pomoč</translation>
+<translation id="8881098542468797602">Preizkus je uspel</translation>
 <translation id="8910721771319628100">Privzeto omrežje je nad pragom zakasnitve</translation>
 <translation id="8919837981463578619">Napaka – ni pladnja</translation>
 <translation id="8928727111548978589">Napaka – zmanjkalo je papirja</translation>
@@ -207,4 +224,6 @@
 <translation id="910415269708673980">Osvežite kartonček za <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="9106415115617144481">Optično branje <ph name="PAGE_NUMBER" />. strani</translation>
 <translation id="9111102763498581341">Odkleni</translation>
+<translation id="9149391708638971077">Zaženi preizkus pomnilnika</translation>
+<translation id="982713511914535780">Zaženi preizkus praznjenja</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_tr.xtb b/chromeos/strings/chromeos_strings_tr.xtb
index 489f67b..790045c 100644
--- a/chromeos/strings/chromeos_strings_tr.xtb
+++ b/chromeos/strings/chromeos_strings_tr.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" />, bu kullanıcıyı yönetir ve hem ayarları uzaktan yönetebilir hem de kullanıcı etkinliğini izleyebilir.</translation>
 <translation id="150962533380566081">Geçersiz PUK.</translation>
 <translation id="1510238584712386396">Başlatıcı</translation>
+<translation id="1621067168122174824">Şarj testini çalıştır</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> ileti dizisi)</translation>
 <translation id="1641857168437328880">Doküman Besleyici (Tek taraflı)</translation>
 <translation id="1644574205037202324">Geçmiş</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706391837335750954">DNS Çözümleyici Varlığı</translation>
 <translation id="1743558184855585519">Pil, şarj döngüsü sınırına ulaştığında ömrünü tamamladığı kabul edilir</translation>
+<translation id="1792647875738159689">Tarama iptal ediliyor</translation>
 <translation id="1905710495812624430">İzin verilen maksimum deneme sayısı aşıldı.</translation>
 <translation id="1930797645656624981">Chrome OS Giriş Yöntemi Hizmeti</translation>
 <translation id="1947737735496445907">Yazdırıldı</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">YENİLE</translation>
 <translation id="3009958530611748826">Kaydedilecek bir klasör seçin</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation>
+<translation id="3069085583900247081">Test başarısız oldu</translation>
 <translation id="3083667275341675831">Bağlantı Teşhisi</translation>
 <translation id="3091839911843451378">İşlem başarısız - Durdu</translation>
 <translation id="3102119246920354026">Önbellek</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">1 günden daha eski yazdırma işleri kaldırılır</translation>
 <translation id="3268178239013324452">İşlem başarısız - Kapak açık</translation>
 <translation id="3310640316857623290">DNS gecikmesi, izin verilen eşiğin çok üzerinde</translation>
+<translation id="3328783797891415197">Test çalışıyor</translation>
 <translation id="3369013195428705271">Tüm yazdırma geçmişini temizlemek istediğinizden emin misiniz? Devam eden yazdırma işleriniz silinmez.</translation>
 <translation id="3456078764689556234">Yazdırılan sayfa: <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" />.</translation>
 <translation id="3459509316159669723">Yazdırma</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">Yazıcı</translation>
 <translation id="4131410914670010031">Siyah beyaz</translation>
 <translation id="4145784616224233563">HTTP Güvenlik Duvarı</translation>
+<translation id="4170700058716978431">BAŞARISIZ</translation>
 <translation id="4227825898293920515">Şifrenin süresi <ph name="TIME" /> içinde doluyor</translation>
 <translation id="4238516577297848345">Devam eden bir yazdırma işi yok</translation>
 <translation id="4297501883039923494">Durduruldu - Bilinmeyen hata</translation>
@@ -105,17 +110,20 @@
 <translation id="4773299976671772492">Durduruldu</translation>
 <translation id="4808449224298348341"><ph name="DOCUMENT_TITLE" /> yazdırma işi iptal edildi</translation>
 <translation id="4832079907277790330">Dosyalar uygulamasında klasör seç...</translation>
+<translation id="4848429997038228357">ÇALIŞIYOR</translation>
 <translation id="4890353053343094602">Hemen yeni bir tane seçin</translation>
 <translation id="4917889632206600977">Durduruldu - Kağıt bitti</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> saniyede <ph name="RATE" /> şarj oldu</translation>
 <translation id="4932733599132424254">Tarih</translation>
 <translation id="4985509611418653372">Çalıştır</translation>
+<translation id="500920857929044050">Testi durdur</translation>
 <translation id="5154917547274118687">Bellek</translation>
 <translation id="5168185087976003268">Pil gücü</translation>
 <translation id="520299634122159966">Kullanılabilir tarayıcı yok</translation>
 <translation id="5212543919916444558">Ekranınızda size yardımcı olabileceğim bir şey bulamıyorum.
 Bana bir şey sormak için mikrofona dokunmayı deneyin.</translation>
 <translation id="5222676887888702881">Çıkış</translation>
+<translation id="5264277876637023664">CPU testini çalıştır</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">Rutinleri Tekrar Çalıştır</translation>
 <translation id="5317780077021120954">Kaydet</translation>
@@ -128,17 +136,22 @@
 <translation id="54609108002486618">Yönetilen</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">Yardım Merkezi'nden daha fazla bilgi edinebilirsiniz</translation>
+<translation id="5635169860413004179">Raporu Göster</translation>
 <translation id="5719918614880940190">Bu, tüm çekirdeklerin toplamı olup CPU kullanımını ölçer</translation>
+<translation id="5797428682393400134">BAŞARILI</translation>
 <translation id="5832805196449965646">Kişi Ekle</translation>
 <translation id="5895138241574237353">Yeniden başlat</translation>
+<translation id="5931523347251946569">Dosya bulunamadı</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, sürüm <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">Kapat</translation>
 <translation id="6048107060512778456">İşlem başarısız - Kağıt sıkışması</translation>
 <translation id="6050189528197190982">Gri Tonlama</translation>
 <translation id="6058625436358447366">Bitirmek için eski ve yeni şifrenizi girin</translation>
 <translation id="6061772781719867950">Başarısız HTTP istekleri</translation>
+<translation id="6104112872696127344">Tarama iptal edildi</translation>
 <translation id="6106186594183574873">Bitirmek için eski şifrenizi girin</translation>
 <translation id="6108689792487843350">Ağ geçidine ulaşılamıyor</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" /> GHz / <ph name="MAX" /> GHz</translation>
 <translation id="6146993107019042706">Bitirmek için yeni şifrenizi girin</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">Daha fazla bilgi</translation>
@@ -149,6 +162,7 @@
 <translation id="649050271426829538">Durduruldu - Kağıt sıkışması</translation>
 <translation id="6517239166834772319">Keşfet</translation>
 <translation id="6527081081771465939">Bilinmeyen kablosuz ağ güvenlik protokolü</translation>
+<translation id="6532051501443766164">Raporu gizle</translation>
 <translation id="65587193855025101">Düz Yataklı</translation>
 <translation id="6564646048574748301">İşlem başarısız - Yazıcıya ulaşılamıyor</translation>
 <translation id="6618744767048954150">Çalışıyor</translation>
@@ -156,6 +170,7 @@
 <translation id="6643016212128521049">Temizle</translation>
 <translation id="6704062477274546131">DNS Çözümlemesi</translation>
 <translation id="6747215703636344499">Durduruldu - Çıkış tepsisi dolu</translation>
+<translation id="6756731097889387912">Tarama iptal edilemedi</translation>
 <translation id="6766275201586212568">Başarısız DNS çözümlemeleri</translation>
 <translation id="6768237774506518020">DNS çözümleme hata oranı yüksek</translation>
 <translation id="6839141349259399400">Tarayıcılara bağlanamıyor musunuz?</translation>
@@ -171,6 +186,7 @@
 <translation id="7648838807254605802">Yüksek HTTPS gecikmesi</translation>
 <translation id="7658239707568436148">İptal</translation>
 <translation id="7690294790491645610">Yeni şifreyi doğrula</translation>
+<translation id="7732651821766520760"><ph name="TEST_NAME" /> Test</translation>
 <translation id="7805768142964895445">Durum</translation>
 <translation id="7855434858642800953">Taranan dosya kaydedildi</translation>
 <translation id="7928373994957558460">Dosya konumunu göster</translation>
@@ -198,6 +214,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">Varsayılan</translation>
 <translation id="8845001906332463065">Yardım alın</translation>
+<translation id="8881098542468797602">Test başarılı oldu</translation>
 <translation id="8910721771319628100">Varsayılan ağ, gecikme eşiğini aştı</translation>
 <translation id="8919837981463578619">İşlem başarısız - Tepsi yok</translation>
 <translation id="8928727111548978589">İşlem başarısız - Kağıt yok</translation>
@@ -207,4 +224,6 @@
 <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" /> için bileti yenileyin</translation>
 <translation id="9106415115617144481"><ph name="PAGE_NUMBER" />. sayfa taranıyor</translation>
 <translation id="9111102763498581341">Kilidi Aç</translation>
+<translation id="9149391708638971077">Bellek testini çalıştır</translation>
+<translation id="982713511914535780">Deşarj testini çalıştır</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_uk.xtb b/chromeos/strings/chromeos_strings_uk.xtb
index 6ff4e90..eaf2690 100644
--- a/chromeos/strings/chromeos_strings_uk.xtb
+++ b/chromeos/strings/chromeos_strings_uk.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" /> керує цим користувачем і може віддалено змінювати налаштування та відстежувати його дії.</translation>
 <translation id="150962533380566081">Недійсний PUK-код.</translation>
 <translation id="1510238584712386396">Панель запуску</translation>
+<translation id="1621067168122174824">Почати перевірку заряджання</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (потоків: <ph name="THREAD_COUNT" />)</translation>
 <translation id="1641857168437328880">Пристрій автоподачі документів (односторонній)</translation>
 <translation id="1644574205037202324">Історія</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706391837335750954">Є резолвер DNS</translation>
 <translation id="1743558184855585519">Після максимальної кількості циклів акумулятор вважається відпрацьованим</translation>
+<translation id="1792647875738159689">Скасування сканування</translation>
 <translation id="1905710495812624430">Перевищено максимальну кількість дозволених спроб.</translation>
 <translation id="1930797645656624981">Сервіс методів введення в ОС Chrome</translation>
 <translation id="1947737735496445907">Надруковано</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">ОНОВИТИ</translation>
 <translation id="3009958530611748826">Виберіть, у якій папці зберегти</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> мА</translation>
+<translation id="3069085583900247081">Не вдалося виконати перевірку</translation>
 <translation id="3083667275341675831">Діагностика з'єднання</translation>
 <translation id="3091839911843451378">Не надруковано – друк зупинено</translation>
 <translation id="3102119246920354026">Кеш</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">Завдання друку, старіші за 1 день, буде вилучено</translation>
 <translation id="3268178239013324452">Не надруковано – відкрито кришку принтера</translation>
 <translation id="3310640316857623290">Затримка DNS значно довша, ніж дозволено</translation>
+<translation id="3328783797891415197">Триває перевірка</translation>
 <translation id="3369013195428705271">Видалити всю історію друку? Поточні завдання друку збережуться.</translation>
 <translation id="3456078764689556234">Надруковано сторінку <ph name="PRINTED_PAGES" /> з <ph name="TOTAL_PAGES" />.</translation>
 <translation id="3459509316159669723">Друк</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">Принтер</translation>
 <translation id="4131410914670010031">Чорно-білий</translation>
 <translation id="4145784616224233563">Брандмауер HTTP</translation>
+<translation id="4170700058716978431">НЕ ВДАЛОСЯ ВИКОНАТИ</translation>
 <translation id="4227825898293920515">Термін дії пароля закінчиться через <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Немає активних завдань друку</translation>
 <translation id="4297501883039923494">Зупинено – невідома помилка</translation>
@@ -105,17 +110,20 @@
 <translation id="4773299976671772492">Зупинено</translation>
 <translation id="4808449224298348341">Завдання друку "<ph name="DOCUMENT_TITLE" />" скасовано</translation>
 <translation id="4832079907277790330">Вибрати папку в додатку "Файли"…</translation>
+<translation id="4848429997038228357">ТРИВАЄ</translation>
 <translation id="4890353053343094602">Негайно виберіть новий</translation>
 <translation id="4917889632206600977">Зупинено – закінчився папір</translation>
 <translation id="4921665434385737356">Акумулятор зарядився на <ph name="RATE" /> за <ph name="NUM_SECONDS" /> с.</translation>
 <translation id="4932733599132424254">Дата</translation>
 <translation id="4985509611418653372">Виконати</translation>
+<translation id="500920857929044050">Зупинити перевірку</translation>
 <translation id="5154917547274118687">Пам’ять</translation>
 <translation id="5168185087976003268">Стан акумулятора</translation>
 <translation id="520299634122159966">Немає доступних сканерів</translation>
 <translation id="5212543919916444558">На екрані не знайдено елементів, проблеми з якими я можу вирішити.
 Торкніться значка мікрофона, щоб поставити запитання.</translation>
 <translation id="5222676887888702881">Вийти</translation>
+<translation id="5264277876637023664">Виконати перевірку ЦП</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">Повторити програми</translation>
 <translation id="5317780077021120954">Зберегти</translation>
@@ -128,17 +136,22 @@
 <translation id="54609108002486618">Керований</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">Докладніше в довідковому центрі</translation>
+<translation id="5635169860413004179">Переглянути звіт</translation>
 <translation id="5719918614880940190">Показник використання ЦП, зведений для всіх ядер</translation>
+<translation id="5797428682393400134">ЗАВЕРШЕНО</translation>
 <translation id="5832805196449965646">Додати користувача</translation>
 <translation id="5895138241574237353">Перезапустити</translation>
+<translation id="5931523347251946569">Файл не знайдено</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, версія <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">Закрити</translation>
 <translation id="6048107060512778456">Не надруковано – зам'яло папір</translation>
 <translation id="6050189528197190982">Відтінки сірого</translation>
 <translation id="6058625436358447366">Щоб завершити, введіть старий і новий паролі</translation>
 <translation id="6061772781719867950">невдалі запити HTTPS</translation>
+<translation id="6104112872696127344">Сканування скасовано</translation>
 <translation id="6106186594183574873">Щоб завершити, введіть старий пароль</translation>
 <translation id="6108689792487843350">шлюз недоступний</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" /> ГГц / <ph name="MAX" /> ГГц</translation>
 <translation id="6146993107019042706">Щоб завершити, введіть новий пароль</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">Докладніше</translation>
@@ -149,6 +162,7 @@
 <translation id="649050271426829538">Зупинено – зам'яло папір</translation>
 <translation id="6517239166834772319">Можливості</translation>
 <translation id="6527081081771465939">Невідомий протокол безпеки Wi-Fi</translation>
+<translation id="6532051501443766164">Сховати звіт</translation>
 <translation id="65587193855025101">Планшетний сканер</translation>
 <translation id="6564646048574748301">Не надруковано – принтер недоступний</translation>
 <translation id="6618744767048954150">Виконується</translation>
@@ -156,6 +170,7 @@
 <translation id="6643016212128521049">Очистити</translation>
 <translation id="6704062477274546131">Розпізнавання DNS</translation>
 <translation id="6747215703636344499">Зупинено – вихідний лоток заповнений</translation>
+<translation id="6756731097889387912">Не вдалося скасувати сканування</translation>
 <translation id="6766275201586212568">невдалі перетворення DNS</translation>
 <translation id="6768237774506518020">велика частка збоїв під час перетворення DNS</translation>
 <translation id="6839141349259399400">Не вдається підключитися до сканерів?</translation>
@@ -171,6 +186,7 @@
 <translation id="7648838807254605802">велика затримка HTTPS</translation>
 <translation id="7658239707568436148">Скасувати</translation>
 <translation id="7690294790491645610">Підтвердьте новий пароль</translation>
+<translation id="7732651821766520760">Перевірка "<ph name="TEST_NAME" />"</translation>
 <translation id="7805768142964895445">Статус</translation>
 <translation id="7855434858642800953">Відсканований файл збережено.</translation>
 <translation id="7928373994957558460">Показати, де збережено файл</translation>
@@ -198,6 +214,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">За умовчанням</translation>
 <translation id="8845001906332463065">Отримати довідку</translation>
+<translation id="8881098542468797602">Перевірку завершено</translation>
 <translation id="8910721771319628100">Затримка мережі за умовчанням задовга</translation>
 <translation id="8919837981463578619">Не надруковано – немає лотка</translation>
 <translation id="8928727111548978589">Не надруковано – закінчився папір</translation>
@@ -207,4 +224,6 @@
 <translation id="910415269708673980">Оновити квиток для користувача <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="9106415115617144481">Сканування сторінки <ph name="PAGE_NUMBER" /></translation>
 <translation id="9111102763498581341">Розблокувати</translation>
+<translation id="9149391708638971077">Виконати перевірку пам'яті</translation>
+<translation id="982713511914535780">Виконати перевірку розряджання</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_ur.xtb b/chromeos/strings/chromeos_strings_ur.xtb
index 2666a56..b7b4071f 100644
--- a/chromeos/strings/chromeos_strings_ur.xtb
+++ b/chromeos/strings/chromeos_strings_ur.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" /> اس صارف کا نظم کرتا ہے اور دور سے ترتیبات کا نظم اور صارف کی سرگرمی کو مانیٹر کر سکتا ہے۔</translation>
 <translation id="150962533380566081">‏غلط PUK۔</translation>
 <translation id="1510238584712386396">لانچر</translation>
+<translation id="1621067168122174824">چارج ٹیسٹ چلائیں</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> تھریڈز)</translation>
 <translation id="1641857168437328880">دستاویز فیڈر (یک طرفہ)</translation>
 <translation id="1644574205037202324">سرگزشت</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706391837335750954">‏DNS ریزولور دستیاب ہے</translation>
 <translation id="1743558184855585519">بیٹری کو حد تک پہنچ جانے کے بعد استعمال کردہ مانا جاتا ہے</translation>
+<translation id="1792647875738159689">اسکین کا عمل منسوخ کیا جا رہا ہے</translation>
 <translation id="1905710495812624430">زیادہ سے زیادہ مجاز کوششوں سے تجاوز کرگیا۔</translation>
 <translation id="1930797645656624981">‏Chrome OS اندراج کے طریقہ کی سروس</translation>
 <translation id="1947737735496445907">پرنٹ ہو گیا</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">ریفریش کریں</translation>
 <translation id="3009958530611748826">محفوظ کرنے کے لئے فولڈر منتخب کریں</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation>
+<translation id="3069085583900247081">ٹیسٹ ناکام ہو گیا</translation>
 <translation id="3083667275341675831">کنیکٹویٹی ڈائيگناسٹکس</translation>
 <translation id="3091839911843451378">ناکام ہو گیا - رک گیا</translation>
 <translation id="3102119246920354026">کیش</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">1 دن سے پرانی پرنٹ جابز کو ہٹا دیا جائے گا</translation>
 <translation id="3268178239013324452">ناکام ہو گیا - دروازہ کھلا ہے</translation>
 <translation id="3310640316857623290">‏DNS تاخیر قابل اجازت حد سے نمایاں طور پر زیادہ ہے</translation>
+<translation id="3328783797891415197">ٹیسٹ جاری ہے</translation>
 <translation id="3369013195428705271">کیا آپ واقعی پرنٹ کی تمام سرگزشت کو صاف کرنا چاہتے ہیں؟ آپ کی جاری پرنٹ جابز کو صاف نہیں کیا جائے گا۔</translation>
 <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> میں سے <ph name="PRINTED_PAGES" /> پرنٹ کئے ہوئے صفحات۔</translation>
 <translation id="3459509316159669723">پرنٹ کیا جا رہا ہے</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">پرنٹر</translation>
 <translation id="4131410914670010031">سیاہ اور سفید</translation>
 <translation id="4145784616224233563">‏HTTP فائروال</translation>
+<translation id="4170700058716978431">ناکام</translation>
 <translation id="4227825898293920515">پاس ورڈ کی میعاد <ph name="TIME" /> میں ختم ہونے والی ہے</translation>
 <translation id="4238516577297848345">کوئی پرنٹ جاب پیشرفت میں نہیں</translation>
 <translation id="4297501883039923494">رک گیا - نامعلوم خرابی</translation>
@@ -105,16 +110,19 @@
 <translation id="4773299976671772492">روک دیا گیا</translation>
 <translation id="4808449224298348341"><ph name="DOCUMENT_TITLE" /> پرنٹ جاب منسوخ کر دی گئی</translation>
 <translation id="4832079907277790330">فائلز ایپ میں فولڈر منتخب کریں...</translation>
+<translation id="4848429997038228357">جاری ہے</translation>
 <translation id="4890353053343094602">فوری طور پر نیا پاس ورڈ منتخب کریں</translation>
 <translation id="4917889632206600977">رک گیا - کاغذ ختم ہو گیا</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> سیکنڈ میں <ph name="RATE" /> چارج کیا گیا۔</translation>
 <translation id="4932733599132424254">تاریخ</translation>
 <translation id="4985509611418653372">چلائیں</translation>
+<translation id="500920857929044050">ٹیسٹ روکیں</translation>
 <translation id="5154917547274118687">میموری</translation>
 <translation id="5168185087976003268">بیٹری کی صحت</translation>
 <translation id="520299634122159966">کوئی اسکینرز دستیاب نہیں ہے</translation>
 <translation id="5212543919916444558">مجھے آپ کی اسکرین پر ایسا کچھ نہیں ملا جس سے متعلق میں آپ کی مدد کر سکوں۔ مجھ سے کچھ بھی پوچھنے کے لیے مائیک کو تھپتھپانے کی کوشش کریں۔</translation>
 <translation id="5222676887888702881">سائن آؤٹ</translation>
+<translation id="5264277876637023664">‏CPU ٹیسٹ چلائیں</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">روٹینز کو دوبارہ چلائیں</translation>
 <translation id="5317780077021120954">محفوظ کریں</translation>
@@ -127,17 +135,22 @@
 <translation id="54609108002486618">نظم کردہ</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">مرکز امداد میں مزید جانیں</translation>
+<translation id="5635169860413004179">رپورٹ دیکھیں</translation>
 <translation id="5719918614880940190">‏اس سے CPU استعمال کی پیمائش ہوتی ہے اور یہ سبھی کورز کا مجموعہ ہے</translation>
+<translation id="5797428682393400134">کامیاب</translation>
 <translation id="5832805196449965646">شخص کو شامل کریں</translation>
 <translation id="5895138241574237353">دوبارہ شروع کریں</translation>
+<translation id="5931523347251946569">فائل نہیں ملی</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />، ورژن <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">بند کریں</translation>
 <translation id="6048107060512778456">ناکام ہو گیا - پیپر جام</translation>
 <translation id="6050189528197190982">گرے اسکیل</translation>
 <translation id="6058625436358447366">مکمل کرنے کے لئے اپنے پرانے اور نئے پاس ورڈز درج کریں</translation>
 <translation id="6061772781719867950">‏ناکام HTTP درخواستیں</translation>
+<translation id="6104112872696127344">اسکین کا عمل منسوخ کر دیا گیا</translation>
 <translation id="6106186594183574873">مکمل کرنے کے لئے اپنا پرانا پاس ورڈ درج کریں</translation>
 <translation id="6108689792487843350">گیٹ وے ناقابل رسائی ہے</translation>
+<translation id="6114428539405324828">‎<ph name="CURRENT" />GHz / <ph name="MAX" />GHz</translation>
 <translation id="6146993107019042706">مکمل کرنے کے لئے اپنا نیا پاس ورڈ درج کریں</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">مزید جانیں</translation>
@@ -148,6 +161,7 @@
 <translation id="649050271426829538">رک گیا - پیپر جام</translation>
 <translation id="6517239166834772319">دریافت</translation>
 <translation id="6527081081771465939">‏نامعلوم WiFi سیکیورٹی پروٹوکول</translation>
+<translation id="6532051501443766164">رپورٹ چھپائیں</translation>
 <translation id="65587193855025101">فلیٹ بیڈ</translation>
 <translation id="6564646048574748301">ناکام ہو گیا - پرنٹر ناقابل رسائی ہے</translation>
 <translation id="6618744767048954150">جاری ہے</translation>
@@ -155,6 +169,7 @@
 <translation id="6643016212128521049">صاف کریں</translation>
 <translation id="6704062477274546131">‏DNS ریزولیوشن</translation>
 <translation id="6747215703636344499">رک گیا - آؤٹ پٹ بھر گیا ہے</translation>
+<translation id="6756731097889387912">اسکین کا عمل منسوخ نہیں کیا جا سکا</translation>
 <translation id="6766275201586212568">‏ناکام DNS ریزولیوشنز</translation>
 <translation id="6768237774506518020">‏DNS ریزولیوشن ناکام ہونے کی زیادہ شرح</translation>
 <translation id="6839141349259399400">اسکینرز کے ساتھ منسلک نہیں کیا جا سکتا؟</translation>
@@ -170,6 +185,7 @@
 <translation id="7648838807254605802">‏زیادہ HTTPS تاخیر</translation>
 <translation id="7658239707568436148">منسوخ کریں</translation>
 <translation id="7690294790491645610">نئے پاس ورڈ کی توثیق کریں</translation>
+<translation id="7732651821766520760"><ph name="TEST_NAME" /> ٹیسٹ</translation>
 <translation id="7805768142964895445">صورتحال</translation>
 <translation id="7855434858642800953">اسکین کردہ فائل محفوظ ہو گئی!</translation>
 <translation id="7928373994957558460">فائل کا مقام دکھائیں</translation>
@@ -197,12 +213,16 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">ڈیفالٹ</translation>
 <translation id="8845001906332463065">مدد حاصل کریں</translation>
+<translation id="8881098542468797602">ٹیسٹ کامیاب ہو گیا</translation>
 <translation id="8910721771319628100">تاخیر کی حد کے اوپر ڈیفالٹ نیٹ ورک</translation>
 <translation id="8919837981463578619">ناکام ہو گیا - ٹرے موجود نہیں ہے</translation>
 <translation id="8928727111548978589">ناکام ہو گیا - کاغذ ختم ہو گیا</translation>
 <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> <ph name="ATTEMPTS_LEFT" /> کوششیں باقی ہیں</translation>
+<translation id="8970109610781093811">دوبارہ چلائيں</translation>
 <translation id="9088306295921699330">حالیہ استعمال</translation>
 <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" /> کے لیے ٹکٹ ریفریش کریں</translation>
 <translation id="9106415115617144481">اسکین شدہ صفحہ <ph name="PAGE_NUMBER" /></translation>
 <translation id="9111102763498581341">غیر مقفل کریں</translation>
+<translation id="9149391708638971077">میموری ٹیسٹ چلائیں</translation>
+<translation id="982713511914535780">ڈسچارج ٹیسٹ چلائیں</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_zh-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb
index 1c6e932..ebc04aa 100644
--- a/chromeos/strings/chromeos_strings_zh-HK.xtb
+++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" /> 管理此使用者,並可能會遠端管理設定並監察使用者活動。</translation>
 <translation id="150962533380566081">PUK 無效。</translation>
 <translation id="1510238584712386396">啟動器</translation>
+<translation id="1621067168122174824">執行充電測試</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> 個執行緒)</translation>
 <translation id="1641857168437328880">文件送紙器 (單面)</translation>
 <translation id="1644574205037202324">記錄</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706391837335750954">DNS 解析器存在</translation>
 <translation id="1743558184855585519">當電池到達上限時,即表示已耗盡電力</translation>
+<translation id="1792647875738159689">取消掃瞄中</translation>
 <translation id="1905710495812624430">允許的嘗試次數超過上限。</translation>
 <translation id="1930797645656624981">Chrome 作業系統輸入方法服務</translation>
 <translation id="1947737735496445907">已列印</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">更新</translation>
 <translation id="3009958530611748826">選取儲存的資料夾</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation>
+<translation id="3069085583900247081">未通過測試</translation>
 <translation id="3083667275341675831">連接性診斷</translation>
 <translation id="3091839911843451378">失敗 - 已停止</translation>
 <translation id="3102119246920354026">快取</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">超過 1 天前的列印工作將被移除</translation>
 <translation id="3268178239013324452">失敗 - 機蓋未關</translation>
 <translation id="3310640316857623290">DNS 延遲時間大幅超過允許的門檻</translation>
+<translation id="3328783797891415197">測試執行中</translation>
 <translation id="3369013195428705271">您確定要清除所有列印記錄嗎?系統不會清除進行中的列印工作。</translation>
 <translation id="3456078764689556234">印咗 <ph name="PRINTED_PAGES" /> 頁,總共有 <ph name="TOTAL_PAGES" /> 頁。</translation>
 <translation id="3459509316159669723">列印</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">打印機</translation>
 <translation id="4131410914670010031">黑白</translation>
 <translation id="4145784616224233563">HTTP 防火牆</translation>
+<translation id="4170700058716978431">失敗</translation>
 <translation id="4227825898293920515">密碼在 <ph name="TIME" />後到期</translation>
 <translation id="4238516577297848345">沒有進行中的列印工作</translation>
 <translation id="4297501883039923494">已停止 - 不明錯誤</translation>
@@ -105,17 +110,20 @@
 <translation id="4773299976671772492">已停止</translation>
 <translation id="4808449224298348341">取消咗列印工作 <ph name="DOCUMENT_TITLE" /></translation>
 <translation id="4832079907277790330">在「檔案」應用程式中選取資料夾...</translation>
+<translation id="4848429997038228357">執行中</translation>
 <translation id="4890353053343094602">立即選擇新密碼</translation>
 <translation id="4917889632206600977">已停止 - 紙張已用完</translation>
 <translation id="4921665434385737356">已在 <ph name="NUM_SECONDS" /> 秒內充電 <ph name="RATE" />。</translation>
 <translation id="4932733599132424254">日期</translation>
 <translation id="4985509611418653372">執行</translation>
+<translation id="500920857929044050">停止測試</translation>
 <translation id="5154917547274118687">記憶體</translation>
 <translation id="5168185087976003268">電池狀態</translation>
 <translation id="520299634122159966">沒有可用的掃瞄器</translation>
 <translation id="5212543919916444558">系統在您的畫面上找不到任何可提供協助的內容。
 請嘗試輕按麥克風並發問。</translation>
 <translation id="5222676887888702881">登出</translation>
+<translation id="5264277876637023664">執行 CPU 測試</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />,<ph name="PRINTER_NAME" />,<ph name="CREATION_TIME" />,<ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">重新執行日常安排</translation>
 <translation id="5317780077021120954">儲存</translation>
@@ -128,17 +136,22 @@
 <translation id="54609108002486618">受管理</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />:<ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">詳情請瀏覽說明中心</translation>
+<translation id="5635169860413004179">查看報告</translation>
 <translation id="5719918614880940190">此數據測量 CPU 使用情況,並且為所有核心的彙整資料</translation>
+<translation id="5797428682393400134">成功</translation>
 <translation id="5832805196449965646">新增使用者</translation>
 <translation id="5895138241574237353">重新啟動</translation>
+<translation id="5931523347251946569">找不到檔案</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />,版本 <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">關閉</translation>
 <translation id="6048107060512778456">失敗 - 卡紙</translation>
 <translation id="6050189528197190982">灰階</translation>
 <translation id="6058625436358447366">如要完成變更,請輸入您的舊密碼和新密碼</translation>
 <translation id="6061772781719867950">HTTP 要求失敗</translation>
+<translation id="6104112872696127344">掃瞄已取消</translation>
 <translation id="6106186594183574873">如要完成變更,請輸入您的舊密碼</translation>
 <translation id="6108689792487843350">無法連接閘道</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" /> GHz/<ph name="MAX" /> GHz</translation>
 <translation id="6146993107019042706">如要完成變更,請輸入您的新密碼</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">瞭解更多資料</translation>
@@ -149,6 +162,7 @@
 <translation id="649050271426829538">已停止 - 卡紙</translation>
 <translation id="6517239166834772319">探索</translation>
 <translation id="6527081081771465939">未知的 Wi-Fi 安全通訊協定</translation>
+<translation id="6532051501443766164">隱藏報告</translation>
 <translation id="65587193855025101">平台式</translation>
 <translation id="6564646048574748301">失敗 - 無法連接打印機</translation>
 <translation id="6618744767048954150">正在執行</translation>
@@ -156,6 +170,7 @@
 <translation id="6643016212128521049">清除</translation>
 <translation id="6704062477274546131">DNS 解析</translation>
 <translation id="6747215703636344499">已停止 - 輸出紙匣已滿</translation>
+<translation id="6756731097889387912">無法取消掃瞄</translation>
 <translation id="6766275201586212568">DNS 解析失敗</translation>
 <translation id="6768237774506518020">DNS 解析失敗率高</translation>
 <translation id="6839141349259399400">無法連接至掃瞄器嗎?</translation>
@@ -171,6 +186,7 @@
 <translation id="7648838807254605802">HTTPS 延遲時間長</translation>
 <translation id="7658239707568436148">取消</translation>
 <translation id="7690294790491645610">確認新密碼</translation>
+<translation id="7732651821766520760"><ph name="TEST_NAME" />測試</translation>
 <translation id="7805768142964895445">狀態</translation>
 <translation id="7855434858642800953">已儲存掃瞄的檔案!</translation>
 <translation id="7928373994957558460">顯示檔案位置</translation>
@@ -198,6 +214,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">預設</translation>
 <translation id="8845001906332463065">取得說明</translation>
+<translation id="8881098542468797602">已通過測試</translation>
 <translation id="8910721771319628100">預設網絡超過延遲門檻</translation>
 <translation id="8919837981463578619">失敗 - 沒有紙匣</translation>
 <translation id="8928727111548978589">失敗 - 紙張已用完</translation>
@@ -207,4 +224,6 @@
 <translation id="910415269708673980">更新 <ph name="PRINCIPAL_NAME" /> 的票證</translation>
 <translation id="9106415115617144481">正在掃瞄第 <ph name="PAGE_NUMBER" /> 頁</translation>
 <translation id="9111102763498581341">解鎖</translation>
+<translation id="9149391708638971077">執行記憶體測試</translation>
+<translation id="982713511914535780">執行放電測試</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_zh-TW.xtb b/chromeos/strings/chromeos_strings_zh-TW.xtb
index f8af2ef..955ecbc 100644
--- a/chromeos/strings/chromeos_strings_zh-TW.xtb
+++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -22,6 +22,7 @@
 <translation id="1499900233129743732"><ph name="MANAGER" /> 管理這位使用者,且可從遠端管理設定及監控使用者活動。</translation>
 <translation id="150962533380566081">PUK 無效。</translation>
 <translation id="1510238584712386396">啟動器</translation>
+<translation id="1621067168122174824">執行充電測試</translation>
 <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> 個執行緒)</translation>
 <translation id="1641857168437328880">文件送紙器 (單面)</translation>
 <translation id="1644574205037202324">歷史記錄</translation>
@@ -29,6 +30,7 @@
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706391837335750954">DNS 解析器存在</translation>
 <translation id="1743558184855585519">一旦電池的充電循環次數達到上限,即表示電池壽命已盡</translation>
+<translation id="1792647875738159689">正在取消掃描</translation>
 <translation id="1905710495812624430">超過嘗試次數上限。</translation>
 <translation id="1930797645656624981">Chrome 作業系統輸入法服務</translation>
 <translation id="1947737735496445907">已列印</translation>
@@ -53,6 +55,7 @@
 <translation id="3008341117444806826">更新</translation>
 <translation id="3009958530611748826">選取要儲存掃描檔的資料夾</translation>
 <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation>
+<translation id="3069085583900247081">未通過測試</translation>
 <translation id="3083667275341675831">連線診斷工具</translation>
 <translation id="3091839911843451378">失敗 - 已停止</translation>
 <translation id="3102119246920354026">快取</translation>
@@ -62,6 +65,7 @@
 <translation id="3246869037381808805">系統會移除 1 天前的列印工作</translation>
 <translation id="3268178239013324452">失敗 - 蓋子處於開啟狀態</translation>
 <translation id="3310640316857623290">DNS 延遲時間大幅超過允許的門檻</translation>
+<translation id="3328783797891415197">正在執行測試</translation>
 <translation id="3369013195428705271">確定要清除所有列印記錄嗎?系統不會清除進行中的列印工作。</translation>
 <translation id="3456078764689556234">已列印 <ph name="PRINTED_PAGES" /> 頁 (共 <ph name="TOTAL_PAGES" /> 頁)。</translation>
 <translation id="3459509316159669723">列印</translation>
@@ -81,6 +85,7 @@
 <translation id="4034824040120875894">印表機</translation>
 <translation id="4131410914670010031">黑白</translation>
 <translation id="4145784616224233563">HTTP 防火牆</translation>
+<translation id="4170700058716978431">失敗</translation>
 <translation id="4227825898293920515">密碼將在 <ph name="TIME" />後到期</translation>
 <translation id="4238516577297848345">沒有任何進行中的列印工作</translation>
 <translation id="4297501883039923494">已停止 - 不明的錯誤</translation>
@@ -105,17 +110,20 @@
 <translation id="4773299976671772492">已停止</translation>
 <translation id="4808449224298348341">已取消列印工作「<ph name="DOCUMENT_TITLE" />」</translation>
 <translation id="4832079907277790330">在「檔案」應用程式中選取資料夾...</translation>
+<translation id="4848429997038228357">執行中</translation>
 <translation id="4890353053343094602">立即選擇新密碼</translation>
 <translation id="4917889632206600977">已停止 - 紙張用盡</translation>
 <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> 秒內已充電 <ph name="RATE" />。</translation>
 <translation id="4932733599132424254">日期</translation>
 <translation id="4985509611418653372">執行</translation>
+<translation id="500920857929044050">停止測試</translation>
 <translation id="5154917547274118687">記憶體</translation>
 <translation id="5168185087976003268">電池壽命</translation>
 <translation id="520299634122159966">沒有可用的掃描器</translation>
 <translation id="5212543919916444558">系統在你的畫面上找不到任何能提供協助的內容。
 請輕觸麥克風圖示,直接說出你的問題。</translation>
 <translation id="5222676887888702881">登出</translation>
+<translation id="5264277876637023664">執行 CPU 測試</translation>
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />,<ph name="PRINTER_NAME" />,<ph name="CREATION_TIME" />,<ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">返回日常診斷</translation>
 <translation id="5317780077021120954">儲存</translation>
@@ -128,17 +136,22 @@
 <translation id="54609108002486618">受管理</translation>
 <translation id="5493614766091057239"><ph name="VERDICT" />:<ph name="PROBLEMS" /></translation>
 <translation id="5551702563755460533">前往說明中心瞭解詳情</translation>
+<translation id="5635169860413004179">查看報告</translation>
 <translation id="5719918614880940190">這項數據測量的是 CPU 用量,並顯示所有核心的匯總值</translation>
+<translation id="5797428682393400134">成功</translation>
 <translation id="5832805196449965646">新增使用者</translation>
 <translation id="5895138241574237353">重新啟動</translation>
+<translation id="5931523347251946569">找不到檔案</translation>
 <translation id="5982592372228113572">(<ph name="BOARD_NAME" />,版本 <ph name="MILESTONE_VERSION" />)</translation>
 <translation id="6040143037577758943">關閉</translation>
 <translation id="6048107060512778456">失敗 - 卡紙</translation>
 <translation id="6050189528197190982">灰階</translation>
 <translation id="6058625436358447366">如要完成變更,請輸入你的舊密碼和新密碼</translation>
 <translation id="6061772781719867950">HTTPS 要求失敗</translation>
+<translation id="6104112872696127344">已取消掃描作業</translation>
 <translation id="6106186594183574873">如要完成變更,請輸入你的舊密碼</translation>
 <translation id="6108689792487843350">無法連上閘道</translation>
+<translation id="6114428539405324828"><ph name="CURRENT" /> GHz/<ph name="MAX" /> GHz</translation>
 <translation id="6146993107019042706">如要完成變更,請輸入你的新密碼</translation>
 <translation id="6147514244879357420">PNG</translation>
 <translation id="6165508094623778733">瞭解詳情</translation>
@@ -149,6 +162,7 @@
 <translation id="649050271426829538">已停止 - 卡紙</translation>
 <translation id="6517239166834772319">探索</translation>
 <translation id="6527081081771465939">Wi-Fi 安全通訊協定不明</translation>
+<translation id="6532051501443766164">隱藏報告</translation>
 <translation id="65587193855025101">平台式</translation>
 <translation id="6564646048574748301">失敗 - 無法連上印表機</translation>
 <translation id="6618744767048954150">檢查中</translation>
@@ -156,6 +170,7 @@
 <translation id="6643016212128521049">清除</translation>
 <translation id="6704062477274546131">DNS 解析</translation>
 <translation id="6747215703636344499">已停止 - 輸出紙匣已滿</translation>
+<translation id="6756731097889387912">無法取消掃描</translation>
 <translation id="6766275201586212568">DNS 解析失敗</translation>
 <translation id="6768237774506518020">高 DNS 解析失敗率</translation>
 <translation id="6839141349259399400">無法連線至掃描器嗎?</translation>
@@ -171,6 +186,7 @@
 <translation id="7648838807254605802">高 HTTPS 延遲</translation>
 <translation id="7658239707568436148">取消</translation>
 <translation id="7690294790491645610">確認新密碼</translation>
+<translation id="7732651821766520760">「<ph name="TEST_NAME" />」測試</translation>
 <translation id="7805768142964895445">狀態</translation>
 <translation id="7855434858642800953">已儲存掃描好的檔案!</translation>
 <translation id="7928373994957558460">顯示檔案位置</translation>
@@ -198,6 +214,7 @@
 <translation id="877985182522063539">A4</translation>
 <translation id="8798099450830957504">預設</translation>
 <translation id="8845001906332463065">尋求協助</translation>
+<translation id="8881098542468797602">已通過測試</translation>
 <translation id="8910721771319628100">預設網路超過延遲門檻</translation>
 <translation id="8919837981463578619">失敗 - 缺少紙匣</translation>
 <translation id="8928727111548978589">失敗 - 紙張用盡</translation>
@@ -207,4 +224,6 @@
 <translation id="910415269708673980">更新 <ph name="PRINCIPAL_NAME" /> 的票證</translation>
 <translation id="9106415115617144481">正在掃描第 <ph name="PAGE_NUMBER" /> 頁</translation>
 <translation id="9111102763498581341">解除鎖定</translation>
+<translation id="9149391708638971077">執行記憶體測試</translation>
+<translation id="982713511914535780">執行放電測試</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/BUILD.gn b/components/BUILD.gn
index 7663b64..18d8d83 100644
--- a/components/BUILD.gn
+++ b/components/BUILD.gn
@@ -461,7 +461,10 @@
   }
 
   if (safe_browsing_mode == 1) {
-    deps += [ "//components/safe_browsing/content/renderer/phishing_classifier:unit_tests" ]
+    deps += [
+      "//components/safe_browsing/content/browser:client_side_model_loader_unittest",
+      "//components/safe_browsing/content/renderer/phishing_classifier:unit_tests",
+    ]
   }
 
   if (use_dbus) {
diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/ChromeImageViewPreference.java b/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/ChromeImageViewPreference.java
index bd42081e..222f103 100644
--- a/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/ChromeImageViewPreference.java
+++ b/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/ChromeImageViewPreference.java
@@ -49,6 +49,8 @@
     private int mContentDescriptionRes;
     // Whether the ImageView should be enabled.
     private boolean mImageViewEnabled = true;
+    // The ImageView Button.
+    private ImageView mButton;
 
     /**
      * Constructor for use in Java.
@@ -80,23 +82,13 @@
     public void onBindViewHolder(PreferenceViewHolder holder) {
         super.onBindViewHolder(holder);
 
-        ImageView button = (ImageView) holder.findViewById(R.id.image_view_widget);
-        View view = holder.itemView;
+        mButton = (ImageView) holder.findViewById(R.id.image_view_widget);
+        mButton.setBackgroundColor(Color.TRANSPARENT);
+        mButton.setVisibility(View.VISIBLE);
 
-        if (mImageRes != 0) {
-            Drawable buttonImg = SettingsUtils.getTintedIcon(getContext(), mImageRes, mColorRes);
-            button.setImageDrawable(buttonImg);
-            button.setBackgroundColor(Color.TRANSPARENT);
-            button.setVisibility(View.VISIBLE);
-            button.setEnabled(mImageViewEnabled);
-            if (mImageViewEnabled) button.setOnClickListener(mListener);
-
-            if (mContentDescriptionRes != 0) {
-                button.setContentDescription(view.getResources().getString(mContentDescriptionRes));
-            }
-        }
-
-        ManagedPreferencesUtils.onBindViewToImageViewPreference(mManagedPrefDelegate, this, view);
+        configureImageView();
+        ManagedPreferencesUtils.onBindViewToImageViewPreference(
+                mManagedPrefDelegate, this, holder.itemView);
     }
 
     @Override
@@ -114,6 +106,7 @@
         mImageRes = imageRes;
         mContentDescriptionRes = contentDescriptionRes;
         mListener = listener;
+        configureImageView();
         notifyChanged();
     }
 
@@ -122,14 +115,20 @@
      * @param colorRes
      */
     public void setImageColor(@ColorRes int colorRes) {
+        if (mColorRes == colorRes) return;
+
         mColorRes = colorRes;
+        configureImageView();
     }
 
     /**
      * Enables/Disables the ImageView, allowing for clicks to pass through (when disabled).
      */
     public void setImageViewEnabled(boolean enabled) {
+        if (mImageViewEnabled == enabled) return;
+
         mImageViewEnabled = enabled;
+        configureImageView();
     }
 
     /**
@@ -142,4 +141,18 @@
         return mManagedPrefDelegate.isPreferenceControlledByPolicy(this)
                 || mManagedPrefDelegate.isPreferenceControlledByCustodian(this);
     }
+
+    private void configureImageView() {
+        if (mImageRes == 0 || mButton == null) return;
+
+        Drawable buttonImg = SettingsUtils.getTintedIcon(getContext(), mImageRes, mColorRes);
+        mButton.setImageDrawable(buttonImg);
+        mButton.setEnabled(mImageViewEnabled);
+
+        if (mImageViewEnabled) mButton.setOnClickListener(mListener);
+
+        if (mContentDescriptionRes != 0) {
+            mButton.setContentDescription(mButton.getResources().getString(mContentDescriptionRes));
+        }
+    }
 }
diff --git a/components/enterprise/common/proto/connectors.proto b/components/enterprise/common/proto/connectors.proto
index a49072a..21b4b64 100644
--- a/components/enterprise/common/proto/connectors.proto
+++ b/components/enterprise/common/proto/connectors.proto
@@ -88,6 +88,16 @@
     }
     optional Status status = 2;
 
+    message CustomMessage {
+      // An admin-provided url that should lead to a page where the user can
+      // learn more about the restrictions in place in their organization.
+      optional string learn_more_url = 1;
+      // An admin-provided message that will be shown to the user when a scan
+      // results is not clean. This message should not be more than 200
+      // characters long.
+      optional string message = 2;
+    }
+
     // Identifies the detection rules that were triggered by the analysis.
     // Only relevant when status is SUCCESS.
     message TriggeredRule {
@@ -100,9 +110,20 @@
       optional Action action = 1;
       optional string rule_name = 2;
       optional string rule_id = 3;
+      // This field contains a custom message that is specific to the rules
+      // triggered by this scan, if any. This messages can be shown in addition
+      // to the OU-based message found in the client-side policy or at the
+      // top-level of the Result message.
+      optional CustomMessage custom_message = 4;
     }
     repeated TriggeredRule triggered_rules = 3;
 
+    // This field is meant to override the OU-based custom messages set in the
+    // client-side policies. When the result requires a
+    // warning, if this field has a value it's the one that will be displayed to
+    // the user, otherwise the client-side policy's custom message will be used.
+    optional CustomMessage custom_message = 7;
+
     // TODO(crbug.com/1147036): Remove fields 4-6 once a definitive approach is
     // agreed upon.
     optional string malware_family = 4;
diff --git a/components/exo/data_exchange_delegate.h b/components/exo/data_exchange_delegate.h
index b33fcbc..249cddf 100644
--- a/components/exo/data_exchange_delegate.h
+++ b/components/exo/data_exchange_delegate.h
@@ -22,6 +22,7 @@
 
 namespace ui {
 struct FileInfo;
+class OSExchangeData;
 }  // namespace ui
 
 namespace exo {
@@ -32,6 +33,10 @@
  public:
   virtual ~DataExchangeDelegate() {}
 
+  // Sets the source of `os_exchange_data` according to the `target` window.
+  virtual void SetExchangeDataSource(aura::Window* target,
+                                     ui::OSExchangeData* os_exchange_data) = 0;
+
   // Read filenames from |data| which was provided by source window |source|.
   // Translates paths from source to host format.
   virtual std::vector<ui::FileInfo> GetFilenames(
diff --git a/components/exo/drag_drop_operation.cc b/components/exo/drag_drop_operation.cc
index 7d07306..92e5bec 100644
--- a/components/exo/drag_drop_operation.cc
+++ b/components/exo/drag_drop_operation.cc
@@ -18,6 +18,7 @@
 #include "components/viz/common/frame_sinks/copy_output_request.h"
 #include "components/viz/common/frame_sinks/copy_output_result.h"
 #include "ui/aura/client/drag_drop_client.h"
+#include "ui/base/data_transfer_policy/data_transfer_endpoint.h"
 #include "ui/base/dragdrop/drag_drop_types.h"
 #include "ui/base/dragdrop/file_info/file_info.h"
 #include "ui/base/dragdrop/os_exchange_data.h"
@@ -183,6 +184,9 @@
 
   drag_drop_controller_->AddObserver(this);
 
+  data_exchange_delegate->SetExchangeDataSource(origin_->get()->window(),
+                                                os_exchange_data_.get());
+
 #if BUILDFLAG(IS_CHROMEOS_ASH)
   extended_drag_source_ = ExtendedDragSource::Get();
   if (extended_drag_source_) {
diff --git a/components/exo/test/exo_test_data_exchange_delegate.cc b/components/exo/test/exo_test_data_exchange_delegate.cc
index 9b57d2e..23206e6 100644
--- a/components/exo/test/exo_test_data_exchange_delegate.cc
+++ b/components/exo/test/exo_test_data_exchange_delegate.cc
@@ -23,6 +23,10 @@
 
 TestDataExchangeDelegate::~TestDataExchangeDelegate() = default;
 
+void TestDataExchangeDelegate::SetExchangeDataSource(
+    aura::Window* target,
+    ui::OSExchangeData* os_exchange_data) {}
+
 std::vector<ui::FileInfo> TestDataExchangeDelegate::GetFilenames(
     aura::Window* source,
     const std::vector<uint8_t>& data) const {
diff --git a/components/exo/test/exo_test_data_exchange_delegate.h b/components/exo/test/exo_test_data_exchange_delegate.h
index 93a5a4d..fd52c929 100644
--- a/components/exo/test/exo_test_data_exchange_delegate.h
+++ b/components/exo/test/exo_test_data_exchange_delegate.h
@@ -19,6 +19,8 @@
   ~TestDataExchangeDelegate() override;
 
   // DataExchangeDelegate:
+  void SetExchangeDataSource(aura::Window* target,
+                             ui::OSExchangeData* os_exchange_data) override;
   std::vector<ui::FileInfo> GetFilenames(
       aura::Window* source,
       const std::vector<uint8_t>& data) const override;
diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoCookiesPreference.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoCookiesPreference.java
index 0dc23a4..bac04199 100644
--- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoCookiesPreference.java
+++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoCookiesPreference.java
@@ -32,6 +32,8 @@
     private ChromeImageViewPreference mCookieInUse;
     private Runnable mOnClearCallback;
     private Dialog mConfirmationDialog;
+    private boolean mDeleteDisabled;
+    private boolean mDataUsed;
 
     /**  Parameters to configure the cookie controls view. */
     public static class PageInfoCookiesViewParams {
@@ -75,22 +77,23 @@
 
         mCookieInUse.setIcon(
                 SettingsUtils.getTintedIcon(getContext(), R.drawable.permission_cookie));
-        if (!params.disableCookieDeletion) {
-            mCookieInUse.setImageView(
-                    R.drawable.ic_delete_white_24dp, R.string.page_info_cookies_clear, null);
-            mCookieInUse.setImageColor(R.color.default_icon_color_blue);
-            // Disabling enables passthrough of clicks to the main preference.
-            mCookieInUse.setImageViewEnabled(false);
-            mCookieInUse.setOnPreferenceClickListener(preference -> {
-                showClearCookiesConfirmation();
-                return true;
-            });
-        }
+        mCookieInUse.setImageView(
+                R.drawable.ic_delete_white_24dp, R.string.page_info_cookies_clear, null);
+        // Disabling enables passthrough of clicks to the main preference.
+        mCookieInUse.setImageViewEnabled(false);
+        mDeleteDisabled = params.disableCookieDeletion;
+        mCookieInUse.setOnPreferenceClickListener(preference -> {
+            showClearCookiesConfirmation();
+            return true;
+        });
+        updateCookieDeleteButton();
 
         mOnClearCallback = params.onClearCallback;
     }
 
     private void showClearCookiesConfirmation() {
+        if (mDeleteDisabled || !mDataUsed) return;
+
         mConfirmationDialog =
                 new AlertDialog.Builder(getActivity(), R.style.Theme_Chromium_AlertDialog)
                         .setTitle(R.string.page_info_cookies_clear)
@@ -121,6 +124,9 @@
                                    : null);
         mCookieInUse.setTitle(getContext().getResources().getQuantityString(
                 R.plurals.page_info_cookies_in_use, allowedCookies, allowedCookies));
+
+        mDataUsed |= allowedCookies != 0;
+        updateCookieDeleteButton();
     }
 
     public void setStorageUsage(long storageUsage) {
@@ -129,5 +135,14 @@
                         getContext().getString(R.string.origin_settings_storage_usage_brief),
                         Formatter.formatShortFileSize(getContext(), storageUsage))
                                  : null);
+
+        mDataUsed |= storageUsage != 0;
+        updateCookieDeleteButton();
+    }
+
+    private void updateCookieDeleteButton() {
+        mCookieInUse.setImageColor(!mDeleteDisabled && mDataUsed
+                        ? R.color.default_icon_color_blue
+                        : R.color.default_icon_color_disabled);
     }
 }
diff --git a/components/permissions/notification_permission_ui_selector.cc b/components/permissions/notification_permission_ui_selector.cc
index 226b7e6..f1764c96 100644
--- a/components/permissions/notification_permission_ui_selector.cc
+++ b/components/permissions/notification_permission_ui_selector.cc
@@ -3,13 +3,17 @@
 // found in the LICENSE file.
 
 #include "components/permissions/notification_permission_ui_selector.h"
+#include "base/optional.h"
 
 namespace permissions {
 
 // static
 bool NotificationPermissionUiSelector::ShouldSuppressAnimation(
-    QuietUiReason reason) {
-  switch (reason) {
+    base::Optional<QuietUiReason> reason) {
+  if (!reason)
+    return true;
+
+  switch (*reason) {
     case QuietUiReason::kEnabledInPrefs:
     case QuietUiReason::kPredictedVeryUnlikelyGrant:
       return false;
diff --git a/components/permissions/notification_permission_ui_selector.h b/components/permissions/notification_permission_ui_selector.h
index c2dca79f..ca4ff54c 100644
--- a/components/permissions/notification_permission_ui_selector.h
+++ b/components/permissions/notification_permission_ui_selector.h
@@ -66,7 +66,7 @@
 
   // Determines whether animations should be suppressed because we're very
   // confident the user does not want notifications (e.g. they're abusive).
-  static bool ShouldSuppressAnimation(QuietUiReason reason);
+  static bool ShouldSuppressAnimation(base::Optional<QuietUiReason> reason);
 
   // Determines the UI to use for the given |request|, and invokes |callback|
   // when done, either synchronously or asynchronously. The |callback| is
diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc
index c930f2f..cdfa8286 100644
--- a/components/permissions/permission_request_manager.cc
+++ b/components/permissions/permission_request_manager.cc
@@ -558,8 +558,9 @@
   if (!current_request_already_displayed_) {
     PermissionUmaUtil::PermissionPromptShown(requests_);
 
-    if (ShouldCurrentRequestUseQuietUI()) {
-      switch (ReasonForUsingQuietUi()) {
+    auto quiet_ui_reason = ReasonForUsingQuietUi();
+    if (quiet_ui_reason) {
+      switch (*quiet_ui_reason) {
         case QuietUiReason::kEnabledInPrefs:
         case QuietUiReason::kTriggeredByCrowdDeny:
         case QuietUiReason::kPredictedVeryUnlikelyGrant:
@@ -752,17 +753,17 @@
 }
 
 bool PermissionRequestManager::ShouldCurrentRequestUseQuietUI() const {
-  if (!IsRequestInProgress())
-    return false;
-
   // ContentSettingImageModel might call into this method if the user switches
   // between tabs while the |notification_permission_ui_selectors_| are pending.
-  return current_request_ui_to_use_ &&
-         current_request_ui_to_use_->quiet_ui_reason;
+  return ReasonForUsingQuietUi() != base::nullopt;
 }
 
-PermissionRequestManager::QuietUiReason
+base::Optional<PermissionRequestManager::QuietUiReason>
 PermissionRequestManager::ReasonForUsingQuietUi() const {
+  if (!IsRequestInProgress() || !current_request_ui_to_use_ ||
+      !current_request_ui_to_use_->quiet_ui_reason)
+    return base::nullopt;
+
   return *(current_request_ui_to_use_->quiet_ui_reason);
 }
 
@@ -840,11 +841,10 @@
 
 PermissionPromptDispositionReason
 PermissionRequestManager::DetermineCurrentRequestUIDispositionReasonForUMA() {
-  if (!ShouldCurrentRequestUseQuietUI()) {
+  auto quiet_ui_reason = ReasonForUsingQuietUi();
+  if (!quiet_ui_reason)
     return PermissionPromptDispositionReason::DEFAULT_FALLBACK;
-  }
-
-  switch (ReasonForUsingQuietUi()) {
+  switch (*quiet_ui_reason) {
     case QuietUiReason::kEnabledInPrefs:
       return PermissionPromptDispositionReason::USER_PREFERENCE_IN_SETTINGS;
     case QuietUiReason::kTriggeredByCrowdDeny:
diff --git a/components/permissions/permission_request_manager.h b/components/permissions/permission_request_manager.h
index f12a19f..ede1fc3 100644
--- a/components/permissions/permission_request_manager.h
+++ b/components/permissions/permission_request_manager.h
@@ -110,8 +110,8 @@
   bool ShouldCurrentRequestUseQuietUI() const;
 
   // If |ShouldCurrentRequestUseQuietUI| return true, this will provide a reason
-  // as to why the quiet UI needs to be used.
-  QuietUiReason ReasonForUsingQuietUi() const;
+  // as to why the quiet UI needs to be used. Returns `base::nullopt` otherwise.
+  base::Optional<QuietUiReason> ReasonForUsingQuietUi() const;
 
   bool IsRequestInProgress() const;
 
diff --git a/components/policy/core/common/cloud/cloud_policy_client.cc b/components/policy/core/common/cloud/cloud_policy_client.cc
index fcb8107..3c99d0f3 100644
--- a/components/policy/core/common/cloud/cloud_policy_client.cc
+++ b/components/policy/core/common/cloud/cloud_policy_client.cc
@@ -594,13 +594,15 @@
   request_jobs_.push_back(service_->CreateJob(std::move(config)));
 }
 
-void CloudPolicyClient::UploadSecurityEventReport(base::Value report,
-                                                  StatusCallback callback) {
+void CloudPolicyClient::UploadSecurityEventReport(
+    content::BrowserContext* context,
+    base::Value report,
+    StatusCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   CHECK(is_registered());
   CreateNewRealtimeReportingJob(
       std::move(report),
-      service()->configuration()->GetReportingConnectorServerUrl(),
+      service()->configuration()->GetReportingConnectorServerUrl(context),
       add_connector_url_params_, std::move(callback));
 }
 
diff --git a/components/policy/core/common/cloud/cloud_policy_client.h b/components/policy/core/common/cloud/cloud_policy_client.h
index 20e0db5..0cfa551 100644
--- a/components/policy/core/common/cloud/cloud_policy_client.h
+++ b/components/policy/core/common/cloud/cloud_policy_client.h
@@ -29,6 +29,10 @@
 #include "components/policy/proto/device_management_backend.pb.h"
 #include "components/policy/proto/record.pb.h"
 
+namespace content {
+class BrowserContext;
+}
+
 namespace network {
 class SharedURLLoaderFactory;
 }
@@ -304,9 +308,10 @@
       StatusCallback callback);
 
   // Uploads a report containing enterprise connectors real-time security
-  // events. As above, the client must be in a registered state.  The |callback|
-  // will be called when the operation completes.
-  virtual void UploadSecurityEventReport(base::Value report,
+  // events for |context|. As above, the client must be in a registered state.
+  // The |callback| will be called when the operation completes.
+  virtual void UploadSecurityEventReport(content::BrowserContext* context,
+                                         base::Value report,
                                          StatusCallback callback);
 
   // Uploads a report containing an EncryptedRecord. The client must be in a
diff --git a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
index 10763df0..08072fb 100644
--- a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
+++ b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
@@ -1543,7 +1543,7 @@
       base::BindOnce(&MockStatusCallbackObserver::OnCallbackComplete,
                      base::Unretained(&callback_observer_));
 
-  client_->UploadSecurityEventReport(MakeDefaultRealtimeReport(),
+  client_->UploadSecurityEventReport(nullptr, MakeDefaultRealtimeReport(),
                                      std::move(callback));
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(
diff --git a/components/policy/core/common/cloud/device_management_service.h b/components/policy/core/common/cloud/device_management_service.h
index ffcbecc..37cf002 100644
--- a/components/policy/core/common/cloud/device_management_service.h
+++ b/components/policy/core/common/cloud/device_management_service.h
@@ -32,6 +32,10 @@
 class SequencedTaskRunner;
 }
 
+namespace content {
+class BrowserContext;
+}
+
 namespace network {
 class SharedURLLoaderFactory;
 }
@@ -117,7 +121,8 @@
 
     // Server at which to contact the real time reporting service for
     // enterprise connectors.
-    virtual std::string GetReportingConnectorServerUrl() = 0;
+    virtual std::string GetReportingConnectorServerUrl(
+        content::BrowserContext* context) = 0;
   };
 
   // A DeviceManagementService job manages network requests to the device
diff --git a/components/policy/core/common/cloud/mock_cloud_policy_client.h b/components/policy/core/common/cloud/mock_cloud_policy_client.h
index b78dbf3..bfa3d7d 100644
--- a/components/policy/core/common/cloud/mock_cloud_policy_client.h
+++ b/components/policy/core/common/cloud/mock_cloud_policy_client.h
@@ -100,11 +100,15 @@
                void(enterprise_management::ChromeOsUserReportRequest*,
                     StatusCallback&));
 
-  void UploadSecurityEventReport(base::Value value,
+  void UploadSecurityEventReport(content::BrowserContext* context,
+                                 base::Value value,
                                  StatusCallback callback) override {
-    UploadSecurityEventReport_(value, callback);
+    UploadSecurityEventReport_(context, value, callback);
   }
-  MOCK_METHOD2(UploadSecurityEventReport_, void(base::Value&, StatusCallback&));
+  MOCK_METHOD3(UploadSecurityEventReport_,
+               void(content::BrowserContext* context,
+                    base::Value&,
+                    StatusCallback&));
 
   MOCK_METHOD3(UploadEncryptedReport,
                void(const ::reporting::EncryptedRecord&,
diff --git a/components/policy/core/common/cloud/mock_device_management_service.cc b/components/policy/core/common/cloud/mock_device_management_service.cc
index 8bfe47af6..cf74229 100644
--- a/components/policy/core/common/cloud/mock_device_management_service.cc
+++ b/components/policy/core/common/cloud/mock_device_management_service.cc
@@ -108,7 +108,8 @@
 }
 
 std::string
-MockDeviceManagementServiceConfiguration::GetReportingConnectorServerUrl() {
+MockDeviceManagementServiceConfiguration::GetReportingConnectorServerUrl(
+    content::BrowserContext* context) {
   return server_url_;
 }
 
diff --git a/components/policy/core/common/cloud/mock_device_management_service.h b/components/policy/core/common/cloud/mock_device_management_service.h
index bbf9670..694eabf 100644
--- a/components/policy/core/common/cloud/mock_device_management_service.h
+++ b/components/policy/core/common/cloud/mock_device_management_service.h
@@ -33,7 +33,8 @@
   std::string GetPlatformParameter() override;
   std::string GetRealtimeReportingServerUrl() override;
   std::string GetEncryptedReportingServerUrl() override;
-  std::string GetReportingConnectorServerUrl() override;
+  std::string GetReportingConnectorServerUrl(
+      content::BrowserContext* context) override;
 
  private:
   const std::string server_url_;
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index db2b0656..1a05bfe 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -2303,7 +2303,7 @@
 
     {
       'name': 'PrintingEnabled',
-      'owners': ['file://components/policy/resources/OWNERS'],
+      'owners': ['file://printing/OWNERS', 'thestig@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': [
@@ -2320,16 +2320,14 @@
       'id': 12,
       'caption': '''Enable printing''',
       'tags': [],
-      'desc': '''Enables printing in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> and prevents users from changing this setting.
+      'desc': '''Setting the policy to Enabled or leaving it unset lets users print in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>, and users can't change this setting.
 
-      If this setting is enabled or not configured, users can print.
-
-      If this setting is disabled, users cannot print from <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. Printing is disabled in the wrench menu, extensions, JavaScript applications, etc. It is still possible to print from plugins that bypass <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> while printing. For example, certain Flash applications have the print option in their context menu, which is not covered by this policy.''',
+      Setting the policy to Disabled means users can't print from <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. Printing is off in the wrench menu, extensions, and JavaScript applications. It's only possible to print from plugins that bypass <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> while printing.''',
       'arc_support': 'This policy has no effect on Android apps.',
     },
     {
       'name': 'CloudPrintProxyEnabled',
-      'owners': ['file://components/policy/resources/OWNERS'],
+      'owners': ['file://printing/OWNERS', 'rbpotter@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome.*:17-'],
@@ -2341,11 +2339,9 @@
       'id': 13,
       'caption': '''Enable <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> proxy''',
       'tags': [],
-      'desc': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to act as a proxy between <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> and legacy printers connected to the machine.
+      'desc': '''Setting the policy to Enabled or leaving it unset lets <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> act as a proxy between <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph>and legacy printers connected to the machine. Using their Google Account, users may turn on the cloud print proxy by authentication.
 
-      If this setting is enabled or not configured, users can enable the cloud print proxy by authentication with their Google account.
-
-      If this setting is disabled, users cannot enable the proxy, and the machine will not be allowed to share it's printers with <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph>.''',
+      Setting the policy to Disabled means users can't turn on the proxy, and the machine can't share its printers with <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph>.''',
     },
     {
       'name': 'PrintingAllowedColorModes',
@@ -2386,7 +2382,7 @@
       'id': 474,
       'caption': '''Restrict printing color mode''',
       'tags': [],
-      'desc': '''Sets printing to color only, monochrome only or no color mode restriction. Unset policy is treated as no restriction.''',
+      'desc': '''Setting the policy sets printing to color only, monochrome only, or no color mode restriction. Leaving the policy unset results in no restriction.''',
     },
     {
       'name': 'PrintingAllowedDuplexModes',
@@ -2427,7 +2423,9 @@
       'id': 475,
       'caption': '''Restrict printing duplex mode''',
       'tags': [],
-      'desc': '''Restricts printing duplex mode. Unset policy and empty set are treated as no restriction.''',
+      'desc': '''Setting the policy restricts printing duplex mode.
+
+      Leaving the policy unset or empty results in no restriction.''',
     },
     {
       'name': 'PrintingAllowedPinModes',
@@ -2544,7 +2542,7 @@
       'id': 477,
       'caption': '''Default printing color mode''',
       'tags': [],
-      'desc': '''Overrides default printing color mode. If the mode is unavailable this policy is ignored.''',
+      'desc': '''Setting the policy overrides the default printing color mode. If the mode is unavailable, this policy is ignored.''',
     },
     {
       'name': 'PrintingDuplexDefault',
@@ -2585,7 +2583,7 @@
       'id': 478,
       'caption': '''Default printing duplex mode''',
       'tags': [],
-      'desc': '''Overrides default printing duplex mode. If the mode is unavailable this policy is ignored.''',
+      'desc': '''Setting the policy overrides the default printing duplex mode. If the mode is unavailable, this policy is ignored.''',
     },
     {
       'name': 'PrintingPinDefault',
@@ -8513,7 +8511,7 @@
     },
     {
       'name': 'CloudPrintSubmitEnabled',
-      'owners': ['file://components/policy/resources/OWNERS'],
+      'owners': ['file://printing/OWNERS', 'weili@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome.*:17-'],
@@ -8525,13 +8523,11 @@
       'id': 109,
       'caption': '''Enable submission of documents to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph>''',
       'tags': [],
-      'desc': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to submit documents to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> for printing.  NOTE: This only affects <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> support in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>.  It does not prevent users from submitting print jobs on web sites.
+      'desc': '''Setting the policy to Enabled or leaving it unset lets users print to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> from the <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> print dialog. <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> can submit documents to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> for printing. This doesn't prevent users from submitting print jobs on websites.
 
-      If this setting is enabled or not configured, users can print to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> from the <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> print dialog.
+      Setting the policy to Disabled means users can't print to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> from the <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> print dialog.
 
-      If this setting is disabled, users cannot print to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> from the <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> print dialog.
-
-      In order to keep <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> destinations discoverable, this policy must be set to true and <ph name="POLICY_ENUM_PRINTERTYPEDENYLIST_CLOUD">cloud</ph> must not be included in the <ph name="POLICY_PRINTERTYPEDENYLIST">PrinterTypeDenyList</ph> policy.''',
+      In order to keep <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> destinations discoverable, this policy must be set to Enabled and <ph name="POLICY_ENUM_PRINTERTYPEDENYLIST_CLOUD">cloud</ph> must not be included in the <ph name="PRINTER_TYPE_DENY_LIST_POLICY_NAME">PrinterTypeDenyList</ph> policy.''',
     },
     {
       'name': 'EnterpriseWebStoreURL',
@@ -8569,7 +8565,7 @@
     },
     {
       'name': 'DisablePrintPreview',
-      'owners': ['file://printing/OWNERS'],
+      'owners': ['file://printing/OWNERS', 'rbpotter@chomium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome.*:18-'],
@@ -8581,11 +8577,9 @@
       'id': 117,
       'caption': '''Disable Print Preview''',
       'tags': [],
-      'desc': '''Show the system print dialog instead of print preview.
+      'desc': '''Setting the policy to Enabled has <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> open the system print dialog instead of the built-in print preview when users request a printout.
 
-      When this setting is enabled, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will open the system print dialog instead of the built-in print preview when a user requests a page to be printed.
-
-      If this policy is not set or is set to false, print commands trigger the print preview screen.''',
+      Setting the policy to Disabled or leaving it unset has print commands trigger the print preview screen.''',
     },
     {
       'name': 'PrintHeaderFooter',
@@ -8602,17 +8596,13 @@
       'id': 480,
       'caption': '''Print Headers and Footers''',
       'tags': [],
-      'desc': '''Force 'headers and footers' to be on or off in the printing dialog.
+      'desc': '''Setting the policy to Enabled turns headers and footers on in print preview. Setting the policy to Disabled turns them off in print preview.
 
-      If the policy is unset, the user can decide whether to print headers and footers.
-
-      If the policy is set to false, 'Headers and footers' is not selected in the print preview dialog, and the user cannot change it.
-
-      If the policy is set to true, 'Headers and footers' is selected in the print preview dialog, and the user cannot change it.''',
+      If you set the policy, users can't change it. If unset, users decides whether headers and footers appear.''',
     },
     {
       'name': 'DefaultPrinterSelection',
-      'owners': ['file://printing/OWNERS'],
+      'owners': ['file://printing/OWNERS', 'thestig@chromium.org'],
       'type': 'string',
       'schema': { 'type': 'string' },
       'validation_schema': {
@@ -8642,17 +8632,13 @@
       'id': 308,
       'caption': '''Default printer selection rules''',
       'tags': [],
-      'desc': '''Overrides <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> default printer selection rules.
+      'desc': '''Setting the policy sets the rules for selecting the default printer in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>, overriding the default rules. Printer selection occurs the first time users try to print, when <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> seeks a printer matching the specified attributes. In case of a less than perfect match, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> can be set to select any matching printer, depending on the order printers are discovered.
 
-      This policy determines the rules for selecting the default printer in <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> which happens the first time the print function is used with a profile.
-
-      When this policy is set, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will attempt to find a printer matching all of the specified attributes, and select it as default printer. The first printer found matching the policy is selected, in case of non-unique match any matching printer can be selected, depending on the order printers are discovered.
-
-      If this policy is not set or matching printer is not found within the timeout, the printer defaults to built-in PDF printer or no printer selected, when PDF printer is not available.
+      Leaving the policy unset or set to attributes for which there's no match means the built-in PDF printer is the default. If there's no PDF printer, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> defaults to none.
 
       Printers connected to <ph name="CLOUD_PRINT_NAME">Google Cloud Print</ph> are considered <ph name="PRINTER_TYPE_CLOUD">"cloud"</ph>, the rest of the printers are classified as <ph name="PRINTER_TYPE_LOCAL">"local"</ph>.
-      Omitting a field means all values match, for example, not specifying connectivity will cause Print Preview to initiate the discovery of all kinds of printers, local and cloud.
-      Regular expression patterns must follow the JavaScript RegExp syntax and matches are case sensistive.''',
+
+      Note: Omitting a field means all values match. For example, not specifying connectivity causes Print Preview to start discovery of all kinds of printers, <ph name="PRINTER_TYPE_LOCAL">"local"</ph> and <ph name="PRINTER_TYPE_CLOUD">"cloud"</ph>. Regular expression patterns must follow the JavaScript RegExp syntax, and matches are case sensistive.''',
       'arc_support': 'This policy has no effect on Android apps.',
     },
     {
@@ -15398,7 +15384,7 @@
     },
     {
       'name': 'NativePrinters',
-      'owners': ['file://chromeos/printing/OWNERS'],
+      'owners': ['file://chromeos/printing/OWNERS', 'skau@chromium.org'],
       'type': 'list',
       'schema': {
         'type': 'array',
@@ -15456,27 +15442,29 @@
       'id': 350,
       'caption': '''Native Printing''',
       'tags': [],
-      'desc': '''Configures a list of printers.
+      'desc': '''Setting the policy lets administrators set up a list of printers for their users. Printer selection occurs the first time users try to print.
 
-      This policy allows administrators to provide printer configurations for
-      their users.
+      Using the policy:
 
-      <ph name="PRINTER_DISPLAY_NAME">display_name</ph> and <ph name="PRINTER_DESCRIPTION">description</ph> are free-form strings that can be customized for ease of printer selection. <ph name="PRINTER_MANUFACTURER">manufacturer</ph> and <ph name="PRINTER_MODEL">model</ph> serve to ease printer identification by end users. They represent the manufacturer and model of the printer. <ph name="PRINTER_URI">uri</ph> should be an address reachable from a client computer including the <ph name="URI_SCHEME">scheme</ph>, <ph name="URI_PORT">port</ph>, and <ph name="URI_QUEUE">queue</ph>. <ph name="PRINTER_UUID">uuid</ph> is optional. If provided, it is used to help deduplicate <ph name="ZEROCONF_DISCOVERY">zeroconf</ph> printers.
+      * Customize free-form <ph name="PRINTER_DISPLAY_NAME">display_name</ph> and <ph name="PRINTER_DESCRIPTION">description</ph> for ease of printer selection.
 
-      Either <ph name="PRINTER_EFFECTIVE_MODEL">effective_model</ph> should contain the name of the printer or <ph name="PRINTER_AUTOCONF">autoconf</ph> should be set to true. The printers with both or without any properties will be ignored.
+      * Help users identify printers using <ph name="PRINTER_MANUFACTURER">manufacturer</ph> and <ph name="PRINTER_MODEL">model</ph>.
 
-      Printer setup is completed upon the first use of a printer.  PPDs are not downloaded until the printer is used.  After that time, frequently used PPDs are cached.
+      * <ph name="PRINTER_URI">uri</ph> should be an address reachable from a client computer, including the <ph name="URI_SCHEME">scheme</ph>, <ph name="URI_PORT">port</ph>, and <ph name="URI_QUEUE">queue</ph>.
 
-      This policy has no effect on whether users can configure printers on individual devices.  It is intended to be supplementary to the configuration of printers by individual users.
+      * Optionally provide <ph name="PRINTER_UUID">uuid</ph> to help deduplicate <ph name="ZEROCONF_DISCOVERY">zeroconf</ph> printers.
 
-      For Active Directory managed devices this policy supports expansion of <ph name="MACHINE_NAME_VARIABLE">${MACHINE_NAME[,pos[,count]]}</ph> to the Active Directory machine name or a substring of it. For example, if the machine name is <ph name="MACHINE_NAME_EXAMPLE">CHROMEBOOK</ph>, then <ph name="MACHINE_NAME_VARIABLE_EXAMPLE">${MACHINE_NAME,6,4}</ph> would be replaced by the 4 characters starting after the 6th position, i.e. <ph name="MACHINE_NAME_PART_EXAMPLE">BOOK</ph>. Note that the position is zero-based.
+      * Either use the model name for <ph name="PRINTER_EFFECTIVE_MODEL">effective_model</ph> or set <ph name="PRINTER_AUTOCONF">autoconf</ph> to True. Printers with both or no properties get ignored.
 
-      This policy is deprecated, please use <ph name="PRINTERS_POLICY_NAME">Printers</ph> instead.
-      ''',
+      PPDs are downloaded after the printer is used, and frequently used PPDs are cached. This policy doesn't affect whether users can configure printers on individual devices.
+
+      Note: For <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> managed devices, this policy supports expansion of <ph name="MACHINE_NAME_VARIABLE">${MACHINE_NAME[,pos[,count]]}</ph> to the <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> machine name or a substring of it. For example, if the machine name is <ph name="MACHINE_NAME_EXAMPLE">CHROMEBOOK</ph>, then <ph name="MACHINE_NAME_VARIABLE_EXAMPLE">${MACHINE_NAME,6,4}</ph> gets replaced by the 4 characters starting after the 6th position, in other words, <ph name="MACHINE_NAME_PART_EXAMPLE">BOOK</ph>. The position is zero-based.
+
+      This policy is deprecated, please use <ph name="PRINTERS_POLICY_NAME">Printers</ph> instead.''',
     },
     {
       'name': 'Printers',
-      'owners': ['file://chromeos/printing/OWNERS'],
+      'owners': ['file://chromeos/printing/OWNERS', 'skau@chromium.org'],
       'type': 'list',
       'schema': {
         'type': 'array',
@@ -15533,25 +15521,27 @@
       'id': 769,
       'caption': '''Configures a list of printers''',
       'tags': [],
-      'desc': '''Configures a list of printers.
+      'desc': '''Setting the policy lets administrators set up a list of printers for their users. Printer selection occurs the first time users try to print.
 
-      This policy allows administrators to provide printer configurations for
-      their users.
+      Using the policy:
 
-      <ph name="PRINTER_DISPLAY_NAME">display_name</ph> and <ph name="PRINTER_DESCRIPTION">description</ph> are free-form strings that can be customized for ease of printer selection. <ph name="PRINTER_MANUFACTURER">manufacturer</ph> and <ph name="PRINTER_MODEL">model</ph> serve to ease printer identification by end users. They represent the manufacturer and model of the printer. <ph name="PRINTER_URI">uri</ph> should be an address reachable from a client computer including the <ph name="URI_SCHEME">scheme</ph>, <ph name="URI_PORT">port</ph>, and <ph name="URI_QUEUE">queue</ph>. <ph name="PRINTER_UUID">uuid</ph> is optional. If provided, it is used to help deduplicate <ph name="ZEROCONF_DISCOVERY">zeroconf</ph> printers.
+      * Customize free-form <ph name="PRINTER_DISPLAY_NAME">display_name</ph> and <ph name="PRINTER_DESCRIPTION">description</ph> for ease of printer selection.
 
-      Either <ph name="PRINTER_EFFECTIVE_MODEL">effective_model</ph> should contain the name of the printer or <ph name="PRINTER_AUTOCONF">autoconf</ph> should be set to true. The printers with both or without any properties will be ignored.
+      * Help users identify printers using <ph name="PRINTER_MANUFACTURER">manufacturer</ph> and <ph name="PRINTER_MODEL">model</ph>.
 
-      Printer setup is completed upon the first use of a printer.  PPDs are not downloaded until the printer is used.  After that time, frequently used PPDs are cached.
+      * <ph name="PRINTER_URI">uri</ph> should be an address reachable from a client computer, including the <ph name="URI_SCHEME">scheme</ph>, <ph name="URI_PORT">port</ph>, and <ph name="URI_QUEUE">queue</ph>.
 
-      This policy has no effect on whether users can configure printers on individual devices.  It is intended to be supplementary to the configuration of printers by individual users.
+      * Optionally provide <ph name="PRINTER_UUID">uuid</ph> to help deduplicate <ph name="ZEROCONF_DISCOVERY">zeroconf</ph> printers.
 
-      For Active Directory managed devices this policy supports expansion of <ph name="MACHINE_NAME_VARIABLE">${MACHINE_NAME[,pos[,count]]}</ph> to the Active Directory machine name or a substring of it. For example, if the machine name is <ph name="MACHINE_NAME_EXAMPLE">CHROMEBOOK</ph>, then <ph name="MACHINE_NAME_VARIABLE_EXAMPLE">${MACHINE_NAME,6,4}</ph> would be replaced by the 4 characters starting after the 6th position, i.e. <ph name="MACHINE_NAME_PART_EXAMPLE">BOOK</ph>. Note that the position is zero-based.
-      ''',
+      * Either use the model name for <ph name="PRINTER_EFFECTIVE_MODEL">effective_model</ph> or set <ph name="PRINTER_AUTOCONF">autoconf</ph> to True. Printers with both or no properties get ignored.
+
+      PPDs are downloaded after the printer is used, and frequently used PPDs are cached. This policy doesn't affect whether users can configure printers on individual devices.
+
+      Note: For <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> managed devices, this policy supports expansion of <ph name="MACHINE_NAME_VARIABLE">${MACHINE_NAME[,pos[,count]]}</ph> to the <ph name="MS_AD_NAME">Microsoft® Active Directory®</ph> machine name or a substring of it. For example, if the machine name is <ph name="MACHINE_NAME_EXAMPLE">CHROMEBOOK</ph>, then <ph name="MACHINE_NAME_VARIABLE_EXAMPLE">${MACHINE_NAME,6,4}</ph> gets replaced by the 4 characters starting after the 6th position, in other words, <ph name="MACHINE_NAME_PART_EXAMPLE">BOOK</ph>. The position is zero-based.''',
     },
     {
       'name': 'NativePrintersBulkConfiguration',
-      'owners': ['file://chromeos/printing/OWNERS'],
+      'owners': ['file://chromeos/printing/OWNERS', 'luum@chromium.org'],
       'id': 382,
       'type': 'external',
       'schema': {
@@ -15574,25 +15564,17 @@
       'max_size': 5242880,
       'caption': '''Enterprise printer configuration file''',
       'tags': [],
-      'desc': '''Provides configurations for enterprise printers.
+      'desc': '''Setting this policy configure enterprise printers. Its format matches the <ph name="NATIVE_PRINTERS_POLICY_NAME">NativePrinters</ph> dictionary, with an additional required <ph name="ID_FIELD">"id"</ph> or <ph name="GUID_FIELD">"guid"</ph> field for each printer for allow listing or deny listing. The file size can't exceed 5MB and is in JSON format. A file with about 21,000 printers encodes as a 5MB file. The cryptographic hash helps verify download integrity. The file is downloaded, cached, and redownloaded when the URL or the hash changes. <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> downloads the file for printer configurations and makes printers available along with <ph name="BULK_PRINTERS_ACCESS_MODE_POLICY_NAME">NativePrintersBulkAccessMode</ph>, <ph name="BULK_PRINTERS_WHITELIST">NativePrintersBulkWhitelist</ph>, and <ph name="BULK_PRINTERS_BLACKLIST">NativePrintersBulkBlacklist</ph>.
 
-      This policy allows you to provide printer configurations to <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices.  The format is the same as the NativePrinters dictionary, with an additional required "id" or "guid" field per printer for whitelisting or blacklisting.
+      This policy has no effect on whether users can configure printers on individual devices. It is intended to be supplementary to the configuration of printers by individual users.
 
-      The size of the file must not exceed 5MB and must be encoded in JSON.  It is estimated that a file containing approximately 21,000 printers will encode as a 5MB file.  The cryptographic hash is used to verify the integrity of the download.
-
-      The file is downloaded and cached. It will be re-downloaded whenever the URL or the hash changes.
-
-      If this policy is set, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will download the file for printer configurations and make printers available in accordance with <ph name="BULK_PRINTERS_ACCESS_MODE_POLICY_NAME">NativePrintersBulkAccessMode</ph>, <ph name="BULK_PRINTERS_WHITELIST">NativePrintersBulkWhitelist</ph>, and <ph name="BULK_PRINTERS_BLACKLIST">NativePrintersBulkBlacklist</ph>.
-
-      If you set this policy, users cannot change or override it.
-
-      This policy has no effect on whether users can configure printers on individual devices.  It is intended to be supplementary to the configuration of printers by individual users.
+      If you set the policy, users can't change it.
 
       This policy is deprecated, please use <ph name="PRINTERS_BULK_CONFIGURATION_POLICY_NAME">PrintersBulkConfiguration</ph> instead.''',
     },
     {
       'name': 'PrintersBulkConfiguration',
-      'owners': ['file://chromeos/printing/OWNERS'],
+      'owners': ['file://chromeos/printing/OWNERS', 'luum@chromium.org'],
       'id': 770,
       'type': 'external',
       'schema': {
@@ -15614,23 +15596,15 @@
       'max_size': 5242880,
       'caption': '''Enterprise printer configuration file''',
       'tags': [],
-      'desc': '''Provides configurations for enterprise printers.
+      'desc': '''Setting this policy configure enterprise printers. Its format matches the <ph name="PRINTERS_POLICY_NAME">Printers</ph> dictionary, with an additional required <ph name="ID_FIELD">"id"</ph> or <ph name="GUID_FIELD">"guid"</ph> field for each printer for allow listing or deny listing. The file size can't exceed 5MB and is in JSON format. A file with about 21,000 printers encodes as a 5MB file. The cryptographic hash helps verify download integrity. The file is downloaded, cached, and redownloaded when the URL or the hash changes. <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> downloads the file for printer configurations and makes printers available along with <ph name="PRINTERS_BULK_ACCESS_MODE_POLICY_NAME">PrintersBulkAccessMode</ph>, <ph name="PRINTERS_BULK_ALLOWLIST_POLICY_NAME">PrintersBulkAllowlist</ph>, and <ph name="PRINTERS_BULK_BLOCKLIST_POLICY_NAME">PrintersBulkBlocklist</ph>.
 
-      This policy allows you to provide printer configurations to <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices. The format is the same as the <ph name="PRINTERS_POLICY_NAME">Printers</ph> dictionary, with an additional required "id" or "guid" field per printer for allowing or blocking.
+      This policy has no effect on whether users can configure printers on individual devices. It is intended to be supplementary to the configuration of printers by individual users.
 
-      The size of the file must not exceed 5MB and must be encoded in JSON. It is estimated that a file containing approximately 21,000 printers will encode as a 5MB file. The cryptographic hash is used to verify the integrity of the download.
-
-      The file is downloaded and cached. It will be re-downloaded whenever the URL or the hash changes.
-
-      If this policy is set, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will download the file for printer configurations and make printers available in accordance with <ph name="PRINTERS_BULK_ACCESS_MODE_POLICY_NAME_POLICY_NAME">PrintersBulkAccessMode</ph>, <ph name="PRINTERS_BULK_ALLOWLIST">PrintersBulkAllowlist</ph>, and <ph name="PRINTERS_BULK_BLOCKLIST">PrintersBulkBlocklist</ph>.
-
-      If you set this policy, users cannot change or override it.
-
-      This policy has no effect on whether users can configure printers on individual devices. It is intended to be supplementary to the configuration of printers by individual users.''',
+      If you set the policy, users can't change it.''',
     },
     {
       'name': 'NativePrintersBulkAccessMode',
-      'owners': ['file://chromeos/printing/OWNERS'],
+      'owners': ['file://chromeos/printing/OWNERS', 'zentaro@chromium.org'],
       'id': 383,
       'supported_on': ['chrome_os:65-'],
       'type': 'int-enum',
@@ -15664,18 +15638,21 @@
       'example_value': 1,
       'caption': '''Printer configuration access policy.''',
       'tags': [],
-      'desc': '''Controls which printers from the <ph name="BULK_PRINTERS_POLICY_NAME">NativePrintersBulkConfiguration</ph> are available to users.
+      'desc': '''Setting the policy designates which access policy applies to bulk printer configuration, controlling which printers from <ph name="NATIVE_PRINTERS_BULK_CONFIGURATION_POLICY_NAME">NativePrintersBulkConfiguration</ph> are available for users.
 
-      Designates which access policy is used for bulk printer configuration. If <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> is selected, all printers are shown. If <ph name="PRINTERS_BLACKLIST">BlacklistRestriction</ph> is selected, <ph name="BULK_PRINTERS_BLACKLIST">NativePrintersBulkBlacklist</ph> is used to restrict access to the specified printers.  If <ph name="PRINTERS_WHITELIST">WhitelistPrintersOnly</ph> is selected, <ph name="BULK_PRINTERS_WHITELIST">NativePrintersBulkWhitelist</ph> designates only those printers which are selectable.
+      * If <ph name="PRINTERS_BLACKLIST">BlacklistRestriction</ph> (value 0) is selected, <ph name="BULK_PRINTERS_BLACKLIST">NativePrintersBulkBlacklist</ph> restricts access to the specified printers
 
-      If this policy is not set, <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> is assumed.
+      * If <ph name="PRINTERS_WHITELIST">WhitelistPrintersOnly</ph> is selected, <ph name="BULK_PRINTERS_WHITELIST">NativePrintersBulkWhitelist</ph> (value 1) designates only those printers which are selectable
 
-      This policy is deprecated, please use <ph name="PRINTERS_BULK_ACCESS_MODE_POLICY_NAME_POLICY_NAME">PrintersBulkAccessMode</ph> instead.
-      ''',
+      * <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> (Value 2) displays all printers
+
+      Leaving the policy unset puts <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> in use.
+
+      This policy is deprecated, please use <ph name="PRINTERS_BULK_ACCESS_MODE_POLICY_NAME_POLICY_NAME">PrintersBulkAccessMode</ph> instead.''',
     },
     {
       'name': 'PrintersBulkAccessMode',
-      'owners': ['file://chromeos/printing/OWNERS'],
+      'owners': ['file://chromeos/printing/OWNERS', 'zentaro@chromium.org'],
       'id': 772,
       'supported_on': ['chrome_os:86-'],
       'type': 'int-enum',
@@ -15708,16 +15685,19 @@
       'example_value': 1,
       'caption': '''Printer configuration access policy.''',
       'tags': [],
-      'desc': '''Controls which printers from the <ph name="PRINTERS_BULK_CONFIGURATION_POLICY_NAME">PrintersBulkConfiguration</ph> are available to users.
+      'desc': '''Setting the policy designates which access policy applies to bulk printer configuration, controlling which printers from <ph name="PRINTERS_BULK_CONFIGURATION_POLICY_NAME">PrintersBulkConfiguration</ph> are available for users.
 
-      Designates which access policy is used for bulk printer configuration. If <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> is selected, all printers are shown. If <ph name="PRINTERS_BLOCKLIST">BlocklistRestriction</ph> is selected, <ph name="PRINTERS_BULK_BLOCKLIST">PrintersBulkBlocklist</ph> is used to restrict access to the specified printers.  If <ph name="PRINTERS_ALLOWLIST">AllowlistPrintersOnly</ph> is selected, <ph name="PRINTERS_BULK_ALLOWLIST">PrintersBulkAllowlist</ph> designates only those printers which are selectable.
+      * <ph name="PRINTERS_BLOCKLIST">BlocklistRestriction</ph> (value 0) uses <ph name="PRINTERS_BULK_BLOCKLIST">PrintersBulkBlocklist</ph> to restrict access to the specified printers
 
-      If this policy is not set, <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> is assumed.
-      ''',
+      * <ph name="PRINTERS_ALLOWLIST">AllowlistPrintersOnly</ph> (value 1) uses <ph name="PRINTERS_BULK_ALLOWLIST">PrintersBulkAllowlist</ph> to designate only those printers which are selectable
+
+      * <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> (value 2) displays all printers
+
+      Leaving the policy unset puts <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> in use.''',
     },
     {
       'name': 'NativePrintersBulkBlacklist',
-      'owners': ['file://chromeos/printing/OWNERS'],
+      'owners': ['file://chromeos/printing/OWNERS', 'thestig@chromium.org'],
       'supported_on': ['chrome_os:65-'],
       'id': 384,
       'type': 'list',
@@ -15733,18 +15713,13 @@
       'example_value':  ["id1", "id2", "id3"],
       'caption': '''Disabled enterprise printers''',
       'tags': [],
-      'desc': '''Specifies the printers which a user cannot use.
+      'desc': '''If <ph name="PRINTERS_BLACKLIST">BlacklistRestriction</ph> is chosen for <ph name="BULK_PRINTERS_ACCESS_MODE_POLICY_NAME">NativePrintersBulkAccessMode</ph>, then setting <ph name="NATIVE_PRINTERS_BULK_BLACKLIST_POLICY_NAME">NativePrintersBulkBlacklist</ph> specifies which printers users can't use. All printers are provided to the user, except for the IDs listed in this policy. The IDs must correspond to the <ph name="ID_FIELD">"id"</ph> or <ph name="GUID_FIELD">"guid"</ph> fields in the file specified in <ph name="BULK_PRINTERS_POLICY_NAME">NativePrintersBulkConfiguration</ph>.
 
-      This policy is only used if <ph name="PRINTERS_BLACKLIST">BlacklistRestriction</ph> is chosen for <ph name="BULK_PRINTERS_ACCESS_MODE_POLICY_NAME">NativePrintersBulkAccessMode</ph>.
-
-      If this policy is used, all printers are provided to the user except for the ids listed in this policy. The ids must correspond to the "id" or "guid" fields in the file specified in <ph name="BULK_PRINTERS_POLICY_NAME">NativePrintersBulkConfiguration</ph>.
-
-      This policy is deprecated, please use <ph name="PRINTERS_BULK_BLOCKLIST">PrintersBulkBlocklist</ph> instead.
-      ''',
+      This policy is deprecated, please use <ph name="PRINTERS_BULK_BLOCKLIST">PrintersBulkBlocklist</ph> instead.''',
     },
     {
       'name': 'PrintersBulkBlocklist',
-      'owners': ['file://chromeos/printing/OWNERS'],
+      'owners': ['file://chromeos/printing/OWNERS', 'thestig@chromium.org'],
       'supported_on': ['chrome_os:86-'],
       'id': 779,
       'type': 'list',
@@ -15759,16 +15734,11 @@
       'example_value':  ["id1", "id2", "id3"],
       'caption': '''Disabled enterprise printers''',
       'tags': [],
-      'desc': '''Specifies the printers which a user cannot use.
-
-      This policy is only used if <ph name="PRINTERS_BLOCKLIST">BlocklistRestriction</ph> is chosen for <ph name="PRINTERS_BULK_ACCESS_MODE_POLICY_NAME">PrintersBulkAccessMode</ph>.
-
-      If this policy is used, all printers are provided to the user except for the ids listed in this policy. The ids must correspond to the "id" or "guid" fields in the file specified in <ph name="PRINTERS_BULK_CONFIGURATION_POLICY_NAME">PrintersBulkConfiguration</ph>.
-      ''',
+      'desc': '''If <ph name="PRINTERS_BLOCKLIST">BlocklistRestriction</ph> is chosen for <ph name="PRINTERS_BULK_ACCESS_MODE_POLICY_NAME">PrintersBulkAccessMode</ph>, then setting <ph name="PRINTERS_BULK_BLOCKLIST_POLICY_NAME">PrintersBulkBlocklist</ph> specifies which printers users can't use. All printers are provided to the user, except for the IDs listed in this policy. The IDs must correspond to the <ph name="ID_FIELD">"id"</ph> or <ph name="GUID_FIELD">"guid"</ph> fields in the file specified in <ph name="PRINTERS_BULK_CONFIGURATION_POLICY_NAME">PrintersBulkConfiguration</ph>.''',
     },
     {
       'name': 'NativePrintersBulkWhitelist',
-      'owners': ['file://chromeos/printing/OWNERS'],
+      'owners': ['file://chromeos/printing/OWNERS', 'thestig@chromium.org'],
       'supported_on': ['chrome_os:65-'],
       'id': 385,
       'type': 'list',
@@ -15784,18 +15754,13 @@
       'example_value':  ["id1", "id2", "id3"],
       'caption': '''Enabled enterprise printers''',
       'tags': [],
-      'desc': '''Specifies the printers which a user can use.
+      'desc': '''If <ph name="PRINTERS_WHITELIST">WhitelistPrintersOnly</ph> is chosen for <ph name="BULK_PRINTERS_ACCESS_MODE_POLICY_NAME">NativePrintersBulkAccessMode</ph>, then setting <ph name="NATIVE_PRINTERS_BULK_WHITELIST_POLICY_NAME">NativePrintersBulkWhitelist</ph> specifies which printers users can use. Only the printers with IDs matching the values in this policy are available to the user. The IDs must correspond to the <ph name="ID_FIELD">"id"</ph> or <ph name="GUID_FIELD">"guid"</ph> fields in the file specified in <ph name="NATIVE_PRINTERS_BULK_CONFIGURATION_POLICY_NAME">NativePrintersBulkConfiguration</ph>.
 
-      This policy is only used if <ph name="PRINTERS_WHITELIST">WhitelistPrintersOnly</ph> is chosen for <ph name="BULK_PRINTERS_ACCESS_MODE_POLICY_NAME">NativePrintersBulkAccessMode</ph>.
-
-      If this policy is used, only the printers with ids matching the values in this policy are available to the user. The ids must correspond to the "id" or "guid" fields in the file specified in <ph name="BULK_PRINTERS_POLICY_NAME">NativePrintersBulkConfiguration</ph>.
-
-      This policy is deprecated, please use <ph name="PRINTERS_BULK_ALLOWLIST_POLICY_NAME">PrintersBulkAllowlist</ph> instead.
-      ''',
+      This policy is deprecated, please use <ph name="PRINTERS_BULK_ALLOWLIST_POLICY_NAME">PrintersBulkAllowlist</ph> instead.''',
     },
     {
       'name': 'PrintersBulkAllowlist',
-      'owners': ['file://chromeos/printing/OWNERS'],
+      'owners': ['file://chromeos/printing/OWNERS', 'thestig@chromium.org'],
       'supported_on': ['chrome_os:86-'],
       'id': 780,
       'type': 'list',
@@ -15810,12 +15775,7 @@
       'example_value':  ["id1", "id2", "id3"],
       'caption': '''Enabled enterprise printers''',
       'tags': [],
-      'desc': '''Specifies the printers which a user can use.
-
-      This policy is only used if <ph name="PRINTERS_ALLOWLIST">AllowlistPrintersOnly</ph> is chosen for <ph name="PRINTERS_BULK_ACCESS_MODE_POLICY_NAME">PrintersBulkAccessMode</ph>.
-
-      If this policy is used, only the printers with ids matching the values in this policy are available to the user. The ids must correspond to the "id" or "guid" fields in the file specified in <ph name="PRINTERS_BULK_CONFIGURATION_POLICY_NAME">PrintersBulkConfiguration</ph>.
-      ''',
+      'desc': '''If <ph name="PRINTERS_ALLOWLIST">AllowlistPrintersOnly</ph> is chosen for <ph name="PRINTERS_BULK_ACCESS_MODE_POLICY_NAME">PrintersBulkAccessMode</ph>, then setting <ph name="PRINTERS_BULK_ALLOWLIST_POLICY_NAME">PRINTERS_BULK_ALLOWLIST</ph> specifies which printers users can use. Only the printers with IDs matching the values in this policy are available to the user. The IDs must correspond to the <ph name="ID_FIELD">"id"</ph> or <ph name="GUID_FIELD">"guid"</ph> fields in the file specified in <ph name="PRINTERS_BULK_CONFIGURATION_POLICY_NAME">PrintersBulkConfiguration</ph>.''',
     },
     {
       'name': 'DeviceNativePrinters',
@@ -15843,24 +15803,17 @@
       'max_size': 5242880,
       'caption': '''Enterprise printer configuration file for devices''',
       'tags': [],
-      'desc': '''Provides configurations for enterprise printers bound to devices.
+      'desc': '''Setting the policy provides configurations for enterprise printers bound to devices. Its format matches the <ph name="NATIVE_PRINTERS_POLICY_NAME">NativePrinters</ph> dictionary, with an additional required "id" or "guid" field for each printer for allow listing or deny listing. The file size can't exceed 5MB and is in JSON format. A file with about 21,000 printers encodes as a 5MB file. The cryptographic hash helps verify download integrity. The file is downloaded, cached, and redownloaded when the URL or the hash changes. <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> downloads the file for printer configurations and makes printers available along with <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph>, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME">DevicePrintersAllowlist</ph>, and <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME">DevicePrintersBlocklist</ph>.
 
-      This policy allows you to provide printer configurations to <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices.  The format is the same as the NativePrinters dictionary, with an additional required "id" or "guid" field per printer for whitelisting or blacklisting.
+      This policy:
 
-      The size of the file must not exceed 5MB and must be encoded in JSON.  It is estimated that a file containing approximately 21,000 printers will encode as a 5MB file.  The cryptographic hash is used to verify the integrity of the download.
+      * doesn't affect whether users can configure printers on individual devices
 
-      The file is downloaded and cached. It will be re-downloaded whenever the URL or the hash changes.
+      * supplements <ph name="BULK_PRINTERS_POLICY_NAME">NativePrintersBulkConfiguration</ph> and individual users' printer setups
 
-      If this policy is set, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will download the file for printer configurations and make printers available in accordance with <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph>, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME">DevicePrintersAllowlist</ph>, and <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME">DevicePrintersBlocklist</ph>.
+      If unset, there are no device printers, and the other <ph name="DEVICE_NATIVE_PRINTERS_POLICY_PATTERN">DeviceNativePrinter*</ph> policies are ignored.
 
-      This policy has no effect on whether users can configure printers on individual devices.  It is intended to be supplementary to the configuration of printers by individual users.
-
-      This policy is additive to the <ph name="BULK_PRINTERS_POLICY_NAME">NativePrintersBulkConfiguration</ph>.
-
-      If this policy is unset, there will be no device printers and the other <ph name="DEVICE_NATIVE_PRINTERS_POLICY_PATTERN">DeviceNativePrinter*</ph> policies will be ignored.
-
-      This policy is deprecated, please use <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph> instead.
-      ''',
+      This policy is deprecated, please use <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph> instead.''',
     },
     {
       'name': 'DeviceNativePrintersAccessMode',
@@ -15898,14 +15851,17 @@
       'example_value': 1,
       'caption': '''Device printers configuration access policy.''',
       'tags': [],
-      'desc': '''Controls which printers from the <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph> are available to users.
+      'desc': '''Setting the policy designates which access policy applies to bulk printer configuration, controlling which printers from <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph> are available for users.
 
-      Designates which access policy is used for bulk printer configuration. If <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> is selected, all printers are shown. If <ph name="PRINTERS_BLACKLIST">BlacklistRestriction</ph> is selected, <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME">DevicePrintersBlocklist</ph> is used to restrict access to the specified printers.  If <ph name="PRINTERS_WHITELIST">WhitelistPrintersOnly</ph> is selected, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLCY_NAME">DevicePrintersAllowlist</ph> designates only those printers which are selectable.
+      * <ph name="PRINTERS_BLACKLIST">BlacklistRestriction</ph> (value 0), <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME">DevicePrintersBlocklist</ph> can restrict access to the specified printers
 
-      If this policy is not set, <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> is assumed.
+      * If set to <ph name="PRINTERS_WHITELIST">WhitelistPrintersOnly</ph> (value 1), <ph name="DEVICE_PRINTERS_ALLOWLIST_POLCY_NAME">DevicePrintersAllowlist</ph> designates only those printers which are selectable
 
-      This policy is deprecated, please use <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph> instead.
-      ''',
+      * <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> (value 2), all printers are shown.
+
+      Leaving the policy unset applies <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph>.
+
+      This policy is deprecated, please use <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph> instead.''',
     },
     {
       'name': 'DeviceNativePrintersBlacklist',
@@ -15925,14 +15881,9 @@
       'example_value':  ["id1", "id2", "id3"],
       'caption': '''Disabled enterprise device printers''',
       'tags': [],
-      'desc': '''Specifies the printers which a user cannot use.
+      'desc': '''If <ph name="PRINTERS_BLACKLIST">BlacklistRestriction</ph> is chosen for <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph>, then setting <ph name="DEVICE_NATIVE_PRINTERS_BLACKLIST_POLICY_NAME">DeviceNativePrintersBlacklist</ph> specifies which printers users can't use. All printers are provided to users, except for the IDs listed in this policy. The IDs must correspond to the <ph name="ID_FIELD">"id"</ph> or <ph name="GUID_FIELD">"guid"</ph> fields in the file specified in <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph>.
 
-      This policy is only used if <ph name="PRINTERS_BLACKLIST">BlacklistRestriction</ph> is chosen for <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph>.
-
-      If this policy is used, all printers are provided to the user except for the ids listed in this policy. The ids must correspond to the "id" or "guid" fields in the file specified in <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph>.
-
-      This policy is deprecated, please use <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME">DevicePrintersBlocklist</ph> instead.
-      ''',
+      This policy is deprecated, please use <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME">DevicePrintersBlocklist</ph> instead.''',
     },
     {
       'name': 'DeviceNativePrintersWhitelist',
@@ -15953,14 +15904,9 @@
       'example_value':  ["id1", "id2", "id3"],
       'caption': '''Enabled enterprise device printers''',
       'tags': [],
-      'desc': '''Specifies the printers which a user can use.
+      'desc': '''If <ph name="PRINTERS_WHITELIST">WhitelistPrintersOnly</ph> is chosen for <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph>, then setting <ph name="DEVICE_NATIVE_PRINTERS_WHITELIST_POLICY_NAME">DeviceNativePrintersWhitelist</ph> specifies which printers users can use. Only the printers with IDs matching the values in this policy are available to users. The IDs must correspond to the <ph name="ID_FIELD">"id"</ph> or <ph name="GUID_FIELD">"guid"</ph> fields in the file specified in <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph>.
 
-      This policy is only used if <ph name="PRINTERS_WHITELIST">WhitelistPrintersOnly</ph> is chosen for <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph>
-
-      If this policy is used, only the printers with ids matching the values in this policy are available to the user. The ids must correspond to the "id" or "guid" fields in the file specified in <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph>.
-
-      This policy is deprecated, please use <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME">DevicePrintersAllowlist</ph> instead.
-      ''',
+      This policy is deprecated, please use <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME">DevicePrintersAllowlist</ph>instead.''',
     },
     {
       'name': 'DevicePrinters',
@@ -15987,22 +15933,15 @@
       'max_size': 5242880,
       'caption': '''Enterprise printer configuration file for devices''',
       'tags': [],
-      'desc': '''Provides configurations for enterprise printers bound to devices.
+      'desc': '''Setting the policy provides configurations for enterprise printers bound to devices. Its format matches the <ph name="PRINTERS_POLICY_NAME">Printers</ph> dictionary, with an additional required "id" or "guid" field for each printer for allow listing or deny listing. The file size can't exceed 5MB and is in JSON format. A file with about 21,000 printers encodes as a 5MB file. The cryptographic hash helps verify download integrity. The file is downloaded, cached, and redownloaded when the URL or the hash changes. <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> downloads the file for printer configurations and makes printers available along with <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph>, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME">DevicePrintersAllowlist</ph>, and <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME">DevicePrintersBlocklist</ph>.
 
-      This policy allows you to provide printer configurations to <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices.  The format is the same as the NativePrinters dictionary, with an additional required "id" or "guid" field per printer for whitelisting or blacklisting.
+      This policy:
 
-      The size of the file must not exceed 5MB and must be encoded in JSON.  It is estimated that a file containing approximately 21,000 printers will encode as a 5MB file.  The cryptographic hash is used to verify the integrity of the download.
+      * doesn't affect whether users can configure printers on individual devices
 
-      The file is downloaded and cached. It will be re-downloaded whenever the URL or the hash changes.
+      * supplements <ph name="PRINTERS_BULK_CONFIGURATION_POLICY_NAME">PrintersBulkConfiguration</ph> and individual users' printer setups
 
-      If this policy is set, <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> will download the file for printer configurations and make printers available in accordance with <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph>, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME">DevicePrintersAllowlist</ph>, and <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME">DevicePrintersBlocklist</ph>.
-
-      This policy has no effect on whether users can configure printers on individual devices.  It is intended to be supplementary to the configuration of printers by individual users.
-
-      This policy is additive to the <ph name="PRINTERS_BULK_CONFIGURATION_POLICY_NAME">PrintersBulkConfiguration</ph>.
-
-      If this policy is unset, there will be no device printers and the other <ph name="DEVICE_PRINTERS_POLICY_PATTERN">DevicePrinter*</ph> policies will be ignored.
-      ''',
+      If unset, there are no device printers, and the other <ph name="DEVICE_PRINTERS_POLICY_PATTERN">DevicePrinter*</ph> policies are ignored.''',
     },
     {
       'name': 'DevicePrintersAccessMode',
@@ -16039,12 +15978,15 @@
       'example_value': 1,
       'caption': '''Device printers configuration access policy.''',
       'tags': [],
-      'desc': '''Controls which printers from the <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph> are available to users.
+      'desc': '''Setting the policy designates which access policy applies to bulk printer configuration, controlling which printers from <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph> are available for users.
 
-      Designates which access policy is used for bulk printer configuration. If <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> is selected, all printers are shown. If <ph name="PRINTERS_BLOCKLIST">BlocklistRestriction</ph> is selected, <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME">DevicePrintersBlocklist</ph> is used to restrict access to the specified printers.  If <ph name="PRINTERS_ALLOWLIST">AllowlistPrintersOnly</ph> is selected, <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME">DevicePrintersAllowlist</ph> designates only those printers which are selectable.
+      * <ph name="POLICY_ENUM_DEVICEPRINTERSACCESSMODE_BLOCKLISTRESTRICTIONS">BlocklistRestriction</ph> (value 0), <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME">DevicePrintersBlocklist</ph> can restrict access to the specified printers
 
-      If this policy is not set, <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph> is assumed.
-      ''',
+      * <ph name="POLICY_ENUM_DEVICEPRINTERSACCESSMODE_ALLOWLISTPRINTERSONLY">AllowlistPrintersOnly</ph> (value 1), <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME">DevicePrintersAllowlist</ph> designates only those printers which are selectable
+
+      * <ph name="POLICY_ENUM_DEVICEPRINTERSACCESSMODE_ALLOWALL">AllowAll</ph> (value 2), all printers are allowed.
+
+      Leaving the policy unset applies <ph name="PRINTERS_ALLOW_ALL">AllowAll</ph>.''',
     },
     {
       'name': 'DevicePrintersBlocklist',
@@ -16063,12 +16005,7 @@
       'example_value':  ["id1", "id2", "id3"],
       'caption': '''Disabled enterprise device printers''',
       'tags': [],
-      'desc': '''Specifies the printers which a user cannot use.
-
-      This policy is only used if <ph name="PRINTERS_BLOCKLIST">BlocklistRestriction</ph> is chosen for <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph>.
-
-      If this policy is used, all printers are provided to the user except for the ids listed in this policy. The ids must correspond to the "id" or "guid" fields in the file specified in <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph>.
-      ''',
+      'desc': '''If <ph name="PRINTERS_BLOCKLIST">BlocklistRestriction</ph> is chosen for <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph>, then setting <ph name="DEVICE_PRINTERS_BLOCKLIST_POLICY_NAME">DevicePrintersBlocklist</ph> specifies which printers users can't use. All printers are provided to users, except for the IDs listed in this policy. The IDs must correspond to the <ph name="ID_FIELD">"id"</ph> or <ph name="GUID_FIELD">"guid"</ph> fields in the file specified in <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph>.''',
     },
     {
       'name': 'DevicePrintersAllowlist',
@@ -16088,12 +16025,7 @@
       'example_value':  ["id1", "id2", "id3"],
       'caption': '''Enabled enterprise device printers''',
       'tags': [],
-      'desc': '''Specifies the printers which a user can use.
-
-      This policy is only used if <ph name="PRINTERS_ALLOWLIST">AllowlistPrintersOnly</ph> is chosen for <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph>
-
-      If this policy is used, only the printers with ids matching the values in this policy are available to the user. The ids must correspond to the "id" or "guid" fields in the file specified in <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph>.
-      ''',
+      'desc': '''If <ph name="PRINTERS_ALLOWLIST">AllowlistPrintersOnly</ph> is chosen for <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME">DevicePrintersAccessMode</ph>, then setting <ph name="DEVICE_PRINTERS_ALLOWLIST_POLICY_NAME">DevicePrintersAllowlist</ph> specifies which printers users can use. Only the printers with IDs matching the values in this policy are available to users. The IDs must correspond to the <ph name="ID_FIELD">"id"</ph> or <ph name="GUID_FIELD">"guid"</ph> fields in the file specified in <ph name="DEVICE_PRINTERS_POLICY_NAME">DevicePrinters</ph>''',
     },
     {
       'name': 'TPMFirmwareUpdateSettings',
@@ -16798,7 +16730,7 @@
     },
     {
       'name': 'PrintPreviewUseSystemDefaultPrinter',
-      'owners': ['file://printing/OWNERS'],
+      'owners': ['file://printing/OWNERS', 'thestig@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': [
@@ -16824,11 +16756,9 @@
       'id': 373,
       'caption': '''Use System Default Printer as Default''',
       'tags': [],
-      'desc': '''Causes <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to use the system default printer as the default choice in Print Preview instead of the most recently used printer.
+      'desc': '''Setting the policy to Enabled means <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> uses the OS default printer as the default destination for print preview.
 
-      If you disable this setting or do not set a value, Print Preview will use the most recently used printer as the default destination choice.
-
-      If you enable this setting, Print Preview will use the OS system default printer as the default destination choice.''',
+      Setting the policy to Disabled or leaving it unset means <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> uses the most recently used printer as the default destination for print preview.''',
     },
     {
       'name': 'DeviceEcryptfsMigrationStrategy',
@@ -20350,10 +20280,9 @@
       'id': 532,
       'caption': '''Allows wilco diagnostics and telemetry controller''',
       'tags': [],
-      'desc': '''Allows an admin to control if telemetry and diagnostics data should be collected, processed and reported by wilco diagnostics and telemetry controller (DTC).
+      'desc': '''Setting the policy to Enabled when <ph name="WILCO_NAME">wilco</ph> diagnostics and telemetry controller (DTC) is available on the device turns collecting, processing, and reporting of telemetry and diagnostics data on.
 
-      If the policy is set to false or left unset, DTC is switched off and is not able to collect, process and report telemetry and diagnostics data from the device.
-      If wilco DTC is available on the given device and the policy is set to true, collecting, processing and reporting of telemetry and diagnostics data is switched on.''',
+      Setting the policy to Disabled or leaving it unset turns DTC off. It can't collect, process, or report telemetry and diagnostics data from the device.''',
     },
     {
       'name': 'AllowPopupsDuringPageUnload',
@@ -20404,13 +20333,9 @@
       'id': 535,
       'caption': '''Wilco DTC configuration''',
       'tags': [],
-      'desc': '''Provides a wilco DTC (diagnostics and telemetry controller) configuration.
+      'desc': '''Setting the policy configures the <ph name="WILCO_NAME">wilco</ph> diagnostics and telemetry controller (DTC), if available on the device. The setup size can't exceed 1MB (1,000,000 bytes) and must be in JSON format. The <ph name="WILCO_NAME">wilco</ph> DTC is responsible for handling it. The cryptographic hash verifies the integrity of the download. The configuration is downloaded and cached. It's redownloaded whenever the URL or the hash changes.
 
-      This policy allows to provide wilco DTC configuration that is allowed to be applied if wilco DTC is available on the given device and allowed by policy. The size of the configuration must not exceed 1MB (1000000 bytes) and must be encoded in JSON. The wilco DTC is responsible for handling it. The cryptographic hash is used to verify the integrity of the download.
-
-      The configuration is downloaded and cached. It will be re-downloaded whenever the URL or the hash changes.
-
-      If you set this policy, users cannot change or override it.''',
+      If you set this policy, users can't change it.''',
     },
     {
       'name': 'DevicePowerPeakShiftEnabled',
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb
index 5ce4459..caf0f16d 100644
--- a/components/policy/resources/policy_templates_de.xtb
+++ b/components/policy/resources/policy_templates_de.xtb
@@ -165,9 +165,6 @@
       Diese Richtlinie gilt nicht für Kiosknutzer.
 
       Warnung: Bei den Einstellungen „Wipe“ und „MinimalMigrate“ werden lokale Daten entfernt.</translation>
-<translation id="1247850578871017740">Wenn die Richtlinie auf einen gültigen Wert festgelegt ist, nutzt <ph name="PRODUCT_NAME" /> keine SSL- oder TLS-Versionen, die niedriger als die vorgegebene Version sind. Nicht erkannte Werte werden ignoriert.
-
-      Wenn diese Richtlinie nicht konfiguriert ist, zeigt <ph name="PRODUCT_NAME" /> einen Fehler für TLS 1.0 und TLS 1.1 an, den der Nutzer jedoch umgehen kann.</translation>
 <translation id="1252536192437793850">Websites erlauben, den Nutzer um Zugriff auf einen seriellen Port zu bitten</translation>
 <translation id="125655429495551011">Wird für die Richtlinie ein String festgelegt, wird er während der DHCP-Anfrage als Gerätehostname verwendet. Die Variablen <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" /> und <ph name="LOCATION_PLACEHOLDER" /> des Strings können durch Werte auf dem Gerät ersetzt werden, bevor der String als Hostname verwendet wird. Das Ergebnis muss ein gültiger Hostname gemäß RFC 1035, Abschnitt 3.1 sein.
 
@@ -318,11 +315,6 @@
 
           Wenn Sie diese Richtlinie konfigurieren, kann sie vom Nutzer nicht geändert oder überschrieben werden.</translation>
 <translation id="1502843533062797703">Blockieren von Codeeinschleusungen durch Drittanbieter-Software aktivieren</translation>
-<translation id="1503863096120373385">Konfiguriert die Einstellungen für die Lebensdauer von Browserdaten für <ph name="PRODUCT_NAME" />.
-      Mit dieser Richtlinie wird die Gültigkeitsdauer ausgewählter Browserdaten festgelegt. Diese Richtlinie ist nicht wirksam, wenn die Synchronisierung aktiviert ist.
-      Die folgenden Datentypen sind verfügbar: <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> und <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
-      Chrome entfernt regelmäßig Daten ausgewählter Typen, die älter sind als <ph name="TIME_TO_LIVE_IN_HOURS" />. Da Daten nur in bestimmten Intervallen gelöscht werden, können bestimmte Daten etwas länger bestehen bleiben, aber nie mehr als doppelt so lang wie die erwartete(n) <ph name="TIME_TO_LIVE_IN_HOURS" />.
-      </translation>
 <translation id="1509692106376861764">Diese Richtlinie wird ab <ph name="PRODUCT_NAME" />-Version 29 nicht mehr verwendet.</translation>
 <translation id="1512974677514081818">Stellt Konfigurationen für gerätegebundene Unternehmensdrucker bereit.
 
@@ -974,6 +966,7 @@
       Wird sie nicht konfiguriert, ist die Funktion "Zum Anrufen klicken" standardmäßig aktiviert.</translation>
 <translation id="2482676533225429905">Natives Messaging</translation>
 <translation id="2483146640187052324">Netzwerkaktionen über alle Netzwerkverbindungen vervollständigen</translation>
+<translation id="2496180316473517155">Browserverlauf</translation>
 <translation id="2498238926436517902">Ablage immer automatisch ausblenden</translation>
 <translation id="250022556568924228">Wenn die Richtlinie aktiviert ist, lädt <ph name="PRODUCT_OS_NAME" /> die Nutzungsbedingungen herunter und zeigt sie jedes Mal an, wenn eine Sitzung mit einem lokalen Gerätekonto gestartet wird. Die Nutzer können sich erst in der Sitzung anmelden, nachdem sie die Nutzungsbedingungen akzeptiert haben.
 
@@ -1119,6 +1112,7 @@
 <translation id="2702023190395322609">Empfehlungen zu Medien aktivieren</translation>
 <translation id="2706708761587205154">Drucken nur mit PIN zulassen</translation>
 <translation id="2707873794476722903">Safe Browsing ist im Standardmodus aktiv.</translation>
+<translation id="2709516037105925701">AutoFill</translation>
 <translation id="2714359695399346815">Wenn diese Richtlinie aktiviert wird oder nicht konfiguriert ist, wird der Einsatz von STUN-Servern aktiviert und Remote-Clients können diesen Computer finden und eine Verbindung herstellen, selbst wenn er sich hinter einer Firewall befindet.
 
       Ist diese Richtlinie deaktiviert und ausgehende UDP-Verbindungen werden von einer Firewall gefiltert, lässt dieser Computer Verbindungen von Client-Computern ausschließlich innerhalb des lokalen Netzwerks zu.</translation>
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index 724d9ccd..560b645 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -165,9 +165,6 @@
       Esta política no se aplicará a los usuarios de kioscos.
 
       Advertencia: "Wipe" y "MinimalMigrate" eliminarán los datos locales.</translation>
-<translation id="1247850578871017740">Si configuras la política en un valor válido, <ph name="PRODUCT_NAME" /> no usará versiones de SSL/TLS anteriores a las especificadas. Se ignorarán los valores que no se reconozcan.
-
-      Si no configuras esta política, <ph name="PRODUCT_NAME" /> mostrará un mensaje de error para TLS 1.0 y TLS 1.1, pero el usuario podrá omitirlo.</translation>
 <translation id="1252536192437793850">Permite que los sitios soliciten al usuario acceso a un puerto en serie</translation>
 <translation id="125655429495551011">Si estableces la política como una string, se aplicará la string como el nombre del host del dispositivo durante la solicitud de DHCP. Antes de usar la string como el nombre del host, se pueden reemplazar las variables <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" />, <ph name="LOCATION_PLACEHOLDER" /> de la string con valores del dispositivo. Esta sustitución generará un nombre de host válido (según RFC 1035, sección 3.1).
 
@@ -334,11 +331,6 @@
 
           Si la estableces, los usuarios no podrán cambiarla ni anularla.</translation>
 <translation id="1502843533062797703">Habilitar el bloqueo de inserción de software de terceros</translation>
-<translation id="1503863096120373385">Establece la configuración de la duración de los datos de navegación para <ph name="PRODUCT_NAME" />.
-      Esta política controla la cantidad de tiempo que se almacenarán los datos de navegación seleccionados. Esta política no tendrá efecto si se habilita la sincronización.
-      Los tipos de datos disponibles son <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> y <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
-      Periódicamente, Chrome quitará datos con una antigüedad mayor a <ph name="TIME_TO_LIVE_IN_HOURS" /> de los tipos seleccionados. Como esta acción se realiza a intervalos determinados, es posible que algunos datos se conserven un poco más de tiempo, pero nunca más del doble que el período de <ph name="TIME_TO_LIVE_IN_HOURS" /> esperado.
-      </translation>
 <translation id="1509692106376861764">Esta política se eliminó a partir de la versión 29 de <ph name="PRODUCT_NAME" />.</translation>
 <translation id="1512974677514081818">Proporciona configuraciones para las impresoras empresariales vinculadas a dispositivos.
 
@@ -1002,6 +994,7 @@
       Si no la estableces, se habilitará la función Llamar con un clic de forma predeterminada.</translation>
 <translation id="2482676533225429905">Mensajería nativa</translation>
 <translation id="2483146640187052324">Predecir acciones de la red en cualquier conexión de red</translation>
+<translation id="2496180316473517155">Historial de navegación</translation>
 <translation id="2498238926436517902">Siempre ocultar automáticamente los archivos</translation>
 <translation id="250022556568924228">Si estableces la política, <ph name="PRODUCT_OS_NAME" /> descargará las Condiciones del Servicio y las presentará a los usuarios cada vez que se inicie la sesión local del dispositivo. Los usuarios solo podrán acceder a la sesión cuando acepten las Condiciones del Servicio.
 
@@ -1150,6 +1143,7 @@
 <translation id="2702023190395322609">Habilitar las recomendaciones de contenido multimedia</translation>
 <translation id="2706708761587205154">Permite la impresión solo con PIN</translation>
 <translation id="2707873794476722903">Se activó la Navegación segura en el modo estándar.</translation>
+<translation id="2709516037105925701">Autocompletar</translation>
 <translation id="2714359695399346815">Si habilitas la política o no la estableces, se permitirá el uso de servidores STUN, lo que posibilitará que los clientes remotos descubran este equipo y se conecten con él aunque haya un firewall.
 
       Si no habilitas esta política y el firewall filtra las conexiones UDP en establecimiento, solo los clientes con equipos en la red local podrán conectarse con este equipo.</translation>
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index ab3774e..d405a8c 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -165,9 +165,6 @@
       Esta política no se aplica a los usuarios de kiosko.
 
       Advertencia: "Wipe" y "MinimalMigrate" eliminan los datos locales.</translation>
-<translation id="1247850578871017740">Si se le asigna un valor válido a esta política, <ph name="PRODUCT_NAME" /> no podrá usar las versiones de SSL/TLS anteriores a la versión especificada. Los valores que no se reconozcan se ignorarán.
-
-      Si no se establece esta política, <ph name="PRODUCT_NAME" /> mostrará un error para las versiones TLS 1.0 y TLS 1.1, pero el usuario podrá evitarlo.</translation>
 <translation id="1252536192437793850">Dejar que los sitios web pidan permiso al usuario para acceder a un puerto serie</translation>
 <translation id="125655429495551011">Si se define esta política como una cadena, la cadena se utiliza como nombre de host del dispositivo en la solicitud DHCP. La cadena puede incluir las variables <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" /> y <ph name="LOCATION_PLACEHOLDER" />, las cuales se sustituyen por valores del dispositivo antes de que se utilice como nombre de host. El valor que se obtenga de la sustitución debe ser un nombre de host válido (según la sección 3.1 de la RFC 1035).
 
@@ -334,11 +331,6 @@
 
           Si se asigna un valor a esta política, los usuarios no podrán cambiarlo ni anularlo.</translation>
 <translation id="1502843533062797703">Habilitar el bloqueo de inserción de software de terceros</translation>
-<translation id="1503863096120373385">Sirve para configurar los ajustes del periodo de vida de los datos de navegación de <ph name="PRODUCT_NAME" />.
-      Esta política controla el periodo de vida de determinados datos de navegación. Esta política no tiene efecto si la sincronización está habilitada.
-      Los tipos de datos disponibles son <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> y <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
-      Chrome retira regularmente tipos específicos de datos con una antigüedad superior a <ph name="TIME_TO_LIVE_IN_HOURS" />. Como se eliminan datos en intervalos concretos, es posible que algunos datos perduren más tiempo, pero nunca más del doble de lo esperado (<ph name="TIME_TO_LIVE_IN_HOURS" />).
-      </translation>
 <translation id="1509692106376861764">Esta política no está disponible desde la versión 29 de <ph name="PRODUCT_NAME" />.</translation>
 <translation id="1512974677514081818">Proporciona opciones de configuración para impresoras de empresa vinculadas a dispositivos.
 
@@ -1006,6 +998,7 @@
       Si no se establece esta política, la función Clic de llamada se habilitará de forma predeterminada.</translation>
 <translation id="2482676533225429905">Mensajes nativos</translation>
 <translation id="2483146640187052324">Predecir las acciones de red en cualquier conexión de red</translation>
+<translation id="2496180316473517155">Historial de navegación</translation>
 <translation id="2498238926436517902">Ocultar siempre automáticamente los archivos</translation>
 <translation id="250022556568924228">Si se establece la política, <ph name="PRODUCT_OS_NAME" /> descargará los Términos del Servicio y se los mostrará a los usuarios siempre que se inicie sesión con una cuenta local del dispositivo. Para iniciar sesión, los usuarios deben aceptar los Términos del Servicio.
 
@@ -1156,6 +1149,7 @@
 <translation id="2702023190395322609">Habilitar recomendaciones de contenido multimedia</translation>
 <translation id="2706708761587205154">Permitir imprimir solo con PIN</translation>
 <translation id="2707873794476722903">La función Navegación segura está activa en modo estándar.</translation>
+<translation id="2709516037105925701">Autocompletar</translation>
 <translation id="2714359695399346815">Si se habilita esta política o no se le asigna ningún valor, se permitirá el uso de servidores STUN, los clientes remotos podrán detectar estos equipos y establecer conexión con ellos aunque haya un cortafuegos.
 
       Si se inhabilita esta política y hay un cortafuegos que filtre las conexiones UDP salientes, este equipo solo permitirá las conexiones de equipos cliente que se encuentren en la red local.</translation>
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb
index 87cb73b..60b42d8 100644
--- a/components/policy/resources/policy_templates_fr.xtb
+++ b/components/policy/resources/policy_templates_fr.xtb
@@ -165,9 +165,6 @@
       Cette règle ne s'applique pas aux utilisateurs de kiosque.
 
       Avertissement : Les valeurs "Wipe" et "MinimalMigrate" entraînent la suppression des données locales.</translation>
-<translation id="1247850578871017740">Si cette règle est définie sur une valeur valide, <ph name="PRODUCT_NAME" /> n'utilise pas de versions SSL/TLS antérieures à la version spécifiée. Les valeurs non reconnues sont ignorées.
-
-      Si cette règle n'est pas configurée, un message d'erreur concernant TLS 1.0 et TLS 1.1 s'affiche dans <ph name="PRODUCT_NAME" />. Toutefois, l'utilisateur peut contourner le processus.</translation>
 <translation id="1252536192437793850">Autoriser les sites à demander à l'utilisateur d'accorder l'accès à un port série</translation>
 <translation id="125655429495551011">Si cette règle est définie sur une chaîne, celle-ci correspond au nom d'hôte de l'appareil lors de la requête DHCP. La chaîne peut contenir les variables <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" /> et <ph name="LOCATION_PLACEHOLDER" /> qui devront être remplacées par les valeurs sur l'appareil avant qu'elle ne soit utilisée comme nom d'hôte. Le résultat de ce remplacement doit former un nom d'hôte valide conformément à la norme RFC 1035, section 3.1.
 
@@ -334,11 +331,6 @@
 
           Si vous configurez cette règle, les utilisateurs ne peuvent ni la modifier, ni l'ignorer.</translation>
 <translation id="1502843533062797703">Activer le blocage de l'injection de logiciels tiers</translation>
-<translation id="1503863096120373385">Permet de configurer les paramètres de durée de conservation des données de navigation dans <ph name="PRODUCT_NAME" />.
-      Avec cette règle, vous pouvez contrôler combien de temps les données de navigation sélectionnées sont conservées. Elle n'a aucune incidence si la synchronisation est activée.
-      Les types de données disponibles sont les suivants : <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> et <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
-      Chrome supprimera régulièrement les données des types sélectionnés qui datent de plus de <ph name="TIME_TO_LIVE_IN_HOURS" />. Cette suppression n'intervenant qu'à certains intervalles, des données peuvent être conservées un peu plus longtemps, mais jamais plus du double des <ph name="TIME_TO_LIVE_IN_HOURS" /> prévues.
-      </translation>
 <translation id="1509692106376861764">Cette règle a été supprimée à partir de la version 29 de <ph name="PRODUCT_NAME" />.</translation>
 <translation id="1512974677514081818">Fournit les configurations des imprimantes d'entreprise associées à des appareils.
 
@@ -1008,6 +1000,7 @@
       Si vous ne définissez pas cette règle, la fonctionnalité Click to Call est activée par défaut.</translation>
 <translation id="2482676533225429905">Messagerie native</translation>
 <translation id="2483146640187052324">Prédire les actions réseau lors d'une connexion au réseau</translation>
+<translation id="2496180316473517155">Historique de navigation</translation>
 <translation id="2498238926436517902">Toujours masquer automatiquement l'étagère</translation>
 <translation id="250022556568924228">Si cette règle est activée, <ph name="PRODUCT_OS_NAME" /> télécharge les conditions d'utilisation et les présente aux utilisateurs dès qu'une session d'un compte local de l'appareil s'ouvre. Les utilisateurs ne peuvent se connecter à cette session qu'après avoir accepté lesdites conditions d'utilisation.
 
@@ -1153,6 +1146,7 @@
 <translation id="2702023190395322609">Activer les recommandations de contenus multimédias</translation>
 <translation id="2706708761587205154">Autoriser l'impression avec code uniquement</translation>
 <translation id="2707873794476722903">La navigation sécurisée est active et en mode de protection standard.</translation>
+<translation id="2709516037105925701">Saisie automatique</translation>
 <translation id="2714359695399346815">Si cette règle est activée ou qu'elle n'est pas configurée, elle permet d'utiliser des serveurs STUN. Les clients distants peuvent ainsi détecter cet ordinateur et s'y connecter même s'ils sont séparés par un pare-feu.
 
       Si cette règle est désactivée lorsque les connexions UDP sortantes sont filtrées par le pare-feu, l'ordinateur ne permet que la connexion d'ordinateurs clients au sein du réseau local.</translation>
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index b3d8421..a839840 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -165,9 +165,6 @@
       Kebijakan ini tidak berlaku untuk pengguna kios.
 
       Peringatan: Wipe dan MinimalMigrate akan menghapus data lokal.</translation>
-<translation id="1247850578871017740">Jika kebijakan disetel ke nilai yang valid, <ph name="PRODUCT_NAME" /> tidak akan menggunakan versi SSL/TLS lebih rendah dari versi yang ditentukan. Nilai yang tidak dikenal akan diabaikan.
-
-      Jika kebijakan tidak disetel, <ph name="PRODUCT_NAME" /> akan menampilkan error untuk TLS 1.0 dan TLS 1.1, tetapi pengguna dapat mengabaikannya.</translation>
 <translation id="1252536192437793850">Izinkan situs meminta pengguna memberikan akses ke port serial</translation>
 <translation id="125655429495551011">Menyetel kebijakan ke string akan memberlakukan string tersebut sebagai hostname perangkat selama permintaan DHCP. String tersebut dapat memiliki variabel <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" />, <ph name="LOCATION_PLACEHOLDER" /> yang akan diganti dengan nilai di perangkat sebelum digunakan sebagai hostname. Substitusi yang dihasilkan harus berupa hostname yang valid (sesuai dengan RFC 1035, bagian 3.1).
 
@@ -333,11 +330,6 @@
 
           Jika kebijakan ini ditetapkan, pengguna tidak dapat mengubah atau menggantinya.</translation>
 <translation id="1502843533062797703">Aktifkan pemblokiran injeksi software pihak ketiga</translation>
-<translation id="1503863096120373385">Mengonfigurasi setelan masa berlaku data penjelajahan untuk <ph name="PRODUCT_NAME" />.
-      Kebijakan ini mengontrol waktu aktif data penjelajahan yang dipilih. Kebijakan ini tidak berpengaruh jika Sinkronisasi diaktifkan.
-      Jenis data yang tersedia adalah <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" />, dan <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
-      Untuk data dengan jenis yang dipilih, Chrome akan secara berkala menghapus yang usianya lebih dari <ph name="TIME_TO_LIVE_IN_HOURS" />. Karena penghapusan ini hanya terjadi dalam interval tertentu, beberapa data mungkin aktif sedikit lebih lama tetapi tidak pernah melebihi dua kali lipat dari estimasi <ph name="TIME_TO_LIVE_IN_HOURS" />-nya.
-      </translation>
 <translation id="1509692106376861764">Kebijakan ini tidak lagi digunakan mulai <ph name="PRODUCT_NAME" /> versi 29.</translation>
 <translation id="1512974677514081818">Memberikan konfigurasi untuk printer perusahaan yang terikat ke perangkat.
 
@@ -1006,6 +998,7 @@
       Jika kebijakan ini tidak ditetapkan, fitur Click to Call akan diaktifkan secara default.</translation>
 <translation id="2482676533225429905">Perpesanan Asli</translation>
 <translation id="2483146640187052324">Prediksi tindakan jaringan di koneksi jaringan apa pun</translation>
+<translation id="2496180316473517155">Histori penjelajahan</translation>
 <translation id="2498238926436517902">Selalu sembunyikan rak secara otomatis</translation>
 <translation id="250022556568924228">Jika kebijakan disetel, <ph name="PRODUCT_OS_NAME" /> akan mendownload Persyaratan Layanan dan menampilkannya kepada pengguna saat sesi akun lokal perangkat dimulai. Pengguna hanya dapat login ke sesi setelah menerima Persyaratan Layanan.
 
@@ -1156,6 +1149,7 @@
 <translation id="2702023190395322609">Mengaktifkan Rekomendasi Media</translation>
 <translation id="2706708761587205154">Hanya izinkan pencetakan dengan PIN</translation>
 <translation id="2707873794476722903">Safe Browsing aktif dalam mode standar.</translation>
+<translation id="2709516037105925701">Isi-Otomatis</translation>
 <translation id="2714359695399346815">Jika kebijakan disetel ke Aktif atau tidak disetel, penggunaan server STUN akan diizinkan sehingga klien jarak jauh dapat menemukan serta terhubung ke perangkat ini, meskipun dipisahkan oleh firewall.
 
       Jika kebijakan disetel ke Nonaktif saat koneksi UDP keluar difilter oleh firewall, perangkat hanya akan mengizinkan koneksi dari perangkat klien dalam jaringan lokal.</translation>
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index 8e7c3cdf..4c7a102 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -170,9 +170,6 @@
       Il criterio non si applica agli utenti kiosk.
 
       Avviso: Wipe e MinimalMigrate comportano la rimozione dei dati locali.</translation>
-<translation id="1247850578871017740">Se il criterio viene impostato su un valore valido, <ph name="PRODUCT_NAME" /> non utilizza versioni SSL/TLS precedenti alla versione specificata. I valori non riconosciuti vengono ignorati.
-
-      Se il criterio non viene impostato, <ph name="PRODUCT_NAME" /> mostra un errore per TLS 1.0 e TLS 1.1, ma l'utente può ignorarlo.</translation>
 <translation id="1252536192437793850">Consenti ai siti di chiedere all'utente di concedere l'accesso a una porta seriale</translation>
 <translation id="125655429495551011">Se il criterio viene impostato su una stringa, questa viene applicata come nome host del dispositivo durante la richiesta DHCP. La stringa può comportare la sostituzione delle variabili <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" /> e<ph name="LOCATION_PLACEHOLDER" /> con i valori sul dispositivo prima che venga utilizzata come nome host. La conseguente sostituzione deve essere un nome host valido (come da RFC 1035, sezione 3.1).
 
@@ -335,11 +332,6 @@
 
           Se imposti questo criterio, gli utenti non potranno modificarlo o eseguirne l'override.</translation>
 <translation id="1502843533062797703">Attiva blocco inserimento da software di terze parti</translation>
-<translation id="1503863096120373385">Consente di configurare le impostazioni del periodo di validità dei dati di navigazione per <ph name="PRODUCT_NAME" />.
-      Questo criterio consente di controllare il periodo di validità dei dati di navigazione selezionati. Questo criterio non viene applicato se la sincronizzazione è attiva.
-      I tipi di dati disponibili sono i seguenti: <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> e <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
-      Chrome rimuove regolarmente i dati dei tipi selezionati che sono antecedenti al periodo indicato (<ph name="TIME_TO_LIVE_IN_HOURS" />). Poiché l'eliminazione avviene solo in determinati intervalli di tempo, alcuni dati potrebbero durare più a lungo, ma mai oltre il doppio del periodo previsto (<ph name="TIME_TO_LIVE_IN_HOURS" />).
-      </translation>
 <translation id="1509692106376861764">Questa norma non è più supportata a partire dalla versione 29 di <ph name="PRODUCT_NAME" />.</translation>
 <translation id="1512974677514081818">Consente di specificare le configurazioni delle stampanti aziendali associate ai dispositivi.
 
@@ -1005,6 +997,7 @@
       Se questo criterio non viene impostato, la funzionalità Click-to-call sarà attiva per impostazione predefinita.</translation>
 <translation id="2482676533225429905">Messaggi nativi</translation>
 <translation id="2483146640187052324">Prevedi le azioni di rete su qualsiasi connessione di rete</translation>
+<translation id="2496180316473517155">Cronologia di navigazione</translation>
 <translation id="2498238926436517902">Nascondi sempre automaticamente lo shelf</translation>
 <translation id="250022556568924228">Se il criterio viene configurato, <ph name="PRODUCT_OS_NAME" /> scarica i Termini di servizio e li presenta agli utenti a ogni avvio di sessione con un account locale del dispositivo. Gli utenti possono accedere alla sessione dopo aver accettato i Termini di servizio.
 
@@ -1155,6 +1148,7 @@
 <translation id="2702023190395322609">Attiva consigli di contenuti multimediali</translation>
 <translation id="2706708761587205154">Consenti la stampa solo con PIN</translation>
 <translation id="2707873794476722903">Navigazione sicura è attiva in modalità standard.</translation>
+<translation id="2709516037105925701">Compilazione automatica</translation>
 <translation id="2714359695399346815">Se il criterio viene impostato su Attivato o se non viene configurato, viene consentito l'utilizzo di server STUN, permettendo ai client remoti di rilevare e collegarsi a questo computer anche se sono separati da un firewall.
 
       Se il criterio viene impostato su Disattivato e le connessioni UDP in uscita vengono filtrate dal firewall, il computer consente soltanto connessioni da computer client all'interno della rete locale.</translation>
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index f87207a..b1a073cc 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -79,6 +79,11 @@
 <translation id="1099282607296956954">すべてのサイトに対してサイト分離を有効にする</translation>
 <translation id="1117535567637097036">このポリシーで設定したプロトコル ハンドラは、Android インテントの処理には使用されません。</translation>
 <translation id="1118093128235245168">接続されている USB デバイスへのアクセスを求めるメッセージをユーザーに表示することをサイトに許可する</translation>
+<translation id="1133814529606590009">このポリシーを有効に設定した場合、URL キーによる匿名化データの収集が常に有効になり、検索とブラウジングを改善するため、ユーザーがアクセスしたページの URL が Google に送信されます。
+
+      このポリシーを無効に設定した場合、URL キーによる匿名化データの収集は行われません。
+
+      このポリシーを設定した場合、ユーザーは設定を変更できません。未設定の場合、URL キーによる匿名化データの収集は初期状態で有効になりますが、ユーザーは設定を変更できます。</translation>
 <translation id="1138294736309071213">このポリシーは小売りモードでのみアクティブになります。
 
       スクリーンセーバーが小売りモードのデバイスのログイン画面に表示されるまでの期間を指定します。
@@ -161,9 +166,6 @@
       このポリシーはキオスクのユーザーには適用されません。
 
       警告: Wipe または MinimalMigrate に設定するとローカルデータが削除されます。</translation>
-<translation id="1247850578871017740">このポリシーでは、<ph name="PRODUCT_NAME" /> で使用する SSL / TLS の最小バージョンを指定できます。認識できない値は無視されます。
-
-      このポリシーを設定しない場合、<ph name="PRODUCT_NAME" /> では TLS 1.0 および TLS 1.1 についてエラーが表示されますが、ユーザーはこのエラーを回避できます。</translation>
 <translation id="1252536192437793850">ユーザーに対するシリアルポートへのアクセス要求をサイトに許可する</translation>
 <translation id="125655429495551011">このポリシーを文字列に設定した場合、その文字列が DHCP リクエストの際にデバイスのホスト名として適用されます。この文字列には変数 <ph name="ASSET_ID_PLACEHOLDER" />、<ph name="SERIAL_NUM_PLACEHOLDER" />、<ph name="MAC_ADDR_PLACEHOLDER" />、<ph name="MACHINE_NAME_PLACEHOLDER" />、<ph name="LOCATION_PLACEHOLDER" /> を含めることができます。文字列がホスト名として使用される前に、これらの変数はデバイスの値に置き換えられます。置き換えた後の値は、RFC 1035 の 3.1 項に沿った有効なホスト名となる必要があります。
 
@@ -178,6 +180,13 @@
       このポリシーを未設定のままにした場合、Google Sync を使用するかどうかをユーザーが選択できます。
 
       Google Sync を完全に無効にするには、Google 管理コンソールで Google Sync サービスを無効にするようおすすめします。</translation>
+<translation id="128059397544257017">このポリシーを有効に設定した場合、<ph name="CHROME_CLEANUP_NAME" /> で望ましくないソフトウェアが検出されたときに、<ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> で設定されたポリシー値に沿って、スキャンに関するレポートが Google に送信可能となります。<ph name="CHROME_CLEANUP_NAME" /> でクリーンアップを行うかどうかをユーザーに確認し、結果が Google に送信されます。
+
+      このポリシーを無効に設定した場合、<ph name="CHROME_CLEANUP_NAME" /> で望ましくないソフトウェアが検出されたときに、<ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> の値に関係なく、スキャンに関するレポートは Google に送信されません。<ph name="CHROME_CLEANUP_NAME" /> でクリーンアップを行うかどうかをユーザーに確認し、結果は Google に送信されません。
+
+      このポリシーを未設定のままにした場合、<ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> で設定されたポリシー値に沿って、<ph name="CHROME_CLEANUP_NAME" /> で望ましくないソフトウェアのスキャンに関するレポートが Google に送信可能となります。<ph name="CHROME_CLEANUP_NAME" /> でクリーンアップを行うかどうかと、望ましくないソフトウェアの検出精度を向上するために、結果を Google と共有するかどうかをユーザーに確認します。これらの結果には、Chrome のプライバシー ホワイトペーパーで説明されているとおり、ファイルのメタデータのほか自動インストールされた拡張機能とレジストリキーが含まれます。
+
+      <ph name="MS_WIN_NAME" /> では、この機能は <ph name="MS_AD_NAME" /> ドメインに追加されたインスタンス、Windows 10 Pro で実行されているインスタンス、<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> に登録されているインスタンスでのみ使用できます。</translation>
 <translation id="1290634681382861275">USB、Bluetooth、ポリシーの更新、デベロッパー モードなど、その他の設定を制御します。</translation>
 <translation id="1291880496936992484">警告: <ph name="PRODUCT_NAME" /> ではバージョン 52 で RC4 のサポートを完全に終了し(2016 年 9 月頃)、このポリシーも機能しなくなります。
 
@@ -330,11 +339,6 @@
 
           このポリシーを設定した場合、ユーザーが設定を変更したりオーバーライドしたりすることはできません。</translation>
 <translation id="1502843533062797703">第三者ソフトウェアからのコードの挿入をブロックする</translation>
-<translation id="1503863096120373385"><ph name="PRODUCT_NAME" /> の閲覧データの有効期間を設定します。
-      このポリシーでは、選択した閲覧データの有効期間を制御できます。同期が有効になっている場合、このポリシーは無視されます。
-      対象となるデータの種類は <ph name="DATA_TYPE_BROWSING_HISTORY" />、<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />、<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />、<ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />、<ph name="DATA_TYPE_PASSWORD" />、<ph name="DATA_TYPE_AUTOFILL" />、<ph name="DATA_TYPE_SITE_SETTINGS" />、<ph name="DATA_TYPE_HOSTED_APP_DATA" /> です。
-      Chrome では、選択した種類のデータについて、保存期間が <ph name="TIME_TO_LIVE_IN_HOURS" /> を経過すると定期的に削除されます。この削除は一定の間隔でのみ行われるため、一部のデータは保存期間が若干長くなることがありますが、指定した <ph name="TIME_TO_LIVE_IN_HOURS" /> より 2 倍以上長くなることはありません。
-      </translation>
 <translation id="1509692106376861764">このポリシーは <ph name="PRODUCT_NAME" /> バージョン 29 で廃止されました。</translation>
 <translation id="1512974677514081818">デバイスに接続された企業プリンタの設定を指定します。
 
@@ -715,6 +719,9 @@
       このポリシーを設定しないか空白のリストに設定した場合、管理対象デバイスでロックのクイック解除モードは使用できません。
 
       このポリシーはサポートが終了しています。代わりに <ph name="QUICK_UNLOCK_MODE_ALLOW_LIST_POLICY_NAME" /> を使用してください。</translation>
+<translation id="2033784678146670379">このポリシーを有効に設定した場合、ユーザーは <ph name="PRODUCT_OS_NAME" /> デバイスのハードウェアを使って、<ph name="ENTERPRISE_PLATFORM_KEYS_API" /> の <ph name="CHALLENGE_USER_KEY_FUNCTION" /> により、プライバシー CA に対して自分の ID をリモート認証できます。
+
+      このポリシーを無効に設定するか未設定のままにした場合、API 呼び出しは失敗し、エラーコードが返されます。</translation>
 <translation id="2036522553891755455">このポリシーを有効に設定した場合、共有の検出(<ph name="PRODUCT_NAME" /> のネットワーク ファイル共有の機能)では、<ph name="NETBIOS_PROTOCOL" /> を使用してネットワーク上の共有を検出します。このポリシーを無効に設定した場合、共有の検出処理でこのプロトコルは使用されません。
 
       このポリシーを未設定のままにした場合、デフォルトの動作は管理対象ユーザーに対して無効になり、それ以外のユーザーに対しては有効になります。</translation>
@@ -742,6 +749,9 @@
 <translation id="2082205219176343977">デバイスでの使用を許可する Chrome の最小バージョンを設定する。</translation>
 <translation id="208566302163036794">無効にした機能をブロックする</translation>
 <translation id="208623333578980446">電源管理の画面の wake lock を許可する</translation>
+<translation id="2090939118981888335">このポリシーを有効に設定した場合、データ圧縮プロキシが許可されます。このポリシーを無効に設定した場合、プロキシは許可されません。
+
+      このポリシーを設定した場合、ユーザーはこの設定を変更できません。未設定の場合、ユーザーはこの機能を使用するよう選択できます。</translation>
 <translation id="209586405398070749">Stable チャンネル</translation>
 <translation id="2098658257603918882">使用状況とクラッシュ関連データのレポートを有効にする</translation>
 <translation id="2104418465060359056">拡張機能とプラグインの情報についてレポートを作成する</translation>
@@ -981,6 +991,7 @@
       このポリシーを設定しない場合、Click-to-Call 機能はデフォルトで有効になります。</translation>
 <translation id="2482676533225429905">ネイティブ メッセージング</translation>
 <translation id="2483146640187052324">ネットワーク接続でネットワーク動作を予測する</translation>
+<translation id="2496180316473517155">閲覧履歴</translation>
 <translation id="2498238926436517902">常にシェルフを自動的に非表示にする</translation>
 <translation id="250022556568924228">このポリシーを設定した場合、デバイスのローカル アカウントのセッションが開始されると、<ph name="PRODUCT_OS_NAME" /> は利用規約をダウンロードしてユーザーに表示します。利用規約に同意した場合のみ、ユーザーはセッションにログインできます。このポリシーを未設定のままにした場合、利用規約は表示されません。このポリシーは、<ph name="PRODUCT_OS_NAME" /> による利用規約のダウンロードが可能な URL に設定する必要があります。利用規約は書式なしテキストで、MIME タイプの text/plain として配信してください。マークアップ形式は使用できません。</translation>
 <translation id="2500699707048942472">PIN の自動送信機能を使用すると、Chrome OS での PIN の入力方法を変更できます。
@@ -1127,6 +1138,7 @@
 <translation id="2702023190395322609">おすすめメディアを有効にする</translation>
 <translation id="2706708761587205154">PIN ありの印刷のみを許可します</translation>
 <translation id="2707873794476722903">セーフ ブラウジングを標準モードで有効にする。</translation>
+<translation id="2709516037105925701">自動入力</translation>
 <translation id="2714359695399346815">このポリシーを有効に設定するか未設定のままにすると、STUN サーバーの使用が許可され、リモート クライアントはファイアウォールの有無にかかわらずこのコンピュータを検出して接続できます。
 
       発信 UDP 接続がファイアウォールによってフィルタリングされている場合にこのポリシーを無効に設定すると、ローカル ネットワーク内のクライアント コンピュータのみがこのコンピュータに接続できます。</translation>
@@ -1138,6 +1150,9 @@
       このポリシーを無効に設定するか未設定のままにした場合、このおすすめは表示されません。
 
       このポリシーを設定した場合、ユーザーはこれを変更できません。</translation>
+<translation id="2724313944474873275">このポリシーを有効に設定するか未設定のままにした場合、<ph name="PRODUCT_OS_NAME" /> デバイスでリモート認証(確認済みアクセス)を使用して、<ph name="PRODUCT_OS_NAME" /> の CA で発行された証明書を取得し、デバイスで保護されたコンテンツが再生可能であることを証明できます。この処理では、デバイスを識別するハードウェア署名情報が <ph name="PRODUCT_OS_NAME" /> の CA に送信されます。
+
+      このポリシーを無効に設定した場合、デバイスでコンテンツ保護のリモート認証を使用できず、保護されたコンテンツを再生できません。</translation>
 <translation id="2725855586003209701">このポリシーを有効にするか、未設定のままにすると、登録済みのデバイスは最近ログインしたデバイス ユーザーのリストを報告します。
 
       このポリシーを無効に設定すると、登録済みのデバイスはユーザーのリストを報告しません。</translation>
@@ -2101,6 +2116,13 @@
 <translation id="4089849819635523136"><ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> がオンの場合に、<ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> では、アドレスバーで使用する、このプロバイダで検索を実行するためのキーワード(ショートカット)を指定できます。
 
       <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> を未設定のままにした場合、キーワードで検索プロバイダは実行されません。</translation>
+<translation id="409035987613226003">このポリシーを有効に設定した場合、Chrome の使用状況とクラッシュに関するデータが Google に匿名で送信され、ユーザーはこの設定を変更できません。このポリシーを無効に設定した場合、これらの情報は Google に送信されません。
+
+      このポリシーを設定した場合、ユーザーはこの設定を変更できません。未設定の場合、ユーザーはインストール時または初回起動時にこの設定を変更できます。
+
+      このポリシーは、<ph name="MS_AD_NAME" /> ドメインに追加された Windows インスタンス、デバイスの管理対象として登録された Windows 10 Pro または Enterprise インスタンス、MDM を介して管理されるか MCX を介してドメインに追加された macOS インスタンスでのみ使用できます。
+
+      (Chrome OS については DeviceMetricsReportingEnabled をご覧ください。)</translation>
 <translation id="4097556069183835428">このポリシーを None(なし)に設定した場合、拡大鏡が無効になります。
 
       このポリシーを設定した場合、ユーザーは設定を変更できません。設定しない場合、拡大鏡は最初は無効ですが、ユーザーはいつでも有効にできます。</translation>
@@ -2462,6 +2484,9 @@
 <translation id="4725528134735324213">Android バックアップ サービスを有効にする</translation>
 <translation id="4725801978265372736">ローカル ユーザーの名前とリモート アクセス ホストの所有者が一致していることを要件とする</translation>
 <translation id="4733471537137819387">統合された HTTP 認証に関連するポリシーです。</translation>
+<translation id="4735099388031364207">このポリシーを有効に設定した場合、デバイスのリモート認証が許可されます。証明書が自動的に生成され、デバイス管理サーバーにアップロードされます。
+
+      このポリシーを無効に設定するか未設定のままにした場合、証明書は生成されず、<ph name="ENTERPRISE_PLATFORM_KEYS_API" /> の呼び出しは失敗します。</translation>
 <translation id="4742973303930120836">背景のグラフィックの印刷モードを制限する</translation>
 <translation id="4752880493649142945">RemoteAccessHostTokenValidationUrl への接続用のクライアント証明書</translation>
 <translation id="4757053978738874325">「モノラル音声」のユーザー補助機能を有効にします。
@@ -2546,6 +2571,11 @@
 <translation id="489803897780524242">デフォルトの検索プロバイダに対する検索キーワードの置き換えを指定するパラメータ</translation>
 <translation id="4899708173828500852">セーフ ブラウジングを有効にする</translation>
 <translation id="4906194810004762807">デバイスポリシーの更新間隔</translation>
+<translation id="49093841899738146">このポリシーを有効に設定した場合、<ph name="PRODUCT_NAME" /> で Google サービス(ハングアウト Meet など)から WebRTC イベントログを収集して Google にアップロードできるようになります。これらのログには、RTP パケットの時間とサイズ、ネットワークの輻輳に関するフィードバック、音声および映像フレームの時間と品質に関するメタデータなど、<ph name="PRODUCT_NAME" /> での音声やビデオでの会議に関する問題をデバッグする際に役立つ診断情報が含まれます。会議の音声や映像の内容はログに含まれません。Google はデバッグを容易にする目的で、これらのログと、Google サービス自体により収集される他のログとをセッション ID を使って関連付けることがあります。
+
+      このポリシーを無効に設定した場合、ログの収集とアップロードは行われません。
+
+      ポリシーが未設定の場合、<ph name="PRODUCT_NAME" /> M76 まではデフォルトの設定によりログの収集とアップロードは行えません。<ph name="PRODUCT_NAME" /> M77 以降では、クラウドベースのユーザーレベル エンタープライズ ポリシーの対象となるほとんどのプロファイルから、ログの収集とアップロードをデフォルトで行うことができます。<ph name="PRODUCT_NAME" /> M77 から M80 までは、<ph name="PRODUCT_NAME" /> オンプレミス管理の対象となるプロファイルからも、ログの収集とアップロードをデフォルトで行うことができます。</translation>
 <translation id="4910101362791876581">ユーザーが使用できるプリンタを指定します。
 
       このポリシーは、<ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" /> の値に <ph name="PRINTERS_WHITELIST" /> が選択されている場合にのみ使用されます。
@@ -2557,6 +2587,9 @@
 <translation id="4917385247580444890">強い</translation>
 <translation id="4919122295221518724">混合コンテンツの厳密な取り扱いを有効にする</translation>
 <translation id="4923806312383904642">WebDriver による互換性のないポリシーのオーバーライドを許可する</translation>
+<translation id="4927214690104703256">このポリシーでは、<ph name="ENTERPRISE_PLATFORM_KEYS_API" /> の関数を使用したリモート認証を許可する拡張機能を指定できます。この API を使用する拡張機能は、このリストに追加する必要があります。
+
+      拡張機能がリストに追加されていないか、リストが設定されていない場合、API 呼び出しは失敗し、エラーコードが返されます。</translation>
 <translation id="4927797103413916381"><ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> が無効に設定されていない場合に、<ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> を有効に設定するか未設定のままにすると、不正なコンテンツを提供するサイトで新しいウィンドウやタブが開かれなくなります。
 
        <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> が無効に設定されているか、<ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> を無効に設定した場合は、不正なコンテンツを提供するサイトで新しいウィンドウやタブが開かれます。</translation>
@@ -2661,6 +2694,13 @@
 <translation id="5090209345759901501">Flash コンテンツ設定をすべてのコンテンツに拡張する</translation>
 <translation id="5090791951240382356">ソースの異なる辞書ポリシーの統合を許可する</translation>
 <translation id="5091315650312105069">HTTP で <ph name="BASIC_AUTH" /> 認証を許可する</translation>
+<translation id="5103112931744164177">このポリシーでは、DNS サーバーとの通信にオペレーティング システムの DNS クライアントと <ph name="PRODUCT_NAME" /> の組み込みの DNS クライアントのどちらのソフトウェア スタックを使用するかを管理できます。このポリシーは、使用する DNS サーバーの選択には影響しません。たとえば、オペレーティング システムで企業の DNS サーバーを使用するよう設定されている場合、組み込みの DNS クライアントでも同じサーバーが使用されます。また、DNS-over-HTTPS が使用されている場合は、このポリシーの対象となりません。<ph name="PRODUCT_NAME" /> では DNS-over-HTTPS リクエストに対して、常に組み込みのリゾルバを使用します。DNS-over-HTTPS の管理については、<ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" /> ポリシーをご覧ください。
+
+      このポリシーを有効に設定した場合、可能なときは組み込みの DNS クライアントが使用されます。
+
+      このポリシーを無効に設定した場合、DNS-over-HTTPS の使用時のみ、組み込みの DNS クライアントが使用されます。
+
+      このポリシーを未設定のままにした場合、<ph name="MAC_OS_NAME" />、<ph name="ANDROID_NAME" />(プライベート DNS も VPN も有効でない場合)、<ph name="PRODUCT_OS_NAME" /> では組み込みの DNS クライアントがデフォルトで有効になります。</translation>
 <translation id="5105313908130842249">画面がロックされるまでの時間(バッテリー電源での実行時)</translation>
 <translation id="5108031557082757679">無効な企業デバイス プリンタ</translation>
 <translation id="5109383437323376357">適用できるバリエーションを指定します</translation>
@@ -3515,6 +3555,11 @@
 
       このポリシーを設定しないか、リストを空白にした場合、すべてのスキームが <ph name="PRODUCT_NAME" /> でアクセス可能になります。</translation>
 <translation id="6338982178236723271">システム情報を報告する</translation>
+<translation id="6347363725343851058">このポリシーを有効に設定した場合、バックグラウンド モードがオンになります。バックグラウンド モードでは、<ph name="PRODUCT_NAME" /> の処理が OS のログイン時に開始され、ブラウザ ウィンドウがすべて閉じられた後も続行されます。これにより、バックグラウンド アプリとブラウジング セッション(すべてのセッション Cookie を含む)は有効のままになります。バックグラウンド処理中はシステムトレイにアイコンが表示され、このアイコンからいつでも処理を終了できます。
+
+      このポリシーを無効に設定した場合、バックグラウンド モードはオフになります。
+
+      このポリシーを設定した場合、ユーザーはブラウザ設定でこのモードを変更できません。未設定の場合、バックグラウンド モードは初期状態でオフになりますが、ユーザーはこのモードを変更できます。</translation>
 <translation id="6353890097388312479">このポリシーを All(0)に設定するか未設定のままにした場合、ユーザーは、すべての CA 証明書の信頼設定の編集、ユーザーが取り込んだ証明書の削除、証明書マネージャーによる証明書の取り込みを行うことができます。このポリシーを UserOnly(1)に設定した場合、ユーザーは、ユーザーが取り込んだ証明書のみを管理でき、組み込みの証明書の信頼設定を変更することはできません。このポリシーを None(2)に設定した場合、ユーザーは CA 証明書を表示できます(管理はできません)。</translation>
 <translation id="6362856770865555544">このポリシーを有効に設定するか未設定のままにした場合、<ph name="PRODUCT_NAME" /> で WPAD(ウェブプロキシ自動検出)の最適化が有効になります。
 
@@ -3825,6 +3870,9 @@
 <translation id="6815483833848348029">このポリシーを有効に設定するか未設定のままにした場合、デバイスのローカル アカウントが遅延なしで自動ログインするように設定されていれば、デバイスがオフラインのときに <ph name="PRODUCT_OS_NAME" /> でネットワーク設定メッセージが表示されます。
 
       このポリシーを無効に設定した場合は、代わりにエラー メッセージが表示されます。</translation>
+<translation id="6819838337315703072"><ph name="LINUX_OS_NAME" /> アプリのサポートが有効になっている場合、このポリシーを有効に設定すると、<ph name="LINUX_OS_NAME" /> アプリの使用状況に関する情報がサーバーに送信されます。
+
+      このポリシーを無効に設定するか未設定のままにした場合、使用状況に関する情報は送信されません。</translation>
 <translation id="6821268164692776674"><ph name="CLOUD_PRINT_NAME" />と「Google ドライブに保存」の送信先</translation>
 <translation id="6823711520976094072">1 MB 未満に設定するか未設定のままにした場合、<ph name="PRODUCT_OS_NAME" /> では、デフォルトで 256 MB のキャッシュ サイズを使用して、1 台のデバイスで複数のユーザーがインストールするアプリと拡張機能をキャッシュに保存します。これにより、ユーザーごとに繰り返しダウンロードする必要がなくなります。</translation>
 <translation id="682408981080798691">このポリシーを有効に設定するか未設定のままにした場合、レンダラコードの整合性チェックが有効になります。
@@ -3864,6 +3912,9 @@
 
       このポリシーはサポートが終了しています。代わりに <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" /> を使用してください。</translation>
 <translation id="684856667300805181">このポリシーは <ph name="PRODUCT_NAME" /> 68 で削除され、<ph name="ARC_GLS_POLICY_NAME" /> に置き換えられました。</translation>
+<translation id="6848721032946289937">このポリシーを有効に設定するか未設定のままにした場合、ハードウェア アクセラレーションがオンになります(可能な場合)。
+
+      このポリシーを無効に設定した場合、ハードウェア アクセラレーションはオフになります。</translation>
 <translation id="6851199885688265233">「カーソルによるハイライト表示」のユーザー補助機能を有効にする</translation>
 <translation id="6851315055469993882">グローバルなスコープでの HTTP 認証キャッシュを有効にする</translation>
 <translation id="6854767649023671426">このポリシーを有効に設定するか未設定のままにした場合、VideoCaptureAllowedUrls リストで指定されている URL 以外では、ユーザーに動画キャプチャのアクセスを確認するメッセージが表示されます。
@@ -4003,6 +4054,9 @@
 <translation id="7027785306666625591"><ph name="PRODUCT_OS_NAME" /> の電源管理を設定します。
 
       これらのポリシーでは、アイドル状態が一定時間続いたときの <ph name="PRODUCT_OS_NAME" /> の動作を設定できます。</translation>
+<translation id="7027923238554618852">このポリシーでは、<ph name="PRODUCT_OS_NAME" /> で使用するタスク スケジューラ設定を指定できます。ポリシーの値は、タスク スケジューラで安定性とパフォーマンスのどちらを重視するかに応じて、<ph name="CONSERVATIVE_VALUE" /> または <ph name="PERFORMANCE_VALUE" /> に設定できます。
+
+      未設定の場合、ユーザーが設定を選択できます。</translation>
 <translation id="7030205756530739128"><ph name="DEVICE_BATTERY_CHARGE_MODE_NAME" /> が <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_MODE_NAME" /> に設定されている場合、バッテリーの充電率(%)に基づいて充電を開始するタイミングを <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_START_CHARGING_POLICY_NAME" /> の設定によってカスタマイズできます。この値には <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_STOP_CHARGING_POLICY_NAME" /> より 5% 以上低い値を指定してください。
 
       このポリシーを未設定のままにした場合、標準のバッテリー充電モードが適用されます。</translation>
@@ -4129,6 +4183,9 @@
 <translation id="718126088895133062">このポリシーでは、このデバイスの <ph name="PLUGIN_VM_NAME" /> のライセンス ユーザー ID を指定します。</translation>
 <translation id="7185078796915954712">TLS 1.3</translation>
 <translation id="7185630966939835143">スペルミスの解決に Google のウェブサービスを使用する</translation>
+<translation id="718850220532931090">このポリシーはサポートが終了しています。代わりに <ph name="ATTESTATION_EXTENSION_ALLOWLIST_POLICY_NAME" /> を使用してください。このポリシーでは、<ph name="ENTERPRISE_PLATFORM_KEYS_API" /> の <ph name="CHALLENGE_USER_KEY_FUNCTION" /> 関数を使用したリモート認証を許可する拡張機能を指定できます。この API を使用する拡張機能は、このリストに追加する必要があります。
+
+      拡張機能がリストに追加されていないか、リストが設定されていない場合、API 呼び出しは失敗し、エラーコードが返されます。</translation>
 <translation id="718956142899066210">更新で許可される接続タイプ</translation>
 <translation id="7190286937411178540">「キーボード フォーカスによるハイライト表示」のユーザー補助機能を有効にする</translation>
 <translation id="7193489339723768342">このポリシーでは、リクエスト元 URL のセキュリティ オリジンと照合する URL パターン リストを指定できます。一致するものについては、音声キャプチャ デバイスへのアクセスが許可されます。その際、確認のメッセージは表示されません。
@@ -4911,6 +4968,9 @@
 <translation id="8357681633047935212">ユーザー セッションの長さを制限する</translation>
 <translation id="8357989008292691856">ログイン ユーザーの許可リスト</translation>
 <translation id="8359734107661430198">ExampleDeprecatedFeature API を 2008 年 9 月 2 日いっぱい有効にする</translation>
+<translation id="8367069206652407172">このポリシーを無効に設定した場合、ユーザーはタスク マネージャーのプロセスを終了できません。
+
+      このポリシーを有効に設定するか未設定のままにした場合、ユーザーはタスク マネージャーのプロセスを終了できます。</translation>
 <translation id="8367209241899435947">Windows で Chrome クリーンアップを有効にする</translation>
 <translation id="8367473200119029349">クラウド レポート</translation>
 <translation id="8369602308428138533">画面がオフになるまでの時間(AC 電源での実行時)</translation>
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index 850a5d9a..f56e7fc5 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -165,9 +165,6 @@
       이 정책은 키오스크 사용자에게는 적용되지 않습니다.
 
       경고: Wipe 및 MnimalMigrate는 로컬 데이터를 삭제합니다.</translation>
-<translation id="1247850578871017740">정책을 유효한 값으로 설정하면 <ph name="PRODUCT_NAME" />에서 특정 버전 미만의 SSL/TLS 버전을 사용하지 않습니다. 알 수 없는 값은 무시됩니다.
-
-      정책을 설정하지 않으면 <ph name="PRODUCT_NAME" />에서 TLS 1.0 및 TLS 1.1에 관한 오류를 표시하지만 사용자는 이를 우회할 수 있습니다.</translation>
 <translation id="1252536192437793850">사이트에서 사용자에게 직렬 포트 액세스를 요청하도록 허용</translation>
 <translation id="125655429495551011">정책을 문자열에 설정하면 DHCP 요청 중 문자열이 기기 호스트 이름으로 사용됩니다. 문자열은 <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" />, <ph name="LOCATION_PLACEHOLDER" /> 등의 변수를 가질 수 있으며 기기에서 값으로 대체된 후 호스트 이름으로 사용됩니다. 그 결과로 나오는 대체 값은 RFC 1035, 섹션 3.1에 따라 유효한 호스트 이름이어야 합니다.
 
@@ -334,11 +331,6 @@
 
           정책이 설정되면 사용자가 변경하거나 재정의할 수 없습니다.</translation>
 <translation id="1502843533062797703">타사 소프트웨어 삽입 차단 사용</translation>
-<translation id="1503863096120373385"><ph name="PRODUCT_NAME" />의 인터넷 사용 기록 보관 기간 설정을 구성합니다.
-      선택한 인터넷 사용 기록을 보관할 기간을 결정하는 정책입니다. 이 정책은 동기화가 사용 설정된 경우 적용되지 않습니다.
-      사용 가능한 데이터 유형은 <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> 및 <ph name="DATA_TYPE_HOSTED_APP_DATA" />입니다.
-      Chrome에서 <ph name="TIME_TO_LIVE_IN_HOURS" /> 값을 경과한 데이터 중 내가 선택한 유형의 데이터를 정기적으로 삭제합니다. 일정한 간격이 지나야만 삭제되므로 일부 데이터가 좀 더 오래 보관될 수 있지만 예상 기간인 <ph name="TIME_TO_LIVE_IN_HOURS" />보다 2배 이상으로 길게 보관되지는 않습니다.
-      </translation>
 <translation id="1509692106376861764">이 정책은 <ph name="PRODUCT_NAME" /> 버전 29를 기준으로 지원 중단되었습니다.</translation>
 <translation id="1512974677514081818">기기에 연결된 회사 프린터의 설정을 제공합니다.
 
@@ -1003,6 +995,7 @@
       정책을 설정하지 않으면 클릭 투 콜 기능이 기본적으로 사용 설정됩니다.</translation>
 <translation id="2482676533225429905">기본 메시지</translation>
 <translation id="2483146640187052324">모든 네트워크 연결의 네트워크 활동 예측</translation>
+<translation id="2496180316473517155">인터넷 사용 기록</translation>
 <translation id="2498238926436517902">항상 실행기 자동 숨김</translation>
 <translation id="250022556568924228">정책을 설정하면 <ph name="PRODUCT_OS_NAME" />에서 서비스 약관을 다운로드하여 기기 로컬 계정 세션이 시작될 때마다 사용자에게 서비스 약관을 표시합니다. 사용자는 서비스 약관을 수락한 후에만 세션에 로그인할 수 있습니다.
 
@@ -1153,6 +1146,7 @@
 <translation id="2702023190395322609">미디어 추천 사용 설정</translation>
 <translation id="2706708761587205154">PIN이 있을 때만 인쇄 허용</translation>
 <translation id="2707873794476722903">세이프 브라우징이 표준 모드에서 활성화됩니다.</translation>
+<translation id="2709516037105925701">자동 완성</translation>
 <translation id="2714359695399346815">정책을 사용 설정하거나 설정하지 않으면 STUN 서버를 사용할 수 있으므로 방화벽으로 분리되어 있더라도 원격 클라이언트에서 이 컴퓨터를 찾아서 연결할 수 있습니다.
 
       정책을 사용 중지하면 방화벽에 의해 발신 UDP 연결이 필터링될 경우 로컬 네트워크 내의 클라이언트 컴퓨터에서만 컴퓨터에 연결할 수 있습니다.</translation>
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index 3c87896..b25958b 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -165,9 +165,6 @@
       Dit beleid is niet van toepassing op kiosk-gebruikers.
 
       Waarschuwing: Met Wipe en MinimalMigrate worden lokale gegevens verwijderd.</translation>
-<translation id="1247850578871017740">Als je het beleid instelt op een geldige waarde, gebruikt <ph name="PRODUCT_NAME" /> geen SSL/TLS-versies lager dan de opgegeven versie. Niet-herkende waarden worden genegeerd.
-
-      Als dit beleid niet is ingesteld, geeft <ph name="PRODUCT_NAME" /> een fout weer voor TLS 1.0 en TLS 1.1. De gebruiker kan deze fout wel omzeilen.</translation>
 <translation id="1252536192437793850">Sites toestaan om gebruikers toestemming te vragen voor toegang tot een seriële poort</translation>
 <translation id="125655429495551011">Als je het beleid instelt op een tekenreeks, wordt de tekenreeks tijdens het DHCP-verzoek gebruikt als hostnaam van het apparaat. De tekenreeks kan de variabelen <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" /> en <ph name="LOCATION_PLACEHOLDER" /> bevatten, die worden vervangen door waarden op het apparaat voordat de tekenreeks als hostnaam wordt gebruikt. De waarden moeten worden vervangen door een geldige hostnaam volgens RFC 1035, gedeelte 3.1.
 
@@ -324,11 +321,6 @@
 
           Als je dit beleid instelt, kunnen gebruikers dit niet wijzigen of overschrijven.</translation>
 <translation id="1502843533062797703">Blokkering van injectie van software van derden inschakelen</translation>
-<translation id="1503863096120373385">Hiermee configureer je de instellingen voor de levensduur van browsergegevens voor <ph name="PRODUCT_NAME" />.
-      Dit beleid beheert de levensduur van geselecteerde browsergegevens. Dit beleid is niet van kracht als synchronisatie is ingeschakeld.
-      De beschikbare gegevenstypen zijn <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> en <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
-      Chrome verwijdert regelmatig gegevens van geselecteerde typen die ouder zijn dan <ph name="TIME_TO_LIVE_IN_HOURS" />. Aangezien deze verwijdering alleen met bepaalde intervallen plaatsvindt, kan de levensduur van bepaalde gegevens iets langer zijn, maar nooit langer dan twee keer de verwachte <ph name="TIME_TO_LIVE_IN_HOURS" />.
-      </translation>
 <translation id="1509692106376861764">Dit beleid wordt niet meer gebruikt sinds <ph name="PRODUCT_NAME" /> versie 29.</translation>
 <translation id="1512974677514081818">Biedt configuraties voor bedrijfsprinters die aan apparaten zijn gekoppeld.
 
@@ -984,6 +976,7 @@
       Als je dit beleid niet instelt, is de functie 'Klik om te bellen' standaard ingeschakeld.</translation>
 <translation id="2482676533225429905">Systeemeigen berichten</translation>
 <translation id="2483146640187052324">Netwerkacties voorspellen voor elke netwerkverbinding</translation>
+<translation id="2496180316473517155">Browsegeschiedenis</translation>
 <translation id="2498238926436517902">Archief altijd automatisch verbergen</translation>
 <translation id="250022556568924228">Als je het beleid instelt, downloadt <ph name="PRODUCT_OS_NAME" /> de servicevoorwaarden en geeft deze aan gebruikers weer als er een lokale accountsessie op het apparaat wordt gestart. Gebruikers kunnen alleen inloggen bij de sessie nadat ze de servicevoorwaarden hebben geaccepteerd.
 
@@ -1129,6 +1122,7 @@
 <translation id="2702023190395322609">Media-aanbevelingen inschakelen</translation>
 <translation id="2706708761587205154">Afdrukken alleen toestaan met pincode</translation>
 <translation id="2707873794476722903">Safe Browsing is actief in de standaardmodus.</translation>
+<translation id="2709516037105925701">Automatisch invullen</translation>
 <translation id="2714359695399346815">Als je dit beleid inschakelt of niet instelt, kun je STUN-servers gebruiken, zodat externe clients dit apparaat kunnen zien en er verbinding mee kunnen maken, zelfs door een firewall.
 
       Als je het beleid uitschakelt terwijl uitgaande UDP-verbindingen worden gefilterd door de firewall, staat dit apparaat alleen verbindingen toe met clientapparaten binnen het lokale netwerk.</translation>
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index 3f871f5..c52aa67 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -161,9 +161,6 @@
       Essa política não se aplica a usuários de quiosque.
 
       Cuidado: Wipe e MinimalMigrate removem dados locais.</translation>
-<translation id="1247850578871017740">Se a política for definida com um valor válido, o <ph name="PRODUCT_NAME" /> não usará versões SSL/TLS anteriores à versão especificada. Valores não reconhecidos serão ignorados.
-
-      Se esta política não for definida, o <ph name="PRODUCT_NAME" /> exibirá uma mensagem de erro para TLS 1.0 e TLS 1.1, mas o usuário poderá ignorá-la.</translation>
 <translation id="1252536192437793850">Permitir que os sites peçam ao usuário para conceder acesso a uma porta serial</translation>
 <translation id="125655429495551011">Se a política for definida como uma string, a string será aplicada como nome do host do dispositivo durante a solicitação de DHCP. A string pode ter as variáveis <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" /> e <ph name="LOCATION_PLACEHOLDER" />, que serão substituídas por valores no dispositivo antes de serem usadas como nome do host. A substituição resultante precisa ser um nome de host válido, conforme o RFC 1035, seção 3.1.
 
@@ -320,11 +317,6 @@
 
           Se você definir esta política, o usuário não poderá mudá-la ou substituí-la.</translation>
 <translation id="1502843533062797703">Ativar bloqueio de injeção de software de terceiros</translation>
-<translation id="1503863096120373385">Define as configurações do ciclo de vida dos dados de navegação do <ph name="PRODUCT_NAME" />.
-      Esta política controla a duração dos dados de navegação selecionados. Ela não terá efeito se a sincronização estiver ativada.
-      Os tipos de dados disponíveis são: <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> e <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
-      O Chrome removerá regularmente dados de tipos selecionados com mais de <ph name="TIME_TO_LIVE_IN_HOURS" />. Como essa exclusão acontece apenas em intervalos específicos, alguns dados podem ser mantidos por mais tempo, mas nunca mais de duas vezes o esperado (<ph name="TIME_TO_LIVE_IN_HOURS" />).
-      </translation>
 <translation id="1509692106376861764">Esta política teve o uso suspenso a partir da versão 29 do <ph name="PRODUCT_NAME" />.</translation>
 <translation id="1512974677514081818">Fornece configurações para impressoras empresariais vinculadas a dispositivos.
 
@@ -989,6 +981,7 @@
       Se esta política não for definida, o recurso "Clique para ligar" ficará ativado por padrão.</translation>
 <translation id="2482676533225429905">Mensagens nativas</translation>
 <translation id="2483146640187052324">Prever ações da rede em qualquer conexão de rede</translation>
+<translation id="2496180316473517155">Histórico de navegação</translation>
 <translation id="2498238926436517902">Sempre ocultar automaticamente a estante</translation>
 <translation id="250022556568924228">A definição desta política significa que o <ph name="PRODUCT_OS_NAME" /> faz o download dos Termos de Serviço e os apresenta aos usuários ao início de cada sessão de uma conta local do dispositivo. Os usuários só poderão fazer login na sessão após aceitarem os Termos de Serviço.
 
@@ -1139,6 +1132,7 @@
 <translation id="2702023190395322609">Ativar recomendações de mídia</translation>
 <translation id="2706708761587205154">Permitir impressão apenas com PIN</translation>
 <translation id="2707873794476722903">O "Navegação segura" está ativo no modo padrão.</translation>
+<translation id="2709516037105925701">Preenchimento automático</translation>
 <translation id="2714359695399346815">Se a política for definida como "Ativada" ou deixada sem definição, o uso de servidores STUN será permitido, isso faz com que clientes remotos possam descobrir e se conectar a esta máquina, mesmo quando separados por um firewall.
 
       Se a política for definida como "Desativada" e as conexões de saída UDP forem filtradas pelo firewall, a máquina permitirá apenas conexões de máquinas clientes na rede local.</translation>
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb
index 2a75e04..64c78d7 100644
--- a/components/policy/resources/policy_templates_ru.xtb
+++ b/components/policy/resources/policy_templates_ru.xtb
@@ -162,9 +162,6 @@
       Правило не применяется к пользователям устройств в режиме киоска.
 
       Внимание! Если задано значение Wipe или MinimalMigrate, локальные данные будут удалены.</translation>
-<translation id="1247850578871017740">Если правилу задать действительное значение, <ph name="PRODUCT_NAME" /> не будет использовать технологии SSL и TLS старше определенной версии. Нераспознанные значения игнорируются.
-
-      Если правило не настроено, <ph name="PRODUCT_NAME" /> будет сообщать об ошибке для протоколов TLS 1.0 и TLS 1.1, но пользователь сможет обойти ее.</translation>
 <translation id="1252536192437793850">Разрешить сайтам запрашивать доступ к последовательным портам</translation>
 <translation id="125655429495551011">Если вы укажете в правиле значение, оно будет использоваться как имя хоста устройства в DHCP-запросе. Строка может содержать переменные <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" /> и <ph name="LOCATION_PLACEHOLDER" />. Они заменяются параметрами устройства. Полученное значение должно быть допустимым именем хоста (см. RFC 1035, раздел 3.1).
 
@@ -331,11 +328,6 @@
 
           Если правило настроено, пользователи не могут изменить или переопределить его.</translation>
 <translation id="1502843533062797703">Запретить ПО независимых производителей передавать код</translation>
-<translation id="1503863096120373385">Правило устанавливает настройки автоматической очистки данных для браузера <ph name="PRODUCT_NAME" />.
-      С помощью правила можно задать срок хранения выбранных данных, таких как история браузера, кеш, файлы cookie и т. д. Правило не работает при включенной синхронизации.
-      Вы можете выбрать следующие типы данных: <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> и <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
-      Браузер Chrome будет удалять выбранные данные, которые хранятся дольше <ph name="TIME_TO_LIVE_IN_HOURS" />. Поскольку удаление происходит с определенной периодичностью, фактический срок хранения некоторой информации (<ph name="TIME_TO_LIVE_IN_HOURS" />) может оказаться больше, но не более чем вдвое ожидаемого.
-      </translation>
 <translation id="1509692106376861764">Это правило не поддерживается в <ph name="PRODUCT_NAME" /> версии 29 и будет исключено из более поздних версий.</translation>
 <translation id="1512974677514081818">Это правило настраивает корпоративные принтеры, связанные с устройствами.
 
@@ -994,6 +986,7 @@
       Если не настроить это правило, функция вызова по нажатию будет по умолчанию включена.</translation>
 <translation id="2482676533225429905">Обмен сообщениями с оригинальными приложениями</translation>
 <translation id="2483146640187052324">Всегда предопределять параметры сети</translation>
+<translation id="2496180316473517155">История браузера</translation>
 <translation id="2498238926436517902">Автоматическое скрытие панели загрузок</translation>
 <translation id="250022556568924228">Если это правило настроено, <ph name="PRODUCT_OS_NAME" /> скачивает Условия использования и показывает их пользователю в начале каждого сеанса работы в локальном аккаунте. Начать работу можно, только приняв эти условия.
 
@@ -1139,6 +1132,7 @@
 <translation id="2702023190395322609">Включить советы о том, что посмотреть</translation>
 <translation id="2706708761587205154">Разрешить печать только с вводом PIN-кода</translation>
 <translation id="2707873794476722903">Безопасный просмотр включен в режиме стандартной защиты</translation>
+<translation id="2709516037105925701">Автозаполнение</translation>
 <translation id="2714359695399346815">Если правило включено или не задано, можно будет использовать серверы STUN. Удаленные клиенты смогут находить это устройство и подключаться к нему, даже когда используется брандмауэр.
 
       Если отключить правило при условии, что все исходящие UDP-подключения фильтруются брандмауэром, к этому компьютеру можно будет подключаться только с клиентских устройств в локальной сети.</translation>
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index e70bdac..e79abd7 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -165,9 +165,6 @@
       นโยบายนี้ไม่มีผลกับผู้ใช้คีออสก์
 
       คำเตือน: Wipe และ MinimalMigrate จะนำข้อมูลในเครื่องออก</translation>
-<translation id="1247850578871017740">การตั้งค่านโยบายด้วยค่าที่ถูกต้องจะทำให้ <ph name="PRODUCT_NAME" /> ไม่ใช้ SSL/TLS เวอร์ชันต่ำกว่าเวอร์ชันที่ระบุ ระบบจะเพิกเฉยต่อค่าที่ไม่รู้จัก
-
-      หากไม่ได้ตั้งค่านโยบายนี้ไว้ <ph name="PRODUCT_NAME" /> ก็จะแสดงข้อผิดพลาดสำหรับ TLS 1.0 และ TLS 1.1 แต่ผู้ใช้จะข้ามไปได้</translation>
 <translation id="1252536192437793850">อนุญาตให้เว็บไซต์ขอให้ผู้ใช้ให้สิทธิ์เข้าถึงพอร์ตอนุกรม</translation>
 <translation id="125655429495551011">การตั้งค่านโยบายเป็นสตริงจะใช้สตริงดังกล่าวเป็นชื่อโฮสต์ของอุปกรณ์ในระหว่างที่ขอ DHCP สตริงอาจมีตัวแปร <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" />, <ph name="LOCATION_PLACEHOLDER" /> ซึ่งระบบจะแทนที่ด้วยค่าในอุปกรณ์ก่อนที่จะใช้เป็นชื่อโฮสต์ ชื่อที่จะแทนที่ได้จะต้องเป็นชื่อโฮสต์ที่ถูกต้อง (ตาม RFC 1035 ส่วน 3.1)
 
@@ -324,11 +321,6 @@
 
           หากตั้งค่านโยบายนี้ ผู้ใช้จะเปลี่ยนหรือลบล้างไม่ได้</translation>
 <translation id="1502843533062797703">เปิดใช้การบล็อกการแทรกซอฟต์แวร์ของบุคคลที่สาม</translation>
-<translation id="1503863096120373385">กำหนดค่าอายุการใช้งานของข้อมูลการท่องเว็บสำหรับ <ph name="PRODUCT_NAME" />
-      นโยบายนี้จะควบคุมอายุการใช้งานของข้อมูลการท่องเว็บที่เลือก นโยบายนี้ไม่มีผลหากเปิดการซิงค์ไว้
-      ประเภทข้อมูลที่พร้อมใช้งาน ได้แก่ <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> และ <ph name="DATA_TYPE_HOSTED_APP_DATA" />
-      Chrome จะนำข้อมูลประเภทที่เลือกไว้ที่มีอายุนานกว่า <ph name="TIME_TO_LIVE_IN_HOURS" /> ชั่วโมงออกอยู่เสมอ เนื่องจากการลบนี้จะเกิดขึ้นในบางช่วงเวลาเท่านั้น ข้อมูลบางอย่างจึงอาจมีอายุการใช้งานนานกว่าเล็กน้อย แต่จะไม่เกิน 2 เท่าของ <ph name="TIME_TO_LIVE_IN_HOURS" /> ที่คาดไว้
-      </translation>
 <translation id="1509692106376861764">นโยบายนี้ได้ถูกยกเลิกตั้งแต่ <ph name="PRODUCT_NAME" /> เวอร์ชัน 29</translation>
 <translation id="1512974677514081818">จัดเตรียมการกำหนดค่าสำหรับเครื่องพิมพ์องค์กรที่เชื่อมโยงกับอุปกรณ์
 
@@ -982,6 +974,7 @@
       หากไม่ได้ตั้งค่านโยบายนี้ ระบบจะเปิดใช้ฟีเจอร์คลิกเพื่อโทรโดยค่าเริ่มต้น</translation>
 <translation id="2482676533225429905">การรับส่งข้อความดั้งเดิม</translation>
 <translation id="2483146640187052324">คาดการณ์การทำงานของเครือข่ายจากการเชื่อมต่อเครือข่ายต่างๆ</translation>
+<translation id="2496180316473517155">ประวัติการเข้าชมที่เรียกดู</translation>
 <translation id="2498238926436517902">ซ่อนชั้นวางอัตโนมัติเสมอ</translation>
 <translation id="250022556568924228">การตั้งค่านโยบายหมายความว่า <ph name="PRODUCT_OS_NAME" /> จะดาวน์โหลดข้อกำหนดในการให้บริการและแสดงต่อผู้ใช้เมื่อมีการเริ่มเซสชันบัญชีภายในอุปกรณ์ ผู้ใช้จะลงชื่อเข้าใช้เซสชันได้หลังจากที่ยอมรับข้อกำหนดในการให้บริการแล้วเท่านั้น
 
@@ -1127,6 +1120,7 @@
 <translation id="2702023190395322609">เปิดใช้คำแนะนำสื่อ</translation>
 <translation id="2706708761587205154">อนุญาตให้พิมพ์เฉพาะเมื่อมี PIN เท่านั้น</translation>
 <translation id="2707873794476722903">Google Safe Browsing ทำงานในโหมดมาตรฐาน</translation>
+<translation id="2709516037105925701">ป้อนอัตโนมัติ</translation>
 <translation id="2714359695399346815">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะทำให้ใช้เซิร์ฟเวอร์ STUN ได้ ซึ่งจะทำให้ไคลเอ็นต์ระยะไกลค้นพบและเชื่อมต่อกับเครื่องนี้ได้แม้ว่าจะถูกกั้นโดยไฟร์วอลล์
 
       การตั้งค่านโยบายเป็น "ปิดใช้" เมื่อไฟร์วอลล์กรองการเชื่อมต่อ UDP ขาออกจะทำให้เครื่องอนุญาตการเชื่อมต่อจากเครื่องไคลเอ็นต์ภายในเครือข่าย LAN เท่านั้น</translation>
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index a84d5ba..45d42ce 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -83,6 +83,11 @@
 <translation id="1099282607296956954">Site İzolasyonu'nu her site için etkinleştirme</translation>
 <translation id="1117535567637097036">Bu politika aracılığıyla ayarlanan protokol işleyicileri, Android amaçları işlenirken kullanılmaz.</translation>
 <translation id="1118093128235245168">Sitelerin, bağlı bir USB cihazına erişmek için kullanıcıdan izin istemesine izin ver</translation>
+<translation id="1133814529606590009">Politika, Etkin değerine ayarlanırsa kullanıcının ziyaret ettiği sayfaların URL'lerini, arama ve göz atmayı iyileştirmek için Google'a gönderen, URL içeren veya URL'lerle ilişkili anonim veri toplama her zaman etkin olur.
+
+      Politika, Devre Dışı değerine ayarlanırsa URL içeren veya URL'lerle ilişkili anonim veriler toplanmaz.
+
+      Bu politikayı ayarlarsanız kullanıcılar değiştiremez. Politika ayarlanmazsa URL içeren veya URL'lerle ilişkili anonim veri toplama başta etkin olur, ancak kullanıcılar bunu değiştirebilir.</translation>
 <translation id="1138294736309071213">Bu politika sadece perakende modunda etkindir.
 
      Perakende modunda oturum açma ekranında ekran koruyucunun devreye girmesi için geçecek süreyi belirler.
@@ -165,9 +170,6 @@
       Bu politika kiosk kullanıcıları için geçerli değildir.
 
       Uyarı: Wipe ve MinimalMigrate yerel verileri kaldırır.</translation>
-<translation id="1247850578871017740">Politika geçerli bir değere ayarlanırsa <ph name="PRODUCT_NAME" /> belirtilen sürümden daha eski SSL/TLS sürümlerini kullanmaz. Tanınmayan değerler yok sayılır.
-
-      Bu politika ayarlanmazsa <ph name="PRODUCT_NAME" />; TLS 1.0 ve TLS 1.1 için hata gösterir, ancak kullanıcı bunu atlayabilir.</translation>
 <translation id="1252536192437793850">Sitelerin, seri bağlantı noktasına erişmek için kullanıcıdan izin istemesine izin ver</translation>
 <translation id="125655429495551011">Politika bir dizeye ayarlanırsa o dize, DHCP isteği sırasında cihazın ana makine adı olarak kullanılır. Dize; <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" />, <ph name="LOCATION_PLACEHOLDER" /> değişkenlerini içerebilir. Ana makine adı olarak kullanılmadan önce cihazda bu değişkenlerin yerine değerler getirilir. RFC 1035, bölüm 3.1 uyarınca, bu işlemin sonucunda ortaya çıkan değişikliğin geçerli bir ana makine adı olması gerekir.
 
@@ -182,6 +184,13 @@
       Bu politika ayarlanmadan bırakılırsa kullanıcılar Google Sync aracılığıyla politikayı kullanıp kullanmamayı seçebilirler.
 
       Google Sync'i tamamıyla devre dışı bırakmak için Google Sync hizmetini Google Yönetim konsolunda devre dışı bırakmanız önerilir.</translation>
+<translation id="128059397544257017">Politika, Etkin değerine ayarlandığında <ph name="CHROME_CLEANUP_NAME" />, istenmeyen yazılımlar tespit ederse <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> tarafından ayarlanan politikaya uygun olarak taramayı Google'a bildirebilir. <ph name="CHROME_CLEANUP_NAME" />, kullanıcılara temizlemeyi isteyip istemediklerini sorar. Sonuçları Google'a gönderir.
+
+      Politika, Devre Dışı değerine ayarlandığında <ph name="CHROME_CLEANUP_NAME" />, istenmeyen yazılımlar tespit ederse <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> değeri ne olursa olsun taramayı Google'a bildirmez. <ph name="CHROME_CLEANUP_NAME" />, kullanıcılara temizlemeyi isteyip istemediklerini sorar. Sonuçlar, Google'a bildirilmez.
+
+      Politika ayarlanmadan bırakılırsa <ph name="CHROME_CLEANUP_NAME" />, <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> tarafından ayarlanan politikaya uygun olarak istenmeyen yazılımların tespit edilmesi için yapılan taramaları Google'a bildirebilir. <ph name="CHROME_CLEANUP_NAME" />, kullanıcılara temizlemeyi ve ileride istenmeyen yazılımların tespiti konusunda yardımcı olmak için sonuçları Google ile paylaşmayı isteyip istemediklerini sorar. Bu sonuçlar, Chrome Gizlilik Raporu'nda açıklandığı gibi dosya meta verilerini, otomatik olarak yüklenen uzantıları ve kayıt defteri anahtarlarını içerir.
+
+      <ph name="MS_WIN_NAME" /> işletim sisteminde bu işlev yalnızca Windows 10 Pro üzerinde çalışan bir <ph name="MS_AD_NAME" /> alan adına katılmış veya <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> öğesine kaydolmuş örneklerde kullanılabilir.</translation>
 <translation id="1290634681382861275">USB, Bluetooth, politika yenileme, geliştirici modu gibi çeşitli ayarları kontrol eder.</translation>
 <translation id="1291880496936992484">Uyarı: RC4, sürüm 52'den sonra (yaklaşık olarak Eylül 2016'da) <ph name="PRODUCT_NAME" /> ürününden tamamen kaldırılacak ve sonrasında bu politika çalışmayacaktır.
 
@@ -323,11 +332,6 @@
 
           Bu politikayı ayarlarsanız kullanıcılar değiştiremez veya geçersiz kılamaz.</translation>
 <translation id="1502843533062797703">Üçüncü taraf yazılımı yerleştirme engellemesini etkinleştirin</translation>
-<translation id="1503863096120373385"><ph name="PRODUCT_NAME" /> için tarama verisi geçerlilik süresi ayarlarını yapılandırır.
-      Bu politika, seçilen tarama verilerinin geçerlilik süresini kontrol eder. Senkronizasyon etkinleştirilirse bu politikanın hiçbir etkisi olmaz.
-      Kullanılabilir veri türleri şunlardır: <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> ve <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
-      Chrome, <ph name="TIME_TO_LIVE_IN_HOURS" /> saatten daha eski olan belirli türlerdeki verileri düzenli olarak kaldırır. Bu silme işlemi, yalnızca belirli aralıklarla gerçekleştiğinden bazı verilerin geçerlilik süresi biraz daha uzun olabilir, ancak hiçbir zaman <ph name="TIME_TO_LIVE_IN_HOURS" /> olarak beklenen ömrünün iki katından fazla olmaz.
-      </translation>
 <translation id="1509692106376861764">Bu politika, <ph name="PRODUCT_NAME" /> Sürüm 29 itibariyle kullanımdan kaldırılmıştır.</translation>
 <translation id="1512974677514081818">Cihazlara bağlı kurumsal yazıcılar için yapılandırmalar sağlar.
 
@@ -708,6 +712,9 @@
       Politika ayarlanmaz veya boş listeye ayarlanırsa yönetilen cihazlarda hızlı kilit açma modları kullanılamaz.
 
       Bu politika kullanımdan kaldırıldı, lütfen bunun yerine <ph name="QUICK_UNLOCK_MODE_ALLOW_LIST_POLICY_NAME" /> politikasını kullanın</translation>
+<translation id="2033784678146670379">Politika, Etkin değerine ayarlanırsa kullanıcıların, <ph name="CHALLENGE_USER_KEY_FUNCTION" /> kullanarak <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> aracılığıyla cihaz kimliğini gizlilik CA'sına uzaktan onaylatmak için <ph name="PRODUCT_OS_NAME" /> cihazlarda donanım kullanmalarına izin verilir.
+
+      Politikanın, Devre Dışı değerine ayarlanması veya ayarlanmadan bırakılması, API'ye yapılan çağrıların bir hata koduyla başarısız olmasına neden olur.</translation>
 <translation id="2036522553891755455">Politika, Etkin değerine ayarlanırsa paylaşım keşfi (<ph name="PRODUCT_NAME" /> için Ağ Üzerinde Dosya Paylaşımı özelliği), ağdaki paylaşımları keşfetmek için <ph name="NETBIOS_PROTOCOL" /> politikasını kullanır. Politika, Devre Dışı değerine ayarlanırsa paylaşım keşfi, paylaşımları keşfetmek için bu protokolü kullanmaz.
 
       Politika ayarlanmadan bırakılırsa paylaşım keşfi, varsayılan olarak yönetilen kullanıcılar için devre dışı bırakılır, diğer kullanıcılar için etkinleştirilir.</translation>
@@ -737,6 +744,9 @@
 <translation id="2082205219176343977">Cihaz için izin verilen minimum Chrome sürümünü yapılandır.</translation>
 <translation id="208566302163036794">Devre dışı bırakılan özellikleri engelle</translation>
 <translation id="208623333578980446">Güç yönetimi için ekran uyanık kalma kilitlerine izin ver</translation>
+<translation id="2090939118981888335">Politika, Etkin değerine ayarlanırsa veri sıkıştırma proxy'sine izin verilir. Politika, Devre Dışı değerine ayarlanırsa proxy'ye izin verilmez.
+
+      Bu politikayı ayarlarsanız kullanıcılar değiştiremez. Politika ayarlanmadan bırakılırsa kullanıcılar, özelliği kullanmayı seçebilir.</translation>
 <translation id="209586405398070749">Mevcut ürün kanalı</translation>
 <translation id="2098658257603918882">Kullanım ve kilitlenme ile ilgili verilerin raporlanmasını etkinleştir</translation>
 <translation id="2104418465060359056">Uzantı ve Eklenti bilgilerini bildirme</translation>
@@ -986,6 +996,7 @@
       Bu politika ayarlanmadan bırakılırsa Tıkla ve Ara özelliği varsayılan olarak etkindir.</translation>
 <translation id="2482676533225429905">Yerel Mesajlaşma</translation>
 <translation id="2483146640187052324">Ağ bağlantılarında ağ işlemlerini tahmin et</translation>
+<translation id="2496180316473517155">Tarama geçmişi</translation>
 <translation id="2498238926436517902">Rafı her zaman otomatik olarak gizle</translation>
 <translation id="250022556568924228">Politika ayarlanırsa <ph name="PRODUCT_OS_NAME" />, Hizmet Şartları'nı indirir ve cihaz yerel hesabı oturumu her başlatıldığında kullanıcılara gösterir. Kullanıcılar yalnızca Hizmet Şartları'nı kabul ettikten sonra oturuma giriş yapabilirler.
 
@@ -1135,6 +1146,7 @@
 <translation id="2702023190395322609">Medya Önerilerini Etkinleştir</translation>
 <translation id="2706708761587205154">Yalnızca PIN ile yazdırmaya izin ver</translation>
 <translation id="2707873794476722903">Güvenli Tarama standart modda etkin.</translation>
+<translation id="2709516037105925701">Otomatik doldurma</translation>
 <translation id="2714359695399346815">Politika, Etkin değerine ayarlanır veya ayarlanmadan bırakılırsa STUN sunucularının kullanılmasına izin verilir. Uzak istemciler, bir güvenlik duvarıyla ayrılmış olsa bile bu makineyi keşfedip bağlanabilir.
 
       Politika, Devre Dışı değerine ayarlanırsa UDP bağlantılarına güvenlik duvarı tarafından filtre uygulandığında bu makine, yalnızca yerel ağ içindeki istemci makinelerden gelen bağlantılara izin verir.</translation>
@@ -1146,6 +1158,9 @@
       Bu politika, Devre Dışı değerine ayarlanır veya ayarlanmadan bırakılırsa bu öneriler görünmez.
 
       Bu politika ayarlanırsa kullanıcılar değiştiremez.</translation>
+<translation id="2724313944474873275">Politika, Etkin değerine ayarlanır veya ayarlanmadan bırakılırsa <ph name="PRODUCT_OS_NAME" /> cihazlarının, cihazın korumalı içeriği oynatmak için uygun olduğunu onaylayan <ph name="PRODUCT_OS_NAME" /> CA'sı tarafından yayınlanan bir sertifika almak amacıyla uzaktan onay (Doğrulanmış Erişim) kullanmasına izin verilir. Bu işlem, <ph name="PRODUCT_OS_NAME" /> CA'sına cihazı benzersiz bir şekilde tanımlayan donanım onay bilgilerinin gönderilmesini içerir.
+
+      Politika, Devre Dışı değerine ayarlanırsa cihaz, içerik koruması için uzaktan onay kullanmaz ve korumalı içeriği oynatmayabilir.</translation>
 <translation id="2725855586003209701">Politika Etkin değerine ayarlanır veya ayarlanmadan bırakılırsa kayıtlı cihazlar kısa süre önce oturum açan cihaz kullanıcılarının listesini bildirir.
 
       Politika Devre Dışı değerine ayarlanırsa kayıtlı cihazlar kullanıcı listesini bildirmez.</translation>
@@ -2117,6 +2132,13 @@
 <translation id="4089849819635523136"><ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> açıksa <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> protokolünün ayarlanması, bu sağlayıcı için arama tetiklemek üzere adres çubuğunda kullanılan anahtar kelimeyi veya kısayolu belirtir.
 
       <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> protokolünün ayarlanmadan bırakılması, arama sağlayıcıyı etkinleştiren anahtar kelime olmadığı anlamına gelir.</translation>
+<translation id="409035987613226003">Politika, Etkin değerine ayarlanırsa Chrome ile ilgili kullanım ve kilitlenme verilerinin anonim olarak Google'a raporlanmasını etkinleştirir ve kullanıcıların bu ayarı değiştirmesini engeller. Politika, Devre Dışı değerine ayarlanırsa bu bilgi Google'a gönderilmez.
+
+      Bu politikayı ayarlarsanız kullanıcılar değiştiremez. Politika ayarlanmazsa kullanıcılar yükleme veya ilk çalıştırma sırasında davranışı seçebilir.
+
+      Bu politika yalnızca bir <ph name="MS_AD_NAME" /> alan adına katılmış Windows örneklerinde veya cihaz yönetimine kaydolmuş Windows 10 Pro ya da Enterprise örneklerinde ve MDM ile çalışan veya MCX aracılığıyla bir alan adına katılmış macOS örneklerinde kullanılabilir.
+
+      (Chrome OS için bkz. DeviceMetricsReportingEnabled.)</translation>
 <translation id="4097556069183835428">Politikayı None (Yok) değerine ayarlamak, ekran büyütecini kapatır.
 
       Bu politikayı ayarlarsanız kullanıcılar değiştiremez. Ayarlanmazsa ekran büyüteci ilk başta kapalıdır, ancak kullanıcılar istedikleri zaman açabilir.</translation>
@@ -2480,6 +2502,9 @@
 <translation id="4725528134735324213">Android Backup Service'ı etkinleştir</translation>
 <translation id="4725801978265372736">Yerel kullanıcının adı ile uzak erişim ana makinesi sahibinin adının aynı olmasını gerektir</translation>
 <translation id="4733471537137819387">Entegre HTTP kimlik doğrulaması ile ilgili politikalar.</translation>
+<translation id="4735099388031364207">Politika, Etkin değerine ayarlanırsa cihaz için uzaktan onaya izin verilir. Otomatik olarak bir sertifika oluşturulup Cihaz Yönetim Sunucusu'na yüklenir.
+
+      Politika, Devre Dışı değerine ayarlanır veya ayarlanmadan bırakılırsa hiçbir sertifika oluşturulmaz ve <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> için yapılan çağrılar başarısız olur.</translation>
 <translation id="4742973303930120836">Arka plan grafikleri yazdırma modunu kısıtla</translation>
 <translation id="4752880493649142945">RemoteAccessHostTokenValidationUrl'ye bağlanmak için istemci sertifikası</translation>
 <translation id="4757053978738874325">Mono ses erişilebilirlik özelliklerini etkinleştirin.
@@ -2566,6 +2591,11 @@
 <translation id="489803897780524242">Varsayılan arama sağlayıcısı için arama terimi yerleştirmeyi kontrol eden parametre</translation>
 <translation id="4899708173828500852">Güvenli Taramayı etkinleştir</translation>
 <translation id="4906194810004762807">Aygıt Politikası için yenileme hızı</translation>
+<translation id="49093841899738146">Politika, Etkin değerine ayarlanırsa <ph name="PRODUCT_NAME" /> ürünü, Hangouts Meet gibi Google hizmetlerinden WebRTC olay günlüklerini toplayıp bu günlükleri Google'a yükleyebilir. Bu günlükler, <ph name="PRODUCT_NAME" /> ürünündeki sesli veya görüntülü toplantılarla ilgili sorunlarda hata ayıklamada kullanılacak teşhis bilgileri içerir. Bunlar, RTP paketlerinin saati ve boyutu, ağdaki tıkanmayla ilgili geri bildirim, ses ve video karelerinin zamanı ve kalitesiyle ilgili meta veriler gibi bilgilerdir. Bu günlükler toplantıya ait ses veya video içeriği barındırmaz. Hata ayıklamayı kolaylaştırmak için Google bu günlükleri bir oturum kimliği aracılığıyla Google hizmetinin kendisi tarafından toplanan diğer günlüklerle ilişkilendirebilir.
+
+      Politika, Yanlış değerine ayarlanırsa bu tür günlükler toplanıp yüklenmez.
+
+      Bu politika ayarlanmadan bırakılırsa M76 ve önceki sürümlerde <ph name="PRODUCT_NAME" /> varsayılan olarak bu günlükleri toplayıp yükleyemez. M77'den itibaren <ph name="PRODUCT_NAME" /> varsayılan olarak, bu günlükleri bulut tabanlı kullanıcı düzeyi kurumsal politikalardan etkilenen profillerin çoğundan toplayıp yükleyebilir. M77'den M80'e (dahil) kadar, <ph name="PRODUCT_NAME" /> bu günlükleri varsayılan olarak <ph name="PRODUCT_NAME" /> şirket içi yönetiminden etkilenen profillerden toplayıp yükleyebilir.</translation>
 <translation id="4910101362791876581">Kullanıcının kullanabileceği yazıcıları belirtir.
 
       Bu politika yalnızca <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" /> için <ph name="PRINTERS_WHITELIST" /> seçilirse kullanılır.
@@ -2577,6 +2607,9 @@
 <translation id="4917385247580444890">Güçlü</translation>
 <translation id="4919122295221518724">Karma içeriğin işlenmesini daha sıkı hale getir</translation>
 <translation id="4923806312383904642">WebDriver'ın Uyumlu Olmayan Politikaları Geçersiz Kılmasına İzin Ver</translation>
+<translation id="4927214690104703256">Politikanın ayarlanması, uzaktan onay için <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> işlevlerini kullanmasına izin verilen uzantıları belirtir. API'yi kullanmak için uzantılar bu listede olmalıdır.
+
+      Bir uzantı listede yoksa veya liste ayarlanmamışsa API'ye yapılan çağrılar başarısız olur ve hata kodu görüntülenir.</translation>
 <translation id="4927797103413916381"><ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> Devre dışı değerine ayarlanmamışsa <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> politikasının Etkin değerine ayarlanması veya ayarlanmadan bırakılması, kötüye kullanım deneyimi yaşatan sitelerin yeni pencere veya sekme açmasını önler.
 
        <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> politikası veya <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> politikası Devre dışı değerine ayarlanırsa, kötüye kullanım deneyimi yaşatan sitelerin yeni pencere veya sekme açmasına izin verilir.</translation>
@@ -2686,6 +2719,13 @@
 <translation id="5090209345759901501">Flash içeriği ayarını tüm içeriği kapsayacak şekilde genişlet</translation>
 <translation id="5090791951240382356">Farklı kaynaklara ait sözlük politikalarını birleştirmeye izin ver</translation>
 <translation id="5091315650312105069">HTTP için <ph name="BASIC_AUTH" /> kimlik doğrulamasına izin ver</translation>
+<translation id="5103112931744164177">Bu politika, DNS sunucusuyla iletişim kurmak için hangi yazılım yığınının kullanıldığını kontrol eder: İşletim Sistemi DNS istemcisi veya <ph name="PRODUCT_NAME" /> ürününün yerleşik DNS istemcisi. Bu politika hangi DNS sunucularının kullanıldığını etkilemez: Örneğin, işletim sistemi kurumsal DNS sunucusu kullanacak şekilde yapılandırılmışsa aynı sunucu, yerleşik DNS istemcisi tarafından da kullanılır. Ayrıca DNS-over-HTTPS kullanılıp kullanılmadığını da kontrol etmez; <ph name="PRODUCT_NAME" />, DNS-over-HTTPS istekleri için her zaman yerleşik çözümleyici kullanır. DNS-over-HTTPS'nin kontrolüyle ilgili bilgi için <ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" /> politikasına bakın.
+
+      Bu politika, Etkin değerine ayarlanırsa yerleşik DNS istemcisi (mevcutsa) kullanılır.
+
+      Bu politika, Devre Dışı değerine ayarlanırsa yerleşik DNS istemcisi yalnızca DNS-over-HTTPS kullanımdayken kullanılır.
+
+      Bu politika ayarlanmadan bırakılırsa yerleşik DNS istemcisi; <ph name="MAC_OS_NAME" />, <ph name="ANDROID_NAME" /> (Gizli DNS veya VPN etkinleştirilmediğinde) ve <ph name="PRODUCT_OS_NAME" /> işletim sisteminde varsayılan olarak etkinleştirilir.</translation>
 <translation id="5105313908130842249">Pil gücüyle çalışırken ekran kilidi gecikmesi</translation>
 <translation id="5108031557082757679">Devre dışı bırakılmış kurumsal cihaz yazıcıları</translation>
 <translation id="5109383437323376357">Varyasyonların kullanılabilirliğini belirleme</translation>
@@ -3558,6 +3598,11 @@
 
       Bu politika ayarlanmazsa veya liste boşsa <ph name="PRODUCT_NAME" /> içindeki tüm şemalara erişilebilir.</translation>
 <translation id="6338982178236723271">Sistem bilgileri raporlama</translation>
+<translation id="6347363725343851058">Politika, Etkin değerine ayarlanırsa arka plan modu açılır. Arka plan modunda, OS oturum açma işlemi sırasında bir <ph name="PRODUCT_NAME" /> işlemi başlatılır ve bu işlem son tarayıcı penceresi kapatıldığında çalışmaya devam ederek tüm oturum çerezleri dahil olmak üzere arka plan uygulamaları ile tarama oturumunun etkin kalmasına izin verir. Arka plan işlemi, sistem tepsisinde bir simge görüntüler ve istendiğinde oradan kapatılabilir.
+
+      Politika, Devre Dışı değerine ayarlanırsa arka plan modu kapatılır.
+
+      Bu politikayı ayarlarsanız kullanıcılar tarayıcı ayarlarında değiştiremez. Politika ayarlanmazsa arka plan modu başta kapalı olur, ancak kullanıcılar bunu değiştirebilir.</translation>
 <translation id="6353890097388312479">Politika, Tümü (0) değerine ayarlanırsa veya ayarlanmadan bırakılırsa kullanıcılar, tüm CA sertifikaları için güven ayarlarını düzenleyebilir, kullanıcının içe aktardığı sertifikaları kaldırabilir ve başka sertifikaları içe aktarabilirler. Politika, Yalnızca Kullanıcı (1) değerine ayarlanırsa kullanıcılar, yalnızca kullanıcının içe aktardığı sertifikaları yönetebilir, ancak yerleşik sertifikaların güven ayarlarını değiştiremezler. Politika, Yok (2) değerine ayarlanırsa kullanıcılar, CA sertifikalarını görüntüleyebilirler (yönetemezler).</translation>
 <translation id="6362856770865555544">Politika, Etkin değerine ayarlanır veya ayarlanmadan bırakılırsa <ph name="PRODUCT_NAME" /> ürününde WPAD (Otomatik Web Proxy Keşfi) optimizasyonu etkinleştirilir.
 
@@ -3884,6 +3929,9 @@
 <translation id="6815483833848348029">Politika Devre dışı değerine ayarlanır veya ayarlanmadan bırakılırsa bir cihaz çevrimdışıyken cihaz yerel hesabı sıfır gecikmeyle otomatik oturum açmaya ayarlıysa <ph name="PRODUCT_OS_NAME" /> bir ağ yapılandırma istemi gösterir.
 
       Politikayı Devre dışı değerine ayarlanırsa bunun yerine bir hata mesajı gösterilir.</translation>
+<translation id="6819838337315703072"><ph name="LINUX_OS_NAME" /> uygulama desteği açıksa politika, Etkin değerine ayarlandığında <ph name="LINUX_OS_NAME" /> uygulamalarının kullanımıyla ilgili bilgiyi sunucuya geri gönderir.
+
+      Politika, Devre Dışı olarak ayarlanır veya ayarlanmadan bırakılırsa hiçbir kullanım bilgisi raporlanmaz.</translation>
 <translation id="6821268164692776674"><ph name="CLOUD_PRINT_NAME" /> ve "Google Drive'a kaydet" hedefleri</translation>
 <translation id="6823711520976094072">1 MB'tan daha düşük bir değere ayarlandığında veya ayarlanmamış olarak bırakıldığında, <ph name="PRODUCT_OS_NAME" /> tek bir cihazın birden fazla kullanıcısı tarafından yüklenmek üzere uygulamaları ve uzantıları önbelleğe almak için 256 MiB olan varsayılan boyutu kullanır. Bu şekilde, uygulamaları ve uzantıları her kullanıcı için yeniden indirme ihtiyacını ortadan kaldırır.</translation>
 <translation id="682408981080798691">Politika, Etkin değerine ayarlanır veya ayarlanmadan bırakılırsa Oluşturucu Kod Bütünlüğü etkinleştirilir.
@@ -3923,6 +3971,9 @@
 
       Bu politika kullanımdan kaldırıldı, lütfen bunun yerine <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" /> kullanın.</translation>
 <translation id="684856667300805181">Bu politika <ph name="PRODUCT_NAME" /> 68 sürümünde kaldırılmış ve yerine <ph name="ARC_GLS_POLICY_NAME" /> kullanılmaya başlanmıştır.</translation>
+<translation id="6848721032946289937">Politikanın Etkin değerine ayarlanması veya ayarlamadan bırakılması, mevcutsa donanım hızlandırmayı açar.
+
+      Politika, Devre Dışı değerine ayarlanırsa donanım hızlandırma devre dışı bırakılır.</translation>
 <translation id="6851199885688265233">İmleci vurgulama erişilebilirlik özelliğini etkinleştir</translation>
 <translation id="6851315055469993882">Genel olarak kapsamlı HTTP auth önbelleği etkinleştirir</translation>
 <translation id="6854767649023671426">Politika, Etkin değerine ayarlanırsa veya ayarlanmadan bırakılırsa kullanıcılardan video yakalama için erişim izni istenir (VideoCaptureAllowedUrls listesinde ayarlanan URL'ler hariç).
@@ -4070,6 +4121,9 @@
 <translation id="7027785306666625591"><ph name="PRODUCT_OS_NAME" /> sisteminde güç yönetimini yapılandırın.
 
       Bu politikalar, kullanıcı belirli bir süre boyunca hiçbir şey yapmadığında <ph name="PRODUCT_OS_NAME" /> sisteminin çalışma biçimini yapılandırmanıza olanak verir.</translation>
+<translation id="7027923238554618852">Politika ayarlanırsa <ph name="PRODUCT_OS_NAME" /> işletim sistemine, belirtilen adla tanımlanan görev planlayıcı yapılandırmasını kullanma talimatı verir. Bu politika, sırasıyla kararlılık veya maksimum performans için görev planlayıcıyı ayarlayan <ph name="CONSERVATIVE_VALUE" /> veya <ph name="PERFORMANCE_VALUE" /> olarak ayarlanabilir.
+
+      Politika ayarlanmadan bırakılırsa kullanıcılar kendi seçimini yapar.</translation>
 <translation id="7030205756530739128"><ph name="DEVICE_BATTERY_CHARGE_MODE_NAME" />, <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_MODE_NAME" /> olarak ayarlanırsa <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_START_CHARGING_POLICY_NAME" /> ayarı, şarj yüzdesine göre pilin ne zaman şarj edilmeye başlayacağını özelleştirir. Değer, <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_STOP_CHARGING_POLICY_NAME" /> değerinin en az yüzde 5 altında olmalıdır.
 
       Bu politika ayarlanmadan bırakılırsa standart pil şarj modu uygulanır.</translation>
@@ -4198,6 +4252,11 @@
 <translation id="718126088895133062">Bu politika, bu cihaz için <ph name="PLUGIN_VM_NAME" /> lisanslama kullanıcı kimliğini belirtmektedir.</translation>
 <translation id="7185078796915954712">TLS 1.3</translation>
 <translation id="7185630966939835143">Yazım hatalarının düzeltilmesine yardımcı olması için bir Google web hizmeti kullan</translation>
+<translation id="718850220532931090">Bu politika kullanımdan kaldırıldı, lütfen bunun yerine <ph name="ATTESTATION_EXTENSION_ALLOWLIST_POLICY_NAME" /> politikasını kullanın.
+
+      Politikanın ayarlanması, uzaktan onay için <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> işlevi olan <ph name="CHALLENGE_USER_KEY_FUNCTION" /> işlevini kullanmasına izin verilen uzantıları belirtir. API'yi kullanmak için uzantılar bu listede olmalıdır.
+
+      Bir uzantı listede yoksa veya liste ayarlanmamışsa API'ye yapılan çağrılar başarısız olur ve hata kodu görüntülenir.</translation>
 <translation id="718956142899066210">Güncellemeler için izin verilen bağlantı türleri</translation>
 <translation id="7190286937411178540">Klavye odağını vurgulama erişilebilirlik özelliğini etkinleştir</translation>
 <translation id="7193489339723768342">Politikanın ayarlanması, kalıpları istek yapan URL'nin güvenlik kaynağıyla eşleşen URL listesini sizin belirttiğiniz anlamına gelir. Eşleşme olması halinde istemde bulunulmadan ses yakalama cihazlarına erişim izni verilir
@@ -5002,6 +5061,9 @@
 <translation id="8357681633047935212">Kullanıcı oturumunun süresini sınırla</translation>
 <translation id="8357989008292691856">Giriş yapabilen kullanıcı izin listesi</translation>
 <translation id="8359734107661430198">ExampleDeprecatedFeature API'sını 02.09.2008'e kadar etkinleştirin</translation>
+<translation id="8367069206652407172">Politika, Devre Dışı değerine ayarlanırsa kullanıcıların, Görev Yöneticisi'ndeki işlemleri sona erdirmesi engellenir.
+
+      Politika, Etkin değerine ayarlanır veya ayarlanmadan bırakılırsa kullanıcıların, Görev Yöneticisi'ndeki işlemleri sona erdirmesine izin verilir.</translation>
 <translation id="8367209241899435947">Windows'da Chrome Temizleme Aracı'nı etkinleştir</translation>
 <translation id="8367473200119029349">Bulut Raporlaması</translation>
 <translation id="8369602308428138533">AC güçle çalışırken ekran kapatma gecikmesi</translation>
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index ebb66d3..057d5a51 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -83,6 +83,11 @@
 <translation id="1099282607296956954">Увімкнути Ізоляцію сайтів для кожного сайту</translation>
 <translation id="1117535567637097036">Обробники протоколу, налаштовані за допомогою цього правила, не використовуються під час обробки намірів Android.</translation>
 <translation id="1118093128235245168">Дозволити сайтам запитувати в користувача доступ до підключеного пристрою USB</translation>
+<translation id="1133814529606590009">Якщо ввімкнути це правило, завжди буде активовано збір анонімних даних за допомогою URL-адрес, який надсилає компанії Google URL-адреси сторінок, які відвідує користувач, щоб покращити пошук і веб-перегляд.
+
+      Якщо вимкнути це правило, анонімні дані не збиратимуться за допомогою URL-адрес.
+
+      Якщо це правило налаштовано, користувачі не зможуть змінювати його. В іншому разі збір анонімних даних за допомогою URL-адрес увімкнено, але користувачі можуть змінити це налаштування.</translation>
 <translation id="1138294736309071213">Це правило активне лише в режимі роздрібного продажу.
 
       Визначає період часу, після якого на екрані входу пристрою в режимі роздрібного продажу з’явиться заставка.
@@ -165,9 +170,6 @@
       Це правило не стосується користувачів термінала.
 
       Попередження: якщо вибрати значення Wipe або MinimalMigrate, локальні дані буде видалено.</translation>
-<translation id="1247850578871017740">Якщо для цього правила задано дійсне значення, <ph name="PRODUCT_NAME" /> не використовуватиме SSL/TLS нижчих версій, ніж указано. Нерозпізнані значення ігноруватимуться.
-
-      Якщо це правило не налаштовано, <ph name="PRODUCT_NAME" /> повідомлятиме про помилку на сайтах, які використовують TLS 1.0 і TLS 1.1, але користувач матиме змогу обійти її.</translation>
 <translation id="1252536192437793850">Дозволити сайтам запитувати в користувача доступ до послідовного порту</translation>
 <translation id="125655429495551011">Якщо для цього правила вибрано сегмент, цей сегмент використовуватиметься як ім'я хосту пристрою в запитах DHCP. Сегмент може містити змінні <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" />, <ph name="LOCATION_PLACEHOLDER" />, замість яких потрібно підставити значення на пристрої, перш ніж використовувати ці дані як ім'я хосту. Після підстановки ви маєте отримати дійсне ім'я хосту (відповідно до RFC 1035, розділ 3.1).
 
@@ -182,6 +184,13 @@
       Якщо це правило не налаштовано, користувачі зможуть вибрати, чи використовувати Google Sync.
 
       Щоб повністю заборонити сервіс Google Sync, радимо вимкнути його на Консолі адміністратора Google.</translation>
+<translation id="128059397544257017">Якщо ввімкнути це правило, коли функція <ph name="CHROME_CLEANUP_NAME" /> виявить небажане програмне забезпечення, вона може повідомити про перевірку компанію Google відповідно до правила <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> запитує користувача, чи виконувати очищення. Функція надсилає результати компанії Google.
+
+      Якщо вимкнути це правило, коли функція <ph name="CHROME_CLEANUP_NAME" /> виявить небажане програмне забезпечення, вона не повідомлятиме про перевірку компанію Google незалежно від значення правила <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> запитує користувача, чи виконувати очищення. Результати не надсилаються компанії Google.
+
+      Якщо не налаштувати правило, функція <ph name="CHROME_CLEANUP_NAME" /> може повідомляти компанію Google про перевірки для виявлення небажаного програмного забезпечення відповідно до правила <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> запитує користувача, чи виконувати очищення й надсилати результати компанії Google, щоб допомагати виявляти небажане програмне забезпечення в майбутньому. У цих результатах містяться файли метаданих, автоматично встановлені розширення та реєстраційні ключі, як зазначено в Політиці конфіденційності Chrome.
+
+      У <ph name="MS_WIN_NAME" /> ця функція доступна лише для Windows 10 Pro або версій, зареєстрованих у домені <ph name="MS_AD_NAME" /> чи в сервісі <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.</translation>
 <translation id="1290634681382861275">Керує різними налаштуваннями, зокрема USB, Bluetooth, оновленням правил, режимом розробника тощо.</translation>
 <translation id="1291880496936992484">Застереження: шифри RC4 буде видалено з <ph name="PRODUCT_NAME" /> після версії 52 (приблизно у вересні 2016 року).
 
@@ -333,11 +342,6 @@
 
           Якщо це правило налаштовано, користувачі не можуть змінювати або замінювати його.</translation>
 <translation id="1502843533062797703">Блокувати вставляння ПЗ незалежних розробників</translation>
-<translation id="1503863096120373385">Налаштовує період збереження даних веб-перегляду для <ph name="PRODUCT_NAME" />.
-      Це правило вказує, скільки часу мають зберігатися вибрані дані веб-перегляду. Це правило не діє, якщо ввімкнено синхронізацію.
-      Доступні типи даних: <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> і <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
-      Chrome регулярно видалятиме вибрані типи даних, які старіші за <ph name="TIME_TO_LIVE_IN_HOURS" />. Оскільки видалення запускається через певні проміжки часу, деякі дані можуть зберігатися трохи довше ніж <ph name="TIME_TO_LIVE_IN_HOURS" />, але не більше ніж удвічі довше за вказаний період.
-      </translation>
 <translation id="1509692106376861764">Це правило не підтримується від 29-ї версії <ph name="PRODUCT_NAME" />.</translation>
 <translation id="1512974677514081818">Надає налаштування принтерів підприємства, які зв'язані з пристроями.
 
@@ -728,6 +732,9 @@
       Якщо це правило не налаштовано або для нього вказано порожній список, режими швидкого розблокування будуть недоступні для керованих пристроїв.
 
       Це правило більше не підтримується. Натомість використовуйте правило <ph name="QUICK_UNLOCK_MODE_ALLOW_LIST_POLICY_NAME" /></translation>
+<translation id="2033784678146670379">Якщо ввімкнути це правило, користувачі зможуть використовувати апаратне забезпечення на пристроях <ph name="PRODUCT_OS_NAME" /> для віддаленого засвідчення своєї особи в ЦС через <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> за допомогою <ph name="CHALLENGE_USER_KEY_FUNCTION" />.
+
+      Якщо вимкнути або не налаштувати це правило, виклики API завершуватимуться помилкою.</translation>
 <translation id="2036522553891755455">Якщо це правило ввімкнено, виявлення файлообмінників (функція мережевих файлообмінників для <ph name="PRODUCT_NAME" />) використовуватиме <ph name="NETBIOS_PROTOCOL" />, щоб виявляти файлообмінники в мережі. Якщо це правило вимкнено, виявлення файлообмінників не використовуватиме цей протокол для таких цілей.
 
       Якщо це правило не налаштовано, за умовчанням така поведінка буде вимкнена для керованих користувачів, а для інших – увімкнена.</translation>
@@ -757,6 +764,9 @@
 <translation id="2082205219176343977">Налаштуйте мінімальну дозволену версію Chrome для пристрою.</translation>
 <translation id="208566302163036794">Блокувати вимкнені функції</translation>
 <translation id="208623333578980446">Дозволити розширенням керування живленням блокувати переходи екрана в режим сну</translation>
+<translation id="2090939118981888335">Якщо ввімкнути це правило, дозволятиметься робота проксі-сервера стиснення даних. Якщо його вимкнути, робота проксі-сервера заборонятиметься.
+
+      Якщо налаштувати це правило, користувачі не зможуть змінювати його. В іншому разі користувачі зможуть користуватися цією функцією.</translation>
 <translation id="209586405398070749">Стабільна версія</translation>
 <translation id="2098658257603918882">Увімкнути звіти про використання та дані, пов’язані з аварійним завершенням роботи</translation>
 <translation id="2104418465060359056">Повідомляти дані розширень і плагінів</translation>
@@ -1006,6 +1016,7 @@
       Якщо це правило не налаштовано, функцію "Інтерактивний номер" увімкнено за умовчанням.</translation>
 <translation id="2482676533225429905">Обмін повідомленнями з оригінальними додатками</translation>
 <translation id="2483146640187052324">Передбачати дії мережі</translation>
+<translation id="2496180316473517155">Історія переглядів</translation>
 <translation id="2498238926436517902">Завжди автоматично ховати полицю</translation>
 <translation id="250022556568924228">Якщо це правило налаштоване, <ph name="PRODUCT_OS_NAME" /> завантажує Умови використання та показує їх користувачам щоразу, коли починається сеанс локального облікового запису на пристрої. Користувачі зможуть увійти в обліковий запис, лише коли приймуть Умови використання.
 
@@ -1156,6 +1167,7 @@
 <translation id="2702023190395322609">Увімкнути рекомендації медіа</translation>
 <translation id="2706708761587205154">Дозволити друк лише з PIN-кодом</translation>
 <translation id="2707873794476722903">Безпечний перегляд увімкнено в стандартному режимі.</translation>
+<translation id="2709516037105925701">Автозаповнення</translation>
 <translation id="2714359695399346815">Якщо це правило ввімкнено або не налаштовано, використання серверів STUN дозволяється. Клієнти віддаленого доступу зможуть виявляти цей пристрій і підключатися до нього, навіть коли працює брандмауер.
 
       Якщо це правило вимкнено, а брандмауер фільтрує вихідні підключення за протоколом UDP, пристрій дозволятиме лише підключення з клієнтських комп'ютерів у локальній мережі.</translation>
@@ -1167,6 +1179,9 @@
       Якщо це правило вимкнено або не налаштовано, ці рекомендації не з'являтимуться.
 
       Якщо це правило налаштовано, користувачі не можуть змінити його.</translation>
+<translation id="2724313944474873275">Якщо ввімкнути або не налаштувати це правило, пристрої <ph name="PRODUCT_OS_NAME" /> зможуть використовувати віддалене засвідчення (підтверджений доступ), щоб отримувати сертифікат, виданий ЦС <ph name="PRODUCT_OS_NAME" />, який підтверджує, що пристрій може відтворювати захищений контент. Ця процедура передбачає надсилання інформації схвалення апаратного забезпечення в ЦС <ph name="PRODUCT_OS_NAME" />, яка унікально ідентифікує пристрій.
+
+      Якщо вимкнути це правило, пристрій не використовуватиме віддалене засвідчення для захисту контенту та, можливо, не зможе відтворювати захищений контент.</translation>
 <translation id="2725855586003209701">Якщо це правило ввімкнено або не налаштовано, зареєстровані пристрої надсилатимуть список користувачів, які нещодавно входили в обліковий запис.
 
       Якщо це правило вимкнено, зареєстровані пристрої не надсилатимуть такі дані.</translation>
@@ -2142,6 +2157,13 @@
 <translation id="4089849819635523136">Якщо правило <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> увімкнено, то параметр <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> указує ключове слово або комбінацію клавіш, які використовуються в адресному рядку, щоб активувати пошук у цій системі.
 
       Якщо правило <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> не налаштовано, ключових слів, які активують цю пошукову систему, немає.</translation>
+<translation id="409035987613226003">Якщо ввімкнути це правило, компанії Google надсилатимуться знеособлені дані про використання й аварійне завершення роботи Chrome, а користувачам заборонятиметься змінювати цей параметр. Якщо вимкнути правило, ця інформація не надсилатиметься компанії Google.
+
+      Якщо налаштувати це правило, користувачі не зможуть змінювати його. В іншому разі користувачі задають значення під час встановлення або першого запуску.
+
+      Це правило доступне лише у версіях Windows, зареєстрованих у домені <ph name="MS_AD_NAME" />, або Windows 10 Pro чи Enterprise, зареєстрованих для керування пристроєм, а також у версіях macOS, у яких працює додаток Керування мобільними пристроями або які зареєстровано в домені через MCX.
+
+      (Для ОС Chrome використовуйте правило DeviceMetricsReportingEnabled.)</translation>
 <translation id="4097556069183835428">Якщо для цього правила вибрано значення None, лупу буде вимкнено.
 
       Якщо ви налаштуєте це правило, користувачі не зможуть змінювати його. Якщо це правило не налаштовано, лупу буде вимкнено, але користувачі зможуть будь-коли ввімкнути її.</translation>
@@ -2505,6 +2527,9 @@
 <translation id="4725528134735324213">Увімкнути Android Backup Service</translation>
 <translation id="4725801978265372736">Ім’я локального користувача та власника хосту віддаленого доступу мають збігатися</translation>
 <translation id="4733471537137819387">Правила, пов’язані з вбудованою автентифікацією HTTP.</translation>
+<translation id="4735099388031364207">Якщо ввімкнути це правило, дозволяється віддалене засвідчення для пристрою. Сертифікат автоматично створюватиметься та завантажуватиметься на сервер керування пристроями.
+
+      Якщо вимкнути або не налаштувати це правило, сертифікат не створюється, а запити до <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> закінчуються помилкою.</translation>
 <translation id="4742973303930120836">Обмежити режим друку з фоновими зображеннями</translation>
 <translation id="4752880493649142945">Сертифікат клієнта для під’єднання до RemoteAccessHostTokenValidationUrl</translation>
 <translation id="4757053978738874325">Увімкнути спеціальну можливість "Монофонічне аудіо".
@@ -2591,6 +2616,11 @@
 <translation id="489803897780524242">Параметр, який керує розташуванням пошукового терміна для пошукової системи за умовчанням</translation>
 <translation id="4899708173828500852">Увімкнути функцію безпечного перегляду</translation>
 <translation id="4906194810004762807">Частота оновлення політики пристрою</translation>
+<translation id="49093841899738146">Якщо ввімкнути це правило, <ph name="PRODUCT_NAME" /> зможе збирати журнали подій WebRTC із сервісів Google, таких як Hangouts Meet, і завантажувати їх на сервери Google. Ці журнали містять діагностичні дані для вирішення проблем з аудіо- й відеовикликами в <ph name="PRODUCT_NAME" />, зокрема відомості про час і розмір пакетів RTP, відгуки про перевантаження мережі й метадані про тривалість і якість аудіофреймів та відеокадрів. Аудіо- й відеоконтент зустрічей не включається в ці журнали. Щоб спростити налагодження, Google може пов'язувати ці журнали з іншими журналами, зібраними сервісом Google, за допомогою ідентифікатора сеансу.
+
+      Якщо вимкнути це правило, такі журнали не збираються й не завантажуються.
+
+      Якщо це правило не налаштовано в М76 і старіших версіях, <ph name="PRODUCT_NAME" /> за умовчанням не зможе збирати й завантажувати ці журнали. Починаючи з версії M77, <ph name="PRODUCT_NAME" /> за умовчанням може збирати й завантажувати ці журнали з більшості профілів, до яких застосовуються корпоративні правила для користувачів на основі хмари. У версіях від M77 до M80 включно <ph name="PRODUCT_NAME" /> також може збирати й завантажувати ці журнали за умовчанням із профілів, якими керують локально в <ph name="PRODUCT_NAME" />.</translation>
 <translation id="4910101362791876581">Указує принтери, доступні користувачеві.
 
       Це правило застосовується, лише якщо для <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" /> вибрано <ph name="PRINTERS_WHITELIST" />
@@ -2602,6 +2632,9 @@
 <translation id="4917385247580444890">Потужний</translation>
 <translation id="4919122295221518724">Увімкнути ретельнішу обробку змішаного контенту</translation>
 <translation id="4923806312383904642">Дозволити WebDriver заміняти несумісні правила</translation>
+<translation id="4927214690104703256">Якщо налаштувати це правило, можна визначити розширення, яким дозволено використовувати функції <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> для віддаленого засвідчення. Щоб скористатись API, розширення мають бути в цьому списку.
+
+      Якщо розширення немає в списку або список не налаштовано, виклики API закінчуватимуться помилкою.</translation>
 <translation id="4927797103413916381">Якщо правило <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> активовано, а <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> ввімкнено або не налаштовано, сайти зі зловживаннями не зможуть відкривати нові вікна чи вкладки.
 
        Якщо правило <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> або <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> деактивовано, сайти зі зловживаннями зможуть відкривати нові вікна або вкладки.</translation>
@@ -2714,6 +2747,13 @@
 <translation id="5090209345759901501">Застосовувати налаштування вмісту Flash до всього вмісту</translation>
 <translation id="5090791951240382356">Дає змогу об'єднувати правила словників із різних джерел</translation>
 <translation id="5091315650312105069">Дозволити автентифікацію <ph name="BASIC_AUTH" /> для з'єднань HTTP</translation>
+<translation id="5103112931744164177">Це правило вказує, який набір програмного забезпечення використовується для обміну даними з DNS-сервером (клієнт DNS операційної системи чи вбудований клієнт DNS <ph name="PRODUCT_NAME" />). Це правило не впливає на те, які DNS-сервери використовуються. Наприклад, якщо операційну систему налаштовано на використання корпоративного DNS-сервера, його також застосовуватиме вбудований клієнт DNS. Воно також не контролює, чи використовується DNS-over-HTTPS. <ph name="PRODUCT_NAME" /> завжди використовуватиме вбудований резолвер для запитів DNS-over-HTTPS. Щоб дізнатися про керування протоколом DNS-over-HTTPS, перегляньте правило <ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" />.
+
+      Якщо ввімкнути це правило, застосовується вбудований клієнт DNS (якщо він доступний).
+
+      Якщо вимкнути правило, вбудований клієнт DNS застосовується, лише коли використовується протокол DNS-over-HTTPS.
+
+      Якщо не налаштувати це правило, вбудований клієнт DNS буде ввімкнено за умовчанням на <ph name="MAC_OS_NAME" />, <ph name="ANDROID_NAME" /> (коли вимкнено приватний DNS-сервер і VPN) та <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="5105313908130842249">Затримка блокування екрана, коли використовується заряд акумулятора</translation>
 <translation id="5108031557082757679">Вимкнені принтери пристроїв підприємства</translation>
 <translation id="5109383437323376357">Визначати наявність варіантів</translation>
@@ -3588,6 +3628,11 @@
 
       Якщо це правило не налаштовано або список порожній, усі схеми будуть доступними в <ph name="PRODUCT_NAME" />.</translation>
 <translation id="6338982178236723271">Повідомляти інформацію про систему</translation>
+<translation id="6347363725343851058">Якщо ввімкнути це правило, активується фоновий режим. У ньому процес <ph name="PRODUCT_NAME" /> запускається після входу в ОС і працює, доки не закриється останнє вікно веб-переглядача, завдяки чому фонові додатки й сеанс веб-перегляду (включно з файлами cookie) залишаються активними. Фоновий процес можна закрити на панелі завдань (на ній відображатиметься відповідний значок).
+
+      Якщо вимкнути це правило, фоновий режим деактивується.
+
+      Якщо налаштувати правило, користувачі не зможуть змінювати його в налаштуваннях веб-переглядача. Якщо правило не налаштовано, спершу фоновий режим буде вимкнено, але користувачі зможуть змінювати цей параметр.</translation>
 <translation id="6353890097388312479">Якщо для цього правила вибрано значення "Усі" або його не налаштовано, користувачі зможуть редагувати налаштування довіри для всіх сертифікатів центру сертифікації, імпортувати сертифікати й видаляти ті, які імпортували користувачі, через Менеджер сертифікатів. Якщо для цього правила вибрано значення "Лише користувач (1)", користувачі зможуть керувати лише сертифікатами, які імпортували користувачі, але не зможуть змінювати налаштування довіри вбудованих сертифікатів. Якщо для нього вибрано значення "Немає (2)", користувачі зможуть лише переглядати сертифікати центру сертифікації, але не керувати ними.</translation>
 <translation id="6362856770865555544">Якщо це правило ввімкнено або не налаштовано, оптимізацію WPAD (автоматичного пошуку веб-проксі) буде ввімкнено в <ph name="PRODUCT_NAME" />.
 
@@ -3914,6 +3959,9 @@
 <translation id="6815483833848348029">Якщо це правило активовано або не налаштовано, пристрій у режимі офлайн, а для локального облікового запису на пристрої налаштовано автоматичний вхід без затримки, <ph name="PRODUCT_OS_NAME" /> показує сповіщення про налаштування мережі.
 
       Якщо це правило деактивовано, натомість відображається повідомлення про помилку.</translation>
+<translation id="6819838337315703072">Якщо ввімкнено підтримку додатків <ph name="LINUX_OS_NAME" /> і це правило, інформація про використання додатків <ph name="LINUX_OS_NAME" /> надсилається на сервер.
+
+      Якщо це правило вимкнено або не налаштовано, інформація про використання не надсилається.</translation>
 <translation id="6821268164692776674">Місця призначення: <ph name="CLOUD_PRINT_NAME" /> і "Зберегти на Google Диску"</translation>
 <translation id="6823711520976094072">Якщо вказати менше ніж 1 МБ або не налаштувати це правило, <ph name="PRODUCT_OS_NAME" /> використовуватиме обсяг пам'яті за умовчанням (256 МіБ) для кешування файлів додатків і розширень, які встановлюють кілька користувачів одного пристрою. Таким чином не потрібно повторно завантажувати дані для кожного користувача.</translation>
 <translation id="682408981080798691">Якщо це правило ввімкнено або не налаштовано, засіб обробки Renderer Code Integrity буде активовано.
@@ -3953,6 +4001,9 @@
 
       Це правило більше не підтримується. Натомість використовуйте правило <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" />.</translation>
 <translation id="684856667300805181">Це правило видалено в <ph name="PRODUCT_NAME" /> 68 і замінено правилом <ph name="ARC_GLS_POLICY_NAME" />.</translation>
+<translation id="6848721032946289937">Якщо ввімкнути або не налаштувати це правило, активується апаратне прискорення (якщо можливо).
+
+      Якщо вимкнути це правило, апаратне прискорення не працюватиме.</translation>
 <translation id="6851199885688265233">Увімкнути спеціальну можливість "Виділення курсора"</translation>
 <translation id="6851315055469993882">Увімкнути загальну область кешу HTTP-авторизації</translation>
 <translation id="6854767649023671426">Якщо для цього правила вибрано значення Enabled або його не налаштовано, користувачі отримуватимуть сповіщення із запитом на дозвіл знімати відео всюди, крім сторінок, URL-адреси яких указані в списку VideoCaptureAllowedUrls.
@@ -4100,6 +4151,9 @@
 <translation id="7027785306666625591">Налаштовувати керування живленням в <ph name="PRODUCT_OS_NAME" />.
 
       Це правило дозволяє налаштувати поведінку <ph name="PRODUCT_OS_NAME" />, коли користувач залишається неактивним упродовж певного часу.</translation>
+<translation id="7027923238554618852">Якщо налаштувати це правило, <ph name="PRODUCT_OS_NAME" /> буде вказано використовувати конфігурацію планувальника завдань із вказаною назвою. Для правила можна вибрати значення "<ph name="CONSERVATIVE_VALUE" />" або "<ph name="PERFORMANCE_VALUE" />", які коригують планувальник завдань для стабільної або максимальної ефективності відповідно.
+
+      Якщо правило не налаштовано, користувач може вибирати самостійно.</translation>
 <translation id="7030205756530739128">Якщо для правила <ph name="DEVICE_BATTERY_CHARGE_MODE_NAME" /> вибрано значення <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_MODE_NAME" />, ви можете налаштувати правило <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_START_CHARGING_POLICY_NAME" />, щоб починати заряджання акумулятора, коли рівень заряду впаде до певного рівня у відсотках. Це значення має бути принаймні на 5 відсотків меншим за значення <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_STOP_CHARGING_POLICY_NAME" />.
 
       Якщо це правило не налаштовано, застосовується стандартний режим заряджання.</translation>
@@ -4228,6 +4282,11 @@
 <translation id="718126088895133062">Це правило визначає ліцензійний ідентифікатор користувача <ph name="PLUGIN_VM_NAME" /> для цього пристрою.</translation>
 <translation id="7185078796915954712">TLS 1.3</translation>
 <translation id="7185630966939835143">Використовувати веб-сервіси Google для виправлення орфографічних помилок</translation>
+<translation id="718850220532931090">Це правило більше не підтримується. Натомість використовуйте <ph name="ATTESTATION_EXTENSION_ALLOWLIST_POLICY_NAME" />.
+
+      Якщо налаштувати це правило, можна визначити розширення, яким дозволено використовувати функцію <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> <ph name="CHALLENGE_USER_KEY_FUNCTION" /> для віддаленого засвідчення. Щоб скористатись API, розширення мають бути в цьому списку.
+
+      Якщо розширення немає в списку або список не налаштовано, виклики API закінчуватимуться помилкою.</translation>
 <translation id="718956142899066210">Типи з’єднань, дозволені для оновлень</translation>
 <translation id="7190286937411178540">Увімкнути спеціальну можливість "Виділення на клавіатурі"</translation>
 <translation id="7193489339723768342">Налаштувавши це правило, ви вказуєте список URL-адрес, шаблони яких зіставлятимуться з джерелом безпеки URL-адреси, що надсилає запит. Якщо буде виявлено збіг, сторінка отримає доступ до пристроїв запису аудіо, не надсилаючи сповіщення користувачу
@@ -5025,6 +5084,9 @@
 <translation id="8357681633047935212">Обмежувати тривалість сеансу користувача</translation>
 <translation id="8357989008292691856">Список користувачів, яким дозволено вхід</translation>
 <translation id="8359734107661430198">Увімкнути API функції ExampleDeprecatedFeature, що підтримувалася до 02.09.2008.</translation>
+<translation id="8367069206652407172">Якщо вимкнути цю функцію, користувачі не зможуть завершувати процеси в Диспетчері завдань.
+
+      Якщо ввімкнути або не налаштувати це правило, користувачі зможуть завершувати процеси в Диспетчері завдань.</translation>
 <translation id="8367209241899435947">Вмикає Очищення Chrome у Windows</translation>
 <translation id="8367473200119029349">Хмарне звітування</translation>
 <translation id="8369602308428138533">Затримка вимкнення екрана, коли використовується живлення від мережі</translation>
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index 46fd0c7..46340fc 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -165,9 +165,6 @@
       Chính sách này không áp dụng cho người dùng kiosk.
 
       Cảnh báo: Tùy chọn Wipe và MinimalMigrate sẽ xóa dữ liệu trên máy.</translation>
-<translation id="1247850578871017740">Nếu bạn đặt chính sách này thành một giá trị hợp lệ, <ph name="PRODUCT_NAME" /> sẽ không sử dụng phiên bản SSL/TLS thấp hơn phiên bản được chỉ định. Những giá trị không nhận dạng được sẽ bị bỏ qua.
-
-      Nếu bạn không đặt chính sách này, thì <ph name="PRODUCT_NAME" /> sẽ hiển thị lỗi đối với TLS 1.0 và TLS 1.1, nhưng người dùng có thể bỏ qua lỗi này.</translation>
 <translation id="1252536192437793850">Cho phép trang web yêu cầu người dùng cấp quyền truy cập vào một cổng nối tiếp</translation>
 <translation id="125655429495551011">Nếu bạn đặt chính sách này thành một chuỗi, thì chuỗi đó sẽ được dùng làm tên máy chủ thiết bị trong yêu cầu DHCP. Chuỗi này có thể chứa các biến <ph name="ASSET_ID_PLACEHOLDER" />, <ph name="SERIAL_NUM_PLACEHOLDER" />, <ph name="MAC_ADDR_PLACEHOLDER" />, <ph name="MACHINE_NAME_PLACEHOLDER" />, <ph name="LOCATION_PLACEHOLDER" /> sẽ được thay thế bằng các giá trị trên thiết bị trước khi dùng làm tên máy chủ. Giá trị thay thế thu được sẽ là tên máy chủ hợp lệ (theo RFC 1035, mục 3.1).
 
@@ -334,11 +331,6 @@
 
           Nếu bạn đặt chính sách này, thì người dùng không thể thay đổi hay ghi đè chính sách.</translation>
 <translation id="1502843533062797703">Cho phép chặn phần mềm bên thứ ba thêm mã thực thi</translation>
-<translation id="1503863096120373385">Thiết lập chế độ cài đặt thời gian lưu giữ dữ liệu duyệt web của <ph name="PRODUCT_NAME" />.
-      Chính sách này kiểm soát khoảng thời gian lưu giữ dữ liệu duyệt web đã chọn. Chính sách này sẽ không có hiệu lực nếu bạn bật tính năng Đồng bộ hóa.
-      Dữ liệu duyệt web gồm có các loại sau đây: <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> và <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
-      Chrome sẽ thường xuyên xóa dữ liệu thuộc những loại đã chọn có khoảng thời gian lưu giữ quá <ph name="TIME_TO_LIVE_IN_HOURS" />. Vì hoạt động xóa này chỉ diễn ra định kỳ, nên một số dữ liệu có thể tồn tại lâu hơn một chút nhưng không quá 2 lần khoảng thời gian lưu giữ dự kiến là <ph name="TIME_TO_LIVE_IN_HOURS" />.
-      </translation>
 <translation id="1509692106376861764">Chính sách này đã chấm dứt kể từ phiên bản <ph name="PRODUCT_NAME" /> 29.</translation>
 <translation id="1512974677514081818">Cung cấp cấu hình máy in dành cho doanh nghiệp được kết nối với các thiết bị.
 
@@ -1006,6 +998,7 @@
       Nếu bạn không đặt chính sách này, thì tính năng Nhấp để gọi sẽ bật theo mặc định.</translation>
 <translation id="2482676533225429905">Nhắn tin gốc</translation>
 <translation id="2483146640187052324">Dự đoán tác vụ mạng trên kết nối mạng bất kỳ</translation>
+<translation id="2496180316473517155">Lịch sử duyệt web</translation>
 <translation id="2498238926436517902">Luôn tự động ẩn giá</translation>
 <translation id="250022556568924228">Nếu bạn đặt chính sách này, <ph name="PRODUCT_OS_NAME" /> sẽ tải Điều khoản dịch vụ xuống và hiển thị với người dùng ở bất cứ thời điểm nào phiên truy cập tài khoản trên thiết bị bắt đầu. Người dùng chỉ có thể đăng nhập vào phiên đó sau khi chấp nhận Điều khoản dịch vụ.
 
@@ -1156,6 +1149,7 @@
 <translation id="2702023190395322609">Bật tính năng đề xuất nội dung nghe nhìn</translation>
 <translation id="2706708761587205154">Chỉ cho phép in khi có mã PIN</translation>
 <translation id="2707873794476722903">Tính năng Duyệt web an toàn đang hoạt động ở chế độ chuẩn.</translation>
+<translation id="2709516037105925701">Tự động điền</translation>
 <translation id="2714359695399346815">Việc đặt thành Bật hoặc không đặt chính sách này sẽ cho phép việc sử dụng các máy chủ STUN. Qua đó, máy khách từ xa có thể phát hiện và kết nối với máy này, ngay cả khi bị phân cách bằng tường lửa.
 
       Nếu bạn đặt chính sách này thành Tắt khi các kết nối UDP đi bị lọc qua tường lửa, thì máy chỉ cho phép các kết nối từ máy khách trong mạng cục bộ.</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index f1f2d15..05c27ce 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -164,9 +164,6 @@
       此政策不适用于自助服务终端用户。
 
       警告:如果此政策设为 Wipe 和 MinimalMigrate,系统会移除本地数据。</translation>
-<translation id="1247850578871017740">如果此政策设为有效值,<ph name="PRODUCT_NAME" /> 将不会使用低于指定版本的 SSL/TLS 版本。无法识别的值都会被忽略。
-
-      如果此政策未设置,<ph name="PRODUCT_NAME" /> 将会针对 TLS 1.0 和 TLS 1.1 显示错误消息,但用户可以自行绕过。</translation>
 <translation id="1252536192437793850">允许网站请求用户授权其访问串行端口</translation>
 <translation id="125655429495551011">如果此政策设为一个字符串,系统会将该字符串用作 DHCP 请求中的设备主机名。该字符串可以包含变量 <ph name="ASSET_ID_PLACEHOLDER" />、<ph name="SERIAL_NUM_PLACEHOLDER" />、<ph name="MAC_ADDR_PLACEHOLDER" />、<ph name="MACHINE_NAME_PLACEHOLDER" />、<ph name="LOCATION_PLACEHOLDER" />。系统会先将这些变量替换为设备上的相应值,然后再将该字符串用作主机名。替换后的字符串应是有效的主机名(符合 RFC 1035 第 3.1 节中的规定)。
 
@@ -321,11 +318,6 @@
 
           如果您设置了此政策,用户将无法更改或覆盖它。</translation>
 <translation id="1502843533062797703">禁止插入第三方软件</translation>
-<translation id="1503863096120373385">为 <ph name="PRODUCT_NAME" /> 配置浏览数据生命周期设置。
-      此政策旨在控制所选浏览数据的留存时长。如果同步功能已启用,此政策将不会产生任何影响。
-      可用的数据类型有 <ph name="DATA_TYPE_BROWSING_HISTORY" />、<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />、<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />、<ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />、<ph name="DATA_TYPE_PASSWORD" />、<ph name="DATA_TYPE_AUTOFILL" />、<ph name="DATA_TYPE_SITE_SETTINGS" /> 和 <ph name="DATA_TYPE_HOSTED_APP_DATA" />。
-      Chrome 会定期移除留存时长已超过 <ph name="TIME_TO_LIVE_IN_HOURS" /> 的所选类型数据。由于系统只会按特定的时间间隔执行这种删除操作,某些数据的留存时长可能会略久一点,但绝不会超过预期留存时长(<ph name="TIME_TO_LIVE_IN_HOURS" />)的 2 倍。
-      </translation>
 <translation id="1509692106376861764">此政策从 <ph name="PRODUCT_NAME" /> 版本 29 起开始弃用。</translation>
 <translation id="1512974677514081818">为绑定到设备的企业打印机提供配置。
 
@@ -976,6 +968,7 @@
       如果未设置此政策,“点击通话”功能会默认处于启用状态。</translation>
 <translation id="2482676533225429905">本地消息传递</translation>
 <translation id="2483146640187052324">采用任何网络连接时,均预测网络操作</translation>
+<translation id="2496180316473517155">浏览记录</translation>
 <translation id="2498238926436517902">始终自动隐藏任务栏</translation>
 <translation id="250022556568924228">如果您设置了此政策,<ph name="PRODUCT_OS_NAME" />会下载《服务条款》,并会在用户开始进行设备本地帐号会话时将其呈现给用户。用户必须先接受《服务条款》才能登录会话。
 
@@ -1121,6 +1114,7 @@
 <translation id="2702023190395322609">启用媒体推荐内容</translation>
 <translation id="2706708761587205154">仅允许在有 PIN 码的情况下打印</translation>
 <translation id="2707873794476722903">“安全浏览”功能会处于开启状态且会在标准模式下运行。</translation>
+<translation id="2709516037105925701">自动填充</translation>
 <translation id="2714359695399346815">如果此政策已启用或未设置,系统会允许使用 STUN 服务器,以便远程客户端(即使受到防火墙阻隔)能够发现和连接到这台计算机。
 
       如果此政策已停用,而且防火墙会阻止出站 UDP 连接,则这台计算机将只接受由本地网络内的客户端计算机发起的连接。</translation>
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index 28849cd3..46aaac0 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -83,6 +83,11 @@
 <translation id="1099282607296956954">為所有網站啟用網站隔離</translation>
 <translation id="1117535567637097036">處理 Android 意圖時,系統不會使用透過這項政策設定的通訊協定處理常式。</translation>
 <translation id="1118093128235245168">允許網站要求使用者授權存取已連線的 USB 裝置</translation>
+<translation id="1133814529606590009">如果將這項政策設為啟用,系統會將輸入網址匿名資料收集功能設為一律開啟;該功能會將使用者造訪的網頁網址傳送給 Google,協助改善搜尋與瀏覽服務。
+
+      如果將這項政策設為停用,則會關閉輸入網址匿名資料收集功能。
+
+      如果設定這項政策,使用者將無法變更設定。如果不設定,系統會先開啟輸入網址匿名資料收集功能,但使用者可進行變更。</translation>
 <translation id="1138294736309071213">這項政策只會在零售模式下啟用。
 
       決定螢幕保護程式顯示前的閒置時間是否要顯示在零售模式下的裝置登入畫面上。
@@ -164,9 +169,6 @@
       這項政策不適用於資訊站使用者。
 
       警告:如果設為 Wipe 和 MinimalMigrate,系統會移除本機資料。</translation>
-<translation id="1247850578871017740">如果將這項政策設為有效值,<ph name="PRODUCT_NAME" /> 不會使用低於指定版本的 SSL/傳輸層安全標準 (TLS) 版本。系統會忽略無法辨識的值。
-
-      如果未設定這項政策,<ph name="PRODUCT_NAME" /> 會針對 TLS 1.0 和 TLS 1.1 顯示錯誤訊息,但使用者將可略過這個訊息。</translation>
 <translation id="1252536192437793850">允許網站要求使用者授予序列埠的存取權</translation>
 <translation id="125655429495551011">你可以透過這項政策設定字串,DHCP 要求會使用該字串做為裝置主機名稱。字串包括下列變數:<ph name="ASSET_ID_PLACEHOLDER" />、<ph name="SERIAL_NUM_PLACEHOLDER" />、<ph name="MAC_ADDR_PLACEHOLDER" />、<ph name="MACHINE_NAME_PLACEHOLDER" />、<ph name="LOCATION_PLACEHOLDER" />,系統會先用裝置的值替換這些變數,再將字串用於主機名稱。替換後的值必須是有效的主機名稱 (根據 RFC 1035 文件第 3.1 條的規定)。
 
@@ -181,6 +183,13 @@
       如果不設定這項政策,使用者將可選擇是否要使用 Google Sync。
 
       如要完全停用 Google Sync,建議你在 Google 管理控制台中停用 Google Sync 服務。</translation>
+<translation id="128059397544257017">如果將這項政策設為啟用,當 <ph name="CHROME_CLEANUP_NAME" />偵測到垃圾軟體時,可按照 <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> 所設定的政策,向 Google 回報掃描作業相關資訊。<ph name="CHROME_CLEANUP_NAME" />會詢問使用者是否要進行清理,並將掃描結果傳送給 Google。
+
+      如果將這項政策設為停用,當 <ph name="CHROME_CLEANUP_NAME" />偵測到垃圾軟體時,無論 <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> 的值為何,都不會向 Google 回報掃描作業相關資訊。<ph name="CHROME_CLEANUP_NAME" />會詢問使用者是否要進行清理,但不會將掃描結果回報給 Google。
+
+      如果不設定這項政策,<ph name="CHROME_CLEANUP_NAME" />可按照 <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> 所設定的政策,將偵測到垃圾軟體的掃描作業相關資訊回報給 Google。<ph name="CHROME_CLEANUP_NAME" />會詢問使用者是否要進行清理,並將掃描結果提供給 Google,協助改善日後的垃圾軟體偵測作業。這些結果包含檔案中繼資料、自動安裝的擴充功能和登錄機碼,詳情請參閱《Chrome 隱私權白皮書》。
+
+      在 <ph name="MS_WIN_NAME" /> 上,這項功能僅適用於已加入 <ph name="MS_AD_NAME" /> 網域、在 Windows 10 專業版上執行,或是已註冊 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />服務的執行個體。</translation>
 <translation id="1290634681382861275">管理其他設定,包括 USB、藍牙、政策更新、開發人員模式等等。</translation>
 <translation id="1291880496936992484">警告:自 <ph name="PRODUCT_NAME" /> 52 版 (將於 2016 年 9 月左右推出) 起,系統將全面移除 RC4,屆時這項政策將停止運作。
 
@@ -314,11 +323,6 @@
       注意:請以半形逗號分隔伺服器名稱,可使用萬用字元 (<ph name="WILDCARD_VALUE" />)。</translation>
 <translation id="1488406778491620405">「<ph name="PRODUCT_NAME" />」無障礙功能可讓螢幕閱讀器的視障使用者取得無標籤網路圖片的說明。啟用這項功能的使用者將可使用去識別化的 Google 服務,針對未加上標籤的網路圖片取得自動產生的說明。啟用這項功能後,系統會將圖片內容傳送給 Google 伺服器以產生說明內容。系統不會傳送 Cookie 或其他使用者資料,且 Google 不會儲存或記錄任何圖片內容。如果將這項政策設為 True,「<ph name="PRODUCT_NAME" />」功能即會啟用,不過這項設定只會影響螢幕閱讀器或其他類似輔助技術的使用者。如果將這項政策設為 False,使用者將無法啟用這項功能。設好這項政策後,使用者即無法變更或覆寫設定。</translation>
 <translation id="1502843533062797703">啟用禁止第三方軟體置入可執行程式碼的政策</translation>
-<translation id="1503863096120373385">設定 <ph name="PRODUCT_NAME" /> 的瀏覽資料生命週期。
-      這項政策可控管所選瀏覽資料的留存時間。如果啟用了同步功能,這項政策就不會生效。
-      可用的資料類型有 <ph name="DATA_TYPE_BROWSING_HISTORY" />、<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />、<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />、<ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />、<ph name="DATA_TYPE_PASSWORD" />、<ph name="DATA_TYPE_AUTOFILL" />、<ph name="DATA_TYPE_SITE_SETTINGS" />、<ph name="DATA_TYPE_HOSTED_APP_DATA" />。
-      所選類型的資料存放超過 <ph name="TIME_TO_LIVE_IN_HOURS" />後,Chrome 就會定期移除。由於 Chrome 每隔一段時間才會刪除資料,有些資料可能會留存較久,但存放時間絕不會超過預計時間長度 (<ph name="TIME_TO_LIVE_IN_HOURS" />) 的兩倍。
-      </translation>
 <translation id="1509692106376861764">我們已於 <ph name="PRODUCT_NAME" /> 版本 29 中移除這項政策。</translation>
 <translation id="1512974677514081818">為繫結至裝置的企業印表機提供設定。
 
@@ -694,6 +698,9 @@
       如果不設定這項政策或設為空白清單,受管理的裝置將無法使用任何快速解鎖模式。
 
       這項政策已遭淘汰,請改用 <ph name="QUICK_UNLOCK_MODE_ALLOW_LIST_POLICY_NAME" /></translation>
+<translation id="2033784678146670379">如果將這項政策設為啟用,使用者可運用 <ph name="PRODUCT_OS_NAME" />裝置的硬體,透過 <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> 的 <ph name="CHALLENGE_USER_KEY_FUNCTION" />,從遠端向隱私權憑證授權單位認證身分。
+
+      如果將這項政策設為停用或不設定,將導致 API 呼叫失敗,並收到錯誤代碼。</translation>
 <translation id="2036522553891755455">如果將這項政策設為啟用,共用檔案搜尋功能 (在 <ph name="PRODUCT_NAME" />上為「網路檔案共用」功能) 會使用 <ph name="NETBIOS_PROTOCOL" /> 搜尋網路上的共用檔案。如果設為停用,共用檔案搜尋功能就不會使用這項通訊協定搜尋共用檔案。
       如果不設定這項政策,系統預設會為受管理的使用者停用此通訊協定,其他使用者則會設為啟用。</translation>
 <translation id="2037214548071298156">如果將這項政策設為啟用或不設定,已註冊的裝置會回報 CPU/RAM 使用量等硬體統計資料。
@@ -721,6 +728,9 @@
 <translation id="2082205219176343977">設定裝置的最低 Chrome 版本限制。</translation>
 <translation id="208566302163036794">封鎖已停用的功能</translation>
 <translation id="208623333578980446">允許電源管理的螢幕 Wake Lock</translation>
+<translation id="2090939118981888335">如果將這項政策設為啟用,代表允許使用資料壓縮 Proxy。如果將這項政策設為停用,則代表禁止使用該 Proxy。
+
+      如果設定這項政策,使用者將無法變更設定。如果不設定,使用者可選擇使用該功能。</translation>
 <translation id="209586405398070749">穩定版</translation>
 <translation id="2098658257603918882">啟用使用量和當機相關資料的報告功能</translation>
 <translation id="2104418465060359056">回報擴充功能和外掛程式資訊</translation>
@@ -970,6 +980,7 @@
       如果不設定這項政策,系統在預設狀態下會啟用「點選通話」功能。</translation>
 <translation id="2482676533225429905">內建訊息傳遞</translation>
 <translation id="2483146640187052324">無論使用任何網路連線,皆預測網路動作</translation>
+<translation id="2496180316473517155">瀏覽記錄</translation>
 <translation id="2498238926436517902">一律自動隱藏檔案櫃</translation>
 <translation id="250022556568924228">如果設定這項政策,<ph name="PRODUCT_OS_NAME" />會下載《服務條款》,並在裝置本機帳戶的工作階段啟動時向使用者顯示。使用者必須接受《服務條款》才能登入工作階段。
 
@@ -1114,6 +1125,7 @@
 <translation id="2702023190395322609">啟用媒體推薦內容</translation>
 <translation id="2706708761587205154">只在 PIN 碼啟用時允許列印</translation>
 <translation id="2707873794476722903">已啟用標準模式中的安全瀏覽功能。</translation>
+<translation id="2709516037105925701">自動填入</translation>
 <translation id="2714359695399346815">如果將這項政策設為啟用或不設定,即可使用 STUN 伺服器,這樣即使遠端用戶端受到防火牆阻隔,也能偵測到這部裝置並建立連線。
 
       如果將這項政策設為停用,且防火牆會篩選外送 UDP 連線,這部裝置就只能接受區域網路中用戶端裝置的連線。</translation>
@@ -1125,6 +1137,9 @@
       如果將這項政策設為停用或不設定,這類建議不會顯示。
 
       如果設定這項政策,使用者將無法變更設定。</translation>
+<translation id="2724313944474873275">如果將這項政策設為啟用或不設定,<ph name="PRODUCT_OS_NAME" />裝置將可使用遠端認證 (已驗證存取權),取得由 <ph name="PRODUCT_OS_NAME" />憑證授權單位核發的憑證,聲明該裝置有資格播放受保護的內容。在這項程序中,必須將可準確識別裝置的硬體背書資訊傳送給 <ph name="PRODUCT_OS_NAME" />憑證授權單位。
+
+      如果將這項政策設為停用,則裝置不會使用遠端認證來保護內容,也無法播放受保護的內容。</translation>
 <translation id="2725855586003209701">如果將這項政策設為啟用或不設定,已註冊的裝置會回報近期登入的裝置使用者清單。
 
       如果將這項政策設為停用,已註冊的裝置不會回報使用者清單。</translation>
@@ -2083,6 +2098,13 @@
 <translation id="4089849819635523136">如果已啟用 <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> 政策,你可以設定 <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> 政策來指定關鍵字或快速鍵,之後就可以在網址列中輸入內容搜尋這個搜尋引擎。
 
       如果未設定 <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> 政策,沒有任何關鍵字會啟動搜尋引擎。</translation>
+<translation id="409035987613226003">如果將這項政策設為停用,系統會以匿名方式將 Chrome 的使用情況和當機相關資料回報給 Google,並禁止使用者變更這項設定。如果將這項政策設為停用,則系統不會將這些資訊傳送給 Google。
+
+      如果設定這項政策,使用者將無法變更設定。如果不設定,使用者可在安裝或初次執行 Chrome 時指定相關行為。
+
+      這項政策僅適用於已加入 <ph name="MS_AD_NAME" /> 網域的 Windows 執行個體、或是已註冊裝置管理服務的 Windows 10 專業版或企業版執行個體,以及透過行動裝置管理 (MDM) 管理或透過 MCX 加入某個網域的 macOS 執行個體。
+
+      針對 Chrome 作業系統,請參閱 DeviceMetricsReportingEnabled。</translation>
 <translation id="4097556069183835428">將這項政策設為 None 時,系統會停用放大鏡。
 
       如果設定這項政策,使用者將無法變更。如果未設定,系統會先停用放大鏡,但使用者隨時可以啟用。</translation>
@@ -2446,6 +2468,9 @@
 <translation id="4725528134735324213">啟用 Android 備份服務</translation>
 <translation id="4725801978265372736">要求比對本機使用者和遠端存取主機擁有者的名稱</translation>
 <translation id="4733471537137819387">與整合 HTTP 驗證相關的政策。</translation>
+<translation id="4735099388031364207">如果將這項政策設為啟用,裝置將可使用遠端認證。系統會自動產生憑證並上傳到裝置管理伺服器。
+
+      如果將這項政策設為停用或不設定,則系統不會產生憑證,對 <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> 的呼叫也會失敗。</translation>
 <translation id="4742973303930120836">限制背景圖形列印模式</translation>
 <translation id="4752880493649142945">用於連線至 RemoteAccessHostTokenValidationUrl 的用戶端憑證</translation>
 <translation id="4757053978738874325">啟用單聲道音訊無障礙功能。
@@ -2531,6 +2556,11 @@
 <translation id="489803897780524242">可使用這個參數來決定是否要為預設搜尋服務商提供替代搜尋字詞。</translation>
 <translation id="4899708173828500852">啟用安全瀏覽</translation>
 <translation id="4906194810004762807">裝置政策的重新整理頻率</translation>
+<translation id="49093841899738146">如果將這項政策設為啟用,<ph name="PRODUCT_NAME" /> 將可收集 Hangouts Meet 等 Google 服務中的 WebRTC 事件記錄,並上傳至 Google。這些記錄中有診斷資訊,可用來對 <ph name="PRODUCT_NAME" /> 中的音訊或視訊會議問題進行偵錯;相關資訊包括 RTP 封包的時間和大小、網路壅塞情況報告,以及音訊和視訊影格的時間和品質相關中繼資料。這些記錄不包含會議的任何音訊或視訊內容。為了簡化偵錯作業,Google 可能會運用工作階段 ID,將這些記錄與 Google 服務本身收集的其他記錄建立關聯。
+
+      如果將這項政策設為停用,則系統不會收集或上傳這類記錄。
+
+      如果不設定這項政策,<ph name="PRODUCT_NAME" /> M76 以下版本預設將無法收集與上傳這類記錄。自 M77 版起,針對大多數適用雲端式使用者層級企業政策的工作夾,<ph name="PRODUCT_NAME" /> 預設可收集與上傳這類記錄。從 M77 版到 M80 版,針對適用 <ph name="PRODUCT_NAME" /> 內部部署管理設定的工作夾,<ph name="PRODUCT_NAME" /> 預設也可收集與上傳這類記錄。</translation>
 <translation id="4910101362791876581">指定可供使用的印表機。
 
       只有在為 <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" /> 選擇 <ph name="PRINTERS_WHITELIST" /> 的情況下,系統才會使用這項政策
@@ -2542,6 +2572,9 @@
 <translation id="4917385247580444890">強</translation>
 <translation id="4919122295221518724">使用較嚴格的混合內容處理方式</translation>
 <translation id="4923806312383904642">允許 WebDriver 覆寫不相容的政策</translation>
+<translation id="4927214690104703256">你可以透過這項政策指定要讓哪些擴充功能使用 <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> 函式進行遠端認證。只有列在這個清單上的擴充功能才能使用該 API。
+
+      如果擴充功能未列在清單上,或是未設定清單,將導致 API 呼叫失敗,並收到錯誤代碼。</translation>
 <translation id="4927797103413916381">如果未停用 <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" />,則將 <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> 設為啟用或未設定時,系統會禁止發生濫用行為的網站開啟新視窗或新分頁。
 
        如果將 <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> 或 <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> 設為停用,系統會允許發生濫用行為的網站開啟新視窗或新分頁。</translation>
@@ -2654,6 +2687,13 @@
 <translation id="5090209345759901501">將 Flash 內容設定套用至所有內容</translation>
 <translation id="5090791951240382356">允許合併不同來源的字典政策</translation>
 <translation id="5091315650312105069">允許透過 HTTP 使用<ph name="BASIC_AUTH" />驗證</translation>
+<translation id="5103112931744164177">你可以透過這項政策指定要使用哪一個軟體堆疊與 DNS 伺服器進行通訊,選項包括作業系統 DNS 用戶端,以及 <ph name="PRODUCT_NAME" /> 的內建 DNS 用戶端。這項政策不會影響所用的 DNS 伺服器;比方說,如果作業系統設定使用企業的 DNS 伺服器,內建 DNS 用戶端同樣會使用該伺服器。這項政策也不會限制是否使用 DNS-over-HTTPS;<ph name="PRODUCT_NAME" /> 一律會使用內建的解析器來處理 DNS-over-HTTPS 要求。想瞭解如何控管 DNS-over-HTTPS,請參閱 <ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" /> 政策。
+
+      如果將這項政策設為啟用,系統將使用內建的 DNS 用戶端 (如果有的話)。
+
+      如果將這項政策設為停用,只有在採用 DNS-over-HTTPS 的情況下,系統才會使用內建的 DNS 用戶端。
+
+      如果不設定這項政策,在 <ph name="MAC_OS_NAME" />、<ph name="ANDROID_NAME" /> (適用於私人 DNS 和 VPN 皆未啟用的情形) 和 <ph name="PRODUCT_OS_NAME" />上,系統預設會啟用內建的 DNS 用戶端。</translation>
 <translation id="5105313908130842249">在電池供電環境下執行時的螢幕鎖定延遲時間</translation>
 <translation id="5108031557082757679">已停用企業裝置印表機</translation>
 <translation id="5109383437323376357">指定變化版本的可用性</translation>
@@ -3520,6 +3560,11 @@
 
       如果不設定這項政策或是清單保留空白,系統將可在 <ph name="PRODUCT_NAME" /> 中存取所有網路通訊協定配置。</translation>
 <translation id="6338982178236723271">回報系統資訊</translation>
+<translation id="6347363725343851058">如果將這項政策設為啟用,系統會開啟背景模式。在背景模式中,<ph name="PRODUCT_NAME" /> 處理程序會在使用者登入作業系統時啟動,並在最後一個瀏覽器視窗關閉後持續執行,讓背景應用程式和瀏覽工作階段 (包括任何工作階段 Cookie) 維持運作。背景處理程序會在系統匣中顯示相應圖示,使用者隨時可從該處關閉處理程序。
+
+      如果將這項政策設為停用,系統將關閉背景模式。
+
+      如果設定這項政策,使用者將無法在瀏覽器設定中予以變更。如果不設定,系統會先關閉背景模式,但使用者可進行變更。</translation>
 <translation id="6353890097388312479">如果將這項政策設為 All (值為 0) 或不設定,使用者將可透過「憑證管理員」編輯所有 CA 憑證的信任設定、移除使用者匯入的憑證以及匯入憑證。如果將這項政策設為 UserOnly (值為 1),使用者只能管理使用者匯入的憑證,無法變更內建憑證的信任設定。如果設為 None (值為 2),使用者只能查看 CA 憑證,而無法進行管理。</translation>
 <translation id="6362856770865555544">如果將這項政策設為啟用或不設定,系統會開啟 <ph name="PRODUCT_NAME" /> 中的 WPAD (網路 Proxy 自動探索) 最佳化功能。
 
@@ -3843,6 +3888,9 @@
 <translation id="6815483833848348029">如果將這項政策設為啟用或不設定,當裝置處於離線狀態且裝置本機帳戶設為零延遲自動登入時,<ph name="PRODUCT_OS_NAME" />會顯示網路設定提示。
 
       如果將這項政策設為停用,系統會改為顯示錯誤訊息。</translation>
+<translation id="6819838337315703072">在 <ph name="LINUX_OS_NAME" /> 應用程式支援功能開啟的情況下,如果將這項政策設為啟用,系統會將 <ph name="LINUX_OS_NAME" /> 應用程式使用情況相關資訊傳回伺服器。
+
+      如果將這項政策設為停用或不設定,則系統不會回報使用資訊。</translation>
 <translation id="6821268164692776674"><ph name="CLOUD_PRINT_NAME" />與「儲存至 Google 雲端硬碟」的目的地</translation>
 <translation id="6823711520976094072">如果設為 1 MB 以下的值或不設定,針對擁有多位使用者的單一裝置,<ph name="PRODUCT_OS_NAME" />會使用 256 MiB 的預設大小快取要安裝的應用程式和擴充功能,讓每位使用者不必重新下載每個應用程式和擴充功能。</translation>
 <translation id="682408981080798691">如果將這項政策設為啟用或不設定,系統會啟用轉譯器程式碼完整性功能。
@@ -3882,6 +3930,9 @@
 
       這項政策已遭淘汰,請改用 <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" />。</translation>
 <translation id="684856667300805181">這項政策已在 <ph name="PRODUCT_NAME" /> 68 中遭到移除,並已由 <ph name="ARC_GLS_POLICY_NAME" /> 取代。</translation>
+<translation id="6848721032946289937">如果將這項政策設為啟用或不設定,系統會開啟硬體加速功能 (如果有的話)。
+
+      如果將這項政策設為停用,則系統會關閉硬體加速功能。</translation>
 <translation id="6851199885688265233">啟用游標醒目顯示無障礙功能</translation>
 <translation id="6851315055469993882">啟用全域範圍的 HTTP 驗證快取</translation>
 <translation id="6854767649023671426">如果將這項政策設為啟用或不設定,系統會詢問使用者是否要存取影片擷取裝置 (如果網址已列在 VideoCaptureAllowedUrls 的許可清單內,系統不會提示使用者)。
@@ -4032,6 +4083,9 @@
 <translation id="7027785306666625591">設定 <ph name="PRODUCT_OS_NAME" /> 的電源管理。
 
       這些政策可讓你設定當使用者閒置一段時間後,要讓 <ph name="PRODUCT_OS_NAME" /> 採取的動作。</translation>
+<translation id="7027923238554618852">如果設定這項政策,<ph name="PRODUCT_OS_NAME" />將根據指定的名稱,使用相應的工作排程器設定。你可以將這項政策設為 <ph name="CONSERVATIVE_VALUE" /> 或 <ph name="PERFORMANCE_VALUE" />,讓系統分別依穩定性或最佳成效調整工作排程器。
+
+      如果不設定這項政策,使用者可自行選取偏好設定。</translation>
 <translation id="7030205756530739128">如果將 <ph name="DEVICE_BATTERY_CHARGE_MODE_NAME" /> 設為<ph name="DEVICE_BATTERY_CHARGE_CUSTOM_MODE_NAME" />,則你可以透過 <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_START_CHARGING_POLICY_NAME" /> 自訂開始充電的時機 (根據電量百分比進行設定)。設定值必須至少比 <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_STOP_CHARGING_POLICY_NAME" /> 的值低 5 個百分點。
 
       如果不設定這項政策,系統會套用標準充電模式。</translation>
@@ -4160,6 +4214,11 @@
 <translation id="718126088895133062">這項政策會為這部裝置指定 <ph name="PLUGIN_VM_NAME" /> 授權使用者 ID。</translation>
 <translation id="7185078796915954712">TLS 1.3</translation>
 <translation id="7185630966939835143">使用 Google 網路服務來協助解決拼字錯誤</translation>
+<translation id="718850220532931090">這項政策已遭淘汰,請改用 <ph name="ATTESTATION_EXTENSION_ALLOWLIST_POLICY_NAME" />。
+
+      你可以透過這項政策指定要讓哪些擴充功能使用 <ph name="ENTERPRISE_PLATFORM_KEYS_API" /> 的 <ph name="CHALLENGE_USER_KEY_FUNCTION" /> 函式進行遠端認證。只有列在這個清單上的擴充功能才能使用該 API。
+
+      如果擴充功能未列在清單上,或是未設定清單,將導致 API 呼叫失敗,並收到錯誤代碼。</translation>
 <translation id="718956142899066210">允許進行更新的連線類型</translation>
 <translation id="7190286937411178540">啟用鍵盤焦點醒目顯示無障礙功能</translation>
 <translation id="7193489339723768342">你可以透過這項政策指定網址清單,系統會將這份清單中的模式與要求網址的安全性來源進行比對。如果模式相符,系統會直接授予音訊擷取裝置存取權限,而不會顯示提示
@@ -4950,6 +5009,9 @@
 <translation id="8357681633047935212">限制使用者工作階段的時間長度</translation>
 <translation id="8357989008292691856">登入使用者許可清單</translation>
 <translation id="8359734107661430198">從 2008 年 9 月 2 日開始啟用 ExampleDeprecatedFeature API</translation>
+<translation id="8367069206652407172">如果將這項政策設為停用,使用者將無法在工作管理員中結束處理程序。
+
+      如果將這項政策設為啟用或不設定,則使用者可在工作管理員中結束處理程序。</translation>
 <translation id="8367209241899435947">在 Windows 裝置上啟用 Chrome 清理功能</translation>
 <translation id="8367473200119029349">雲端報告</translation>
 <translation id="8369602308428138533">在 AC 供電環境下執行時的螢幕關閉延遲時間</translation>
diff --git a/components/printing/resources/print_header_footer_template_page.html b/components/printing/resources/print_header_footer_template_page.html
index 8d71239..e748fdf 100644
--- a/components/printing/resources/print_header_footer_template_page.html
+++ b/components/printing/resources/print_header_footer_template_page.html
@@ -108,13 +108,15 @@
   for (const cssClass of ['date', 'title', 'url', 'pageNumber', 'totalPages']) {
     for (const element of document.querySelectorAll(`.${cssClass}`)) {
       element.textContent = options[cssClass];
-      if (options.isRtl)
-        element.dir = 'rtl';
-
-      if (elementIntersects(element, topMargin, bottomMargin, leftMargin,
-                            rightMargin)) {
-        element.style.visibility = 'hidden';
-      }
+    }
+  }
+  for (const element of document.querySelectorAll(`.text`)) {
+    if (options.isRtl) {
+      element.dir = 'rtl';
+    }
+    if (elementIntersects(element, topMargin, bottomMargin, leftMargin,
+                          rightMargin)) {
+      element.style.visibility = 'hidden';
     }
   }
 }
diff --git a/components/safe_browsing/content/browser/BUILD.gn b/components/safe_browsing/content/browser/BUILD.gn
index f4cff85..20befe8 100644
--- a/components/safe_browsing/content/browser/BUILD.gn
+++ b/components/safe_browsing/content/browser/BUILD.gn
@@ -41,3 +41,43 @@
     "//net:extras",
   ]
 }
+
+source_set("client_side_model_loader") {
+  sources = [
+    "client_side_model_loader.cc",
+    "client_side_model_loader.h",
+  ]
+  deps = [
+    "//base:base",
+    "//components/safe_browsing:buildflags",
+    "//components/safe_browsing/core:client_model_proto",
+    "//components/safe_browsing/core:csd_proto",
+    "//components/safe_browsing/core:features",
+    "//components/safe_browsing/core/db:v4_protocol_manager_util",
+    "//components/variations",
+    "//net:net",
+    "//net/traffic_annotation:traffic_annotation",
+    "//services/network/public/cpp",
+    "//url:url",
+  ]
+}
+
+source_set("client_side_model_loader_unittest") {
+  testonly = true
+  sources = [ "client_side_model_loader_unittest.cc" ]
+
+  deps = [
+    ":client_side_model_loader",
+    "//base:base",
+    "//base/test:test_support",
+    "//components/safe_browsing:buildflags",
+    "//components/safe_browsing/core:client_model_proto",
+    "//components/safe_browsing/core:csd_proto",
+    "//components/safe_browsing/core:features",
+    "//components/variations",
+    "//content/test:test_support",
+    "//services/network:test_support",
+    "//testing/gmock",
+    "//testing/gtest",
+  ]
+}
diff --git a/chrome/browser/safe_browsing/client_side_model_loader.cc b/components/safe_browsing/content/browser/client_side_model_loader.cc
similarity index 98%
rename from chrome/browser/safe_browsing/client_side_model_loader.cc
rename to components/safe_browsing/content/browser/client_side_model_loader.cc
index 3dc6c77..202dec71 100644
--- a/chrome/browser/safe_browsing/client_side_model_loader.cc
+++ b/components/safe_browsing/content/browser/client_side_model_loader.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/safe_browsing/client_side_model_loader.h"
+#include "components/safe_browsing/content/browser/client_side_model_loader.h"
 
 #include <memory>
 
@@ -68,8 +68,7 @@
 const char ModelLoader::kClientModelFinchExperiment[] =
     "ClientSideDetectionModelOnAndroid";
 #endif
-const char ModelLoader::kClientModelFinchParam[] =
-    "ModelNum";
+const char ModelLoader::kClientModelFinchParam[] = "ModelNum";
 const char kUmaModelDownloadResponseMetricName[] =
     "SBClientPhishing.ClientModelDownloadResponseOrErrorCode";
 
diff --git a/chrome/browser/safe_browsing/client_side_model_loader.h b/components/safe_browsing/content/browser/client_side_model_loader.h
similarity index 94%
rename from chrome/browser/safe_browsing/client_side_model_loader.h
rename to components/safe_browsing/content/browser/client_side_model_loader.h
index eaa7266..1da09a93 100644
--- a/chrome/browser/safe_browsing/client_side_model_loader.h
+++ b/components/safe_browsing/content/browser/client_side_model_loader.h
@@ -5,8 +5,8 @@
 // Helper class loads models for client-side phishing detection
 // from the the SafeBrowsing backends.
 
-#ifndef CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_MODEL_LOADER_H_
-#define CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_MODEL_LOADER_H_
+#ifndef COMPONENTS_SAFE_BROWSING_CONTENT_BROWSER_CLIENT_SIDE_MODEL_LOADER_H_
+#define COMPONENTS_SAFE_BROWSING_CONTENT_BROWSER_CLIENT_SIDE_MODEL_LOADER_H_
 
 #include <stddef.h>
 #include <stdint.h>
@@ -79,7 +79,9 @@
   virtual void CancelFetcher();
 
   // Only used in tests.
-  void SetModelStrForTesting(const std::string& model_str) { model_str_ = model_str; }
+  void SetModelStrForTesting(const std::string& model_str) {
+    model_str_ = model_str;
+  }
 
   const std::string& model_str() const { return model_str_; }
   const std::string& name() const { return name_; }
@@ -165,4 +167,4 @@
 
 }  // namespace safe_browsing
 
-#endif  // CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_MODEL_LOADER_H_
+#endif  // COMPONENTS_SAFE_BROWSING_CONTENT_BROWSER_CLIENT_SIDE_MODEL_LOADER_H_
diff --git a/chrome/browser/safe_browsing/client_side_model_loader_unittest.cc b/components/safe_browsing/content/browser/client_side_model_loader_unittest.cc
similarity index 98%
rename from chrome/browser/safe_browsing/client_side_model_loader_unittest.cc
rename to components/safe_browsing/content/browser/client_side_model_loader_unittest.cc
index bfeb8be..f05908a 100644
--- a/chrome/browser/safe_browsing/client_side_model_loader_unittest.cc
+++ b/components/safe_browsing/content/browser/client_side_model_loader_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/safe_browsing/client_side_model_loader.h"
+#include "components/safe_browsing/content/browser/client_side_model_loader.h"
 
 #include <stdint.h>
 
@@ -34,10 +34,10 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
+using ::testing::_;
 using ::testing::Invoke;
 using ::testing::Mock;
 using ::testing::StrictMock;
-using ::testing::_;
 
 namespace safe_browsing {
 namespace {
@@ -353,8 +353,10 @@
 
   // Non-zero max_age from header.
   max_age = base::TimeDelta::FromMinutes(42);
-  EXPECT_CALL(loader, ScheduleFetch((max_age + base::TimeDelta::FromMinutes(1))
-                                        .InMilliseconds()));
+  EXPECT_CALL(
+      loader,
+      ScheduleFetch(
+          (max_age + base::TimeDelta::FromMinutes(1)).InMilliseconds()));
   loader.ModelLoader::EndFetch(ModelLoader::MODEL_NOT_CHANGED, max_age);
   Mock::VerifyAndClearExpectations(&loader);
 
diff --git a/components/strings/components_strings_af.xtb b/components/strings/components_strings_af.xtb
index aad46475..23f75e2 100644
--- a/components/strings/components_strings_af.xtb
+++ b/components/strings/components_strings_af.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Gaan jou vervaljaar na en probeer weer</translation>
 <translation id="7951415247503192394">(32 bis)</translation>
 <translation id="7953569069500808819">Randhegting bo</translation>
-<translation id="7954523986259449736">Ander mense sal jou inligting kan sien omdat die werf 'n verbinding gebruik wat nie heeltemal veilig is nie.</translation>
 <translation id="7956713633345437162">Mobiele boekmerke</translation>
 <translation id="7961015016161918242">Nooit</translation>
 <translation id="7966803981046576691">Taakrekeningsoort</translation>
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb
index b157b9b..484278b0 100644
--- a/components/strings/components_strings_am.xtb
+++ b/components/strings/components_strings_am.xtb
@@ -1744,7 +1744,6 @@
 <translation id="7947285636476623132">የእርስዎን የአገልግሎት ማብቂያ ዓመት ይመልከቱ እና እንደገና ይሞክሩ</translation>
 <translation id="7951415247503192394">(32-ቢት)</translation>
 <translation id="7953569069500808819">ከላይ ጫፍን ስፋ</translation>
-<translation id="7954523986259449736">ጣቢያው ሙሉ በሙሉ ደህንነቱ የተጠበቀ ያልሆነ ግንኙነትን እየተጠቀመ ስለሆነ የእርስዎ መረጃ ለሌሎች የሚታይ ይሆናል።</translation>
 <translation id="7956713633345437162">የተንቀሳቃሽ ስልክ ዕልባቶች</translation>
 <translation id="7961015016161918242">በፍጹም</translation>
 <translation id="7966803981046576691">የስራ መለያ አይነት</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb
index 64e74f1..5b3915e 100644
--- a/components/strings/components_strings_ar.xtb
+++ b/components/strings/components_strings_ar.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">تحقق من عام انتهاء الصلاحية وأعِد المحاولة مرة أخرى</translation>
 <translation id="7951415247503192394">(32 بت)</translation>
 <translation id="7953569069500808819">خزم الحواف من الأعلى</translation>
-<translation id="7954523986259449736">ستظهر معلوماتك للآخرين لأن الموقع الإلكتروني يستخدم اتصالاً غير آمن بالكامل.</translation>
 <translation id="7956713633345437162">الإشارات المرجعية على الجوّال</translation>
 <translation id="7961015016161918242">مطلقًا</translation>
 <translation id="7966803981046576691">نوع حساب المهمة</translation>
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb
index d3d89fa..cc8b5b3 100644
--- a/components/strings/components_strings_as.xtb
+++ b/components/strings/components_strings_as.xtb
@@ -1744,7 +1744,6 @@
 <translation id="7947285636476623132">আপোনাৰ ক্ৰেডিট কার্ডৰ ম্যাদ উকলাৰ বছৰ পৰীক্ষা কৰি আকৌ চেষ্টা কৰক</translation>
 <translation id="7951415247503192394">(৩২-বিট)</translation>
 <translation id="7953569069500808819">ওপৰৰ অংশৰ কাষত চিলাওক</translation>
-<translation id="7954523986259449736">ছাইটটোৱে এটা সম্পূৰ্ণৰূপে সুৰক্ষিত নোহোৱা সংযোগ ব্যৱহাৰ কৰি থকাৰ বাবে আপোনাৰ তথ্যখিনি অন্য লোকৰ বাবে দৃশ্যমান হ’ব।</translation>
 <translation id="7956713633345437162">ম'বাইল বুকমার্ক</translation>
 <translation id="7961015016161918242">কেতিয়াও নহয়</translation>
 <translation id="7966803981046576691">কামৰ একাউণ্টৰ প্ৰকাৰ</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb
index b71b08e5..a8947f26 100644
--- a/components/strings/components_strings_az.xtb
+++ b/components/strings/components_strings_az.xtb
@@ -1749,7 +1749,6 @@
 <translation id="7947285636476623132">Bitmə ilini yoxlayın və yenidən cəhd edin</translation>
 <translation id="7951415247503192394">(32-bit)</translation>
 <translation id="7953569069500808819">Yuxarıdan kənarını tikin</translation>
-<translation id="7954523986259449736">Sayt tam güvənli olmayan bağlantı istifadə etdiyinə görə məlumatınızı başqaları görəcək.</translation>
 <translation id="7956713633345437162">Mobil əlfəcinlər</translation>
 <translation id="7961015016161918242">Heç vaxt</translation>
 <translation id="7966803981046576691">İş hesabı növü</translation>
diff --git a/components/strings/components_strings_be.xtb b/components/strings/components_strings_be.xtb
index 91bfa03a..a5f759c 100644
--- a/components/strings/components_strings_be.xtb
+++ b/components/strings/components_strings_be.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Праверце год тэрміну дзеяння і паўтарыце спробу</translation>
 <translation id="7951415247503192394">(32-бітная версія)</translation>
 <translation id="7953569069500808819">Сшыванне па краі зверху</translation>
-<translation id="7954523986259449736">З-за таго што сайт выкарыстоўвае не зусім бяспечнае падключэнне, вашы звесткі будуць бачныя іншым карыстальнікам.</translation>
 <translation id="7956713633345437162">Мабільныя закладкі</translation>
 <translation id="7961015016161918242">Ніколі</translation>
 <translation id="7966803981046576691">Тып уліковага запісу задання</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb
index 647d0f4..2bbe2944 100644
--- a/components/strings/components_strings_bg.xtb
+++ b/components/strings/components_strings_bg.xtb
@@ -1750,7 +1750,6 @@
 <translation id="7947285636476623132">Проверете годината на валидност и опитайте отново</translation>
 <translation id="7951415247503192394">(32 бита)</translation>
 <translation id="7953569069500808819">Зашиване на горния ръб</translation>
-<translation id="7954523986259449736">Тъй като сайтът използва връзка, която не е напълно защитена, информацията ви ще е видима за други хора.</translation>
 <translation id="7956713633345437162">Мобилни отметки</translation>
 <translation id="7961015016161918242">Никога</translation>
 <translation id="7966803981046576691">Тип отчитане на задания</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb
index 6bf5ba3..0c60960 100644
--- a/components/strings/components_strings_bn.xtb
+++ b/components/strings/components_strings_bn.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">আপনার মেয়াদ শেষের বছর পরীক্ষা করে আবার চেষ্টা করুন</translation>
 <translation id="7951415247503192394">(৩২-বিট)</translation>
 <translation id="7953569069500808819">উপরের ধারের দিকে সেলাই</translation>
-<translation id="7954523986259449736">সাইটটি সম্পূর্ণ নিরাপদ নয় এমন কানেকশন ব্যবহার করছে, তাই আপনার তথ্য অন্যান্য ব্যবহারকারীরা দেখতে পাবেন।</translation>
 <translation id="7956713633345437162">মোবাইল বুকমার্ক</translation>
 <translation id="7961015016161918242">কখনই নয়</translation>
 <translation id="7966803981046576691">চাকরির অ্যাকাউন্টের ধরন</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb
index c26cae6..3de15682f 100644
--- a/components/strings/components_strings_bs.xtb
+++ b/components/strings/components_strings_bs.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Provjerite godinu isteka kartice i pokušajte ponovo</translation>
 <translation id="7951415247503192394">(32-bitno)</translation>
 <translation id="7953569069500808819">Uvez gornjeg ruba</translation>
-<translation id="7954523986259449736">Pošto web lokacija koristi vezu koja nije u potpunosti sigurna, vaše informacije će moći vidjeti drugi.</translation>
 <translation id="7956713633345437162">Mobilne oznake</translation>
 <translation id="7961015016161918242">Nikada</translation>
 <translation id="7966803981046576691">Vrsta računa za posao</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb
index 5c31853..a619e87 100644
--- a/components/strings/components_strings_ca.xtb
+++ b/components/strings/components_strings_ca.xtb
@@ -1743,7 +1743,6 @@
 <translation id="7947285636476623132">Comprova l'any de caducitat i torna-ho a provar</translation>
 <translation id="7951415247503192394">(32 bits)</translation>
 <translation id="7953569069500808819">Cosit de la vora a la part superior</translation>
-<translation id="7954523986259449736">Com que el lloc web fa servir una connexió que no és completament segura, altres persones poden veure la teva informació.</translation>
 <translation id="7956713633345437162">Adreces d'interès per a mòbils</translation>
 <translation id="7961015016161918242">Mai</translation>
 <translation id="7966803981046576691">Tipus de compte de treball</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb
index 470dee8..42a71d6 100644
--- a/components/strings/components_strings_cs.xtb
+++ b/components/strings/components_strings_cs.xtb
@@ -1737,7 +1737,6 @@
 <translation id="7947285636476623132">Zkontrolujte rok vypršení platnosti a zkuste to znovu.</translation>
 <translation id="7951415247503192394">(32bitový)</translation>
 <translation id="7953569069500808819">Sešití na horním okraji</translation>
-<translation id="7954523986259449736">Vaše informace budou viditelné ostatním, protože web používá připojení, které není zcela zabezpečené.</translation>
 <translation id="7956713633345437162">Mobilní záložky</translation>
 <translation id="7961015016161918242">Nikdy</translation>
 <translation id="7966803981046576691">Typ účtu úlohy</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb
index 6a15eeb..fb8bac8 100644
--- a/components/strings/components_strings_da.xtb
+++ b/components/strings/components_strings_da.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Kontrollér, om udløbsåret er korrekt, og prøv igen.</translation>
 <translation id="7951415247503192394">(32-bit)</translation>
 <translation id="7953569069500808819">Kanthæftning øverst</translation>
-<translation id="7954523986259449736">Da websitet bruger en forbindelse, der ikke er helt sikker, kan dine oplysninger ses af andre.</translation>
 <translation id="7956713633345437162">Bogmærker på mobil</translation>
 <translation id="7961015016161918242">Aldrig</translation>
 <translation id="7966803981046576691">Jobkontotype</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb
index 31408f2..1cfb4b8 100644
--- a/components/strings/components_strings_de.xtb
+++ b/components/strings/components_strings_de.xtb
@@ -1741,7 +1741,6 @@
 <translation id="7947285636476623132">Prüfen Sie Ihr Ablaufjahr und versuchen Sie es dann erneut</translation>
 <translation id="7951415247503192394">(32-Bit)</translation>
 <translation id="7953569069500808819">Mehrere Heftklammern oben</translation>
-<translation id="7954523986259449736">Da die Website eine Verbindung verwendet, die nicht vollständig sicher ist, können andere Ihre Daten sehen.</translation>
 <translation id="7956713633345437162">Mobile Lesezeichen</translation>
 <translation id="7961015016161918242">Nie</translation>
 <translation id="7966803981046576691">Kontotyp des Auftrags</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb
index 27b290a..c4dc8e5 100644
--- a/components/strings/components_strings_el.xtb
+++ b/components/strings/components_strings_el.xtb
@@ -1755,7 +1755,6 @@
 <translation id="7947285636476623132">Ελέγξτε το έτος λήξης σας και δοκιμάστε ξανά</translation>
 <translation id="7951415247503192394">(32-bit)</translation>
 <translation id="7953569069500808819">Ραφή στο επάνω άκρο</translation>
-<translation id="7954523986259449736">Επειδή ο ιστότοπος χρησιμοποιεί μια σύνδεση που δεν είναι απολύτως ασφαλής, οι πληροφορίες σας θα είναι ορατές σε άλλους χρήστες.</translation>
 <translation id="7956713633345437162">Σελιδοδείκτες κινητής συσκευής</translation>
 <translation id="7961015016161918242">Ποτέ</translation>
 <translation id="7966803981046576691">Τύπος λογαριασμού εργασίας</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb
index 832b5ed..afdad53 100644
--- a/components/strings/components_strings_en-GB.xtb
+++ b/components/strings/components_strings_en-GB.xtb
@@ -242,7 +242,7 @@
 <translation id="1791429645902722292">Google Smart Lock</translation>
 <translation id="1798447301915465742"><ph name="MULTIPLE_ACTIONS_FOCUSED_FRIENDLY_MATCH_TEXT" />, multiple actions are available; press 'Tab' to cycle through them</translation>
 <translation id="1800473098294731951">B9</translation>
-<translation id="1803264062614276815">Cardholder Name</translation>
+<translation id="1803264062614276815">Cardholder name</translation>
 <translation id="1807246157184219062">Light</translation>
 <translation id="1807528111851433570">Start sheet</translation>
 <translation id="1821930232296380041">Invalid request or request parameters</translation>
@@ -1014,7 +1014,7 @@
 <translation id="4989809363548539747">This plug-in is not supported</translation>
 <translation id="4995216769782533993">Confirm the security code to share your card details with this site</translation>
 <translation id="5002932099480077015">If enabled, Chrome will store a copy of your card on this device for faster form filling.</translation>
-<translation id="5015510746216210676">Machine Name:</translation>
+<translation id="5015510746216210676">Machine name:</translation>
 <translation id="5017554619425969104">Text that you copied</translation>
 <translation id="5018422839182700155">Can't open this page</translation>
 <translation id="5019198164206649151">Backing store in bad state</translation>
@@ -1473,7 +1473,7 @@
 <translation id="6888584790432772780">Chrome simplified this page to make it easier to read. Chrome retrieved the original page over an insecure connection.</translation>
 <translation id="6891596781022320156">Policy level is not supported.</translation>
 <translation id="6895330447102777224">Your card is confirmed</translation>
-<translation id="6897140037006041989">User Agent</translation>
+<translation id="6897140037006041989">User agent</translation>
 <translation id="6898699227549475383">Organisation (O)</translation>
 <translation id="6907293445143367439">Allow <ph name="SITE_NAME" /> to:</translation>
 <translation id="6910240653697687763"><ph name="URL" /> wants to get full control of your MIDI devices</translation>
@@ -1576,7 +1576,7 @@
 <translation id="7304030187361489308">High</translation>
 <translation id="7313965965371928911"><ph name="BEGIN_LINK" />Safe Browsing<ph name="END_LINK" /> warnings</translation>
 <translation id="7319430975418800333">A3</translation>
-<translation id="7320336641823683070">Connection Help</translation>
+<translation id="7320336641823683070">Connection help</translation>
 <translation id="7323804146520582233">Hide the '<ph name="SECTION" />' section</translation>
 <translation id="733354035281974745">Device local account override</translation>
 <translation id="7333654844024768166">You just entered your password on a deceptive site. Chromium recommends going to <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, <ph name="WEBSITE_3" /> and other sites where you use this password and changing it now.</translation>
@@ -1753,7 +1753,6 @@
 <translation id="7947285636476623132">Check your expiry year and try again</translation>
 <translation id="7951415247503192394">(32-bit)</translation>
 <translation id="7953569069500808819">Edge stitch top</translation>
-<translation id="7954523986259449736">Because the site is using a connection that’s not completely secure, your information will be visible to others.</translation>
 <translation id="7956713633345437162">Mobile bookmarks</translation>
 <translation id="7961015016161918242">Never</translation>
 <translation id="7966803981046576691">Job account type</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index c07ef34c..5fb4add 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -1744,7 +1744,6 @@
 <translation id="7947285636476623132">Comprueba el año de vencimiento y vuelve a intentarlo</translation>
 <translation id="7951415247503192394">(32 bits)</translation>
 <translation id="7953569069500808819">Costura de borde superior</translation>
-<translation id="7954523986259449736">Dado que el sitio usa una conexión que no es totalmente segura, otras personas podrán ver tu información.</translation>
 <translation id="7956713633345437162">Favoritos del celular</translation>
 <translation id="7961015016161918242">Nunca</translation>
 <translation id="7966803981046576691">Tipo de cuenta para el trabajo</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb
index cc44588..411febe 100644
--- a/components/strings/components_strings_es.xtb
+++ b/components/strings/components_strings_es.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Consulta el año de vencimiento y vuelve a intentarlo</translation>
 <translation id="7951415247503192394">(32 bits)</translation>
 <translation id="7953569069500808819">Grapado en el borde superior</translation>
-<translation id="7954523986259449736">Dado que la conexión que usa este sitio web no es completamente segura, otros usuarios podrán ver tu información.</translation>
 <translation id="7956713633345437162">Marcadores del móvil</translation>
 <translation id="7961015016161918242">Nunca</translation>
 <translation id="7966803981046576691">Tipo de cuenta de tarea</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb
index 0d8b56c..7dcf594d 100644
--- a/components/strings/components_strings_et.xtb
+++ b/components/strings/components_strings_et.xtb
@@ -1753,7 +1753,6 @@
 <translation id="7947285636476623132">Kontrollige aegumisaastat ja proovige uuesti</translation>
 <translation id="7951415247503192394">(32-bitine)</translation>
 <translation id="7953569069500808819">Õmblus ülaservas</translation>
-<translation id="7954523986259449736">Kuna see sait kasutab ühendust, mis pole täielikult turvaline, on teie teave teistele nähtav.</translation>
 <translation id="7956713633345437162">Mobiili järjehoidjad</translation>
 <translation id="7961015016161918242">Mitte kunagi</translation>
 <translation id="7966803981046576691">Töökonto tüüp</translation>
diff --git a/components/strings/components_strings_eu.xtb b/components/strings/components_strings_eu.xtb
index 769d4f5..dbcb44a 100644
--- a/components/strings/components_strings_eu.xtb
+++ b/components/strings/components_strings_eu.xtb
@@ -1738,7 +1738,6 @@
 <translation id="7947285636476623132">Egiaztatu iraungitze-urtea eta saiatu berriro</translation>
 <translation id="7951415247503192394">(32 bit)</translation>
 <translation id="7953569069500808819">Goiko ertza josita</translation>
-<translation id="7954523986259449736">Webgunea erabat segurua ez den konexio bat erabiltzen ari denez, gainerako erabiltzaileek zure informazioa ikusi ahalko dute.</translation>
 <translation id="7956713633345437162">Mugikorreko laster-markak</translation>
 <translation id="7961015016161918242">Inoiz ez</translation>
 <translation id="7966803981046576691">Laneko kontu mota</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb
index bb4f1c3d..8bd1235 100644
--- a/components/strings/components_strings_fa.xtb
+++ b/components/strings/components_strings_fa.xtb
@@ -1752,7 +1752,6 @@
 <translation id="7947285636476623132">سال انقضا را بررسی و دوباره امتحان کنید</translation>
 <translation id="7951415247503192394">(۳۲ بیت)</translation>
 <translation id="7953569069500808819">دوختن لبه بالا</translation>
-<translation id="7954523986259449736">از آنجایی‌که سایت از اتصالی استفاده می‌کند که کاملاً ایمن نیست، اطلاعاتتان برای دیگران قابل مشاهده خواهد بود.</translation>
 <translation id="7956713633345437162">نشانک‌های تلفن‌ همراه</translation>
 <translation id="7961015016161918242">هرگز</translation>
 <translation id="7966803981046576691">نوع حساب کار</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb
index d169e9f..56f43bf 100644
--- a/components/strings/components_strings_fi.xtb
+++ b/components/strings/components_strings_fi.xtb
@@ -1755,7 +1755,6 @@
 <translation id="7947285636476623132">Tarkista vanhentumisvuosi ja yritä uudelleen.</translation>
 <translation id="7951415247503192394">(32-bittinen)</translation>
 <translation id="7953569069500808819">Reunasidonta yläreunassa</translation>
-<translation id="7954523986259449736">Koska sivusto käyttää yhteyttä, joka ei ole täysin suojattu, tietosi näkyvät muille.</translation>
 <translation id="7956713633345437162">Mobiilikirjanmerkit</translation>
 <translation id="7961015016161918242">Ei koskaan</translation>
 <translation id="7966803981046576691">Työpaikkatilin tyyppi</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb
index 9c7927d..ad5a2f7 100644
--- a/components/strings/components_strings_fil.xtb
+++ b/components/strings/components_strings_fil.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Tingnan ang iyong taon ng pag-expire at subukang muli</translation>
 <translation id="7951415247503192394">(32-bit)</translation>
 <translation id="7953569069500808819">Edge stitch top</translation>
-<translation id="7954523986259449736">Dahil hindi ganap na secure ang koneksyong ginagamit ng site, makikita ng iba ang iyong impormasyon.</translation>
 <translation id="7956713633345437162">Mga bookmark sa mobile</translation>
 <translation id="7961015016161918242">Hindi Kailanman</translation>
 <translation id="7966803981046576691">Uri ng account ng trabaho</translation>
diff --git a/components/strings/components_strings_fr-CA.xtb b/components/strings/components_strings_fr-CA.xtb
index f272320..c5d569c 100644
--- a/components/strings/components_strings_fr-CA.xtb
+++ b/components/strings/components_strings_fr-CA.xtb
@@ -1743,7 +1743,6 @@
 <translation id="7947285636476623132">Vérifiez l'année d'expiration et réessayez</translation>
 <translation id="7951415247503192394">(32 bits)</translation>
 <translation id="7953569069500808819">Agrafage par le bord supérieur</translation>
-<translation id="7954523986259449736">Comme le site utilise une connexion qui n'est pas entièrement sécurisée, vos données pourraient être visibles par d'autres utilisateurs.</translation>
 <translation id="7956713633345437162">Favoris d'appareil mobile</translation>
 <translation id="7961015016161918242">Jamais</translation>
 <translation id="7966803981046576691">Type de compte de travail</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb
index 463b332..569cad4e 100644
--- a/components/strings/components_strings_fr.xtb
+++ b/components/strings/components_strings_fr.xtb
@@ -1752,7 +1752,6 @@
 <translation id="7947285636476623132">Veuillez vérifier l'année d'expiration, puis réessayer</translation>
 <translation id="7951415247503192394">(32 bits)</translation>
 <translation id="7953569069500808819">Agrafage par le bord supérieur</translation>
-<translation id="7954523986259449736">Comme la connexion n'est pas entièrement sécurisée sur ce site, vos informations seront visibles par les autres utilisateurs.</translation>
 <translation id="7956713633345437162">Favoris sur mobile</translation>
 <translation id="7961015016161918242">Jamais</translation>
 <translation id="7966803981046576691">Type de compte de travail</translation>
diff --git a/components/strings/components_strings_gl.xtb b/components/strings/components_strings_gl.xtb
index 094a7342..2de2e99 100644
--- a/components/strings/components_strings_gl.xtb
+++ b/components/strings/components_strings_gl.xtb
@@ -1751,7 +1751,6 @@
 <translation id="7947285636476623132">Comproba o ano de caducidade e téntao de novo</translation>
 <translation id="7951415247503192394">(32 bits)</translation>
 <translation id="7953569069500808819">Grampa no bordo superior</translation>
-<translation id="7954523986259449736">Este sitio utiliza unha conexión que non é completamente segura, polo que outras persoas poderán ver a túa información.</translation>
 <translation id="7956713633345437162">Marcadores para móbiles</translation>
 <translation id="7961015016161918242">Nunca</translation>
 <translation id="7966803981046576691">Tipo de conta para o traballo</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb
index 51d24da..a81c0c9 100644
--- a/components/strings/components_strings_gu.xtb
+++ b/components/strings/components_strings_gu.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">તમારું સમાપ્તિ વર્ષ તપાસો અને ફરી પ્રયાસ કરો</translation>
 <translation id="7951415247503192394">(32-બિટ)</translation>
 <translation id="7953569069500808819">ઉપર કિનારી જોડવી</translation>
-<translation id="7954523986259449736">સાઇટ સંપૂર્ણ રીતે સુરક્ષિત કનેક્શનનો ઉપયોગ કરી રહી ન હોવાને કારણે તમારી માહિતી અન્ય લોકોને દેખાઈ શકે છે.</translation>
 <translation id="7956713633345437162">મોબાઇલ બુકમાર્ક્સ</translation>
 <translation id="7961015016161918242">ક્યારેય નહીં</translation>
 <translation id="7966803981046576691">જોબ એકાઉન્ટનો પ્રકાર</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb
index fc5f237..14634ab 100644
--- a/components/strings/components_strings_hi.xtb
+++ b/components/strings/components_strings_hi.xtb
@@ -1751,7 +1751,6 @@
 <translation id="7947285636476623132">अपने क्रेडिट कार्ड की समय सीमा खत्म होने का साल जांचें और फिर से कोशिश करें</translation>
 <translation id="7951415247503192394">(32-बिट)</translation>
 <translation id="7953569069500808819">सबसे ऊपर एज़ स्टिच</translation>
-<translation id="7954523986259449736">साइट ऐसा कनेक्शन इस्तेमाल कर रही है जो पूरी तरह सुरक्षित नहीं है, इसलिए आपकी जानकारी दूसरे लोग भी देख सकेंगे.</translation>
 <translation id="7956713633345437162">मोबाइल बुकमार्क</translation>
 <translation id="7961015016161918242">कभी नहीं</translation>
 <translation id="7966803981046576691">जॉब का खाता प्रकार</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb
index 38a5c96..d17f597 100644
--- a/components/strings/components_strings_hr.xtb
+++ b/components/strings/components_strings_hr.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Provjerite godinu isteka, pa pokušajte ponovo</translation>
 <translation id="7951415247503192394">(32-bitni)</translation>
 <translation id="7953569069500808819">Rubni šav pri vrhu</translation>
-<translation id="7954523986259449736">Budući da web-lokacija koristi vezu koja nije posve sigurna, vaši će podaci biti vidljivi drugima.</translation>
 <translation id="7956713633345437162">Mobilne oznake</translation>
 <translation id="7961015016161918242">Nikad</translation>
 <translation id="7966803981046576691">Vrsta poslovnog računa</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb
index 3e8f65b6..92bb1d5 100644
--- a/components/strings/components_strings_hu.xtb
+++ b/components/strings/components_strings_hu.xtb
@@ -1750,7 +1750,6 @@
 <translation id="7947285636476623132">Ellenőrizze a lejárati évet, majd próbálja újra</translation>
 <translation id="7951415247503192394">(32 bites)</translation>
 <translation id="7953569069500808819">Éltűzés felül</translation>
-<translation id="7954523986259449736">Ez a webhely nem teljesen biztonságos kapcsolatot használ, ezért az Ön adatait mások is láthatják majd.</translation>
 <translation id="7956713633345437162">Mobilos könyvjelzők</translation>
 <translation id="7961015016161918242">Soha</translation>
 <translation id="7966803981046576691">Munka fióktípusa</translation>
diff --git a/components/strings/components_strings_hy.xtb b/components/strings/components_strings_hy.xtb
index 66a43da..9f857b2 100644
--- a/components/strings/components_strings_hy.xtb
+++ b/components/strings/components_strings_hy.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Ստուգեք սպառման տարին և նորից փորձեք</translation>
 <translation id="7951415247503192394">(32 բիթանոց)</translation>
 <translation id="7953569069500808819">Եզրակար վերևում</translation>
-<translation id="7954523986259449736">Քանի որ կայքը ոչ ապահով կապ է օգտագործում, ձեր տեղեկությունները տեսանելի կլինեն բոլորին։</translation>
 <translation id="7956713633345437162">Բջջային էջանիշներ</translation>
 <translation id="7961015016161918242">Երբեք</translation>
 <translation id="7966803981046576691">Առաջադրանքի հաշվի տեսակը</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb
index 1cec051..d366b7e 100644
--- a/components/strings/components_strings_id.xtb
+++ b/components/strings/components_strings_id.xtb
@@ -1742,7 +1742,6 @@
 <translation id="7947285636476623132">Periksa tahun kedaluwarsa dan coba lagi</translation>
 <translation id="7951415247503192394">(32 bit)</translation>
 <translation id="7953569069500808819">Jahit tepi di atas</translation>
-<translation id="7954523986259449736">Karena situs menggunakan koneksi yang tidak sepenuhnya aman, informasi Anda akan dapat dilihat oleh pengguna lain.</translation>
 <translation id="7956713633345437162">Bookmark seluler</translation>
 <translation id="7961015016161918242">Jangan pernah</translation>
 <translation id="7966803981046576691">Jenis akun tugas</translation>
@@ -2061,7 +2060,7 @@
 <translation id="951941430552851965">Screenshot dijeda oleh administrator Anda karena konten di layar.</translation>
 <translation id="961663415146723894">Jilid bawah</translation>
 <translation id="962484866189421427">Konten ini mungkin mencoba menginstal aplikasi penipuan dengan berpura-pura menjadi sesuatu yang lain atau mengumpulkan data yang dapat digunakan untuk melacak Anda. <ph name="BEGIN_LINK" />Tampilkan saja<ph name="END_LINK" /></translation>
-<translation id="969892804517981540">Pembuatan Resmi</translation>
+<translation id="969892804517981540">Build Resmi</translation>
 <translation id="973773823069644502">Tambahkan Alamat Pengiriman</translation>
 <translation id="975560348586398090">{COUNT,plural, =0{Tidak ada}=1{1 item}other{# item}}</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/components/strings/components_strings_is.xtb b/components/strings/components_strings_is.xtb
index 2ca9d38..93e5cf3 100644
--- a/components/strings/components_strings_is.xtb
+++ b/components/strings/components_strings_is.xtb
@@ -1755,7 +1755,6 @@
 <translation id="7947285636476623132">Athugaðu ár gildistímans og reyndu aftur</translation>
 <translation id="7951415247503192394">(32 bita)</translation>
 <translation id="7953569069500808819">Saumur efst</translation>
-<translation id="7954523986259449736">Þar sem vefsvæðið notar tengingu sem er ekki alfarið örugg verða upplýsingarnar þínar sýnilegar öðrum.</translation>
 <translation id="7956713633345437162">Bókamerki fartækis</translation>
 <translation id="7961015016161918242">Aldrei</translation>
 <translation id="7966803981046576691">Gerð vinnslureiknings</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb
index 6026b5bd..89dad955 100644
--- a/components/strings/components_strings_it.xtb
+++ b/components/strings/components_strings_it.xtb
@@ -1750,7 +1750,6 @@
 <translation id="7947285636476623132">Controlla l'anno di scadenza e riprova</translation>
 <translation id="7951415247503192394">(a 32 bit)</translation>
 <translation id="7953569069500808819">Impuntura in alto</translation>
-<translation id="7954523986259449736">Le tue informazioni saranno visibili agli altri utenti perché il sito utilizza una connessione non completamente sicura.</translation>
 <translation id="7956713633345437162">Preferiti su disp. mobili</translation>
 <translation id="7961015016161918242">Mai</translation>
 <translation id="7966803981046576691">Tipo di account lavoro</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb
index 770bf3d..2d0ce8b 100644
--- a/components/strings/components_strings_iw.xtb
+++ b/components/strings/components_strings_iw.xtb
@@ -1757,7 +1757,6 @@
 <translation id="7947285636476623132">יש לבדוק את שנת התפוגה ולנסות שוב</translation>
 <translation id="7951415247503192394">(32 סיביות)</translation>
 <translation id="7953569069500808819">הידוק קצוות בחלק העליון</translation>
-<translation id="7954523986259449736">באתר הזה נעשה שימוש בחיבור שאינו מאובטח כראוי, לכן ייתכן שהמידע שלך יהיה גלוי למשתמשים אחרים.</translation>
 <translation id="7956713633345437162">סימניות לנייד</translation>
 <translation id="7961015016161918242">אף פעם</translation>
 <translation id="7966803981046576691">סוג חשבון של העבודה</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb
index e44c95d..87ddaba0 100644
--- a/components/strings/components_strings_ja.xtb
+++ b/components/strings/components_strings_ja.xtb
@@ -1743,7 +1743,6 @@
 <translation id="7947285636476623132">有効期限の「年」を確認してもう一度お試しください</translation>
 <translation id="7951415247503192394">(32 ビット)</translation>
 <translation id="7953569069500808819">端綴じ(上)</translation>
-<translation id="7954523986259449736">サイトで使用されている接続は安全性が十分でないため、情報が他人に読み取られる可能性があります。</translation>
 <translation id="7956713633345437162">モバイルのブックマーク</translation>
 <translation id="7961015016161918242">使用しない</translation>
 <translation id="7966803981046576691">ジョブ管理タイプ</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb
index 6e7de274..c59486e 100644
--- a/components/strings/components_strings_ka.xtb
+++ b/components/strings/components_strings_ka.xtb
@@ -1743,7 +1743,6 @@
 <translation id="7947285636476623132">შეამოწმეთ ვადის გასვლის წელი და ხელახლა ცადეთ</translation>
 <translation id="7951415247503192394">(32-ბიტი)</translation>
 <translation id="7953569069500808819">კიდეების მიკერება ზემოთ</translation>
-<translation id="7954523986259449736">ვინაიდან საიტი არ იყენებს ბოლომდე დაცულ კავშირს, თქვენი ინფორმაცია ხილული იქნება სხვებისთვის.</translation>
 <translation id="7956713633345437162">მობილური სანიშნეები</translation>
 <translation id="7961015016161918242">არასოდეს</translation>
 <translation id="7966803981046576691">დავალების ანგარიშის ტიპი</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb
index f5ffe3c..e9b978a8 100644
--- a/components/strings/components_strings_kk.xtb
+++ b/components/strings/components_strings_kk.xtb
@@ -1753,7 +1753,6 @@
 <translation id="7947285636476623132">Жарамдылық мерзімі бітетін жылды тексеріп, әрекетті қайталаңыз</translation>
 <translation id="7951415247503192394">(32 биттік)</translation>
 <translation id="7953569069500808819">Жоғарғы жиегін тігу</translation>
-<translation id="7954523986259449736">Сайт толық қорғалмаған байланысты пайдаланатындықтан, ақпаратыңыз басқаларға көрсетіледі.</translation>
 <translation id="7956713633345437162">Ұялы бетбелгілер</translation>
 <translation id="7961015016161918242">Ешқашан</translation>
 <translation id="7966803981046576691">Тапсырмадағы есептік жазбаның түрі</translation>
diff --git a/components/strings/components_strings_km.xtb b/components/strings/components_strings_km.xtb
index 9f0c37d..b4f0d5d 100644
--- a/components/strings/components_strings_km.xtb
+++ b/components/strings/components_strings_km.xtb
@@ -1759,7 +1759,6 @@
 <translation id="7947285636476623132">ពិនិត្យមើល​ឆ្នាំផុត​កំណត់​របស់អ្នក​ រួច​ព្យាយាម​ម្តង​ទៀត​</translation>
 <translation id="7951415247503192394">(32-ប៊ីត)</translation>
 <translation id="7953569069500808819">ដេរគែម​ខាងលើ</translation>
-<translation id="7954523986259449736">អ្នកដទៃនឹងអាច​មើលឃើញព័ត៌មាន​របស់អ្នក ដោយសារ​គេហទំព័រនេះកំពុងប្រើ​ការតភ្ជាប់ដែលមិនមានសុវត្ថិភាព​ទាំងស្រុងនោះទេ។</translation>
 <translation id="7956713633345437162">ចំណាំទូរស័ព្ទ</translation>
 <translation id="7961015016161918242">មិនដែល</translation>
 <translation id="7966803981046576691">ប្រភេទ​គណនី​ការងារ</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb
index d187b56..e75c7ff 100644
--- a/components/strings/components_strings_kn.xtb
+++ b/components/strings/components_strings_kn.xtb
@@ -1740,7 +1740,6 @@
 <translation id="7947285636476623132">ನಿಮ್ಮ ಮುಕ್ತಾಯ ವರ್ಷವನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="7951415247503192394">(32-ಬಿಟ್)</translation>
 <translation id="7953569069500808819">ಮೇಲ್ಭಾಗದ ಅಂಚನ್ನು ಹೊಲಿಯಿರಿ</translation>
-<translation id="7954523986259449736">ಏಕೆಂದರೆ ಈ ಸೈಟ್ ಸಂಪೂರ್ಣವಾಗಿ ಸುರಕ್ಷಿತವಲ್ಲದ ಕನೆಕ್ಷನ್ ಅನ್ನು ಬಳಸುತ್ತಿರುವುದರಿಂದ, ನಿಮ್ಮ ಮಾಹಿತಿಯು ಇತರರಿಗೆ ಗೋಚರಿಸುತ್ತದೆ.</translation>
 <translation id="7956713633345437162">ಮೊಬೈಲ್ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು</translation>
 <translation id="7961015016161918242">ಎಂದಿಗೂ ಇಲ್ಲ</translation>
 <translation id="7966803981046576691">ಕೆಲಸದ ಖಾತೆ ಪ್ರಕಾರ</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb
index 0392e44..a383175 100644
--- a/components/strings/components_strings_ko.xtb
+++ b/components/strings/components_strings_ko.xtb
@@ -1742,7 +1742,6 @@
 <translation id="7947285636476623132">유효기간 연도를 확인한 후 다시 시도해 주세요.</translation>
 <translation id="7951415247503192394">(32비트)</translation>
 <translation id="7953569069500808819">상단 에지 스티치</translation>
-<translation id="7954523986259449736">이 사이트에서 보안 상태가 확실하지 않은 연결을 사용하고 있으므로 내 정보가 다른 사용자에게 표시됩니다.</translation>
 <translation id="7956713633345437162">모바일 북마크</translation>
 <translation id="7961015016161918242">사용하지 않음</translation>
 <translation id="7966803981046576691">작업 계정 유형</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb
index 3deb8f02..79c9688 100644
--- a/components/strings/components_strings_ky.xtb
+++ b/components/strings/components_strings_ky.xtb
@@ -1753,7 +1753,6 @@
 <translation id="7947285636476623132">Мөөнөтү аяктоочу жылды текшерип, кайталап көрүңүз</translation>
 <translation id="7951415247503192394">(32 бит)</translation>
 <translation id="7953569069500808819">Жогорку четин жамоо</translation>
-<translation id="7954523986259449736">Сайт кооптуу байланышты колдонуп жаткандыктан, маалыматыңыз башкаларга көрүнүп турат.</translation>
 <translation id="7956713633345437162">Мобилдик кыстармалар</translation>
 <translation id="7961015016161918242">Эч качан</translation>
 <translation id="7966803981046576691">Тапшырманын түрү</translation>
diff --git a/components/strings/components_strings_lo.xtb b/components/strings/components_strings_lo.xtb
index 20f3bf8..c1ce13c 100644
--- a/components/strings/components_strings_lo.xtb
+++ b/components/strings/components_strings_lo.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">ກວດເບິ່ງປີໝົດອາຍຸຂອງທ່ານ ແລະ ລອງອີກຄັ້ງ</translation>
 <translation id="7951415247503192394">(32-ບິດ)</translation>
 <translation id="7953569069500808819">ຫຍິບຂອບເທິງສຸດ</translation>
-<translation id="7954523986259449736">ເພາະວ່າເວັບໄຊກຳລັງໃຊ້ການເຊື່ອມຕໍ່ທີ່ບໍ່ປອດໄພຮ້ອຍເປີເຊັນ, ຄົນອື່ນຈຶ່ງສາມາດເຫັນຂໍ້ມູນຂອງທ່ານໄດ້.</translation>
 <translation id="7956713633345437162">ບຸກມາກສ໌ມື​ຖື</translation>
 <translation id="7961015016161918242">ບໍ່​ເລີຍ</translation>
 <translation id="7966803981046576691">ປະເພດບັນຊີວຽກ</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb
index be78e05..37dc172 100644
--- a/components/strings/components_strings_lt.xtb
+++ b/components/strings/components_strings_lt.xtb
@@ -1755,7 +1755,6 @@
 <translation id="7947285636476623132">Patikrinkite galiojimo pabaigos metus ir bandykite dar kartą</translation>
 <translation id="7951415247503192394">(32 bitų)</translation>
 <translation id="7953569069500808819">Kraštų sukabinimas viršuje</translation>
-<translation id="7954523986259449736">Kadangi svetainei naudojamas ne visiškai saugus ryšys, jūsų informacija bus matoma kitiems.</translation>
 <translation id="7956713633345437162">Žymės mobiliesiems</translation>
 <translation id="7961015016161918242">Niekada</translation>
 <translation id="7966803981046576691">Užduoties paskyros tipas</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb
index c062a76..3521524 100644
--- a/components/strings/components_strings_lv.xtb
+++ b/components/strings/components_strings_lv.xtb
@@ -1751,7 +1751,6 @@
 <translation id="7947285636476623132">Pārbaudiet derīguma termiņa gadu un mēģiniet vēlreiz.</translation>
 <translation id="7951415247503192394">(32 bitu)</translation>
 <translation id="7953569069500808819">Malu sašuvums augšdaļā</translation>
-<translation id="7954523986259449736">Tā kā vietnē tiek izmantots nedrošs savienojums, jūsu informācija būs redzama citām personām.</translation>
 <translation id="7956713633345437162">Mobilās grāmatzīmes</translation>
 <translation id="7961015016161918242">Nekad</translation>
 <translation id="7966803981046576691">Darba konta veids</translation>
diff --git a/components/strings/components_strings_mk.xtb b/components/strings/components_strings_mk.xtb
index cb94f179..1d2f49b 100644
--- a/components/strings/components_strings_mk.xtb
+++ b/components/strings/components_strings_mk.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Проверете ја годината на истекување и обидете се повторно</translation>
 <translation id="7951415247503192394">(32-бита)</translation>
 <translation id="7953569069500808819">Шиење на работ горе</translation>
-<translation id="7954523986259449736">Бидејќи сајтот користи врска што не е комплетно безбедна, вашите податоци ќе бидат видливи за другите.</translation>
 <translation id="7956713633345437162">Мобилни обележувачи</translation>
 <translation id="7961015016161918242">Никогаш</translation>
 <translation id="7966803981046576691">Тип работен налог</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb
index a681a00..dc9d222 100644
--- a/components/strings/components_strings_ml.xtb
+++ b/components/strings/components_strings_ml.xtb
@@ -1746,7 +1746,6 @@
 <translation id="7947285636476623132">കാലാവധി തീരുന്ന വർഷം പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക</translation>
 <translation id="7951415247503192394">(32-ബിറ്റ്)</translation>
 <translation id="7953569069500808819">മുകളിൽ അരിക് കൂട്ടിച്ചേർക്കൽ</translation>
-<translation id="7954523986259449736">സൈറ്റ് പൂർണ്ണമായും സുരക്ഷിതമല്ലാത്ത ഒരു കണക്ഷൻ ഉപയോഗിക്കുന്നതിനാൽ, നിങ്ങളുടെ വിവരങ്ങൾ മറ്റുള്ളവർക്ക് ദൃശ്യമാകും.</translation>
 <translation id="7956713633345437162">മൊബൈൽ ബുക്ക്‌മാർക്കുകൾ</translation>
 <translation id="7961015016161918242">ഒരിക്കലും</translation>
 <translation id="7966803981046576691">ജോബ് അക്കൗണ്ട് തരം</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb
index 9189cb27..3459e92 100644
--- a/components/strings/components_strings_mn.xtb
+++ b/components/strings/components_strings_mn.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Хүчингүй болох жилийг шалгаад дахин оролдоно уу</translation>
 <translation id="7951415247503192394">(32-бит)</translation>
 <translation id="7953569069500808819">Дээд буланг нь нийлүүлж үдэх</translation>
-<translation id="7954523986259449736">Сайт нь аюулгүй байдлыг бүрэн хангаагүй холболт ашиглаж байгаа тул таны тухай мэдээлэл бусдад харагдана.</translation>
 <translation id="7956713633345437162">Гар утасны хавчуурга</translation>
 <translation id="7961015016161918242">Хэзээ ч</translation>
 <translation id="7966803981046576691">Ажилтай холбоотой бүртгэлийн төрөл</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb
index 0688551..b902fc2 100644
--- a/components/strings/components_strings_mr.xtb
+++ b/components/strings/components_strings_mr.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">तुमचे कालबाह्यता वर्ष तपासा आणि पुन्हा प्रयत्न करा</translation>
 <translation id="7951415247503192394">(32-बिट)</translation>
 <translation id="7953569069500808819">एज स्टिच टॉप</translation>
-<translation id="7954523986259449736">साइट पूर्णपणे सुरक्षित नसलेले कनेक्शन वापरत असल्‍यामुळे, तुमची माहिती इतरांना दिसू शकते.</translation>
 <translation id="7956713633345437162">Mobile बुकमार्क</translation>
 <translation id="7961015016161918242">कधीही नाही</translation>
 <translation id="7966803981046576691">जॉब खाते प्रकार</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index 6cbd34d..426ec3bf 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -1755,7 +1755,6 @@
 <translation id="7947285636476623132">Semak tahun tamat tempoh anda dan cuba lagi</translation>
 <translation id="7951415247503192394">(32-bit)</translation>
 <translation id="7953569069500808819">Jahitan tepi atas</translation>
-<translation id="7954523986259449736">Disebabkan tapak menggunakan sambungan yang tidak selamat sepenuhnya, maklumat anda akan dapat dilihat oleh orang lain.</translation>
 <translation id="7956713633345437162">Penanda halaman mudah alih</translation>
 <translation id="7961015016161918242">Tidak sama sekali</translation>
 <translation id="7966803981046576691">Jenis akaun kerja</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb
index b16dc96..02e2dbb 100644
--- a/components/strings/components_strings_my.xtb
+++ b/components/strings/components_strings_my.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">သင့်ကုန်ဆုံးမည့်နှစ်ကို ကြည့်ပြီး ပြန်စမ်းကြည့်ပါ</translation>
 <translation id="7951415247503192394">(32-bit)</translation>
 <translation id="7953569069500808819">ထိပ်အစွန်းတွင် အပ်ချည်ဖြင့်ချုပ်ရန်</translation>
-<translation id="7954523986259449736">ဤဝဘ်ဆိုက်က လုံးဝမလုံခြုံသည့် ချိတ်ဆက်မှုကို အသုံးပြုနေသည့်အတွက် အခြားသူများက သင့်အချက်အလက်များကို မြင်နိုင်သည်။</translation>
 <translation id="7956713633345437162">မိုဘိုင်း စာညှပ်များ</translation>
 <translation id="7961015016161918242">ဘယ်သောအခါမှ</translation>
 <translation id="7966803981046576691">အလုပ် အကောင့်အမျိုးအစား</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb
index 718a825..c40a2b34 100644
--- a/components/strings/components_strings_ne.xtb
+++ b/components/strings/components_strings_ne.xtb
@@ -1750,7 +1750,6 @@
 <translation id="7947285636476623132">आफ्नो म्याद सकिने वर्षको जाँच गरी फेरि प्रयास गर्नुहोस्</translation>
 <translation id="7951415247503192394">(32-बिट)</translation>
 <translation id="7953569069500808819">सिरानको किनारमा स्टिच</translation>
-<translation id="7954523986259449736">यो साइटमा पूर्ण रूपमा सुरक्षित नभएको कनेक्सन प्रयोग भइरहेका हुनाले अरूले तपाईंको जानकारी देख्न सक्छन्।</translation>
 <translation id="7956713633345437162">मोबाइल बुकमार्कहरू</translation>
 <translation id="7961015016161918242">कहिल्यै पनि होइन</translation>
 <translation id="7966803981046576691">कार्य खाताको प्रकार</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb
index 064b46e..307652d 100644
--- a/components/strings/components_strings_nl.xtb
+++ b/components/strings/components_strings_nl.xtb
@@ -1739,7 +1739,6 @@
 <translation id="7947285636476623132">Controleer het vervaljaar en probeer het opnieuw</translation>
 <translation id="7951415247503192394">(32-bits)</translation>
 <translation id="7953569069500808819">Inbinden met nietjes boven</translation>
-<translation id="7954523986259449736">Omdat de site een verbinding gebruikt die niet volledig is beveiligd, zijn je gegevens zichtbaar voor anderen.</translation>
 <translation id="7956713633345437162">Mobiele bookmarks</translation>
 <translation id="7961015016161918242">Nooit</translation>
 <translation id="7966803981046576691">Type taakaccount</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb
index c16015f..7a50409 100644
--- a/components/strings/components_strings_no.xtb
+++ b/components/strings/components_strings_no.xtb
@@ -1753,7 +1753,6 @@
 <translation id="7947285636476623132">Kontrollér utløpsdatoen, og prøv igjen</translation>
 <translation id="7951415247503192394">(32-bit)</translation>
 <translation id="7953569069500808819">Kantstifting topp</translation>
-<translation id="7954523986259449736">Fordi nettstedet bruker en tilkobling som ikke er helt sikker, kommer informasjonen din til å være synlig for andre.</translation>
 <translation id="7956713633345437162">Bokmerker for mobil</translation>
 <translation id="7961015016161918242">Aldri</translation>
 <translation id="7966803981046576691">Jobbkontotype</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb
index 520526b..9ae15517 100644
--- a/components/strings/components_strings_or.xtb
+++ b/components/strings/components_strings_or.xtb
@@ -1739,7 +1739,6 @@
 <translation id="7947285636476623132">ଆପଣଙ୍କ କ୍ରେଡିଟ୍‍ କାର୍ଡ ଅବଧି ସମାପ୍ତିର ବର୍ଷ ଦେଖନ୍ତୁ ଏବଂ ପୁଣି ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ</translation>
 <translation id="7951415247503192394">(32-ବିଟ୍)</translation>
 <translation id="7953569069500808819">ଉପର ପଟରେ ଏଜ୍ ଷ୍ଟିଚ୍</translation>
-<translation id="7954523986259449736">ସାଇଟଟି ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ସୁରକ୍ଷିତ ନଥିବା ସଂଯୋଗ ବ୍ୟବହାର କରୁଥିବା ଯୋଗୁଁ, ଆପଣଙ୍କ ସୂଚନା ଅନ୍ୟମାନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେବ।</translation>
 <translation id="7956713633345437162">ମୋବାଇଲ୍‍ ବୁକ୍‍ମାର୍କ</translation>
 <translation id="7961015016161918242">ଆଦୌ ନୁହେଁ</translation>
 <translation id="7966803981046576691">ଜବ୍ ଆକାଉଣ୍ଟ ପ୍ରକାର</translation>
diff --git a/components/strings/components_strings_pa.xtb b/components/strings/components_strings_pa.xtb
index 6a168397..2d4b6230 100644
--- a/components/strings/components_strings_pa.xtb
+++ b/components/strings/components_strings_pa.xtb
@@ -1740,7 +1740,6 @@
 <translation id="7947285636476623132">ਆਪਣੀ ਮਿਆਦ ਸਮਾਪਤੀ ਦੇ ਸਾਲ ਦੀ ਜਾਂਚ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ</translation>
 <translation id="7951415247503192394">(32-bit)</translation>
 <translation id="7953569069500808819">ਉੱਪਰ ਕਿਨਾਰੇ ਤੋਂ ਸਿਲਾਈ</translation>
-<translation id="7954523986259449736">ਕਿਉਂਕਿ ਸਾਈਟ ਅਜਿਹਾ ਕਨੈਕਸ਼ਨ ਵਰਤ ਰਹੀ ਹੈ ਜੋ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਹੈ, ਤੁਹਾਡੀ ਜਾਣਕਾਰੀ ਹੋਰਾਂ ਨੂੰ ਦਿਸੇਗੀ।</translation>
 <translation id="7956713633345437162">ਮੋਬਾਈਲ ਬੁੱਕਮਾਰਕਸ</translation>
 <translation id="7961015016161918242">ਕਦੇ ਨਹੀਂ</translation>
 <translation id="7966803981046576691">ਕਾਰਵਾਈ ਖਾਤੇ ਦੀ ਕਿਸਮ</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb
index d0ce8ea..0a20e16 100644
--- a/components/strings/components_strings_pl.xtb
+++ b/components/strings/components_strings_pl.xtb
@@ -1745,7 +1745,6 @@
 <translation id="7947285636476623132">Sprawdź rok ważności i spróbuj ponownie</translation>
 <translation id="7951415247503192394">(32-bitowa)</translation>
 <translation id="7953569069500808819">Zszywanie wzdłuż górnej krawędzi</translation>
-<translation id="7954523986259449736">Twoje dane będą widoczne dla innych, ponieważ ta strona używa połączenia, które nie jest całkowicie bezpieczne.</translation>
 <translation id="7956713633345437162">Zakładki na komórce</translation>
 <translation id="7961015016161918242">Nigdy</translation>
 <translation id="7966803981046576691">Rodzaj konta zadania</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb
index e95a2f9f..1b6e4ad 100644
--- a/components/strings/components_strings_pt-BR.xtb
+++ b/components/strings/components_strings_pt-BR.xtb
@@ -1743,7 +1743,6 @@
 <translation id="7947285636476623132">Verifique o ano de validade e tente novamente</translation>
 <translation id="7951415247503192394">32 bits</translation>
 <translation id="7953569069500808819">Costura na parte superior</translation>
-<translation id="7954523986259449736">Como o site está usando uma conexão que não é inteiramente segura, suas informações ficarão visíveis para outras pessoas.</translation>
 <translation id="7956713633345437162">Favoritos de dispositivos móveis</translation>
 <translation id="7961015016161918242">Nunca</translation>
 <translation id="7966803981046576691">Tipo de conta da tarefa</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb
index 7dba618..63d8c08 100644
--- a/components/strings/components_strings_pt-PT.xtb
+++ b/components/strings/components_strings_pt-PT.xtb
@@ -1753,7 +1753,6 @@
 <translation id="7947285636476623132">Verifique o ano de validade e tente novamente</translation>
 <translation id="7951415247503192394">32 bits</translation>
 <translation id="7953569069500808819">Coser extremidade superior</translation>
-<translation id="7954523986259449736">Uma vez que o site está utilizar uma ligação que não é totalmente segura, as suas informações vão ficar visíveis para as outras pessoas.</translation>
 <translation id="7956713633345437162">Marcadores telemóvel</translation>
 <translation id="7961015016161918242">Nunca</translation>
 <translation id="7966803981046576691">Tipo de conta da tarefa</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb
index 0b150ec7..d40da21 100644
--- a/components/strings/components_strings_ro.xtb
+++ b/components/strings/components_strings_ro.xtb
@@ -1752,7 +1752,6 @@
 <translation id="7947285636476623132">Verifică anul în care expiră și încearcă din nou</translation>
 <translation id="7951415247503192394">(32 de biți)</translation>
 <translation id="7953569069500808819">Broșare pe marginea de sus</translation>
-<translation id="7954523986259449736">Întrucât site-ul folosește o conexiune care nu este complet securizată, informațiile tale vor vizibile pentru alte persoane.</translation>
 <translation id="7956713633345437162">Marcaje mobile</translation>
 <translation id="7961015016161918242">Niciodată</translation>
 <translation id="7966803981046576691">Tipul contului sarcinii</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb
index 68b3d0a..d5df41d 100644
--- a/components/strings/components_strings_ru.xtb
+++ b/components/strings/components_strings_ru.xtb
@@ -1742,7 +1742,6 @@
 <translation id="7947285636476623132">Проверьте год в сроке действия карты и повторите попытку</translation>
 <translation id="7951415247503192394">(32 бит)</translation>
 <translation id="7953569069500808819">Скобы по верхнему краю</translation>
-<translation id="7954523986259449736">Поскольку подключение к этому сайту не полностью защищено, ваша информация может стать известна посторонним.</translation>
 <translation id="7956713633345437162">Моб. закладки</translation>
 <translation id="7961015016161918242">Нет</translation>
 <translation id="7966803981046576691">Тип аккаунта, в котором выполняется задание</translation>
diff --git a/components/strings/components_strings_si.xtb b/components/strings/components_strings_si.xtb
index b02ea45..2244a04 100644
--- a/components/strings/components_strings_si.xtb
+++ b/components/strings/components_strings_si.xtb
@@ -1749,7 +1749,6 @@
 <translation id="7947285636476623132">ඔබේ කල් ඉකුත් වීමේ වසර පරික්ෂා කර නැවත උත්සාහ කරන්න</translation>
 <translation id="7951415247503192394">(බිට්-32)</translation>
 <translation id="7953569069500808819">ඉහළ දාරය මසන්න</translation>
-<translation id="7954523986259449736">අඩවිය සම්පූර්ණයෙන් ආරක්ෂිත නොවන සම්බන්ධතාවක් භාවිත කරන නිසා, ඔබේ තොරතුරු අන් අයට පෙනෙනු ඇත.</translation>
 <translation id="7956713633345437162">ජංගම පොත්සලකුණු</translation>
 <translation id="7961015016161918242">කිසිවිට එපා</translation>
 <translation id="7966803981046576691">වැඩ ගිණුම් වර්ගය</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb
index 167c5df..dcf154a 100644
--- a/components/strings/components_strings_sk.xtb
+++ b/components/strings/components_strings_sk.xtb
@@ -1738,7 +1738,6 @@
 <translation id="7947285636476623132">Skontrolujte rok vypršania platnosti a skúste to znova</translation>
 <translation id="7951415247503192394">(32-bitová verzia)</translation>
 <translation id="7953569069500808819">Zošiť hrebeňovou väzbou hore</translation>
-<translation id="7954523986259449736">Tento web používa pripojenie, ktoré nie je úplne zabezpečené, takže ostatní budú vidieť vaše informácie.</translation>
 <translation id="7956713633345437162">Mobilné záložky</translation>
 <translation id="7961015016161918242">Nikdy</translation>
 <translation id="7966803981046576691">Typ účtu úlohy</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb
index c20ae75..cf3004d 100644
--- a/components/strings/components_strings_sl.xtb
+++ b/components/strings/components_strings_sl.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Preverite leto poteka veljavnosti in poskusite znova</translation>
 <translation id="7951415247503192394">(32-bitno)</translation>
 <translation id="7953569069500808819">Robni šiv zgoraj</translation>
-<translation id="7954523986259449736">To spletno mesto uporablja povezavo, ki ni popolnoma varna, zato bodo drugi uporabniki videli vaše podatke.</translation>
 <translation id="7956713633345437162">Mobilni zaznamki</translation>
 <translation id="7961015016161918242">Nikoli</translation>
 <translation id="7966803981046576691">Vrsta računa za opravilo</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb
index ecd537d2..a0998ba 100644
--- a/components/strings/components_strings_sq.xtb
+++ b/components/strings/components_strings_sq.xtb
@@ -1748,7 +1748,6 @@
 <translation id="7947285636476623132">Kontrollo vitin e skadimit dhe provo përsëri</translation>
 <translation id="7951415247503192394">(32-bitësh)</translation>
 <translation id="7953569069500808819">Qepje anësore lart</translation>
-<translation id="7954523986259449736">Për shkak se sajti po përdor një lidhje që nuk është plotësisht e sigurt, informacionet e tua do të jenë të dukshme për të tjerët.</translation>
 <translation id="7956713633345437162">Faqeshënuesit celularë</translation>
 <translation id="7961015016161918242">Asnjëherë</translation>
 <translation id="7966803981046576691">Lloji i llogarisë së punës</translation>
diff --git a/components/strings/components_strings_sr-Latn.xtb b/components/strings/components_strings_sr-Latn.xtb
index 33fa1a3e..d87935c 100644
--- a/components/strings/components_strings_sr-Latn.xtb
+++ b/components/strings/components_strings_sr-Latn.xtb
@@ -1753,7 +1753,6 @@
 <translation id="7947285636476623132">Proverite godinu isteka i probajte ponovo</translation>
 <translation id="7951415247503192394">(32-bitni)</translation>
 <translation id="7953569069500808819">Spajanje ivica na vrhu</translation>
-<translation id="7954523986259449736">Sajt koristi vezu koja nije u potpunosti bezbedna, pa će informacije biti vidljive drugima.</translation>
 <translation id="7956713633345437162">Mobilni obeleživači</translation>
 <translation id="7961015016161918242">Nikad</translation>
 <translation id="7966803981046576691">Tip naloga zadatka</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb
index 2cd8cd2..afb598b 100644
--- a/components/strings/components_strings_sr.xtb
+++ b/components/strings/components_strings_sr.xtb
@@ -1753,7 +1753,6 @@
 <translation id="7947285636476623132">Проверите годину истека и пробајте поново</translation>
 <translation id="7951415247503192394">(32-битни)</translation>
 <translation id="7953569069500808819">Спајање ивица на врху</translation>
-<translation id="7954523986259449736">Сајт користи везу која није у потпуности безбедна, па ће информације бити видљиве другима.</translation>
 <translation id="7956713633345437162">Мобилни обележивачи</translation>
 <translation id="7961015016161918242">Никад</translation>
 <translation id="7966803981046576691">Тип налога задатка</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb
index 1414456..8555134 100644
--- a/components/strings/components_strings_sv.xtb
+++ b/components/strings/components_strings_sv.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Kontrollera utgångsår och försök igen</translation>
 <translation id="7951415247503192394">(32 bitar)</translation>
 <translation id="7953569069500808819">Kanthäftning högst upp</translation>
-<translation id="7954523986259449736">Din information blir synlig för andra eftersom webbplatsens anslutning inte är helt säker.</translation>
 <translation id="7956713633345437162">Bokmärken i mobilen</translation>
 <translation id="7961015016161918242">Aldrig</translation>
 <translation id="7966803981046576691">Kontotyp för utskriften</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb
index b8b33ba..7e73bca 100644
--- a/components/strings/components_strings_sw.xtb
+++ b/components/strings/components_strings_sw.xtb
@@ -1751,7 +1751,6 @@
 <translation id="7947285636476623132">Angalia mwaka kuisha kwa muda wa matumizi halafu ujajibu tena</translation>
 <translation id="7951415247503192394">(biti 32)</translation>
 <translation id="7953569069500808819">Shona ncha ya juu</translation>
-<translation id="7954523986259449736">Kwa sababu tovuti inatumia muunganisho ambao si salama kabisa, watu wengine wataona taarifa zako.</translation>
 <translation id="7956713633345437162">Alamisho kwenye simu</translation>
 <translation id="7961015016161918242">Katu</translation>
 <translation id="7966803981046576691">Aina ya akaunti ya kazi</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb
index bc01b6f..28173d8 100644
--- a/components/strings/components_strings_ta.xtb
+++ b/components/strings/components_strings_ta.xtb
@@ -1747,7 +1747,6 @@
 <translation id="7947285636476623132">காலாவதி ஆண்டைச் சரிபார்த்து, மீண்டும் முயலவும்</translation>
 <translation id="7951415247503192394">(32-பிட்)</translation>
 <translation id="7953569069500808819">எட்ஜ் ஸ்டிட்ச் டாப்</translation>
-<translation id="7954523986259449736">முற்றிலும் பாதுகாப்பான இணைப்பை இந்தத் தளம் பயன்படுத்தாததால் உங்கள் தகவல்களைப் பிறரால் பார்க்க முடியும்.</translation>
 <translation id="7956713633345437162">மொபைல் புக்மார்க்குகள்</translation>
 <translation id="7961015016161918242">எப்போதும் இல்லை</translation>
 <translation id="7966803981046576691">பணிக் கணக்கு வகை</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb
index 8e3c375..9b61e86 100644
--- a/components/strings/components_strings_te.xtb
+++ b/components/strings/components_strings_te.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">మీ గడువు ముగింపు సంవత్సరాన్ని తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి</translation>
 <translation id="7951415247503192394">(32-బిట్)</translation>
 <translation id="7953569069500808819">ఎగువ భాగంలో కుట్టిన అంచు</translation>
-<translation id="7954523986259449736">సైట్ పూర్తిగా సురక్షితంగా లేని కనెక్షన్‌ను ఉపయోగిస్తోంది, కాబట్టి మీ సమాచారం ఇతరులకు కనిపిస్తుంది.</translation>
 <translation id="7956713633345437162">మొబైల్ బుక్‌మార్క్‌లు</translation>
 <translation id="7961015016161918242">ఎప్పుడూ లేదు</translation>
 <translation id="7966803981046576691">ఉద్యోగ ఖాతా రకం</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb
index 5315a7e..20b3c3a8 100644
--- a/components/strings/components_strings_th.xtb
+++ b/components/strings/components_strings_th.xtb
@@ -1742,7 +1742,6 @@
 <translation id="7947285636476623132">ตรวจสอบปีหมดอายุแล้วลองอีกครั้ง</translation>
 <translation id="7951415247503192394">(32 บิต)</translation>
 <translation id="7953569069500808819">เย็บขอบด้านบน</translation>
-<translation id="7954523986259449736">คนอื่นจะมองเห็นข้อมูลของคุณได้เนื่องจากเว็บไซต์นี้ใช้การเชื่อมต่อที่ไม่ได้ปลอดภัยเต็มที่</translation>
 <translation id="7956713633345437162">บุ๊กมาร์กบนอุปกรณ์เคลื่อนที่</translation>
 <translation id="7961015016161918242">ไม่ต้องเลย</translation>
 <translation id="7966803981046576691">ประเภทบัญชีของงาน</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb
index 1a43303..8543d1d 100644
--- a/components/strings/components_strings_tr.xtb
+++ b/components/strings/components_strings_tr.xtb
@@ -1745,7 +1745,6 @@
 <translation id="7947285636476623132">Son kullanma tarihinin yılını kontrol edip tekrar deneyin</translation>
 <translation id="7951415247503192394">(32 bit)</translation>
 <translation id="7953569069500808819">Üstte kenar dikişi</translation>
-<translation id="7954523986259449736">Site tamamen güvenli olmayan bir bağlantı kullandığından bilgileriniz başkaları tarafından görülebilir.</translation>
 <translation id="7956713633345437162">Mobil yer işaretleri</translation>
 <translation id="7961015016161918242">Hiçbir Zaman</translation>
 <translation id="7966803981046576691">İş hesap türü</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb
index f2834d8..9986fb5 100644
--- a/components/strings/components_strings_uk.xtb
+++ b/components/strings/components_strings_uk.xtb
@@ -1752,7 +1752,6 @@
 <translation id="7947285636476623132">Перевірте рік закінчення терміну дії та повторіть спробу</translation>
 <translation id="7951415247503192394">(32-розрядна версія)</translation>
 <translation id="7953569069500808819">Зшити вздовж верхнього краю</translation>
-<translation id="7954523986259449736">Вашу інформацію бачитимуть інші користувачі, оскільки сайт використовує не повністю захищене з'єднання.</translation>
 <translation id="7956713633345437162">Закладки на мобільному</translation>
 <translation id="7961015016161918242">Ніколи</translation>
 <translation id="7966803981046576691">Тип робочого облікового запису</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb
index e05f081e..ae0fbe4 100644
--- a/components/strings/components_strings_ur.xtb
+++ b/components/strings/components_strings_ur.xtb
@@ -1758,7 +1758,6 @@
 <translation id="7947285636476623132">اپنا اختتامی سال چیک کریں اور دوبارہ کوشش کریں</translation>
 <translation id="7951415247503192394">(32 بٹ)</translation>
 <translation id="7953569069500808819">اوپر کنارے کی سلائی</translation>
-<translation id="7954523986259449736">چونکہ سائٹ ایک ایسا کنکشن استعمال کررہی ہے جو مکمل طور پر محفوظ نہیں ہے، آپ کی معلومات دوسروں کے لئے مرئی ہوگی۔</translation>
 <translation id="7956713633345437162">موبائل بُک مارکس</translation>
 <translation id="7961015016161918242">کبھی نہیں</translation>
 <translation id="7966803981046576691">جاب اکاؤنٹ کی قسم</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb
index 2b179b09..5838d74b 100644
--- a/components/strings/components_strings_uz.xtb
+++ b/components/strings/components_strings_uz.xtb
@@ -1748,7 +1748,6 @@
 <translation id="7947285636476623132">Kartangiz muddatining tugash yilini tekshiring va yana urinib ko‘ring</translation>
 <translation id="7951415247503192394">(32-bit)</translation>
 <translation id="7953569069500808819">Yuqori chekkasini tikish</translation>
-<translation id="7954523986259449736">Chunki sayt xavfsiz boʻlmagan ulanishdan foydalanmoqda. Maʼlumotlaringiz boshqalarga koʻrinadi.</translation>
 <translation id="7956713633345437162">Mobil xatcho‘plar</translation>
 <translation id="7961015016161918242">Hech qachon</translation>
 <translation id="7966803981046576691">Vazifa bajarilayotgan hisob turi</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb
index 4880bf10..75751bc7 100644
--- a/components/strings/components_strings_vi.xtb
+++ b/components/strings/components_strings_vi.xtb
@@ -1754,7 +1754,6 @@
 <translation id="7947285636476623132">Kiểm tra năm hết hạn của bạn và thử lại</translation>
 <translation id="7951415247503192394">(32 bit)</translation>
 <translation id="7953569069500808819">May viền ở trên cùng</translation>
-<translation id="7954523986259449736">Vì trang web này đang sử dụng đường kết nối không an toàn tuyệt đối nên người khác có thể nhìn thấy thông tin của bạn.</translation>
 <translation id="7956713633345437162">Dấu trang trên thiết bị di động</translation>
 <translation id="7961015016161918242">Không bao giờ</translation>
 <translation id="7966803981046576691">Loại tài khoản công việc</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb
index 4da5f7fd..134e469 100644
--- a/components/strings/components_strings_zh-CN.xtb
+++ b/components/strings/components_strings_zh-CN.xtb
@@ -1738,7 +1738,6 @@
 <translation id="7947285636476623132">请检查您的信用卡到期年份,然后重试</translation>
 <translation id="7951415247503192394">(32 位)</translation>
 <translation id="7953569069500808819">边缘装订(顶部)</translation>
-<translation id="7954523986259449736">该网站使用的连接并非百分百安全,因此他人将能看到您的信息。</translation>
 <translation id="7956713633345437162">移动设备书签</translation>
 <translation id="7961015016161918242">一律不</translation>
 <translation id="7966803981046576691">工作帐号类型</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb
index 0ff51b5c..b5f9b1a 100644
--- a/components/strings/components_strings_zh-HK.xtb
+++ b/components/strings/components_strings_zh-HK.xtb
@@ -1742,7 +1742,6 @@
 <translation id="7947285636476623132">請檢查您的到期年份,然後再試一次</translation>
 <translation id="7951415247503192394">(32 位元)</translation>
 <translation id="7953569069500808819">邊緣釘裝 (右側)</translation>
-<translation id="7954523986259449736">由於網站使用的連線有安全風險,其他人可看到您的資料。</translation>
 <translation id="7956713633345437162">流動版書籤</translation>
 <translation id="7961015016161918242">從來沒有</translation>
 <translation id="7966803981046576691">工作帳戶類型</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb
index 2dd29a0..49368eb 100644
--- a/components/strings/components_strings_zh-TW.xtb
+++ b/components/strings/components_strings_zh-TW.xtb
@@ -1743,7 +1743,6 @@
 <translation id="7947285636476623132">請檢查信用卡到期年份,然後再試一次</translation>
 <translation id="7951415247503192394">(32 位元)</translation>
 <translation id="7953569069500808819">邊緣裝訂 (右側)</translation>
-<translation id="7954523986259449736">這個網站使用的連線有安全疑慮,其他使用者將可看到你的資訊。</translation>
 <translation id="7956713633345437162">行動版書籤</translation>
 <translation id="7961015016161918242">一律不要</translation>
 <translation id="7966803981046576691">工作帳戶類型</translation>
diff --git a/components/strings/components_strings_zu.xtb b/components/strings/components_strings_zu.xtb
index 5181833..3d6b1a0 100644
--- a/components/strings/components_strings_zu.xtb
+++ b/components/strings/components_strings_zu.xtb
@@ -1751,7 +1751,6 @@
 <translation id="7947285636476623132">Hlola unyaka wakho wokuphelelwa isikhathi uphinde uzame futhi</translation>
 <translation id="7951415247503192394">(32-bhithi)</translation>
 <translation id="7953569069500808819">Ukuthunga umpetho phezulu</translation>
-<translation id="7954523986259449736">Ngenxa yokuthi isayithi isebenzisa uxhumano olungavikelekile ngokuphelele, ulwazi lwakho luzobonakala kwabanye.</translation>
 <translation id="7956713633345437162">Amabhukhimakhi weselula</translation>
 <translation id="7961015016161918242">Ngeke</translation>
 <translation id="7966803981046576691">Uhlobo lwe-akhawunti yomsebenzi</translation>
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc
index 8b5ee00b..80ccf20 100644
--- a/components/viz/common/features.cc
+++ b/components/viz/common/features.cc
@@ -146,7 +146,7 @@
   if (viz::AlwaysUseWideColorGamut())
     return false;
   auto* build_info = base::android::BuildInfo::GetInstance();
-  if (!build_info->is_at_least_q())
+  if (build_info->sdk_int() < base::android::SDK_VERSION_Q)
     return false;
   return base::FeatureList::IsEnabled(kDynamicColorGamut);
 }
diff --git a/components/viz/test/data/backdrop_filter_blur_rounded.png b/components/viz/test/data/backdrop_filter_blur_rounded.png
index aa43e15..1c6a19a 100644
--- a/components/viz/test/data/backdrop_filter_blur_rounded.png
+++ b/components/viz/test/data/backdrop_filter_blur_rounded.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_on_scaled_layer_gl.png b/components/viz/test/data/backdrop_filter_on_scaled_layer_gl.png
index 675ea63..e08e814f 100644
--- a/components/viz/test/data/backdrop_filter_on_scaled_layer_gl.png
+++ b/components/viz/test/data/backdrop_filter_on_scaled_layer_gl.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_gl.png b/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_gl.png
new file mode 100644
index 0000000..5e054f43
--- /dev/null
+++ b/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_gl.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_skia_gl.png b/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_skia_gl.png
new file mode 100644
index 0000000..f62dad95
--- /dev/null
+++ b/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_skia_gl.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_sw.png b/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_sw.png
new file mode 100644
index 0000000..1ab0d2b4
--- /dev/null
+++ b/components/viz/test/data/backdrop_filter_on_scaled_layer_legacy_swiftshader_sw.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_on_scaled_layer_skia_gl.png b/components/viz/test/data/backdrop_filter_on_scaled_layer_skia_gl.png
index 6337e5a..667ec94d 100644
--- a/components/viz/test/data/backdrop_filter_on_scaled_layer_skia_gl.png
+++ b/components/viz/test/data/backdrop_filter_on_scaled_layer_skia_gl.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_rotated_gl.png b/components/viz/test/data/backdrop_filter_rotated_gl.png
index 3b3081a..ff18be1 100644
--- a/components/viz/test/data/backdrop_filter_rotated_gl.png
+++ b/components/viz/test/data/backdrop_filter_rotated_gl.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_rotated_skia_gl.png b/components/viz/test/data/backdrop_filter_rotated_skia_gl.png
index 32416ee..8d15722 100644
--- a/components/viz/test/data/backdrop_filter_rotated_skia_gl.png
+++ b/components/viz/test/data/backdrop_filter_rotated_skia_gl.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_rotated_skia_vk.png b/components/viz/test/data/backdrop_filter_rotated_skia_vk.png
index 113d6fb..94243c15 100644
--- a/components/viz/test/data/backdrop_filter_rotated_skia_vk.png
+++ b/components/viz/test/data/backdrop_filter_rotated_skia_vk.png
Binary files differ
diff --git a/components/viz/test/data/backdrop_filter_rotated_sw.png b/components/viz/test/data/backdrop_filter_rotated_sw.png
index 0a4fe04..034ab8a 100644
--- a/components/viz/test/data/backdrop_filter_rotated_sw.png
+++ b/components/viz/test/data/backdrop_filter_rotated_sw.png
Binary files differ
diff --git a/components/viz/test/data/green_alpha.png b/components/viz/test/data/green_alpha.png
index 46cece30..d88a07f 100644
--- a/components/viz/test/data/green_alpha.png
+++ b/components/viz/test/data/green_alpha.png
Binary files differ
diff --git a/components/viz/test/data/green_alpha_vertex_opacity.png b/components/viz/test/data/green_alpha_vertex_opacity.png
index f13ab7a..316c2cb 100644
--- a/components/viz/test/data/green_alpha_vertex_opacity.png
+++ b/components/viz/test/data/green_alpha_vertex_opacity.png
Binary files differ
diff --git a/components/viz/test/data/scaled_mask_with_effect_gl.png b/components/viz/test/data/scaled_mask_with_effect_gl.png
index f02eace8..e309bf2 100644
--- a/components/viz/test/data/scaled_mask_with_effect_gl.png
+++ b/components/viz/test/data/scaled_mask_with_effect_gl.png
Binary files differ
diff --git a/components/viz/test/data/scaled_mask_with_effect_skia_vk.png b/components/viz/test/data/scaled_mask_with_effect_skia_vk.png
index 93736c7..3693484 100644
--- a/components/viz/test/data/scaled_mask_with_effect_skia_vk.png
+++ b/components/viz/test/data/scaled_mask_with_effect_skia_vk.png
Binary files differ
diff --git a/components/viz/test/data/scaled_render_surface_layer_gl.png b/components/viz/test/data/scaled_render_surface_layer_gl.png
index f6ea69d..fbf764b 100644
--- a/components/viz/test/data/scaled_render_surface_layer_gl.png
+++ b/components/viz/test/data/scaled_render_surface_layer_gl.png
Binary files differ
diff --git a/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_gl.png b/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_gl.png
new file mode 100644
index 0000000..8376ea8
--- /dev/null
+++ b/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_gl.png
Binary files differ
diff --git a/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_skia_gl.png b/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_skia_gl.png
new file mode 100644
index 0000000..1894419
--- /dev/null
+++ b/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_skia_gl.png
Binary files differ
diff --git a/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_sw.png b/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_sw.png
new file mode 100644
index 0000000..6ef530a8
--- /dev/null
+++ b/components/viz/test/data/scaled_render_surface_layer_legacy_swiftshader_sw.png
Binary files differ
diff --git a/components/viz/test/data/scaled_render_surface_layer_sw.png b/components/viz/test/data/scaled_render_surface_layer_sw.png
index b177b511..6ef530a8 100644
--- a/components/viz/test/data/scaled_render_surface_layer_sw.png
+++ b/components/viz/test/data/scaled_render_surface_layer_sw.png
Binary files differ
diff --git a/components/viz/test/data/spiral_64_scale.png b/components/viz/test/data/spiral_64_scale.png
index 8dbfd76..58bb818a 100644
--- a/components/viz/test/data/spiral_64_scale.png
+++ b/components/viz/test/data/spiral_64_scale.png
Binary files differ
diff --git a/components/viz/test/data/spiral_64_scale_legacy_swiftshader.png b/components/viz/test/data/spiral_64_scale_legacy_swiftshader.png
new file mode 100644
index 0000000..ec26b202
--- /dev/null
+++ b/components/viz/test/data/spiral_64_scale_legacy_swiftshader.png
Binary files differ
diff --git a/components/viz/test/data/spiral_64_scale_legacy_swiftshader_vk.png b/components/viz/test/data/spiral_64_scale_legacy_swiftshader_vk.png
new file mode 100644
index 0000000..6953f66
--- /dev/null
+++ b/components/viz/test/data/spiral_64_scale_legacy_swiftshader_vk.png
Binary files differ
diff --git a/components/viz/test/data/spiral_64_scale_vk.png b/components/viz/test/data/spiral_64_scale_vk.png
index 6953f66..482119c 100644
--- a/components/viz/test/data/spiral_64_scale_vk.png
+++ b/components/viz/test/data/spiral_64_scale_vk.png
Binary files differ
diff --git a/components/viz/test/data/srgb_green_in_p3.png b/components/viz/test/data/srgb_green_in_p3.png
index fcbbe0a..0139b18 100644
--- a/components/viz/test/data/srgb_green_in_p3.png
+++ b/components/viz/test/data/srgb_green_in_p3.png
Binary files differ
diff --git a/components/viz/test/data/yuv_stripes.png b/components/viz/test/data/yuv_stripes.png
index 1e64aa3..e32cb632 100644
--- a/components/viz/test/data/yuv_stripes.png
+++ b/components/viz/test/data/yuv_stripes.png
Binary files differ
diff --git a/components/viz/test/data/yuv_stripes_alpha.png b/components/viz/test/data/yuv_stripes_alpha.png
index 90ef195..bab22be9 100644
--- a/components/viz/test/data/yuv_stripes_alpha.png
+++ b/components/viz/test/data/yuv_stripes_alpha.png
Binary files differ
diff --git a/components/viz/test/data/yuv_stripes_clipped.png b/components/viz/test/data/yuv_stripes_clipped.png
index e6459b3..24cc7a05 100644
--- a/components/viz/test/data/yuv_stripes_clipped.png
+++ b/components/viz/test/data/yuv_stripes_clipped.png
Binary files differ
diff --git a/components/viz/test/data/yuv_stripes_offset.png b/components/viz/test/data/yuv_stripes_offset.png
index be36012..e1d92af 100644
--- a/components/viz/test/data/yuv_stripes_offset.png
+++ b/components/viz/test/data/yuv_stripes_offset.png
Binary files differ
diff --git a/content/browser/devtools/devtools_trust_token_browsertest.cc b/content/browser/devtools/devtools_trust_token_browsertest.cc
index 0feed78..637f6a07 100644
--- a/content/browser/devtools/devtools_trust_token_browsertest.cc
+++ b/content/browser/devtools/devtools_trust_token_browsertest.cc
@@ -4,6 +4,7 @@
 
 #include "content/browser/devtools/protocol/devtools_protocol_test_support.h"
 #include "content/browser/devtools/protocol/network.h"
+#include "content/browser/net/trust_token_browsertest.h"
 #include "content/browser/renderer_host/render_frame_host_impl.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/public/test/browser_test.h"
@@ -11,7 +12,6 @@
 #include "content/public/test/content_browser_test_utils.h"
 #include "content/public/test/test_navigation_observer.h"
 #include "content/shell/browser/shell.h"
-#include "content/test/trust_token_browsertest.h"
 
 namespace content {
 
diff --git a/content/browser/devtools/protocol/devtools_network_resource_loader_browsertest.cc b/content/browser/devtools/protocol/devtools_network_resource_loader_browsertest.cc
index 4961dfe..953f7e9 100644
--- a/content/browser/devtools/protocol/devtools_network_resource_loader_browsertest.cc
+++ b/content/browser/devtools/protocol/devtools_network_resource_loader_browsertest.cc
@@ -75,7 +75,8 @@
         frame, frame->GetLastCommittedOrigin(),
         mojo::Clone(frame->last_committed_client_security_state()),
         /**coep_reporter=*/mojo::NullRemote(), frame->GetProcess(),
-        network::mojom::TrustTokenRedemptionPolicy::kForbid);
+        network::mojom::TrustTokenRedemptionPolicy::kForbid,
+        "DevtoolsNetworkResourceLoaderTest");
     // Let DevTools fetch resources without CORS and CORB. Source maps are valid
     // JSON and would otherwise require a CORS fetch + correct response headers.
     // See BUG(chromium:1076435) for more context.
diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc
index 45e856f6..2514dc0 100644
--- a/content/browser/devtools/protocol/network_handler.cc
+++ b/content/browser/devtools/protocol/network_handler.cc
@@ -2628,7 +2628,8 @@
         frame, frame->GetLastCommittedOrigin(),
         mojo::Clone(frame->last_committed_client_security_state()),
         /**coep_reporter=*/mojo::NullRemote(), frame->GetProcess(),
-        network::mojom::TrustTokenRedemptionPolicy::kForbid);
+        network::mojom::TrustTokenRedemptionPolicy::kForbid,
+        "NetworkHandler::LoadNetworkResource");
 
     auto factory =
         CreateNetworkFactoryForDevTools(frame->GetProcess(), std::move(params));
diff --git a/content/browser/devtools/service_worker_devtools_agent_host.cc b/content/browser/devtools/service_worker_devtools_agent_host.cc
index da581c7..c531714 100644
--- a/content/browser/devtools/service_worker_devtools_agent_host.cc
+++ b/content/browser/devtools/service_worker_devtools_agent_host.cc
@@ -247,7 +247,8 @@
       net::IsolationInfo::Create(net::IsolationInfo::RequestType::kOther,
                                  origin, origin,
                                  net::SiteForCookies::FromOrigin(origin)),
-      /*coep_reporter=*/mojo::NullRemote());
+      /*coep_reporter=*/mojo::NullRemote(),
+      /*debug_tag=*/"SWDTAH::CreateNetworkFactoryParamsForDevTools");
   return {url::Origin::Create(GetURL()), net::SiteForCookies::FromUrl(GetURL()),
           std::move(factory)};
 }
diff --git a/content/browser/net/DEPS b/content/browser/net/DEPS
new file mode 100644
index 0000000..b93175e6
--- /dev/null
+++ b/content/browser/net/DEPS
@@ -0,0 +1,6 @@
+specific_include_rules = {
+  "trust_token.*test.*": [
+    "+services/network/test",
+    "+services/network/trust_tokens/test",
+  ],
+}
diff --git a/content/browser/net/OWNERS b/content/browser/net/OWNERS
index 688bc408c..49fc7fd 100644
--- a/content/browser/net/OWNERS
+++ b/content/browser/net/OWNERS
@@ -1,3 +1,6 @@
 file://net/OWNERS
 
+# Trust Tokens-related files.
+per-file *trust_token*=file://services/network/trust_tokens/OWNERS
+
 per-file network_quality*=file://net/nqe/OWNERS
diff --git a/content/test/trust_token_browsertest.cc b/content/browser/net/trust_token_browsertest.cc
similarity index 99%
rename from content/test/trust_token_browsertest.cc
rename to content/browser/net/trust_token_browsertest.cc
index 023e185..4f4eca7f 100644
--- a/content/test/trust_token_browsertest.cc
+++ b/content/browser/net/trust_token_browsertest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "content/test/trust_token_browsertest.h"
+#include "content/browser/net/trust_token_browsertest.h"
 
 #include <memory>
 #include <string>
diff --git a/content/test/trust_token_browsertest.h b/content/browser/net/trust_token_browsertest.h
similarity index 93%
rename from content/test/trust_token_browsertest.h
rename to content/browser/net/trust_token_browsertest.h
index ac31b5d..15a9ccb 100644
--- a/content/test/trust_token_browsertest.h
+++ b/content/browser/net/trust_token_browsertest.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CONTENT_TEST_TRUST_TOKEN_BROWSERTEST_H_
-#define CONTENT_TEST_TRUST_TOKEN_BROWSERTEST_H_
+#ifndef CONTENT_BROWSER_NET_TRUST_TOKEN_BROWSERTEST_H_
+#define CONTENT_BROWSER_NET_TRUST_TOKEN_BROWSERTEST_H_
 
 #include "base/test/scoped_feature_list.h"
 #include "content/public/test/content_browser_test.h"
@@ -61,4 +61,4 @@
 
 }  // namespace content
 
-#endif  // CONTENT_TEST_TRUST_TOKEN_BROWSERTEST_H_
+#endif  // CONTENT_BROWSER_NET_TRUST_TOKEN_BROWSERTEST_H_
diff --git a/content/test/trust_token_origin_trial_browsertest.cc b/content/browser/net/trust_token_origin_trial_browsertest.cc
similarity index 100%
rename from content/test/trust_token_origin_trial_browsertest.cc
rename to content/browser/net/trust_token_origin_trial_browsertest.cc
diff --git a/content/test/trust_token_parameters_browsertest.cc b/content/browser/net/trust_token_parameters_browsertest.cc
similarity index 100%
rename from content/test/trust_token_parameters_browsertest.cc
rename to content/browser/net/trust_token_parameters_browsertest.cc
diff --git a/content/browser/renderer_host/frame_tree_node.cc b/content/browser/renderer_host/frame_tree_node.cc
index 25d1000..aa569b2 100644
--- a/content/browser/renderer_host/frame_tree_node.cc
+++ b/content/browser/renderer_host/frame_tree_node.cc
@@ -774,14 +774,6 @@
   }
 }
 
-void FrameTreeNode::SetOpenerFeaturePolicyState(
-    const blink::FeaturePolicyFeatureState& feature_state) {
-  DCHECK(IsMainFrame());
-  if (base::FeatureList::IsEnabled(features::kFeaturePolicyForSandbox)) {
-    replication_state_.opener_feature_state = feature_state;
-  }
-}
-
 void FrameTreeNode::SetAdFrameType(blink::mojom::AdFrameType ad_frame_type) {
   DCHECK_NE(ad_frame_type, blink::mojom::AdFrameType::kNonAd);
   if (replication_state_.ad_frame_type == blink::mojom::AdFrameType::kNonAd) {
diff --git a/content/browser/renderer_host/frame_tree_node.h b/content/browser/renderer_host/frame_tree_node.h
index d9f2987..9b9e7b3 100644
--- a/content/browser/renderer_host/frame_tree_node.h
+++ b/content/browser/renderer_host/frame_tree_node.h
@@ -425,11 +425,6 @@
   blink::mojom::FrameOwnerElementType frame_owner_element_type() const {
     return replication_state_.frame_owner_element_type;
   }
-  // Only meaningful to call on a root frame. The value of |feature_state| will
-  // be nontrivial if there is an opener which is restricted in some of the
-  // feature policies.
-  void SetOpenerFeaturePolicyState(
-      const blink::FeaturePolicyFeatureState& feature_state);
 
   void SetAdFrameType(blink::mojom::AdFrameType ad_frame_type);
 
diff --git a/content/browser/renderer_host/input/input_router_impl_unittest.cc b/content/browser/renderer_host/input/input_router_impl_unittest.cc
index 56878f2..a91c683 100644
--- a/content/browser/renderer_host/input/input_router_impl_unittest.cc
+++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
@@ -748,8 +748,8 @@
   base::Optional<cc::TouchAction> expected_touch_action;
   OnTouchEventAckWithAckState(
       blink::mojom::InputEventResultSource::kCompositorThread,
-      blink::mojom::InputEventResultState::kConsumedShouldBubble,
-      expected_touch_action, cc::TouchAction::kAuto);
+      blink::mojom::InputEventResultState::kNotConsumed, expected_touch_action,
+      cc::TouchAction::kAuto);
 }
 
 TEST_F(InputRouterImplTest, TouchActionAutoWithAckStateNoConsumerExists) {
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
index bd4f5fe..a990d24 100644
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -1599,7 +1599,8 @@
   NavigationRequest* navigation_request = nullptr;
 
   return CreateNetworkServiceDefaultFactoryAndObserve(
-      CreateURLLoaderFactoryParamsForMainWorld(navigation_request),
+      CreateURLLoaderFactoryParamsForMainWorld(
+          navigation_request, "RFHI::CreateNetworkServiceDefaultFactory"),
       ukm::SourceIdObj::FromInt64(GetPageUkmSourceId()),
       std::move(default_factory_receiver));
 }
@@ -1639,12 +1640,6 @@
 }
 
 bool RenderFrameHostImpl::IsSandboxed(network::mojom::WebSandboxFlags flags) {
-  if (base::FeatureList::IsEnabled(features::kFeaturePolicyForSandbox)) {
-    blink::mojom::FeaturePolicyFeature feature =
-        blink::FeaturePolicy::FeatureForSandboxFlag(flags);
-    if (feature != blink::mojom::FeaturePolicyFeature::kNotFound)
-      return !IsFeatureEnabled(feature);
-  }
   return static_cast<int>(active_sandbox_flags_) & static_cast<int>(flags);
 }
 
@@ -3994,7 +3989,8 @@
   if (recreate_default_url_loader_factory_after_network_service_crash_) {
     bypass_redirect_checks = CreateNetworkServiceDefaultFactoryAndObserve(
         CreateURLLoaderFactoryParamsForMainWorld(
-            latest_nav_request_still_committing),
+            latest_nav_request_still_committing,
+            "RFHI::UpdateSubresourceLoaderFactories"),
         ukm::SourceIdObj::FromInt64(
             latest_nav_request_still_committing
                 ? latest_nav_request_still_committing->GetNextPageUkmSourceId()
@@ -6357,7 +6353,8 @@
       // appropriate NetworkContext.
       bool bypass_redirect_checks =
           CreateNetworkServiceDefaultFactoryAndObserve(
-              CreateURLLoaderFactoryParamsForMainWorld(navigation_request),
+              CreateURLLoaderFactoryParamsForMainWorld(
+                  navigation_request, "RFHI::CommitNavigation"),
               next_page_ukm_source_id,
               pending_default_factory.InitWithNewPipeAndPassReceiver());
       subresource_loader_factories->set_bypass_redirect_checks(
@@ -6639,7 +6636,8 @@
       subresource_loader_factories;
   mojo::PendingRemote<network::mojom::URLLoaderFactory> default_factory_remote;
   bool bypass_redirect_checks = CreateNetworkServiceDefaultFactoryAndObserve(
-      CreateURLLoaderFactoryParamsForMainWorld(navigation_request),
+      CreateURLLoaderFactoryParamsForMainWorld(navigation_request,
+                                               "RFHI::FailedNavigation"),
       ukm::kInvalidSourceIdObj,
       default_factory_remote.InitWithNewPipeAndPassReceiver());
   subresource_loader_factories =
@@ -7299,7 +7297,8 @@
 
 network::mojom::URLLoaderFactoryParamsPtr
 RenderFrameHostImpl::CreateURLLoaderFactoryParamsForMainWorld(
-    NavigationRequest* navigation_request) {
+    NavigationRequest* navigation_request,
+    base::StringPiece debug_tag) {
   url::Origin main_world_origin;
   network::mojom::ClientSecurityStatePtr client_security_state;
   mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
@@ -7313,7 +7312,7 @@
   return URLLoaderFactoryParamsHelper::CreateForFrame(
       this, main_world_origin, std::move(client_security_state),
       std::move(coep_reporter_remote), GetProcess(),
-      trust_token_redemption_policy);
+      trust_token_redemption_policy, debug_tag);
 }
 
 bool RenderFrameHostImpl::CreateNetworkServiceDefaultFactoryAndObserve(
@@ -7335,6 +7334,7 @@
     network::mojom::URLLoaderFactoryParamsPtr monitoring_factory_params =
         network::mojom::URLLoaderFactoryParams::New();
     monitoring_factory_params->process_id = GetProcess()->GetID();
+    monitoring_factory_params->debug_tag = "RFHI - monitoring_factory_params";
 
     // This factory should never be used to issue actual requests (i.e. it
     // should only be used to monitor for Network Service crashes).  Below is an
@@ -7577,14 +7577,6 @@
 
 void RenderFrameHostImpl::ResetFeaturePolicy() {
   RenderFrameHostImpl* parent_frame_host = GetParent();
-  if (!parent_frame_host && !frame_tree_node_->current_replication_state()
-                                 .opener_feature_state.empty()) {
-    DCHECK(base::FeatureList::IsEnabled(features::kFeaturePolicyForSandbox));
-    feature_policy_ = blink::FeaturePolicy::CreateWithOpenerPolicy(
-        frame_tree_node_->current_replication_state().opener_feature_state,
-        last_committed_origin_);
-    return;
-  }
   const blink::FeaturePolicy* parent_policy =
       parent_frame_host ? parent_frame_host->feature_policy() : nullptr;
   blink::ParsedFeaturePolicy container_policy =
@@ -9437,11 +9429,26 @@
   return net_error_code != net::OK || has_history_url_for_data_url;
 }
 
+bool ShouldVerify(const std::string& param) {
+#if DCHECK_IS_ON()
+  return true;
+#else
+  return GetFieldTrialParamByFeatureAsBool(features::kVerifyDidCommitParams,
+                                           param, false);
+#endif
+}
+
 void RenderFrameHostImpl::
     VerifyThatBrowserAndRendererCalculatedDidCommitParamsMatch(
         NavigationRequest* request,
         const mojom::DidCommitProvisionalLoadParams& params,
         bool is_same_document_navigation) {
+#if !DCHECK_IS_ON()
+  // Only check for the flag if DCHECK is not enabled, so that we will always
+  // verify the params for tests.
+  if (!base::FeatureList::IsEnabled(features::kVerifyDidCommitParams))
+    return;
+#endif
   // Check if these values from DidCommitProvisionalLoadParams sent by the
   // renderer can be calculated entirely in the browser side:
   // - intended_as_new_entry
@@ -9474,12 +9481,18 @@
       is_same_document_navigation ? is_overriding_user_agent_
                                   : (request->IsOverridingUserAgent() &&
                                      frame_tree_node_->IsMainFrame());
-  if (request->commit_params().intended_as_new_entry ==
-          params.intended_as_new_entry &&
-      request->common_params().method == params.method &&
-      browser_url_is_unreachable == params.url_is_unreachable &&
-      base_url_expectations_match && browser_post_id == params.post_id &&
-      browser_is_overriding_user_agent == params.is_overriding_user_agent) {
+
+  if ((!ShouldVerify("intended_as_new_entry") ||
+       request->commit_params().intended_as_new_entry ==
+           params.intended_as_new_entry) &&
+      (!ShouldVerify("method") ||
+       request->common_params().method == params.method) &&
+      (!ShouldVerify("url_is_unreachable") ||
+       browser_url_is_unreachable == params.url_is_unreachable) &&
+      (!ShouldVerify("base_url") || base_url_expectations_match) &&
+      (!ShouldVerify("post_id") || browser_post_id == params.post_id) &&
+      (!ShouldVerify("is_overriding_user_agent") ||
+       browser_is_overriding_user_agent == params.is_overriding_user_agent)) {
     return;
   }
 
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h
index f492d77f..eaa2f25 100644
--- a/content/browser/renderer_host/render_frame_host_impl.h
+++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -2185,7 +2185,8 @@
   // committed navigation.
   network::mojom::URLLoaderFactoryParamsPtr
   CreateURLLoaderFactoryParamsForMainWorld(
-      NavigationRequest* navigation_request);
+      NavigationRequest* navigation_request,
+      base::StringPiece debug_tag);
 
   // Creates a Network Service-backed factory from appropriate |NetworkContext|
   // and sets a connection error handler to trigger
diff --git a/content/browser/renderer_host/render_frame_host_manager_browsertest.cc b/content/browser/renderer_host/render_frame_host_manager_browsertest.cc
index bb9a567..477aa82d 100644
--- a/content/browser/renderer_host/render_frame_host_manager_browsertest.cc
+++ b/content/browser/renderer_host/render_frame_host_manager_browsertest.cc
@@ -7732,6 +7732,15 @@
   }
 }
 
+#if defined(OS_CHROMEOS)
+// Quite flaky: https://crbug.com/1156218
+#define MAYBE_StorageModificationAfterPagehideHistogram \
+  DISABLED_StorageModificationAfterPagehideHistogram
+#else
+#define MAYBE_StorageModificationAfterPagehideHistogram \
+  StorageModificationAfterPagehideHistogram
+#endif
+
 IN_PROC_BROWSER_TEST_P(ProactivelySwapBrowsingInstancesSameSiteTest,
                        StorageModificationAfterPagehideHistogram) {
   ASSERT_TRUE(embedded_test_server()->Start());
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.cc b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
index ab41f73..bbb381a6 100644
--- a/content/browser/renderer_host/render_widget_host_view_child_frame.cc
+++ b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
@@ -500,9 +500,7 @@
     DCHECK(!is_scroll_sequence_bubbling_);
     is_scroll_sequence_bubbling_ =
         ack_result == blink::mojom::InputEventResultState::kNotConsumed ||
-        ack_result == blink::mojom::InputEventResultState::kNoConsumerExists ||
-        ack_result ==
-            blink::mojom::InputEventResultState::kConsumedShouldBubble;
+        ack_result == blink::mojom::InputEventResultState::kNoConsumerExists;
   }
 
   if (is_scroll_sequence_bubbling_ &&
diff --git a/content/browser/service_worker/embedded_worker_instance.cc b/content/browser/service_worker/embedded_worker_instance.cc
index b7d1f5c..5fe54ef7 100644
--- a/content/browser/service_worker/embedded_worker_instance.cc
+++ b/content/browser/service_worker/embedded_worker_instance.cc
@@ -1140,7 +1140,8 @@
           net::IsolationInfo::Create(net::IsolationInfo::RequestType::kOther,
                                      origin, origin,
                                      net::SiteForCookies::FromOrigin(origin)),
-          std::move(coep_reporter));
+          std::move(coep_reporter),
+          "EmbeddedWorkerInstance::CreateFactoryBundlesOnUI");
   bool bypass_redirect_checks = false;
 
   DCHECK(factory_type ==
diff --git a/content/browser/service_worker/service_worker_fetch_dispatcher_browsertest.cc b/content/browser/service_worker/service_worker_fetch_dispatcher_browsertest.cc
index 5836c0a..aab6acc 100644
--- a/content/browser/service_worker/service_worker_fetch_dispatcher_browsertest.cc
+++ b/content/browser/service_worker/service_worker_fetch_dispatcher_browsertest.cc
@@ -241,8 +241,9 @@
 // This is the timeout case that the lifetime of a fetch event is shorter than
 // the response finishes. ServiceWorkerFetchDispatcher::OnFetchEventFinished is
 // called first.
+// Disabled due to flakes; see https://crbug.com/1156091.
 IN_PROC_BROWSER_TEST_F(ServiceWorkerFetchDispatcherBrowserTest,
-                       FetchEventTimeout) {
+                       DISABLED_FetchEventTimeout) {
   StartServerAndNavigateToSetup();
   ServiceWorkerVersion* version = CreateVersion();
 
diff --git a/content/browser/service_worker/service_worker_offline_capability_check_browsertest.cc b/content/browser/service_worker/service_worker_offline_capability_check_browsertest.cc
index d698daf..1e28117 100644
--- a/content/browser/service_worker/service_worker_offline_capability_check_browsertest.cc
+++ b/content/browser/service_worker/service_worker_offline_capability_check_browsertest.cc
@@ -12,6 +12,7 @@
 #include "base/task/post_task.h"
 #include "base/task/task_traits.h"
 #include "base/test/bind.h"
+#include "build/build_config.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
 #include "content/browser/service_worker/service_worker_fetch_dispatcher.h"
 #include "content/browser/service_worker/service_worker_version.h"
@@ -646,8 +647,15 @@
 
 // Sites with a service worker are identified as supporting offline capability
 // only when it returns a valid response in the offline mode.
+#if defined(OS_WIN)
+// Flaky on Win7: https://crbug.com/1156081
+#define MAYBE_CheckOfflineCapability DISABLED_CheckOfflineCapability
+#else
+#define MAYBE_CheckOfflineCapability CheckOfflineCapability
+#endif
+
 IN_PROC_BROWSER_TEST_F(ServiceWorkerOfflineCapabilityCheckBrowserTest,
-                       CheckOfflineCapability) {
+                       MAYBE_CheckOfflineCapability) {
   EXPECT_TRUE(NavigateToURL(shell(),
                             embedded_test_server()->GetURL(
                                 "/service_worker/create_service_worker.html")));
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc
index e6804bf..05595dd 100644
--- a/content/browser/site_per_process_browsertest.cc
+++ b/content/browser/site_per_process_browsertest.cc
@@ -15893,160 +15893,6 @@
   EXPECT_EQ(second_url, web_contents()->GetMainFrame()->GetLastCommittedURL());
 }
 
-class SitePerProcessFeaturePolicySandboxTest
-    : public SitePerProcessFeaturePolicyBrowserTest {
- protected:
-  void SetUpCommandLine(base::CommandLine* command_line) override {
-    SitePerProcessFeaturePolicyBrowserTest::SetUpCommandLine(command_line);
-    feature_list_.InitAndEnableFeature(features::kFeaturePolicyForSandbox);
-  }
-
- private:
-  base::test::ScopedFeatureList feature_list_;
-};
-
-// Check that sandbox flags are correctly propagated to the browser from a
-// renderer which sets them via feature policy.
-IN_PROC_BROWSER_TEST_F(SitePerProcessFeaturePolicySandboxTest,
-                       SandboxFlagsCorrectlySentFromRenderer) {
-  EXPECT_TRUE(NavigateToURL(
-      shell(),
-      embedded_test_server()->GetURL(
-          "a.com",
-          "/cross_site_iframe_factory.html?a(b{sandbox-allow-scripts})")));
-  FrameTreeNode* root = web_contents()->GetFrameTree()->root();
-  network::mojom::WebSandboxFlags expected_flags =
-      network::mojom::WebSandboxFlags::kAll &
-      ~network::mojom::WebSandboxFlags::kScripts &
-      ~network::mojom::WebSandboxFlags::kAutomaticFeatures;
-  // Validate sandbox flags bit-by-bit. This is equivalent to an equality check
-  // when FeaturePolicyForSandbox is disabled, but when that feature is enabled,
-  // this will check the appropriate policy-controlled feature for each expected
-  // sandbox flag.
-  for (unsigned bit = 0; bit < sizeof(network::mojom::WebSandboxFlags) * 8;
-       bit++) {
-    network::mojom::WebSandboxFlags flag =
-        static_cast<network::mojom::WebSandboxFlags>(1 << bit);
-    if (static_cast<unsigned>(expected_flags) & (1 << bit)) {
-      EXPECT_TRUE(root->child_at(0)->current_frame_host()->IsSandboxed(flag));
-    } else {
-      EXPECT_FALSE(root->child_at(0)->current_frame_host()->IsSandboxed(flag));
-    }
-  }
-}
-
-IN_PROC_BROWSER_TEST_F(SitePerProcessFeaturePolicySandboxTest,
-                       SandboxFlagsCorrectlySetByFeaturePolicy) {
-  EXPECT_TRUE(NavigateToURL(
-      shell(),
-      embedded_test_server()->GetURL(
-          "a.com",
-          "/cross_site_iframe_factory.html?a(b{sandbox,allow-scripts})")));
-  FrameTreeNode* root = web_contents()->GetFrameTree()->root();
-  network::mojom::WebSandboxFlags expected_flags =
-      network::mojom::WebSandboxFlags::kAll &
-      ~network::mojom::WebSandboxFlags::kScripts &
-      ~network::mojom::WebSandboxFlags::kAutomaticFeatures;
-  // Validate sandbox flags bit-by-bit. This is equivalent to an equality check
-  // when FeaturePolicyForSandbox is disabled, but when that feature is enabled,
-  // this will check the appropriate policy-controlled feature for each expected
-  // sandbox flag.
-  for (int bit = 0; bit < 32; bit++) {
-    network::mojom::WebSandboxFlags flag =
-        static_cast<network::mojom::WebSandboxFlags>(1 << bit);
-    if (static_cast<unsigned>(expected_flags) & (1 << bit)) {
-      EXPECT_TRUE(root->child_at(0)->current_frame_host()->IsSandboxed(flag));
-    } else {
-      EXPECT_FALSE(root->child_at(0)->current_frame_host()->IsSandboxed(flag));
-    }
-  }
-}
-
-class FeaturePolicyPropagationToAuxiliaryBrowsingContextTest
-    : public SitePerProcessFeaturePolicySandboxTest,
-      public testing::WithParamInterface<std::tuple<
-          const char* /* Whether or not <iframe> is sandbox or can escape it */,
-          bool /* <iframe> same origin? */,
-          bool /* opened window same origin? */,
-          const char* /* window feature in window.open() */>> {};
-
-// This test verifies the correct propagation of FeaturePolicy from an *opener*
-// to the opened auxiliary browsing context. This test runs for both cross and
-// same origin frames.
-IN_PROC_BROWSER_TEST_P(FeaturePolicyPropagationToAuxiliaryBrowsingContextTest,
-                       PropagationForDifferentOrigins) {
-  EXPECT_TRUE(NavigateToURL(
-      shell(), embedded_test_server()->GetURL(
-                   "a.com", "/feature_policy_window_open_embedder.html")));
-  const GURL same_origin_child = embedded_test_server()->GetURL(
-      "a.com", "/feature_policy_window_open_embedded.html");
-  const GURL cross_origin_child = embedded_test_server()->GetURL(
-      "b.com", "/feature_policy_window_open_embedded.html");
-  const GURL cross_origin_window_url =
-      embedded_test_server()->GetURL("c.com", "/title1.html");
-  const GURL same_origin_window_url = GURL("about:blank");
-  const std::string kScriptCheckPolicy =
-      "document.featurePolicy.allowsFeature('sync-xhr')";
-  // Test parameters
-  const std::string iframe_type = std::get<0>(GetParam());
-  const std::string iframe_src =
-      (std::get<1>(GetParam()) ? same_origin_child : cross_origin_child).spec();
-  const std::string window_url =
-      (std::get<2>(GetParam()) ? same_origin_window_url
-                               : cross_origin_window_url)
-          .spec();
-  const std::string window_feature = std::get<3>(GetParam());
-  SCOPED_TRACE(testing::Message() << " <iframe> Type: " << iframe_type
-                                  << " <iframe> Source: " << iframe_src
-                                  << " window URL: " << window_url
-                                  << " window Feature: " << window_feature);
-  // TODO(ekaramad): Modify the test expectation once we resolve the following
-  // issues in feature policies:
-  //   - "rel='noopener'" might end up resetting the feature policies.
-  //   - A new feature to escape feature policies is introduced (similar to the
-  //     sandbox version "allow-popups-to-escape-sandbox".
-  // For now, only the sandbox-escaping case should be allowed to have a new
-  // (default) feature policy state.
-  bool expected_feature_state_in_auxiliary_browsing_context =
-      (iframe_type == "sandboxed-escaping");
-  ShellAddedObserver shell_added_observer;
-  ASSERT_TRUE(
-      ExecJs(shell(), JsReplace("test($1, $2, $3, $4)", iframe_type, iframe_src,
-                                window_url, window_feature)));
-  auto* new_shell = shell_added_observer.GetShell();
-  while (new_shell->web_contents()->GetLastCommittedURL() != GURL(window_url)) {
-    base::RunLoop run_loop;
-    base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-        FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout());
-    run_loop.Run();
-  }
-  ASSERT_TRUE(WaitForLoadStop(new_shell->web_contents()));
-  ASSERT_EQ(new_shell->web_contents()->GetLastCommittedURL(), window_url);
-  EXPECT_EQ(expected_feature_state_in_auxiliary_browsing_context,
-            EvalJs(new_shell, kScriptCheckPolicy));
-  bool browser_side_feature_state =
-      static_cast<RenderFrameHostImpl*>(
-          new_shell->web_contents()->GetMainFrame())
-          ->feature_policy()
-          ->IsFeatureEnabled(blink::mojom::FeaturePolicyFeature::kSyncXHR);
-  EXPECT_EQ(expected_feature_state_in_auxiliary_browsing_context,
-            browser_side_feature_state);
-  new_shell->Close();
-}
-
-INSTANTIATE_TEST_SUITE_P(SitePerProcess,
-                         FeaturePolicyPropagationToAuxiliaryBrowsingContextTest,
-                         testing::Combine(
-                             /* iframe_type */
-                             testing::ValuesIn({"sandboxed", "notsandboxed",
-                                                "sandboxed-escaping"}),
-                             /* iframe_same_origin */
-                             testing::Bool(),
-                             /* window_same_origin */
-                             testing::Bool(),
-                             /* window feature */
-                             testing::ValuesIn({"", "noopener"})));
-
 enum class InnerWebContentsAttachChildFrameOriginType {
   kSameOriginAboutBlank,
   kSameOriginOther,
diff --git a/content/browser/url_loader_factory_params_helper.cc b/content/browser/url_loader_factory_params_helper.cc
index 1291236..afee101 100644
--- a/content/browser/url_loader_factory_params_helper.cc
+++ b/content/browser/url_loader_factory_params_helper.cc
@@ -46,7 +46,8 @@
     bool allow_universal_access_from_file_urls,
     bool is_for_isolated_world,
     mojo::PendingRemote<network::mojom::CookieAccessObserver> cookie_observer,
-    network::mojom::TrustTokenRedemptionPolicy trust_token_redemption_policy) {
+    network::mojom::TrustTokenRedemptionPolicy trust_token_redemption_policy,
+    base::StringPiece debug_tag) {
   DCHECK(process);
 
   // "chrome-guest://..." is never used as a main or isolated world origin.
@@ -91,6 +92,8 @@
 
   params->cookie_observer = std::move(cookie_observer);
 
+  params->debug_tag = debug_tag.as_string();
+
   return params;
 }
 
@@ -105,7 +108,8 @@
     mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
         coep_reporter,
     RenderProcessHost* process,
-    network::mojom::TrustTokenRedemptionPolicy trust_token_redemption_policy) {
+    network::mojom::TrustTokenRedemptionPolicy trust_token_redemption_policy,
+    base::StringPiece debug_tag) {
   return CreateParams(
       process,
       frame_origin,  // origin
@@ -117,7 +121,8 @@
           ->GetOrCreateWebPreferences()
           .allow_universal_access_from_file_urls,
       false,  // is_for_isolated_world
-      frame->CreateCookieAccessObserver(), trust_token_redemption_policy);
+      frame->CreateCookieAccessObserver(), trust_token_redemption_policy,
+      debug_tag);
 }
 
 // static
@@ -140,7 +145,8 @@
           ->GetOrCreateWebPreferences()
           .allow_universal_access_from_file_urls,
       true,  // is_for_isolated_world
-      frame->CreateCookieAccessObserver(), trust_token_redemption_policy);
+      frame->CreateCookieAccessObserver(), trust_token_redemption_policy,
+      "ParamHelper::CreateForIsolatedWorld");
 }
 
 network::mojom::URLLoaderFactoryParamsPtr
@@ -164,7 +170,8 @@
                           .allow_universal_access_from_file_urls,
                       false,  // is_for_isolated_world
                       frame->CreateCookieAccessObserver(),
-                      network::mojom::TrustTokenRedemptionPolicy::kForbid);
+                      network::mojom::TrustTokenRedemptionPolicy::kForbid,
+                      "ParamHelper::CreateForPrefetch");
 }
 
 // static
@@ -174,7 +181,8 @@
     const url::Origin& request_initiator,
     const net::IsolationInfo& isolation_info,
     mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
-        coep_reporter) {
+        coep_reporter,
+    base::StringPiece debug_tag) {
   return CreateParams(
       process,
       request_initiator,  // origin
@@ -192,7 +200,7 @@
       // false in non-Document contexts, no worker should ever
       // execute a trust token redemption or signing operation,
       // as these operations require the Feature Policy feature.
-      network::mojom::TrustTokenRedemptionPolicy::kForbid);
+      network::mojom::TrustTokenRedemptionPolicy::kForbid, debug_tag);
 }
 
 // static
@@ -224,7 +232,8 @@
       mojo::NullRemote(),  // coep_reporter
       false,               // allow_universal_access_from_file_urls
       false,               // is_for_isolated_world
-      mojo::NullRemote(), network::mojom::TrustTokenRedemptionPolicy::kForbid);
+      mojo::NullRemote(), network::mojom::TrustTokenRedemptionPolicy::kForbid,
+      "ParamHelper::CreateForRendererProcess");
 }
 
 }  // namespace content
diff --git a/content/browser/url_loader_factory_params_helper.h b/content/browser/url_loader_factory_params_helper.h
index 619cb23..4a8d303a 100644
--- a/content/browser/url_loader_factory_params_helper.h
+++ b/content/browser/url_loader_factory_params_helper.h
@@ -51,7 +51,8 @@
       mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
           coep_reporter,
       RenderProcessHost* process,
-      network::mojom::TrustTokenRedemptionPolicy trust_token_redemption_policy);
+      network::mojom::TrustTokenRedemptionPolicy trust_token_redemption_policy,
+      base::StringPiece debug_tag);
 
   // Creates URLLoaderFactoryParams to be used by |isolated_world_origin| hosted
   // within the |frame|.
@@ -73,7 +74,8 @@
       const url::Origin& request_initiator,
       const net::IsolationInfo& isolation_info,
       mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
-          coep_reporter);
+          coep_reporter,
+      base::StringPiece debug_tag);
 
   // TODO(kinuko, lukasza): https://crbug.com/1114822: Remove, once all
   // URLLoaderFactories vended to a renderer process are associated with a
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 16d2127..8a50e72 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -1011,25 +1011,12 @@
   if (opener) {
     network::mojom::WebSandboxFlags opener_flags =
         opener_rfh->active_sandbox_flags();
-    const network::mojom::WebSandboxFlags inherit_flag =
-        network::mojom::WebSandboxFlags::kPropagatesToAuxiliaryBrowsingContexts;
-    bool sandbox_propagates_to_auxilary_context =
-        (opener_flags & inherit_flag) == inherit_flag;
-    if (sandbox_propagates_to_auxilary_context)
+    if (opener_rfh->IsSandboxed(network::mojom::WebSandboxFlags::
+                                    kPropagatesToAuxiliaryBrowsingContexts)) {
       new_root->SetPendingFramePolicy({opener_flags,
                                        {} /* container_policy */,
                                        {} /* required_document_policy */});
-    if (opener_flags == network::mojom::WebSandboxFlags::kNone ||
-        sandbox_propagates_to_auxilary_context) {
-      // TODO(ekaramad, iclelland): Do not propagate feature policies from non-
-      // sandboxed disowned openers (rel=noopener).
-      // If the current page is not sandboxed, or if the sandbox is to propagate
-      // to the popups then opener's feature policy will apply to the new popup
-      // as well.
-      new_root->SetOpenerFeaturePolicyState(
-          opener_rfh->feature_policy()->GetFeatureState());
     }
-
     new_root->SetInitialPopupURL(params.initial_popup_url);
     new_root->SetPopupCreatorOrigin(opener_rfh->GetLastCommittedOrigin());
   }
diff --git a/content/browser/web_contents/web_contents_impl_browsertest.cc b/content/browser/web_contents/web_contents_impl_browsertest.cc
index 9a29503..5ce9825 100644
--- a/content/browser/web_contents/web_contents_impl_browsertest.cc
+++ b/content/browser/web_contents/web_contents_impl_browsertest.cc
@@ -3522,7 +3522,9 @@
   EXPECT_EQ(main_frame, web_contents->current_fullscreen_frame_);
 }
 
-IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, PropagateFullscreenOptions) {
+// Disabled due to flakiness: https://crbug.com/1154612.
+IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest,
+                       DISABLED_PropagateFullscreenOptions) {
   ASSERT_TRUE(embedded_test_server()->Start());
   WebContentsImpl* web_contents =
       static_cast<WebContentsImpl*>(shell()->web_contents());
diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc
index 00370b2..f53287c 100644
--- a/content/browser/web_contents/web_contents_view_aura.cc
+++ b/content/browser/web_contents/web_contents_view_aura.cc
@@ -6,6 +6,7 @@
 
 #include <stddef.h>
 #include <stdint.h>
+#include <memory>
 #include <string>
 #include <utility>
 
@@ -1037,6 +1038,8 @@
 
   auto data(std::make_unique<ui::OSExchangeData>(
       std::move(provider)));  // takes ownership of |provider|.
+  data->SetSource(std::make_unique<ui::DataTransferEndpoint>(
+      web_contents_->GetFocusedFrame()->GetLastCommittedOrigin()));
 
   if (!image.isNull())
     data->provider().SetDragImage(image, image_offset);
diff --git a/content/browser/web_contents/web_contents_view_aura.h b/content/browser/web_contents/web_contents_view_aura.h
index 62fb2b9..2ee6cbf 100644
--- a/content/browser/web_contents/web_contents_view_aura.h
+++ b/content/browser/web_contents/web_contents_view_aura.h
@@ -103,6 +103,7 @@
   FRIEND_TEST_ALL_PREFIXES(WebContentsViewAuraTest, DragDropOnOopif);
   FRIEND_TEST_ALL_PREFIXES(WebContentsViewAuraTest, OnPerformDrop_DeepScanOK);
   FRIEND_TEST_ALL_PREFIXES(WebContentsViewAuraTest, OnPerformDrop_DeepScanBad);
+  FRIEND_TEST_ALL_PREFIXES(WebContentsViewAuraTest, StartDragging);
 
   class WindowObserver;
 
diff --git a/content/browser/web_contents/web_contents_view_aura_unittest.cc b/content/browser/web_contents/web_contents_view_aura_unittest.cc
index f314954..d9df069 100644
--- a/content/browser/web_contents/web_contents_view_aura_unittest.cc
+++ b/content/browser/web_contents/web_contents_view_aura_unittest.cc
@@ -12,6 +12,7 @@
 #include "base/macros.h"
 #include "base/optional.h"
 #include "base/run_loop.h"
+#include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_command_line.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
@@ -22,9 +23,11 @@
 #include "content/public/test/test_renderer_host.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/aura/client/aura_constants.h"
+#include "ui/aura/client/drag_drop_client.h"
 #include "ui/aura/test/test_windows.h"
 #include "ui/aura/test/window_test_api.h"
 #include "ui/aura/window.h"
+#include "ui/base/data_transfer_policy/data_transfer_endpoint.h"
 #include "ui/base/dragdrop/drag_drop_types.h"
 #include "ui/base/dragdrop/drop_target_event.h"
 #include "ui/base/dragdrop/os_exchange_data.h"
@@ -67,6 +70,32 @@
   DISALLOW_COPY_AND_ASSIGN(RunCallbackOnActivation);
 };
 
+class TestDragDropClient : public aura::client::DragDropClient {
+ public:
+  // aura::client::DragDropClient:
+  int StartDragAndDrop(std::unique_ptr<ui::OSExchangeData> data,
+                       aura::Window* root_window,
+                       aura::Window* source_window,
+                       const gfx::Point& screen_location,
+                       int operation,
+                       ui::mojom::DragEventSource source) override {
+    drag_in_progress_ = true;
+    drag_drop_data_ = std::move(data);
+    return 1;
+  }
+  void DragCancel() override { drag_in_progress_ = false; }
+  bool IsDragDropInProgress() override { return drag_in_progress_; }
+  void AddObserver(aura::client::DragDropClientObserver* observer) override {}
+  void RemoveObserver(aura::client::DragDropClientObserver* observer) override {
+  }
+
+  ui::OSExchangeData* GetDragDropData() { return drag_drop_data_.get(); }
+
+ private:
+  bool drag_in_progress_ = false;
+  std::unique_ptr<ui::OSExchangeData> drag_drop_data_ = nullptr;
+};
+
 }  // namespace
 
 class WebContentsViewAuraTest : public RenderViewHostTestHarness {
@@ -562,4 +591,37 @@
 }
 #endif
 
-}  // namespace content
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+
+TEST_F(WebContentsViewAuraTest, StartDragging) {
+  const char kGmailUrl[] = "http://mail.google.com/";
+  NavigateAndCommit(GURL(kGmailUrl));
+  FocusWebContentsOnMainFrame();
+
+  TestDragDropClient drag_drop_client;
+  aura::client::SetDragDropClient(root_window(), &drag_drop_client);
+
+  WebContentsViewAura* view = GetView();
+  // This condition is needed to avoid calling WebContentsViewAura::EndDrag
+  // which will result NOTREACHED being called in
+  // `RenderWidgetHostViewBase::TransformPointToCoordSpaceForView`.
+  view->drag_in_progress_ = true;
+
+  DropData drop_data;
+  drop_data.text.emplace(base::UTF8ToUTF16("Hello World!"));
+  view->StartDragging(drop_data, blink::DragOperationsMask::kDragOperationNone,
+                      gfx::ImageSkia(), gfx::Vector2d(),
+                      blink::mojom::DragEventSourceInfo(),
+                      RenderWidgetHostImpl::From(rvh()->GetWidget()));
+
+  ui::OSExchangeData* exchange_data = drag_drop_client.GetDragDropData();
+  EXPECT_TRUE(exchange_data);
+  EXPECT_TRUE(exchange_data->GetSource());
+  EXPECT_TRUE(exchange_data->GetSource()->IsUrlType());
+  EXPECT_TRUE(exchange_data->GetSource()->origin()->IsSameOriginWith(
+      url::Origin::Create(GURL(kGmailUrl))));
+}
+
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+
+}  // namespace content
\ No newline at end of file
diff --git a/content/browser/worker_host/dedicated_worker_host.cc b/content/browser/worker_host/dedicated_worker_host.cc
index a4f72e1..28bc654 100644
--- a/content/browser/worker_host/dedicated_worker_host.cc
+++ b/content/browser/worker_host/dedicated_worker_host.cc
@@ -336,7 +336,8 @@
           ancestor_render_frame_host->IsFeatureEnabled(
               blink::mojom::FeaturePolicyFeature::kTrustTokenRedemption)
               ? network::mojom::TrustTokenRedemptionPolicy::kPotentiallyPermit
-              : network::mojom::TrustTokenRedemptionPolicy::kForbid);
+              : network::mojom::TrustTokenRedemptionPolicy::kForbid,
+          "DedicatedWorkerHost::CreateNetworkFactoryForSubresources");
   GetContentClient()->browser()->WillCreateURLLoaderFactory(
       worker_process_host_->GetBrowserContext(),
       /*frame=*/nullptr, worker_process_host_->GetID(),
@@ -486,6 +487,7 @@
     StoragePartitionImpl* storage_partition_impl) {
   auto params = network::mojom::URLLoaderFactoryParams::New();
   params->process_id = worker_process_host_->GetID();
+  params->debug_tag = "DedicatedWorkerHost::ObserveNetworkServiceCrash";
   network_service_connection_error_handler_holder_.reset();
   storage_partition_impl->GetNetworkContext()->CreateURLLoaderFactory(
       network_service_connection_error_handler_holder_
diff --git a/content/browser/worker_host/shared_worker_host.cc b/content/browser/worker_host/shared_worker_host.cc
index dc559bca..59f5f31 100644
--- a/content/browser/worker_host/shared_worker_host.cc
+++ b/content/browser/worker_host/shared_worker_host.cc
@@ -318,7 +318,8 @@
           net::IsolationInfo::Create(net::IsolationInfo::RequestType::kOther,
                                      origin, origin,
                                      net::SiteForCookies::FromOrigin(origin)),
-          /*coep_reporter=*/mojo::NullRemote());
+          /*coep_reporter=*/mojo::NullRemote(),
+          /*debug_tag=*/"SharedWorkerHost::CreateNetworkFactoryForSubresource");
   return factory_params;
 }
 
diff --git a/content/browser/worker_host/worker_script_fetch_initiator.cc b/content/browser/worker_host/worker_script_fetch_initiator.cc
index c7ba203..8fb3064 100644
--- a/content/browser/worker_host/worker_script_fetch_initiator.cc
+++ b/content/browser/worker_host/worker_script_fetch_initiator.cc
@@ -340,7 +340,8 @@
     network::mojom::URLLoaderFactoryParamsPtr factory_params =
         URLLoaderFactoryParamsHelper::CreateForWorker(
             factory_process, request_initiator, trusted_isolation_info,
-            /*coep_reporter=*/mojo::NullRemote());
+            /*coep_reporter=*/mojo::NullRemote(),
+            /*debug_tag=*/"WorkerScriptFetchInitiator::CreateScriptLoader");
 
     mojo::PendingReceiver<network::mojom::URLLoaderFactory>
         default_factory_receiver =
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
index b917609..2cbc59a 100644
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -254,7 +254,6 @@
     {wf::EnableCacheInlineScriptCode, features::kCacheInlineScriptCode},
     {wf::EnableExperimentalProductivityFeatures,
      features::kExperimentalProductivityFeatures},
-    {wf::EnableFeaturePolicyForSandbox, features::kFeaturePolicyForSandbox},
     {wf::EnableAccessibilityExposeDisplayNone,
      features::kEnableAccessibilityExposeDisplayNone},
     {wf::EnableAccessibilityExposeHTMLElement,
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h
index 2bf9e3c..9daff47 100644
--- a/content/common/frame_messages.h
+++ b/content/common/frame_messages.h
@@ -207,7 +207,6 @@
   IPC_STRUCT_TRAITS_MEMBER(feature_policy_header)
   IPC_STRUCT_TRAITS_MEMBER(active_sandbox_flags)
   IPC_STRUCT_TRAITS_MEMBER(frame_policy)
-  IPC_STRUCT_TRAITS_MEMBER(opener_feature_state)
   IPC_STRUCT_TRAITS_MEMBER(accumulated_csp_headers)
   IPC_STRUCT_TRAITS_MEMBER(scope)
   IPC_STRUCT_TRAITS_MEMBER(insecure_request_policy)
diff --git a/content/common/frame_replication_state.h b/content/common/frame_replication_state.h
index f90dde3f..3c8c482 100644
--- a/content/common/frame_replication_state.h
+++ b/content/common/frame_replication_state.h
@@ -104,10 +104,6 @@
   // frame.
   blink::FramePolicy frame_policy;
 
-  // The state of feature policies in the opener browsing context. This field is
-  // only relevant for a root FrameTreeNode.
-  blink::FeaturePolicyFeatureState opener_feature_state;
-
   // Accumulated CSP headers - gathered from http headers, <meta> elements,
   // parent frames (in case of about:blank frames).
   std::vector<network::mojom::ContentSecurityPolicyHeader>
diff --git a/content/common/input/input_event_ack_state.cc b/content/common/input/input_event_ack_state.cc
index be8ea3fc..281fcce 100644
--- a/content/common/input/input_event_ack_state.cc
+++ b/content/common/input/input_event_ack_state.cc
@@ -17,8 +17,6 @@
       return "CONSUMED";
     case blink::mojom::InputEventResultState::kNotConsumed:
       return "NOT_CONSUMED";
-    case blink::mojom::InputEventResultState::kConsumedShouldBubble:
-      return "CONSUMED_SHOULD_BUBBLE";
     case blink::mojom::InputEventResultState::kNoConsumerExists:
       return "NO_CONSUMER_EXISTS";
     case blink::mojom::InputEventResultState::kIgnored:
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
index eda03a2..6fae5067 100644
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -239,11 +239,6 @@
 const base::Feature kFeaturePolicyForClientHints{
     "FeaturePolicyForClientHints", base::FEATURE_ENABLED_BY_DEFAULT};
 
-// When enabled Feature Policy propagation is similar to sandbox flags and,
-// sandbox flags are implemented on top of Feature Policy.
-const base::Feature kFeaturePolicyForSandbox{"FeaturePolicyForSandbox",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
-
 // Controls whether or not First Scroll Latency will be measured and reported.
 // First Scroll Latency (tracking bug: crbug.com/922980) measures, for the
 // first scroll of a navigation, the latency between the user's input and the
@@ -725,6 +720,11 @@
 const base::Feature kUserAgentClientHint{"UserAgentClientHint",
                                          base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Enables comparing browser and renderer's DidCommitProvisionalLoadParams in
+// RenderFrameHostImpl::VerifyThatBrowserAndRendererCalculatedDidCommitParamsMatch.
+const base::Feature kVerifyDidCommitParams{"VerifyDidCommitParams",
+                                           base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Controls whether the <video>.getVideoPlaybackQuality() API is enabled.
 const base::Feature kVideoPlaybackQuality{"VideoPlaybackQuality",
                                           base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
index 676c765..0144b0c 100644
--- a/content/public/common/content_features.h
+++ b/content/public/common/content_features.h
@@ -59,7 +59,6 @@
 CONTENT_EXPORT extern const base::Feature
     kExtraSafelistedRequestHeadersForOutOfBlinkCors;
 CONTENT_EXPORT extern const base::Feature kFeaturePolicyForClientHints;
-CONTENT_EXPORT extern const base::Feature kFeaturePolicyForSandbox;
 CONTENT_EXPORT extern const base::Feature kFirstScrollLatencyMeasurement;
 CONTENT_EXPORT extern const base::Feature kFontSrcLocalMatching;
 #if !defined(OS_ANDROID)
@@ -174,6 +173,7 @@
 CONTENT_EXPORT extern const base::Feature kUseFramePriorityInRenderProcessHost;
 CONTENT_EXPORT extern const base::Feature kUserActivationSameOriginVisibility;
 CONTENT_EXPORT extern const base::Feature kUserAgentClientHint;
+CONTENT_EXPORT extern const base::Feature kVerifyDidCommitParams;
 CONTENT_EXPORT extern const base::Feature kVideoPlaybackQuality;
 CONTENT_EXPORT extern const base::Feature kV8VmFuture;
 CONTENT_EXPORT extern const base::Feature kWebAppManifestDisplayOverride;
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 33e6dfc..059cb6d 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -1574,8 +1574,7 @@
       // This conversion is a little sad, as this often comes from a
       // WebString...
       WebString::FromUTF8(params->replicated_frame_state.name),
-      params->replicated_frame_state.frame_policy.sandbox_flags,
-      params->replicated_frame_state.opener_feature_state);
+      params->replicated_frame_state.frame_policy.sandbox_flags);
   if (params->has_committed_real_load)
     render_frame->frame_->SetCommittedFirstRealLoad();
 
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
index 4fc93f8..4a90d75a 100644
--- a/content/renderer/render_frame_proxy.cc
+++ b/content/renderer/render_frame_proxy.cc
@@ -383,8 +383,7 @@
   web_frame_->SetReplicatedInsecureNavigationsSet(
       state.insecure_navigations_set);
   web_frame_->SetReplicatedAdFrameType(state.ad_frame_type);
-  web_frame_->SetReplicatedFeaturePolicyHeaderAndOpenerPolicies(
-      state.feature_policy_header, state.opener_feature_state);
+  web_frame_->SetReplicatedFeaturePolicyHeader(state.feature_policy_header);
   if (state.has_active_user_gesture) {
     // TODO(crbug.com/1087963): This should be hearing about sticky activations
     // and setting those (as well as the active one?). But the call to
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
index 829ad39..4485505 100644
--- a/content/renderer/render_view_browsertest.cc
+++ b/content/renderer/render_view_browsertest.cc
@@ -1085,7 +1085,6 @@
       GetMainFrame(), popup_request, blink::WebWindowFeatures(), "foo",
       blink::kWebNavigationPolicyNewForegroundTab,
       network::mojom::WebSandboxFlags::kNone,
-      blink::FeaturePolicyFeatureState(),
       blink::AllocateSessionStorageNamespaceId(), consumed_user_gesture);
   auto popup_navigation_info = std::make_unique<blink::WebNavigationInfo>();
   popup_navigation_info->url_request = std::move(popup_request);
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 2024bbc..a4653c6 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -344,7 +344,6 @@
     const WebString& frame_name,
     WebNavigationPolicy policy,
     network::mojom::WebSandboxFlags sandbox_flags,
-    const blink::FeaturePolicyFeatureState& opener_feature_state,
     const blink::SessionStorageNamespaceId& session_storage_namespace_id,
     bool& consumed_user_gesture) {
   consumed_user_gesture = false;
@@ -451,8 +450,6 @@
       << "Session storage namespace must be populated.";
   view_params->replicated_frame_state.frame_policy.sandbox_flags =
       sandbox_flags;
-  view_params->replicated_frame_state.opener_feature_state =
-      opener_feature_state;
   view_params->replicated_frame_state.name = frame_name_utf8;
   view_params->devtools_main_frame_token = reply->devtools_main_frame_token;
   view_params->hidden = is_background_tab;
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h
index e89e36f..991582a 100644
--- a/content/renderer/render_view_impl.h
+++ b/content/renderer/render_view_impl.h
@@ -171,7 +171,6 @@
       const blink::WebString& frame_name,
       blink::WebNavigationPolicy policy,
       network::mojom::WebSandboxFlags sandbox_flags,
-      const blink::FeaturePolicyFeatureState& opener_feature_state,
       const blink::SessionStorageNamespaceId& session_storage_namespace_id,
       bool& consumed_user_gesture) override;
   blink::WebPagePopup* CreatePopup(blink::WebLocalFrame* creator) override;
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index becfd7b..b60fcb6 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -1070,6 +1070,10 @@
     "../browser/net/net_command_line_flags_browsertest.cc",
     "../browser/net/network_field_trial_browsertest.cc",
     "../browser/net/split_cache_browsertest.cc",
+    "../browser/net/trust_token_browsertest.cc",
+    "../browser/net/trust_token_browsertest.h",
+    "../browser/net/trust_token_origin_trial_browsertest.cc",
+    "../browser/net/trust_token_parameters_browsertest.cc",
     "../browser/net_info_browsertest.cc",
     "../browser/network_service_browsertest.cc",
     "../browser/network_service_restart_browsertest.cc",
@@ -1213,10 +1217,6 @@
     "../test/browser_test_utils_browsertest.cc",
     "../test/content_browser_test_test.cc",
     "../test/top_frame_population_browsertest.cc",
-    "../test/trust_token_browsertest.cc",
-    "../test/trust_token_browsertest.h",
-    "../test/trust_token_origin_trial_browsertest.cc",
-    "../test/trust_token_parameters_browsertest.cc",
     "../test/url_loader_interceptor_test.cc",
     "../test/webui_resource_browsertest.cc",
   ]
diff --git a/content/test/DEPS b/content/test/DEPS
index 8b7d263c..ec13541 100644
--- a/content/test/DEPS
+++ b/content/test/DEPS
@@ -27,7 +27,6 @@
   "+services/network/public/cpp",
   "+services/network/public/mojom",
   "+services/network/test",
-  "+services/network/trust_tokens/test",
   "+services/network/mock_mojo_dhcp_wpad_url_client.h",
   "+services/network/url_request_context_builder_mojo.h",
   "+services/proxy_resolver",
diff --git a/content/test/OWNERS b/content/test/OWNERS
index d1693eb..9df2903 100644
--- a/content/test/OWNERS
+++ b/content/test/OWNERS
@@ -21,9 +21,6 @@
 # Badging related files.
 per-file mock_badge_service.*=file://chrome/browser/badging/OWNERS
 
-# Trust Tokens-related files.
-per-file *trust_token*=file://services/network/trust_tokens/OWNERS
-
 # Fuchsia related files.
 per-file *fuchsia*=file://build/fuchsia/OWNERS
 
diff --git a/content/test/data/accessibility/aria/aria-owns-crash-expected-blink.txt b/content/test/data/accessibility/aria/aria-owns-crash-expected-blink.txt
index 4ec9650..9f5363fec 100644
--- a/content/test/data/accessibility/aria/aria-owns-crash-expected-blink.txt
+++ b/content/test/data/accessibility/aria/aria-owns-crash-expected-blink.txt
@@ -7,4 +7,5 @@
 ++++++++++++textField ignored invisible
 ++++++++++++listBox ignored invisible
 ++++++++++++++listItem ignored invisible
+++++++++++++++++listMarker ignored invisible name='• '
 ++++++++genericContainer ignored invisible
diff --git a/content/test/data/feature_policy_window_open_embedded.html b/content/test/data/feature_policy_window_open_embedded.html
deleted file mode 100644
index 7fb56760..0000000
--- a/content/test/data/feature_policy_window_open_embedded.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<title>Page that can opens a window to a given
-origin provided through postMessage.</title>
-<script>
-window.addEventListener(
-    "message", (e) => window.open(
-      e.data.window_url, "foo", e.data.window_feature));
-</script>
diff --git a/content/test/data/feature_policy_window_open_embedder.html b/content/test/data/feature_policy_window_open_embedder.html
deleted file mode 100644
index 2380b50..0000000
--- a/content/test/data/feature_policy_window_open_embedder.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!doctype html>
-<!-- Sandbox-ed <iframe> which does not allow escaping -->
-<iframe id="frame1" allow="sync-xhr 'none'"
-        sandbox="allow-scripts allow-popups">
-</iframe>
-<!-- Sandbox-ed <iframe> which allows escaping -->
-<iframe id="frame2" allow="sync-xhr 'none'"
-        sandbox="allow-scripts allow-popups allow-popups-to-escape-sandbox">
-</iframe>
-<!-- Not sandbox-ed <iframe> -->
-<iframe id="frame3" allow="sync-xhr 'none'"></iframe>
-<script>
-var frame1 = document.getElementById("frame1"),
-    frame2 = document.getElementById("frame2"),
-    frame3 = document.getElementById("frame3");
-
-var frame_map = {
-    "sandboxed": frame1,
-    "sandboxed-escaping": frame2,
-    "notsandboxed": frame3,
-};
-
-function test(iframe_type, iframe_src, window_url, window_feature) {
-  var iframe = frame_map[iframe_type];
-  iframe.src = iframe_src;
-  // Then message will trigger |window.open| to the url |window_url|.
-  iframe.addEventListener(
-        "load", () => iframe.contentWindow.postMessage(
-        {
-            window_url: window_url,
-            window_feature: window_feature
-        },
-        "*"));
-}
-</script>
diff --git a/content/web_test/renderer/web_view_test_proxy.cc b/content/web_test/renderer/web_view_test_proxy.cc
index 3b3d0e7..26e244ec 100644
--- a/content/web_test/renderer/web_view_test_proxy.cc
+++ b/content/web_test/renderer/web_view_test_proxy.cc
@@ -42,7 +42,6 @@
     const blink::WebString& frame_name,
     blink::WebNavigationPolicy policy,
     network::mojom::WebSandboxFlags sandbox_flags,
-    const blink::FeaturePolicyFeatureState& opener_feature_state,
     const blink::SessionStorageNamespaceId& session_storage_namespace_id,
     bool& consumed_user_gesture) {
   if (test_runner_->ShouldDumpNavigationPolicy()) {
@@ -60,10 +59,9 @@
         std::string("createView(") +
         web_test_string_util::URLDescription(request.Url()) + ")\n");
   }
-  return RenderViewImpl::CreateView(creator, request, features, frame_name,
-                                    policy, sandbox_flags, opener_feature_state,
-                                    session_storage_namespace_id,
-                                    consumed_user_gesture);
+  return RenderViewImpl::CreateView(
+      creator, request, features, frame_name, policy, sandbox_flags,
+      session_storage_namespace_id, consumed_user_gesture);
 }
 
 void WebViewTestProxy::PrintPage(blink::WebLocalFrame* frame) {
diff --git a/content/web_test/renderer/web_view_test_proxy.h b/content/web_test/renderer/web_view_test_proxy.h
index 3a075d6..a304f0e88 100644
--- a/content/web_test/renderer/web_view_test_proxy.h
+++ b/content/web_test/renderer/web_view_test_proxy.h
@@ -71,7 +71,6 @@
       const blink::WebString& frame_name,
       blink::WebNavigationPolicy policy,
       network::mojom::WebSandboxFlags sandbox_flags,
-      const blink::FeaturePolicyFeatureState&,
       const blink::SessionStorageNamespaceId& session_storage_namespace_id,
       bool& consumed_user_gesture) override;
   void PrintPage(blink::WebLocalFrame* frame) override;
diff --git a/docs/clang.md b/docs/clang.md
index 259560c1..ce7cca81 100644
--- a/docs/clang.md
+++ b/docs/clang.md
@@ -88,3 +88,15 @@
 trunk. Set `llvm_force_head_revision = true` in your args.gn if the clang you're
 trying to build with is closer to clang trunk than to Chromium's pinned clang
 (which `tools/clang/scripts/update.py --print-revision` prints).
+
+## Related documents
+
+* [Toolchain support](toolchain_support.md) gives an overview of clang
+  rolls, and documents when to revert clang rolls and how to file good
+  toolchain bugs.
+
+* [Updating clang](updating_clang.md) documents the mechanics of updating clang,
+  and which files are included in the default clang package.
+
+* [Clang Sheriffing](clang_sheriffing.md) contains instructions for how to debug
+  compiler bugs, for clang sheriffs.
diff --git a/docs/win_cross.md b/docs/win_cross.md
index 5319576..6d76c16 100644
--- a/docs/win_cross.md
+++ b/docs/win_cross.md
@@ -41,7 +41,7 @@
 If this fails with an error:
 
     Please follow the instructions at
-    https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md
+    https://chromium.googlesource.com/chromium/src/+/master/docs/win_cross.md
 
 then you may need to re-authenticate via:
 
diff --git a/fuchsia/engine/BUILD.gn b/fuchsia/engine/BUILD.gn
index 24ac07e..2a89607e8 100644
--- a/fuchsia/engine/BUILD.gn
+++ b/fuchsia/engine/BUILD.gn
@@ -311,6 +311,8 @@
     "browser/fake_semantic_tree.h",
     "browser/fake_semantics_manager.cc",
     "browser/fake_semantics_manager.h",
+    "browser/frame_impl_browser_test_base.cc",
+    "browser/frame_impl_browser_test_base.h",
     "browser/frame_impl_browsertest.cc",
     "browser/headless_browsertest.cc",
     "browser/media_browsertest.cc",
diff --git a/fuchsia/engine/browser/context_impl.cc b/fuchsia/engine/browser/context_impl.cc
index aad4f930..dc3c90a 100644
--- a/fuchsia/engine/browser/context_impl.cc
+++ b/fuchsia/engine/browser/context_impl.cc
@@ -51,15 +51,6 @@
   return allow_javascript_injection_;
 }
 
-fidl::InterfaceHandle<fuchsia::web::Frame>
-ContextImpl::CreateFrameForPopupWebContents(
-    std::unique_ptr<content::WebContents> web_contents) {
-  fidl::InterfaceHandle<fuchsia::web::Frame> frame_handle;
-  frames_.insert(std::make_unique<FrameImpl>(std::move(web_contents), this,
-                                             frame_handle.NewRequest()));
-  return frame_handle;
-}
-
 void ContextImpl::CreateFrame(
     fidl::InterfaceRequest<fuchsia::web::Frame> frame) {
   CreateFrameWithParams(fuchsia::web::CreateFrameParams(), std::move(frame));
@@ -68,11 +59,33 @@
 void ContextImpl::CreateFrameWithParams(
     fuchsia::web::CreateFrameParams params,
     fidl::InterfaceRequest<fuchsia::web::Frame> frame) {
+  // FrameImpl clones the params used to create it when creating popup Frames.
+  // Ensure the params can be cloned to avoid problems when handling popups.
+  // TODO(fxbug.dev/65750): Consider removing this restriction if clients
+  // become responsible for providing parameters for [each] popup.
+  fuchsia::web::CreateFrameParams cloned_params;
+  zx_status_t status = params.Clone(&cloned_params);
+  if (status != ZX_OK) {
+    ZX_LOG(ERROR, status) << "CreateFrameParams Clone() failed";
+    frame.Close(ZX_ERR_INVALID_ARGS);
+    return;
+  }
+
   // Create a WebContents to host the new Frame.
   content::WebContents::CreateParams create_params(browser_context_, nullptr);
   create_params.initially_hidden = true;
   auto web_contents = content::WebContents::Create(create_params);
 
+  CreateFrameForWebContents(std::move(web_contents), std::move(params),
+                            std::move(frame));
+}
+
+void ContextImpl::CreateFrameForWebContents(
+    std::unique_ptr<content::WebContents> web_contents,
+    fuchsia::web::CreateFrameParams params,
+    fidl::InterfaceRequest<fuchsia::web::Frame> frame_request) {
+  DCHECK(frame_request.is_valid());
+
   blink::web_pref::WebPreferences web_preferences =
       web_contents->GetOrCreateWebPreferences();
 
@@ -101,13 +114,14 @@
       params.has_enable_remote_debugging() && params.enable_remote_debugging();
   if (!devtools_controller_->OnFrameCreated(web_contents.get(),
                                             user_debugging_requested)) {
-    frame.Close(ZX_ERR_INVALID_ARGS);
+    frame_request.Close(ZX_ERR_INVALID_ARGS);
     return;
   }
 
   // Wrap the WebContents into a FrameImpl owned by |this|.
-  auto frame_impl = std::make_unique<FrameImpl>(std::move(web_contents), this,
-                                                std::move(frame));
+  auto frame_impl =
+      std::make_unique<FrameImpl>(std::move(web_contents), this,
+                                  std::move(params), std::move(frame_request));
   frames_.insert(std::move(frame_impl));
 }
 
diff --git a/fuchsia/engine/browser/context_impl.h b/fuchsia/engine/browser/context_impl.h
index 53b4218..1c31486 100644
--- a/fuchsia/engine/browser/context_impl.h
+++ b/fuchsia/engine/browser/context_impl.h
@@ -41,15 +41,22 @@
   // Tears down the Context, destroying any active Frames in the process.
   ~ContextImpl() final;
 
+  ContextImpl(const ContextImpl&) = delete;
+  ContextImpl& operator=(const ContextImpl&) = delete;
+
   // Removes and destroys the specified |frame|.
   void DestroyFrame(FrameImpl* frame);
 
   // Returns |true| if JS injection was enabled for this Context.
   bool IsJavaScriptInjectionAllowed();
 
-  // Registers a Frame originating from web content (i.e. a popup).
-  fidl::InterfaceHandle<fuchsia::web::Frame> CreateFrameForPopupWebContents(
-      std::unique_ptr<content::WebContents> web_contents);
+  // Creates a Frame with |params| for the |web_contents| and binds it to
+  // |frame_request|. The Frame will self-delete when |frame_request|
+  // disconnects.
+  void CreateFrameForWebContents(
+      std::unique_ptr<content::WebContents> web_contents,
+      fuchsia::web::CreateFrameParams params,
+      fidl::InterfaceRequest<fuchsia::web::Frame> frame_request);
 
   // Returns the DevTools controller for this Context.
   WebEngineDevToolsController* devtools_controller() const {
@@ -94,8 +101,6 @@
   // Tracks all active FrameImpl instances, so that we can request their
   // destruction when this ContextImpl is destroyed.
   std::set<std::unique_ptr<FrameImpl>, base::UniquePtrComparator> frames_;
-
-  DISALLOW_COPY_AND_ASSIGN(ContextImpl);
 };
 
 #endif  // FUCHSIA_ENGINE_BROWSER_CONTEXT_IMPL_H_
diff --git a/fuchsia/engine/browser/frame_impl.cc b/fuchsia/engine/browser/frame_impl.cc
index d470ef3c..76db66bf 100644
--- a/fuchsia/engine/browser/frame_impl.cc
+++ b/fuchsia/engine/browser/frame_impl.cc
@@ -16,6 +16,7 @@
 #include "base/json/json_writer.h"
 #include "base/metrics/user_metrics.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_piece.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "content/public/browser/browser_context.h"
@@ -245,9 +246,11 @@
 
 FrameImpl::FrameImpl(std::unique_ptr<content::WebContents> web_contents,
                      ContextImpl* context,
+                     fuchsia::web::CreateFrameParams params_for_popups,
                      fidl::InterfaceRequest<fuchsia::web::Frame> frame_request)
     : web_contents_(std::move(web_contents)),
       context_(context),
+      params_for_popups_(std::move(params_for_popups)),
       navigation_controller_(web_contents_.get()),
       log_level_(kLogSeverityUnreachable),
       url_request_rewrite_rules_manager_(web_contents_.get()),
@@ -448,12 +451,19 @@
   // The PopupFrameCreationInfo won't be needed anymore, so clear it out.
   popup->SetUserData(kPopupCreationInfo, nullptr);
 
-  popup_listener_->OnPopupFrameCreated(
-      context_->CreateFrameForPopupWebContents(std::move(popup)),
-      std::move(creation_info), [this] {
-        popup_ack_outstanding_ = false;
-        MaybeSendPopup();
-      });
+  // ContextImpl::CreateFrameInternal() verified that |params_for_popups_| can
+  // be cloned, so it cannot fail here.
+  fuchsia::web::CreateFrameParams params;
+  CHECK_EQ(ZX_OK, params_for_popups_.Clone(&params));
+
+  fidl::InterfaceHandle<fuchsia::web::Frame> frame_handle;
+  context_->CreateFrameForWebContents(std::move(popup), std::move(params),
+                                      frame_handle.NewRequest());
+  popup_listener_->OnPopupFrameCreated(std::move(frame_handle),
+                                       std::move(creation_info), [this] {
+                                         popup_ack_outstanding_ = false;
+                                         MaybeSendPopup();
+                                       });
   popup_ack_outstanding_ = true;
 }
 
diff --git a/fuchsia/engine/browser/frame_impl.h b/fuchsia/engine/browser/frame_impl.h
index 484b160..5994b4d 100644
--- a/fuchsia/engine/browser/frame_impl.h
+++ b/fuchsia/engine/browser/frame_impl.h
@@ -58,8 +58,11 @@
   static FrameImpl* FromRenderFrameHost(
       content::RenderFrameHost* render_frame_host);
 
+  // |params_for_popups| is saved and applied to popups created by content
+  // running in this Frame.
   FrameImpl(std::unique_ptr<content::WebContents> web_contents,
             ContextImpl* context,
+            fuchsia::web::CreateFrameParams params_for_popups,
             fidl::InterfaceRequest<fuchsia::web::Frame> frame_request);
   ~FrameImpl() override;
 
@@ -255,6 +258,9 @@
   const std::unique_ptr<content::WebContents> web_contents_;
   ContextImpl* const context_;
 
+  // Parameters applied to popups created by content running in this Frame.
+  const fuchsia::web::CreateFrameParams params_for_popups_;
+
   std::unique_ptr<FrameWindowTreeHost> window_tree_host_;
 
   std::unique_ptr<wm::FocusController> focus_controller_;
diff --git a/fuchsia/engine/browser/frame_impl_browser_test_base.cc b/fuchsia/engine/browser/frame_impl_browser_test_base.cc
new file mode 100644
index 0000000..beaf240
--- /dev/null
+++ b/fuchsia/engine/browser/frame_impl_browser_test_base.cc
@@ -0,0 +1,33 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "fuchsia/engine/browser/frame_impl_browser_test_base.h"
+
+#include "base/files/file_path.h"
+#include "fuchsia/engine/test/test_data.h"
+
+// TODO(crbug.com/1155378): Remove this and use default after updating tests in
+// frame_impl_browser_test_base.cc to use the appropriate base.
+FrameImplTestBase::FrameImplTestBase() {
+  set_test_server_root(base::FilePath(cr_fuchsia::kTestServerRoot));
+}
+
+fuchsia::web::FramePtr FrameImplTestBase::CreateFrame() {
+  return WebEngineBrowserTest::CreateFrame(nullptr);
+}
+
+void FrameImplTestBaseWithServer::SetUpOnMainThread() {
+  FrameImplTestBase::SetUpOnMainThread();
+
+  ASSERT_TRUE(test_server_handle_ =
+                  embedded_test_server()->StartAndReturnHandle());
+}
+
+FrameImplTestBaseWithServer::FrameImplTestBaseWithServer() {
+  set_test_server_root(base::FilePath(cr_fuchsia::kTestServerRoot));
+}
+
+fuchsia::web::FramePtr FrameImplTestBaseWithServer::CreateFrame() {
+  return WebEngineBrowserTest::CreateFrame(&navigation_listener_);
+}
\ No newline at end of file
diff --git a/fuchsia/engine/browser/frame_impl_browser_test_base.h b/fuchsia/engine/browser/frame_impl_browser_test_base.h
new file mode 100644
index 0000000..1e9347b
--- /dev/null
+++ b/fuchsia/engine/browser/frame_impl_browser_test_base.h
@@ -0,0 +1,48 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef FUCHSIA_ENGINE_BROWSER_FRAME_IMPL_BROWSER_TEST_BASE_H_
+#define FUCHSIA_ENGINE_BROWSER_FRAME_IMPL_BROWSER_TEST_BASE_H_
+
+#include "fuchsia/base/test_navigation_listener.h"
+#include "fuchsia/engine/test/web_engine_browser_test.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
+
+// Base test class used for testing FrameImpl and the WebEngine Frame FIDL
+// service
+class FrameImplTestBase : public cr_fuchsia::WebEngineBrowserTest {
+ public:
+  FrameImplTestBase(const FrameImplTestBase&) = delete;
+  FrameImplTestBase& operator=(const FrameImplTestBase&) = delete;
+
+ protected:
+  FrameImplTestBase();
+  ~FrameImplTestBase() override = default;
+
+  // Creates a Frame without a navigation listener attached.
+  virtual fuchsia::web::FramePtr CreateFrame();
+};
+
+// Base test class used for testing FrameImpl and the WebEngine Frame FIDL
+// service when loading URLs from a test server.
+class FrameImplTestBaseWithServer : public FrameImplTestBase {
+ public:
+  FrameImplTestBaseWithServer(const FrameImplTestBaseWithServer&) = delete;
+  FrameImplTestBaseWithServer& operator=(const FrameImplTestBaseWithServer&) =
+      delete;
+
+  void SetUpOnMainThread() override;
+
+ protected:
+  FrameImplTestBaseWithServer();
+  ~FrameImplTestBaseWithServer() override = default;
+
+  // Creates a Frame with |navigation_listener_| attached.
+  fuchsia::web::FramePtr CreateFrame() override;
+
+  cr_fuchsia::TestNavigationListener navigation_listener_;
+  net::test_server::EmbeddedTestServerHandle test_server_handle_;
+};
+
+#endif  // FUCHSIA_ENGINE_BROWSER_FRAME_IMPL_BROWSER_TEST_BASE_H_
diff --git a/fuchsia/engine/browser/frame_impl_browsertest.cc b/fuchsia/engine/browser/frame_impl_browsertest.cc
index e4eb392..835f37e 100644
--- a/fuchsia/engine/browser/frame_impl_browsertest.cc
+++ b/fuchsia/engine/browser/frame_impl_browsertest.cc
@@ -7,9 +7,10 @@
 #include <lib/sys/cpp/component_context.h>
 #include <lib/ui/scenic/cpp/view_token_pair.h>
 
+#include <string>
+
 #include "base/bind.h"
 #include "base/containers/span.h"
-#include "base/fuchsia/fuchsia_logging.h"
 #include "base/fuchsia/process_context.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
@@ -29,9 +30,8 @@
 #include "fuchsia/base/url_request_rewrite_test_util.h"
 #include "fuchsia/engine/browser/fake_semantics_manager.h"
 #include "fuchsia/engine/browser/frame_impl.h"
+#include "fuchsia/engine/browser/frame_impl_browser_test_base.h"
 #include "fuchsia/engine/switches.h"
-#include "fuchsia/engine/test/test_data.h"
-#include "fuchsia/engine/test/web_engine_browser_test.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "net/test/embedded_test_server/http_request.h"
 #include "net/test/embedded_test_server/http_response.h"
@@ -65,7 +65,7 @@
 const char kPage4Path[] = "/image.html";
 const char kPage4ImgPath[] = "/img.png";
 const char kDynamicTitlePath[] = "/dynamic_title.html";
-const char kPopupPath[] = "/popup_parent.html";
+const char kPopupParentPath[] = "/popup_parent.html";
 const char kPopupRedirectPath[] = "/popup_child.html";
 const char kPopupMultiplePath[] = "/popup_multiple.html";
 const char kVisibilityPath[] = "/visibility.html";
@@ -75,6 +75,11 @@
 const char kDataUrl[] =
     "data:text/html;base64,PGI+SGVsbG8sIHdvcmxkLi4uPC9iPg==";
 const int64_t kOnLoadScriptId = 0;
+const char kChildQueryParamName[] = "child_url";
+const char kPopupChildFile[] = "popup_child.html";
+const char kAutoplayFileAndQuery[] = "play_vp8.html?autoplay=1";
+const char kAutoPlayBlockedTitle[] = "blocked";
+const char kAutoPlaySuccessTitle[] = "playing";
 
 MATCHER_P(NavigationHandleUrlEquals,
           url,
@@ -106,19 +111,22 @@
 
 // Defines a suite of tests that exercise Frame-level functionality, such as
 // navigation commands and page events.
-class FrameImplTest : public cr_fuchsia::WebEngineBrowserTest {
+class FrameImplTest : public FrameImplTestBase {
  public:
-  FrameImplTest() {
-    set_test_server_root(base::FilePath(cr_fuchsia::kTestServerRoot));
-  }
-
+  FrameImplTest() = default;
   ~FrameImplTest() = default;
 
+  FrameImplTest(const FrameImplTest&) = delete;
+  FrameImplTest& operator=(const FrameImplTest&) = delete;
+
   MOCK_METHOD1(OnServeHttpRequest,
                void(const net::test_server::HttpRequest& request));
 
  protected:
   // Creates a Frame with |navigation_listener_| attached.
+  // TODO(crbug.com/1155378): Remove |navigation_listener_| and use the parent's
+  // implementation of this method after updating all tests to use the
+  // appropriate base.
   fuchsia::web::FramePtr CreateFrame() {
     return WebEngineBrowserTest::CreateFrame(&navigation_listener_);
   }
@@ -127,8 +135,6 @@
   FakeSemanticsManager fake_semantics_manager_;
 
   cr_fuchsia::TestNavigationListener navigation_listener_;
-
-  DISALLOW_COPY_AND_ASSIGN(FrameImplTest);
 };
 
 std::string GetDocumentVisibilityState(fuchsia::web::Frame* frame) {
@@ -2319,6 +2325,8 @@
  public:
   TestPopupListener() = default;
   ~TestPopupListener() override = default;
+  TestPopupListener(const TestPopupListener&) = delete;
+  TestPopupListener& operator=(const TestPopupListener&) = delete;
 
   void GetAndAckNextPopup(fuchsia::web::FramePtr* frame,
                           fuchsia::web::PopupFrameCreationInfo* creation_info) {
@@ -2354,64 +2362,151 @@
   OnPopupFrameCreatedCallback popup_ack_callback_;
 };
 
-IN_PROC_BROWSER_TEST_F(FrameImplTest, PopupWindow) {
-  net::test_server::EmbeddedTestServerHandle test_server_handle;
-  ASSERT_TRUE(test_server_handle =
-                  embedded_test_server()->StartAndReturnHandle());
-  GURL popup_url(embedded_test_server()->GetURL(kPopupPath));
+// TODO(crbug.com/1155378): Move these tests to their own file in a follow-up
+// CL.
+class FrameImplPopupTest : public FrameImplTestBaseWithServer {
+ public:
+  FrameImplPopupTest()
+      : popup_listener_binding_(&popup_listener_),
+        popup_nav_listener_binding_(&popup_nav_listener_) {}
+
+  ~FrameImplPopupTest() override = default;
+  FrameImplPopupTest(const FrameImplPopupTest&) = delete;
+  FrameImplPopupTest& operator=(const FrameImplPopupTest&) = delete;
+
+ protected:
+  // Builds a URL for the kPopupParentPath page to pop up a Frame with
+  // |child_file_and_query|. |child_file_and_query| may optionally include a
+  // query string.
+  GURL GetParentPageTestServerUrl(const char* child) const;
+
+  // Loads a page that autoplays video in a popup, populates the popup_*
+  // members, and returns its URL.
+  GURL LoadAutoPlayingPageInPopup(
+      fuchsia::web::CreateFrameParams parent_frame_params);
+
+  fuchsia::web::FramePtr popup_frame_;
+
+  TestPopupListener popup_listener_;
+  fidl::Binding<fuchsia::web::PopupFrameCreationListener>
+      popup_listener_binding_;
+
+  cr_fuchsia::TestNavigationListener popup_nav_listener_;
+  fidl::Binding<fuchsia::web::NavigationEventListener>
+      popup_nav_listener_binding_;
+};
+
+GURL FrameImplPopupTest::GetParentPageTestServerUrl(const char* child) const {
+  const std::string url = base::StringPrintf("%s?%s=%s", kPopupParentPath,
+                                             kChildQueryParamName, child);
+
+  return embedded_test_server()->GetURL(url);
+}
+
+GURL FrameImplPopupTest::LoadAutoPlayingPageInPopup(
+    fuchsia::web::CreateFrameParams parent_frame_params) {
+  GURL popup_parent_url = GetParentPageTestServerUrl(kAutoplayFileAndQuery);
+  GURL popup_child_url = embedded_test_server()->GetURL(
+      base::StringPrintf("/%s", kAutoplayFileAndQuery));
+
+  fuchsia::web::FramePtr parent_frame =
+      WebEngineBrowserTest::CreateFrameWithParams(
+          &navigation_listener_, std::move(parent_frame_params));
+
+  parent_frame->SetPopupFrameCreationListener(
+      popup_listener_binding_.NewBinding());
+
+  fuchsia::web::NavigationControllerPtr controller;
+  parent_frame->GetNavigationController(controller.NewRequest());
+  EXPECT_TRUE(cr_fuchsia::LoadUrlAndExpectResponse(controller.get(), {},
+                                                   popup_parent_url.spec()));
+
+  fuchsia::web::PopupFrameCreationInfo popup_info;
+  popup_listener_.GetAndAckNextPopup(&popup_frame_, &popup_info);
+  EXPECT_EQ(popup_info.initial_url(), popup_child_url);
+
+  popup_frame_->SetNavigationEventListener(
+      popup_nav_listener_binding_.NewBinding());
+
+  return popup_child_url;
+}
+
+IN_PROC_BROWSER_TEST_F(FrameImplPopupTest, PopupWindowRedirect) {
+  GURL popup_parent_url = GetParentPageTestServerUrl(kPopupChildFile);
   GURL popup_child_url(embedded_test_server()->GetURL(kPopupRedirectPath));
   GURL title1_url(embedded_test_server()->GetURL(kPage1Path));
   fuchsia::web::FramePtr frame = CreateFrame();
 
-  TestPopupListener popup_listener;
-  fidl::Binding<fuchsia::web::PopupFrameCreationListener>
-      popup_listener_binding(&popup_listener);
-  frame->SetPopupFrameCreationListener(popup_listener_binding.NewBinding());
+  frame->SetPopupFrameCreationListener(popup_listener_binding_.NewBinding());
 
   fuchsia::web::NavigationControllerPtr controller;
   frame->GetNavigationController(controller.NewRequest());
   EXPECT_TRUE(cr_fuchsia::LoadUrlAndExpectResponse(controller.get(), {},
-                                                   popup_url.spec()));
+                                                   popup_parent_url.spec()));
 
   // Verify the popup's initial URL, "popup_child.html".
-  fuchsia::web::FramePtr popup_frame;
   fuchsia::web::PopupFrameCreationInfo popup_info;
-  popup_listener.GetAndAckNextPopup(&popup_frame, &popup_info);
+  popup_listener_.GetAndAckNextPopup(&popup_frame_, &popup_info);
   EXPECT_EQ(popup_info.initial_url(), popup_child_url);
 
   // Verify that the popup eventually redirects to "title1.html".
-  cr_fuchsia::TestNavigationListener popup_nav_listener;
-  fidl::Binding<fuchsia::web::NavigationEventListener>
-      popup_nav_listener_binding(&popup_nav_listener);
-  popup_frame->SetNavigationEventListener(
-      popup_nav_listener_binding.NewBinding());
-  popup_nav_listener.RunUntilUrlAndTitleEquals(title1_url, kPage1Title);
+  popup_frame_->SetNavigationEventListener(
+      popup_nav_listener_binding_.NewBinding());
+  popup_nav_listener_.RunUntilUrlAndTitleEquals(title1_url, kPage1Title);
 }
 
-IN_PROC_BROWSER_TEST_F(FrameImplTest, MultiplePopups) {
-  net::test_server::EmbeddedTestServerHandle test_server_handle;
-  ASSERT_TRUE(test_server_handle =
-                  embedded_test_server()->StartAndReturnHandle());
-  GURL popup_url(embedded_test_server()->GetURL(kPopupMultiplePath));
+IN_PROC_BROWSER_TEST_F(FrameImplPopupTest, MultiplePopups) {
+  GURL popup_parent_url(embedded_test_server()->GetURL(kPopupMultiplePath));
   GURL title1_url(embedded_test_server()->GetURL(kPage1Path));
   GURL title2_url(embedded_test_server()->GetURL(kPage2Path));
   fuchsia::web::FramePtr frame = CreateFrame();
 
-  TestPopupListener popup_listener;
-  fidl::Binding<fuchsia::web::PopupFrameCreationListener>
-      popup_listener_binding(&popup_listener);
-  frame->SetPopupFrameCreationListener(popup_listener_binding.NewBinding());
+  frame->SetPopupFrameCreationListener(popup_listener_binding_.NewBinding());
 
   fuchsia::web::NavigationControllerPtr controller;
   frame->GetNavigationController(controller.NewRequest());
   EXPECT_TRUE(cr_fuchsia::LoadUrlAndExpectResponse(controller.get(), {},
-                                                   popup_url.spec()));
+                                                   popup_parent_url.spec()));
 
-  fuchsia::web::FramePtr popup_frame;
   fuchsia::web::PopupFrameCreationInfo popup_info;
-  popup_listener.GetAndAckNextPopup(&popup_frame, &popup_info);
+  popup_listener_.GetAndAckNextPopup(&popup_frame_, &popup_info);
   EXPECT_EQ(popup_info.initial_url(), title1_url);
 
-  popup_listener.GetAndAckNextPopup(&popup_frame, &popup_info);
+  popup_listener_.GetAndAckNextPopup(&popup_frame_, &popup_info);
   EXPECT_EQ(popup_info.initial_url(), title2_url);
 }
+
+// Verifies that the child popup Frame has the same default CreateFrameParams as
+// the parent Frame by verifying that autoplay is blocked in the child. This
+// mostly verifies that AutoPlaySucceedsis actually modifies behavior.
+IN_PROC_BROWSER_TEST_F(FrameImplPopupTest,
+                       PopupFrameHasSameCreateFrameParams_AutoplayBlocked) {
+  // The default autoplay_policy is REQUIRE_USER_ACTIVATION.
+  fuchsia::web::CreateFrameParams parent_frame_params;
+
+  // Load the page and wait for the popup Frame to be created.
+  GURL popup_child_url =
+      LoadAutoPlayingPageInPopup(std::move(parent_frame_params));
+
+  // Verify that the child does not autoplay media.
+  popup_nav_listener_.RunUntilUrlAndTitleEquals(popup_child_url,
+                                                kAutoPlayBlockedTitle);
+}
+
+// Verifies that the child popup Frame has the same CreateFrameParams as the
+// parent Frame by allowing autoplay in the parent's params and verifying that
+// autoplay succeeds in the child.
+IN_PROC_BROWSER_TEST_F(FrameImplPopupTest,
+                       PopupFrameHasSameCreateFrameParams_AutoplaySucceeds) {
+  // Set autoplay to always be allowed in the parent frame.
+  fuchsia::web::CreateFrameParams parent_frame_params;
+  parent_frame_params.set_autoplay_policy(fuchsia::web::AutoplayPolicy::ALLOW);
+
+  // Load the page and wait for the popup Frame to be created.
+  GURL popup_child_url =
+      LoadAutoPlayingPageInPopup(std::move(parent_frame_params));
+
+  // Verify that the child autoplays media.
+  popup_nav_listener_.RunUntilUrlAndTitleEquals(popup_child_url,
+                                                kAutoPlaySuccessTitle);
+}
diff --git a/fuchsia/engine/browser/navigation_controller_impl.cc b/fuchsia/engine/browser/navigation_controller_impl.cc
index 56663b5..987c8b4 100644
--- a/fuchsia/engine/browser/navigation_controller_impl.cc
+++ b/fuchsia/engine/browser/navigation_controller_impl.cc
@@ -5,6 +5,7 @@
 #include "fuchsia/engine/browser/navigation_controller_impl.h"
 
 #include "base/strings/strcat.h"
+#include "base/strings/string_piece.h"
 #include "base/strings/utf_string_conversions.h"
 #include "content/public/browser/navigation_entry.h"
 #include "content/public/browser/navigation_handle.h"
diff --git a/fuchsia/engine/test/data/popup_parent.html b/fuchsia/engine/test/data/popup_parent.html
index 0464808e..6a9161f0 100644
--- a/fuchsia/engine/test/data/popup_parent.html
+++ b/fuchsia/engine/test/data/popup_parent.html
@@ -2,7 +2,19 @@
   <head><title>Popup parent</title></head>
   <body>
     <script>
-      window.open('popup_child.html');
+      function getChildUrl(parentUrl) {
+        const search_string = "?child_url=";
+
+        let index = parentUrl.indexOf(search_string);
+        if (index <= 0) {
+          document.title = 'FAILED: No child URL specified'
+          return document.title;
+        }
+        
+        return parentUrl.substring(index + search_string.length);
+      }
+
+      window.open(getChildUrl(window.location.href));
     </script>
   </body>
 </html>
diff --git a/fuchsia/engine/web_engine_integration_test.cc b/fuchsia/engine/web_engine_integration_test.cc
index 18c2d9d4..8c3e511 100644
--- a/fuchsia/engine/web_engine_integration_test.cc
+++ b/fuchsia/engine/web_engine_integration_test.cc
@@ -2,8 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <fuchsia/mem/cpp/fidl.h>
+#include <zircon/rights.h>
+#include <zircon/types.h>
+
+#include <lib/zx/vmo.h>
+
 #include "fuchsia/base/fit_adapter.h"
 #include "fuchsia/base/frame_test_util.h"
+#include "fuchsia/base/mem_buffer_util.h"
 #include "fuchsia/base/result_receiver.h"
 #include "fuchsia/base/test_devtools_list_fetcher.h"
 #include "fuchsia/engine/web_engine_integration_test_base.h"
@@ -141,6 +148,38 @@
   CreateContextAndExpectError(std::move(create_params), ZX_ERR_INVALID_ARGS);
 }
 
+TEST_F(WebEngineIntegrationTest, CreateFrameWithUnclonableFrameParamsFails) {
+  CreateContext(DefaultContextParams());
+
+  zx_rights_t kReadRightsWithoutDuplicate =
+      ZX_RIGHT_TRANSFER | ZX_RIGHT_READ | ZX_RIGHT_MAP | ZX_RIGHT_GET_PROPERTY;
+
+  // Create a buffer and remove the ability clone it by changing its rights to
+  // not include ZX_RIGHT_DUPLICATE.
+  auto buffer = cr_fuchsia::MemBufferFromString("some data", "some name");
+  zx::vmo unclonable_readonly_vmo;
+  EXPECT_EQ(ZX_OK, buffer.vmo.duplicate(kReadRightsWithoutDuplicate,
+                                        &unclonable_readonly_vmo));
+  buffer.vmo = std::move(unclonable_readonly_vmo);
+
+  // Creation will fail, which will be reported in the error handler below.
+  fuchsia::web::CreateFrameParams create_frame_params;
+  create_frame_params.set_explicit_sites_filter_error_page(
+      fuchsia::mem::Data::WithBuffer(std::move(buffer)));
+  context_->CreateFrameWithParams(std::move(create_frame_params),
+                                  frame_.NewRequest());
+
+  base::RunLoop loop;
+  frame_.set_error_handler(
+      [quit_loop = loop.QuitClosure()](zx_status_t status) {
+        EXPECT_EQ(status, ZX_ERR_INVALID_ARGS);
+        quit_loop.Run();
+      });
+  loop.Run();
+
+  EXPECT_FALSE(frame_);
+}
+
 // Check that if the CreateContextParams has |remote_debugging_port| set then:
 // - DevTools becomes available when the first debuggable Frame is created.
 // - DevTools closes when the last debuggable Frame is closed.
diff --git a/fuchsia/runners/cast/cast_runner.cc b/fuchsia/runners/cast/cast_runner.cc
index b142a84..0be7cf4 100644
--- a/fuchsia/runners/cast/cast_runner.cc
+++ b/fuchsia/runners/cast/cast_runner.cc
@@ -12,6 +12,8 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/callback_forward.h"
+#include "base/files/file_enumerator.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/fuchsia/file_utils.h"
@@ -19,6 +21,7 @@
 #include "base/fuchsia/fuchsia_logging.h"
 #include "base/fuchsia/process_context.h"
 #include "base/logging.h"
+#include "base/time/time.h"
 #include "base/values.h"
 #include "fuchsia/base/agent_manager.h"
 #include "fuchsia/base/config_reader.h"
@@ -81,6 +84,41 @@
 // Application URL for the pseudo-component providing fuchsia.web.FrameHost.
 constexpr char kFrameHostComponentName[] = "cast:fuchsia.web.FrameHost";
 
+// Application URL for the pseudo-component providing chromium.cast.DataReset.
+constexpr char kDataResetComponentName[] = "cast:chromium.cast.DataReset";
+
+// Subdirectory used to stage persistent directories to be deleted upon next
+// startup.
+const char kStagedForDeletionSubdirectory[] = "staged_for_deletion";
+
+base::FilePath GetStagedForDeletionDirectoryPath() {
+  base::FilePath cache_directory(base::fuchsia::kPersistedCacheDirectoryPath);
+  return cache_directory.Append(kStagedForDeletionSubdirectory);
+}
+
+// Deletes files/directories staged for deletion during the previous run.
+// We delete synchronously on main thread for simplicity. Note that this
+// overall mechanism is a temporary solution. TODO(crbug.com/1146480): migrate
+// to the framework mechanism of clearing session data when available.
+void DeleteStagedForDeletionDirectoryIfExists() {
+  const base::FilePath staged_for_deletion_directory =
+      GetStagedForDeletionDirectoryPath();
+
+  if (!PathExists(staged_for_deletion_directory))
+    return;
+
+  const base::TimeTicks started_at = base::TimeTicks::Now();
+  bool result = base::DeletePathRecursively(staged_for_deletion_directory);
+  if (!result) {
+    LOG(ERROR) << "Failed to delete the staging directory";
+    return;
+  }
+
+  LOG(WARNING) << "Deleting old persistent data took "
+               << (base::TimeTicks::Now() - started_at).InMillisecondsF()
+               << " ms";
+}
+
 // Populates |params| with web data settings. Web data persistence is only
 // enabled if a soft quota is explicitly specified via config-data.
 void SetDataParamsForMainContext(fuchsia::web::CreateContextParams* params) {
@@ -179,6 +217,62 @@
   base::WeakPtrFactory<const sys::ServiceDirectory> weak_incoming_services_;
 };
 
+// TODO(crbug.com/1120914): Remove this once Component Framework v2 can be
+// used to route chromium.cast.DataReset capabilities cleanly.
+class DataResetComponent : public fuchsia::sys::ComponentController,
+                           public chromium::cast::DataReset {
+ public:
+  // Creates a DataResetComponent with lifetime managed by |controller_request|.
+  static void Start(
+      base::OnceCallback<bool()> delete_persistent_data,
+      std::unique_ptr<base::fuchsia::StartupContext> startup_context,
+      fidl::InterfaceRequest<fuchsia::sys::ComponentController>
+          controller_request) {
+    new DataResetComponent(std::move(delete_persistent_data),
+                           std::move(startup_context),
+                           std::move(controller_request));
+  }
+
+ private:
+  DataResetComponent(
+      base::OnceCallback<bool()> delete_persistent_data,
+      std::unique_ptr<base::fuchsia::StartupContext> startup_context,
+      fidl::InterfaceRequest<fuchsia::sys::ComponentController>
+          controller_request)
+      : delete_persistent_data_(std::move(delete_persistent_data)),
+        startup_context_(std::move(startup_context)),
+        data_reset_handler_binding_(startup_context_->outgoing(), this) {
+    DCHECK(delete_persistent_data_);
+    startup_context_->ServeOutgoingDirectory();
+    binding_.Bind(std::move(controller_request));
+    binding_.set_error_handler([this](zx_status_t) { Kill(); });
+  }
+  ~DataResetComponent() final = default;
+
+  // fuchsia::sys::ComponentController interface.
+  void Kill() final { delete this; }
+  void Detach() final {
+    binding_.Close(ZX_ERR_NOT_SUPPORTED);
+    delete this;
+  }
+
+  // chromium::cast::DataReset interface.
+  void DeletePersistentData(DeletePersistentDataCallback callback) final {
+    if (!delete_persistent_data_) {
+      // Repeated requests to DeletePersistentData are not supported.
+      binding_.Close(ZX_ERR_NOT_SUPPORTED);
+      return;
+    }
+    callback(std::move(delete_persistent_data_).Run());
+  }
+
+  base::OnceCallback<bool()> delete_persistent_data_;
+  std::unique_ptr<base::fuchsia::StartupContext> startup_context_;
+  const base::fuchsia::ScopedServiceBinding<chromium::cast::DataReset>
+      data_reset_handler_binding_;
+  fidl::Binding<fuchsia::sys::ComponentController> binding_{this};
+};
+
 }  // namespace
 
 CastRunner::CastRunner(bool is_headless)
@@ -191,6 +285,9 @@
       isolated_services_(
           std::make_unique<base::fuchsia::FilteredServiceDirectory>(
               base::ComponentContextForProcess()->svc().get())) {
+  // Delete persisted data staged for deletion during the previous run.
+  DeleteStagedForDeletionDirectoryIfExists();
+
   // Specify the services to connect via the Runner process' service directory.
   for (const char* name : kServices) {
     main_services_->AddService(name);
@@ -271,6 +368,48 @@
       std::move(startup_context), std::move(controller_request)));
 }
 
+bool CastRunner::DeletePersistentData() {
+  // Set data reset flag so that new components are not being started.
+  data_reset_in_progress_ = true;
+
+  // Create the staging directory.
+  base::FilePath staged_for_deletion_directory =
+      GetStagedForDeletionDirectoryPath();
+  base::File::Error file_error;
+  bool result = base::CreateDirectoryAndGetError(staged_for_deletion_directory,
+                                                 &file_error);
+  if (!result) {
+    LOG(ERROR) << "Failed to create the staging directory, error: "
+               << file_error;
+    return false;
+  }
+
+  // Stage everything under `/cache` for deletion.
+  const base::FilePath cache_directory(
+      base::fuchsia::kPersistedCacheDirectoryPath);
+  base::FileEnumerator enumerator(
+      cache_directory, /*recursive=*/false,
+      base::FileEnumerator::FileType::FILES |
+          base::FileEnumerator::FileType::DIRECTORIES);
+  for (base::FilePath current = enumerator.Next(); !current.empty();
+       current = enumerator.Next()) {
+    // Skip the staging directory itself.
+    if (current == staged_for_deletion_directory) {
+      continue;
+    }
+
+    base::FilePath destination =
+        staged_for_deletion_directory.Append(current.BaseName());
+    result = base::Move(current, destination);
+    if (!result) {
+      LOG(ERROR) << "Failed to move " << current << " to " << destination;
+      return false;
+    }
+  }
+
+  return true;
+}
+
 void CastRunner::LaunchPendingComponent(PendingCastComponent* pending_component,
                                         CastComponent::Params params) {
   DCHECK(cors_exempt_headers_);
@@ -317,6 +456,14 @@
     }
   }
 
+  // Do not launch new main context components while data reset is in progress,
+  // so that they don't create new persisted state. We expect the session
+  // to be restarted shortly after data reset completes.
+  if (data_reset_in_progress_ && component_owner == main_context_.get()) {
+    pending_components_.erase(pending_component);
+    return;
+  }
+
   // Register the new component and clean up the |pending_component|.
   component_owner->RegisterComponent(std::move(cast_component));
   pending_components_.erase(pending_component);
@@ -534,7 +681,17 @@
     return;
   }
 
+  // TODO(crbug.com/1120914): Remove this once Component Framework v2 can be
+  // used to route chromium.cast.DataReset capabilities cleanly.
+  if (url.spec() == kDataResetComponentName) {
+    DataResetComponent::Start(base::BindOnce(&CastRunner::DeletePersistentData,
+                                             base::Unretained(this)),
+                              std::move(startup_context),
+                              std::move(controller_request));
+    return;
+  }
+
   pending_components_.emplace(std::make_unique<PendingCastComponent>(
       this, std::move(startup_context), std::move(controller_request),
       url.GetContent()));
-}
+}
\ No newline at end of file
diff --git a/fuchsia/runners/cast/cast_runner.h b/fuchsia/runners/cast/cast_runner.h
index 2416d40..5159d95 100644
--- a/fuchsia/runners/cast/cast_runner.h
+++ b/fuchsia/runners/cast/cast_runner.h
@@ -20,7 +20,6 @@
 #include "base/containers/flat_set.h"
 #include "base/containers/unique_ptr_adapters.h"
 #include "base/fuchsia/startup_context.h"
-#include "base/memory/weak_ptr.h"
 #include "base/optional.h"
 #include "fuchsia/runners/cast/cast_component.h"
 #include "fuchsia/runners/cast/pending_cast_component.h"
@@ -112,6 +111,13 @@
       fidl::InterfaceRequest<fuchsia::sys::ComponentController>
           controller_request);
 
+  // Moves all data persisted by the main Context to a staging directory,
+  // which will be deleted the next time the Runner starts up.
+  // Requests to launch new components in the main Context will be rejected
+  // until this Runner instance is shutdown.
+  // Returns true on success and false in case of I/O error.
+  bool DeletePersistentData();
+
   // True if this Runner uses Context(s) with the HEADLESS feature set.
   const bool is_headless_;
 
@@ -158,6 +164,11 @@
 
   // True if Contexts should be created without VULKAN set.
   bool disable_vulkan_for_test_ = false;
+
+  // True if cast runner entered data reset mode. Prevents new components
+  // in the main context from being launched. This is set to true once data
+  // reset starts and does not switch back to false upon completion.
+  bool data_reset_in_progress_ = false;
 };
 
 #endif  // FUCHSIA_RUNNERS_CAST_CAST_RUNNER_H_
diff --git a/fuchsia/runners/cast/cast_runner_integration_test.cc b/fuchsia/runners/cast/cast_runner_integration_test.cc
index 51acdf1..55690db6 100644
--- a/fuchsia/runners/cast/cast_runner_integration_test.cc
+++ b/fuchsia/runners/cast/cast_runner_integration_test.cc
@@ -1145,6 +1145,31 @@
   EXPECT_TRUE(!component_state_);
 }
 
+// Verifies that CastRunner offers a chromium.cast.DataReset service.
+// TODO(crbug.com/1146474): Expand the test to verify that the persisted data is
+// correctly cleared (e.g. using a custom test HTML app that uses persisted
+// data).
+TEST_F(CastRunnerIntegrationTest, DataReset) {
+  constexpr char kDataResetComponentName[] = "cast:chromium.cast.DataReset";
+  StartCastComponent(kDataResetComponentName);
+
+  base::RunLoop loop;
+  auto data_reset =
+      component_services_client_->Connect<chromium::cast::DataReset>();
+  data_reset.set_error_handler([quit_loop = loop.QuitClosure()](zx_status_t) {
+    quit_loop.Run();
+    ADD_FAILURE();
+  });
+  bool succeeded = false;
+  data_reset->DeletePersistentData([&succeeded, &loop](bool result) {
+    succeeded = result;
+    loop.Quit();
+  });
+  loop.Run();
+
+  EXPECT_TRUE(succeeded);
+}
+
 class CastRunnerFrameHostIntegrationTest : public CastRunnerIntegrationTest {
  public:
   CastRunnerFrameHostIntegrationTest()
diff --git a/fuchsia/runners/cast/main.cc b/fuchsia/runners/cast/main.cc
index 19ece25..c299481 100644
--- a/fuchsia/runners/cast/main.cc
+++ b/fuchsia/runners/cast/main.cc
@@ -61,7 +61,7 @@
   sys::OutgoingDirectory* const outgoing_directory =
       base::ComponentContextForProcess()->outgoing().get();
 
-  // Publish the fuchsia.web.Runner implementation for Cast applications.
+  // Publish the fuchsia.sys.Runner implementation for Cast applications.
   const bool enable_headless =
       command_line->HasSwitch(kForceHeadlessForTestsSwitch) ||
       GetConfigBool(kHeadlessConfigKey);
diff --git a/google_apis/gaia/oauth_multilogin_result.cc b/google_apis/gaia/oauth_multilogin_result.cc
index c823832e..e16ddf1 100644
--- a/google_apis/gaia/oauth_multilogin_result.cc
+++ b/google_apis/gaia/oauth_multilogin_result.cc
@@ -119,16 +119,20 @@
       samesite_mode = net::StringToCookieSameSite(*same_site, &samesite_string);
     }
     net::RecordCookieSameSiteAttributeValueHistogram(samesite_string);
-    net::CanonicalCookie new_cookie(
-        name ? *name : "", value ? *value : "", cookie_domain,
-        path ? *path : "", /*creation=*/base::Time::Now(),
-        base::Time::Now() + before_expiration,
-        /*last_access=*/base::Time::Now(), is_secure.value_or(true),
-        is_http_only.value_or(true), samesite_mode,
-        net::StringToCookiePriority(priority ? *priority : "medium"),
-        /*sameparty=*/false);
-    if (new_cookie.IsCanonical()) {
-      cookies_.push_back(std::move(new_cookie));
+    // TODO(crbug.com/1155648) Consider using CreateSanitizedCookie instead.
+    std::unique_ptr<net::CanonicalCookie> new_cookie =
+        net::CanonicalCookie::FromStorage(
+            name ? *name : "", value ? *value : "", cookie_domain,
+            path ? *path : "", /*creation=*/base::Time::Now(),
+            base::Time::Now() + before_expiration,
+            /*last_access=*/base::Time::Now(), is_secure.value_or(true),
+            is_http_only.value_or(true), samesite_mode,
+            net::StringToCookiePriority(priority ? *priority : "medium"),
+            /*same_party=*/false, net::CookieSourceScheme::kUnset,
+            url::PORT_UNSPECIFIED);
+    // If the unique_ptr is null, it means the cookie was not canonical.
+    if (new_cookie) {
+      cookies_.push_back(std::move(*new_cookie));
     } else {
       LOG(ERROR) << "Non-canonical cookie found.";
     }
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg
index c1b4481..8507263a 100644
--- a/infra/config/generated/cr-buildbucket.cfg
+++ b/infra/config/generated/cr-buildbucket.cfg
@@ -24229,6 +24229,10 @@
   }
   acls {
     role: SCHEDULER
+    identity: "project:swiftshader"
+  }
+  acls {
+    role: SCHEDULER
     identity: "project:v8"
   }
   swarming {
diff --git a/infra/config/generated/realms.cfg b/infra/config/generated/realms.cfg
index e7e21d8..241b5e6 100644
--- a/infra/config/generated/realms.cfg
+++ b/infra/config/generated/realms.cfg
@@ -226,6 +226,7 @@
     principals: "project:angle"
     principals: "project:dawn"
     principals: "project:skia"
+    principals: "project:swiftshader"
     principals: "project:v8"
     principals: "user:findit-for-me@appspot.gserviceaccount.com"
     principals: "user:tricium-prod@appspot.gserviceaccount.com"
diff --git a/infra/config/lib/builders.star b/infra/config/lib/builders.star
index c18c66f91..01937e2 100644
--- a/infra/config/lib/builders.star
+++ b/infra/config/lib/builders.star
@@ -575,15 +575,8 @@
         **kwargs
     )
 
-def builder_name(builder, bucket = args.DEFAULT):
-    bucket = defaults.get_value("bucket", bucket)
-    if bucket == args.COMPUTE:
-        fail("Either a default for bucket must be set or bucket must be passed in")
-    return "{}/{}".format(bucket, builder)
-
 builders = struct(
     builder = builder,
-    builder_name = builder_name,
     cpu = cpu,
     defaults = defaults,
     goma = goma,
diff --git a/infra/config/subprojects/chromium/ci.star b/infra/config/subprojects/chromium/ci.star
index 75f620c8..b56cc21 100644
--- a/infra/config/subprojects/chromium/ci.star
+++ b/infra/config/subprojects/chromium/ci.star
@@ -3,7 +3,7 @@
 # found in the LICENSE file.
 
 load("//lib/branches.star", "branches")
-load("//lib/builders.star", "builder_name", "cpu", "goma", "os", "xcode")
+load("//lib/builders.star", "cpu", "goma", "os", "xcode")
 load("//lib/ci.star", "ci")
 load("//console-header.star", "HEADER")
 load("//project.star", "settings")
@@ -542,7 +542,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Android arm64 Builder (dbg)")],
+    triggered_by = ["ci/Android arm64 Builder (dbg)"],
 )
 
 ci.android_builder(
@@ -554,7 +554,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Android arm64 Builder (dbg)")],
+    triggered_by = ["ci/Android arm64 Builder (dbg)"],
 )
 
 ci.android_builder(
@@ -566,7 +566,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Android arm64 Builder (dbg)")],
+    triggered_by = ["ci/Android arm64 Builder (dbg)"],
 )
 
 ci.android_builder(
@@ -578,7 +578,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Android arm64 Builder (dbg)")],
+    triggered_by = ["ci/Android arm64 Builder (dbg)"],
 )
 
 ci.android_builder(
@@ -701,7 +701,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Android arm64 Builder (dbg)")],
+    triggered_by = ["ci/Android arm64 Builder (dbg)"],
 )
 
 ci.android_builder(
@@ -725,7 +725,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Android arm64 Builder (dbg)")],
+    triggered_by = ["ci/Android arm64 Builder (dbg)"],
 )
 
 ci.android_builder(
@@ -737,7 +737,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Android arm64 Builder (dbg)")],
+    triggered_by = ["ci/Android arm64 Builder (dbg)"],
 )
 
 ci.android_builder(
@@ -835,7 +835,7 @@
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
     notifies = ["cronet"],
-    triggered_by = [builder_name("android-cronet-arm-rel")],
+    triggered_by = ["ci/android-cronet-arm-rel"],
 )
 
 ci.android_builder(
@@ -848,7 +848,7 @@
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
     notifies = ["cronet"],
-    triggered_by = [builder_name("android-cronet-arm-rel")],
+    triggered_by = ["ci/android-cronet-arm-rel"],
 )
 
 # Runs on a specific machine with an attached phone
@@ -963,7 +963,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Android arm64 Builder (dbg)")],
+    triggered_by = ["ci/Android arm64 Builder (dbg)"],
 )
 
 ci.android_builder(
@@ -1748,7 +1748,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Dawn Linux x64 DEPS Builder")],
+    triggered_by = ["ci/Dawn Linux x64 DEPS Builder"],
 )
 
 ci.dawn_thin_tester(
@@ -1760,7 +1760,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Dawn Linux x64 DEPS Builder")],
+    triggered_by = ["ci/Dawn Linux x64 DEPS Builder"],
 )
 
 ci.dawn_thin_tester(
@@ -1811,7 +1811,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Dawn Mac x64 DEPS Builder")],
+    triggered_by = ["ci/Dawn Mac x64 DEPS Builder"],
 )
 
 ci.dawn_thin_tester(
@@ -1823,7 +1823,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Dawn Mac x64 DEPS Builder")],
+    triggered_by = ["ci/Dawn Mac x64 DEPS Builder"],
 )
 
 ci.dawn_thin_tester(
@@ -1882,7 +1882,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Dawn Win10 x64 DEPS Builder")],
+    triggered_by = ["ci/Dawn Win10 x64 DEPS Builder"],
 )
 
 ci.dawn_thin_tester(
@@ -1894,7 +1894,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Dawn Win10 x64 DEPS Builder")],
+    triggered_by = ["ci/Dawn Win10 x64 DEPS Builder"],
 )
 
 ci.dawn_thin_tester(
@@ -1945,7 +1945,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Dawn Win10 x86 DEPS Builder")],
+    triggered_by = ["ci/Dawn Win10 x86 DEPS Builder"],
 )
 
 ci.dawn_thin_tester(
@@ -1957,7 +1957,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("Dawn Win10 x86 DEPS Builder")],
+    triggered_by = ["ci/Dawn Win10 x86 DEPS Builder"],
 )
 
 ci.dawn_thin_tester(
@@ -3387,7 +3387,7 @@
         category = "Linux",
     ),
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("GPU Linux Builder")],
+    triggered_by = ["ci/GPU Linux Builder"],
 )
 
 ci.gpu_thin_tester(
@@ -3407,7 +3407,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("GPU Mac Builder")],
+    triggered_by = ["ci/GPU Mac Builder"],
 )
 
 ci.gpu_thin_tester(
@@ -3427,7 +3427,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("GPU Mac Builder")],
+    triggered_by = ["ci/GPU Mac Builder"],
 )
 
 ci.gpu_thin_tester(
@@ -3447,7 +3447,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("GPU Win x64 Builder")],
+    triggered_by = ["ci/GPU Win x64 Builder"],
 )
 
 ci.gpu_fyi_linux_builder(
@@ -4308,7 +4308,7 @@
     cq_mirrors_console_view = "mirrors",
     goma_backend = None,
     main_console_view = "main",
-    triggered_by = [builder_name("Linux Builder")],
+    triggered_by = ["ci/Linux Builder"],
 )
 
 ci.linux_builder(
@@ -4320,7 +4320,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = "main",
-    triggered_by = [builder_name("Linux Builder (dbg)")],
+    triggered_by = ["ci/Linux Builder (dbg)"],
 )
 
 ci.linux_builder(
@@ -4419,7 +4419,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("linux-ozone-rel")],
+    triggered_by = ["ci/linux-ozone-rel"],
 )
 
 ci.linux_builder(
@@ -4432,7 +4432,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("linux-ozone-rel")],
+    triggered_by = ["ci/linux-ozone-rel"],
 )
 
 ci.linux_builder(
@@ -4445,7 +4445,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = main_console_if_on_branch(),
-    triggered_by = [builder_name("linux-ozone-rel")],
+    triggered_by = ["ci/linux-ozone-rel"],
 )
 
 ci.linux_builder(
@@ -4458,7 +4458,7 @@
     ),
     main_console_view = "main",
     cq_mirrors_console_view = "mirrors",
-    triggered_by = [builder_name("linux-ozone-rel")],
+    triggered_by = ["ci/linux-ozone-rel"],
     tree_closing = False,
 )
 
@@ -4472,7 +4472,7 @@
     ),
     main_console_view = "main",
     cq_mirrors_console_view = "mirrors",
-    triggered_by = [builder_name("linux-ozone-rel")],
+    triggered_by = ["ci/linux-ozone-rel"],
     tree_closing = False,
 )
 
@@ -4486,7 +4486,7 @@
     ),
     main_console_view = "main",
     cq_mirrors_console_view = "mirrors",
-    triggered_by = [builder_name("linux-ozone-rel")],
+    triggered_by = ["ci/linux-ozone-rel"],
     tree_closing = False,
 )
 
@@ -4555,7 +4555,7 @@
         short_name = "a64",
     ),
     tree_closing = False,
-    triggered_by = [builder_name("mac-arm64-rel")],
+    triggered_by = ["ci/mac-arm64-rel"],
 )
 
 ci.thin_tester(
@@ -4568,7 +4568,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = "main",
-    triggered_by = [builder_name("Mac Builder")],
+    triggered_by = ["ci/Mac Builder"],
 )
 
 ci.thin_tester(
@@ -4581,7 +4581,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = "main",
-    triggered_by = [builder_name("Mac Builder")],
+    triggered_by = ["ci/Mac Builder"],
 )
 
 ci.thin_tester(
@@ -4594,7 +4594,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = "main",
-    triggered_by = [builder_name("Mac Builder")],
+    triggered_by = ["ci/Mac Builder"],
 )
 
 ci.thin_tester(
@@ -4607,7 +4607,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = "main",
-    triggered_by = [builder_name("Mac Builder")],
+    triggered_by = ["ci/Mac Builder"],
 )
 
 ci.thin_tester(
@@ -4620,7 +4620,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = "main",
-    triggered_by = [builder_name("Mac Builder")],
+    triggered_by = ["ci/Mac Builder"],
 )
 
 ci.thin_tester(
@@ -4633,7 +4633,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = "main",
-    triggered_by = [builder_name("Mac Builder (dbg)")],
+    triggered_by = ["ci/Mac Builder (dbg)"],
 )
 
 ci.mac_ios_builder(
@@ -4717,7 +4717,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = "main",
-    triggered_by = [builder_name("Linux ASan LSan Builder")],
+    triggered_by = ["ci/Linux ASan LSan Builder"],
 )
 
 ci.memory_builder(
@@ -4729,7 +4729,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = "main",
-    triggered_by = [builder_name("Linux ASan LSan Builder")],
+    triggered_by = ["ci/Linux ASan LSan Builder"],
 )
 
 ci.memory_builder(
@@ -4842,7 +4842,7 @@
         short_name = "tst",
     ),
     cq_mirrors_console_view = "mirrors",
-    triggered_by = [builder_name("Linux TSan Builder")],
+    triggered_by = ["ci/Linux TSan Builder"],
     main_console_view = "main",
 )
 
@@ -5157,7 +5157,7 @@
     cq_mirrors_console_view = "mirrors",
     os = os.WINDOWS_7,
     main_console_view = "main",
-    triggered_by = [builder_name("Win Builder (dbg)")],
+    triggered_by = ["ci/Win Builder (dbg)"],
 )
 
 ci.win_builder(
@@ -5170,7 +5170,7 @@
     cq_mirrors_console_view = "mirrors",
     os = os.WINDOWS_7,
     main_console_view = "main",
-    triggered_by = [builder_name("Win x64 Builder")],
+    triggered_by = ["ci/Win x64 Builder"],
 )
 
 ci.win_builder(
@@ -5208,7 +5208,7 @@
     ),
     cq_mirrors_console_view = "mirrors",
     main_console_view = "main",
-    triggered_by = [builder_name("Win x64 Builder")],
+    triggered_by = ["ci/Win x64 Builder"],
 )
 
 ci.win_builder(
diff --git a/infra/config/subprojects/chromium/try.star b/infra/config/subprojects/chromium/try.star
index 40853b0..4d63f28 100644
--- a/infra/config/subprojects/chromium/try.star
+++ b/infra/config/subprojects/chromium/try.star
@@ -53,7 +53,13 @@
                 "service-account-chromeperf",
                 "service-account-cq",
             ],
-            projects = branches.value(for_main = ["angle", "dawn", "skia", "v8"]),
+            projects = branches.value(for_main = [
+                "angle",
+                "dawn",
+                "skia",
+                "swiftshader",
+                "v8",
+            ]),
         ),
         acl.entry(
             roles = acl.BUILDBUCKET_OWNER,
diff --git a/ios/chrome/app/app_startup_parameters.h b/ios/chrome/app/app_startup_parameters.h
index dc56835..e813a17 100644
--- a/ios/chrome/app/app_startup_parameters.h
+++ b/ios/chrome/app/app_startup_parameters.h
@@ -66,8 +66,6 @@
                         completeURL:(const GURL&)completeURL
     NS_DESIGNATED_INITIALIZER;
 
-- (instancetype)initWithUniversalLink:(const GURL&)universalLink;
-
 - (instancetype)initWithURLs:(const std::vector<GURL>&)URLs;
 
 @end
diff --git a/ios/chrome/app/app_startup_parameters.mm b/ios/chrome/app/app_startup_parameters.mm
index 7f033e4a..53eb78c 100644
--- a/ios/chrome/app/app_startup_parameters.mm
+++ b/ios/chrome/app/app_startup_parameters.mm
@@ -59,15 +59,6 @@
   return self;
 }
 
-// TODO(crbug.com/1021752): Remove this stub since |universalLink| is unused.
-- (instancetype)initWithUniversalLink:(const GURL&)universalLink {
-  // If a new tab with |_externalURL| needs to be opened after the App
-  // was launched as the result of a Universal Link navigation, the only
-  // supported possibility at this time is the New Tab Page.
-  self = [self initWithExternalURL:GURL(kChromeUINewTabURL)
-                       completeURL:GURL(kChromeUINewTabURL)];
-  return self;
-}
 
 - (NSString*)description {
   NSMutableString* description =
diff --git a/ios/chrome/app/application_delegate/user_activity_handler.mm b/ios/chrome/app/application_delegate/user_activity_handler.mm
index 2b48639..5f628fff 100644
--- a/ios/chrome/app/application_delegate/user_activity_handler.mm
+++ b/ios/chrome/app/application_delegate/user_activity_handler.mm
@@ -94,24 +94,15 @@
   NSURL* webpageURL = userActivity.webpageURL;
 
   if ([userActivity.activityType
-          isEqualToString:handoff::kChromeHandoffActivityType]) {
+          isEqualToString:handoff::kChromeHandoffActivityType] ||
+      [userActivity.activityType
+          isEqualToString:NSUserActivityTypeBrowsingWeb]) {
     // App was launched by iOS as a result of Handoff.
     NSString* originString = base::mac::ObjCCast<NSString>(
         userActivity.userInfo[handoff::kOriginKey]);
     handoff::Origin origin = handoff::OriginFromString(originString);
     UMA_HISTOGRAM_ENUMERATION("IOS.Handoff.Origin", origin,
                               handoff::ORIGIN_COUNT);
-  } else if ([userActivity.activityType
-                 isEqualToString:NSUserActivityTypeBrowsingWeb]) {
-    // App was launched as the result of a Universal Link navigation.
-    GURL gurl = net::GURLWithNSURL(webpageURL);
-    AppStartupParameters* startupParams =
-        [[AppStartupParameters alloc] initWithUniversalLink:gurl];
-    [connectionInformation setStartupParameters:startupParams];
-    base::RecordAction(base::UserMetricsAction("IOSLaunchedByUniversalLink"));
-
-    if (startupParams)
-      webpageURL = net::NSURLWithGURL([startupParams externalURL]);
   } else if (spotlight::IsSpotlightAvailable() &&
              [userActivity.activityType
                  isEqualToString:CSSearchableItemActionType]) {
diff --git a/ios/chrome/app/application_delegate/user_activity_handler_unittest.mm b/ios/chrome/app/application_delegate/user_activity_handler_unittest.mm
index e9d3b47b..e006c0e9 100644
--- a/ios/chrome/app/application_delegate/user_activity_handler_unittest.mm
+++ b/ios/chrome/app/application_delegate/user_activity_handler_unittest.mm
@@ -371,8 +371,7 @@
   EXPECT_TRUE(result);
 }
 
-// Tests that a new tab is created when application is started via Universal
-// Link.
+// Tests that a new tab is created when application is started via handoff.
 TEST_F(UserActivityHandlerTest, ContinueUserActivityBrowsingWeb) {
   NSUserActivity* userActivity = [[NSUserActivity alloc]
       initWithActivityType:NSUserActivityTypeBrowsingWeb];
@@ -398,14 +397,12 @@
                browserState:GetInterfaceProvider()
                                 .currentInterface.browserState];
 
-  GURL newTabURL(kChromeUINewTabURL);
-  EXPECT_EQ(newTabURL, tabOpener.urlLoadParams.web_params.url);
+  const GURL gurl = net::GURLWithNSURL(nsurl);
+  EXPECT_EQ(gurl, tabOpener.urlLoadParams.web_params.url);
+  EXPECT_TRUE(tabOpener.urlLoadParams.web_params.virtual_url.is_empty());
   // AppStartupParameters default to opening pages in non-Incognito mode.
   EXPECT_EQ(ApplicationModeForTabOpening::NORMAL, [tabOpener applicationMode]);
   EXPECT_TRUE(result);
-  // Verifies that a new tab is being requested.
-  EXPECT_EQ(newTabURL,
-            [[connectionInformationMock startupParameters] externalURL]);
 }
 
 // Tests that continueUserActivity sets startupParameters accordingly to the
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
index 92d0c76..98d4e9e1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -76,7 +76,7 @@
 <translation id="1650222530560417226">Tap the 'Start Logging' button to collect future JavaScript console logs and errors from all tabs. Logs will be collected (and stored only in memory) until this page is closed or 'Stop Logging' is tapped.</translation>
 <translation id="1657011748321897393">Sharing failed because you are not connected to the network.</translation>
 <translation id="1657641691196698092">Blocked cookies</translation>
-<translation id="165877110639533037">No Open Tabs</translation>
+<translation id="165877110639533037">No open tabs</translation>
 <translation id="1674504678466460478"><ph name="SOURCE_LANGUAGE" /> to <ph name="TARGET_LANGUAGE" /></translation>
 <translation id="168715261339224929">To get your bookmarks on all your devices, turn on sync.</translation>
 <translation id="1687475363370981210">Mark All Read</translation>
@@ -88,8 +88,8 @@
 <translation id="1746815479209538200">To browse the web, add a new tab.</translation>
 <translation id="1752547299766512813">Save Passwords</translation>
 <translation id="1753905327828125965">Most Visited</translation>
-<translation id="1803264062614276815">Cardholder Name</translation>
-<translation id="1809939268435598390">Delete Folder</translation>
+<translation id="1803264062614276815">Cardholder name</translation>
+<translation id="1809939268435598390">Delete folder</translation>
 <translation id="1813414402673211292">Clear Browsing Data</translation>
 <translation id="1820259098641718022">Added to Reading List</translation>
 <translation id="1870148520156231997">Reveal password</translation>
@@ -212,7 +212,7 @@
 <translation id="3240426699337459095">Link copied</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3252394070589632019"><ph name="VALUE" />, <ph name="ADDITIONAL_INFO" />, <ph name="INDEX" /> of <ph name="NUM_SUGGESTIONS" /></translation>
-<translation id="3268451620468152448">Open Tabs</translation>
+<translation id="3268451620468152448">Open tabs</translation>
 <translation id="3272527697863656322">Cancel</translation>
 <translation id="3277021493514034324">Site address copied</translation>
 <translation id="3285962946108803577">Share page…</translation>
@@ -238,7 +238,7 @@
 <translation id="3482959374254649722">Syncing your tabs...</translation>
 <translation id="3484946776651937681">Open in downloads</translation>
 <translation id="3493531032208478708"><ph name="BEGIN_LINK" />Find out more<ph name="END_LINK" /> about suggested content</translation>
-<translation id="3494788280727468875">Confirm Clear Browsing Data</translation>
+<translation id="3494788280727468875">Confirm clear browsing data</translation>
 <translation id="35083190962747987">Open ${url}</translation>
 <translation id="3519193562722059437">Open a tab to browse the web.</translation>
 <translation id="3523473570015918798">By signing out, your bookmarks, history, passwords and other Chrome data will no longer be synced to your Google Account.</translation>
@@ -435,6 +435,7 @@
 <translation id="5782227691023083829">Translating...</translation>
 <translation id="5803566855766646066">Are you sure that you want to discard this new card?</translation>
 <translation id="5816228676161003208">This lets you search faster using your voice.</translation>
+<translation id="5819208479324046259">Managed by <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation>
 <translation id="5846482154967366008">Search Engine</translation>
 <translation id="5854790677617711513">Older than 30 days</translation>
 <translation id="5857090052475505287">New Folder</translation>
@@ -656,7 +657,7 @@
 <translation id="8007420562015504427">Incognito Search</translation>
 <translation id="802154636333426148">Download failed</translation>
 <translation id="8023878949384262191">Expands the section.</translation>
-<translation id="8027581147000338959">Open in New Window</translation>
+<translation id="8027581147000338959">Open in new window</translation>
 <translation id="804427445359061970">You'll find your tabs from other devices here</translation>
 <translation id="8059533439631660104">Collapses the section.</translation>
 <translation id="8065292699993359127">Open URLs in Chrome in Incognito</translation>
@@ -675,7 +676,7 @@
 <translation id="8261506727792406068">Delete</translation>
 <translation id="8281781826761538115">Default - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8299417921174340354">To use passwords, you must first set a passcode on your device.</translation>
-<translation id="8319076807703933069">New Search</translation>
+<translation id="8319076807703933069">New search</translation>
 <translation id="8323906514956095947">Touch and hold for more tab options</translation>
 <translation id="8328777765163860529">Close All</translation>
 <translation id="8386068868580335421">Reset</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hy.xtb b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
index f2e810f4..8a4d0edb 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hy.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
@@ -435,6 +435,7 @@
 <translation id="5782227691023083829">Թարգմանվում է...</translation>
 <translation id="5803566855766646066">Հեռացնե՞լ նոր քարտը</translation>
 <translation id="5816228676161003208">Թույլ է տալիս արագ որոնել ձայնի միջոցով:</translation>
+<translation id="5819208479324046259">Կառավարվում է <ph name="MANAGER" />-ի կողմից։ <ph name="BEGIN_LINK" />Իմանալ ավելին<ph name="END_LINK" /></translation>
 <translation id="5846482154967366008">Որոնման համակարգ</translation>
 <translation id="5854790677617711513">30 օր և ավելի</translation>
 <translation id="5857090052475505287">Նոր պանակ</translation>
diff --git a/ios/chrome/browser/policy/device_management_service_configuration_ios.h b/ios/chrome/browser/policy/device_management_service_configuration_ios.h
index ca6cbed..be50ac8 100644
--- a/ios/chrome/browser/policy/device_management_service_configuration_ios.h
+++ b/ios/chrome/browser/policy/device_management_service_configuration_ios.h
@@ -34,7 +34,8 @@
   std::string GetPlatformParameter() override;
   std::string GetRealtimeReportingServerUrl() override;
   std::string GetEncryptedReportingServerUrl() override;
-  std::string GetReportingConnectorServerUrl() override;
+  std::string GetReportingConnectorServerUrl(
+      content::BrowserContext* context) override;
 
  private:
   const std::string dm_server_url_;
diff --git a/ios/chrome/browser/policy/device_management_service_configuration_ios.mm b/ios/chrome/browser/policy/device_management_service_configuration_ios.mm
index 3cb29cf..203b063 100644
--- a/ios/chrome/browser/policy/device_management_service_configuration_ios.mm
+++ b/ios/chrome/browser/policy/device_management_service_configuration_ios.mm
@@ -70,7 +70,8 @@
 }
 
 std::string
-DeviceManagementServiceConfigurationIOS::GetReportingConnectorServerUrl() {
+DeviceManagementServiceConfigurationIOS::GetReportingConnectorServerUrl(
+    content::BrowserContext* context) {
   return std::string();
 }
 
diff --git a/ios/chrome/browser/ui/download/download_manager_coordinator.mm b/ios/chrome/browser/ui/download/download_manager_coordinator.mm
index 647e4de..84544cea 100644
--- a/ios/chrome/browser/ui/download/download_manager_coordinator.mm
+++ b/ios/chrome/browser/ui/download/download_manager_coordinator.mm
@@ -30,7 +30,6 @@
 #include "ios/chrome/browser/overlays/public/overlay_callback_manager.h"
 #import "ios/chrome/browser/overlays/public/overlay_request_queue.h"
 #import "ios/chrome/browser/store_kit/store_kit_coordinator.h"
-#import "ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h"
 #import "ios/chrome/browser/ui/commands/browser_coordinator_commands.h"
 #import "ios/chrome/browser/ui/commands/command_dispatcher.h"
 #import "ios/chrome/browser/ui/download/activities/open_downloads_folder_activity.h"
@@ -173,10 +172,6 @@
   UIActivityViewController* _openInController;
   DownloadManagerMediator _mediator;
   StoreKitCoordinator* _storeKitCoordinator;
-  // Coordinator for displaying the alert informing the user that no application
-  // on the device can open the file. The alert offers the user to install
-  // Google Drive app.
-  AlertCoordinator* _installDriveAlertCoordinator;
   UnopenedDownloadsTracker _unopenedDownloads;
 }
 @end
@@ -229,8 +224,6 @@
 
   [_storeKitCoordinator stop];
   _storeKitCoordinator = nil;
-  [_installDriveAlertCoordinator stop];
-  _installDriveAlertCoordinator = nil;
 }
 
 - (UIViewController*)viewController {
@@ -417,38 +410,6 @@
       DownloadFileUIGoogleDrive::Count);
 }
 
-// Called when Open In... menu was not presented. This method shows the alert
-// which offers the user to install Google Drive app.
-- (void)didFailOpenInMenuPresentation {
-  NSString* title =
-      l10n_util::GetNSString(IDS_IOS_DOWNLOAD_MANAGER_UNABLE_TO_OPEN_FILE);
-  NSString* message =
-      l10n_util::GetNSString(IDS_IOS_DOWNLOAD_MANAGER_NO_APP_MESSAGE);
-
-  _installDriveAlertCoordinator = [[AlertCoordinator alloc]
-      initWithBaseViewController:self.baseViewController
-                         browser:self.browser
-                           title:title
-                         message:message];
-
-  NSString* googleDriveButtonTitle =
-      l10n_util::GetNSString(IDS_IOS_DOWNLOAD_MANAGER_UPLOAD_TO_GOOGLE_DRIVE);
-  __weak DownloadManagerCoordinator* weakSelf = self;
-  [_installDriveAlertCoordinator
-      addItemWithTitle:googleDriveButtonTitle
-                action:^{
-                  [weakSelf presentStoreKitForGoogleDriveApp];
-                }
-                 style:UIAlertActionStyleDefault];
-
-  [_installDriveAlertCoordinator
-      addItemWithTitle:l10n_util::GetNSString(IDS_CANCEL)
-                action:nil
-                 style:UIAlertActionStyleCancel];
-
-  [_installDriveAlertCoordinator start];
-}
-
 // Presents StoreKit dialog for Google Drive application.
 - (void)presentStoreKitForGoogleDriveApp {
   if (!_storeKitCoordinator) {
diff --git a/ios/chrome/browser/ui/download/download_manager_mediator.mm b/ios/chrome/browser/ui/download/download_manager_mediator.mm
index 3c2061a..4257c9b 100644
--- a/ios/chrome/browser/ui/download/download_manager_mediator.mm
+++ b/ios/chrome/browser/ui/download/download_manager_mediator.mm
@@ -127,9 +127,10 @@
     base::ThreadPool::PostTaskAndReplyWithResult(
         FROM_HERE,
         {base::MayBlock(), base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
-        base::Bind(base::PathExists, download_path_),
-        base::Bind(&DownloadManagerMediator::MoveToUserDocumentsIfFileExists,
-                   weak_ptr_factory_.GetWeakPtr(), download_path_));
+        base::BindOnce(base::PathExists, download_path_),
+        base::BindOnce(
+            &DownloadManagerMediator::MoveToUserDocumentsIfFileExists,
+            weak_ptr_factory_.GetWeakPtr(), download_path_));
   }
 
   if (state == kDownloadManagerStateSucceeded && !IsGoogleDriveAppInstalled()) {
diff --git a/ios/chrome/browser/ui/ntp/BUILD.gn b/ios/chrome/browser/ui/ntp/BUILD.gn
index 45fa2a9d..6ed9e65 100644
--- a/ios/chrome/browser/ui/ntp/BUILD.gn
+++ b/ios/chrome/browser/ui/ntp/BUILD.gn
@@ -51,6 +51,8 @@
 source_set("ntp_internal") {
   configs += [ "//build/config/compiler:enable_arc" ]
   sources = [
+    "discover_feed_view_controller.h",
+    "discover_feed_view_controller.mm",
     "incognito_view.h",
     "incognito_view.mm",
     "incognito_view_controller.h",
diff --git a/ios/chrome/browser/ui/ntp/discover_feed_view_controller.h b/ios/chrome/browser/ui/ntp/discover_feed_view_controller.h
new file mode 100644
index 0000000..ac010f0
--- /dev/null
+++ b/ios/chrome/browser/ui/ntp/discover_feed_view_controller.h
@@ -0,0 +1,27 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_UI_NTP_DISCOVER_FEED_VIEW_CONTROLLER_H_
+#define IOS_CHROME_BROWSER_UI_NTP_DISCOVER_FEED_VIEW_CONTROLLER_H_
+
+#import <UIKit/UIKit.h>
+
+// View controller wrapping a Discover feed view controller originating
+// elsewhere.
+@interface DiscoverFeedViewController : UIViewController
+
+// Collection view subview that contains the feed articles.
+@property(nonatomic, weak, readonly) UICollectionView* feedCollectionView;
+
+// Initializes view controller with the browser object.
+- (instancetype)initWithDiscoverFeedViewController:
+    (UIViewController*)discoverFeed NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)initWithNibName:(NSString*)nibNameOrNil
+                         bundle:(NSBundle*)nibBundleOrNil NS_UNAVAILABLE;
+- (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_NTP_DISCOVER_FEED_VIEW_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/ntp/discover_feed_view_controller.mm b/ios/chrome/browser/ui/ntp/discover_feed_view_controller.mm
new file mode 100644
index 0000000..a3c3a9e
--- /dev/null
+++ b/ios/chrome/browser/ui/ntp/discover_feed_view_controller.mm
@@ -0,0 +1,56 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import <UIKit/UIKit.h>
+
+#import "ios/chrome/browser/ui/ntp/discover_feed_view_controller.h"
+#import "ios/chrome/common/ui/util/constraints_ui_util.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+@interface DiscoverFeedViewController ()
+
+// Feed view controller being contained by this view controller.
+@property(nonatomic, strong) UIViewController* discoverFeed;
+
+@end
+
+@implementation DiscoverFeedViewController
+
+- (instancetype)initWithDiscoverFeedViewController:
+    (UIViewController*)discoverFeed {
+  self = [super initWithNibName:nil bundle:nil];
+  if (self) {
+    // TODO(crbug.com/1114792): Handle case where feed is disabled, replacing it
+    // with a regular scroll view.
+    _discoverFeed = discoverFeed;
+  }
+  return self;
+}
+
+- (void)viewDidLoad {
+  [super viewDidLoad];
+
+  UIView* discoverView = self.discoverFeed.view;
+
+  // Iterates through subviews to find collection view containing feed articles.
+  // TODO(crbug.com/1085419): Once the CollectionView is cleanly exposed, remove
+  // this loop.
+  for (UIView* view in discoverView.subviews) {
+    if ([view isKindOfClass:[UICollectionView class]]) {
+      _feedCollectionView = static_cast<UICollectionView*>(view);
+    }
+  }
+
+  [self.discoverFeed willMoveToParentViewController:self];
+  [self addChildViewController:self.discoverFeed];
+  [self.view addSubview:discoverView];
+  [self.discoverFeed didMoveToParentViewController:self];
+  discoverView.translatesAutoresizingMaskIntoConstraints = NO;
+  AddSameConstraints(discoverView, self.view);
+}
+
+@end
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_egtest.mm b/ios/chrome/browser/ui/ntp/new_tab_page_egtest.mm
index d2d7096..0eec0a0 100644
--- a/ios/chrome/browser/ui/ntp/new_tab_page_egtest.mm
+++ b/ios/chrome/browser/ui/ntp/new_tab_page_egtest.mm
@@ -123,7 +123,8 @@
 
 // Tests the metrics are reported correctly.
 - (void)testNTPMetrics {
-  self.testServer->RegisterRequestHandler(base::Bind(&StandardResponse));
+  self.testServer->RegisterRequestHandler(
+      base::BindRepeating(&StandardResponse));
   GREYAssertTrue(self.testServer->Start(), @"Test server failed to start.");
   const GURL pageURL = self.testServer->GetURL(kPageURL);
   [ChromeEarlGrey closeAllTabs];
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm b/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm
index 460d1e0..82286ab 100644
--- a/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm
+++ b/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm
@@ -33,6 +33,7 @@
 
 - (void)viewDidLoad {
   [super viewDidLoad];
+  [self.contentSuggestionsViewController willMoveToParentViewController:self];
   [self addChildViewController:self.contentSuggestionsViewController];
   [self.view addSubview:self.contentSuggestionsViewController.view];
   [self.contentSuggestionsViewController didMoveToParentViewController:self];
diff --git a/media/fuchsia/cdm/service/fuchsia_cdm_manager.cc b/media/fuchsia/cdm/service/fuchsia_cdm_manager.cc
index cb2f70e..7edfa05 100644
--- a/media/fuchsia/cdm/service/fuchsia_cdm_manager.cc
+++ b/media/fuchsia/cdm/service/fuchsia_cdm_manager.cc
@@ -171,7 +171,6 @@
     base::Optional<DataStoreId> data_store_id = GetDataStoreIdForPath(
         std::move(storage_path), std::move(create_fetcher_callback));
     if (!data_store_id) {
-      DLOG(ERROR) << "Unable to create DataStore for path: " << storage_path;
       request.Close(ZX_ERR_NO_RESOURCES);
       return;
     }
@@ -292,11 +291,12 @@
 
   base::FilePath storage_path = GetStoragePath(key_system, origin);
 
+  auto task = base::BindOnce(&CreateStorageDirectory, storage_path);
   storage_task_runner_->PostTaskAndReplyWithResult(
-      FROM_HERE, base::BindOnce(&CreateStorageDirectory, storage_path),
+      FROM_HERE, std::move(task),
       base::BindOnce(&FuchsiaCdmManager::CreateCdm, weak_factory_.GetWeakPtr(),
                      key_system, std::move(create_fetcher_cb),
-                     std::move(request), storage_path));
+                     std::move(request), std::move(storage_path)));
 }
 
 void FuchsiaCdmManager::set_on_key_system_disconnect_for_test_callback(
diff --git a/net/quic/quic_stream_factory_test.cc b/net/quic/quic_stream_factory_test.cc
index 469d132..f88bcc313 100644
--- a/net/quic/quic_stream_factory_test.cc
+++ b/net/quic/quic_stream_factory_test.cc
@@ -7798,7 +7798,7 @@
   crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
 
   // Set up the socket data used by the original network, which encounters a
-  // write erorr.
+  // write error.
   MockQuicData socket_data1(version_);
   socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
   int packet_num = 1;
diff --git a/remoting/resources/remoting_strings_en-GB.xtb b/remoting/resources/remoting_strings_en-GB.xtb
index f31703c..dc23084 100644
--- a/remoting/resources/remoting_strings_en-GB.xtb
+++ b/remoting/resources/remoting_strings_en-GB.xtb
@@ -61,6 +61,7 @@
 <translation id="405887016757208221">The remote computer has failed to initialise the session. If problem persists please try to configure the host again.</translation>
 <translation id="4060747889721220580">Download file</translation>
 <translation id="4126409073460786861">After setup is complete, refresh this page, then you'll be able to access the computer by choosing your device and entering the PIN</translation>
+<translation id="4139423942711457311">Copyright 2020 Google LLC. All rights reserved.</translation>
 <translation id="4145029455188493639">Signed in as <ph name="EMAIL_ADDRESS" />.</translation>
 <translation id="4155497795971509630">Some required components are missing. Please make sure that you have installed the latest version of the software and try again.</translation>
 <translation id="4176825807642096119">Access code</translation>
diff --git a/remoting/resources/remoting_strings_hy.xtb b/remoting/resources/remoting_strings_hy.xtb
index 4d0eb1f..d62449f 100644
--- a/remoting/resources/remoting_strings_hy.xtb
+++ b/remoting/resources/remoting_strings_hy.xtb
@@ -61,6 +61,7 @@
 <translation id="405887016757208221">Հեռակա համակարգիչը չկարողացավ սկզբնավորել աշխատաշրջանը: Եթե խնդիրը կրկնվի, փորձեք հանգույցը նորից կազմաձևել:</translation>
 <translation id="4060747889721220580">Ֆայլի ներբեռնում</translation>
 <translation id="4126409073460786861">Կարգավորումն ավարտելուց հետո թարմացրեք այս էջը, որից հետո դուք կկարողանաք միանալ համակարգչին՝ ընտրելով ձեր սարքը և մուտքագրելով PIN կոդը:</translation>
+<translation id="4139423942711457311">© 2020 Google LLC։ Բոլոր իրավունքները պահպանված են։</translation>
 <translation id="4145029455188493639">Դուք մուտք եք գործել <ph name="EMAIL_ADDRESS" /> հաշիվ:</translation>
 <translation id="4155497795971509630">Որոշ պարտադիր բաղադրիչներ բացակայում են: Համոզվեք, որ ձեզ մոտ տեղադրված է ծրագրակազմի վերջին տարբերակը և կրկին փորձեք:</translation>
 <translation id="4176825807642096119">Մուտքի կոդ</translation>
diff --git a/services/network/BUILD.gn b/services/network/BUILD.gn
index 462cc96..14d8e68 100644
--- a/services/network/BUILD.gn
+++ b/services/network/BUILD.gn
@@ -185,6 +185,8 @@
     "url_request_context_builder_mojo.h",
     "url_request_context_owner.cc",
     "url_request_context_owner.h",
+    "web_bundle_manager.cc",
+    "web_bundle_manager.h",
     "web_bundle_url_loader_factory.cc",
     "web_bundle_url_loader_factory.h",
   ]
@@ -351,6 +353,7 @@
     "udp_socket_unittest.cc",
     "upload_progress_tracker_unittest.cc",
     "url_loader_unittest.cc",
+    "web_bundle_manager_unittest.cc",
     "web_bundle_url_loader_factory_unittest.cc",
   ]
 
diff --git a/services/network/cors/cors_url_loader_factory.cc b/services/network/cors/cors_url_loader_factory.cc
index 7dc5657..7a332fb 100644
--- a/services/network/cors/cors_url_loader_factory.cc
+++ b/services/network/cors/cors_url_loader_factory.cc
@@ -189,6 +189,7 @@
       ignore_isolated_world_origin_(params->ignore_isolated_world_origin),
       trust_token_redemption_policy_(params->trust_token_redemption_policy),
       isolation_info_(params->isolation_info),
+      debug_tag_(params->debug_tag),
       origin_access_list_(origin_access_list) {
   DCHECK(context_);
   DCHECK(origin_access_list_);
@@ -432,6 +433,8 @@
         url::debug::ScopedOriginCrashKey initiator_lock_crash_key(
             debug::GetRequestInitiatorOriginLockCrashKey(),
             base::OptionalOrNullptr(request_initiator_origin_lock_));
+        base::debug::ScopedCrashKeyString debug_tag_crash_key(
+            debug::GetFactoryDebugTagCrashKey(), debug_tag_);
         mojo::ReportBadMessage(
             "CorsURLLoaderFactory: lock VS initiator mismatch");
         return false;
diff --git a/services/network/cors/cors_url_loader_factory.h b/services/network/cors/cors_url_loader_factory.h
index 86074799..e58692f 100644
--- a/services/network/cors/cors_url_loader_factory.h
+++ b/services/network/cors/cors_url_loader_factory.h
@@ -109,6 +109,7 @@
   const bool ignore_isolated_world_origin_;
   const mojom::TrustTokenRedemptionPolicy trust_token_redemption_policy_;
   net::IsolationInfo isolation_info_;
+  const std::string debug_tag_;
 
   // Relative order of |network_loader_factory_| and |loaders_| matters -
   // URLLoaderFactory needs to live longer than URLLoaders created using the
diff --git a/services/network/crash_keys.cc b/services/network/crash_keys.cc
index 3b14982..414f562 100644
--- a/services/network/crash_keys.cc
+++ b/services/network/crash_keys.cc
@@ -40,6 +40,12 @@
   return crash_key;
 }
 
+base::debug::CrashKeyString* GetFactoryDebugTagCrashKey() {
+  static auto* crash_key = base::debug::AllocateCrashKeyString(
+      "url_loader_factory_debug_tag", base::debug::CrashKeySize::Size64);
+  return crash_key;
+}
+
 ScopedRequestCrashKeys::ScopedRequestCrashKeys(
     const network::ResourceRequest& request)
     : url_(GetRequestUrlCrashKey(), request.url.possibly_invalid_spec()),
diff --git a/services/network/crash_keys.h b/services/network/crash_keys.h
index 580965f..c02c08b 100644
--- a/services/network/crash_keys.h
+++ b/services/network/crash_keys.h
@@ -16,6 +16,7 @@
 namespace debug {
 
 base::debug::CrashKeyString* GetRequestInitiatorOriginLockCrashKey();
+base::debug::CrashKeyString* GetFactoryDebugTagCrashKey();
 
 class ScopedRequestCrashKeys {
  public:
diff --git a/services/network/network_context.h b/services/network/network_context.h
index d6ec5511..140d758 100644
--- a/services/network/network_context.h
+++ b/services/network/network_context.h
@@ -58,6 +58,7 @@
 #include "services/network/public/mojom/websocket.mojom.h"
 #include "services/network/socket_factory.h"
 #include "services/network/url_request_context_owner.h"
+#include "services/network/web_bundle_manager.h"
 
 #if BUILDFLAG(IS_ASH)
 #include "crypto/scoped_nss_types.h"
@@ -513,6 +514,8 @@
     return trust_token_store_.get();
   }
 
+  WebBundleManager& GetWebBundleManager() { return web_bundle_manager_; }
+
 #if BUILDFLAG(IS_CT_SUPPORTED)
   void SetIsSCTAuditingEnabledForTesting(bool enabled) {
     is_sct_auditing_enabled_ = enabled;
@@ -751,6 +754,10 @@
   // HttpAuthHandle via |NetworkContext::CreateHttpAuthHandlerFactory|.
   net::HttpAuthPreferences http_auth_merged_preferences_;
 
+  // Each network context holds its own WebBundleManager, which
+  // manages the lifetiem of a WebBundleURLLoaderFactory object.
+  WebBundleManager web_bundle_manager_;
+
   base::WeakPtrFactory<NetworkContext> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(NetworkContext);
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
index 0a09398..2437231 100644
--- a/services/network/public/mojom/network_context.mojom
+++ b/services/network/public/mojom/network_context.mojom
@@ -697,6 +697,10 @@
   // trusted source, it would be good to set this depending on the headers'
   // values, too.
   TrustTokenRedemptionPolicy trust_token_redemption_policy = kPotentiallyPermit;
+
+  // TODO(lukasza): https://crbug.com/1151008: Consider removing this
+  // diagnostic aid once the bug is understood.
+  string debug_tag = "";
 };
 
 // The |credentials| output parameter is given to URLRequest::SetAuth()
diff --git a/services/network/url_loader_factory.cc b/services/network/url_loader_factory.cc
index 26c07f7b..aef9fe1 100644
--- a/services/network/url_loader_factory.cc
+++ b/services/network/url_loader_factory.cc
@@ -29,6 +29,7 @@
 #include "services/network/trust_tokens/local_trust_token_operation_delegate_impl.h"
 #include "services/network/trust_tokens/trust_token_request_helper_factory.h"
 #include "services/network/url_loader.h"
+#include "services/network/web_bundle_url_loader_factory.h"
 #include "url/gurl.h"
 #include "url/origin.h"
 
@@ -129,6 +130,31 @@
         origin_head_same_as_request_origin);
   }
 
+  if (url_request.web_bundle_token_params.has_value() &&
+      url_request.destination !=
+          network::mojom::RequestDestination::kWebBundle) {
+    // Load a subresource from a WebBundle.
+    base::WeakPtr<WebBundleURLLoaderFactory> web_bundle_url_loader_factory =
+        context_->GetWebBundleManager().GetWebBundleURLLoaderFactory(
+            url_request.web_bundle_token_params->token);
+    if (web_bundle_url_loader_factory) {
+      web_bundle_url_loader_factory->CreateLoaderAndStart(
+          std::move(receiver), routing_id, request_id, options, url_request,
+          std::move(client), traffic_annotation);
+      return;
+    }
+    // Fails if the token is missing in the WebBundleManager. This can happen
+    // when the network process crashes. In normal cases, our assumption is this
+    // shouldn't happen as long as requests from a renderer are ordered.
+    //
+    // TODO(crbug.com/1082020): Re-visit this case to be more robust.
+    URLLoaderCompletionStatus status;
+    status.error_code = net::ERR_INVALID_WEB_BUNDLE;  // Tentative.
+    status.completion_time = base::TimeTicks::Now();
+    mojo::Remote<mojom::URLLoaderClient>(std::move(client))->OnComplete(status);
+    return;
+  }
+
   mojom::NetworkServiceClient* network_service_client = nullptr;
   base::WeakPtr<KeepaliveStatisticsRecorder> keepalive_statistics_recorder;
   base::WeakPtr<NetworkUsageAccumulator> network_usage_accumulator;
@@ -247,6 +273,16 @@
     cookie_observer_->Clone(cookie_observer.InitWithNewPipeAndPassReceiver());
   }
 
+  if (url_request.destination ==
+      network::mojom::RequestDestination::kWebBundle) {
+    DCHECK(url_request.web_bundle_token_params.has_value());
+    base::WeakPtr<WebBundleURLLoaderFactory> web_bundle_url_loader_factory =
+        context_->GetWebBundleManager().CreateWebBundleURLLoaderFactory(
+            *url_request.web_bundle_token_params);
+    client =
+        web_bundle_url_loader_factory->WrapURLLoaderClient(std::move(client));
+  }
+
   auto loader = std::make_unique<URLLoader>(
       context_->url_request_context(), network_service_client,
       context_->client(),
diff --git a/services/network/web_bundle_manager.cc b/services/network/web_bundle_manager.cc
new file mode 100644
index 0000000..d5d09a9
--- /dev/null
+++ b/services/network/web_bundle_manager.cc
@@ -0,0 +1,56 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "services/network/web_bundle_manager.h"
+
+#include "base/bind.h"
+#include "mojo/public/cpp/bindings/remote.h"
+#include "services/network/public/mojom/web_bundle_handle.mojom.h"
+#include "services/network/web_bundle_url_loader_factory.h"
+
+namespace network {
+
+WebBundleManager::WebBundleManager() = default;
+
+WebBundleManager::~WebBundleManager() = default;
+
+base::WeakPtr<WebBundleURLLoaderFactory>
+WebBundleManager::CreateWebBundleURLLoaderFactory(
+    const ResourceRequest::WebBundleTokenParams& web_bundle_token_params) {
+  DCHECK(factories_.find(web_bundle_token_params.token) == factories_.end());
+
+  mojo::Remote<mojom::WebBundleHandle> remote(
+      web_bundle_token_params.CloneHandle());
+
+  // Set a disconnect handler to remove a WebBundleURLLoaderFactory from this
+  // WebBundleManager when the corresponding endpoint in the renderer is
+  // removed.
+  remote.set_disconnect_handler(
+      base::BindOnce(&WebBundleManager::DisconnectHandler,
+                     // |this| outlives |remote|.
+                     base::Unretained(this), web_bundle_token_params.token));
+
+  auto factory = std::make_unique<WebBundleURLLoaderFactory>(std::move(remote));
+  auto weak_factory = factory->GetWeakPtr();
+  factories_.insert({web_bundle_token_params.token, std::move(factory)});
+
+  return weak_factory;
+}
+
+base::WeakPtr<WebBundleURLLoaderFactory>
+WebBundleManager::GetWebBundleURLLoaderFactory(
+    const base::UnguessableToken& web_bundle_token) {
+  auto it = factories_.find(web_bundle_token);
+  if (it == factories_.end()) {
+    return nullptr;
+  }
+  return it->second->GetWeakPtr();
+}
+
+void WebBundleManager::DisconnectHandler(
+    base::UnguessableToken web_bundle_token) {
+  factories_.erase(web_bundle_token);
+}
+
+}  // namespace network
diff --git a/services/network/web_bundle_manager.h b/services/network/web_bundle_manager.h
new file mode 100644
index 0000000..e2abfe9
--- /dev/null
+++ b/services/network/web_bundle_manager.h
@@ -0,0 +1,46 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SERVICES_NETWORK_WEB_BUNDLE_MANAGER_H_
+#define SERVICES_NETWORK_WEB_BUNDLE_MANAGER_H_
+
+#include <map>
+
+#include "base/component_export.h"
+#include "base/memory/weak_ptr.h"
+#include "base/unguessable_token.h"
+#include "services/network/public/cpp/resource_request.h"
+
+namespace network {
+
+class WebBundleURLLoaderFactory;
+
+// WebBundleManager manages the lifetime of a WebBundleURLLoaderFactory object,
+// which is created for each WebBundle.
+class COMPONENT_EXPORT(NETWORK_SERVICE) WebBundleManager {
+ public:
+  WebBundleManager();
+  ~WebBundleManager();
+
+  WebBundleManager(const WebBundleManager&) = delete;
+  WebBundleManager& operator=(const WebBundleManager&) = delete;
+
+  base::WeakPtr<WebBundleURLLoaderFactory> CreateWebBundleURLLoaderFactory(
+      const ResourceRequest::WebBundleTokenParams& params);
+
+  base::WeakPtr<WebBundleURLLoaderFactory> GetWebBundleURLLoaderFactory(
+      const base::UnguessableToken& token);
+
+ private:
+  void DisconnectHandler(base::UnguessableToken token);
+
+  // Maps a WebBundle token to a WebBundleURLLoaderFactory.
+  // TODO(crbug.com/1149255): Use a tuple of (PID, token) as a key.
+  std::map<base::UnguessableToken, std::unique_ptr<WebBundleURLLoaderFactory>>
+      factories_;
+};
+
+}  // namespace network
+
+#endif  // SERVICES_NETWORK_WEB_BUNDLE_MANAGER_H_
diff --git a/services/network/web_bundle_manager_unittest.cc b/services/network/web_bundle_manager_unittest.cc
new file mode 100644
index 0000000..cfd0b593
--- /dev/null
+++ b/services/network/web_bundle_manager_unittest.cc
@@ -0,0 +1,44 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "services/network/web_bundle_manager.h"
+
+#include "base/test/task_environment.h"
+#include "base/unguessable_token.h"
+#include "services/network/public/cpp/resource_request.h"
+#include "services/network/public/mojom/web_bundle_handle.mojom.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace network {
+
+class WebBundleManagerTest : public testing::Test {
+ public:
+  WebBundleManagerTest() = default;
+  ~WebBundleManagerTest() override = default;
+
+ private:
+  base::test::TaskEnvironment task_environment_;
+};
+
+TEST_F(WebBundleManagerTest, RemoveFactoryWhenDisconnected) {
+  WebBundleManager manager;
+  base::UnguessableToken token = base::UnguessableToken::Create();
+  {
+    mojo::PendingRemote<network::mojom::WebBundleHandle> handle;
+    mojo::PendingReceiver<network::mojom::WebBundleHandle> receiver =
+        handle.InitWithNewPipeAndPassReceiver();
+    auto token_params =
+        ResourceRequest::WebBundleTokenParams(token, std::move(handle));
+
+    auto factory = manager.CreateWebBundleURLLoaderFactory(token_params);
+    ASSERT_TRUE(factory);
+    ASSERT_TRUE(manager.GetWebBundleURLLoaderFactory(token));
+    // Getting out of scope to delete |receiver|.
+  }
+  base::RunLoop().RunUntilIdle();
+  EXPECT_FALSE(manager.GetWebBundleURLLoaderFactory(token))
+      << "The manager should remove a factory when the handle is disconnected.";
+}
+
+}  // namespace network
diff --git a/services/network/web_bundle_url_loader_factory.cc b/services/network/web_bundle_url_loader_factory.cc
index 3264c29..dd658be 100644
--- a/services/network/web_bundle_url_loader_factory.cc
+++ b/services/network/web_bundle_url_loader_factory.cc
@@ -6,6 +6,7 @@
 
 #include "components/web_package/web_bundle_parser.h"
 #include "components/web_package/web_bundle_utils.h"
+#include "mojo/public/cpp/bindings/self_owned_receiver.h"
 #include "mojo/public/cpp/system/data_pipe.h"
 #include "mojo/public/cpp/system/data_pipe_drainer.h"
 #include "mojo/public/cpp/system/data_pipe_producer.h"
@@ -15,6 +16,8 @@
 
 namespace {
 
+constexpr size_t kBlockedBodyAllocationSize = 1;
+
 class PipeDataSource : public mojo::DataPipeProducer::DataSource {
  public:
   explicit PipeDataSource(std::vector<uint8_t> data) : data_(std::move(data)) {}
@@ -49,6 +52,76 @@
   std::move(callback).Run(result);
 }
 
+// URLLoaderClient which wraps the real URLLoaderClient.
+class WebBundleURLLoaderClient : public network::mojom::URLLoaderClient {
+ public:
+  WebBundleURLLoaderClient(
+      base::WeakPtr<WebBundleURLLoaderFactory> factory,
+      mojo::PendingRemote<network::mojom::URLLoaderClient> wrapped)
+      : factory_(factory), wrapped_(std::move(wrapped)) {}
+
+ private:
+  // network::mojom::URLLoaderClient implementation:
+  void OnReceiveResponse(
+      network::mojom::URLResponseHeadPtr response_head) override {
+    wrapped_->OnReceiveResponse(std::move(response_head));
+  }
+
+  void OnReceiveRedirect(
+      const net::RedirectInfo& redirect_info,
+      network::mojom::URLResponseHeadPtr response_head) override {
+    wrapped_->OnReceiveRedirect(redirect_info, std::move(response_head));
+  }
+
+  void OnUploadProgress(int64_t current_position,
+                        int64_t total_size,
+                        OnUploadProgressCallback ack_callback) override {
+    wrapped_->OnUploadProgress(current_position, total_size,
+                               std::move(ack_callback));
+  }
+
+  void OnReceiveCachedMetadata(mojo_base::BigBuffer data) override {
+    wrapped_->OnReceiveCachedMetadata(std::move(data));
+  }
+
+  void OnTransferSizeUpdated(int32_t transfer_size_diff) override {
+    wrapped_->OnTransferSizeUpdated(transfer_size_diff);
+  }
+
+  void OnStartLoadingResponseBody(
+      mojo::ScopedDataPipeConsumerHandle body) override {
+    if (factory_)
+      factory_->SetBundleStream(std::move(body));
+
+    // Send empty body to the wrapped URLLoaderClient.
+    MojoCreateDataPipeOptions options;
+    options.struct_size = sizeof(MojoCreateDataPipeOptions);
+    options.flags = MOJO_CREATE_DATA_PIPE_FLAG_NONE;
+    options.element_num_bytes = 1;
+    options.capacity_num_bytes = kBlockedBodyAllocationSize;
+    mojo::ScopedDataPipeProducerHandle producer;
+    mojo::ScopedDataPipeConsumerHandle consumer;
+    MojoResult result = mojo::CreateDataPipe(&options, &producer, &consumer);
+    if (result != MOJO_RESULT_OK) {
+      wrapped_->OnComplete(
+          URLLoaderCompletionStatus(net::ERR_INSUFFICIENT_RESOURCES));
+      completed_ = true;
+      return;
+    }
+    wrapped_->OnStartLoadingResponseBody(std::move(consumer));
+  }
+
+  void OnComplete(const network::URLLoaderCompletionStatus& status) override {
+    if (completed_)
+      return;
+    wrapped_->OnComplete(status);
+  }
+
+  base::WeakPtr<WebBundleURLLoaderFactory> factory_;
+  mojo::Remote<network::mojom::URLLoaderClient> wrapped_;
+  bool completed_ = false;
+};
+
 }  // namespace
 
 class WebBundleURLLoaderFactory::URLLoader : public mojom::URLLoader {
@@ -272,6 +345,17 @@
                      weak_ptr_factory_.GetWeakPtr()));
 }
 
+mojo::PendingRemote<mojom::URLLoaderClient>
+WebBundleURLLoaderFactory::WrapURLLoaderClient(
+    mojo::PendingRemote<mojom::URLLoaderClient> wrapped) {
+  mojo::PendingRemote<mojom::URLLoaderClient> client;
+  auto client_impl = std::make_unique<WebBundleURLLoaderClient>(
+      weak_ptr_factory_.GetWeakPtr(), std::move(wrapped));
+  mojo::MakeSelfOwnedReceiver(std::move(client_impl),
+                              client.InitWithNewPipeAndPassReceiver());
+  return client;
+}
+
 void WebBundleURLLoaderFactory::CreateLoaderAndStart(
     mojo::PendingReceiver<mojom::URLLoader> receiver,
     int32_t routing_id,
diff --git a/services/network/web_bundle_url_loader_factory.h b/services/network/web_bundle_url_loader_factory.h
index 6e4669a..4ca04f10 100644
--- a/services/network/web_bundle_url_loader_factory.h
+++ b/services/network/web_bundle_url_loader_factory.h
@@ -28,6 +28,8 @@
   base::WeakPtr<WebBundleURLLoaderFactory> GetWeakPtr() const;
 
   void SetBundleStream(mojo::ScopedDataPipeConsumerHandle body);
+  mojo::PendingRemote<mojom::URLLoaderClient> WrapURLLoaderClient(
+      mojo::PendingRemote<mojom::URLLoaderClient> wrapped);
 
   // mojom::URLLoaderFactory implementation.
   void CreateLoaderAndStart(mojo::PendingReceiver<mojom::URLLoader> receiver,
diff --git a/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_negative.filter b/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_negative.filter
index 6686ff32..841e667 100644
--- a/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_negative.filter
+++ b/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_negative.filter
@@ -141,6 +141,8 @@
 -WebviewLoginTest.*
 -WebviewProxyAuthLoginTest.*
 -WelcomeScreenBrowserTest.*
+-WelcomeScreenChromeVoxHintTest.*
+-WelcomeScreenInternationalChromeVoxHintTest.*
 -WelcomeScreenSystemDevModeBrowserTest.*
 -WelcomeScreenTimezone.*
 -WizardControllerBrokenLocalStateTest.*
diff --git a/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_positive.filter b/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_positive.filter
index 0e3874e..5010699 100644
--- a/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_positive.filter
+++ b/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_positive.filter
@@ -141,6 +141,8 @@
 WebviewLoginTest.*
 WebviewProxyAuthLoginTest.*
 WelcomeScreenBrowserTest.*
+WelcomeScreenChromeVoxHintTest.*
+WelcomeScreenInternationalChromeVoxHintTest.*
 WelcomeScreenSystemDevModeBrowserTest.*
 WelcomeScreenTimezone.*
 WizardControllerBrokenLocalStateTest.*
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 0b5cba7..5f903d19 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -6151,24 +6151,6 @@
             ]
         }
     ],
-    "SafeBrowsingNetworkContexts": [
-        {
-            "platforms": [
-                "windows",
-                "linux",
-                "mac"
-            ],
-            "experiments": [
-                {
-                    "name": "Enabled",
-                    "enable_features": [
-                        "SafeBrowsingRemoveCookies",
-                        "SafeBrowsingSeparateNetworkContexts"
-                    ]
-                }
-            ]
-        }
-    ],
     "SafeBrowsingPasswordProtectionForSavedPasswords": [
         {
             "platforms": [
@@ -6240,6 +6222,24 @@
             ]
         }
     ],
+    "SafeBrowsingPerProfileNetworkContexts": [
+        {
+            "platforms": [
+                "windows",
+                "linux",
+                "mac"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "SafeBrowsingRemoveCookies",
+                        "SafeBrowsingSeparateNetworkContexts"
+                    ]
+                }
+            ]
+        }
+    ],
     "SafeBrowsingRealTimeUrlLookupEnabledWithToken": [
         {
             "platforms": [
@@ -7685,11 +7685,9 @@
             ],
             "experiments": [
                 {
-                    "name": "VizForWebView",
+                    "name": "Enabled",
                     "enable_features": [
                         "EnableSharedImageForWebview",
-                        "UseSkiaForGLReadback",
-                        "UseSkiaRenderer",
                         "VizForWebView"
                     ]
                 }
diff --git a/third_party/android_build_tools/aapt2/DIR_METADATA b/third_party/android_build_tools/aapt2/DIR_METADATA
new file mode 100644
index 0000000..c914ddc4
--- /dev/null
+++ b/third_party/android_build_tools/aapt2/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Build"
+}
+
+team_email: "build@chromium.org"
diff --git a/third_party/android_build_tools/aapt2/OWNERS b/third_party/android_build_tools/aapt2/OWNERS
index a3c99f0..9e11d6e 100644
--- a/third_party/android_build_tools/aapt2/OWNERS
+++ b/third_party/android_build_tools/aapt2/OWNERS
@@ -1,6 +1,3 @@
 digit@chromium.org
 agrieve@chromium.org
 mheikal@chromium.org
-
-# TEAM: build@chromium.org
-# COMPONENT: Build
diff --git a/third_party/android_build_tools/art/DIR_METADATA b/third_party/android_build_tools/art/DIR_METADATA
new file mode 100644
index 0000000..c914ddc4
--- /dev/null
+++ b/third_party/android_build_tools/art/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Build"
+}
+
+team_email: "build@chromium.org"
diff --git a/third_party/android_build_tools/art/OWNERS b/third_party/android_build_tools/art/OWNERS
index ce16044b..ea2493b 100644
--- a/third_party/android_build_tools/art/OWNERS
+++ b/third_party/android_build_tools/art/OWNERS
@@ -1,6 +1,3 @@
 agrieve@chromium.org
 lizeb@chromium.org
 mheikal@chomrium.org
-
-# TEAM: build@chromium.org
-# COMPONENT: Build
diff --git a/third_party/android_crazy_linker/DIR_METADATA b/third_party/android_crazy_linker/DIR_METADATA
new file mode 100644
index 0000000..c914ddc4
--- /dev/null
+++ b/third_party/android_crazy_linker/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Build"
+}
+
+team_email: "build@chromium.org"
diff --git a/third_party/android_crazy_linker/OWNERS b/third_party/android_crazy_linker/OWNERS
index 12dd9d0..0fda8e0b 100644
--- a/third_party/android_crazy_linker/OWNERS
+++ b/third_party/android_crazy_linker/OWNERS
@@ -1,5 +1,2 @@
 digit@chromium.org
 rmcilroy@chromium.org
-
-# TEAM: build@chromium.org
-# COMPONENT: Build
diff --git a/third_party/android_crazy_linker/src/DIR_METADATA b/third_party/android_crazy_linker/src/DIR_METADATA
new file mode 100644
index 0000000..14b5edb
--- /dev/null
+++ b/third_party/android_crazy_linker/src/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Internals"
+}
diff --git a/third_party/android_crazy_linker/src/OWNERS b/third_party/android_crazy_linker/src/OWNERS
index f136fc1..e69de29 100644
--- a/third_party/android_crazy_linker/src/OWNERS
+++ b/third_party/android_crazy_linker/src/OWNERS
@@ -1 +0,0 @@
-# COMPONENT: Internals
diff --git a/third_party/android_data_chart/DIR_METADATA b/third_party/android_data_chart/DIR_METADATA
new file mode 100644
index 0000000..9e1f781
--- /dev/null
+++ b/third_party/android_data_chart/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Internals>Network>DataProxy"
+}
+
+os: ANDROID
diff --git a/third_party/android_data_chart/OWNERS b/third_party/android_data_chart/OWNERS
index 97bf407a..59295d78e 100644
--- a/third_party/android_data_chart/OWNERS
+++ b/third_party/android_data_chart/OWNERS
@@ -1,4 +1,2 @@
 tedchoc@chromium.org
 bengr@chromium.org
-# COMPONENT: Internals>Network>DataProxy
-# OS: Android
diff --git a/third_party/android_deps/DIR_METADATA b/third_party/android_deps/DIR_METADATA
new file mode 100644
index 0000000..de96fed
--- /dev/null
+++ b/third_party/android_deps/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Tools"
+}
+
+os: ANDROID
diff --git a/third_party/android_deps/OWNERS b/third_party/android_deps/OWNERS
index 9fdc4d7..a143ac9 100644
--- a/third_party/android_deps/OWNERS
+++ b/third_party/android_deps/OWNERS
@@ -2,6 +2,3 @@
 mheikal@chromium.org
 smaier@chromium.org
 wnwen@chromium.org
-
-# OS: Android
-# COMPONENT: Tools
diff --git a/third_party/android_deps/libs/DIR_METADATA b/third_party/android_deps/libs/DIR_METADATA
new file mode 100644
index 0000000..7a2580a
--- /dev/null
+++ b/third_party/android_deps/libs/DIR_METADATA
@@ -0,0 +1 @@
+os: ANDROID
diff --git a/third_party/android_deps/libs/OWNERS b/third_party/android_deps/libs/OWNERS
index 20d3654..2c6a75e 100644
--- a/third_party/android_deps/libs/OWNERS
+++ b/third_party/android_deps/libs/OWNERS
@@ -4,5 +4,3 @@
 set noparent
 
 file://third_party/OWNERS
-
-# OS: Android
diff --git a/third_party/android_media/DIR_METADATA b/third_party/android_media/DIR_METADATA
new file mode 100644
index 0000000..87867de
--- /dev/null
+++ b/third_party/android_media/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Internals>Media>UI"
+}
+
+team_email: "media-dev@chromium.org"
diff --git a/third_party/android_media/OWNERS b/third_party/android_media/OWNERS
index 28f64e5..2d28246 100644
--- a/third_party/android_media/OWNERS
+++ b/third_party/android_media/OWNERS
@@ -1,4 +1 @@
 mlamouri@chromium.org
-
-# TEAM: media-dev@chromium.org
-# COMPONENT: Internals>Media>UI
diff --git a/third_party/android_opengl/DIR_METADATA b/third_party/android_opengl/DIR_METADATA
new file mode 100644
index 0000000..44b80fa0
--- /dev/null
+++ b/third_party/android_opengl/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Mobile"
+}
+
+os: ANDROID
diff --git a/third_party/android_opengl/OWNERS b/third_party/android_opengl/OWNERS
index 8e190d0..bac46c84 100644
--- a/third_party/android_opengl/OWNERS
+++ b/third_party/android_opengl/OWNERS
@@ -1,5 +1,2 @@
 dtrainor@chromium.org
 powei@chromium.org
-
-# COMPONENT: Mobile
-# OS: Android
diff --git a/third_party/android_protobuf/DIR_METADATA b/third_party/android_protobuf/DIR_METADATA
new file mode 100644
index 0000000..25ed5eec
--- /dev/null
+++ b/third_party/android_protobuf/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Internals"
+}
+
+team_email: "chromium-dev@chromium.org"
diff --git a/third_party/android_protobuf/OWNERS b/third_party/android_protobuf/OWNERS
index 047c73c..89c37e7 100644
--- a/third_party/android_protobuf/OWNERS
+++ b/third_party/android_protobuf/OWNERS
@@ -1,4 +1,2 @@
 meek@chromium.org
 nyquist@chromium.org
-# COMPONENT: Internals
-# TEAM: chromium-dev@chromium.org
diff --git a/third_party/android_provider/DIR_METADATA b/third_party/android_provider/DIR_METADATA
new file mode 100644
index 0000000..30fe702ce
--- /dev/null
+++ b/third_party/android_provider/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "UI>Browser>Downloads"
+}
+
+team_email: "chrome-downloads@chromium.org"
diff --git a/third_party/android_provider/OWNERS b/third_party/android_provider/OWNERS
index f41c891..5af98041 100644
--- a/third_party/android_provider/OWNERS
+++ b/third_party/android_provider/OWNERS
@@ -1,6 +1,3 @@
 qinmin@chromium.org
 dtrainor@chromium.org
 
-# TEAM: chrome-downloads@chromium.org
-# COMPONENT: UI>Browser>Downloads
-
diff --git a/third_party/android_sdk/DIR_METADATA b/third_party/android_sdk/DIR_METADATA
new file mode 100644
index 0000000..c914ddc4
--- /dev/null
+++ b/third_party/android_sdk/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Build"
+}
+
+team_email: "build@chromium.org"
diff --git a/third_party/android_sdk/OWNERS b/third_party/android_sdk/OWNERS
index 46c5413..98f48e4 100644
--- a/third_party/android_sdk/OWNERS
+++ b/third_party/android_sdk/OWNERS
@@ -4,6 +4,3 @@
 rmcilroy@chromium.org
 wnwen@chromium.org
 yfriedman@chromium.org
-
-# TEAM: build@chromium.org
-# COMPONENT: Build
diff --git a/third_party/android_support_test_runner/DIR_METADATA b/third_party/android_support_test_runner/DIR_METADATA
new file mode 100644
index 0000000..5abea21
--- /dev/null
+++ b/third_party/android_support_test_runner/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Test>Android"
+}
diff --git a/third_party/android_support_test_runner/OWNERS b/third_party/android_support_test_runner/OWNERS
index 8fd43ad6..d107d25c 100644
--- a/third_party/android_support_test_runner/OWNERS
+++ b/third_party/android_support_test_runner/OWNERS
@@ -1,5 +1,3 @@
 bjoyce@chromium.org
 hypan@google.com
 yzjr@google.com
-
-# COMPONENT: Test>Android
diff --git a/third_party/android_swipe_refresh/DIR_METADATA b/third_party/android_swipe_refresh/DIR_METADATA
new file mode 100644
index 0000000..b4dcb712
--- /dev/null
+++ b/third_party/android_swipe_refresh/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "UI>Browser>Mobile"
+}
diff --git a/third_party/android_swipe_refresh/OWNERS b/third_party/android_swipe_refresh/OWNERS
index ec059793..d3930d9 100644
--- a/third_party/android_swipe_refresh/OWNERS
+++ b/third_party/android_swipe_refresh/OWNERS
@@ -1,3 +1 @@
 tedchoc@chromium.org
-
-# COMPONENT: UI>Browser>Mobile
diff --git a/third_party/android_swipe_refresh/java/DIR_METADATA b/third_party/android_swipe_refresh/java/DIR_METADATA
new file mode 100644
index 0000000..3052711
--- /dev/null
+++ b/third_party/android_swipe_refresh/java/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "UI>Browser>Mobile"
+}
+
+os: ANDROID
diff --git a/third_party/android_swipe_refresh/java/OWNERS b/third_party/android_swipe_refresh/java/OWNERS
index db445d4c..e69de29 100644
--- a/third_party/android_swipe_refresh/java/OWNERS
+++ b/third_party/android_swipe_refresh/java/OWNERS
@@ -1,2 +0,0 @@
-# COMPONENT: UI>Browser>Mobile
-# OS: Android
diff --git a/third_party/android_system_sdk/DIR_METADATA b/third_party/android_system_sdk/DIR_METADATA
new file mode 100644
index 0000000..6e8bcf2c
--- /dev/null
+++ b/third_party/android_system_sdk/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Mobile>WebView"
+}
+
+team_email: "android-webview-dev@chromium.org"
diff --git a/third_party/android_system_sdk/OWNERS b/third_party/android_system_sdk/OWNERS
index 554fe70..88308273 100644
--- a/third_party/android_system_sdk/OWNERS
+++ b/third_party/android_system_sdk/OWNERS
@@ -1,5 +1,2 @@
 torne@chromium.org
 tobiasjs@chromium.org
-
-# TEAM: android-webview-dev@chromium.org
-# COMPONENT: Mobile>WebView
diff --git a/third_party/androidx/DIR_METADATA b/third_party/androidx/DIR_METADATA
new file mode 100644
index 0000000..de96fed
--- /dev/null
+++ b/third_party/androidx/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+  component: "Tools"
+}
+
+os: ANDROID
diff --git a/third_party/androidx/OWNERS b/third_party/androidx/OWNERS
index 447f6b6..aea47a05 100644
--- a/third_party/androidx/OWNERS
+++ b/third_party/androidx/OWNERS
@@ -1,4 +1 @@
 file://third_party/android_deps/OWNERS
-
-# OS: Android
-# COMPONENT: Tools
diff --git a/third_party/blink/common/feature_policy/feature_policy.cc b/third_party/blink/common/feature_policy/feature_policy.cc
index cb5702a..6685918ad 100644
--- a/third_party/blink/common/feature_policy/feature_policy.cc
+++ b/third_party/blink/common/feature_policy/feature_policy.cc
@@ -110,16 +110,6 @@
 }
 
 // static
-std::unique_ptr<FeaturePolicy> FeaturePolicy::CreateWithOpenerPolicy(
-    const FeaturePolicyFeatureState& inherited_policies,
-    const url::Origin& origin) {
-  std::unique_ptr<FeaturePolicy> new_policy = base::WrapUnique(
-      new FeaturePolicy(origin, GetFeaturePolicyFeatureList()));
-  new_policy->inherited_policies_ = inherited_policies;
-  return new_policy;
-}
-
-// static
 std::unique_ptr<FeaturePolicy> FeaturePolicy::CopyStateFrom(
     const FeaturePolicy* source) {
   if (!source)
@@ -290,47 +280,4 @@
   return feature_list_;
 }
 
-// static
-mojom::FeaturePolicyFeature FeaturePolicy::FeatureForSandboxFlag(
-    network::mojom::WebSandboxFlags flag) {
-  switch (flag) {
-    case network::mojom::WebSandboxFlags::kAll:
-      NOTREACHED();
-      break;
-    case network::mojom::WebSandboxFlags::kTopNavigation:
-      return mojom::FeaturePolicyFeature::kTopNavigation;
-    case network::mojom::WebSandboxFlags::kForms:
-      return mojom::FeaturePolicyFeature::kFormSubmission;
-    case network::mojom::WebSandboxFlags::kAutomaticFeatures:
-    case network::mojom::WebSandboxFlags::kScripts:
-      return mojom::FeaturePolicyFeature::kScript;
-    case network::mojom::WebSandboxFlags::kPopups:
-      return mojom::FeaturePolicyFeature::kPopups;
-    case network::mojom::WebSandboxFlags::kPointerLock:
-      return mojom::FeaturePolicyFeature::kPointerLock;
-    case network::mojom::WebSandboxFlags::kOrientationLock:
-      return mojom::FeaturePolicyFeature::kOrientationLock;
-    case network::mojom::WebSandboxFlags::kModals:
-      return mojom::FeaturePolicyFeature::kModals;
-    case network::mojom::WebSandboxFlags::kPresentationController:
-      return mojom::FeaturePolicyFeature::kPresentation;
-    case network::mojom::WebSandboxFlags::kDownloads:
-      return mojom::FeaturePolicyFeature::kDownloads;
-    // Other flags fall through to the bitmask test below. They are named
-    // specifically here so that authors introducing new flags must consider
-    // this method when adding them.
-    case network::mojom::WebSandboxFlags::kDocumentDomain:
-    case network::mojom::WebSandboxFlags::kNavigation:
-    case network::mojom::WebSandboxFlags::kNone:
-    case network::mojom::WebSandboxFlags::kOrigin:
-    case network::mojom::WebSandboxFlags::kPlugins:
-    case network::mojom::WebSandboxFlags::
-        kPropagatesToAuxiliaryBrowsingContexts:
-    case network::mojom::WebSandboxFlags::kTopNavigationByUserActivation:
-    case network::mojom::WebSandboxFlags::kStorageAccessByUserActivation:
-      break;
-  }
-  return mojom::FeaturePolicyFeature::kNotFound;
-}
-
 }  // namespace blink
diff --git a/third_party/blink/public/common/feature_policy/feature_policy.h b/third_party/blink/public/common/feature_policy/feature_policy.h
index db0e57b..b1d0d6d 100644
--- a/third_party/blink/public/common/feature_policy/feature_policy.h
+++ b/third_party/blink/public/common/feature_policy/feature_policy.h
@@ -169,10 +169,6 @@
       const ParsedFeaturePolicy& container_policy,
       const url::Origin& origin);
 
-  static std::unique_ptr<FeaturePolicy> CreateWithOpenerPolicy(
-      const FeaturePolicyFeatureState& inherited_policies,
-      const url::Origin& origin);
-
   static std::unique_ptr<FeaturePolicy> CopyStateFrom(const FeaturePolicy*);
 
   bool IsFeatureEnabled(mojom::FeaturePolicyFeature feature) const;
@@ -199,9 +195,6 @@
   // Returns the list of features which can be controlled by Feature Policy.
   const FeaturePolicyFeatureList& GetFeatureList() const;
 
-  static mojom::FeaturePolicyFeature FeatureForSandboxFlag(
-      network::mojom::WebSandboxFlags flag);
-
  private:
   friend class FeaturePolicyTest;
 
diff --git a/third_party/blink/public/mojom/input/input_event_result.mojom b/third_party/blink/public/mojom/input/input_event_result.mojom
index b2d68a0..58da718da 100644
--- a/third_party/blink/public/mojom/input/input_event_result.mojom
+++ b/third_party/blink/public/mojom/input/input_event_result.mojom
@@ -20,8 +20,6 @@
   kConsumed,
   // Was not consumed.
   kNotConsumed,
-  // Was handled should bubble to parent.
-  kConsumedShouldBubble,
   // Could not be targeted.
   kNoConsumerExists,
   // Discarded.
diff --git a/third_party/blink/public/platform/input/input_handler_proxy.h b/third_party/blink/public/platform/input/input_handler_proxy.h
index 01017c7..54b9f9e 100644
--- a/third_party/blink/public/platform/input/input_handler_proxy.h
+++ b/third_party/blink/public/platform/input/input_handler_proxy.h
@@ -126,12 +126,6 @@
     // isn't a consumer for them (and send only the scroll events).
     DROP_EVENT,
 
-    // The compositor did handle the scroll event (so it wouldn't forward the
-    // event to the main thread.) but it didn't consume the scroll so it should
-    // pass it to the next consumer (either overscrolling or bubbling the event
-    // to the next renderer).
-    DID_HANDLE_SHOULD_BUBBLE,
-
     // Used only in scroll unification; the compositor couldn't determine the
     // scroll node to handle the event and requires a second try with an
     // ElementId provided by a hit test in Blink.
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
index 3bb8e4d..b2bb462 100644
--- a/third_party/blink/public/platform/web_runtime_features.h
+++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -105,7 +105,6 @@
   BLINK_PLATFORM_EXPORT static void EnableDisplayCutoutAPI(bool);
   BLINK_PLATFORM_EXPORT static void EnableDocumentPolicy(bool);
   BLINK_PLATFORM_EXPORT static void EnableDocumentPolicyNegotiation(bool);
-  BLINK_PLATFORM_EXPORT static void EnableFeaturePolicyForSandbox(bool);
   BLINK_PLATFORM_EXPORT static void EnableFileSystem(bool);
   BLINK_PLATFORM_EXPORT static void EnableGenericSensorExtraClasses(bool);
   BLINK_PLATFORM_EXPORT static void EnableImplicitRootScroller(bool);
diff --git a/third_party/blink/public/strings/translations/blink_strings_ar.xtb b/third_party/blink/public/strings/translations/blink_strings_ar.xtb
index 22ce4a1..f6613a431 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ar.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ar.xtb
@@ -152,6 +152,7 @@
 <translation id="5334352251556557839">تعذّر تشغيل الوسائط</translation>
 <translation id="537648784377940524">يجب أن يكون الحد الأدنى للتاريخ (<ph name="MIN_DATE_OR_TIME" />
 ) قبل الحد الأقصى للتاريخ (<ph name="MAX_DATE_OR_TIME" />).</translation>
+<translation id="5378437566635403538">موسّع، تم فتح مربع الحوار.</translation>
 <translation id="5406322316791861025">شكل</translation>
 <translation id="5425179576310518467">التاريخ الحالي</translation>
 <translation id="5453733299334684579">عنصر متفرع</translation>
@@ -168,6 +169,7 @@
 <translation id="5677946354068040947">خيارات إضافية</translation>
 <translation id="576709008726043716">مقدمة</translation>
 <translation id="57838592816432529">كتم الصوت</translation>
+<translation id="5787939484346677755">موسّع، خيارات إكمال تلقائي متوفّرة.</translation>
 <translation id="5860033963881614850">غير مفعّل</translation>
 <translation id="588258955323874662">ملء الشاشة</translation>
 <translation id="5888666972993069672">يتم الإرسال الآن إلى <ph name="DEVICE_FRIENDLY_NAME" /></translation>
@@ -181,6 +183,7 @@
 <translation id="6023896073578205740">مربع القائمة</translation>
 <translation id="6150588977291308318">قائمة مراجع</translation>
 <translation id="6164829606128959761">متر</translation>
+<translation id="6165053282446038410">موسّع، <ph name="COUNT" /> خيار إكمال تلقائي متوفّر.</translation>
 <translation id="6166809985690652833">كلمة ختامية</translation>
 <translation id="6209276755895393898">يبدو أن: <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">الصفحة الحالية</translation>
@@ -215,12 +218,14 @@
 <translation id="693476918119313863">عنوان</translation>
 <translation id="6941933287844615239">تنزيل وسائط</translation>
 <translation id="6981594929165378967">إدراج</translation>
+<translation id="698788488269350478">موسّع</translation>
 <translation id="6989848892321993519">يُرجى إطالة هذا النص إلى <ph name="MIN_CHARACTERS" /> من الحروف أو أكثر (أنت الآن تستخدم حرفًا واحدًا).</translation>
 <translation id="7034405885550056553">اقتراح</translation>
 <translation id="709897737746224366">يُرجى مطابقة التنسيق المطلوب.</translation>
 <translation id="7102274145889307184">الموقع الجغرافي الحالي</translation>
 <translation id="7118469954320184356">لا يتوفر أي وصف.</translation>
 <translation id="7139483182332611405">تمهيد</translation>
+<translation id="7198226213493847604">زر قائمة منبثقة</translation>
 <translation id="7214187073215825913">معلومات المحتوى</translation>
 <translation id="7238347055216017155">التوكيد</translation>
 <translation id="7263440858009898357">يُرجى اختيار عنصر من القائمة.</translation>
@@ -288,6 +293,7 @@
 <translation id="8808573423886751634">فصل</translation>
 <translation id="8845239796550121995">يتم الآن الإرسال إلى جهاز التلفزيون</translation>
 <translation id="8851136666856101339">main</translation>
+<translation id="8861621546968757188">زر مربع حوار منبثق</translation>
 <translation id="8875657656876809964">خطأ في تشغيل الفيديو.</translation>
 <translation id="8889402386540077796">تدرج اللون</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> كيلوبايت</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_as.xtb b/third_party/blink/public/strings/translations/blink_strings_as.xtb
index 34a4738..6c33d0b 100644
--- a/third_party/blink/public/strings/translations/blink_strings_as.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_as.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">অনুগ্ৰহ কৰি '<ph name="ATSIGN" />'ৰ পূর্বৰ অংশ দিয়ক। '<ph name="INVALIDADDRESS" />' অসম্পূর্ণ হৈছে।</translation>
 <translation id="5334352251556557839">মিডিয়া প্লে' কৰিব পৰা নগ'ল।</translation>
 <translation id="537648784377940524">সৰ্বনিম্ন তাৰিখ (<ph name="MIN_DATE_OR_TIME" />) সৰ্বোচ্চ তাৰিখ (<ph name="MAX_DATE_OR_TIME" />)তকৈ আগতে হ’বই লাগিব।</translation>
+<translation id="5378437566635403538">বিস্তাৰ কৰা হ’ল, ডায়লগ খোলা হৈছে।</translation>
 <translation id="5406322316791861025">আকাৰ</translation>
 <translation id="5425179576310518467">বৰ্তমানৰ তাৰিখ</translation>
 <translation id="5453733299334684579">ট্ৰীত থকা বস্তু</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">অধিক বিকল্প</translation>
 <translation id="576709008726043716">পৰিচয়</translation>
 <translation id="57838592816432529">মিউট কৰক</translation>
+<translation id="5787939484346677755">বিস্তাৰ কৰা হ’ল, স্বয়ংক্ৰিয়ভাৱে সম্পূৰ্ণ কৰা বিকল্প উপলব্ধ।</translation>
 <translation id="5860033963881614850">অফ আছে</translation>
 <translation id="588258955323874662">পূৰ্ণস্ক্ৰীণ</translation>
 <translation id="5888666972993069672">এতিয়া <ph name="DEVICE_FRIENDLY_NAME" />ত কাষ্ট কৰি থকা হৈছে</translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">সূচী বাকচ</translation>
 <translation id="6150588977291308318">গ্ৰন্থপঞ্জী</translation>
 <translation id="6164829606128959761">মিটাৰ</translation>
+<translation id="6165053282446038410">বিস্তাৰ কৰা হ’ল, <ph name="COUNT" /> স্বয়ংক্ৰিয়ভাৱে সম্পূৰ্ণ কৰা বিকল্প উপলব্ধ।</translation>
 <translation id="6166809985690652833">উত্তৰকথন</translation>
 <translation id="6209276755895393898">এনেকুৱা যেন লাগিছে: <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">বৰ্তমানৰ পৃষ্ঠা</translation>
@@ -213,12 +216,14 @@
 <translation id="693476918119313863">হে’ডাৰ</translation>
 <translation id="6941933287844615239">মিডিয়া ডাউনল'ড কৰক</translation>
 <translation id="6981594929165378967">অন্তর্ভুক্তিকৰণ</translation>
+<translation id="698788488269350478">বিস্তাৰ কৰা হ’ল।</translation>
 <translation id="6989848892321993519">অনুগ্ৰহ কৰি এই পাঠটো <ph name="MIN_CHARACTERS" /> বৰ্ণলৈ বৃদ্ধি কৰক (আপুনি বৰ্তমান ১টা বৰ্ণ ব্যৱহাৰ কৰিছে)।</translation>
 <translation id="7034405885550056553">পৰামৰ্শ</translation>
 <translation id="709897737746224366">অনুগ্ৰহ কৰি অনুৰোধ কৰা ফর্মেটটো মিলাওক।</translation>
 <translation id="7102274145889307184">বৰ্তমানৰ অৱস্থান</translation>
 <translation id="7118469954320184356">কোনো বিৱৰণ উপলব্ধ নহয়।</translation>
 <translation id="7139483182332611405">পাতনি</translation>
+<translation id="7198226213493847604">মেনু পপ আপ বুটাম</translation>
 <translation id="7214187073215825913">সমলৰ তথ্য</translation>
 <translation id="7238347055216017155">বিশেষ জোৰ</translation>
 <translation id="7263440858009898357">অনুগ্ৰহ কৰি সূচীৰ কোনো বস্তু বাছনি কৰক।</translation>
@@ -286,6 +291,7 @@
 <translation id="8808573423886751634">অধ্যায়</translation>
 <translation id="8845239796550121995">বর্তমান আপোনাৰ TVত কাষ্টিং কৰি আছে</translation>
 <translation id="8851136666856101339">মুখ্য</translation>
+<translation id="8861621546968757188">ডায়লগ পপ আপ বুটাম</translation>
 <translation id="8875657656876809964">ভিডিঅ’ প্লে‘বেক আসোঁৱাহ</translation>
 <translation id="8889402386540077796">হুই</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_be.xtb b/third_party/blink/public/strings/translations/blink_strings_be.xtb
index 180bc8a..54988d4 100644
--- a/third_party/blink/public/strings/translations/blink_strings_be.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_be.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">Адрас "<ph name="INVALIDADDRESS" />" – няпоўны. Увядзіце частку перад сімвалам "<ph name="ATSIGN" />".</translation>
 <translation id="5334352251556557839">Не ўдалося прайграць мультымедыйны файл.</translation>
 <translation id="537648784377940524">Мінімальная дата (<ph name="MIN_DATE_OR_TIME" />) павінна быць ранейшая за максімальную (<ph name="MAX_DATE_OR_TIME" />).</translation>
+<translation id="5378437566635403538">– разгорнута, дыялогавае акно адкрыта.</translation>
 <translation id="5406322316791861025">фігура</translation>
 <translation id="5425179576310518467">бягучая дата</translation>
 <translation id="5453733299334684579">элемент дрэва</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">дадатковыя параметры</translation>
 <translation id="576709008726043716">уводзіны</translation>
 <translation id="57838592816432529">Выключыць</translation>
+<translation id="5787939484346677755">– разгорнута, варыянты аўтазапаўнення даступныя.</translation>
 <translation id="5860033963881614850">Выключана</translation>
 <translation id="588258955323874662">Поўнаэкранны рэжым</translation>
 <translation id="5888666972993069672">Ідзе трансляцыя на прыладу <ph name="DEVICE_FRIENDLY_NAME" /></translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">поле спіса</translation>
 <translation id="6150588977291308318">бібліяграфія</translation>
 <translation id="6164829606128959761">лічыльнік</translation>
+<translation id="6165053282446038410">– разгорнута, даступных варыянтаў аўтазапаўнення: <ph name="COUNT" />.</translation>
 <translation id="6166809985690652833">пасляслоўе</translation>
 <translation id="6209276755895393898">Здаецца, гэта наступнае: <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">бягучая старонка</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">загаловак</translation>
 <translation id="6941933287844615239">спампаваць мультымедыя</translation>
 <translation id="6981594929165378967">устаўка</translation>
+<translation id="698788488269350478">– разгорнута.</translation>
 <translation id="6989848892321993519">Павялічце колькасць сімвалаў у гэтым тэксце як мінімум да <ph name="MIN_CHARACTERS" /> (зараз у вас 1 сімвал).</translation>
 <translation id="7034405885550056553">прапанова</translation>
 <translation id="709897737746224366">Прытрымлівайцеся ўказанага фармату.</translation>
 <translation id="7102274145889307184">бягучае месцазнаходжанне</translation>
 <translation id="7118469954320184356">Няма апісання.</translation>
 <translation id="7139483182332611405">прадмова</translation>
+<translation id="7198226213493847604">усплывальная кнопка меню</translation>
 <translation id="7214187073215825913">звесткі пра змесціва</translation>
 <translation id="7238347055216017155">выдзяленне</translation>
 <translation id="7263440858009898357">Выберыце пункт са спіса</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">глава</translation>
 <translation id="8845239796550121995">Ідзе трансляцыя на тэлевізар</translation>
 <translation id="8851136666856101339">галоўны</translation>
+<translation id="8861621546968757188">усплывальная кнопка дыялогавага акна</translation>
 <translation id="8875657656876809964">Памылка прайгравання відэа</translation>
 <translation id="8889402386540077796">Адценне</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> КБ</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_cs.xtb b/third_party/blink/public/strings/translations/blink_strings_cs.xtb
index ee4bad5..4322a9a 100644
--- a/third_party/blink/public/strings/translations/blink_strings_cs.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_cs.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">Zadejte část před znakem <ph name="ATSIGN" />. Adresa <ph name="INVALIDADDRESS" /> není úplná.</translation>
 <translation id="5334352251556557839">Médium nelze přehrát.</translation>
 <translation id="537648784377940524">Minimální datum (<ph name="MIN_DATE_OR_TIME" />) musí být před maximálním datem (<ph name="MAX_DATE_OR_TIME" />).</translation>
+<translation id="5378437566635403538">rozbaleno, dialogové okno otevřeno.</translation>
 <translation id="5406322316791861025">číslice</translation>
 <translation id="5425179576310518467">aktuální datum</translation>
 <translation id="5453733299334684579">položka stromu</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">další možnosti</translation>
 <translation id="576709008726043716">úvod</translation>
 <translation id="57838592816432529">Ztlumit</translation>
+<translation id="5787939484346677755">rozbaleno, jsou k dispozici možnosti automatického dokončení.</translation>
 <translation id="5860033963881614850">Vypnuto</translation>
 <translation id="588258955323874662">Celá obrazovka</translation>
 <translation id="5888666972993069672">Odesílání do zařízení <ph name="DEVICE_FRIENDLY_NAME" /></translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">seznam</translation>
 <translation id="6150588977291308318">bibliografie</translation>
 <translation id="6164829606128959761">měřič</translation>
+<translation id="6165053282446038410">rozbaleno, <ph name="COUNT" /> jsou k dispozici možnosti automatického dokončení.</translation>
 <translation id="6166809985690652833">doslov</translation>
 <translation id="6209276755895393898">Vypadá jako: <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">aktuální stránka</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">záhlaví</translation>
 <translation id="6941933287844615239">stáhnout média</translation>
 <translation id="6981594929165378967">vložení</translation>
+<translation id="698788488269350478">rozbaleno.</translation>
 <translation id="6989848892321993519">Prodlužte prosím tento text na <ph name="MIN_CHARACTERS" /> či více znaků. (Aktuálně má 1 znak.)</translation>
 <translation id="7034405885550056553">návrh</translation>
 <translation id="709897737746224366">Zadejte hodnotu, která odpovídá požadovanému formátu.</translation>
 <translation id="7102274145889307184">aktuální poloha</translation>
 <translation id="7118469954320184356">Popis není k dispozici.</translation>
 <translation id="7139483182332611405">předmluva</translation>
+<translation id="7198226213493847604">vyskakovací tlačítko nabídky</translation>
 <translation id="7214187073215825913">informace o obsahu</translation>
 <translation id="7238347055216017155">zvýraznění</translation>
 <translation id="7263440858009898357">Vyberte prosím v seznamu některou položku.</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">kapitola</translation>
 <translation id="8845239796550121995">Odesílání do televize</translation>
 <translation id="8851136666856101339">hlavní</translation>
+<translation id="8861621546968757188">vyskakovací tlačítko dialogového okna</translation>
 <translation id="8875657656876809964">Chyba přehrávání videa</translation>
 <translation id="8889402386540077796">Odstín</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> kB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_iw.xtb b/third_party/blink/public/strings/translations/blink_strings_iw.xtb
index 89c20b07..770e581 100644
--- a/third_party/blink/public/strings/translations/blink_strings_iw.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_iw.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">יש להזין חלק ואחריו '<ph name="ATSIGN" />'‏. השדה '<ph name="INVALIDADDRESS" />' אינו מלא.</translation>
 <translation id="5334352251556557839">לא ניתן להפעיל את המדיה.</translation>
 <translation id="537648784377940524">התאריך המוקדם ביותר (<ph name="MIN_DATE_OR_TIME" />) חייב לחול לפני התאריך המאוחר ביותר (<ph name="MAX_DATE_OR_TIME" />).</translation>
+<translation id="5378437566635403538">הורחב, תיבת הדו-שיח נפתחה.</translation>
 <translation id="5406322316791861025">ספרה</translation>
 <translation id="5425179576310518467">התאריך הנוכחי</translation>
 <translation id="5453733299334684579">פריט בעץ</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">אפשרויות נוספות</translation>
 <translation id="576709008726043716">מבוא</translation>
 <translation id="57838592816432529">השתקה</translation>
+<translation id="5787939484346677755">הורחב, יש אפשרויות זמינות להשלמה אוטומטית.</translation>
 <translation id="5860033963881614850">כבוי</translation>
 <translation id="588258955323874662">מסך מלא</translation>
 <translation id="5888666972993069672">מתבצעת העברה אל <ph name="DEVICE_FRIENDLY_NAME" /></translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">תיבת רשימה</translation>
 <translation id="6150588977291308318">ביבליוגרפיה</translation>
 <translation id="6164829606128959761">מד</translation>
+<translation id="6165053282446038410">הורחב, יש <ph name="COUNT" /> אפשרויות זמינות להשלמה אוטומטית.</translation>
 <translation id="6166809985690652833">אחרית דבר</translation>
 <translation id="6209276755895393898">נראה כמו: <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">הדף הנוכחי</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">כותרת</translation>
 <translation id="6941933287844615239">הורדת מדיה</translation>
 <translation id="6981594929165378967">הוספה</translation>
+<translation id="698788488269350478">מורחב.</translation>
 <translation id="6989848892321993519">עליך להאריך את הטקסט ל-<ph name="MIN_CHARACTERS" /> תווים או יותר (אתה משתמש כרגע בתו אחד).</translation>
 <translation id="7034405885550056553">הצעה</translation>
 <translation id="709897737746224366">יש להתאים את הפורמט המבוקש.</translation>
 <translation id="7102274145889307184">המיקום הנוכחי</translation>
 <translation id="7118469954320184356">אין תיאור זמין.</translation>
 <translation id="7139483182332611405">הקדמה</translation>
+<translation id="7198226213493847604">לחצן קופץ של תפריט</translation>
 <translation id="7214187073215825913">פרטי תוכן</translation>
 <translation id="7238347055216017155">דגש</translation>
 <translation id="7263440858009898357">יש לבחור פריט מהרשימה.</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">פרק</translation>
 <translation id="8845239796550121995">העברת תוכן לטלוויזיה מתבצעת</translation>
 <translation id="8851136666856101339">main</translation>
+<translation id="8861621546968757188">לחצן קופץ של תיבת דו-שיח</translation>
 <translation id="8875657656876809964">שגיאה בהפעלת הסרטון</translation>
 <translation id="8889402386540077796">גוון</translation>
 <translation id="8901569739625249689">‏<ph name="QUANTITY" />KB‏</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ja.xtb b/third_party/blink/public/strings/translations/blink_strings_ja.xtb
index 6431382..d8cd7e5 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ja.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ja.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">「<ph name="ATSIGN" />」の前の文字列を入力してください。「<ph name="INVALIDADDRESS" />」は完全なメール アドレスではありません。</translation>
 <translation id="5334352251556557839">メディアを再生できません。</translation>
 <translation id="537648784377940524">最小の日付(<ph name="MIN_DATE_OR_TIME" />)には、最大の日付(<ph name="MAX_DATE_OR_TIME" />)より前の日付を指定してください。</translation>
+<translation id="5378437566635403538">要素が展開表示されています。ダイアログが開いています。</translation>
 <translation id="5406322316791861025">図</translation>
 <translation id="5425179576310518467">現在の日付</translation>
 <translation id="5453733299334684579">ツリー項目</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">その他のオプション</translation>
 <translation id="576709008726043716">序論</translation>
 <translation id="57838592816432529">ミュート</translation>
+<translation id="5787939484346677755">要素が展開表示されています。オートコンプリート候補があります。</translation>
 <translation id="5860033963881614850">オフ</translation>
 <translation id="588258955323874662">全画面表示</translation>
 <translation id="5888666972993069672">現在 <ph name="DEVICE_FRIENDLY_NAME" /> にキャストしています</translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">リストボックス</translation>
 <translation id="6150588977291308318">参考文献</translation>
 <translation id="6164829606128959761">メーター</translation>
+<translation id="6165053282446038410">要素が展開表示されています。<ph name="COUNT" /> 件のオートコンプリート候補があります。</translation>
 <translation id="6166809985690652833">後書き</translation>
 <translation id="6209276755895393898"><ph name="DESCRIPTION" /> の画像のようです</translation>
 <translation id="6212595056017402527">現在のページ</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">ヘッダー</translation>
 <translation id="6941933287844615239">メディアをダウンロード</translation>
 <translation id="6981594929165378967">挿入</translation>
+<translation id="698788488269350478">要素が展開表示されています。</translation>
 <translation id="6989848892321993519">このテキストは <ph name="MIN_CHARACTERS" /> 文字以上で指定してください(現在 1 文字で指定されています)。</translation>
 <translation id="7034405885550056553">提案</translation>
 <translation id="709897737746224366">指定されている形式で入力してください。</translation>
 <translation id="7102274145889307184">現在地</translation>
 <translation id="7118469954320184356">説明はありません。</translation>
 <translation id="7139483182332611405">序文</translation>
+<translation id="7198226213493847604">メニュー表示ボタン</translation>
 <translation id="7214187073215825913">コンテンツの情報</translation>
 <translation id="7238347055216017155">強調</translation>
 <translation id="7263440858009898357">リスト内の項目を選択してください。</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">章</translation>
 <translation id="8845239796550121995">テレビにキャストしています</translation>
 <translation id="8851136666856101339">本文</translation>
+<translation id="8861621546968757188">ダイアログ表示ボタン</translation>
 <translation id="8875657656876809964">動画再生エラー</translation>
 <translation id="8889402386540077796">色調</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_km.xtb b/third_party/blink/public/strings/translations/blink_strings_km.xtb
index 5780f0a..0db08fe9 100644
--- a/third_party/blink/public/strings/translations/blink_strings_km.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_km.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">សូមបញ្ចូលផ្នែកមួយនៅខាងមុខ '<ph name="ATSIGN" />'។ '<ph name="INVALIDADDRESS" />' មិនពេញលេញទេ។</translation>
 <translation id="5334352251556557839">មិនអាច​ចាក់មេឌៀបានទេ។</translation>
 <translation id="537648784377940524">កាលបរិច្ឆេទ​អប្បបរមា (<ph name="MIN_DATE_OR_TIME" />) ត្រូវតែឈរខាងមុខ​កាលបរិច្ឆេទអតិបរមា (<ph name="MAX_DATE_OR_TIME" />)។</translation>
+<translation id="5378437566635403538">បានពង្រីក, បានបើកប្រអប់។</translation>
 <translation id="5406322316791861025">តួលេខ</translation>
 <translation id="5425179576310518467">កាលបរិច្ឆេទ​បច្ចុប្បន្ន​</translation>
 <translation id="5453733299334684579">ធាតុជាមែកធាង</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">ជម្រើសច្រើនទៀត</translation>
 <translation id="576709008726043716">សេចក្ដី​ផ្ដើម</translation>
 <translation id="57838592816432529">បិទសម្លេង</translation>
+<translation id="5787939484346677755">បានពង្រីក, មានជម្រើសបំពេញ​ស្វ័យ​ប្រវត្តិ។</translation>
 <translation id="5860033963881614850">បិទ</translation>
 <translation id="588258955323874662">ពេញអេក្រង់</translation>
 <translation id="5888666972993069672">ឥឡូវ​នេះកំពុង​បញ្ជូនទៅ <ph name="DEVICE_FRIENDLY_NAME" /></translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">ប្រអប់បញ្ជី</translation>
 <translation id="6150588977291308318">គន្ថនិទ្ទេស</translation>
 <translation id="6164829606128959761">ម៉ែត្រ</translation>
+<translation id="6165053282446038410">បានពង្រីក, មានជម្រើស​បំពេញ​ស្វ័យ​ប្រវត្តិ <ph name="COUNT" />។</translation>
 <translation id="6166809985690652833">សេចក្ដី​បញ្ចប់</translation>
 <translation id="6209276755895393898">ហាក់ដូចជា៖ <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">ទំព័រ​បច្ចុប្បន្ន</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">ក្បាលទំព័រ</translation>
 <translation id="6941933287844615239">ទាញយកមេឌៀ</translation>
 <translation id="6981594929165378967">ការ​បញ្ចូល</translation>
+<translation id="698788488269350478">បានពង្រីក។</translation>
 <translation id="6989848892321993519">សូម​សរសេរ​អក្សរ​នេះឲ្យ​បាន​យ៉ាងហោច <ph name="MIN_CHARACTERS" /> តួ ឬ​ច្រើន​ជាងនេះ (បច្ចុប្បន្ននេះ​អ្នកសរសេរតែ 1 តួ)។</translation>
 <translation id="7034405885550056553">ការ​ណែនាំ</translation>
 <translation id="709897737746224366">សូមផ្គូផ្គងទម្រង់ដែលបានស្នើ។</translation>
 <translation id="7102274145889307184">ទីតាំង​បច្ចុប្បន្ន</translation>
 <translation id="7118469954320184356">មិន​មាន​ការពណ៌នាទេ។</translation>
 <translation id="7139483182332611405">អារម្ភកថា</translation>
+<translation id="7198226213493847604">ប៊ូតុងផ្ទាំងលោតឡើងរបស់ម៉ឺនុយ</translation>
 <translation id="7214187073215825913">ព័ត៌មាន​អំពីខ្លឹមសារ</translation>
 <translation id="7238347055216017155">សង្កត់ន័យ</translation>
 <translation id="7263440858009898357">សូមជ្រើសរើសធាតុនៅក្នុងបញ្ជី។</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">ជំពូក</translation>
 <translation id="8845239796550121995">ឥឡូវនេះកំពុងភ្ជាប់ទៅទូរទស្សន៍របស់អ្នក</translation>
 <translation id="8851136666856101339">ចម្បង</translation>
+<translation id="8861621546968757188">ប៊ូតុងផ្ទាំងលោតឡើងរបស់ប្រអប់</translation>
 <translation id="8875657656876809964">មាន​បញ្ហា​ក្នុង​ការ​ចាក់​​វីដេអូ​</translation>
 <translation id="8889402386540077796">ពណ៌</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ko.xtb b/third_party/blink/public/strings/translations/blink_strings_ko.xtb
index 60ee7df..c342505e 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ko.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ko.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">'<ph name="ATSIGN" />' 앞 부분을 입력해 주세요. '<ph name="INVALIDADDRESS" />'(이)가 완전하지 않습니다.</translation>
 <translation id="5334352251556557839">미디어를 재생할 수 없습니다.</translation>
 <translation id="537648784377940524">최소 날짜(<ph name="MIN_DATE_OR_TIME" />)는 최대 날짜(<ph name="MAX_DATE_OR_TIME" />) 이전이어야 합니다.</translation>
+<translation id="5378437566635403538">펼쳐졌습니다. 대화상자가 열렸습니다.</translation>
 <translation id="5406322316791861025">그림</translation>
 <translation id="5425179576310518467">현재 날짜</translation>
 <translation id="5453733299334684579">트리 항목</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">옵션 더보기</translation>
 <translation id="576709008726043716">소개</translation>
 <translation id="57838592816432529">음소거</translation>
+<translation id="5787939484346677755">펼쳐졌습니다. 자동 완성 옵션을 사용할 수 있습니다.</translation>
 <translation id="5860033963881614850">사용 안함</translation>
 <translation id="588258955323874662">전체화면</translation>
 <translation id="5888666972993069672">현재 <ph name="DEVICE_FRIENDLY_NAME" />(으)로 전송 중</translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">목록 상자</translation>
 <translation id="6150588977291308318">참고문헌</translation>
 <translation id="6164829606128959761">미터</translation>
+<translation id="6165053282446038410">펼쳐졌습니다. 자동 완성 옵션 <ph name="COUNT" />개를 사용할 수 있습니다.</translation>
 <translation id="6166809985690652833">후기</translation>
 <translation id="6209276755895393898"><ph name="DESCRIPTION" /> 같습니다</translation>
 <translation id="6212595056017402527">현재 페이지</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">머리글</translation>
 <translation id="6941933287844615239">미디어 다운로드</translation>
 <translation id="6981594929165378967">삽입</translation>
+<translation id="698788488269350478">펼쳐졌습니다.</translation>
 <translation id="6989848892321993519">이 텍스트를 <ph name="MIN_CHARACTERS" />자 이상으로 늘리세요(현재 1자 사용 중).</translation>
 <translation id="7034405885550056553">추천</translation>
 <translation id="709897737746224366">요청한 형식과 일치시키세요.</translation>
 <translation id="7102274145889307184">현재 위치</translation>
 <translation id="7118469954320184356">설명이 없습니다.</translation>
 <translation id="7139483182332611405">머리말</translation>
+<translation id="7198226213493847604">메뉴 팝업 버튼</translation>
 <translation id="7214187073215825913">콘텐츠 정보</translation>
 <translation id="7238347055216017155">강조</translation>
 <translation id="7263440858009898357">목록에서 항목을 선택하세요.</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">장</translation>
 <translation id="8845239796550121995">TV로 전송 중</translation>
 <translation id="8851136666856101339">main</translation>
+<translation id="8861621546968757188">대화상자 팝업 버튼</translation>
 <translation id="8875657656876809964">동영상 재생 오류</translation>
 <translation id="8889402386540077796">색조</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" />KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_lt.xtb b/third_party/blink/public/strings/translations/blink_strings_lt.xtb
index d858857..621d2fe 100644
--- a/third_party/blink/public/strings/translations/blink_strings_lt.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_lt.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">Įveskite el. pašto adreso dalį iki „<ph name="ATSIGN" />“. „<ph name="INVALIDADDRESS" />“ nėra visas el. pašto adresas.</translation>
 <translation id="5334352251556557839">Nepavyko paleisti medijos.</translation>
 <translation id="537648784377940524">Anksčiausia data (<ph name="MIN_DATE_OR_TIME" />) turi būti prieš vėliausią datą (<ph name="MAX_DATE_OR_TIME" />).</translation>
+<translation id="5378437566635403538">išskleista, dialogo langas atidarytas.</translation>
 <translation id="5406322316791861025">iliustracija</translation>
 <translation id="5425179576310518467">dabartinė data</translation>
 <translation id="5453733299334684579">medžio elementas</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">daugiau parinkčių</translation>
 <translation id="576709008726043716">įžanga</translation>
 <translation id="57838592816432529">Nutildyti</translation>
+<translation id="5787939484346677755">išskleista, pasiekiamos automatinio užbaigimo parinktys.</translation>
 <translation id="5860033963881614850">Išjungta</translation>
 <translation id="588258955323874662">Visas ekranas</translation>
 <translation id="5888666972993069672">Dabar perduodama į „<ph name="DEVICE_FRIENDLY_NAME" />“</translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">sąrašo laukelis</translation>
 <translation id="6150588977291308318">bibliografija</translation>
 <translation id="6164829606128959761">matuoklis</translation>
+<translation id="6165053282446038410">išskleista, pasiekiama automatinio užbaigimo parinkčių: <ph name="COUNT" />.</translation>
 <translation id="6166809985690652833">baigiamasis žodis</translation>
 <translation id="6209276755895393898">Tai tikriausiai yra: <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">dabartinis puslapis</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">antraštė</translation>
 <translation id="6941933287844615239">atsisiųsti mediją</translation>
 <translation id="6981594929165378967">įterpimas</translation>
+<translation id="698788488269350478">išskleistas.</translation>
 <translation id="6989848892321993519">Pailginkite šį tekstą iki <ph name="MIN_CHARACTERS" /> simb. ar daugiau (šiuo metu naudojate 1 simbolį).</translation>
 <translation id="7034405885550056553">pasiūlymas</translation>
 <translation id="709897737746224366">Priderinkite reikalaujamą formatą.</translation>
 <translation id="7102274145889307184">dabartinė vietovė</translation>
 <translation id="7118469954320184356">Nepasiekiamas joks aprašas.</translation>
 <translation id="7139483182332611405">įvadas</translation>
+<translation id="7198226213493847604">iššokantysis meniu mygtukas</translation>
 <translation id="7214187073215825913">turinio informacija</translation>
 <translation id="7238347055216017155">paryškinimas</translation>
 <translation id="7263440858009898357">Pasirinkite sąraše pateiktą elementą.</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">skyrius</translation>
 <translation id="8845239796550121995">Dabar perduodama į TV</translation>
 <translation id="8851136666856101339">main</translation>
+<translation id="8861621546968757188">iššokantysis dialogo lango mygtukas</translation>
 <translation id="8875657656876809964">Vaizdo įrašo atkūrimo klaida</translation>
 <translation id="8889402386540077796">Spalva</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ml.xtb b/third_party/blink/public/strings/translations/blink_strings_ml.xtb
index 5fa9863..41faf9b78 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ml.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ml.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">'<ph name="ATSIGN" />' എന്നതിനുശേഷം ഒരു ഭാഗം നൽകുക.'<ph name="INVALIDADDRESS" />' അപൂർണ്ണമാണ്.</translation>
 <translation id="5334352251556557839">മീഡിയ പ്ലേ ചെയ്യാനായില്ല.</translation>
 <translation id="537648784377940524">കുറഞ്ഞ തീയതി (<ph name="MIN_DATE_OR_TIME" />) പരമാവധി തീയതിയേക്കാൾ (<ph name="MAX_DATE_OR_TIME" />) മുമ്പുള്ളതായിരിക്കണം.</translation>
+<translation id="5378437566635403538">വികസിപ്പിച്ചു, ഡയലോഗ് തുറന്നു.</translation>
 <translation id="5406322316791861025">ആകാരം</translation>
 <translation id="5425179576310518467">നിലവിലെ തീയതി</translation>
 <translation id="5453733299334684579">ട്രീ ഇനം</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">കൂടുതൽ ഓപ്‌ഷനുകൾ</translation>
 <translation id="576709008726043716">ആമുഖം</translation>
 <translation id="57838592816432529">മ്യൂട്ട് ചെയ്യുക</translation>
+<translation id="5787939484346677755">വികസിപ്പിച്ചു, സ്വയമേവ പൂര്‍ത്തിയാക്കൽ ഓപ്ഷനുകൾ ലഭ്യമാണ്.</translation>
 <translation id="5860033963881614850">ഓഫാക്കുക</translation>
 <translation id="588258955323874662">പൂര്‍‌ണ്ണസ്‌ക്രീന്‍</translation>
 <translation id="5888666972993069672"><ph name="DEVICE_FRIENDLY_NAME" /> എന്ന ഉപകരണത്തിലേക്ക് കാസ്‌റ്റുചെയ്യുന്നു</translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">ലിസ്റ്റ് ബോക്‌സ്</translation>
 <translation id="6150588977291308318">ഗ്രന്ഥസൂചി</translation>
 <translation id="6164829606128959761">മീറ്റർ</translation>
+<translation id="6165053282446038410">വികസിപ്പിച്ചു, <ph name="COUNT" /> സ്വയമേവ പൂര്‍ത്തിയാക്കൽ ഓപ്ഷനുകൾ ലഭ്യമാണ്.</translation>
 <translation id="6166809985690652833">പിൻ കുറിപ്പ്</translation>
 <translation id="6209276755895393898">ഇങ്ങനെ ദൃശ്യമാകും: <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">നിലവിലെ പേജ്</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">തലക്കെട്ട്</translation>
 <translation id="6941933287844615239">മീഡിയ ഡൗൺലോഡ് ചെയ്യുക</translation>
 <translation id="6981594929165378967">ചേർക്കൽ</translation>
+<translation id="698788488269350478">വികസിപ്പിച്ചു.</translation>
 <translation id="6989848892321993519">ഈ ടെക്‌സ്റ്റിന്‍റെ ദൈർഘ്യം <ph name="MIN_CHARACTERS" /> പ്രതീകങ്ങളോ അതിൽ കൂടുതലോ ആയി വർദ്ധിപ്പിക്കുക (നിങ്ങൾ നിലവിൽ ഒരു പ്രതീകം മാത്രമേ ഉപയോഗിക്കുന്നുള്ളൂ).</translation>
 <translation id="7034405885550056553">നിർദ്ദേശം</translation>
 <translation id="709897737746224366">അഭ്യര്‍ത്ഥി ച്ചഫോര്‍മാറ്റ് ദയവായി പൊരുത്തപ്പെടുത്തുക.</translation>
 <translation id="7102274145889307184">നിലവിലെ ലൊക്കേഷൻ</translation>
 <translation id="7118469954320184356">വിവരണം ലഭ്യമല്ല.</translation>
 <translation id="7139483182332611405">പീഠിക</translation>
+<translation id="7198226213493847604">മെനു പോപ്പ് അപ്പ് ബട്ടൺ</translation>
 <translation id="7214187073215825913">ഉള്ളടക്ക വിവരങ്ങൾ</translation>
 <translation id="7238347055216017155">പ്രാധാന്യം</translation>
 <translation id="7263440858009898357">പട്ടികയിലെ ഒരു ഇനം ദയവായി തിരഞ്ഞെടുക്കുക</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">അധ്യായം</translation>
 <translation id="8845239796550121995">ഇപ്പോൾ നിങ്ങളുടെ ടിവിയിൽ കാസ്‌റ്റുചെയ്യുന്നു</translation>
 <translation id="8851136666856101339">main</translation>
+<translation id="8861621546968757188">ഡയലോഗ് പോപ്പ്-അപ്പ് ബട്ടൺ</translation>
 <translation id="8875657656876809964">വീഡിയോ പ്ലേബാക്ക് പിശക്</translation>
 <translation id="8889402386540077796">ഹ്യൂ</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_pl.xtb b/third_party/blink/public/strings/translations/blink_strings_pl.xtb
index 4f81529..fcb6e2e 100644
--- a/third_party/blink/public/strings/translations/blink_strings_pl.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_pl.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">Podaj część przed znakiem „<ph name="ATSIGN" />”. Adres „<ph name="INVALIDADDRESS" />” jest niepełny.</translation>
 <translation id="5334352251556557839">Nie można odtworzyć multimediów.</translation>
 <translation id="537648784377940524">Data minimalna (<ph name="MIN_DATE_OR_TIME" />) musi przypadać przed datą maksymalną (<ph name="MAX_DATE_OR_TIME" />).</translation>
+<translation id="5378437566635403538">rozwinięto, otwarto okno.</translation>
 <translation id="5406322316791861025">figura</translation>
 <translation id="5425179576310518467">bieżąca data</translation>
 <translation id="5453733299334684579">element drzewa</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">więcej opcji</translation>
 <translation id="576709008726043716">wprowadzenie</translation>
 <translation id="57838592816432529">Wycisz</translation>
+<translation id="5787939484346677755">rozwinięto, dostępne są opcje autouzupełniania.</translation>
 <translation id="5860033963881614850">Wyłączone</translation>
 <translation id="588258955323874662">Pełny ekran</translation>
 <translation id="5888666972993069672">Przesyłam na urządzenie <ph name="DEVICE_FRIENDLY_NAME" /></translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">pole listy</translation>
 <translation id="6150588977291308318">bibliografia</translation>
 <translation id="6164829606128959761">miernik</translation>
+<translation id="6165053282446038410">rozwinięto, liczba dostępnych opcji autouzupełniania: <ph name="COUNT" />.</translation>
 <translation id="6166809985690652833">posłowie</translation>
 <translation id="6209276755895393898">Wygląda jak: <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">bieżąca strona</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">nagłówek</translation>
 <translation id="6941933287844615239">pobierz multimedia</translation>
 <translation id="6981594929165378967">wstawienie</translation>
+<translation id="698788488269350478">rozwinięto.</translation>
 <translation id="6989848892321993519">Wydłuż ten tekst co najmniej do <ph name="MIN_CHARACTERS" /> znaków (teraz używasz jednego znaku).</translation>
 <translation id="7034405885550056553">sugestia</translation>
 <translation id="709897737746224366">Podaj wartość w wymaganym formacie.</translation>
 <translation id="7102274145889307184">bieżąca lokalizacja</translation>
 <translation id="7118469954320184356">Brak opisu.</translation>
 <translation id="7139483182332611405">wstęp</translation>
+<translation id="7198226213493847604">wyskakujący przycisk otwierający menu</translation>
 <translation id="7214187073215825913">informacje o treści</translation>
 <translation id="7238347055216017155">wyróżnienie</translation>
 <translation id="7263440858009898357">Wybierz element z listy.</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">rozdział</translation>
 <translation id="8845239796550121995">Przesyłam na telewizor</translation>
 <translation id="8851136666856101339">główny</translation>
+<translation id="8861621546968757188">wyskakujący przycisk okna</translation>
 <translation id="8875657656876809964">Błąd odtwarzania filmu</translation>
 <translation id="8889402386540077796">Odcień</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> kB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_sl.xtb b/third_party/blink/public/strings/translations/blink_strings_sl.xtb
index 32fe799..ecbeb1c 100644
--- a/third_party/blink/public/strings/translations/blink_strings_sl.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_sl.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">Vnesite nekaj in nato <ph name="ATSIGN" />. Naslov »<ph name="INVALIDADDRESS" />« je nepopoln.</translation>
 <translation id="5334352251556557839">Predstavnosti ni mogoče predvajati.</translation>
 <translation id="537648784377940524">Najzgodnejši datum (<ph name="MIN_DATE_OR_TIME" />) mora biti pred najpoznejšim datumom (<ph name="MAX_DATE_OR_TIME" />).</translation>
+<translation id="5378437566635403538">razširjen, pogovorno okno odprto.</translation>
 <translation id="5406322316791861025">številka</translation>
 <translation id="5425179576310518467">trenutni datum</translation>
 <translation id="5453733299334684579">element drevesa</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">več možnosti</translation>
 <translation id="576709008726043716">uvod</translation>
 <translation id="57838592816432529">Izklopi zvok</translation>
+<translation id="5787939484346677755">razširjen, na voljo so možnosti samodokončanja.</translation>
 <translation id="5860033963881614850">Izklopljeno</translation>
 <translation id="588258955323874662">Celozaslonsko</translation>
 <translation id="5888666972993069672">Predvajanje v napravi <ph name="DEVICE_FRIENDLY_NAME" /></translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">polje s seznamom</translation>
 <translation id="6150588977291308318">bibliografija</translation>
 <translation id="6164829606128959761">merilnik</translation>
+<translation id="6165053282446038410">razširjen, na voljo je toliko možnosti samodokončanja: <ph name="COUNT" />.</translation>
 <translation id="6166809985690652833">spremna beseda</translation>
 <translation id="6209276755895393898">Videti je kot: <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">trenutna stran</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">glava</translation>
 <translation id="6941933287844615239">prenos predstavnosti</translation>
 <translation id="6981594929165378967">vstavljanje</translation>
+<translation id="698788488269350478">razširjen.</translation>
 <translation id="6989848892321993519">Podaljšajte to besedilo na toliko znakov ali več: <ph name="MIN_CHARACTERS" /> (trenutno uporabljate en znak).</translation>
 <translation id="7034405885550056553">predlog</translation>
 <translation id="709897737746224366">Poskrbite za ujemanje z zahtevano obliko.</translation>
 <translation id="7102274145889307184">trenutna lokacija</translation>
 <translation id="7118469954320184356">Ni opisa.</translation>
 <translation id="7139483182332611405">predgovor</translation>
+<translation id="7198226213493847604">pojavni gumb menija</translation>
 <translation id="7214187073215825913">podatki o vsebini</translation>
 <translation id="7238347055216017155">poudarek</translation>
 <translation id="7263440858009898357">Izberite element s seznama.</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">poglavje</translation>
 <translation id="8845239796550121995">Predvajanje na televizorju</translation>
 <translation id="8851136666856101339">glavn</translation>
+<translation id="8861621546968757188">pojavni gumb za pogovorno okno</translation>
 <translation id="8875657656876809964">Napaka pri predvajanju videoposnetka</translation>
 <translation id="8889402386540077796">Odtenek</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_tr.xtb b/third_party/blink/public/strings/translations/blink_strings_tr.xtb
index 1275bd82..4009e00 100644
--- a/third_party/blink/public/strings/translations/blink_strings_tr.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_tr.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">Lütfen başına "<ph name="ATSIGN" />" ekleyin. "<ph name="INVALIDADDRESS" />" adresi eksik.</translation>
 <translation id="5334352251556557839">Medya oynatılamıyor.</translation>
 <translation id="537648784377940524">Minimum tarih (<ph name="MIN_DATE_OR_TIME" />), Maksimum tarihten (<ph name="MAX_DATE_OR_TIME" />) önce gelmelidir.</translation>
+<translation id="5378437566635403538">genişletildi, iletişim kutusu açıldı.</translation>
 <translation id="5406322316791861025">figür</translation>
 <translation id="5425179576310518467">şu anki tarih</translation>
 <translation id="5453733299334684579">ağaç öğesi</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">diğer seçenekler</translation>
 <translation id="576709008726043716">giriş</translation>
 <translation id="57838592816432529">Sesi kapat</translation>
+<translation id="5787939484346677755">genişletildi, otomatik tamamlama seçenekleri mevcut.</translation>
 <translation id="5860033963881614850">Kapalı</translation>
 <translation id="588258955323874662">Tam ekran</translation>
 <translation id="5888666972993069672">Şimdi <ph name="DEVICE_FRIENDLY_NAME" /> adlı cihaza yayınlanıyor</translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">liste kutusu</translation>
 <translation id="6150588977291308318">kaynakça</translation>
 <translation id="6164829606128959761">ölçüm aracı</translation>
+<translation id="6165053282446038410">genişletildi, <ph name="COUNT" /> otomatik tamamlama seçeneği mevcut.</translation>
 <translation id="6166809985690652833">sonsöz</translation>
 <translation id="6209276755895393898">Resimdeki şu olabilir: <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">geçerli sayfa</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">üst bilgi</translation>
 <translation id="6941933287844615239">medyayı indir</translation>
 <translation id="6981594929165378967">ekleme</translation>
+<translation id="698788488269350478">genişletildi.</translation>
 <translation id="6989848892321993519">Lütfen bu metni <ph name="MIN_CHARACTERS" /> karakter veya daha fazla olacak şekilde uzatın (şu anda 1 karakter kullanıyorsunuz).</translation>
 <translation id="7034405885550056553">öneri</translation>
 <translation id="709897737746224366">Lütfen istenen biçimi eşleştirin.</translation>
 <translation id="7102274145889307184">geçerli konum</translation>
 <translation id="7118469954320184356">Açıklama yok.</translation>
 <translation id="7139483182332611405">önsöz</translation>
+<translation id="7198226213493847604">menü pop-up düğmesi</translation>
 <translation id="7214187073215825913">içerik bilgisi</translation>
 <translation id="7238347055216017155">vurgu</translation>
 <translation id="7263440858009898357">Lütfen listeden bir öğe seçin.</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">bölüm</translation>
 <translation id="8845239796550121995">Şimdi TV'nize yayınlanıyor</translation>
 <translation id="8851136666856101339">main</translation>
+<translation id="8861621546968757188">iletişim kutusu pop-up düğmesi</translation>
 <translation id="8875657656876809964">Video oynatma hatası</translation>
 <translation id="8889402386540077796">Ton</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_uk.xtb b/third_party/blink/public/strings/translations/blink_strings_uk.xtb
index 6b3f0d9..4ee34fb 100644
--- a/third_party/blink/public/strings/translations/blink_strings_uk.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_uk.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">Введіть частину електронної адреси до знака "<ph name="ATSIGN" />". Електронна адреса "<ph name="INVALIDADDRESS" />" неповна.</translation>
 <translation id="5334352251556557839">Не вдалося відтворити медіавміст.</translation>
 <translation id="537648784377940524">Мінімальна дата (<ph name="MIN_DATE_OR_TIME" />) має передувати максимальній (<ph name="MAX_DATE_OR_TIME" />).</translation>
+<translation id="5378437566635403538">розгорнуто, вікно відкрито.</translation>
 <translation id="5406322316791861025">фігура</translation>
 <translation id="5425179576310518467">поточна дата</translation>
 <translation id="5453733299334684579">елемент дерева</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">більше опцій</translation>
 <translation id="576709008726043716">вступ</translation>
 <translation id="57838592816432529">Вимкнути звук</translation>
+<translation id="5787939484346677755">розгорнуто, доступні опції автозавершення.</translation>
 <translation id="5860033963881614850">Вимк.</translation>
 <translation id="588258955323874662">Повноекранний режим</translation>
 <translation id="5888666972993069672">Транслюється на пристрій <ph name="DEVICE_FRIENDLY_NAME" /></translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">вікно списку</translation>
 <translation id="6150588977291308318">бібліографія</translation>
 <translation id="6164829606128959761">вимірювач</translation>
+<translation id="6165053282446038410">розгорнуто, доступні опції автозавершення: <ph name="COUNT" />.</translation>
 <translation id="6166809985690652833">післямова</translation>
 <translation id="6209276755895393898">Схоже, на цьому зображенні <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">поточна сторінка</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">заголовок</translation>
 <translation id="6941933287844615239">завантажити медіафайл</translation>
 <translation id="6981594929165378967">вставлення</translation>
+<translation id="698788488269350478">розгорнуто.</translation>
 <translation id="6989848892321993519">У тексті має бути не менше стількох символів: <ph name="MIN_CHARACTERS" />. Наразі ви ввели 1 символ.</translation>
 <translation id="7034405885550056553">пропозиція</translation>
 <translation id="709897737746224366">Виберіть потрібний формат.</translation>
 <translation id="7102274145889307184">поточне місцезнаходження</translation>
 <translation id="7118469954320184356">Немає опису.</translation>
 <translation id="7139483182332611405">передмова</translation>
+<translation id="7198226213493847604">кнопка відкриття меню</translation>
 <translation id="7214187073215825913">інформація про контент</translation>
 <translation id="7238347055216017155">виділення</translation>
 <translation id="7263440858009898357">Виберіть елемент зі списку.</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">розділ</translation>
 <translation id="8845239796550121995">Транслюється на телевізор</translation>
 <translation id="8851136666856101339">головний</translation>
+<translation id="8861621546968757188">кнопка відкриття вікна</translation>
 <translation id="8875657656876809964">Помилка відтворення відео</translation>
 <translation id="8889402386540077796">Тон</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> КБ</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ur.xtb b/third_party/blink/public/strings/translations/blink_strings_ur.xtb
index d60b578..b663724 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ur.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ur.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">براہ کرم '<ph name="ATSIGN" />' کے بعد ایک حصہ درج کریں۔ '<ph name="INVALIDADDRESS" />' نامکمل ہے۔</translation>
 <translation id="5334352251556557839">میڈیا چلانے سے قاصر۔</translation>
 <translation id="537648784377940524">کم سے کم تاریخ (<ph name="MIN_DATE_OR_TIME" />) زیادہ سے زیادہ تاریخ (<ph name="MAX_DATE_OR_TIME" />) سے پہلے آنی چاہیے۔</translation>
+<translation id="5378437566635403538">پھیلایا گیا، ڈائیلاگ کھولا گیا۔</translation>
 <translation id="5406322316791861025">فیگر</translation>
 <translation id="5425179576310518467">موجودہ تاریخ</translation>
 <translation id="5453733299334684579">ٹری آئٹم</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">مزید اختیارات</translation>
 <translation id="576709008726043716">تعارف</translation>
 <translation id="57838592816432529">آواز بند کریں</translation>
+<translation id="5787939484346677755">پھیلایا گیا، خود کار تکمیل کے اختیارات دستیاب ہیں۔</translation>
 <translation id="5860033963881614850">آف</translation>
 <translation id="588258955323874662">پوری اسکرین</translation>
 <translation id="5888666972993069672">اب <ph name="DEVICE_FRIENDLY_NAME" /> پر کاسٹ ہو رہی ہے</translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">فہرست باکس</translation>
 <translation id="6150588977291308318">کتابیات</translation>
 <translation id="6164829606128959761">میٹر</translation>
+<translation id="6165053282446038410">پھیلایا گیا، خود کار تکمیل کے <ph name="COUNT" /> اختیارات دستیاب ہیں۔</translation>
 <translation id="6166809985690652833">پسِ نوشت</translation>
 <translation id="6209276755895393898">بظاہر: <ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">موجودہ صفحہ</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">ہیڈر</translation>
 <translation id="6941933287844615239">میڈیا ڈاؤن لوڈ کریں</translation>
 <translation id="6981594929165378967">داخل کرنا</translation>
+<translation id="698788488269350478">پھیلایا گیا۔</translation>
 <translation id="6989848892321993519">براہ کرم اس متن کو <ph name="MIN_CHARACTERS" /> حروف یا اس سے زیادہ تک بڑھائیں (آپ فی الحال 1 حرف استعمال کر رہے ہیں)۔</translation>
 <translation id="7034405885550056553">تجویز</translation>
 <translation id="709897737746224366">براہ کرم مطلوبہ فارمیٹ کا مماثل بنائیں۔</translation>
 <translation id="7102274145889307184">موجودہ مقام</translation>
 <translation id="7118469954320184356">کوئی تفصیل دستیاب نہیں ہے۔</translation>
 <translation id="7139483182332611405">دیباچہ</translation>
+<translation id="7198226213493847604">مینو پاپ اپ بٹن</translation>
 <translation id="7214187073215825913">مواد کی معلومات</translation>
 <translation id="7238347055216017155">زور</translation>
 <translation id="7263440858009898357">براہ کرم فہرست میں ایک آئٹم منتخب کریں۔</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">باب</translation>
 <translation id="8845239796550121995">‏اب آپ کی TV پر کاسٹ کیا جا رہا ہے</translation>
 <translation id="8851136666856101339">اصل</translation>
+<translation id="8861621546968757188">ڈائیلاگ پاپ اپ بٹن</translation>
 <translation id="8875657656876809964">ویڈیو پلے بیک کی خرابی</translation>
 <translation id="8889402386540077796">ہیو</translation>
 <translation id="8901569739625249689">‎<ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_zh-HK.xtb b/third_party/blink/public/strings/translations/blink_strings_zh-HK.xtb
index ea3ee5bb..292363c 100644
--- a/third_party/blink/public/strings/translations/blink_strings_zh-HK.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_zh-HK.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">請輸入「<ph name="ATSIGN" />」後面的部分。「<ph name="INVALIDADDRESS" />」並不完整。</translation>
 <translation id="5334352251556557839">無法播放媒體。</translation>
 <translation id="537648784377940524">最小日期 (<ph name="MIN_DATE_OR_TIME" />) 必須早於最大日期 (<ph name="MAX_DATE_OR_TIME" />)。</translation>
+<translation id="5378437566635403538">展開咗,開咗對話框。</translation>
 <translation id="5406322316791861025">圖表</translation>
 <translation id="5425179576310518467">目前嘅日期</translation>
 <translation id="5453733299334684579">樹狀目錄項目</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">更多選項</translation>
 <translation id="576709008726043716">簡介</translation>
 <translation id="57838592816432529">静音</translation>
+<translation id="5787939484346677755">展開咗,有自動完成選項。</translation>
 <translation id="5860033963881614850">關閉</translation>
 <translation id="588258955323874662">全螢幕</translation>
 <translation id="5888666972993069672">現正投放至<ph name="DEVICE_FRIENDLY_NAME" /></translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">清單方塊</translation>
 <translation id="6150588977291308318">參考書目</translation>
 <translation id="6164829606128959761">計量器</translation>
+<translation id="6165053282446038410">展開咗,有 <ph name="COUNT" /> 個自動完成選項。</translation>
 <translation id="6166809985690652833">後記</translation>
 <translation id="6209276755895393898">圖片內容似好似係:<ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">目前嘅網頁</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">頁首</translation>
 <translation id="6941933287844615239">下載媒體</translation>
 <translation id="6981594929165378967">插入</translation>
+<translation id="698788488269350478">展開咗。</translation>
 <translation id="6989848892321993519">請將這段文字加長至 <ph name="MIN_CHARACTERS" /> 個字元以上 (目前已有 1 個字元)。</translation>
 <translation id="7034405885550056553">建議</translation>
 <translation id="709897737746224366">請配對要求的格式。</translation>
 <translation id="7102274145889307184">目前位置</translation>
 <translation id="7118469954320184356">冇任何說明。</translation>
 <translation id="7139483182332611405">前言</translation>
+<translation id="7198226213493847604">選單彈出式按鈕</translation>
 <translation id="7214187073215825913">內容資料</translation>
 <translation id="7238347055216017155">強調</translation>
 <translation id="7263440858009898357">請選取一個清單中的項目。</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">章節</translation>
 <translation id="8845239796550121995">現正投放到您的電視上</translation>
 <translation id="8851136666856101339">主要元素</translation>
+<translation id="8861621546968757188">對話框彈出式按鈕</translation>
 <translation id="8875657656876809964">影片播放錯誤</translation>
 <translation id="8889402386540077796">色調</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_zh-TW.xtb b/third_party/blink/public/strings/translations/blink_strings_zh-TW.xtb
index f17e4c1..f71e133 100644
--- a/third_party/blink/public/strings/translations/blink_strings_zh-TW.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_zh-TW.xtb
@@ -151,6 +151,7 @@
 <translation id="5307600278924710095">請輸入「<ph name="ATSIGN" />」後面的部分。「<ph name="INVALIDADDRESS" />」不是完整值。</translation>
 <translation id="5334352251556557839">無法播放媒體。</translation>
 <translation id="537648784377940524">最小日期 (<ph name="MIN_DATE_OR_TIME" />) 必須早於最大日期 (<ph name="MAX_DATE_OR_TIME" />)。</translation>
+<translation id="5378437566635403538">已展開,對話方塊已開啟。</translation>
 <translation id="5406322316791861025">圖表</translation>
 <translation id="5425179576310518467">目前日期</translation>
 <translation id="5453733299334684579">樹狀目錄項目</translation>
@@ -167,6 +168,7 @@
 <translation id="5677946354068040947">更多選項</translation>
 <translation id="576709008726043716">簡介</translation>
 <translation id="57838592816432529">靜音</translation>
+<translation id="5787939484346677755">已展開,有自動完成選項。</translation>
 <translation id="5860033963881614850">關閉</translation>
 <translation id="588258955323874662">全螢幕</translation>
 <translation id="5888666972993069672">正在投放到「<ph name="DEVICE_FRIENDLY_NAME" />」</translation>
@@ -180,6 +182,7 @@
 <translation id="6023896073578205740">清單方塊</translation>
 <translation id="6150588977291308318">參考書目</translation>
 <translation id="6164829606128959761">計量器</translation>
+<translation id="6165053282446038410">已展開,有 <ph name="COUNT" /> 個自動完成選項。</translation>
 <translation id="6166809985690652833">後記</translation>
 <translation id="6209276755895393898">圖片內容似乎是:<ph name="DESCRIPTION" /></translation>
 <translation id="6212595056017402527">目前頁面</translation>
@@ -214,12 +217,14 @@
 <translation id="693476918119313863">頁首</translation>
 <translation id="6941933287844615239">下載媒體</translation>
 <translation id="6981594929165378967">插入</translation>
+<translation id="698788488269350478">已展開。</translation>
 <translation id="6989848892321993519">請將這段文字加長到 <ph name="MIN_CHARACTERS" /> 個字元以上 (目前已有 1 個字元)。</translation>
 <translation id="7034405885550056553">建議</translation>
 <translation id="709897737746224366">請符合要求的格式。</translation>
 <translation id="7102274145889307184">目前位置</translation>
 <translation id="7118469954320184356">目前沒有說明。</translation>
 <translation id="7139483182332611405">前言</translation>
+<translation id="7198226213493847604">選單彈出按鈕</translation>
 <translation id="7214187073215825913">內容資訊</translation>
 <translation id="7238347055216017155">強調</translation>
 <translation id="7263440858009898357">請選取一個清單中的項目。</translation>
@@ -287,6 +292,7 @@
 <translation id="8808573423886751634">章節</translation>
 <translation id="8845239796550121995">正在投放到電視上</translation>
 <translation id="8851136666856101339">主要元素</translation>
+<translation id="8861621546968757188">對話方塊彈出按鈕</translation>
 <translation id="8875657656876809964">影片播放錯誤</translation>
 <translation id="8889402386540077796">色調</translation>
 <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/web/web_local_frame.h b/third_party/blink/public/web/web_local_frame.h
index 847eeee..b05b4223 100644
--- a/third_party/blink/public/web/web_local_frame.h
+++ b/third_party/blink/public/web/web_local_frame.h
@@ -115,9 +115,7 @@
       std::unique_ptr<blink::WebPolicyContainer> policy_container,
       WebFrame* opener = nullptr,
       const WebString& name = WebString(),
-      network::mojom::WebSandboxFlags = network::mojom::WebSandboxFlags::kNone,
-      const FeaturePolicyFeatureState& opener_feature_state =
-          FeaturePolicyFeatureState());
+      network::mojom::WebSandboxFlags = network::mojom::WebSandboxFlags::kNone);
 
   // Used to create a provisional local frame. Currently, it's possible for a
   // provisional navigation not to commit (i.e. it might turn into a download),
diff --git a/third_party/blink/public/web/web_remote_frame.h b/third_party/blink/public/web/web_remote_frame.h
index cb87e38..494bb0b 100644
--- a/third_party/blink/public/web/web_remote_frame.h
+++ b/third_party/blink/public/web/web_remote_frame.h
@@ -116,13 +116,9 @@
   virtual void SetReplicatedName(const WebString& name,
                                  const WebString& unique_name) = 0;
 
-  // Sets the FeaturePolicy header and the FeatureState (from opener) for the
-  // main frame. Once a non-empty |opener_feature_state| is set, it can no
-  // longer be modified (due to the fact that the original opener which passed
-  // down the FeatureState cannot be modified either).
-  virtual void SetReplicatedFeaturePolicyHeaderAndOpenerPolicies(
-      const ParsedFeaturePolicy& parsed_header,
-      const FeaturePolicyFeatureState& opener_feature_state) = 0;
+  // Sets the Feature Policy header for the main frame.
+  virtual void SetReplicatedFeaturePolicyHeader(
+      const ParsedFeaturePolicy& parsed_header) = 0;
 
   // Adds |header| to the set of replicated CSP headers.
   virtual void AddReplicatedContentSecurityPolicyHeader(
diff --git a/third_party/blink/public/web/web_view_client.h b/third_party/blink/public/web/web_view_client.h
index bbfda99..004c40f 100644
--- a/third_party/blink/public/web/web_view_client.h
+++ b/third_party/blink/public/web/web_view_client.h
@@ -70,7 +70,6 @@
       const WebString& name,
       WebNavigationPolicy policy,
       network::mojom::WebSandboxFlags,
-      const FeaturePolicyFeatureState&,
       const SessionStorageNamespaceId& session_storage_namespace_id,
       bool& consumed_user_gesture) {
     return nullptr;
diff --git a/third_party/blink/renderer/build/scripts/core/css/css_properties.py b/third_party/blink/renderer/build/scripts/core/css/css_properties.py
index 83113628..e449c29 100755
--- a/third_party/blink/renderer/build/scripts/core/css/css_properties.py
+++ b/third_party/blink/renderer/build/scripts/core/css/css_properties.py
@@ -320,15 +320,27 @@
         set_if_none(property_, 'custom_compare', False)
         set_if_none(property_, 'mutable', False)
 
-        if property_['direction_aware_options']:
-            if not property_['style_builder_template']:
+        if property_['logical_property_group']:
+            group = property_['logical_property_group']
+            assert 'name' in group, 'name option is required'
+            assert 'resolver' in group, 'resolver option is required'
+            logicals = {
+                'block', 'inline', 'block-start', 'block-end', 'inline-start',
+                'inline-end'
+            }
+            physicals = {
+                'vertical', 'horizontal', 'top', 'bottom', 'left', 'right'
+            }
+            if group['resolver'] in logicals:
+                group['is_logical'] = True
+            elif group['resolver'] in physicals:
+                group['is_logical'] = False
+            else:
+                assert 0, 'invalid resolver option'
+            group['name'] = NameStyleConverter(group['name'])
+            group['resolver_name'] = NameStyleConverter(group['resolver'])
+            if not property_['style_builder_template'] and group['is_logical']:
                 property_['style_builder_template'] = 'direction_aware'
-            options = property_['direction_aware_options']
-            assert 'resolver' in options, 'resolver option is required'
-            assert 'physical_group' in options, 'physical_group option is required'
-            options['resolver_name'] = NameStyleConverter(options['resolver'])
-            options['physical_group_name'] = NameStyleConverter(
-                options['physical_group'])
 
     @property
     def default_parameters(self):
diff --git a/third_party/blink/renderer/build/scripts/core/css/properties/templates/css_properties.cc.tmpl b/third_party/blink/renderer/build/scripts/core/css/properties/templates/css_properties.cc.tmpl
index 5ad18b5c..74d170b 100644
--- a/third_party/blink/renderer/build/scripts/core/css/properties/templates/css_properties.cc.tmpl
+++ b/third_party/blink/renderer/build/scripts/core/css/properties/templates/css_properties.cc.tmpl
@@ -101,10 +101,11 @@
     {% endif %}
 }
   {% endif %}
-  {% if property.direction_aware_options %}
-    {% set options = property.direction_aware_options %}
-    {% set resolver_name = options.resolver_name.to_upper_camel_case() %}
-    {% set physical_group_name = options.physical_group_name.to_upper_camel_case() %}
+  {% if property.logical_property_group %}
+    {% set group = property.logical_property_group %}
+    {% set group_name = group.name.to_upper_camel_case() %}
+    {% set resolver_name = group.resolver_name.to_upper_camel_case() %}
+    {% if group.is_logical %}
 const CSSProperty* {{class_name}}::SurrogateFor(TextDirection direction,
     blink::WritingMode writing_mode) const {
   return &ResolveDirectionAwareProperty(direction, writing_mode);
@@ -114,8 +115,19 @@
     TextDirection direction,
     blink::WritingMode writing_mode) const {
   return CSSDirectionAwareResolver::Resolve{{resolver_name}}(direction, writing_mode,
-      CSSDirectionAwareResolver::{{physical_group_name}}Group());
+      CSSDirectionAwareResolver::Physical{{group_name}}Mapping());
 }
+
+bool {{class_name}}::IsInSameLogicalPropertyGroupWithDifferentMappingLogic(
+    CSSPropertyID id) const {
+  return CSSDirectionAwareResolver::Physical{{group_name}}Mapping().Contains(id);
+}
+    {% else %}
+bool {{class_name}}::IsInSameLogicalPropertyGroupWithDifferentMappingLogic(
+    CSSPropertyID id) const {
+  return CSSDirectionAwareResolver::Logical{{group_name}}Mapping().Contains(id);
+}
+    {% endif %}
   {% endif %}
 
 {{style_builder_functions(property)}}
diff --git a/third_party/blink/renderer/build/scripts/core/css/properties/templates/css_properties.h.tmpl b/third_party/blink/renderer/build/scripts/core/css/properties/templates/css_properties.h.tmpl
index f0c4856..9c5e73d 100644
--- a/third_party/blink/renderer/build/scripts/core/css/properties/templates/css_properties.h.tmpl
+++ b/third_party/blink/renderer/build/scripts/core/css/properties/templates/css_properties.h.tmpl
@@ -29,7 +29,8 @@
 {% for property in properties %}
 {% set class_name = property.name.to_upper_camel_case() %}
 {% set is_alias = property.alias_for %}
-{% set is_surrogate = property.surrogate_for or property.direction_aware_options %}
+{% set is_surrogate = property.surrogate_for or
+    (property.logical_property_group and property.logical_property_group.is_logical) %}
 {% set property_id = 'CSSPropertyID::' + property.enum_key %}
 {% set separator = '\'' + (property.separator or '\\0') + '\'' %}
 {% set flags = [
@@ -51,6 +52,7 @@
   (property.computed_value_comparable and 'kComputedValueComparable' or ''),
   (property.tree_scoped_value and 'kTreeScopedValue' or ''),
   (property.valid_for_highlight and 'kValidForHighlight' or ''),
+  (property.logical_property_group and 'kInLogicalPropertyGroup' or ''),
 ] | reject('==', '') | join(' | ') %}
 {% set ctor_args = (not is_alias and [property_id, flags, separator] or []) %}
 // {{property.name}}
@@ -80,7 +82,7 @@
   {% if property.unvisited_property %}
   const CSSProperty* GetUnvisitedProperty() const override;
   {% endif %}
-  {% if property.surrogate_for or property.direction_aware_options %}
+  {% if is_surrogate %}
   const CSSProperty* SurrogateFor(TextDirection, blink::WritingMode) const override;
   {% endif %}
   {% for property_method in property.property_methods %}
@@ -89,7 +91,9 @@
   {% if property.computed_value_comparable %}
   bool ComputedValuesEqual(const ComputedStyle& a, const ComputedStyle& b) const override;
   {% endif %}
-  {% if property.direction_aware_options %}
+  {% if property.logical_property_group %}
+  bool IsInSameLogicalPropertyGroupWithDifferentMappingLogic(CSSPropertyID) const override;
+    {% if property.logical_property_group.is_logical %}
   const CSSProperty& ResolveDirectionAwareProperty(TextDirection, blink::WritingMode) const override;
   const CSSValue* CSSValueFromComputedStyleInternal(
       const ComputedStyle&,
@@ -101,6 +105,7 @@
     NOTREACHED();
     return nullptr;
   }
+    {% endif %}
   {% endif %}
   {% if property.style_builder_declare %}
   void ApplyInitial(StyleResolverState&) const override;
diff --git a/third_party/blink/renderer/core/css/css_properties.json5 b/third_party/blink/renderer/core/css/css_properties.json5
index f6f42d0..0586723 100644
--- a/third_party/blink/renderer/core/css/css_properties.json5
+++ b/third_party/blink/renderer/core/css/css_properties.json5
@@ -362,34 +362,45 @@
     converter: {
     },
 
-    // Options used for properties that depend on writing-mode and/or
-    // text-direction (e.g. css-logical).
-    direction_aware_options: {
-      // The name of the mapping function used to convert from a logical
-      // property to a physical property. Corresponds to a function in
-      // CSSDirectionAwareResolver. E.g. a value of "baz" corresponds to
-      // CSSDirectionAwareResolver::ResolveBaz(...).
-      resolver: {
-        valid_type: "str",
-        valid_values: ["inline-start", "inline-end", "block-start", "block-end",
-                       "inline", "block"],
-      },
-      // The name of the physical property group to pass to the resolver.
-      // The group represents the physical part of the "logical property group"
-      // described by css-logical [1].
+    // - logical_property_group: used for properties that depend on writing-mode
+    // and/or text-direction (e.g. css-logical), and for their physical counterparts.
+    // Represents the "logical property group" described by css-logical
+    // (https://drafts.csswg.org/css-logical/#logical-property-group).
+    logical_property_group: {
+      // A name identifying the logical property group. All logical and physical
+      // properties in the same group should have the same name.
       //
-      // In terms of code generation, each value corresponds to a function in
-      // CSSDirectionAwareResolver. E.g. a value of "foo-bar" would correspond
-      // to CSSDirectionAwareResolver::FooBarGroup().
-      //
-      // [1] https://drafts.csswg.org/css-logical/#logical-property-group
-      physical_group: {
+      // In terms of code generation, each value corresponds to 2 functions in
+      // CSSDirectionAwareResolver. E.g. a value of "foo-bar" would correspond to:
+      // - CSSDirectionAwareResolver::LogicalFooBarMapping(), containing the
+      //   properties of the group with a flow-relative mapping logic.
+      // - CSSDirectionAwareResolver::PhysicalFooBarMapping(), containing the
+      //   properties of the group with a physical mapping logic.
+      name: {
         valid_type: "str",
         valid_values: ["border", "border-color", "border-style", "border-width",
                        "inset", "margin", "max-size",
                        "min-size", "overflow", "padding", "scroll-margin",
                        "scroll-padding", "size", "visited-border-color"],
-      }
+      },
+      // The name of the mapping function used to convert between equivalent
+      // logical and physical properties within the same group. Corresponds to
+      // a function in CSSDirectionAwareResolver. E.g. a value of "baz"
+      // corresponds to CSSDirectionAwareResolver::ResolveBaz(...).
+      //
+      // Also identifies the mapping logic of the group
+      // (https://drafts.csswg.org/css-logical-1/#mapping-logic)
+      resolver: {
+        valid_type: "str",
+        valid_values: [
+          // Mapping logic: flow-relative (logical)
+          "block", "inline",
+          "block-start", "block-end", "inline-start", "inline-end",
+          // Mapping logic: physical
+          "vertical", "horizontal",
+          "top", "bottom", "left", "right",
+        ],
+      },
     },
 
     // - surrogate_for: "other-property"
@@ -405,7 +416,7 @@
     //  * inline-size (surrogate for width, or height)
     //  * All css-logical propeties in general
     //
-    // Note that for properties that use direction_aware_options,
+    // Note that for properties that use logical_property_group,
     // 'surrogate_for' should not be set, as the mapping is determined at
     // run-time (depending og e.g. 'direction').
     surrogate_for: {
@@ -1317,6 +1328,10 @@
       valid_for_first_letter: true,
       is_border: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "border-color",
+        resolver: "bottom",
+      },
     },
     {
       name: "border-bottom-left-radius",
@@ -1363,6 +1378,10 @@
       valid_for_first_letter: true,
       is_border: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "border-style",
+        resolver: "bottom",
+      },
     },
     {
       name: "border-bottom-width",
@@ -1380,6 +1399,10 @@
       valid_for_first_letter: true,
       is_border: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "border-width",
+        resolver: "bottom",
+      },
     },
     {
       name: "border-collapse",
@@ -1467,6 +1490,10 @@
       valid_for_first_letter: true,
       is_border: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "border-color",
+        resolver: "left",
+      },
     },
     {
       name: "border-left-style",
@@ -1483,6 +1510,10 @@
       valid_for_first_letter: true,
       is_border: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "border-style",
+        resolver: "left",
+      },
     },
     {
       name: "border-left-width",
@@ -1500,6 +1531,10 @@
       valid_for_first_letter: true,
       is_border: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "border-width",
+        resolver: "left",
+      },
     },
     {
       name: "border-right-color",
@@ -1518,6 +1553,10 @@
       valid_for_first_letter: true,
       is_border: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "border-color",
+        resolver: "right",
+      },
     },
     {
       name: "border-right-style",
@@ -1534,6 +1573,10 @@
       valid_for_first_letter: true,
       is_border: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "border-style",
+        resolver: "right",
+      },
     },
     {
       name: "border-right-width",
@@ -1551,6 +1594,10 @@
       valid_for_first_letter: true,
       is_border: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "border-width",
+        resolver: "right",
+      },
     },
     {
       name: "border-top-color",
@@ -1569,6 +1616,10 @@
       valid_for_first_letter: true,
       is_border: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "border-color",
+        resolver: "top",
+      },
     },
     {
       name: "border-top-left-radius",
@@ -1615,6 +1666,10 @@
       valid_for_first_letter: true,
       is_border: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "border-style",
+        resolver: "top",
+      },
     },
     {
       name: "border-top-width",
@@ -1632,6 +1687,10 @@
       valid_for_first_letter: true,
       is_border: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "border-width",
+        resolver: "top",
+      },
     },
     {
       name: "bottom",
@@ -1645,6 +1704,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       converter: "ConvertLengthOrAuto",
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "inset",
+        resolver: "bottom",
+      },
     },
     {
       name: "box-shadow",
@@ -2243,6 +2306,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       converter: "ConvertLengthSizing",
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "size",
+        resolver: "vertical",
+      },
     },
     {
       name: "hyphens",
@@ -2335,6 +2402,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       converter: "ConvertLengthOrAuto",
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "inset",
+        resolver: "left",
+      },
     },
     {
       name: "letter-spacing",
@@ -2455,6 +2526,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       valid_for_first_letter: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "margin",
+        resolver: "bottom",
+      },
     },
     {
       name: "margin-left",
@@ -2470,6 +2545,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       valid_for_first_letter: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "margin",
+        resolver: "left",
+      },
     },
     {
       name: "margin-right",
@@ -2485,6 +2564,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       valid_for_first_letter: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "margin",
+        resolver: "right",
+      },
     },
     {
       name: "margin-top",
@@ -2500,6 +2583,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       valid_for_first_letter: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "margin",
+        resolver: "top",
+      },
     },
     {
       name: "marker-end",
@@ -2577,6 +2664,10 @@
       keywords: ["none"],
       typedom_types: ["Keyword", "Length", "Percentage"],
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "max-size",
+        resolver: "vertical",
+      },
     },
     {
       name: "max-width",
@@ -2590,6 +2681,10 @@
       keywords: ["none"],
       typedom_types: ["Keyword", "Length", "Percentage"],
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "max-size",
+        resolver: "horizontal",
+      },
     },
     {
       name: "min-height",
@@ -2602,6 +2697,10 @@
       converter: "ConvertLengthSizing",
       typedom_types: ["Length", "Percentage"],
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "min-size",
+        resolver: "vertical",
+      },
     },
     {
       name: "min-width",
@@ -2614,6 +2713,10 @@
       converter: "ConvertLengthSizing",
       typedom_types: ["Length", "Percentage"],
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "min-size",
+        resolver: "horizontal",
+      },
     },
     {
       name: "mix-blend-mode",
@@ -2849,17 +2952,17 @@
     },
     {
       name: "overflow-inline",
-      direction_aware_options: {
+      logical_property_group: {
+        name: "overflow",
         resolver: "inline",
-        physical_group: "overflow",
       },
       runtime_flag: "CSSLogicalOverflow",
     },
     {
       name: "overflow-block",
-      direction_aware_options: {
+      logical_property_group: {
+        name: "overflow",
         resolver: "block",
-        physical_group: "overflow",
       },
       runtime_flag: "CSSLogicalOverflow",
     },
@@ -2884,6 +2987,10 @@
       typedom_types: ["Keyword"],
       default_value: "visible",
       type_name: "EOverflow",
+      logical_property_group: {
+        name: "overflow",
+        resolver: "horizontal",
+      },
     },
     {
       name: "overflow-y",
@@ -2895,19 +3002,23 @@
       typedom_types: ["Keyword"],
       default_value: "visible",
       type_name: "EOverflow",
+      logical_property_group: {
+        name: "overflow",
+        resolver: "vertical",
+      },
     },
     {
       name: "overscroll-behavior-inline",
-      direction_aware_options: {
+      logical_property_group: {
+        name: "overscroll-behavior",
         resolver: "inline",
-        physical_group: "overscroll-behavior",
       },
     },
     {
       name: "overscroll-behavior-block",
-      direction_aware_options: {
+      logical_property_group: {
+        name: "overscroll-behavior",
         resolver: "block",
-        physical_group: "overscroll-behavior",
       },
     },
     {
@@ -2917,7 +3028,11 @@
       keywords: ["auto", "contain", "none"],
       default_value: "auto",
       type_name: "EOverscrollBehavior",
-      typedom_types: ["Keyword"]
+      typedom_types: ["Keyword"],
+      logical_property_group: {
+        name: "overscroll-behavior",
+        resolver: "horizontal",
+      },
     },
     {
       name: "overscroll-behavior-y",
@@ -2926,7 +3041,11 @@
       keywords: ["auto", "contain", "none"],
       default_value: "auto",
       type_name: "EOverscrollBehavior",
-      typedom_types: ["Keyword"]
+      typedom_types: ["Keyword"],
+      logical_property_group: {
+        name: "overscroll-behavior",
+        resolver: "vertical",
+      },
     },
     {
       name: "padding-bottom",
@@ -2941,6 +3060,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       valid_for_first_letter: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "padding",
+        resolver: "bottom",
+      },
     },
     {
       name: "padding-left",
@@ -2955,6 +3078,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       valid_for_first_letter: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "padding",
+        resolver: "left",
+      },
     },
     {
       name: "padding-right",
@@ -2969,6 +3096,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       valid_for_first_letter: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "padding",
+        resolver: "right",
+      },
     },
     {
       name: "padding-top",
@@ -2983,6 +3114,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       valid_for_first_letter: true,
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "padding",
+        resolver: "top",
+      },
     },
     {
       name: "page",
@@ -3112,6 +3247,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       converter: "ConvertLengthOrAuto",
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "inset",
+        resolver: "right",
+      },
     },
     {
       name: "r",
@@ -3180,9 +3319,9 @@
     {
       name: "scroll-margin-block-end",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "scroll-margin",
         resolver: "block-end",
-        physical_group: "scroll-margin",
       },
       typedom_types: ["Keyword", "Length"]
     },
@@ -3201,9 +3340,9 @@
     {
       name: "scroll-margin-block-start",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "scroll-margin",
         resolver: "block-start",
-        physical_group: "scroll-margin",
       },
       typedom_types: ["Keyword", "Length"]
     },
@@ -3215,23 +3354,27 @@
       default_value: "0.0f",
       type_name: "float",
       converter: "ConvertComputedLength<float>",
-      typedom_types: ["Keyword", "Length"]
+      typedom_types: ["Keyword", "Length"],
+      logical_property_group: {
+        name: "scroll-margin",
+        resolver: "bottom",
+      },
     },
     {
       name: "scroll-margin-inline-end",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "scroll-margin",
         resolver: "inline-end",
-        physical_group: "scroll-margin",
       },
       typedom_types: ["Keyword", "Length"]
     },
     {
       name: "scroll-margin-inline-start",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "scroll-margin",
         resolver: "inline-start",
-        physical_group: "scroll-margin",
       },
       typedom_types: ["Keyword", "Length"]
     },
@@ -3243,7 +3386,11 @@
       default_value: "0.0f",
       type_name: "float",
       converter: "ConvertComputedLength<float>",
-      typedom_types: ["Keyword", "Length"]
+      typedom_types: ["Keyword", "Length"],
+      logical_property_group: {
+        name: "scroll-margin",
+        resolver: "left",
+      },
     },
     {
       name: "scroll-margin-right",
@@ -3253,7 +3400,11 @@
       default_value: "0.0f",
       type_name: "float",
       converter: "ConvertComputedLength<float>",
-      typedom_types: ["Keyword", "Length"]
+      typedom_types: ["Keyword", "Length"],
+      logical_property_group: {
+        name: "scroll-margin",
+        resolver: "right",
+      },
     },
     {
       name: "scroll-margin-top",
@@ -3263,7 +3414,11 @@
       default_value: "0.0f",
       type_name: "float",
       converter: "ConvertComputedLength<float>",
-      typedom_types: ["Keyword", "Length"]
+      typedom_types: ["Keyword", "Length"],
+      logical_property_group: {
+        name: "scroll-margin",
+        resolver: "top",
+      },
     },
     {
       name: "scroll-padding-block-end",
@@ -3273,9 +3428,9 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       type_name: "Length",
       converter: "ConvertLengthOrAuto",
-      direction_aware_options: {
+      logical_property_group: {
+        name: "scroll-padding",
         resolver: "block-end",
-        physical_group: "scroll-padding",
       },
     },
     {
@@ -3286,9 +3441,9 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       type_name: "Length",
       converter: "ConvertLengthOrAuto",
-      direction_aware_options: {
+      logical_property_group: {
+        name: "scroll-padding",
         resolver: "block-start",
-        physical_group: "scroll-padding",
       },
     },
     {
@@ -3300,6 +3455,10 @@
       keywords: ["auto"],
       typedom_types: ["Keyword", "Length", "Percentage"],
       converter: "ConvertLengthOrAuto",
+      logical_property_group: {
+        name: "scroll-padding",
+        resolver: "bottom",
+      },
     },
     {
       name: "scroll-padding-inline-end",
@@ -3309,9 +3468,9 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       type_name: "Length",
       converter: "ConvertLengthOrAuto",
-      direction_aware_options: {
+      logical_property_group: {
+        name: "scroll-padding",
         resolver: "inline-end",
-        physical_group: "scroll-padding",
       },
     },
     {
@@ -3322,9 +3481,9 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       type_name: "Length",
       converter: "ConvertLengthOrAuto",
-      direction_aware_options: {
+      logical_property_group: {
+        name: "scroll-padding",
         resolver: "inline-start",
-        physical_group: "scroll-padding",
       },
     },
     {
@@ -3336,6 +3495,10 @@
       keywords: ["auto"],
       typedom_types: ["Keyword", "Length", "Percentage"],
       converter: "ConvertLengthOrAuto",
+      logical_property_group: {
+        name: "scroll-padding",
+        resolver: "left",
+      },
     },
     {
       name: "scroll-padding-right",
@@ -3346,6 +3509,10 @@
       keywords: ["auto"],
       typedom_types: ["Keyword", "Length", "Percentage"],
       converter: "ConvertLengthOrAuto",
+      logical_property_group: {
+        name: "scroll-padding",
+        resolver: "right",
+      },
     },
     {
       name: "scroll-padding-top",
@@ -3356,6 +3523,10 @@
       keywords: ["auto"],
       typedom_types: ["Keyword", "Length", "Percentage"],
       converter: "ConvertLengthOrAuto",
+      logical_property_group: {
+        name: "scroll-padding",
+        resolver: "top",
+      },
     },
     {
       name: "scroll-snap-align",
@@ -3825,6 +3996,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       converter: "ConvertLengthOrAuto",
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "inset",
+        resolver: "top",
+      },
     },
     {
       name: "touch-action",
@@ -4624,6 +4799,10 @@
       typedom_types: ["Keyword", "Length", "Percentage"],
       converter: "ConvertLengthSizing",
       computed_value_comparable: true,
+      logical_property_group: {
+        name: "size",
+        resolver: "horizontal",
+      },
     },
     {
       name: "will-change",
@@ -4675,9 +4854,9 @@
       name: "inline-size",
       property_methods: ["ParseSingleValue"],
       layout_dependent: true,
-      direction_aware_options: {
+      logical_property_group: {
+        name: "size",
         resolver: "inline",
-        physical_group: "size",
       },
       keywords: ["auto"],
       typedom_types: ["Keyword", "Length", "Percentage"],
@@ -4686,9 +4865,9 @@
       name: "block-size",
       property_methods: ["ParseSingleValue"],
       layout_dependent: true,
-      direction_aware_options: {
+      logical_property_group: {
+        name: "size",
         resolver: "block",
-        physical_group: "size",
       },
       keywords: ["auto"],
       typedom_types: ["Keyword", "Length", "Percentage"],
@@ -4696,27 +4875,27 @@
     {
       name: "min-inline-size",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "min-size",
         resolver: "inline",
-        physical_group: "min-size",
       },
       typedom_types: ["Length", "Percentage"],
     },
     {
       name: "min-block-size",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "min-size",
         resolver: "block",
-        physical_group: "min-size",
       },
       typedom_types: ["Length", "Percentage"],
     },
     {
       name: "max-inline-size",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "max-size",
         resolver: "inline",
-        physical_group: "max-size",
       },
       keywords: ["none"],
       typedom_types: ["Keyword", "Length", "Percentage"],
@@ -4724,9 +4903,9 @@
     {
       name: "max-block-size",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "max-size",
         resolver: "block",
-        physical_group: "max-size",
       },
       keywords: ["none"],
       typedom_types: ["Keyword", "Length", "Percentage"],
@@ -4735,9 +4914,9 @@
       name: "margin-inline-start",
       layout_dependent: true,
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "margin",
         resolver: "inline-start",
-        physical_group: "margin",
       },
       typedom_types: ["Length", "Percentage"],
       keywords: ["auto"],
@@ -4747,9 +4926,9 @@
       name: "margin-inline-end",
       layout_dependent: true,
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "margin",
         resolver: "inline-end",
-        physical_group: "margin",
       },
       typedom_types: ["Length", "Percentage"],
       keywords: ["auto"],
@@ -4759,9 +4938,9 @@
       name: "margin-block-start",
       layout_dependent: true,
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "margin",
         resolver: "block-start",
-        physical_group: "margin",
       },
       typedom_types: ["Length", "Percentage"],
       keywords: ["auto"],
@@ -4771,9 +4950,9 @@
       name: "margin-block-end",
       layout_dependent: true,
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "margin",
         resolver: "block-end",
-        physical_group: "margin",
       },
       typedom_types: ["Length", "Percentage"],
       keywords: ["auto"],
@@ -4783,9 +4962,9 @@
       name: "padding-inline-start",
       layout_dependent: true,
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "padding",
         resolver: "inline-start",
-        physical_group: "padding",
       },
       typedom_types: ["Length", "Percentage"]
     },
@@ -4793,9 +4972,9 @@
       name: "padding-inline-end",
       layout_dependent: true,
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "padding",
         resolver: "inline-end",
-        physical_group: "padding",
       },
       typedom_types: ["Length", "Percentage"]
     },
@@ -4803,9 +4982,9 @@
       name: "padding-block-start",
       layout_dependent: true,
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "padding",
         resolver: "block-start",
-        physical_group: "padding",
       },
       typedom_types: ["Length", "Percentage"]
     },
@@ -4813,149 +4992,149 @@
       name: "padding-block-end",
       layout_dependent: true,
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "padding",
         resolver: "block-end",
-        physical_group: "padding",
       },
       typedom_types: ["Length", "Percentage"]
     },
     {
       name: "border-inline-start-width",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border-width",
         resolver: "inline-start",
-        physical_group: "border-width",
       },
       valid_for_first_letter: true,
     },
     {
       name: "border-inline-start-style",
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border-style",
         resolver: "inline-start",
-        physical_group: "border-style",
       },
       valid_for_first_letter: true,
     },
     {
       name: "border-inline-start-color",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border-color",
         resolver: "inline-start",
-        physical_group: "border-color",
       },
       valid_for_first_letter: true,
     },
     {
       name: "border-inline-end-width",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border-width",
         resolver: "inline-end",
-        physical_group: "border-width",
       },
       valid_for_first_letter: true,
     },
     {
       name: "border-inline-end-style",
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border-style",
         resolver: "inline-end",
-        physical_group: "border-style",
       },
       valid_for_first_letter: true,
     },
     {
       name: "border-inline-end-color",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border-color",
         resolver: "inline-end",
-        physical_group: "border-color",
       },
       valid_for_first_letter: true,
     },
     {
       name: "border-block-start-width",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border-width",
         resolver: "block-start",
-        physical_group: "border-width",
       },
       valid_for_first_letter: true,
     },
     {
       name: "border-block-start-style",
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border-style",
         resolver: "block-start",
-        physical_group: "border-style",
       },
       valid_for_first_letter: true,
     },
     {
       name: "border-block-start-color",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border-color",
         resolver: "block-start",
-        physical_group: "border-color",
       },
       valid_for_first_letter: true,
     },
     {
       name: "border-block-end-width",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border-width",
         resolver: "block-end",
-        physical_group: "border-width",
       },
       valid_for_first_letter: true,
     },
     {
       name: "border-block-end-style",
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border-style",
         resolver: "block-end",
-        physical_group: "border-style",
       },
       valid_for_first_letter: true,
     },
     {
       name: "border-block-end-color",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border-color",
         resolver: "block-end",
-        physical_group: "border-color",
       },
       valid_for_first_letter: true,
     },
     {
       name: "inset-inline-start",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "inset",
         resolver: "inline-start",
-        physical_group: "inset",
       },
       typedom_types: ["Length", "Percentage"]
     },
     {
       name: "inset-inline-end",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "inset",
         resolver: "inline-end",
-        physical_group: "inset",
       },
       typedom_types: ["Length", "Percentage"]
     },
     {
       name: "inset-block-start",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "inset",
         resolver: "block-start",
-        physical_group: "inset",
       },
       typedom_types: ["Length", "Percentage"]
     },
     {
       name: "inset-block-end",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "inset",
         resolver: "block-end",
-        physical_group: "inset",
       },
       typedom_types: ["Length", "Percentage"]
     },
@@ -5327,9 +5506,9 @@
         "border-block-end-color"
       ],
       property_methods: ["ParseShorthand"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border",
         resolver: "block-end",
-        physical_group: "border",
       },
     },
     {
@@ -5339,9 +5518,9 @@
         "border-block-start-color"
       ],
       property_methods: ["ParseShorthand"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border",
         resolver: "block-start",
-        physical_group: "border",
       },
     },
     {
@@ -5360,6 +5539,10 @@
         "border-bottom-width", "border-bottom-style", "border-bottom-color"
       ],
       property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
+      logical_property_group: {
+        name: "border",
+        resolver: "bottom",
+      },
     },
     {
       name: "border-color",
@@ -5397,9 +5580,9 @@
         "border-inline-end-color"
       ],
       property_methods: ["ParseShorthand"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border",
         resolver: "inline-end",
-        physical_group: "border",
       },
     },
     {
@@ -5409,9 +5592,9 @@
         "border-inline-start-color"
       ],
       property_methods: ["ParseShorthand"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "border",
         resolver: "inline-start",
-        physical_group: "border",
       },
     },
     {
@@ -5430,6 +5613,10 @@
         "border-left-width", "border-left-style", "border-left-color"
       ],
       property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
+      logical_property_group: {
+        name: "border",
+        resolver: "left",
+      },
     },
     {
       name: "border-radius",
@@ -5445,6 +5632,10 @@
         "border-right-width", "border-right-style", "border-right-color"
       ],
       property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
+      logical_property_group: {
+        name: "border",
+        resolver: "right",
+      },
     },
     {
       name: "border-spacing",
@@ -5466,6 +5657,10 @@
       name: "border-top",
       longhands: ["border-top-width", "border-top-style", "border-top-color"],
       property_methods: ["ParseShorthand", "CSSValueFromComputedStyleInternal"],
+      logical_property_group: {
+        name: "border",
+        resolver: "top",
+      },
     },
     {
       name: "border-width",
@@ -5881,6 +6076,10 @@
       converter: "ConvertStyleColor",
       style_builder_template: "visited_color",
       valid_for_first_letter: true,
+      logical_property_group: {
+        name: "visited-border-color",
+        resolver: "left",
+      },
     },
     {
       name: "-internal-visited-border-right-color",
@@ -5895,6 +6094,10 @@
       converter: "ConvertStyleColor",
       style_builder_template: "visited_color",
       valid_for_first_letter: true,
+      logical_property_group: {
+        name: "visited-border-color",
+        resolver: "right",
+      },
     },
     {
       name: "-internal-visited-border-top-color",
@@ -5909,6 +6112,10 @@
       converter: "ConvertStyleColor",
       style_builder_template: "visited_color",
       valid_for_first_letter: true,
+      logical_property_group: {
+        name: "visited-border-color",
+        resolver: "top",
+      },
     },
     {
       name: "-internal-visited-border-bottom-color",
@@ -5923,14 +6130,18 @@
       converter: "ConvertStyleColor",
       style_builder_template: "visited_color",
       valid_for_first_letter: true,
+      logical_property_group: {
+        name: "visited-border-color",
+        resolver: "bottom",
+      },
     },
     {
       name: "-internal-visited-border-inline-start-color",
       visited_property_for: "border-inline-start-color",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "visited-border-color",
         resolver: "inline-start",
-        physical_group: "visited-border-color",
       },
       valid_for_first_letter: true,
     },
@@ -5938,9 +6149,9 @@
       name: "-internal-visited-border-inline-end-color",
       visited_property_for: "border-inline-end-color",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "visited-border-color",
         resolver: "inline-end",
-        physical_group: "visited-border-color",
       },
       valid_for_first_letter: true,
     },
@@ -5948,9 +6159,9 @@
       name: "-internal-visited-border-block-start-color",
       visited_property_for: "border-block-start-color",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "visited-border-color",
         resolver: "block-start",
-        physical_group: "visited-border-color",
       },
       valid_for_first_letter: true,
     },
@@ -5958,9 +6169,9 @@
       name: "-internal-visited-border-block-end-color",
       visited_property_for: "border-block-end-color",
       property_methods: ["ParseSingleValue"],
-      direction_aware_options: {
+      logical_property_group: {
+        name: "visited-border-color",
         resolver: "block-end",
-        physical_group: "visited-border-color",
       },
       valid_for_first_letter: true,
     },
diff --git a/third_party/blink/renderer/core/css/css_property_value_set.cc b/third_party/blink/renderer/core/css/css_property_value_set.cc
index ee5fccdd..4efda6e 100644
--- a/third_party/blink/renderer/core/css/css_property_value_set.cc
+++ b/third_party/blink/renderer/core/css/css_property_value_set.cc
@@ -417,11 +417,26 @@
                                              CSSPropertyValue* slot) {
   CSSPropertyValue* to_replace =
       slot ? slot : FindCSSPropertyWithName(property.Name());
-  if (to_replace && *to_replace == property)
-    return false;
   if (to_replace) {
-    *to_replace = property;
-    return true;
+    const CSSProperty& prop = CSSProperty::Get(property.Id());
+    if (prop.IsInLogicalPropertyGroup()) {
+      DCHECK(property_vector_.Contains(*to_replace));
+      int to_replace_index = to_replace - property_vector_.begin();
+      for (int n = property_vector_.size() - 1; n > to_replace_index; --n) {
+        if (prop.IsInSameLogicalPropertyGroupWithDifferentMappingLogic(
+                PropertyAt(n).Id())) {
+          RemovePropertyAtIndex(to_replace_index, nullptr);
+          to_replace = nullptr;
+          break;
+        }
+      }
+    }
+    if (to_replace) {
+      if (*to_replace == property)
+        return false;
+      *to_replace = property;
+      return true;
+    }
   }
   property_vector_.push_back(property);
   return true;
diff --git a/third_party/blink/renderer/core/css/properties/css_direction_aware_resolver.cc b/third_party/blink/renderer/core/css/properties/css_direction_aware_resolver.cc
index 451c66b..1f69327 100644
--- a/third_party/blink/renderer/core/css/properties/css_direction_aware_resolver.cc
+++ b/third_party/blink/renderer/core/css/properties/css_direction_aware_resolver.cc
@@ -11,7 +11,9 @@
 namespace {
 
 template <size_t size>
-using PhysicalGroup = CSSDirectionAwareResolver::PhysicalGroup<size>;
+using LogicalMapping = CSSDirectionAwareResolver::LogicalMapping<size>;
+template <size_t size>
+using PhysicalMapping = CSSDirectionAwareResolver::PhysicalMapping<size>;
 
 enum PhysicalAxis { kPhysicalAxisX, kPhysicalAxisY };
 enum PhysicalBoxSide { kTopSide, kRightSide, kBottomSide, kLeftSide };
@@ -19,102 +21,231 @@
 }  // namespace
 
 template <size_t size>
-CSSDirectionAwareResolver::PhysicalGroup<size>::PhysicalGroup(
+CSSDirectionAwareResolver::Group<size>::Group(
     const StylePropertyShorthand& shorthand)
     : properties_(shorthand.properties()) {
   DCHECK_EQ(size, shorthand.length());
 }
 
 template <size_t size>
-CSSDirectionAwareResolver::PhysicalGroup<size>::PhysicalGroup(
+CSSDirectionAwareResolver::Group<size>::Group(
     const CSSProperty* (&properties)[size])
     : properties_(properties) {}
 
 template <size_t size>
-const CSSProperty& CSSDirectionAwareResolver::PhysicalGroup<size>::GetProperty(
+const CSSProperty& CSSDirectionAwareResolver::Group<size>::GetProperty(
     size_t index) const {
   DCHECK_LT(index, size);
   return *properties_[index];
 }
 
-PhysicalGroup<4> CSSDirectionAwareResolver::BorderGroup() {
+template <size_t size>
+bool CSSDirectionAwareResolver::Group<size>::Contains(CSSPropertyID id) const {
+  for (size_t i = 0; i < size; ++i) {
+    if (properties_[i]->IDEquals(id))
+      return true;
+  }
+  return false;
+}
+
+template class CSSDirectionAwareResolver::Group<2ul>;
+template class CSSDirectionAwareResolver::Group<4ul>;
+
+LogicalMapping<4> CSSDirectionAwareResolver::LogicalBorderMapping() {
+  static const CSSProperty* kProperties[] = {
+      &GetCSSPropertyBorderBlockStart(), &GetCSSPropertyBorderBlockEnd(),
+      &GetCSSPropertyBorderInlineStart(), &GetCSSPropertyBorderInlineEnd()};
+  return LogicalMapping<4>(kProperties);
+}
+
+PhysicalMapping<4> CSSDirectionAwareResolver::PhysicalBorderMapping() {
   static const CSSProperty* kProperties[] = {
       &GetCSSPropertyBorderTop(), &GetCSSPropertyBorderRight(),
       &GetCSSPropertyBorderBottom(), &GetCSSPropertyBorderLeft()};
-  return PhysicalGroup<4>(kProperties);
+  return PhysicalMapping<4>(kProperties);
 }
 
-PhysicalGroup<4> CSSDirectionAwareResolver::BorderColorGroup() {
-  return PhysicalGroup<4>(borderColorShorthand());
+LogicalMapping<4> CSSDirectionAwareResolver::LogicalBorderColorMapping() {
+  static const CSSProperty* kProperties[] = {
+      &GetCSSPropertyBorderBlockStartColor(),
+      &GetCSSPropertyBorderBlockEndColor(),
+      &GetCSSPropertyBorderInlineStartColor(),
+      &GetCSSPropertyBorderInlineEndColor()};
+  return LogicalMapping<4>(kProperties);
 }
 
-PhysicalGroup<4> CSSDirectionAwareResolver::BorderStyleGroup() {
-  return PhysicalGroup<4>(borderStyleShorthand());
+PhysicalMapping<4> CSSDirectionAwareResolver::PhysicalBorderColorMapping() {
+  return PhysicalMapping<4>(borderColorShorthand());
 }
 
-PhysicalGroup<4> CSSDirectionAwareResolver::BorderWidthGroup() {
-  return PhysicalGroup<4>(borderWidthShorthand());
+LogicalMapping<4> CSSDirectionAwareResolver::LogicalBorderStyleMapping() {
+  static const CSSProperty* kProperties[] = {
+      &GetCSSPropertyBorderBlockStartStyle(),
+      &GetCSSPropertyBorderBlockEndStyle(),
+      &GetCSSPropertyBorderInlineStartStyle(),
+      &GetCSSPropertyBorderInlineEndStyle()};
+  return LogicalMapping<4>(kProperties);
 }
 
-PhysicalGroup<4> CSSDirectionAwareResolver::InsetGroup() {
-  return PhysicalGroup<4>(insetShorthand());
+PhysicalMapping<4> CSSDirectionAwareResolver::PhysicalBorderStyleMapping() {
+  return PhysicalMapping<4>(borderStyleShorthand());
 }
 
-PhysicalGroup<4> CSSDirectionAwareResolver::MarginGroup() {
-  return PhysicalGroup<4>(marginShorthand());
+LogicalMapping<4> CSSDirectionAwareResolver::LogicalBorderWidthMapping() {
+  static const CSSProperty* kProperties[] = {
+      &GetCSSPropertyBorderBlockStartWidth(),
+      &GetCSSPropertyBorderBlockEndWidth(),
+      &GetCSSPropertyBorderInlineStartWidth(),
+      &GetCSSPropertyBorderInlineEndWidth()};
+  return LogicalMapping<4>(kProperties);
 }
 
-PhysicalGroup<2> CSSDirectionAwareResolver::MaxSizeGroup() {
+PhysicalMapping<4> CSSDirectionAwareResolver::PhysicalBorderWidthMapping() {
+  return PhysicalMapping<4>(borderWidthShorthand());
+}
+
+LogicalMapping<4> CSSDirectionAwareResolver::LogicalInsetMapping() {
+  static const CSSProperty* kProperties[] = {
+      &GetCSSPropertyInsetBlockStart(), &GetCSSPropertyInsetBlockEnd(),
+      &GetCSSPropertyInsetInlineStart(), &GetCSSPropertyInsetInlineEnd()};
+  return LogicalMapping<4>(kProperties);
+}
+
+PhysicalMapping<4> CSSDirectionAwareResolver::PhysicalInsetMapping() {
+  return PhysicalMapping<4>(insetShorthand());
+}
+
+LogicalMapping<4> CSSDirectionAwareResolver::LogicalMarginMapping() {
+  static const CSSProperty* kProperties[] = {
+      &GetCSSPropertyMarginBlockStart(), &GetCSSPropertyMarginBlockEnd(),
+      &GetCSSPropertyMarginInlineStart(), &GetCSSPropertyMarginInlineEnd()};
+  return LogicalMapping<4>(kProperties);
+}
+
+PhysicalMapping<4> CSSDirectionAwareResolver::PhysicalMarginMapping() {
+  return PhysicalMapping<4>(marginShorthand());
+}
+
+LogicalMapping<2> CSSDirectionAwareResolver::LogicalMaxSizeMapping() {
+  static const CSSProperty* kProperties[] = {&GetCSSPropertyMaxBlockSize(),
+                                             &GetCSSPropertyMaxInlineSize()};
+  return LogicalMapping<2>(kProperties);
+}
+
+PhysicalMapping<2> CSSDirectionAwareResolver::PhysicalMaxSizeMapping() {
   static const CSSProperty* kProperties[] = {&GetCSSPropertyMaxWidth(),
                                              &GetCSSPropertyMaxHeight()};
-  return PhysicalGroup<2>(kProperties);
+  return PhysicalMapping<2>(kProperties);
 }
 
-PhysicalGroup<2> CSSDirectionAwareResolver::MinSizeGroup() {
+LogicalMapping<2> CSSDirectionAwareResolver::LogicalMinSizeMapping() {
+  static const CSSProperty* kProperties[] = {&GetCSSPropertyMinBlockSize(),
+                                             &GetCSSPropertyMinInlineSize()};
+  return LogicalMapping<2>(kProperties);
+}
+
+PhysicalMapping<2> CSSDirectionAwareResolver::PhysicalMinSizeMapping() {
   static const CSSProperty* kProperties[] = {&GetCSSPropertyMinWidth(),
                                              &GetCSSPropertyMinHeight()};
-  return PhysicalGroup<2>(kProperties);
+  return PhysicalMapping<2>(kProperties);
 }
 
-PhysicalGroup<2> CSSDirectionAwareResolver::OverflowGroup() {
-  return PhysicalGroup<2>(overflowShorthand());
+LogicalMapping<2> CSSDirectionAwareResolver::LogicalOverflowMapping() {
+  static const CSSProperty* kProperties[] = {&GetCSSPropertyOverflowBlock(),
+                                             &GetCSSPropertyOverflowInline()};
+  return LogicalMapping<2>(kProperties);
 }
 
-PhysicalGroup<2> CSSDirectionAwareResolver::OverscrollBehaviorGroup() {
-  return PhysicalGroup<2>(overscrollBehaviorShorthand());
+PhysicalMapping<2> CSSDirectionAwareResolver::PhysicalOverflowMapping() {
+  return PhysicalMapping<2>(overflowShorthand());
 }
 
-PhysicalGroup<4> CSSDirectionAwareResolver::PaddingGroup() {
-  return PhysicalGroup<4>(paddingShorthand());
+LogicalMapping<2>
+CSSDirectionAwareResolver::LogicalOverscrollBehaviorMapping() {
+  static const CSSProperty* kProperties[] = {
+      &GetCSSPropertyOverscrollBehaviorBlock(),
+      &GetCSSPropertyOverscrollBehaviorInline()};
+  return LogicalMapping<2>(kProperties);
 }
 
-PhysicalGroup<4> CSSDirectionAwareResolver::ScrollMarginGroup() {
-  return PhysicalGroup<4>(scrollMarginShorthand());
+PhysicalMapping<2>
+CSSDirectionAwareResolver::PhysicalOverscrollBehaviorMapping() {
+  return PhysicalMapping<2>(overscrollBehaviorShorthand());
 }
 
-PhysicalGroup<4> CSSDirectionAwareResolver::ScrollPaddingGroup() {
-  return PhysicalGroup<4>(scrollPaddingShorthand());
+LogicalMapping<4> CSSDirectionAwareResolver::LogicalPaddingMapping() {
+  static const CSSProperty* kProperties[] = {
+      &GetCSSPropertyPaddingBlockStart(), &GetCSSPropertyPaddingBlockEnd(),
+      &GetCSSPropertyPaddingInlineStart(), &GetCSSPropertyPaddingInlineEnd()};
+  return LogicalMapping<4>(kProperties);
 }
 
-PhysicalGroup<2> CSSDirectionAwareResolver::SizeGroup() {
+PhysicalMapping<4> CSSDirectionAwareResolver::PhysicalPaddingMapping() {
+  return PhysicalMapping<4>(paddingShorthand());
+}
+
+LogicalMapping<4> CSSDirectionAwareResolver::LogicalScrollMarginMapping() {
+  static const CSSProperty* kProperties[] = {
+      &GetCSSPropertyScrollMarginBlockStart(),
+      &GetCSSPropertyScrollMarginBlockEnd(),
+      &GetCSSPropertyScrollMarginInlineStart(),
+      &GetCSSPropertyScrollMarginInlineEnd()};
+  return LogicalMapping<4>(kProperties);
+}
+
+PhysicalMapping<4> CSSDirectionAwareResolver::PhysicalScrollMarginMapping() {
+  return PhysicalMapping<4>(scrollMarginShorthand());
+}
+
+LogicalMapping<4> CSSDirectionAwareResolver::LogicalScrollPaddingMapping() {
+  static const CSSProperty* kProperties[] = {
+      &GetCSSPropertyScrollPaddingBlockStart(),
+      &GetCSSPropertyScrollPaddingBlockEnd(),
+      &GetCSSPropertyScrollPaddingInlineStart(),
+      &GetCSSPropertyScrollPaddingInlineEnd()};
+  return LogicalMapping<4>(kProperties);
+}
+
+PhysicalMapping<4> CSSDirectionAwareResolver::PhysicalScrollPaddingMapping() {
+  return PhysicalMapping<4>(scrollPaddingShorthand());
+}
+
+LogicalMapping<2> CSSDirectionAwareResolver::LogicalSizeMapping() {
+  static const CSSProperty* kProperties[] = {&GetCSSPropertyBlockSize(),
+                                             &GetCSSPropertyInlineSize()};
+  return LogicalMapping<2>(kProperties);
+}
+
+PhysicalMapping<2> CSSDirectionAwareResolver::PhysicalSizeMapping() {
   static const CSSProperty* kProperties[] = {&GetCSSPropertyWidth(),
                                              &GetCSSPropertyHeight()};
-  return PhysicalGroup<2>(kProperties);
+  return PhysicalMapping<2>(kProperties);
 }
 
-PhysicalGroup<4> CSSDirectionAwareResolver::VisitedBorderColorGroup() {
+LogicalMapping<4>
+CSSDirectionAwareResolver::LogicalVisitedBorderColorMapping() {
+  static const CSSProperty* kProperties[] = {
+      &GetCSSPropertyInternalVisitedBorderBlockStartColor(),
+      &GetCSSPropertyInternalVisitedBorderBlockEndColor(),
+      &GetCSSPropertyInternalVisitedBorderInlineStartColor(),
+      &GetCSSPropertyInternalVisitedBorderInlineEndColor()};
+  return LogicalMapping<4>(kProperties);
+}
+
+PhysicalMapping<4>
+CSSDirectionAwareResolver::PhysicalVisitedBorderColorMapping() {
   static const CSSProperty* kProperties[] = {
       &GetCSSPropertyInternalVisitedBorderTopColor(),
       &GetCSSPropertyInternalVisitedBorderRightColor(),
       &GetCSSPropertyInternalVisitedBorderBottomColor(),
       &GetCSSPropertyInternalVisitedBorderLeftColor()};
-  return PhysicalGroup<4>(kProperties);
+  return PhysicalMapping<4>(kProperties);
 }
 
 const CSSProperty& CSSDirectionAwareResolver::ResolveInlineStart(
     TextDirection direction,
     WritingMode writing_mode,
-    const PhysicalGroup<4>& group) {
+    const PhysicalMapping<4>& group) {
   if (direction == TextDirection::kLtr) {
     if (IsHorizontalWritingMode(writing_mode))
       return group.GetProperty(kLeftSide);
@@ -128,7 +259,7 @@
 const CSSProperty& CSSDirectionAwareResolver::ResolveInlineEnd(
     TextDirection direction,
     WritingMode writing_mode,
-    const PhysicalGroup<4>& group) {
+    const PhysicalMapping<4>& group) {
   if (direction == TextDirection::kLtr) {
     if (IsHorizontalWritingMode(writing_mode))
       return group.GetProperty(kRightSide);
@@ -142,7 +273,7 @@
 const CSSProperty& CSSDirectionAwareResolver::ResolveBlockStart(
     TextDirection direction,
     WritingMode writing_mode,
-    const PhysicalGroup<4>& group) {
+    const PhysicalMapping<4>& group) {
   if (IsHorizontalWritingMode(writing_mode))
     return group.GetProperty(kTopSide);
   if (IsFlippedLinesWritingMode(writing_mode))
@@ -153,7 +284,7 @@
 const CSSProperty& CSSDirectionAwareResolver::ResolveBlockEnd(
     TextDirection direction,
     WritingMode writing_mode,
-    const PhysicalGroup<4>& group) {
+    const PhysicalMapping<4>& group) {
   if (IsHorizontalWritingMode(writing_mode))
     return group.GetProperty(kBottomSide);
   if (IsFlippedLinesWritingMode(writing_mode))
@@ -164,7 +295,7 @@
 const CSSProperty& CSSDirectionAwareResolver::ResolveInline(
     TextDirection,
     WritingMode writing_mode,
-    const PhysicalGroup<2>& group) {
+    const PhysicalMapping<2>& group) {
   if (IsHorizontalWritingMode(writing_mode))
     return group.GetProperty(kPhysicalAxisX);
   return group.GetProperty(kPhysicalAxisY);
@@ -173,7 +304,7 @@
 const CSSProperty& CSSDirectionAwareResolver::ResolveBlock(
     TextDirection,
     WritingMode writing_mode,
-    const PhysicalGroup<2>& group) {
+    const PhysicalMapping<2>& group) {
   if (IsHorizontalWritingMode(writing_mode))
     return group.GetProperty(kPhysicalAxisY);
   return group.GetProperty(kPhysicalAxisX);
diff --git a/third_party/blink/renderer/core/css/properties/css_direction_aware_resolver.h b/third_party/blink/renderer/core/css/properties/css_direction_aware_resolver.h
index 4340a49..7cc409f 100644
--- a/third_party/blink/renderer/core/css/properties/css_direction_aware_resolver.h
+++ b/third_party/blink/renderer/core/css/properties/css_direction_aware_resolver.h
@@ -11,65 +11,130 @@
 
 namespace blink {
 
+enum class CSSPropertyID;
 class CSSProperty;
 class StylePropertyShorthand;
 
 class CSSDirectionAwareResolver {
   STATIC_ONLY(CSSDirectionAwareResolver);
 
- public:
-  // A group of physical properties that's used by the 'Resolve*' functions
-  // to convert a direction-aware property into a physical property.
+ private:
   template <size_t size>
-  class PhysicalGroup {
+  class Group {
    public:
-    PhysicalGroup(const StylePropertyShorthand&);
-    PhysicalGroup(const CSSProperty* (&properties)[size]);
+    explicit Group(const StylePropertyShorthand&);
+    explicit Group(const CSSProperty* (&properties)[size]);
     const CSSProperty& GetProperty(size_t index) const;
+    bool Contains(CSSPropertyID) const;
 
    private:
     const CSSProperty** properties_;
   };
 
-  static PhysicalGroup<4> BorderGroup();
-  static PhysicalGroup<4> BorderColorGroup();
-  static PhysicalGroup<4> BorderStyleGroup();
-  static PhysicalGroup<4> BorderWidthGroup();
-  static PhysicalGroup<4> InsetGroup();
-  static PhysicalGroup<4> MarginGroup();
-  static PhysicalGroup<2> MaxSizeGroup();
-  static PhysicalGroup<2> MinSizeGroup();
-  static PhysicalGroup<2> OverflowGroup();
-  static PhysicalGroup<2> OverscrollBehaviorGroup();
-  static PhysicalGroup<4> PaddingGroup();
-  static PhysicalGroup<4> ScrollMarginGroup();
-  static PhysicalGroup<4> ScrollPaddingGroup();
-  static PhysicalGroup<2> SizeGroup();
-  static PhysicalGroup<4> VisitedBorderColorGroup();
+ public:
+  // A group of logical properties that's used by the 'Resolve*' functions
+  // to convert a physical property into a direction-aware property.
+  // It represents the properties in a logical property group [1] with
+  // a flow-relative mapping logic [2].
+  // [1]: https://drafts.csswg.org/css-logical/#logical-property-group
+  // [2]: https://drafts.csswg.org/css-logical/#mapping-logic
+  template <size_t size>
+  class LogicalMapping : public Group<size> {
+    using Group<size>::Group;
+  };
 
-  // These resolvers expect a PhysicalGroup with box sides, in the following
+  // A group of physical properties that's used by the 'Resolve*' functions
+  // to convert a direction-aware property into a physical property.
+  // It represents the properties in a logical property group [1] with
+  // a physical mapping logic [2].
+  // [1]: https://drafts.csswg.org/css-logical/#logical-property-group
+  // [2]: https://drafts.csswg.org/css-logical/#mapping-logic
+  template <size_t size>
+  class PhysicalMapping : public Group<size> {
+    using Group<size>::Group;
+  };
+
+  static LogicalMapping<4> LogicalBorderMapping();
+  static LogicalMapping<4> LogicalBorderColorMapping();
+  static LogicalMapping<4> LogicalBorderStyleMapping();
+  static LogicalMapping<4> LogicalBorderWidthMapping();
+  static LogicalMapping<4> LogicalInsetMapping();
+  static LogicalMapping<4> LogicalMarginMapping();
+  static LogicalMapping<2> LogicalMaxSizeMapping();
+  static LogicalMapping<2> LogicalMinSizeMapping();
+  static LogicalMapping<2> LogicalOverflowMapping();
+  static LogicalMapping<2> LogicalOverscrollBehaviorMapping();
+  static LogicalMapping<4> LogicalPaddingMapping();
+  static LogicalMapping<4> LogicalScrollMarginMapping();
+  static LogicalMapping<4> LogicalScrollPaddingMapping();
+  static LogicalMapping<2> LogicalSizeMapping();
+  static LogicalMapping<4> LogicalVisitedBorderColorMapping();
+
+  static PhysicalMapping<4> PhysicalBorderMapping();
+  static PhysicalMapping<4> PhysicalBorderColorMapping();
+  static PhysicalMapping<4> PhysicalBorderStyleMapping();
+  static PhysicalMapping<4> PhysicalBorderWidthMapping();
+  static PhysicalMapping<4> PhysicalInsetMapping();
+  static PhysicalMapping<4> PhysicalMarginMapping();
+  static PhysicalMapping<2> PhysicalMaxSizeMapping();
+  static PhysicalMapping<2> PhysicalMinSizeMapping();
+  static PhysicalMapping<2> PhysicalOverflowMapping();
+  static PhysicalMapping<2> PhysicalOverscrollBehaviorMapping();
+  static PhysicalMapping<4> PhysicalPaddingMapping();
+  static PhysicalMapping<4> PhysicalScrollMarginMapping();
+  static PhysicalMapping<4> PhysicalScrollPaddingMapping();
+  static PhysicalMapping<2> PhysicalSizeMapping();
+  static PhysicalMapping<4> PhysicalVisitedBorderColorMapping();
+
+  // These resolvers expect a PhysicalMapping with box sides, in the following
   // order: top, right, bottom, left.
   static const CSSProperty& ResolveInlineStart(TextDirection,
                                                WritingMode,
-                                               const PhysicalGroup<4>&);
+                                               const PhysicalMapping<4>&);
   static const CSSProperty& ResolveInlineEnd(TextDirection,
                                              WritingMode,
-                                             const PhysicalGroup<4>&);
+                                             const PhysicalMapping<4>&);
   static const CSSProperty& ResolveBlockStart(TextDirection,
                                               WritingMode,
-                                              const PhysicalGroup<4>&);
+                                              const PhysicalMapping<4>&);
   static const CSSProperty& ResolveBlockEnd(TextDirection,
                                             WritingMode,
-                                            const PhysicalGroup<4>&);
+                                            const PhysicalMapping<4>&);
 
-  // These resolvers expect a PhysicalGroup with dimensions, in the following
+  // These resolvers expect a LogicalMapping with box sides, in the following
+  // order: block-start, block-end, inline-start, inline-end.
+  // TODO(layout-dev): Implement them, if needed.
+  static const CSSProperty& ResolveTop(TextDirection,
+                                       WritingMode,
+                                       const LogicalMapping<4>&);
+  static const CSSProperty& ResolveBottom(TextDirection,
+                                          WritingMode,
+                                          const LogicalMapping<4>&);
+  static const CSSProperty& ResolveLeft(TextDirection,
+                                        WritingMode,
+                                        const LogicalMapping<4>&);
+  static const CSSProperty& ResolveRight(TextDirection,
+                                         WritingMode,
+                                         const LogicalMapping<4>&);
+
+  // These resolvers expect a PhysicalMapping with dimensions, in the following
   // order: horizontal, vertical.
   static const CSSProperty& ResolveInline(TextDirection,
                                           WritingMode,
-                                          const PhysicalGroup<2>&);
+                                          const PhysicalMapping<2>&);
   static const CSSProperty& ResolveBlock(TextDirection,
                                          WritingMode,
-                                         const PhysicalGroup<2>&);
+                                         const PhysicalMapping<2>&);
+
+  // These resolvers expect a LogicalMapping with dimensions, in the following
+  // order: block, inline.
+  // TODO(layout-dev): Implement them, if needed.
+  static const CSSProperty& ResolveHorizontal(TextDirection,
+                                              WritingMode,
+                                              const LogicalMapping<2>&);
+  static const CSSProperty& ResolveVertical(TextDirection,
+                                            WritingMode,
+                                            const LogicalMapping<2>&);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/properties/css_property.h b/third_party/blink/renderer/core/css/properties/css_property.h
index f50158c..dbd539c 100644
--- a/third_party/blink/renderer/core/css/properties/css_property.h
+++ b/third_party/blink/renderer/core/css/properties/css_property.h
@@ -8,6 +8,7 @@
 #include <memory>
 #include "third_party/blink/renderer/core/css/css_property_name.h"
 #include "third_party/blink/renderer/core/css/css_value.h"
+#include "third_party/blink/renderer/core/css/properties/css_direction_aware_resolver.h"
 #include "third_party/blink/renderer/core/css/properties/css_unresolved_property.h"
 #include "third_party/blink/renderer/platform/heap/heap_allocator.h"
 #include "third_party/blink/renderer/platform/text/text_direction.h"
@@ -62,6 +63,9 @@
     return flags_ & kComputedValueComparable;
   }
   bool TakesTreeScopedValue() const { return flags_ & kTreeScopedValue; }
+  bool IsInLogicalPropertyGroup() const {
+    return flags_ & kInLogicalPropertyGroup;
+  }
 
   bool IsRepeated() const { return repetition_separator_ != '\0'; }
   char RepetitionSeparator() const { return repetition_separator_; }
@@ -100,6 +104,10 @@
                                                            WritingMode) const {
     return *this;
   }
+  virtual bool IsInSameLogicalPropertyGroupWithDifferentMappingLogic(
+      CSSPropertyID) const {
+    return false;
+  }
   virtual const CSSProperty* GetVisitedProperty() const { return nullptr; }
   virtual const CSSProperty* GetUnvisitedProperty() const { return nullptr; }
 
@@ -151,6 +159,8 @@
     kTreeScopedValue = 1 << 18,
     // https://drafts.csswg.org/css-pseudo-4/#highlight-styling
     kValidForHighlight = 1 << 19,
+    // https://drafts.csswg.org/css-logical/#logical-property-group
+    kInLogicalPropertyGroup = 1 << 20,
   };
 
   constexpr CSSProperty(CSSPropertyID property_id,
diff --git a/third_party/blink/renderer/core/css/style_engine.cc b/third_party/blink/renderer/core/css/style_engine.cc
index 04e9904..f0e9b3b6 100644
--- a/third_party/blink/renderer/core/css/style_engine.cc
+++ b/third_party/blink/renderer/core/css/style_engine.cc
@@ -2003,7 +2003,8 @@
     ancestor->ClearChildNeedsStyleRecalc();
   }
   style_recalc_root_.Clear();
-  PropagateWritingModeAndDirectionToHTMLRoot();
+  if (!parent || IsA<HTMLBodyElement>(*root_element))
+    PropagateWritingModeAndDirectionToHTMLRoot();
 }
 
 void StyleEngine::ClearEnsuredDescendantStyles(Element& root) {
diff --git a/third_party/blink/renderer/core/css/style_engine_test.cc b/third_party/blink/renderer/core/css/style_engine_test.cc
index 815b54c..39fc09ee 100644
--- a/third_party/blink/renderer/core/css/style_engine_test.cc
+++ b/third_party/blink/renderer/core/css/style_engine_test.cc
@@ -31,6 +31,7 @@
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/frame/local_frame_view.h"
 #include "third_party/blink/renderer/core/frame/viewport_data.h"
+#include "third_party/blink/renderer/core/html/forms/html_input_element.h"
 #include "third_party/blink/renderer/core/html/html_collection.h"
 #include "third_party/blink/renderer/core/html/html_element.h"
 #include "third_party/blink/renderer/core/html/html_iframe_element.h"
@@ -3804,4 +3805,47 @@
   EXPECT_EQ(5u, GetStyleEngine().StyleForElementCount() - start_count);
 }
 
+TEST_F(StyleEngineTest, MarkStyleDirtyFromContainerRecalc) {
+  GetDocument().body()->setInnerHTML(R"HTML(
+    <div id="container" style="contain:layout">
+      <input id="input" type="text" class="affected">
+    </div>
+  )HTML");
+
+  UpdateAllLifecyclePhases();
+
+  auto* container = GetDocument().getElementById("container");
+  auto* input = GetDocument().getElementById("input");
+  auto* affected = GetDocument().getElementsByClassName("affected");
+  ASSERT_TRUE(container);
+  ASSERT_TRUE(input);
+  auto* inner_editor = DynamicTo<HTMLInputElement>(input)->InnerEditorElement();
+  ASSERT_TRUE(inner_editor);
+  ASSERT_TRUE(affected);
+  SetDependsOnContainerQueries(*affected);
+
+  scoped_refptr<const ComputedStyle> old_inner_style =
+      inner_editor->GetComputedStyle();
+  EXPECT_TRUE(old_inner_style);
+
+  unsigned start_count = GetStyleEngine().StyleForElementCount();
+  GetStyleEngine().UpdateStyleAndLayoutTreeForContainer(*container);
+
+  // Input elements mark their InnerEditorElement() style-dirty when they are
+  // recalculated. That means the UpdateStyleAndLayoutTreeForContainer() call
+  // above will involve marking ChildNeedsStyleRecalc all the way up to the
+  // documentElement. Check that we don't leave anything dirty.
+  EXPECT_FALSE(GetDocument().NeedsLayoutTreeUpdate());
+  EXPECT_FALSE(GetDocument().documentElement()->ChildNeedsStyleRecalc());
+
+  // The input element is recalculated. The inner editor element isn't counted
+  // because we don't do normal style resolution to create the ComputedStyle for
+  // it, but check that we have a new ComputedStyle object for it.
+  EXPECT_EQ(1u, GetStyleEngine().StyleForElementCount() - start_count);
+
+  const ComputedStyle* new_inner_style = inner_editor->GetComputedStyle();
+  EXPECT_TRUE(new_inner_style);
+  EXPECT_NE(old_inner_style, new_inner_style);
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/style_property_serializer.cc b/third_party/blink/renderer/core/css/style_property_serializer.cc
index 427890fc..37ba58ce 100644
--- a/third_party/blink/renderer/core/css/style_property_serializer.cc
+++ b/third_party/blink/renderer/core/css/style_property_serializer.cc
@@ -331,7 +331,6 @@
     case CSSPropertyID::kOutline:
     case CSSPropertyID::kColumnRule:
     case CSSPropertyID::kColumns:
-    case CSSPropertyID::kFlex:
     case CSSPropertyID::kFlexFlow:
     case CSSPropertyID::kGridColumn:
     case CSSPropertyID::kGridRow:
diff --git a/third_party/blink/renderer/core/execution_context/remote_security_context.cc b/third_party/blink/renderer/core/execution_context/remote_security_context.cc
index f073687..3c3f90b 100644
--- a/third_party/blink/renderer/core/execution_context/remote_security_context.cc
+++ b/third_party/blink/renderer/core/execution_context/remote_security_context.cc
@@ -51,24 +51,10 @@
 void RemoteSecurityContext::InitializeFeaturePolicy(
     const ParsedFeaturePolicy& parsed_header,
     const ParsedFeaturePolicy& container_policy,
-    const FeaturePolicy* parent_feature_policy,
-    const FeaturePolicyFeatureState* opener_feature_state) {
-  // Feature policy should either come from a parent in the case of an embedded
-  // child frame, or from an opener if any when a new window is created by an
-  // opener. A main frame without an opener would not have a parent policy nor
-  // an opener feature state.
-  DCHECK(!parent_feature_policy || !opener_feature_state);
+    const FeaturePolicy* parent_feature_policy) {
   report_only_feature_policy_ = nullptr;
-  if (!opener_feature_state ||
-      !RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled()) {
-    feature_policy_ = FeaturePolicy::CreateFromParentPolicy(
-        parent_feature_policy, container_policy,
-        security_origin_->ToUrlOrigin());
-  } else {
-    DCHECK(!parent_feature_policy);
-    feature_policy_ = FeaturePolicy::CreateWithOpenerPolicy(
-        *opener_feature_state, security_origin_->ToUrlOrigin());
-  }
+  feature_policy_ = FeaturePolicy::CreateFromParentPolicy(
+      parent_feature_policy, container_policy, security_origin_->ToUrlOrigin());
   feature_policy_->SetHeaderPolicy(parsed_header);
 }
 
diff --git a/third_party/blink/renderer/core/execution_context/remote_security_context.h b/third_party/blink/renderer/core/execution_context/remote_security_context.h
index f715a66..cb0f184 100644
--- a/third_party/blink/renderer/core/execution_context/remote_security_context.h
+++ b/third_party/blink/renderer/core/execution_context/remote_security_context.h
@@ -28,16 +28,11 @@
   //   * |container_policy|: from <iframe>'s allow attribute.
   //   * |parent_feature_policy|: which is the current state of feature policies
   //     in a parent browsing context (frame).
-  //   * |opener_feature_state|: the current state of the policies in an opener
-  //     if any.
-  // Note that at most one of the |parent_feature_policy| or
-  // |opener_feature_state| should be provided. The |container_policy| is empty
+  // Note that |parent_feature_policy| is null, and |container_policy| is empty
   // for a top-level security context.
-  void InitializeFeaturePolicy(
-      const ParsedFeaturePolicy& parsed_header,
-      const ParsedFeaturePolicy& container_policy,
-      const FeaturePolicy* parent_feature_policy,
-      const FeaturePolicyFeatureState* opener_feature_state);
+  void InitializeFeaturePolicy(const ParsedFeaturePolicy& parsed_header,
+                               const ParsedFeaturePolicy& container_policy,
+                               const FeaturePolicy* parent_feature_policy);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/execution_context/security_context.cc b/third_party/blink/renderer/core/execution_context/security_context.cc
index a6a14db..16a2831 100644
--- a/third_party/blink/renderer/core/execution_context/security_context.cc
+++ b/third_party/blink/renderer/core/execution_context/security_context.cc
@@ -139,12 +139,6 @@
 
 bool SecurityContext::IsSandboxed(
     network::mojom::blink::WebSandboxFlags mask) const {
-  if (RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled()) {
-    mojom::blink::FeaturePolicyFeature feature =
-        FeaturePolicy::FeatureForSandboxFlag(mask);
-    if (feature != mojom::blink::FeaturePolicyFeature::kNotFound)
-      return !feature_policy_->IsFeatureEnabled(feature);
-  }
   return (sandbox_flags_ & mask) !=
          network::mojom::blink::WebSandboxFlags::kNone;
 }
diff --git a/third_party/blink/renderer/core/execution_context/security_context_init.cc b/third_party/blink/renderer/core/execution_context/security_context_init.cc
index ccf0fa4..03fdf85 100644
--- a/third_party/blink/renderer/core/execution_context/security_context_init.cc
+++ b/third_party/blink/renderer/core/execution_context/security_context_init.cc
@@ -15,7 +15,6 @@
 #include "third_party/blink/renderer/core/frame/local_dom_window.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/frame/local_frame_client.h"
-#include "third_party/blink/renderer/core/frame/sandbox_flags.h"
 #include "third_party/blink/renderer/core/frame/settings.h"
 #include "third_party/blink/renderer/core/html/imports/html_imports_controller.h"
 #include "third_party/blink/renderer/core/inspector/console_message.h"
@@ -193,25 +192,14 @@
         message.content));
   }
 
-  // DocumentLoader applied the sandbox flags before calling this function, so
-  // they are accessible here.
-  auto sandbox_flags = execution_context_->GetSandboxFlags();
-  if (sandbox_flags != network::mojom::blink::WebSandboxFlags::kNone &&
-      RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled()) {
-    // The sandbox flags might have come from CSP header or the browser; in
-    // such cases the sandbox is not part of the container policy. They are
-    // added to the header policy (which specifically makes sense in the case
-    // of CSP sandbox).
-    ApplySandboxFlagsToParsedFeaturePolicy(sandbox_flags,
-                                           feature_policy_header_);
-  }
-
   ParsedFeaturePolicy container_policy;
   if (frame && frame->Owner())
     container_policy = frame_policy.container_policy;
 
-  // TODO(icelland): This is problematic querying sandbox flags before
-  // feature policy is initialized.
+  // DocumentLoader applied the sandbox flags before calling this function, so
+  // they are accessible here.
+  auto sandbox_flags = execution_context_->GetSandboxFlags();
+
   if (RuntimeEnabledFeatures::BlockingFocusWithoutUserActivationEnabled() &&
       frame && frame->Tree().Parent() &&
       (sandbox_flags & network::mojom::blink::WebSandboxFlags::kNavigation) !=
@@ -223,26 +211,14 @@
         container_policy);
   }
 
-  // Feature policy should either come from a parent in the case of an
-  // embedded child frame, or from an opener if any when a new window is
-  // created by an opener. A main frame without an opener would not have a
-  // parent policy nor an opener feature state.
-  // For a main frame, get inherited feature policy from the opener if any.
   std::unique_ptr<FeaturePolicy> feature_policy;
-  if (!frame->IsMainFrame() || frame->OpenerFeatureState().empty() ||
-      !RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled()) {
-    auto* parent_feature_policy =
-        frame->Tree().Parent()
-            ? frame->Tree().Parent()->GetSecurityContext()->GetFeaturePolicy()
-            : nullptr;
-    feature_policy = FeaturePolicy::CreateFromParentPolicy(
-        parent_feature_policy, container_policy,
-        execution_context_->GetSecurityOrigin()->ToUrlOrigin());
-  } else {
-    feature_policy = FeaturePolicy::CreateWithOpenerPolicy(
-        frame->OpenerFeatureState(),
-        execution_context_->GetSecurityOrigin()->ToUrlOrigin());
-  }
+  auto* parent_feature_policy =
+      frame->Tree().Parent()
+          ? frame->Tree().Parent()->GetSecurityContext()->GetFeaturePolicy()
+          : nullptr;
+  feature_policy = FeaturePolicy::CreateFromParentPolicy(
+      parent_feature_policy, container_policy,
+      execution_context_->GetSecurityOrigin()->ToUrlOrigin());
   feature_policy->SetHeaderPolicy(feature_policy_header_);
   execution_context_->GetSecurityContext().SetFeaturePolicy(
       std::move(feature_policy));
diff --git a/third_party/blink/renderer/core/exported/web_view_test.cc b/third_party/blink/renderer/core/exported/web_view_test.cc
index 3a7650d..88f8a75 100644
--- a/third_party/blink/renderer/core/exported/web_view_test.cc
+++ b/third_party/blink/renderer/core/exported/web_view_test.cc
@@ -3777,7 +3777,6 @@
                       const WebString& name,
                       WebNavigationPolicy,
                       network::mojom::blink::WebSandboxFlags,
-                      const FeaturePolicyFeatureState&,
                       const SessionStorageNamespaceId&,
                       bool& consumed_user_gesture) override {
     return web_view_helper_.InitializeWithOpener(opener);
@@ -3862,7 +3861,6 @@
                       const WebString& name,
                       WebNavigationPolicy,
                       network::mojom::blink::WebSandboxFlags,
-                      const FeaturePolicyFeatureState&,
                       const SessionStorageNamespaceId&,
                       bool& consumed_user_gesture) override {
     return web_view_;
diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_features.json5 b/third_party/blink/renderer/core/feature_policy/feature_policy_features.json5
index 47b8a5f..53549a8 100644
--- a/third_party/blink/renderer/core/feature_policy/feature_policy_features.json5
+++ b/third_party/blink/renderer/core/feature_policy/feature_policy_features.json5
@@ -152,12 +152,6 @@
       feature_default: "EnableForAll",
     },
     {
-      name: "Downloads",
-      feature_policy_name: "downloads",
-      feature_default: "EnableForAll",
-      depends_on: ["FeaturePolicyForSandbox"],
-    },
-    {
       name: "EncryptedMedia",
       feature_policy_name: "encrypted-media",
     },
@@ -180,12 +174,6 @@
       depends_on: ["BlockingFocusWithoutUserActivation"],
     },
     {
-      name: "FormSubmission",
-      feature_policy_name: "forms",
-      feature_default: "EnableForAll",
-      depends_on: ["FeaturePolicyForSandbox"],
-    },
-    {
       name: "Fullscreen",
       feature_policy_name: "fullscreen",
     },
@@ -230,23 +218,11 @@
       feature_policy_name: "midi",
     },
     {
-      name: "Modals",
-      feature_policy_name: "modals",
-      feature_default: "EnableForAll",
-      depends_on: ["FeaturePolicyForSandbox"],
-    },
-    {
       name: "OTPCredentials",
       feature_policy_name: "otp-credentials",
       depends_on: ["WebOTPAssertionFeaturePolicy"],
     },
     {
-      name: "OrientationLock",
-      feature_policy_name: "orientation-lock",
-      feature_default: "EnableForAll",
-      depends_on: ["FeaturePolicyForSandbox"],
-    },
-    {
       name: "Payment",
       feature_policy_name: "payment",
       depends_on: ["PaymentRequest"],
@@ -258,24 +234,6 @@
       depends_on: ["PictureInPictureAPI"],
     },
     {
-      name: "PointerLock",
-      feature_policy_name: "pointer-lock",
-      feature_default: "EnableForAll",
-      depends_on: ["FeaturePolicyForSandbox"],
-    },
-    {
-      name: "Popups",
-      feature_policy_name: "popups",
-      feature_default: "EnableForAll",
-      depends_on: ["FeaturePolicyForSandbox"],
-    },
-    {
-      name: "Presentation",
-      feature_policy_name: "presentation",
-      feature_default: "EnableForAll",
-      depends_on: ["FeaturePolicyForSandbox"],
-    },
-    {
       name: "PublicKeyCredentialsGet",
       feature_policy_name: "publickey-credentials-get",
       depends_on: ["WebAuthenticationGetAssertionFeaturePolicy"],
@@ -286,12 +244,6 @@
       depends_on: ["WakeLock"],
     },
     {
-      name: "Script",
-      feature_policy_name: "scripts",
-      feature_default: "EnableForAll",
-      depends_on: ["FeaturePolicyForSandbox"],
-    },
-    {
       name: "Serial",
       feature_policy_name: "serial",
       depends_on: ["Serial"],
@@ -308,12 +260,6 @@
       feature_policy_name: "sync-xhr",
     },
     {
-      name: "TopNavigation",
-      feature_policy_name: "top-navigation",
-      feature_default: "EnableForAll",
-      depends_on: ["FeaturePolicyForSandbox"],
-    },
-    {
       name: "TrustTokenRedemption",
       feature_policy_name: "trust-token-redemption",
       depends_on: ["TrustTokens"],
diff --git a/third_party/blink/renderer/core/frame/build.gni b/third_party/blink/renderer/core/frame/build.gni
index a154b84..a82f67f 100644
--- a/third_party/blink/renderer/core/frame/build.gni
+++ b/third_party/blink/renderer/core/frame/build.gni
@@ -172,8 +172,6 @@
   "root_frame_viewport.h",
   "rotation_viewport_anchor.cc",
   "rotation_viewport_anchor.h",
-  "sandbox_flags.cc",
-  "sandbox_flags.h",
   "savable_resources.cc",
   "savable_resources.h",
   "scheduling.cc",
diff --git a/third_party/blink/renderer/core/frame/csp/csp_directive_list.cc b/third_party/blink/renderer/core/frame/csp/csp_directive_list.cc
index edc386b..a6ed874 100644
--- a/third_party/blink/renderer/core/frame/csp/csp_directive_list.cc
+++ b/third_party/blink/renderer/core/frame/csp/csp_directive_list.cc
@@ -16,7 +16,6 @@
 #include "third_party/blink/renderer/core/execution_context/security_context.h"
 #include "third_party/blink/renderer/core/frame/deprecation.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
-#include "third_party/blink/renderer/core/frame/sandbox_flags.h"
 #include "third_party/blink/renderer/core/html/html_script_element.h"
 #include "third_party/blink/renderer/core/inspector/console_message.h"
 #include "third_party/blink/renderer/core/loader/mixed_content_checker.h"
diff --git a/third_party/blink/renderer/core/frame/frame.h b/third_party/blink/renderer/core/frame/frame.h
index 048a0e8..3fa70bc 100644
--- a/third_party/blink/renderer/core/frame/frame.h
+++ b/third_party/blink/renderer/core/frame/frame.h
@@ -253,25 +253,6 @@
     return navigation_rate_limiter_;
   }
 
-  // Called to get the opener's FeatureState if any. This works with disowned
-  // openers, i.e., even if WebFrame::Opener() is nullptr, there could be a
-  // non-empty feature state which is taken from the the original opener of the
-  // frame. This is similar to how sandbox flags are propagated to the opened
-  // new browsing contexts.
-  const FeaturePolicyFeatureState& OpenerFeatureState() const {
-    return opener_feature_state_;
-  }
-
-  // Sets the opener's FeatureState for the main frame. Once a non-empty
-  // |opener_feature_state| is set, it can no longer be modified (due to the
-  // fact that the original opener which passed down the FeatureState cannot be
-  // modified either).
-  void SetOpenerFeatureState(const FeaturePolicyFeatureState& state) {
-    DCHECK(state.empty() || IsMainFrame());
-    DCHECK(opener_feature_state_.empty());
-    opener_feature_state_ = state;
-  }
-
   const DocumentPolicyFeatureState& GetRequiredDocumentPolicy() const {
     return required_document_policy_;
   }
@@ -446,10 +427,6 @@
 
   NavigationRateLimiter navigation_rate_limiter_;
 
-  // Feature policy state inherited from an opener. It is always empty for child
-  // frames.
-  FeaturePolicyFeatureState opener_feature_state_;
-
   // The required document policy for any subframes of this frame.
   // Note: current frame's document policy might not conform to
   // |required_document_policy_| here, as the Require-Document-Policy HTTP
diff --git a/third_party/blink/renderer/core/frame/frame_test_helpers.cc b/third_party/blink/renderer/core/frame/frame_test_helpers.cc
index 2b743893..2fe7248 100644
--- a/third_party/blink/renderer/core/frame/frame_test_helpers.cc
+++ b/third_party/blink/renderer/core/frame/frame_test_helpers.cc
@@ -872,7 +872,6 @@
                                        const WebString& name,
                                        WebNavigationPolicy,
                                        network::mojom::blink::WebSandboxFlags,
-                                       const FeaturePolicyFeatureState&,
                                        const SessionStorageNamespaceId&,
                                        bool& consumed_user_gesture) {
   auto webview_helper = std::make_unique<WebViewHelper>();
diff --git a/third_party/blink/renderer/core/frame/frame_test_helpers.h b/third_party/blink/renderer/core/frame/frame_test_helpers.h
index 6e170ce..ef791525 100644
--- a/third_party/blink/renderer/core/frame/frame_test_helpers.h
+++ b/third_party/blink/renderer/core/frame/frame_test_helpers.h
@@ -293,7 +293,6 @@
                       const WebString& name,
                       WebNavigationPolicy,
                       network::mojom::blink::WebSandboxFlags,
-                      const FeaturePolicyFeatureState&,
                       const SessionStorageNamespaceId&,
                       bool& consumed_user_gesture) override;
 
diff --git a/third_party/blink/renderer/core/frame/remote_frame.cc b/third_party/blink/renderer/core/frame/remote_frame.cc
index c3db543..7ef327f 100644
--- a/third_party/blink/renderer/core/frame/remote_frame.cc
+++ b/third_party/blink/renderer/core/frame/remote_frame.cc
@@ -393,16 +393,9 @@
       IsIgnoredForHitTest());
 }
 
-void RemoteFrame::SetReplicatedFeaturePolicyHeaderAndOpenerPolicies(
-    const ParsedFeaturePolicy& parsed_header,
-    const FeaturePolicyFeatureState& opener_feature_state) {
+void RemoteFrame::SetReplicatedFeaturePolicyHeader(
+    const ParsedFeaturePolicy& parsed_header) {
   feature_policy_header_ = parsed_header;
-  if (RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled()) {
-    DCHECK(opener_feature_state.empty() || IsMainFrame());
-    if (OpenerFeatureState().empty()) {
-      SetOpenerFeatureState(opener_feature_state);
-    }
-  }
   ApplyReplicatedFeaturePolicyHeader();
 }
 
@@ -678,8 +671,7 @@
   ParsedFeaturePolicy parsed_feature_policy_copy(parsed_feature_policy.size());
   for (size_t i = 0; i < parsed_feature_policy.size(); ++i)
     parsed_feature_policy_copy[i] = parsed_feature_policy[i];
-  SetReplicatedFeaturePolicyHeaderAndOpenerPolicies(
-      parsed_feature_policy_copy, FeaturePolicyFeatureState());
+  SetReplicatedFeaturePolicyHeader(parsed_feature_policy_copy);
 }
 
 // Update the proxy's FrameOwner with new sandbox flags and container policy
@@ -836,10 +828,8 @@
   ParsedFeaturePolicy container_policy;
   if (Owner())
     container_policy = Owner()->GetFramePolicy().container_policy;
-  const FeaturePolicyFeatureState& opener_feature_state = OpenerFeatureState();
   security_context_.InitializeFeaturePolicy(
-      feature_policy_header_, container_policy, parent_feature_policy,
-      opener_feature_state.empty() ? nullptr : &opener_feature_state);
+      feature_policy_header_, container_policy, parent_feature_policy);
 }
 
 void RemoteFrame::BindToReceiver(
diff --git a/third_party/blink/renderer/core/frame/remote_frame.h b/third_party/blink/renderer/core/frame/remote_frame.h
index d42f268..482c84f 100644
--- a/third_party/blink/renderer/core/frame/remote_frame.h
+++ b/third_party/blink/renderer/core/frame/remote_frame.h
@@ -112,9 +112,8 @@
 
   void DidChangeVisibleToHitTesting() override;
 
-  void SetReplicatedFeaturePolicyHeaderAndOpenerPolicies(
-      const ParsedFeaturePolicy& parsed_header,
-      const FeaturePolicyFeatureState&);
+  void SetReplicatedFeaturePolicyHeader(
+      const ParsedFeaturePolicy& parsed_header);
 
   void SetReplicatedSandboxFlags(network::mojom::blink::WebSandboxFlags);
   void SetInsecureRequestPolicy(mojom::blink::InsecureRequestPolicy);
diff --git a/third_party/blink/renderer/core/frame/sandbox_flags.cc b/third_party/blink/renderer/core/frame/sandbox_flags.cc
deleted file mode 100644
index 8479d77..0000000
--- a/third_party/blink/renderer/core/frame/sandbox_flags.cc
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2013 Google Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY GOOGLE, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include "third_party/blink/renderer/core/frame/sandbox_flags.h"
-
-#include "services/network/public/cpp/web_sandbox_flags.h"
-#include "services/network/public/mojom/web_sandbox_flags.mojom-blink.h"
-#include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-blink.h"
-#include "third_party/blink/renderer/core/feature_policy/feature_policy_parser.h"
-
-namespace blink {
-
-const SandboxFlagFeaturePolicyPairs& SandboxFlagsWithFeaturePolicies() {
-  DEFINE_STATIC_LOCAL(
-      SandboxFlagFeaturePolicyPairs, array,
-      ({
-          {network::mojom::blink::WebSandboxFlags::kTopNavigation,
-           mojom::blink::FeaturePolicyFeature::kTopNavigation},
-          {network::mojom::blink::WebSandboxFlags::kForms,
-           mojom::blink::FeaturePolicyFeature::kFormSubmission},
-          {network::mojom::blink::WebSandboxFlags::kScripts,
-           mojom::blink::FeaturePolicyFeature::kScript},
-          {network::mojom::blink::WebSandboxFlags::kPopups,
-           mojom::blink::FeaturePolicyFeature::kPopups},
-          {network::mojom::blink::WebSandboxFlags::kPointerLock,
-           mojom::blink::FeaturePolicyFeature::kPointerLock},
-          {network::mojom::blink::WebSandboxFlags::kModals,
-           mojom::blink::FeaturePolicyFeature::kModals},
-          {network::mojom::blink::WebSandboxFlags::kOrientationLock,
-           mojom::blink::FeaturePolicyFeature::kOrientationLock},
-          {network::mojom::blink::WebSandboxFlags::kPresentationController,
-           mojom::blink::FeaturePolicyFeature::kPresentation},
-          {network::mojom::blink::WebSandboxFlags::kDownloads,
-           mojom::blink::FeaturePolicyFeature::kDownloads},
-      }));
-  return array;
-}
-
-// This returns a super mask which indicates the set of all flags that have
-// corresponding feature policies. With FeaturePolicyForSandbox, these flags
-// are always removed from the set of sandbox flags set for a sandboxed
-// <iframe> (those sandbox flags are now contained in the |ContainerPolicy|).
-network::mojom::blink::WebSandboxFlags
-SandboxFlagsImplementedByFeaturePolicy() {
-  DEFINE_STATIC_LOCAL(network::mojom::blink::WebSandboxFlags, mask,
-                      (network::mojom::blink::WebSandboxFlags::kNone));
-  if (mask == network::mojom::blink::WebSandboxFlags::kNone) {
-    for (const auto& pair : SandboxFlagsWithFeaturePolicies())
-      mask |= pair.first;
-  }
-  return mask;
-}
-
-// Removes a certain set of flags from |sandbox_flags| for which we have feature
-// policies implemented.
-network::mojom::blink::WebSandboxFlags
-GetSandboxFlagsNotImplementedAsFeaturePolicy(
-    network::mojom::blink::WebSandboxFlags sandbox_flags) {
-  // Punch all the sandbox flags which are converted to feature policy.
-  return sandbox_flags & ~SandboxFlagsImplementedByFeaturePolicy();
-}
-
-void ApplySandboxFlagsToParsedFeaturePolicy(
-    network::mojom::blink::WebSandboxFlags sandbox_flags,
-    ParsedFeaturePolicy& parsed_feature_policy) {
-  for (const auto& pair : SandboxFlagsWithFeaturePolicies()) {
-    if ((sandbox_flags & pair.first) !=
-        network::mojom::blink::WebSandboxFlags::kNone)
-      DisallowFeatureIfNotPresent(pair.second, parsed_feature_policy);
-  }
-}
-
-}  // namespace blink
diff --git a/third_party/blink/renderer/core/frame/sandbox_flags.h b/third_party/blink/renderer/core/frame/sandbox_flags.h
deleted file mode 100644
index 8bbf7a9..0000000
--- a/third_party/blink/renderer/core/frame/sandbox_flags.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2013 Google Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY GOOGLE, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_SANDBOX_FLAGS_H_
-#define THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_SANDBOX_FLAGS_H_
-
-#include "services/network/public/mojom/web_sandbox_flags.mojom-blink-forward.h"
-#include "third_party/blink/public/common/feature_policy/feature_policy.h"
-#include "third_party/blink/public/mojom/feature_policy/feature_policy_feature.mojom-blink-forward.h"
-#include "third_party/blink/renderer/platform/wtf/forward.h"
-
-namespace blink {
-using SandboxFlagFeaturePolicyPairs =
-    Vector<std::pair<network::mojom::blink::WebSandboxFlags,
-                     mojom::blink::FeaturePolicyFeature>>;
-
-// Returns a vector of pairs of sandbox flags and the corresponding feature
-// policies. This includes most but not all sandbox flags as some flags have not
-// yet migrated to using feature policies.
-const SandboxFlagFeaturePolicyPairs& SandboxFlagsWithFeaturePolicies();
-
-// With FeaturePolicyForSandbox most sandbox flags will be represented with
-// features. This method returns the part of sandbox flags which were not mapped
-// to corresponding features.
-network::mojom::blink::WebSandboxFlags
-    GetSandboxFlagsNotImplementedAsFeaturePolicy(
-        network::mojom::blink::WebSandboxFlags);
-
-// Applies the sandbox flags as parsed feature policies; If a flag is present
-// both in the provided flags and in the parsed feature as a feature policy,
-// the parsed policy takes precedence.
-void ApplySandboxFlagsToParsedFeaturePolicy(
-    network::mojom::blink::WebSandboxFlags,
-    ParsedFeaturePolicy&);
-
-}  // namespace blink
-
-#endif
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 e73d1fe0..575e6ec 100644
--- a/third_party/blink/renderer/core/frame/web_frame_test.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_test.cc
@@ -7098,7 +7098,6 @@
                       const WebString&,
                       WebNavigationPolicy,
                       network::mojom::blink::WebSandboxFlags,
-                      const FeaturePolicyFeatureState&,
                       const SessionStorageNamespaceId&,
                       bool& consumed_user_gesture) override {
     EXPECT_TRUE(false);
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
index 20392b14..eab0ecf 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
@@ -1786,11 +1786,10 @@
     std::unique_ptr<blink::WebPolicyContainer> policy_container,
     WebFrame* opener,
     const WebString& name,
-    network::mojom::blink::WebSandboxFlags sandbox_flags,
-    const FeaturePolicyFeatureState& opener_feature_state) {
+    network::mojom::blink::WebSandboxFlags sandbox_flags) {
   return WebLocalFrameImpl::CreateMainFrame(
       web_view, client, interface_registry, frame_token, opener, name,
-      sandbox_flags, std::move(policy_container), opener_feature_state);
+      sandbox_flags, std::move(policy_container));
 }
 
 WebLocalFrame* WebLocalFrame::CreateProvisional(
@@ -1813,8 +1812,7 @@
     WebFrame* opener,
     const WebString& name,
     network::mojom::blink::WebSandboxFlags sandbox_flags,
-    std::unique_ptr<blink::WebPolicyContainer> policy_container,
-    const FeaturePolicyFeatureState& opener_feature_state) {
+    std::unique_ptr<blink::WebPolicyContainer> policy_container) {
   auto* frame = MakeGarbageCollected<WebLocalFrameImpl>(
       base::PassKey<WebLocalFrameImpl>(),
       mojom::blink::TreeScopeType::kDocument, client, interface_registry,
@@ -1824,7 +1822,7 @@
   frame->InitializeCoreFrame(
       page, nullptr, nullptr, nullptr, FrameInsertType::kInsertInConstructor,
       name, opener ? &ToCoreFrame(*opener)->window_agent_factory() : nullptr,
-      opener, std::move(policy_container), sandbox_flags, opener_feature_state);
+      opener, std::move(policy_container), sandbox_flags);
   return frame;
 }
 
@@ -1852,9 +1850,6 @@
     // to inherit sandbox flags when a sandboxed frame does a window.open()
     // which triggers a cross-process navigation.
     sandbox_flags = frame_policy.sandbox_flags;
-    // If there is an opener (even disowned), the opener policies must be
-    // inherited the same way as sandbox flag.
-    feature_state = previous_frame->OpenerFeatureState();
   }
   // Note: this *always* temporarily sets a frame owner, even for main frames!
   // When a core Frame is created with no owner, it attempts to set itself as
@@ -1875,7 +1870,7 @@
           ? nullptr
           : &ToCoreFrame(*previous_web_frame)->window_agent_factory(),
       previous_web_frame->Opener(), /* policy_container */ nullptr,
-      sandbox_flags, feature_state);
+      sandbox_flags);
 
   LocalFrame* new_frame = web_frame->GetFrame();
   previous_frame->SetProvisionalFrame(new_frame);
@@ -1963,13 +1958,12 @@
     WindowAgentFactory* window_agent_factory,
     WebFrame* opener,
     std::unique_ptr<blink::WebPolicyContainer> policy_container,
-    network::mojom::blink::WebSandboxFlags sandbox_flags,
-    const FeaturePolicyFeatureState& opener_feature_state) {
+    network::mojom::blink::WebSandboxFlags sandbox_flags) {
   InitializeCoreFrameInternal(page, owner, parent, previous_sibling,
                               insert_type, name, window_agent_factory, opener,
                               PolicyContainer::CreateFromWebPolicyContainer(
                                   std::move(policy_container)),
-                              sandbox_flags, opener_feature_state);
+                              sandbox_flags);
 }
 
 void WebLocalFrameImpl::InitializeCoreFrameInternal(
@@ -1982,8 +1976,7 @@
     WindowAgentFactory* window_agent_factory,
     WebFrame* opener,
     std::unique_ptr<PolicyContainer> policy_container,
-    network::mojom::blink::WebSandboxFlags sandbox_flags,
-    const FeaturePolicyFeatureState& opener_feature_state) {
+    network::mojom::blink::WebSandboxFlags sandbox_flags) {
   Frame* parent_frame = parent ? ToCoreFrame(*parent) : nullptr;
   Frame* previous_sibling_frame =
       previous_sibling ? ToCoreFrame(*previous_sibling) : nullptr;
@@ -1992,8 +1985,6 @@
       previous_sibling_frame, insert_type, GetFrameToken(),
       window_agent_factory, interface_registry_, std::move(policy_container)));
   frame_->Tree().SetName(name);
-  if (RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled())
-    frame_->SetOpenerFeatureState(opener_feature_state);
   frame_->Loader().ForceSandboxFlags(sandbox_flags);
   Frame* opener_frame = opener ? ToCoreFrame(*opener) : nullptr;
 
@@ -2453,17 +2444,6 @@
   if (!GetFrame())
     return true;
 
-  if (RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled()) {
-    // Downloads could be disabled if the parent frame's FeaturePolicy does not
-    // allow downloads.
-    if (GetFrame()->Tree().Parent() &&
-        !GetFrame()->Tree().Parent()->GetSecurityContext()->IsFeatureEnabled(
-            mojom::blink::FeaturePolicyFeature::kDownloads)) {
-      return false;
-    }
-    return !GetFrame()->Owner() ||
-           GetFrame()->Owner()->GetFramePolicy().allowed_to_download;
-  }
   return (GetFrame()->Loader().PendingEffectiveSandboxFlags() &
           network::mojom::blink::WebSandboxFlags::kDownloads) ==
          network::mojom::blink::WebSandboxFlags::kNone;
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.h b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
index debc4b1..4b8c4c8 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.h
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
@@ -351,9 +351,7 @@
       WebFrame* opener,
       std::unique_ptr<blink::WebPolicyContainer> policy_container,
       network::mojom::blink::WebSandboxFlags sandbox_flags =
-          network::mojom::blink::WebSandboxFlags::kNone,
-      const FeaturePolicyFeatureState& opener_feature_state =
-          FeaturePolicyFeatureState());
+          network::mojom::blink::WebSandboxFlags::kNone);
   LocalFrame* GetFrame() const { return frame_.Get(); }
 
   void WillBeDetached();
@@ -368,8 +366,7 @@
       WebFrame* opener,
       const WebString& name,
       network::mojom::blink::WebSandboxFlags,
-      std::unique_ptr<blink::WebPolicyContainer>,
-      const FeaturePolicyFeatureState&);
+      std::unique_ptr<blink::WebPolicyContainer>);
   static WebLocalFrameImpl* CreateProvisional(
       WebLocalFrameClient*,
       InterfaceRegistry*,
@@ -526,9 +523,7 @@
       WebFrame* opener,
       std::unique_ptr<PolicyContainer> policy_container,
       network::mojom::blink::WebSandboxFlags sandbox_flags =
-          network::mojom::blink::WebSandboxFlags::kNone,
-      const FeaturePolicyFeatureState& opener_feature_state =
-          FeaturePolicyFeatureState());
+          network::mojom::blink::WebSandboxFlags::kNone);
 
   WebLocalFrameClient* client_;
 
diff --git a/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc b/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc
index 49a7431..68fc6e271 100644
--- a/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc
@@ -290,12 +290,10 @@
   GetFrame()->SetReplicatedName(name, unique_name);
 }
 
-void WebRemoteFrameImpl::SetReplicatedFeaturePolicyHeaderAndOpenerPolicies(
-    const ParsedFeaturePolicy& parsed_header,
-    const FeaturePolicyFeatureState& opener_feature_state) {
+void WebRemoteFrameImpl::SetReplicatedFeaturePolicyHeader(
+    const ParsedFeaturePolicy& parsed_header) {
   DCHECK(GetFrame());
-  GetFrame()->SetReplicatedFeaturePolicyHeaderAndOpenerPolicies(
-      parsed_header, opener_feature_state);
+  GetFrame()->SetReplicatedFeaturePolicyHeader(parsed_header);
 }
 
 void WebRemoteFrameImpl::AddReplicatedContentSecurityPolicyHeader(
diff --git a/third_party/blink/renderer/core/frame/web_remote_frame_impl.h b/third_party/blink/renderer/core/frame/web_remote_frame_impl.h
index 0592941e..7029d1c 100644
--- a/third_party/blink/renderer/core/frame/web_remote_frame_impl.h
+++ b/third_party/blink/renderer/core/frame/web_remote_frame_impl.h
@@ -92,9 +92,8 @@
       network::mojom::blink::WebSandboxFlags) override;
   void SetReplicatedName(const WebString& name,
                          const WebString& unique_name) override;
-  void SetReplicatedFeaturePolicyHeaderAndOpenerPolicies(
-      const ParsedFeaturePolicy& parsed_header,
-      const FeaturePolicyFeatureState&) override;
+  void SetReplicatedFeaturePolicyHeader(
+      const ParsedFeaturePolicy& parsed_header) override;
   void AddReplicatedContentSecurityPolicyHeader(
       const WebString& header_value,
       network::mojom::ContentSecurityPolicyType,
diff --git a/third_party/blink/renderer/core/html/html_iframe_element.cc b/third_party/blink/renderer/core/html/html_iframe_element.cc
index aa3cfaf..86f11ca 100644
--- a/third_party/blink/renderer/core/html/html_iframe_element.cc
+++ b/third_party/blink/renderer/core/html/html_iframe_element.cc
@@ -40,7 +40,6 @@
 #include "third_party/blink/renderer/core/fetch/trust_token_issuance_authorization.h"
 #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h"
 #include "third_party/blink/renderer/core/frame/deprecation.h"
-#include "third_party/blink/renderer/core/frame/sandbox_flags.h"
 #include "third_party/blink/renderer/core/html/html_document.h"
 #include "third_party/blink/renderer/core/html/trust_token_attribute_parsing.h"
 #include "third_party/blink/renderer/core/html_names.h"
@@ -154,8 +153,6 @@
       FrameOwnerPropertiesChanged();
   } else if (name == html_names::kSandboxAttr) {
     sandbox_->DidUpdateAttributeValue(params.old_value, value);
-    bool feature_policy_for_sandbox =
-        RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled();
 
     network::mojom::blink::WebSandboxFlags current_flags =
         network::mojom::blink::WebSandboxFlags::kNone;
@@ -181,26 +178,7 @@
     SetAllowedToDownload(
         (current_flags & network::mojom::blink::WebSandboxFlags::kDownloads) ==
         network::mojom::blink::WebSandboxFlags::kNone);
-    // With FeaturePolicyForSandbox, sandbox flags are represented as part of
-    // the container policies. However, not all sandbox flags are yet converted
-    // and for now the residue will stay around in the stored flags.
-    // (see https://crbug.com/812381).
-    network::mojom::blink::WebSandboxFlags sandbox_to_set = current_flags;
-    sandbox_flags_converted_to_feature_policies_ =
-        network::mojom::blink::WebSandboxFlags::kNone;
-    if (feature_policy_for_sandbox &&
-        current_flags != network::mojom::blink::WebSandboxFlags::kNone) {
-      // Residue sandbox which will not be mapped to feature policies.
-      sandbox_to_set =
-          GetSandboxFlagsNotImplementedAsFeaturePolicy(current_flags);
-      // The part of sandbox which will be mapped to feature policies.
-      sandbox_flags_converted_to_feature_policies_ =
-          current_flags & ~sandbox_to_set;
-    }
-    SetSandboxFlags(sandbox_to_set);
-    if (RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled())
-      UpdateContainerPolicy();
-
+    SetSandboxFlags(current_flags);
     UseCounter::Count(GetDocument(), WebFeature::kSandboxViaIFrame);
   } else if (name == html_names::kReferrerpolicyAttr) {
     referrer_policy_ = network::mojom::ReferrerPolicy::kDefault;
@@ -352,32 +330,8 @@
   ParsedFeaturePolicy container_policy = FeaturePolicyParser::ParseAttribute(
       allow_, self_origin, src_origin, logger, GetExecutionContext());
 
-  // Next, process sandbox flags. These all only take effect if a corresponding
-  // policy does *not* exist in the allow attribute's value.
-  if (RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled()) {
-    // If the frame is sandboxed at all, then warn if feature policy attributes
-    // will override the sandbox attributes.
-    if ((sandbox_flags_converted_to_feature_policies_ &
-         network::mojom::blink::WebSandboxFlags::kNavigation) !=
-        network::mojom::blink::WebSandboxFlags::kNone) {
-      for (const auto& pair : SandboxFlagsWithFeaturePolicies()) {
-        if ((sandbox_flags_converted_to_feature_policies_ & pair.first) !=
-                network::mojom::blink::WebSandboxFlags::kNone &&
-            IsFeatureDeclared(pair.second, container_policy)) {
-          logger.Warn(String::Format(
-              "Allow and Sandbox attributes both mention '%s'. Allow will take "
-              "precedence.",
-              GetNameForFeature(pair.second).Utf8().c_str()));
-        }
-      }
-    }
-    ApplySandboxFlagsToParsedFeaturePolicy(
-        sandbox_flags_converted_to_feature_policies_, container_policy);
-  }
-
-  // Finally, process the allow* attribuets. Like sandbox attributes, they only
-  // take effect if the corresponding feature is not present in the allow
-  // attribute's value.
+  // Process the allow* attributes. These only take effect if the corresponding
+  // feature is not present in the allow attribute's value.
 
   // If allowfullscreen attribute is present and no fullscreen policy is set,
   // enable the feature for all origins.
diff --git a/third_party/blink/renderer/core/html/html_iframe_element.h b/third_party/blink/renderer/core/html/html_iframe_element.h
index 7a27189..0e1623f 100644
--- a/third_party/blink/renderer/core/html/html_iframe_element.h
+++ b/third_party/blink/renderer/core/html/html_iframe_element.h
@@ -61,11 +61,6 @@
     return mojom::blink::FrameOwnerElementType::kIframe;
   }
 
-  network::mojom::blink::WebSandboxFlags
-  sandbox_flags_converted_to_feature_policies() const {
-    return sandbox_flags_converted_to_feature_policies_;
-  }
-
  private:
   void SetCollapsed(bool) override;
 
@@ -107,12 +102,6 @@
   bool collapsed_by_client_;
   Member<HTMLIFrameElementSandbox> sandbox_;
   Member<DOMFeaturePolicy> policy_;
-  // This represents a subset of sandbox flags set through 'sandbox' attribute
-  // that will be converted to feature policies as part of the container
-  // policies.
-  network::mojom::blink::WebSandboxFlags
-      sandbox_flags_converted_to_feature_policies_ =
-          network::mojom::blink::WebSandboxFlags::kNone;
 
   network::mojom::ReferrerPolicy referrer_policy_;
 };
diff --git a/third_party/blink/renderer/core/html/html_iframe_element_test.cc b/third_party/blink/renderer/core/html/html_iframe_element_test.cc
index f7ed45f..e3dc8b5b 100644
--- a/third_party/blink/renderer/core/html/html_iframe_element_test.cc
+++ b/third_party/blink/renderer/core/html/html_iframe_element_test.cc
@@ -17,8 +17,6 @@
 
 namespace blink {
 
-constexpr size_t expected_number_of_sandbox_features = 9;
-
 class HTMLIFrameElementTest : public testing::Test {
  public:
   scoped_refptr<const SecurityOrigin> GetOriginForFeaturePolicy(
@@ -192,83 +190,6 @@
             container_policy2[1].allowed_origins.begin()->Serialize());
 }
 
-// Sandboxing an iframe should result in a container policy with an item for
-// each sandbox feature
-TEST_F(HTMLIFrameElementTest, SandboxAttributeContainerPolicy) {
-  ASSERT_TRUE(RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled());
-
-  frame_element_->setAttribute(html_names::kSandboxAttr, "");
-  frame_element_->UpdateContainerPolicyForTests();
-
-  const ParsedFeaturePolicy& container_policy =
-      frame_element_->GetFramePolicy().container_policy;
-
-  EXPECT_EQ(expected_number_of_sandbox_features, container_policy.size());
-}
-
-// Test that the allow attribute on a sandboxed frame results in a container
-// policy which is restricted to a unique origin.
-TEST_F(HTMLIFrameElementTest, CrossOriginSandboxAttributeContainerPolicy) {
-  ASSERT_TRUE(RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled());
-
-  frame_element_->setAttribute(html_names::kSrcAttr, "http://example.net/");
-  frame_element_->setAttribute(html_names::kAllowAttr, "fullscreen");
-  frame_element_->setAttribute(html_names::kSandboxAttr, "");
-  frame_element_->UpdateContainerPolicyForTests();
-
-  const ParsedFeaturePolicy& container_policy =
-      frame_element_->GetFramePolicy().container_policy;
-
-  EXPECT_EQ(expected_number_of_sandbox_features + 1, container_policy.size());
-  const auto& container_policy_item =
-      std::find_if(container_policy.begin(), container_policy.end(),
-                   [](const auto& declaration) {
-                     return declaration.feature ==
-                            mojom::blink::FeaturePolicyFeature::kFullscreen;
-                   });
-  EXPECT_NE(container_policy_item, container_policy.end())
-      << "Fullscreen feature not found in container policy";
-
-  const ParsedFeaturePolicyDeclaration item = *container_policy_item;
-  EXPECT_EQ(mojom::blink::FeaturePolicyFeature::kFullscreen, item.feature);
-  EXPECT_FALSE(item.matches_all_origins);
-  EXPECT_TRUE(item.matches_opaque_src);
-  EXPECT_EQ(0UL, item.allowed_origins.size());
-}
-
-// Test that the allow attribute on a sandboxed frame with the allow-same-origin
-// flag results in a container policy which is restricted to the origin of the
-// containing document.
-TEST_F(HTMLIFrameElementTest, SameOriginSandboxAttributeContainerPolicy) {
-  ASSERT_TRUE(RuntimeEnabledFeatures::FeaturePolicyForSandboxEnabled());
-
-  frame_element_->setAttribute(html_names::kSrcAttr, "http://example.net/");
-  frame_element_->setAttribute(html_names::kAllowAttr, "fullscreen");
-  frame_element_->setAttribute(html_names::kSandboxAttr, "allow-same-origin");
-  frame_element_->UpdateContainerPolicyForTests();
-
-  const ParsedFeaturePolicy& container_policy =
-      frame_element_->GetFramePolicy().container_policy;
-
-  EXPECT_EQ(expected_number_of_sandbox_features + 1, container_policy.size());
-  const auto& container_policy_item =
-      std::find_if(container_policy.begin(), container_policy.end(),
-                   [](const auto& declaration) {
-                     return declaration.feature ==
-                            mojom::blink::FeaturePolicyFeature::kFullscreen;
-                   });
-  EXPECT_NE(container_policy_item, container_policy.end())
-      << "Fullscreen feature not found in container policy";
-
-  const ParsedFeaturePolicyDeclaration item = *container_policy_item;
-  EXPECT_EQ(mojom::blink::FeaturePolicyFeature::kFullscreen, item.feature);
-  EXPECT_FALSE(item.matches_all_origins);
-  EXPECT_FALSE(item.matches_opaque_src);
-  EXPECT_EQ(1UL, item.allowed_origins.size());
-  EXPECT_FALSE(item.allowed_origins.begin()->opaque());
-  EXPECT_EQ("http://example.net", item.allowed_origins.begin()->Serialize());
-}
-
 // Test the ConstructContainerPolicy method when no attributes are set on the
 // iframe element.
 TEST_F(HTMLIFrameElementTest, ConstructEmptyContainerPolicy) {
diff --git a/third_party/blink/renderer/core/html/link_web_bundle.cc b/third_party/blink/renderer/core/html/link_web_bundle.cc
index a23b873e..18f3b30f 100644
--- a/third_party/blink/renderer/core/html/link_web_bundle.cc
+++ b/third_party/blink/renderer/core/html/link_web_bundle.cc
@@ -4,6 +4,8 @@
 
 #include "third_party/blink/renderer/core/html/link_web_bundle.h"
 
+#include "base/unguessable_token.h"
+#include "services/network/public/mojom/web_bundle_handle.mojom-blink.h"
 #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h"
 #include "third_party/blink/public/mojom/web_feature/web_feature.mojom-blink.h"
 #include "third_party/blink/public/web/web_local_frame.h"
@@ -18,31 +20,22 @@
 #include "third_party/blink/renderer/platform/loader/cors/cors.h"
 #include "third_party/blink/renderer/platform/loader/fetch/bytes_consumer.h"
 #include "third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h"
-#include "third_party/blink/renderer/platform/loader/fetch/url_loader/web_bundle_subresource_loader.h"
+#include "third_party/blink/renderer/platform/loader/fetch/resource_request.h"
 #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
 
 namespace blink {
 
-// WebBundleLoader is responsible for loading a WebBundle resource.
 class WebBundleLoader : public GarbageCollected<WebBundleLoader>,
-                        public ThreadableLoaderClient {
+                        public ThreadableLoaderClient,
+                        public network::mojom::WebBundleHandle {
  public:
   WebBundleLoader(LinkWebBundle& link_web_bundle,
                   Document& document,
                   const KURL& url)
       : link_web_bundle_(&link_web_bundle),
         url_(url),
-        security_origin_(SecurityOrigin::Create(url)) {
-    blink::CrossVariantMojoReceiver<
-        network::mojom::URLLoaderFactoryInterfaceBase>
-        receiver(loader_factory_.BindNewPipeAndPassReceiver());
-    document.GetFrame()
-        ->Client()
-        ->GetWebFrame()
-        ->Client()
-        ->MaybeProxyURLLoaderFactory(&receiver);
-    pending_factory_receiver_ = std::move(receiver);
-
+        security_origin_(SecurityOrigin::Create(url)),
+        web_bundle_token_(base::UnguessableToken::Create()) {
     ResourceRequest request(url);
     request.SetUseStreamOnResponse(true);
     // TODO(crbug.com/1082020): Revisit these once the fetch and process the
@@ -50,8 +43,19 @@
     // [1]
     // https://html.spec.whatwg.org/multipage/semantics.html#fetch-and-process-the-linked-resource
     request.SetRequestContext(mojom::blink::RequestContextType::SUBRESOURCE);
+    // TODO(crbug.com/1149816): Set CORS mode respecting the crossorigin=
+    // attribute of the <link> element.
     request.SetMode(network::mojom::blink::RequestMode::kCors);
     request.SetCredentialsMode(network::mojom::blink::CredentialsMode::kOmit);
+    request.SetRequestDestination(
+        network::mojom::RequestDestination::kWebBundle);
+    request.SetPriority(ResourceLoadPriority::kHigh);
+
+    mojo::PendingRemote<network::mojom::WebBundleHandle> web_bundle_handle;
+    web_bundle_handles_.Add(this,
+                            web_bundle_handle.InitWithNewPipeAndPassReceiver());
+    request.SetWebBundleTokenParams(ResourceRequestHead::WebBundleTokenParams(
+        web_bundle_token_, std::move(web_bundle_handle)));
 
     ExecutionContext* execution_context = document.GetExecutionContext();
     ResourceLoaderOptions resource_loader_options(
@@ -70,68 +74,55 @@
 
   bool HasLoaded() const { return !failed_; }
 
-  mojo::PendingRemote<network::mojom::blink::URLLoaderFactory>
-  GetURLLoaderFactory() {
-    mojo::PendingRemote<network::mojom::blink::URLLoaderFactory> factory_clone;
-    loader_factory_->Clone(factory_clone.InitWithNewPipeAndPassReceiver());
-    return factory_clone;
-  }
-
   // ThreadableLoaderClient
   void DidReceiveResponse(uint64_t, const ResourceResponse& response) override {
     if (!cors::IsOkStatus(response.HttpStatusCode()))
       failed_ = true;
-    // TODO(crbug.com/1082020): Check response headers, as spec'ed in
-    // https://wicg.github.io/webpackage/draft-yasskin-wpack-bundled-exchanges.html#name-serving-constraints.
   }
 
   void DidStartLoadingResponseBody(BytesConsumer& consumer) override {
-    DCHECK(pending_factory_receiver_);
-    CreateWebBundleSubresourceLoaderFactory(
-        std::move(pending_factory_receiver_), consumer.DrainAsDataPipe(),
-        ConvertToBaseRepeatingCallback(
-            CrossThreadBindRepeating(&WebBundleLoader::OnWebBundleError,
-                                     WrapCrossThreadWeakPersistent(this))));
+    // Drain |consumer| so that DidFinishLoading is surely called later.
+    consumer.DrainAsDataPipe();
   }
 
   void DidFinishLoading(uint64_t) override { link_web_bundle_->NotifyLoaded(); }
   void DidFail(const ResourceError&) override { DidFailInternal(); }
   void DidFailRedirectCheck() override { DidFailInternal(); }
 
+  // network::mojom::WebBundleHandle
+  void Clone(mojo::PendingReceiver<network::mojom::WebBundleHandle> receiver)
+      override {
+    web_bundle_handles_.Add(this, std::move(receiver));
+  }
+  void OnWebBundleError(network::mojom::WebBundleErrorType type,
+                        const std::string& message) override {
+    link_web_bundle_->OnWebBundleError(url_.ElidedString() + ": " +
+                                       message.c_str());
+  }
+
   const KURL& url() const { return url_; }
   scoped_refptr<SecurityOrigin> GetSecurityOrigin() const {
     return security_origin_;
   }
+  const base::UnguessableToken& WebBundleToken() const {
+    return web_bundle_token_;
+  }
 
  private:
   void DidFailInternal() {
-    if (pending_factory_receiver_) {
-      // If we haven't create a WebBundleSubresourceLoaderFactory, create it
-      // with an empty bundle body so that requests to
-      // |pending_factory_receiver_| are processed (and fail).
-      CreateWebBundleSubresourceLoaderFactory(
-          std::move(pending_factory_receiver_),
-          mojo::ScopedDataPipeConsumerHandle(), base::DoNothing());
-    }
     failed_ = true;
     link_web_bundle_->NotifyLoaded();
   }
 
-  void OnWebBundleError(WebBundleErrorType type, const String& message) {
-    // TODO(crbug.com/1082020): Dispatch "error" event on metadata parse error.
-    // Simply setting |failed_| here does not work because DidFinishLoading()
-    // may already be called.
-    link_web_bundle_->OnWebBundleError(url_.ElidedString() + ": " + message);
-  }
-
   Member<LinkWebBundle> link_web_bundle_;
   Member<ThreadableLoader> loader_;
-  mojo::Remote<network::mojom::blink::URLLoaderFactory> loader_factory_;
-  mojo::PendingReceiver<network::mojom::blink::URLLoaderFactory>
-      pending_factory_receiver_;
   bool failed_ = false;
   KURL url_;
   scoped_refptr<SecurityOrigin> security_origin_;
+  base::UnguessableToken web_bundle_token_;
+  // we need ReceiverSet here because WebBundleHandle is cloned when
+  // ResourceRequest is copied.
+  mojo::ReceiverSet<network::mojom::WebBundleHandle> web_bundle_handles_;
 };
 
 LinkWebBundle::LinkWebBundle(HTMLLinkElement* owner) : LinkResource(owner) {
@@ -173,6 +164,23 @@
     return;
 
   if (!bundle_loader_ || bundle_loader_->url() != owner_->Href()) {
+    if (resource_fetcher->ShouldBeLoadedFromWebBundle(owner_->Href())) {
+      // This can happen when a requested bundle is a nested bundle.
+      //
+      // clang-format off
+      // Example:
+      // <link rel="webbundle" href=".../nested-main.wbn" resources=".../nested-sub.wbn">
+      // <link rel="webbundle" href=".../nested-sub.wbn" resources="...">
+      // clang-format on
+      if (bundle_loader_) {
+        resource_fetcher->RemoveSubresourceWebBundle(*this);
+        bundle_loader_ = nullptr;
+      }
+      NotifyLoaded();
+      OnWebBundleError("A nested bundle is not supported: " +
+                       owner_->Href().ElidedString());
+      return;
+    }
     bundle_loader_ = MakeGarbageCollected<WebBundleLoader>(
         *this, owner_->GetDocument(), owner_->Href());
   }
@@ -199,6 +207,8 @@
 }
 
 bool LinkWebBundle::CanHandleRequest(const KURL& url) const {
+  if (!url.IsValid())
+    return false;
   if (!owner_ || !owner_->ValidResourceUrls().Contains(url))
     return false;
   DCHECK(bundle_loader_);
@@ -220,17 +230,16 @@
   return true;
 }
 
-mojo::PendingRemote<network::mojom::blink::URLLoaderFactory>
-LinkWebBundle::GetURLLoaderFactory() {
-  DCHECK(bundle_loader_);
-  return bundle_loader_->GetURLLoaderFactory();
-}
-
 String LinkWebBundle::GetCacheIdentifier() const {
   DCHECK(bundle_loader_);
   return bundle_loader_->url().GetString();
 }
 
+const base::UnguessableToken& LinkWebBundle::WebBundleToken() const {
+  DCHECK(bundle_loader_);
+  return bundle_loader_->WebBundleToken();
+}
+
 // static
 KURL LinkWebBundle::ParseResourceUrl(const AtomicString& str) {
   // The implementation is almost copy and paste from ParseExchangeURL() defined
diff --git a/third_party/blink/renderer/core/html/link_web_bundle.h b/third_party/blink/renderer/core/html/link_web_bundle.h
index dcfa286..7ac9b226 100644
--- a/third_party/blink/renderer/core/html/link_web_bundle.h
+++ b/third_party/blink/renderer/core/html/link_web_bundle.h
@@ -12,6 +12,10 @@
 #include "third_party/blink/renderer/platform/loader/fetch/subresource_web_bundle.h"
 #include "third_party/blink/renderer/platform/weborigin/kurl.h"
 
+namespace base {
+class UnguessableToken;
+}
+
 namespace blink {
 
 class WebBundleLoader;
@@ -41,9 +45,8 @@
 
   // SubresourceWebBundle overrides:
   bool CanHandleRequest(const KURL& url) const override;
-  mojo::PendingRemote<network::mojom::blink::URLLoaderFactory>
-  GetURLLoaderFactory() override;
   String GetCacheIdentifier() const override;
+  const base::UnguessableToken& WebBundleToken() const override;
 
   // Parse the given |str| as a url. If |str| doesn't meet the criteria which
   // WebBundles specification requires, this returns invalid empty KURL as an
diff --git a/third_party/blink/renderer/core/layout/hit_test_result.cc b/third_party/blink/renderer/core/layout/hit_test_result.cc
index 08f6cb4..60f5463e 100644
--- a/third_party/blink/renderer/core/layout/hit_test_result.cc
+++ b/third_party/blink/renderer/core/layout/hit_test_result.cc
@@ -186,8 +186,10 @@
   // relayout?
   if (box_fragment_ &&
       RuntimeEnabledFeatures::LayoutNGFullPositionForPointEnabled() &&
-      !box_fragment_->IsLayoutObjectDestroyedOrMoved())
-    return box_fragment_->PostLayout()->PositionForPoint(LocalPoint());
+      !box_fragment_->IsLayoutObjectDestroyedOrMoved()) {
+    if (const NGPhysicalBoxFragment* fragment = box_fragment_->PostLayout())
+      return fragment->PositionForPoint(LocalPoint());
+  }
   return layout_object->PositionForPoint(LocalPoint());
 }
 
diff --git a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc
index 6f932564..399cd82 100644
--- a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc
@@ -1256,7 +1256,7 @@
     case AxisEdge::kStart:
       return margin_start;
     case AxisEdge::kCenter:
-      return (container_size - size - margin_start - margin_end) / 2;
+      return (container_size - size + margin_start - margin_end) / 2;
     case AxisEdge::kEnd:
       return container_size - margin_end - size;
     case AxisEdge::kBaseline:
diff --git a/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.cc
index c48534cc1..b57ee3c 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.cc
@@ -922,7 +922,7 @@
   // First split into content runs at explicit (forced) breaks.
   ContentRuns content_runs;
   scoped_refptr<const NGBlockBreakToken> break_token = child_break_token;
-  LayoutUnit tallest_unbreakable_block_size;
+  tallest_unbreakable_block_size_ = LayoutUnit();
   do {
     NGBlockLayoutAlgorithm balancing_algorithm(
         {Node(), fragment_geometry, space, break_token.get()});
@@ -938,8 +938,8 @@
         CalculateColumnContentBlockSize(fragment, space.GetWritingDirection());
     content_runs.emplace_back(column_block_size);
 
-    tallest_unbreakable_block_size = std::max(
-        tallest_unbreakable_block_size, result->TallestUnbreakableBlockSize());
+    tallest_unbreakable_block_size_ = std::max(
+        tallest_unbreakable_block_size_, result->TallestUnbreakableBlockSize());
 
     // Stop when we reach a spanner. That's where this row of columns will end.
     if (result->ColumnSpanner())
@@ -964,7 +964,7 @@
     // initial balancing pass, so it also wants to know the largest unbreakable
     // block-size.
     container_builder_.PropagateTallestUnbreakableBlockSize(
-        tallest_unbreakable_block_size);
+        tallest_unbreakable_block_size_);
   }
 
   // We now have an estimated minimal block-size for the columns. Roughly
@@ -973,12 +973,10 @@
   // though, since there will typically be unbreakable pieces of content, such
   // as replaced content, lines of text, and other things. We need to actually
   // lay out into columns to figure out if they are tall enough or not (and
-  // stretch and retry if not). Also honor {,min-,max-}{height,width} properties
-  // before returning.
-  LayoutUnit block_size = std::max(content_runs.TallestColumnBlockSize(),
-                                   tallest_unbreakable_block_size);
-
-  return ConstrainColumnBlockSize(block_size);
+  // stretch and retry if not). Also honor {,min-,max-}block-size properties
+  // before returning, and also try to not become shorter than the tallest piece
+  // of unbreakable content.
+  return ConstrainColumnBlockSize(content_runs.TallestColumnBlockSize());
 }
 
 LayoutUnit NGColumnLayoutAlgorithm::StretchColumnBlockSize(
@@ -993,14 +991,6 @@
 // container.
 LayoutUnit NGColumnLayoutAlgorithm::ConstrainColumnBlockSize(
     LayoutUnit size) const {
-  // The {,max-}{height,width} properties are specified on the multicol
-  // container, but here we're calculating the column block sizes inside the
-  // multicol container, which isn't exactly the same. We may shrink the column
-  // block size here, but we'll never stretch it, because the value passed is
-  // the perfect balanced block size. Making it taller would only disrupt the
-  // balanced output, for no reason. The only thing we need to worry about here
-  // is to not overflow the multicol container.
-
   if (is_constrained_by_outer_fragmentation_context_) {
     // Don't become too tall to fit in the outer fragmentation context.
     LayoutUnit available_outer_space =
@@ -1009,6 +999,17 @@
     size = std::min(size, available_outer_space);
   }
 
+  // But avoid becoming shorter than the tallest piece of unbreakable content.
+  size = std::max(size, tallest_unbreakable_block_size_);
+
+  // The {,min-,max-}block-size properties are specified on the multicol
+  // container, but here we're calculating the column block sizes inside the
+  // multicol container, which isn't exactly the same. We may shrink the column
+  // block size here, but we'll never stretch them, because the value passed is
+  // the perfect balanced block size. Making it taller would only disrupt the
+  // balanced output, for no reason. The only thing we need to worry about here
+  // is to not overflow the multicol container.
+  //
   // First of all we need to convert the size to a value that can be compared
   // against the resolved properties on the multicol container. That means that
   // we have to convert the value from content-box to border-box.
diff --git a/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.h
index 116963e..1052163 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.h
@@ -100,6 +100,7 @@
   LayoutUnit column_inline_progression_;
   LayoutUnit column_block_size_;
   LayoutUnit intrinsic_block_size_;
+  LayoutUnit tallest_unbreakable_block_size_;
   bool is_constrained_by_outer_fragmentation_context_ = false;
 
   // This will be set during (outer) block fragmentation once we've processed
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_block.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_block.cc
index b40b222..045d14a 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_block.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_block.cc
@@ -143,7 +143,7 @@
     SVGLayoutSupport::NotifySVGRootOfChangedCompositingReasons(this);
   if (diff.HasDifference()) {
     SVGResourcesCache::UpdateResources(*this);
-    LayoutSVGResourceContainer::StyleDidChange(*this, diff);
+    LayoutSVGResourceContainer::StyleChanged(*this, diff);
   }
 }
 
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_inline.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_inline.cc
index 2a9d1d7..3ccf193 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_inline.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_inline.cc
@@ -141,7 +141,7 @@
     SVGLayoutSupport::NotifySVGRootOfChangedCompositingReasons(this);
   if (diff.HasDifference()) {
     SVGResourcesCache::UpdateResources(*this);
-    LayoutSVGResourceContainer::StyleDidChange(*this, diff);
+    LayoutSVGResourceContainer::StyleChanged(*this, diff);
   }
 }
 
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.cc
index 96f0ef3..85b6f2d 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.cc
@@ -161,7 +161,7 @@
     SVGLayoutSupport::NotifySVGRootOfChangedCompositingReasons(this);
   if (diff.HasDifference()) {
     SVGResourcesCache::UpdateResources(*this);
-    LayoutSVGResourceContainer::StyleDidChange(*this, diff);
+    LayoutSVGResourceContainer::StyleChanged(*this, diff);
   }
 }
 
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc
index d460812..90a8bef 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc
@@ -242,8 +242,8 @@
   return false;
 }
 
-void LayoutSVGResourceContainer::StyleDidChange(LayoutObject& object,
-                                                StyleDifference diff) {
+void LayoutSVGResourceContainer::StyleChanged(LayoutObject& object,
+                                              StyleDifference diff) {
   // If this LayoutObject is the child of a resource container and
   // it requires repainting because of changes to CSS properties
   // such as 'visibility', upgrade to invalidate layout.
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h
index 46370fdd..eb6572d 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h
@@ -78,7 +78,7 @@
   static void MarkForLayoutAndParentResourceInvalidation(
       LayoutObject&,
       bool needs_layout = true);
-  static void StyleDidChange(LayoutObject&, StyleDifference);
+  static void StyleChanged(LayoutObject&, StyleDifference);
 
   void ClearInvalidationMask() {
     NOT_DESTROYED();
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
index 64b8efc..3f5171c 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
@@ -377,7 +377,7 @@
     return;
   if (diff.HasDifference()) {
     SVGResourcesCache::UpdateResources(*this);
-    LayoutSVGResourceContainer::StyleDidChange(*this, diff);
+    LayoutSVGResourceContainer::StyleChanged(*this, diff);
   }
 }
 
diff --git a/third_party/blink/renderer/core/layout/svg/svg_resources.cc b/third_party/blink/renderer/core/layout/svg/svg_resources.cc
index 4d016f8..fd5b79be 100644
--- a/third_party/blink/renderer/core/layout/svg/svg_resources.cc
+++ b/third_party/blink/renderer/core/layout/svg/svg_resources.cc
@@ -625,31 +625,45 @@
     marker_resource->RemoveClient(*client);
 }
 
-sk_sp<PaintFilter> FilterData::BuildPaintFilter() {
-  return paint_filter_builder::Build(last_effect_, kInterpolationSpaceSRGB);
-}
+class SVGElementResourceClient::FilterData final
+    : public GarbageCollected<SVGElementResourceClient::FilterData> {
+ public:
+  FilterData(FilterEffect* last_effect, SVGFilterGraphNodeMap* node_map)
+      : last_effect_(last_effect), node_map_(node_map) {}
 
-bool FilterData::Invalidate(SVGFilterPrimitiveStandardAttributes& primitive,
-                            const QualifiedName& attribute) {
-  if (FilterEffect* effect = node_map_->EffectForElement(primitive)) {
-    if (!primitive.SetFilterEffectAttribute(effect, attribute))
-      return false;  // No change
-    node_map_->InvalidateDependentEffects(effect);
+  sk_sp<PaintFilter> BuildPaintFilter() {
+    return paint_filter_builder::Build(last_effect_, kInterpolationSpaceSRGB);
   }
-  return true;
-}
 
-void FilterData::Trace(Visitor* visitor) const {
-  visitor->Trace(last_effect_);
-  visitor->Trace(node_map_);
-}
+  // Perform a finegrained invalidation of the filter chain for the
+  // specified filter primitive and attribute. Returns false if no
+  // further invalidation is required, otherwise true.
+  bool Invalidate(SVGFilterPrimitiveStandardAttributes& primitive,
+                  const QualifiedName& attribute) {
+    if (FilterEffect* effect = node_map_->EffectForElement(primitive)) {
+      if (!primitive.SetFilterEffectAttribute(effect, attribute))
+        return false;  // No change
+      node_map_->InvalidateDependentEffects(effect);
+    }
+    return true;
+  }
 
-void FilterData::Dispose() {
-  node_map_ = nullptr;
-  if (last_effect_)
-    last_effect_->DisposeImageFiltersRecursive();
-  last_effect_ = nullptr;
-}
+  void Dispose() {
+    node_map_ = nullptr;
+    if (last_effect_)
+      last_effect_->DisposeImageFiltersRecursive();
+    last_effect_ = nullptr;
+  }
+
+  void Trace(Visitor* visitor) const {
+    visitor->Trace(last_effect_);
+    visitor->Trace(node_map_);
+  }
+
+ private:
+  Member<FilterEffect> last_effect_;
+  Member<SVGFilterGraphNodeMap> node_map_;
+};
 
 SVGElementResourceClient::SVGElementResourceClient(SVGElement* element)
     : element_(element), filter_data_dirty_(false) {}
@@ -731,7 +745,8 @@
   MarkFilterDataDirty();
 }
 
-static FilterData* CreateFilterDataWithNodeMap(
+SVGElementResourceClient::FilterData*
+SVGElementResourceClient::CreateFilterDataWithNodeMap(
     FilterEffectBuilder& builder,
     const ReferenceFilterOperation& reference_filter) {
   auto* node_map = MakeGarbageCollected<SVGFilterGraphNodeMap>();
diff --git a/third_party/blink/renderer/core/layout/svg/svg_resources.h b/third_party/blink/renderer/core/layout/svg/svg_resources.h
index 34c7ca8f..80d613f 100644
--- a/third_party/blink/renderer/core/layout/svg/svg_resources.h
+++ b/third_party/blink/renderer/core/layout/svg/svg_resources.h
@@ -31,16 +31,16 @@
 namespace blink {
 
 class ComputedStyle;
-class FilterEffect;
+class FilterEffectBuilder;
 class LayoutObject;
 class LayoutSVGResourceClipper;
 class LayoutSVGResourceFilter;
 class LayoutSVGResourceMarker;
 class LayoutSVGResourceMasker;
 class LayoutSVGResourcePaintServer;
+class ReferenceFilterOperation;
 class SVGElement;
 class SVGElementResourceClient;
-class SVGFilterGraphNodeMap;
 
 // Holds a set of resources associated with a LayoutObject
 class SVGResources {
@@ -189,27 +189,6 @@
   LayoutSVGResourceContainer* linked_resource_;
 };
 
-class FilterData final : public GarbageCollected<FilterData> {
- public:
-  FilterData(FilterEffect* last_effect, SVGFilterGraphNodeMap* node_map)
-      : last_effect_(last_effect), node_map_(node_map) {}
-
-  sk_sp<PaintFilter> BuildPaintFilter();
-  // Perform a finegrained invalidation of the filter chain for the
-  // specified filter primitive and attribute. Returns false if no
-  // further invalidation is required, otherwise true.
-  bool Invalidate(SVGFilterPrimitiveStandardAttributes& primitive,
-                  const QualifiedName& attribute);
-
-  void Dispose();
-
-  void Trace(Visitor*) const;
-
- private:
-  Member<FilterEffect> last_effect_;
-  Member<SVGFilterGraphNodeMap> node_map_;
-};
-
 class SVGElementResourceClient final
     : public GarbageCollected<SVGElementResourceClient>,
       public SVGResourceClient {
@@ -230,6 +209,12 @@
   void Trace(Visitor*) const override;
 
  private:
+  class FilterData;
+
+  static FilterData* CreateFilterDataWithNodeMap(
+      FilterEffectBuilder&,
+      const ReferenceFilterOperation&);
+
   Member<SVGElement> element_;
   Member<FilterData> filter_data_;
   bool filter_data_dirty_;
diff --git a/third_party/blink/renderer/core/loader/empty_clients.h b/third_party/blink/renderer/core/loader/empty_clients.h
index 871023f..5781624 100644
--- a/third_party/blink/renderer/core/loader/empty_clients.h
+++ b/third_party/blink/renderer/core/loader/empty_clients.h
@@ -139,7 +139,6 @@
                              const AtomicString&,
                              const WebWindowFeatures&,
                              network::mojom::blink::WebSandboxFlags,
-                             const FeaturePolicyFeatureState&,
                              const SessionStorageNamespaceId&,
                              bool& consumed_user_gesture) override {
     return nullptr;
diff --git a/third_party/blink/renderer/core/loader/frame_loader.h b/third_party/blink/renderer/core/loader/frame_loader.h
index 707d79a4..9b5291f 100644
--- a/third_party/blink/renderer/core/loader/frame_loader.h
+++ b/third_party/blink/renderer/core/loader/frame_loader.h
@@ -154,9 +154,7 @@
   }
 
   // Includes the collection of forced, inherited, and FrameOwner's sandbox
-  // flags. Note: with FeaturePolicyForSandbox the frame owner's sandbox flags
-  // only includes the flags which are *not* implemented as feature policies
-  // already present in the FrameOwner's ContainerPolicy.
+  // flags.
   network::mojom::blink::WebSandboxFlags PendingEffectiveSandboxFlags() const;
 
   // Modifying itself is done based on |fetch_client_settings_object|.
diff --git a/third_party/blink/renderer/core/page/chrome_client.cc b/third_party/blink/renderer/core/page/chrome_client.cc
index 4b42770..a4ee25fc 100644
--- a/third_party/blink/renderer/core/page/chrome_client.cc
+++ b/third_party/blink/renderer/core/page/chrome_client.cc
@@ -147,7 +147,6 @@
     const AtomicString& frame_name,
     const WebWindowFeatures& features,
     network::mojom::blink::WebSandboxFlags sandbox_flags,
-    const FeaturePolicyFeatureState& opener_feature_state,
     const SessionStorageNamespaceId& session_storage_namespace_id,
     bool& consumed_user_gesture) {
   if (!CanOpenUIElementIfDuringPageDismissal(
@@ -155,9 +154,9 @@
     return nullptr;
   }
 
-  return CreateWindowDelegate(
-      frame, r, frame_name, features, sandbox_flags, opener_feature_state,
-      session_storage_namespace_id, consumed_user_gesture);
+  return CreateWindowDelegate(frame, r, frame_name, features, sandbox_flags,
+                              session_storage_namespace_id,
+                              consumed_user_gesture);
 }
 
 template <typename Delegate>
diff --git a/third_party/blink/renderer/core/page/chrome_client.h b/third_party/blink/renderer/core/page/chrome_client.h
index a03e031..e3b0814 100644
--- a/third_party/blink/renderer/core/page/chrome_client.h
+++ b/third_party/blink/renderer/core/page/chrome_client.h
@@ -216,7 +216,6 @@
                      const AtomicString& frame_name,
                      const WebWindowFeatures&,
                      network::mojom::blink::WebSandboxFlags,
-                     const FeaturePolicyFeatureState&,
                      const SessionStorageNamespaceId&,
                      bool& consumed_user_gesture);
 
@@ -551,7 +550,6 @@
                                      const AtomicString& frame_name,
                                      const WebWindowFeatures&,
                                      network::mojom::blink::WebSandboxFlags,
-                                     const FeaturePolicyFeatureState&,
                                      const SessionStorageNamespaceId&,
                                      bool& consumed_user_gesture) = 0;
 
diff --git a/third_party/blink/renderer/core/page/chrome_client_impl.cc b/third_party/blink/renderer/core/page/chrome_client_impl.cc
index b7519c78..b98a5aa6 100644
--- a/third_party/blink/renderer/core/page/chrome_client_impl.cc
+++ b/third_party/blink/renderer/core/page/chrome_client_impl.cc
@@ -246,7 +246,6 @@
     const AtomicString& name,
     const WebWindowFeatures& features,
     network::mojom::blink::WebSandboxFlags sandbox_flags,
-    const FeaturePolicyFeatureState& opener_feature_state,
     const SessionStorageNamespaceId& session_storage_namespace_id,
     bool& consumed_user_gesture) {
   if (!web_view_->Client())
@@ -263,8 +262,7 @@
           WebLocalFrameImpl::FromFrame(frame),
           WrappedResourceRequest(r.GetResourceRequest()), features, frame_name,
           static_cast<WebNavigationPolicy>(r.GetNavigationPolicy()),
-          sandbox_flags, opener_feature_state, session_storage_namespace_id,
-          consumed_user_gesture));
+          sandbox_flags, session_storage_namespace_id, consumed_user_gesture));
   if (!new_view)
     return nullptr;
   return new_view->GetPage();
diff --git a/third_party/blink/renderer/core/page/chrome_client_impl.h b/third_party/blink/renderer/core/page/chrome_client_impl.h
index 7d5789d..b510904 100644
--- a/third_party/blink/renderer/core/page/chrome_client_impl.h
+++ b/third_party/blink/renderer/core/page/chrome_client_impl.h
@@ -89,7 +89,6 @@
                              const AtomicString& name,
                              const WebWindowFeatures&,
                              network::mojom::blink::WebSandboxFlags,
-                             const FeaturePolicyFeatureState&,
                              const SessionStorageNamespaceId&,
                              bool& consumed_user_gesture) override;
   void Show(const base::UnguessableToken& opener_frame_token,
diff --git a/third_party/blink/renderer/core/page/chrome_client_impl_test.cc b/third_party/blink/renderer/core/page/chrome_client_impl_test.cc
index 5b91664..cfa73a8 100644
--- a/third_party/blink/renderer/core/page/chrome_client_impl_test.cc
+++ b/third_party/blink/renderer/core/page/chrome_client_impl_test.cc
@@ -65,7 +65,6 @@
                       const WebString& name,
                       WebNavigationPolicy,
                       network::mojom::blink::WebSandboxFlags,
-                      const FeaturePolicyFeatureState&,
                       const SessionStorageNamespaceId&,
                       bool& consumed_user_gesture) override {
     return web_view_helper_.InitializeWithOpener(opener);
@@ -98,11 +97,10 @@
   request.SetNavigationPolicy(kNavigationPolicyNewForegroundTab);
   WebWindowFeatures features;
   bool consumed_user_gesture = false;
-  EXPECT_EQ(nullptr,
-            chrome_client_impl_->CreateWindow(
-                frame, request, "", features,
-                network::mojom::blink::WebSandboxFlags::kNone,
-                FeaturePolicyFeatureState(), "", consumed_user_gesture));
+  EXPECT_EQ(nullptr, chrome_client_impl_->CreateWindow(
+                         frame, request, "", features,
+                         network::mojom::blink::WebSandboxFlags::kNone, "",
+                         consumed_user_gesture));
 }
 
 class FakeColorChooserClient : public GarbageCollected<FakeColorChooserClient>,
diff --git a/third_party/blink/renderer/core/page/create_window.cc b/third_party/blink/renderer/core/page/create_window.cc
index 2e4b23e..e6438c6c 100644
--- a/third_party/blink/renderer/core/page/create_window.cc
+++ b/third_party/blink/renderer/core/page/create_window.cc
@@ -279,19 +279,11 @@
     return nullptr;
   }
 
-  bool propagate_sandbox =
-      opener_window.IsSandboxed(network::mojom::blink::WebSandboxFlags::
-                                    kPropagatesToAuxiliaryBrowsingContexts);
   network::mojom::blink::WebSandboxFlags sandbox_flags =
-      propagate_sandbox ? opener_window.GetSandboxFlags()
-                        : network::mojom::blink::WebSandboxFlags::kNone;
-  bool not_sandboxed = opener_window.GetSandboxFlags() ==
-                       network::mojom::blink::WebSandboxFlags::kNone;
-  FeaturePolicyFeatureState opener_feature_state =
-      (not_sandboxed || propagate_sandbox) ? opener_window.GetSecurityContext()
-                                                 .GetFeaturePolicy()
-                                                 ->GetFeatureState()
-                                           : FeaturePolicyFeatureState();
+      opener_window.IsSandboxed(network::mojom::blink::WebSandboxFlags::
+                                    kPropagatesToAuxiliaryBrowsingContexts)
+          ? opener_window.GetSandboxFlags()
+          : network::mojom::blink::WebSandboxFlags::kNone;
 
   SessionStorageNamespaceId new_namespace_id =
       AllocateSessionStorageNamespaceId();
@@ -306,7 +298,7 @@
   bool consumed_user_gesture = false;
   Page* page = old_page->GetChromeClient().CreateWindow(
       &opener_frame, request, frame_name, features, sandbox_flags,
-      opener_feature_state, new_namespace_id, consumed_user_gesture);
+      new_namespace_id, consumed_user_gesture);
   if (!page)
     return nullptr;
 
diff --git a/third_party/blink/renderer/core/style/computed_style.cc b/third_party/blink/renderer/core/style/computed_style.cc
index 5710a0d..54171d7 100644
--- a/third_party/blink/renderer/core/style/computed_style.cc
+++ b/third_party/blink/renderer/core/style/computed_style.cc
@@ -2074,7 +2074,8 @@
   bool is_simple_underline = decoration_lines == TextDecoration::kUnderline &&
                              decoration_style == ETextDecorationStyle::kSolid &&
                              TextDecorationColor().IsCurrentColor() &&
-                             TextUnderlineOffset().IsAuto();
+                             TextUnderlineOffset().IsAuto() &&
+                             GetTextDecorationThickness().IsAuto();
   if (is_simple_underline && !AppliedTextDecorationsInternal()) {
     SetHasSimpleUnderlineInternal(true);
     return;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
index c9c498a..061cd391 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -476,8 +476,6 @@
   if (role_ == ax::mojom::blink::Role::kRootWebArea)
     return false;
 
-  // TODO(accessibility) In the case of display locking, might we have a stale
-  // pointer to a layout object? Should the display locking case be first?
   if (GetLayoutObject()) {
     if (role_ == ax::mojom::blink::Role::kUnknown) {
       if (ignored_reasons)
@@ -3218,8 +3216,6 @@
     return;
   for (Node* child = LayoutTreeBuilderTraversal::FirstChild(*node_); child;
        child = LayoutTreeBuilderTraversal::NextSibling(*child)) {
-    if (child->IsMarkerPseudoElement() && AccessibilityIsIgnored())
-      continue;
     AXObject* child_obj = AXObjectCache().GetOrCreate(child);
 
     if (RuntimeEnabledFeatures::AccessibilityExposeIgnoredNodesEnabled() &&
diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc b/third_party/blink/renderer/modules/webaudio/base_audio_context.cc
index db8b7c5c..7d20049 100644
--- a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc
+++ b/third_party/blink/renderer/modules/webaudio/base_audio_context.cc
@@ -141,9 +141,8 @@
 }
 
 void BaseAudioContext::Clear() {
-  // The audio rendering thread is dead.  Nobody will schedule AudioHandler
-  // deletion.  Let's do it ourselves.
-  GetDeferredTaskHandler().ClearHandlersToBeDeleted();
+  // Make a note that we've cleared out the context so that there's no pending
+  // activity.
   is_cleared_ = true;
 }
 
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
index 63e191f..c24b6fa 100644
--- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
+++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -191,10 +191,6 @@
   RuntimeEnabledFeatures::SetDecodeLossyWebPImagesToYUVEnabled(enable);
 }
 
-void WebRuntimeFeatures::EnableFeaturePolicyForSandbox(bool enable) {
-  RuntimeEnabledFeatures::SetFeaturePolicyForSandboxEnabled(enable);
-}
-
 void WebRuntimeFeatures::EnableFileSystem(bool enable) {
   RuntimeEnabledFeatures::SetFileSystemEnabled(enable);
 }
diff --git a/third_party/blink/renderer/platform/graphics/deferred_image_decoder.cc b/third_party/blink/renderer/platform/graphics/deferred_image_decoder.cc
index 71c95092..430d5b78 100644
--- a/third_party/blink/renderer/platform/graphics/deferred_image_decoder.cc
+++ b/third_party/blink/renderer/platform/graphics/deferred_image_decoder.cc
@@ -190,7 +190,7 @@
   DCHECK_GT(decoded_size.width(), 0);
   DCHECK_GT(decoded_size.height(), 0);
 
-  sk_sp<ROBuffer> ro_buffer(rw_buffer_->MakeROBufferSnapshot());
+  scoped_refptr<ROBuffer> ro_buffer(rw_buffer_->MakeROBufferSnapshot());
   scoped_refptr<SegmentReader> segment_reader =
       SegmentReader::CreateFromROBuffer(std::move(ro_buffer));
 
@@ -251,7 +251,7 @@
 scoped_refptr<SharedBuffer> DeferredImageDecoder::Data() {
   if (!rw_buffer_)
     return nullptr;
-  sk_sp<ROBuffer> ro_buffer(rw_buffer_->MakeROBufferSnapshot());
+  scoped_refptr<ROBuffer> ro_buffer(rw_buffer_->MakeROBufferSnapshot());
   scoped_refptr<SharedBuffer> shared_buffer = SharedBuffer::Create();
   ROBuffer::Iter it(ro_buffer.get());
   do {
diff --git a/third_party/blink/renderer/platform/graphics/rw_buffer.cc b/third_party/blink/renderer/platform/graphics/rw_buffer.cc
index fffecf0..4d738359 100644
--- a/third_party/blink/renderer/platform/graphics/rw_buffer.cc
+++ b/third_party/blink/renderer/platform/graphics/rw_buffer.cc
@@ -4,10 +4,10 @@
 
 #include "third_party/blink/renderer/platform/graphics/rw_buffer.h"
 
+#include "base/atomic_ref_count.h"
 #include "base/check.h"
 #include "base/check_op.h"
-#include "third_party/skia/include/core/SkStream.h"
-#include "third_party/skia/include/private/SkMalloc.h"
+#include "third_party/blink/renderer/platform/wtf/allocator/partitions.h"
 
 #include <algorithm>
 #include <atomic>
@@ -39,7 +39,9 @@
 
   static RWBuffer::BufferBlock* Alloc(size_t length) {
     size_t capacity = LengthToCapacity(length);
-    void* buffer = sk_malloc_throw(sizeof(RWBuffer::BufferBlock) + capacity);
+    void* buffer =
+        WTF::Partitions::BufferMalloc(sizeof(RWBuffer::BufferBlock) + capacity,
+                                      "blink::RWBuffer::BufferBlock");
     return new (buffer) RWBuffer::BufferBlock(capacity);
   }
 
@@ -71,7 +73,7 @@
 };
 
 struct RWBuffer::BufferHead {
-  mutable std::atomic<int32_t> ref_count_;
+  mutable base::AtomicRefCount ref_count_;
   RWBuffer::BufferBlock block_;
 
   explicit BufferHead(size_t capacity) : ref_count_(1), block_(capacity) {}
@@ -84,27 +86,27 @@
   static RWBuffer::BufferHead* Alloc(size_t length) {
     size_t capacity = LengthToCapacity(length);
     size_t size = sizeof(RWBuffer::BufferHead) + capacity;
-    void* buffer = sk_malloc_throw(size);
+    void* buffer =
+        WTF::Partitions::BufferMalloc(size, "blink::RWBuffer::BufferHead");
     return new (buffer) RWBuffer::BufferHead(capacity);
   }
 
   void ref() const {
-    auto old_ref_count = ref_count_.fetch_add(+1, std::memory_order_relaxed);
+    auto old_ref_count = ref_count_.Increment();
     DCHECK_GT(old_ref_count, 0);
   }
 
   void unref() const {
     // A release here acts in place of all releases we "should" have been doing
     // in ref().
-    int32_t oldRefCnt = ref_count_.fetch_add(-1, std::memory_order_acq_rel);
-    DCHECK(oldRefCnt);
-    if (1 == oldRefCnt) {
+    if (!ref_count_.Decrement()) {
       // Like unique(), the acquire is only needed on success.
       RWBuffer::BufferBlock* block = block_.next_;
-      sk_free(reinterpret_cast<void*>(const_cast<RWBuffer::BufferHead*>(this)));
+      WTF::Partitions::BufferFree(
+          reinterpret_cast<void*>(const_cast<RWBuffer::BufferHead*>(this)));
       while (block) {
         RWBuffer::BufferBlock* next = block->next_;
-        sk_free(block);
+        WTF::Partitions::BufferFree(block);
         block = next;
       }
     }
@@ -113,7 +115,7 @@
   void Validate(size_t minUsed,
                 const RWBuffer::BufferBlock* tail = nullptr) const {
 #if DCHECK_IS_ON()
-    DCHECK_GT(ref_count_.load(std::memory_order_relaxed), 0);
+    DCHECK(!ref_count_.IsZero());
     size_t totalUsed = 0;
     const RWBuffer::BufferBlock* block = &block_;
     const RWBuffer::BufferBlock* lastBlock = block;
@@ -159,7 +161,7 @@
   Reset(buffer);
 }
 
-ROBuffer::Iter::Iter(const sk_sp<ROBuffer>& buffer) {
+ROBuffer::Iter::Iter(const scoped_refptr<ROBuffer>& buffer) {
   Reset(buffer.get());
 }
 
@@ -239,8 +241,7 @@
   length -= written;
 
   if (length) {
-    RWBuffer::BufferBlock* block =
-        RWBuffer::BufferBlock::Alloc(length + reserve);
+    auto* block = RWBuffer::BufferBlock::Alloc(length + reserve);
     tail_->next_ = block;
     tail_ = block;
     written = tail_->Append(src, length);
@@ -249,8 +250,8 @@
   Validate();
 }
 
-sk_sp<ROBuffer> RWBuffer::MakeROBufferSnapshot() const {
-  return sk_sp<ROBuffer>(new ROBuffer(head_, total_used_, tail_));
+scoped_refptr<ROBuffer> RWBuffer::MakeROBufferSnapshot() const {
+  return AdoptRef(new ROBuffer(head_, total_used_, tail_));
 }
 
 bool RWBuffer::HasNoSnapshots() const {
@@ -260,10 +261,7 @@
     return true;
   }
 
-  // For this to be useful, it should only return true when the other threads
-  // can no longer touch the buffer; this means that the "acquire" ordering is
-  // required, since the count is decreased with "release" ordering.
-  return head_->ref_count_.load(std::memory_order_acquire) == 1;
+  return head_->ref_count_.IsOne();
 }
 
 void RWBuffer::Validate() const {
@@ -277,123 +275,4 @@
 #endif
 }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-class ROBufferStreamAsset : public SkStreamAsset {
-  void Validate() const {
-    DCHECK(global_offset_ <= buffer_->size());
-    DCHECK(local_offset_ <= iter_.size());
-    DCHECK(local_offset_ <= global_offset_);
-  }
-
-#if DCHECK_IS_ON()
-  class AutoValidate {
-   public:
-    explicit AutoValidate(ROBufferStreamAsset* stream) : stream_(stream) {
-      stream->Validate();
-    }
-    ~AutoValidate() { stream_->Validate(); }
-
-   private:
-    ROBufferStreamAsset* stream_;
-  };
-#else
-  class AutoValidate {
-   public:
-    explicit AutoValidate(ROBufferStreamAsset*) {}
-  };
-#endif
-
- public:
-  explicit ROBufferStreamAsset(sk_sp<ROBuffer> buffer)
-      : buffer_(std::move(buffer)), iter_(buffer_) {
-    global_offset_ = local_offset_ = 0;
-  }
-
-  size_t getLength() const override { return buffer_->size(); }
-
-  bool rewind() override {
-    AutoValidate av(this);
-    iter_.Reset(buffer_.get());
-    global_offset_ = local_offset_ = 0;
-    return true;
-  }
-
-  size_t read(void* dst, size_t request) override {
-    AutoValidate av(this);
-    size_t bytesRead = 0;
-    for (;;) {
-      size_t size = iter_.size();
-      DCHECK(local_offset_ <= size);
-      size_t avail = std::min(size - local_offset_, request - bytesRead);
-      if (dst) {
-        memcpy(dst, static_cast<const char*>(iter_.data()) + local_offset_,
-               avail);
-        dst = static_cast<char*>(dst) + avail;
-      }
-      bytesRead += avail;
-      local_offset_ += avail;
-      DCHECK(bytesRead <= request);
-      if (bytesRead == request) {
-        break;
-      }
-      // If we get here, we've exhausted the current iter
-      DCHECK(local_offset_ == size);
-      local_offset_ = 0;
-      if (!iter_.Next()) {
-        break;  // ran out of data
-      }
-    }
-    global_offset_ += bytesRead;
-    DCHECK(global_offset_ <= buffer_->size());
-    return bytesRead;
-  }
-
-  bool isAtEnd() const override { return buffer_->size() == global_offset_; }
-
-  size_t getPosition() const override { return global_offset_; }
-
-  bool seek(size_t position) override {
-    AutoValidate av(this);
-    if (position < global_offset_) {
-      rewind();
-    }
-    (void)skip(position - global_offset_);
-    return true;
-  }
-
-  // Since this is overriding a member function we don't control, we can't
-  // change this type. So, disable the warning here instead.
-  bool move(long offset) override {  // NOLINT
-    AutoValidate av(this);
-    offset += global_offset_;
-    if (offset <= 0) {
-      rewind();
-    } else {
-      (void)seek(SkToSizeT(offset));
-    }
-    return true;
-  }
-
- private:
-  SkStreamAsset* onDuplicate() const override {
-    return new ROBufferStreamAsset(buffer_);
-  }
-
-  SkStreamAsset* onFork() const override {
-    auto clone = duplicate();
-    clone->seek(getPosition());
-    return clone.release();
-  }
-
-  sk_sp<ROBuffer> buffer_;
-  ROBuffer::Iter iter_;
-  size_t local_offset_;
-  size_t global_offset_;
-};
-
-std::unique_ptr<SkStreamAsset> RWBuffer::MakeStreamSnapshot() const {
-  return std::make_unique<ROBufferStreamAsset>(MakeROBufferSnapshot());
-}
-
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/rw_buffer.h b/third_party/blink/renderer/platform/graphics/rw_buffer.h
index e42a8ce5..afbd548 100644
--- a/third_party/blink/renderer/platform/graphics/rw_buffer.h
+++ b/third_party/blink/renderer/platform/graphics/rw_buffer.h
@@ -6,9 +6,7 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_RW_BUFFER_H_
 
 #include "third_party/blink/renderer/platform/platform_export.h"
-#include "third_party/skia/include/core/SkRefCnt.h"
-
-class SkStreamAsset;
+#include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h"
 
 namespace blink {
 
@@ -44,7 +42,7 @@
    */
   void Append(const void* buffer, size_t length, size_t reserve = 0);
 
-  sk_sp<ROBuffer> MakeROBufferSnapshot() const;
+  scoped_refptr<ROBuffer> MakeROBufferSnapshot() const;
 
   // This should only be called from the same thread that we are creating the
   // RWBuffer and the snapshots on.
@@ -52,8 +50,6 @@
   // its underlying buffer.
   bool HasNoSnapshots() const;
 
-  std::unique_ptr<SkStreamAsset> MakeStreamSnapshot() const;
-
   void Validate() const;
 
  private:
@@ -67,7 +63,7 @@
  * the caller must instantiate a local iterator, as the memory is stored in 1 or
  * more contiguous blocks.
  */
-class PLATFORM_EXPORT ROBuffer : public SkRefCnt {
+class PLATFORM_EXPORT ROBuffer : public WTF::ThreadSafeRefCounted<ROBuffer> {
  public:
   /**
    * Return the logical length of the data owned/shared by this buffer. It may
@@ -78,7 +74,7 @@
   class PLATFORM_EXPORT Iter {
    public:
     explicit Iter(const ROBuffer*);
-    explicit Iter(const sk_sp<ROBuffer>&);
+    explicit Iter(const scoped_refptr<ROBuffer>&);
 
     void Reset(const ROBuffer*);
 
@@ -107,10 +103,11 @@
   };
 
  private:
+  friend class WTF::ThreadSafeRefCounted<ROBuffer>;
   ROBuffer(const RWBuffer::BufferHead* head,
            size_t available,
            const RWBuffer::BufferBlock* tail);
-  ~ROBuffer() override;
+  ~ROBuffer();
 
   const RWBuffer::BufferHead* head_;
   const size_t available_;
diff --git a/third_party/blink/renderer/platform/graphics/rw_buffer_test.cc b/third_party/blink/renderer/platform/graphics/rw_buffer_test.cc
index b7c9fbe0..6143a01 100644
--- a/third_party/blink/renderer/platform/graphics/rw_buffer_test.cc
+++ b/third_party/blink/renderer/platform/graphics/rw_buffer_test.cc
@@ -22,28 +22,6 @@
   }
 }
 
-// stream should contain an integral number of copies of gABC.
-void check_alphabet_stream(SkStream* stream) {
-  ASSERT_TRUE(stream->hasLength());
-  size_t size = stream->getLength();
-  ASSERT_EQ(size % 26, 0u);
-
-  std::vector<char> storage(size);
-  char* array = storage.data();
-  size_t bytesRead = stream->read(array, size);
-  EXPECT_EQ(bytesRead, size);
-  check_abcs(array, size);
-
-  // try checking backwards
-  for (size_t offset = size; offset > 0; offset -= 26) {
-    EXPECT_TRUE(stream->seek(offset - 26));
-    EXPECT_EQ(stream->getPosition(), offset - 26);
-    EXPECT_EQ(stream->read(array, 26), 26u);
-    check_abcs(array, 26);
-    EXPECT_EQ(stream->getPosition(), offset);
-  }
-}
-
 // reader should contains an integral number of copies of gABC.
 void check_alphabet_buffer(const ROBuffer* reader) {
   size_t size = reader->size();
@@ -63,40 +41,33 @@
 
 class ROBufferTestThread : public base::PlatformThread::Delegate {
  public:
-  ROBufferTestThread(sk_sp<ROBuffer> reader, SkStream* stream, size_t i)
-      : reader_(reader), stream_(stream), i_(i) {}
+  ROBufferTestThread(scoped_refptr<ROBuffer> reader, size_t i)
+      : reader_(reader), i_(i) {}
   ROBufferTestThread() = default;
   ROBufferTestThread(const ROBufferTestThread&) = default;
 
   void ThreadMain() override {
     EXPECT_EQ((i_ + 1) * 26U, reader_->size());
-    EXPECT_EQ(stream_->getLength(), reader_->size());
     check_alphabet_buffer(reader_.get());
-    check_alphabet_stream(stream_);
-    EXPECT_TRUE(stream_->rewind());
-    delete stream_;
   }
 
-  sk_sp<ROBuffer> reader_;
-  SkStream* stream_;
+  scoped_refptr<ROBuffer> reader_;
   size_t i_;
 };
 
 }  // namespace
 
-TEST(RWBuffer, reporter) {
+TEST(RWBufferTest, Append) {
   // Knowing that the default capacity is 4096, choose N large enough so we
   // force it to use multiple buffers internally.
   static constexpr size_t N = 1000;
-  std::array<sk_sp<ROBuffer>, N> readers;
-  std::array<std::unique_ptr<SkStream>, N> streams;
+  std::array<scoped_refptr<ROBuffer>, N> readers;
 
   {
     RWBuffer buffer;
     for (size_t i = 0; i < N; ++i) {
       buffer.Append(gABC, 26);
       readers[i] = buffer.MakeROBufferSnapshot();
-      streams[i] = buffer.MakeStreamSnapshot();
     }
     EXPECT_EQ(N * 26, buffer.size());
   }
@@ -106,11 +77,10 @@
   for (size_t i = 0; i < N; ++i) {
     EXPECT_EQ((i + 1) * 26U, readers[i]->size());
     check_alphabet_buffer(readers[i].get());
-    check_alphabet_stream(streams[i].get());
   }
 }
 
-TEST(RWBuffer_threaded, reporter) {
+TEST(RWBufferTest, Threaded) {
   // Knowing that the default capacity is 4096, choose N large enough so we
   // force it to use multiple buffers internally.
   constexpr size_t N = 1000;
@@ -120,15 +90,13 @@
 
   for (size_t i = 0; i < N; ++i) {
     buffer.Append(gABC, 26);
-    sk_sp<ROBuffer> reader = buffer.MakeROBufferSnapshot();
-    SkStream* stream = buffer.MakeStreamSnapshot().release();
+    scoped_refptr<ROBuffer> reader = buffer.MakeROBufferSnapshot();
     EXPECT_EQ(reader->size(), buffer.size());
-    EXPECT_EQ(stream->getLength(), buffer.size());
 
     // reader's copy constructor will ref the ROBuffer, which will be unreffed
     // when the task ends.
     // Ownership of stream is passed to the task, which will delete it.
-    threads[i] = ROBufferTestThread(reader, stream, i);
+    threads[i] = ROBufferTestThread(reader, i);
     ASSERT_TRUE(base::PlatformThread::Create(0, &threads[i], &handlers[i]));
   }
   EXPECT_EQ(N * 26, buffer.size());
@@ -138,11 +106,11 @@
 }
 
 // Tests that it is safe to call ROBuffer::Iter::size() when exhausted.
-TEST(RWBuffer_size, r) {
+TEST(RWBufferTest, Size) {
   RWBuffer buffer;
   buffer.Append(gABC, 26);
 
-  sk_sp<ROBuffer> roBuffer(buffer.MakeROBufferSnapshot());
+  scoped_refptr<ROBuffer> roBuffer(buffer.MakeROBufferSnapshot());
   ROBuffer::Iter iter(roBuffer.get());
   EXPECT_TRUE(iter.data());
   EXPECT_EQ(iter.size(), 26u);
@@ -154,11 +122,11 @@
 
 // Tests that operations (including the destructor) are safe on an RWBuffer
 // without any data appended.
-TEST(RWBuffer_noAppend, r) {
+TEST(RWBufferTest, Empty) {
   RWBuffer buffer;
   ASSERT_EQ(0u, buffer.size());
 
-  sk_sp<ROBuffer> roBuffer = buffer.MakeROBufferSnapshot();
+  scoped_refptr<ROBuffer> roBuffer = buffer.MakeROBufferSnapshot();
   ASSERT_TRUE(roBuffer);
   if (roBuffer) {
     EXPECT_EQ(roBuffer->size(), 0u);
@@ -167,14 +135,6 @@
     EXPECT_TRUE(!iter.data());
     EXPECT_TRUE(!iter.Next());
   }
-
-  std::unique_ptr<SkStream> stream(buffer.MakeStreamSnapshot());
-  EXPECT_TRUE(stream);
-  if (stream) {
-    EXPECT_TRUE(stream->hasLength());
-    EXPECT_EQ(stream->getLength(), 0u);
-    EXPECT_EQ(stream->skip(10), 0u);
-  }
 }
 
 // Tests that |HasNoSnapshots| returns the correct value when the buffer is
@@ -188,10 +148,10 @@
   EXPECT_TRUE(buffer.HasNoSnapshots());
 
   {
-    sk_sp<ROBuffer> first = buffer.MakeROBufferSnapshot();
+    scoped_refptr<ROBuffer> first = buffer.MakeROBufferSnapshot();
     EXPECT_TRUE(buffer.HasNoSnapshots());
 
-    sk_sp<ROBuffer> second = buffer.MakeROBufferSnapshot();
+    scoped_refptr<ROBuffer> second = buffer.MakeROBufferSnapshot();
     EXPECT_TRUE(buffer.HasNoSnapshots());
   }
 
@@ -209,10 +169,10 @@
   EXPECT_TRUE(buffer.HasNoSnapshots());
 
   {
-    sk_sp<ROBuffer> first = buffer.MakeROBufferSnapshot();
+    scoped_refptr<ROBuffer> first = buffer.MakeROBufferSnapshot();
     EXPECT_FALSE(buffer.HasNoSnapshots());
 
-    sk_sp<ROBuffer> second = buffer.MakeROBufferSnapshot();
+    scoped_refptr<ROBuffer> second = buffer.MakeROBufferSnapshot();
     EXPECT_FALSE(buffer.HasNoSnapshots());
   }
 
diff --git a/third_party/blink/renderer/platform/image-decoders/segment_reader.cc b/third_party/blink/renderer/platform/image-decoders/segment_reader.cc
index 489c590..8e25a07 100644
--- a/third_party/blink/renderer/platform/image-decoders/segment_reader.cc
+++ b/third_party/blink/renderer/platform/image-decoders/segment_reader.cc
@@ -103,14 +103,14 @@
 
 class ROBufferSegmentReader final : public SegmentReader {
  public:
-  explicit ROBufferSegmentReader(sk_sp<ROBuffer>);
+  explicit ROBufferSegmentReader(scoped_refptr<ROBuffer>);
 
   size_t size() const override;
   size_t GetSomeData(const char*& data, size_t position) const override;
   sk_sp<SkData> GetAsSkData() const override;
 
  private:
-  sk_sp<ROBuffer> ro_buffer_;
+  scoped_refptr<ROBuffer> ro_buffer_;
   mutable Mutex read_mutex_;
   // Position of the first char in the current block of iter_.
   mutable size_t position_of_block_ GUARDED_BY(read_mutex_);
@@ -119,7 +119,7 @@
   DISALLOW_COPY_AND_ASSIGN(ROBufferSegmentReader);
 };
 
-ROBufferSegmentReader::ROBufferSegmentReader(sk_sp<ROBuffer> buffer)
+ROBufferSegmentReader::ROBufferSegmentReader(scoped_refptr<ROBuffer> buffer)
     : ro_buffer_(std::move(buffer)),
       position_of_block_(0),
       iter_(ro_buffer_.get()) {}
@@ -165,7 +165,7 @@
 }
 
 static void UnrefROBuffer(const void* ptr, void* context) {
-  static_cast<ROBuffer*>(context)->unref();
+  static_cast<ROBuffer*>(context)->Release();
 }
 
 sk_sp<SkData> ROBufferSegmentReader::GetAsSkData() const {
@@ -179,7 +179,7 @@
 
   if (!multiple_blocks) {
     // Contiguous data. No need to copy.
-    ro_buffer_->ref();
+    ro_buffer_->AddRef();
     return SkData::MakeWithProc(iter.data(), iter.size(), &UnrefROBuffer,
                                 ro_buffer_.get());
   }
@@ -207,7 +207,7 @@
 }
 
 scoped_refptr<SegmentReader> SegmentReader::CreateFromROBuffer(
-    sk_sp<ROBuffer> buffer) {
+    scoped_refptr<ROBuffer> buffer) {
   return base::AdoptRef(new ROBufferSegmentReader(std::move(buffer)));
 }
 
diff --git a/third_party/blink/renderer/platform/image-decoders/segment_reader.h b/third_party/blink/renderer/platform/image-decoders/segment_reader.h
index ba67bbe..e61770a 100644
--- a/third_party/blink/renderer/platform/image-decoders/segment_reader.h
+++ b/third_party/blink/renderer/platform/image-decoders/segment_reader.h
@@ -41,7 +41,8 @@
 
   // These versions use thread-safe input, so they are always thread-safe.
   static scoped_refptr<SegmentReader> CreateFromSkData(sk_sp<SkData>);
-  static scoped_refptr<SegmentReader> CreateFromROBuffer(sk_sp<ROBuffer>);
+  static scoped_refptr<SegmentReader> CreateFromROBuffer(
+      scoped_refptr<ROBuffer>);
 
   SegmentReader() = default;
   virtual ~SegmentReader() = default;
diff --git a/third_party/blink/renderer/platform/loader/BUILD.gn b/third_party/blink/renderer/platform/loader/BUILD.gn
index f5d5299..85cfd35 100644
--- a/third_party/blink/renderer/platform/loader/BUILD.gn
+++ b/third_party/blink/renderer/platform/loader/BUILD.gn
@@ -118,8 +118,6 @@
     "fetch/unique_identifier.h",
     "fetch/url_loader/request_conversion.cc",
     "fetch/url_loader/request_conversion.h",
-    "fetch/url_loader/web_bundle_subresource_loader.cc",
-    "fetch/url_loader/web_bundle_subresource_loader.h",
     "fetch/url_loader/worker_main_script_loader.cc",
     "fetch/url_loader/worker_main_script_loader.h",
     "fetch/url_loader/worker_main_script_loader_client.h",
@@ -147,7 +145,6 @@
   deps = [
     ":make_platform_loader_generated_fetch_initiator_type_names",
     "//components/link_header_util",
-    "//components/web_package",
     "//net",
     "//services/metrics/public/cpp:ukm_builders",
     "//services/network/public/cpp",
@@ -193,7 +190,6 @@
     "fetch/response_body_loader_test.cc",
     "fetch/shared_buffer_bytes_consumer_test.cc",
     "fetch/source_keyed_cached_metadata_handler_test.cc",
-    "fetch/url_loader/web_bundle_subresource_loader_test.cc",
     "fetch/url_loader/worker_main_script_loader_unittest.cc",
     "ftp_directory_listing_test.cc",
     "link_header_test.cc",
@@ -205,7 +201,6 @@
 
   deps = [
     "//base/test:test_support",
-    "//components/web_package:test_support",
     "//mojo/public/cpp/test_support:test_utils",
     "//net/traffic_annotation:test_support",
     "//services/network:test_support",
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
index 8f04af0..448e837 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
@@ -975,9 +975,36 @@
     resource_request.SetAllowStoredCredentials(false);
   }
 
+  if (resource_request.GetWebBundleTokenParams()) {
+    DCHECK_EQ(resource_request.GetRequestDestination(),
+              network::mojom::RequestDestination::kWebBundle);
+  } else {
+    AttachWebBundleTokenIfNeeded(resource_request);
+  }
+
   return base::nullopt;
 }
 
+bool ResourceFetcher::ShouldBeLoadedFromWebBundle(const KURL& url) const {
+  for (auto& bundle : subresource_web_bundles_) {
+    if (bundle->CanHandleRequest(url))
+      return true;
+  }
+  return false;
+}
+
+void ResourceFetcher::AttachWebBundleTokenIfNeeded(
+    ResourceRequest& resource_request) const {
+  for (auto& bundle : subresource_web_bundles_) {
+    if (!bundle->CanHandleRequest(resource_request.Url()))
+      continue;
+    resource_request.SetWebBundleTokenParams(
+        ResourceRequestHead::WebBundleTokenParams(bundle->WebBundleToken(),
+                                                  mojo::NullRemote()));
+    return;
+  }
+}
+
 Resource* ResourceFetcher::RequestResource(FetchParameters& params,
                                            const ResourceFactory& factory,
                                            ResourceClient* client) {
@@ -1248,19 +1275,6 @@
     const ResourceLoaderOptions& options) {
   DCHECK(!GetProperties().IsDetached());
   DCHECK(loader_factory_);
-  for (auto& bundle : subresource_web_bundles_) {
-    if (!bundle->CanHandleRequest(request.Url()))
-      continue;
-    ResourceLoaderOptions new_options(options);
-    new_options.url_loader_factory = base::MakeRefCounted<base::RefCountedData<
-        mojo::PendingRemote<network::mojom::blink::URLLoaderFactory>>>(
-        bundle->GetURLLoaderFactory());
-    // TODO(yoichio): CreateURLLoader take a ResourceRequestHead instead of
-    // ResourceRequest.
-    return loader_factory_->CreateURLLoader(ResourceRequest(request),
-                                            new_options, freezable_task_runner_,
-                                            unfreezable_task_runner_);
-  }
   return loader_factory_->CreateURLLoader(ResourceRequest(request), options,
                                           freezable_task_runner_,
                                           unfreezable_task_runner_);
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
index 9fdcad9..617a4f4 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
@@ -305,6 +305,8 @@
 
   void AddSubresourceWebBundle(SubresourceWebBundle& subresource_web_bundle);
   void RemoveSubresourceWebBundle(SubresourceWebBundle& subresource_web_bundle);
+  void AttachWebBundleTokenIfNeeded(ResourceRequest&) const;
+  bool ShouldBeLoadedFromWebBundle(const KURL&) const;
 
   void EvictFromBackForwardCache();
 
diff --git a/third_party/blink/renderer/platform/loader/fetch/subresource_web_bundle.h b/third_party/blink/renderer/platform/loader/fetch/subresource_web_bundle.h
index 2971478b..5b63e41 100644
--- a/third_party/blink/renderer/platform/loader/fetch/subresource_web_bundle.h
+++ b/third_party/blink/renderer/platform/loader/fetch/subresource_web_bundle.h
@@ -10,20 +10,23 @@
 #include "third_party/blink/renderer/platform/heap/garbage_collected.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 
+namespace base {
+class UnguessableToken;
+}
+
 namespace blink {
 
 class KURL;
 
-// SubresourceWebBundle is attached to ResourceFetcher and used to intercept
-// subresource requests for a certain set of URLs and serve responses from a
+// SubresourceWebBundle is attached to ResourceFetcher and used to set
+// WebBundleToken to subresource requests which should be served from a
 // WebBundle. This is used for Subresource loading with Web Bundles
 // (https://github.com/WICG/webpackage/blob/master/explainers/subresource-loading.md).
 class PLATFORM_EXPORT SubresourceWebBundle : public GarbageCollectedMixin {
  public:
   void Trace(Visitor* visitor) const override {}
   virtual bool CanHandleRequest(const KURL& url) const = 0;
-  virtual mojo::PendingRemote<network::mojom::blink::URLLoaderFactory>
-  GetURLLoaderFactory() = 0;
+  virtual const base::UnguessableToken& WebBundleToken() const = 0;
   virtual String GetCacheIdentifier() const = 0;
 };
 
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/DEPS b/third_party/blink/renderer/platform/loader/fetch/url_loader/DEPS
index cb1e4f6..42c1728 100644
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/DEPS
+++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/DEPS
@@ -2,13 +2,4 @@
     "request_conversion.cc" : [
         "+media/media_buildflags.h"
     ],
-    "web_bundle_subresource_loader.cc" : [
-        "+components/web_package",
-        "+net/http/http_status_code.h",
-    ],
-    "web_bundle_subresource_loader_test.cc" : [
-        "+components/web_package",
-        "+net/traffic_annotation/network_traffic_annotation_test_helper.h",
-        "+services/network/test/test_url_loader_client.h",
-    ],
 }
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/web_bundle_subresource_loader.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/web_bundle_subresource_loader.cc
deleted file mode 100644
index 1c96e42..0000000
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/web_bundle_subresource_loader.cc
+++ /dev/null
@@ -1,459 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "third_party/blink/renderer/platform/loader/fetch/url_loader/web_bundle_subresource_loader.h"
-
-#include "base/numerics/safe_conversions.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/task/post_task.h"
-#include "components/web_package/web_bundle_parser.h"
-#include "components/web_package/web_bundle_utils.h"
-#include "mojo/public/cpp/bindings/receiver_set.h"
-#include "mojo/public/cpp/system/data_pipe.h"
-#include "mojo/public/cpp/system/data_pipe_drainer.h"
-#include "mojo/public/cpp/system/data_pipe_producer.h"
-#include "net/http/http_status_code.h"
-#include "services/network/public/mojom/url_loader.mojom.h"
-#include "services/network/public/mojom/url_loader_factory.mojom.h"
-#include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
-#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
-#include "third_party/blink/renderer/platform/wtf/functional.h"
-#include "third_party/blink/renderer/platform/wtf/shared_buffer.h"
-
-namespace blink {
-
-namespace {
-
-class WebBundleSubresourceLoader : public network::mojom::URLLoader {
- public:
-  WebBundleSubresourceLoader(
-      mojo::PendingReceiver<network::mojom::URLLoader> loader,
-      const network::ResourceRequest& request,
-      mojo::PendingRemote<network::mojom::URLLoaderClient> client)
-      : url_(request.url),
-        receiver_(this, std::move(loader)),
-        client_(std::move(client)) {
-    receiver_.set_disconnect_handler(base::BindOnce(
-        &WebBundleSubresourceLoader::OnMojoDisconnect, GetWeakPtr()));
-  }
-  WebBundleSubresourceLoader(const WebBundleSubresourceLoader&) = delete;
-  WebBundleSubresourceLoader& operator=(const WebBundleSubresourceLoader&) =
-      delete;
-
-  const GURL& Url() const { return url_; }
-
-  base::WeakPtr<WebBundleSubresourceLoader> GetWeakPtr() {
-    return weak_ptr_factory_.GetWeakPtr();
-  }
-
-  void OnResponse(network::mojom::URLResponseHeadPtr response) {
-    client_->OnReceiveResponse(std::move(response));
-  }
-
-  void OnData(mojo::ScopedDataPipeConsumerHandle consumer) {
-    client_->OnStartLoadingResponseBody(std::move(consumer));
-  }
-
-  void OnFail(net::Error error) {
-    client_->OnComplete(network::URLLoaderCompletionStatus(error));
-    delete this;
-  }
-
-  void OnWriteCompleted(MojoResult result) {
-    network::URLLoaderCompletionStatus status(
-        result == MOJO_RESULT_OK ? net::OK : net::ERR_INVALID_WEB_BUNDLE);
-    client_->OnComplete(status);
-    delete this;
-  }
-
- private:
-  // network::mojom::URLLoader
-  void FollowRedirect(
-      const std::vector<std::string>& removed_headers,
-      const net::HttpRequestHeaders& modified_headers,
-      const net::HttpRequestHeaders& modified_cors_exempt_headers,
-      const base::Optional<GURL>& new_url) override {
-    NOTREACHED();
-  }
-
-  void SetPriority(net::RequestPriority priority,
-                   int32_t intra_priority_value) override {
-    // Not supported (do nothing).
-  }
-
-  void PauseReadingBodyFromNet() override {}
-  void ResumeReadingBodyFromNet() override {}
-
-  void OnMojoDisconnect() { delete this; }
-
-  const GURL url_;
-  mojo::Receiver<network::mojom::URLLoader> receiver_;
-  mojo::Remote<network::mojom::URLLoaderClient> client_;
-  base::WeakPtrFactory<WebBundleSubresourceLoader> weak_ptr_factory_{this};
-};
-
-class PipeDataSource : public mojo::DataPipeProducer::DataSource {
- public:
-  explicit PipeDataSource(std::vector<uint8_t> data) : data_(std::move(data)) {}
-  uint64_t GetLength() const override { return data_.size(); }
-
-  ReadResult Read(uint64_t uint64_offset, base::span<char> buffer) override {
-    ReadResult result;
-    if (uint64_offset > data_.size()) {
-      result.result = MOJO_RESULT_OUT_OF_RANGE;
-      return result;
-    }
-    size_t offset = base::checked_cast<size_t>(uint64_offset);
-    size_t len = std::min(data_.size() - offset, buffer.size());
-    if (len > 0) {
-      DCHECK_LT(offset, data_.size());
-      memcpy(buffer.data(), &data_[offset], len);
-    }
-    result.bytes_read = len;
-    return result;
-  }
-
- private:
-  // Since mojo::DataPipeProducer runs in its own sequence, we can't just have
-  // a reference to the SharedBuffer in LinkWebBundleDataSource.
-  std::vector<uint8_t> data_;
-};
-
-void DeleteProducerAndRunCallback(
-    std::unique_ptr<mojo::DataPipeProducer> producer,
-    base::OnceCallback<void(MojoResult result)> callback,
-    MojoResult result) {
-  std::move(callback).Run(result);
-}
-
-class LinkWebBundleDataSource : public web_package::mojom::BundleDataSource,
-                                public mojo::DataPipeDrainer::Client {
- public:
-  using ReadToDataPipeCallback = base::OnceCallback<void(MojoResult result)>;
-
-  LinkWebBundleDataSource(
-      mojo::PendingReceiver<web_package::mojom::BundleDataSource>
-          data_source_receiver,
-      mojo::ScopedDataPipeConsumerHandle bundle_body)
-      : data_source_receiver_(this, std::move(data_source_receiver)),
-        data_(SharedBuffer::Create()),
-        pipe_drainer_(
-            std::make_unique<mojo::DataPipeDrainer>(this,
-                                                    std::move(bundle_body))) {}
-
-  ~LinkWebBundleDataSource() override {
-    // The receiver must be closed before destructing pending callbacks in
-    // |pending_reads_| / |pending_reads_to_data_pipe_|.
-    data_source_receiver_.reset();
-  }
-
-  LinkWebBundleDataSource(const LinkWebBundleDataSource&) = delete;
-  LinkWebBundleDataSource& operator=(const LinkWebBundleDataSource&) = delete;
-
-  void ReadToDataPipe(mojo::ScopedDataPipeProducerHandle producer,
-                      uint64_t offset,
-                      uint64_t length,
-                      ReadToDataPipeCallback callback) {
-    TRACE_EVENT0("loading", "LinkWebBundleDataSource::ReadToDataPipe");
-    if (!finished_loading_ && offset + length > data_->size()) {
-      // Current implementation does not support progressive loading of inner
-      // response body.
-      PendingReadToDataPipe pending;
-      pending.producer = std::move(producer);
-      pending.offset = offset;
-      pending.length = length;
-      pending.callback = std::move(callback);
-      pending_reads_to_data_pipe_.push_back(std::move(pending));
-      return;
-    }
-
-    auto writer = std::make_unique<mojo::DataPipeProducer>(std::move(producer));
-    mojo::DataPipeProducer* raw_writer = writer.get();
-    raw_writer->Write(std::make_unique<PipeDataSource>(GetData(offset, length)),
-                      base::BindOnce(&DeleteProducerAndRunCallback,
-                                     std::move(writer), std::move(callback)));
-  }
-
-  // mojom::BundleDataSource
-  void Read(uint64_t offset, uint64_t length, ReadCallback callback) override {
-    TRACE_EVENT0("loading", "LinkWebBundleDataSource::Read");
-    if (!finished_loading_ && offset + length > data_->size()) {
-      PendingRead pending;
-      pending.offset = offset;
-      pending.length = length;
-      pending.callback = std::move(callback);
-      pending_reads_.push_back(std::move(pending));
-      return;
-    }
-    std::move(callback).Run(GetData(offset, length));
-  }
-
-  // mojo::DataPipeDrainer::Client
-  void OnDataAvailable(const void* data, size_t num_bytes) override {
-    DCHECK(!finished_loading_);
-    data_->Append(reinterpret_cast<const char*>(data), num_bytes);
-    ProcessPendingReads();
-  }
-
-  void OnDataComplete() override {
-    DCHECK(!finished_loading_);
-    finished_loading_ = true;
-    ProcessPendingReads();
-  }
-
- private:
-  void ProcessPendingReads() {
-    std::vector<PendingRead> pendings;
-    pendings.swap(pending_reads_);
-    for (auto& pending : pendings)
-      Read(pending.offset, pending.length, std::move(pending.callback));
-
-    std::vector<PendingReadToDataPipe> pipe_pendings;
-    pipe_pendings.swap(pending_reads_to_data_pipe_);
-    for (auto& pending : pipe_pendings) {
-      ReadToDataPipe(std::move(pending.producer), pending.offset,
-                     pending.length, std::move(pending.callback));
-    }
-  }
-
-  std::vector<uint8_t> GetData(uint64_t uint64_offset, uint64_t uint64_length) {
-    size_t offset = base::checked_cast<size_t>(uint64_offset);
-    size_t length = base::checked_cast<size_t>(uint64_length);
-    std::vector<uint8_t> output(length);
-    size_t bytes_copied = 0;
-    for (auto it = data_->GetIteratorAt(offset);
-         bytes_copied < length && it != data_->cend(); it++) {
-      size_t n = std::min(it->size(), length - bytes_copied);
-      memcpy(output.data() + bytes_copied, it->data(), n);
-      bytes_copied += n;
-    }
-    output.resize(bytes_copied);
-    return output;
-  }
-
-  struct PendingRead {
-    uint64_t offset;
-    uint64_t length;
-    ReadCallback callback;
-  };
-  struct PendingReadToDataPipe {
-    mojo::ScopedDataPipeProducerHandle producer;
-    uint64_t offset;
-    uint64_t length;
-    ReadToDataPipeCallback callback;
-  };
-
-  mojo::Receiver<web_package::mojom::BundleDataSource> data_source_receiver_;
-  scoped_refptr<SharedBuffer> data_;
-  std::vector<PendingRead> pending_reads_;
-  std::vector<PendingReadToDataPipe> pending_reads_to_data_pipe_;
-  bool finished_loading_ = false;
-  std::unique_ptr<mojo::DataPipeDrainer> pipe_drainer_;
-};
-
-// Self destroys when no more bindings exist.
-class WebBundleSubresourceLoaderFactory
-    : public network::mojom::URLLoaderFactory {
- public:
-  WebBundleSubresourceLoaderFactory(
-      mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,
-      mojo::ScopedDataPipeConsumerHandle bundle_body,
-      scoped_refptr<base::SingleThreadTaskRunner> callback_task_runner,
-      WebBundleErrorCallback error_callback)
-      : callback_task_runner_(callback_task_runner),
-        error_callback_(error_callback) {
-    receivers_.Add(this, std::move(receiver));
-    receivers_.set_disconnect_handler(base::BindRepeating(
-        &WebBundleSubresourceLoaderFactory::OnMojoDisconnect,
-        base::Unretained(this)));
-    mojo::PendingRemote<web_package::mojom::BundleDataSource> data_source;
-    source_ = std::make_unique<LinkWebBundleDataSource>(
-        data_source.InitWithNewPipeAndPassReceiver(), std::move(bundle_body));
-    // WebBundleParser will self-destruct on remote mojo ends' disconnection.
-    new web_package::WebBundleParser(parser_.BindNewPipeAndPassReceiver(),
-                                     std::move(data_source));
-
-    parser_->ParseMetadata(
-        WTF::Bind(&WebBundleSubresourceLoaderFactory::OnMetadataParsed,
-                  weak_ptr_factory_.GetWeakPtr()));
-  }
-
-  ~WebBundleSubresourceLoaderFactory() override {
-    for (auto loader : pending_loaders_) {
-      if (loader)
-        loader->OnFail(net::ERR_FAILED);
-    }
-  }
-
-  WebBundleSubresourceLoaderFactory(const WebBundleSubresourceLoaderFactory&) =
-      delete;
-  WebBundleSubresourceLoaderFactory& operator=(
-      const WebBundleSubresourceLoaderFactory&) = delete;
-
-  void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> factory)
-      override {
-    receivers_.Add(this, std::move(factory));
-  }
-
-  void CreateLoaderAndStart(
-      mojo::PendingReceiver<network::mojom::URLLoader> pending_receiver,
-      int32_t routing_id,
-      int32_t request_id,
-      uint32_t options,
-      const network::ResourceRequest& request,
-      mojo::PendingRemote<network::mojom::URLLoaderClient> client,
-      const net::MutableNetworkTrafficAnnotationTag& traffic_annotation)
-      override {
-    TRACE_EVENT0("loading",
-                 "WebBundleSubresourceLoaderFactory::CreateLoaderAndStart");
-    WebBundleSubresourceLoader* loader = new WebBundleSubresourceLoader(
-        std::move(pending_receiver), request, std::move(client));
-    if (metadata_error_) {
-      loader->OnFail(net::ERR_INVALID_WEB_BUNDLE);
-      return;
-    }
-    if (!metadata_) {
-      pending_loaders_.push_back(loader->GetWeakPtr());
-      return;
-    }
-    StartLoad(loader);
-  }
-
- private:
-  void OnMojoDisconnect() {
-    if (!receivers_.empty())
-      return;
-    delete this;
-  }
-
-  void StartLoad(WebBundleSubresourceLoader* loader) {
-    DCHECK(metadata_);
-    if (!loader)
-      return;
-    auto it = metadata_->requests.find(loader->Url());
-    if (it == metadata_->requests.end()) {
-      RunErrorCallback(WebBundleErrorType::kResourceNotFound,
-                       loader->Url().possibly_invalid_spec() +
-                           " is not found in the WebBundle.");
-      loader->OnFail(net::ERR_INVALID_WEB_BUNDLE);
-      return;
-    }
-    // Currently, we just return the first response for the URL.
-    // TODO(crbug.com/1082020): Support variant matching.
-    auto& location = it->second->response_locations[0];
-    parser_->ParseResponse(
-        location->offset, location->length,
-        WTF::Bind(&WebBundleSubresourceLoaderFactory::OnResponseParsed,
-                  weak_ptr_factory_.GetWeakPtr(), loader->GetWeakPtr()));
-  }
-
-  void OnMetadataParsed(web_package::mojom::BundleMetadataPtr metadata,
-                        web_package::mojom::BundleMetadataParseErrorPtr error) {
-    TRACE_EVENT0("loading",
-                 "WebBundleSubresourceLoaderFactory::OnMetadataParsed");
-    if (error) {
-      metadata_error_ = std::move(error);
-      RunErrorCallback(WebBundleErrorType::kMetadataParseError,
-                       metadata_error_->message);
-      for (auto loader : pending_loaders_) {
-        if (loader)
-          loader->OnFail(net::ERR_INVALID_WEB_BUNDLE);
-      }
-      pending_loaders_.clear();
-      return;
-    }
-
-    metadata_ = std::move(metadata);
-    for (auto loader : pending_loaders_)
-      StartLoad(loader.get());
-    pending_loaders_.clear();
-  }
-
-  void OnResponseParsed(base::WeakPtr<WebBundleSubresourceLoader> loader,
-                        web_package::mojom::BundleResponsePtr response,
-                        web_package::mojom::BundleResponseParseErrorPtr error) {
-    TRACE_EVENT0("loading",
-                 "WebBundleSubresourceLoaderFactory::OnResponseParsed");
-    if (!loader)
-      return;
-    if (error) {
-      RunErrorCallback(WebBundleErrorType::kResponseParseError, error->message);
-      loader->OnFail(net::ERR_INVALID_WEB_BUNDLE);
-      return;
-    }
-    // Currently we allow only net::HTTP_OK responses in bundles.
-    // TODO(crbug.com/990733): Revisit this once
-    // https://github.com/WICG/webpackage/issues/478 is resolved.
-    if (response->response_code != net::HTTP_OK) {
-      RunErrorCallback(WebBundleErrorType::kResponseParseError,
-                       "Invalid response code " +
-                           base::NumberToString(response->response_code));
-      loader->OnFail(net::ERR_INVALID_WEB_BUNDLE);
-      return;
-    }
-
-    loader->OnResponse(web_package::CreateResourceResponse(response));
-
-    mojo::ScopedDataPipeProducerHandle producer;
-    mojo::ScopedDataPipeConsumerHandle consumer;
-    if (CreateDataPipe(nullptr, &producer, &consumer) != MOJO_RESULT_OK) {
-      loader->OnFail(net::ERR_INSUFFICIENT_RESOURCES);
-      return;
-    }
-    loader->OnData(std::move(consumer));
-    source_->ReadToDataPipe(
-        std::move(producer), response->payload_offset, response->payload_length,
-        base::BindOnce(&WebBundleSubresourceLoader::OnWriteCompleted,
-                       loader->GetWeakPtr()));
-  }
-
-  void RunErrorCallback(WebBundleErrorType type, const std::string& message) {
-    PostCrossThreadTask(*callback_task_runner_, FROM_HERE,
-                        WTF::CrossThreadBindOnce(error_callback_, type,
-                                                 String(message.c_str())));
-  }
-
-  mojo::ReceiverSet<network::mojom::URLLoaderFactory> receivers_;
-  std::unique_ptr<LinkWebBundleDataSource> source_;
-  mojo::Remote<web_package::mojom::WebBundleParser> parser_;
-  web_package::mojom::BundleMetadataPtr metadata_;
-  web_package::mojom::BundleMetadataParseErrorPtr metadata_error_;
-  std::vector<base::WeakPtr<WebBundleSubresourceLoader>> pending_loaders_;
-  scoped_refptr<base::SingleThreadTaskRunner> callback_task_runner_;
-  WebBundleErrorCallback error_callback_;
-
-  base::WeakPtrFactory<WebBundleSubresourceLoaderFactory> weak_ptr_factory_{
-      this};
-};
-
-// Runs on a background thread.
-void CreateFactoryOnBackground(
-    mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,
-    mojo::ScopedDataPipeConsumerHandle bundle_body,
-    scoped_refptr<base::SingleThreadTaskRunner> callback_task_runner,
-    WebBundleErrorCallback error_callback) {
-  new WebBundleSubresourceLoaderFactory(
-      std::move(receiver), std::move(bundle_body), callback_task_runner,
-      std::move(error_callback));
-}
-
-}  // namespace
-
-void CreateWebBundleSubresourceLoaderFactory(
-    CrossVariantMojoReceiver<network::mojom::URLLoaderFactoryInterfaceBase>
-        factory_receiver,
-    mojo::ScopedDataPipeConsumerHandle bundle_body,
-    WebBundleErrorCallback error_callback) {
-  auto task_runner = base::ThreadPool::CreateSequencedTaskRunner(
-      {base::TaskPriority::USER_VISIBLE,
-       base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
-  task_runner->PostTask(
-      FROM_HERE,
-      base::BindOnce(&CreateFactoryOnBackground, std::move(factory_receiver),
-                     std::move(bundle_body),
-                     base::ThreadTaskRunnerHandle::Get(),
-                     std::move(error_callback)));
-}
-
-}  // namespace blink
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/web_bundle_subresource_loader.h b/third_party/blink/renderer/platform/loader/fetch/url_loader/web_bundle_subresource_loader.h
deleted file mode 100644
index 82866299..0000000
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/web_bundle_subresource_loader.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_URL_LOADER_WEB_BUNDLE_SUBRESOURCE_LOADER_H_
-#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_URL_LOADER_WEB_BUNDLE_SUBRESOURCE_LOADER_H_
-
-#include "mojo/public/cpp/bindings/pending_receiver.h"
-#include "services/network/public/mojom/url_loader_factory.mojom-shared.h"
-#include "third_party/blink/public/platform/cross_variant_mojo_util.h"
-#include "third_party/blink/renderer/platform/platform_export.h"
-
-namespace WTF {
-class String;
-}  // namespace WTF
-
-namespace blink {
-
-enum class WebBundleErrorType {
-  kMetadataParseError,
-  kResponseParseError,
-  kResourceNotFound,
-};
-
-using WebBundleErrorCallback =
-    base::RepeatingCallback<void(WebBundleErrorType,
-                                 const WTF::String& message)>;
-
-// Creates a network::mojom::URLLoaderFactory that can load resources from a
-// WebBundle, and binds it to |factory_receiver|.
-PLATFORM_EXPORT void CreateWebBundleSubresourceLoaderFactory(
-    CrossVariantMojoReceiver<network::mojom::URLLoaderFactoryInterfaceBase>
-        factory_receiver,
-    mojo::ScopedDataPipeConsumerHandle bundle_body,
-    WebBundleErrorCallback error_callback);
-
-}  // namespace blink
-
-#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_URL_LOADER_WEB_BUNDLE_SUBRESOURCE_LOADER_H_
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/web_bundle_subresource_loader_test.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/web_bundle_subresource_loader_test.cc
deleted file mode 100644
index 545ffeb..0000000
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/web_bundle_subresource_loader_test.cc
+++ /dev/null
@@ -1,336 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "third_party/blink/renderer/platform/loader/fetch/url_loader/web_bundle_subresource_loader.h"
-
-#include "base/test/task_environment.h"
-#include "components/web_package/test_support/web_bundle_builder.h"
-#include "mojo/public/cpp/bindings/remote.h"
-#include "mojo/public/cpp/system/data_pipe_utils.h"
-#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
-#include "services/network/public/mojom/url_loader.mojom.h"
-#include "services/network/public/mojom/url_loader_factory.mojom.h"
-#include "services/network/test/test_url_loader_client.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
-
-namespace blink {
-
-namespace {
-
-const char kResourceUrl[] = "https://example.com/";
-const char kResourceUrl2[] = "https://example.com/another";
-const char kResourceUrl3[] = "https://example.com/yetanother";
-
-std::vector<uint8_t> CreateSmallBundle() {
-  web_package::test::WebBundleBuilder builder(kResourceUrl,
-                                              "" /* manifest_url */);
-  builder.AddExchange(kResourceUrl,
-                      {{":status", "200"}, {"content-type", "text/plain"}},
-                      "body");
-  return builder.CreateBundle();
-}
-
-std::vector<uint8_t> CreateLargeBundle() {
-  web_package::test::WebBundleBuilder builder(kResourceUrl,
-                                              "" /* manifest_url */);
-  builder.AddExchange(kResourceUrl,
-                      {{":status", "200"}, {"content-type", "text/plain"}},
-                      "body");
-  builder.AddExchange(kResourceUrl2,
-                      {{":status", "200"}, {"content-type", "text/plain"}},
-                      std::string(10000, 'a'));
-  builder.AddExchange(kResourceUrl3,
-                      {{":status", "200"}, {"content-type", "text/plain"}},
-                      "body");
-  return builder.CreateBundle();
-}
-
-}  // namespace
-
-class WebBundleSubresourceLoaderFactoryTest : public ::testing::Test {
- public:
-  void SetUp() override {
-    mojo::ScopedDataPipeConsumerHandle consumer;
-    ASSERT_EQ(CreateDataPipe(nullptr, &bundle_data_destination_, &consumer),
-              MOJO_RESULT_OK);
-    CreateWebBundleSubresourceLoaderFactory(
-        loader_factory_.BindNewPipeAndPassReceiver(), std::move(consumer),
-        base::BindRepeating(
-            &WebBundleSubresourceLoaderFactoryTest::OnWebBundleError,
-            base::Unretained(this)));
-  }
-
-  void WriteBundle(base::span<const uint8_t> data) {
-    mojo::BlockingCopyFromString(
-        std::string(reinterpret_cast<const char*>(data.data()), data.size()),
-        bundle_data_destination_);
-  }
-
-  void FinishWritingBundle() { bundle_data_destination_.reset(); }
-
-  struct StartRequestResult {
-    mojo::Remote<network::mojom::URLLoader> loader;
-    std::unique_ptr<network::TestURLLoaderClient> client;
-  };
-
-  StartRequestResult StartRequest(const GURL& url) {
-    return StartRequestWithLoaderFactory(loader_factory_, url);
-  }
-
-  void RunUntilBundleError() {
-    if (last_bundle_error_.has_value())
-      return;
-    base::RunLoop run_loop;
-    quit_closure_for_bundle_error_ = run_loop.QuitClosure();
-    run_loop.Run();
-  }
-
-  const base::Optional<std::pair<WebBundleErrorType, WTF::String>>&
-  last_bundle_error() const {
-    return last_bundle_error_;
-  }
-
- protected:
-  StartRequestResult StartRequestWithLoaderFactory(
-      mojo::Remote<network::mojom::URLLoaderFactory>& factory,
-      const GURL& url) {
-    network::ResourceRequest request;
-    request.url = url;
-    request.method = "GET";
-    StartRequestResult result;
-    result.client = std::make_unique<network::TestURLLoaderClient>();
-    factory->CreateLoaderAndStart(
-        result.loader.BindNewPipeAndPassReceiver(), 0 /* routing_id */,
-        0 /* request_id */, 0 /* options */, request,
-        result.client->CreateRemote(),
-        net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
-    return result;
-  }
-
-  mojo::Remote<network::mojom::URLLoaderFactory> loader_factory_;
-
- private:
-  void OnWebBundleError(WebBundleErrorType type, const WTF::String& message) {
-    last_bundle_error_ = std::make_pair(type, message);
-    if (quit_closure_for_bundle_error_)
-      std::move(quit_closure_for_bundle_error_).Run();
-  }
-
-  mojo::ScopedDataPipeProducerHandle bundle_data_destination_;
-  base::test::TaskEnvironment task_environment;
-  base::Optional<std::pair<WebBundleErrorType, WTF::String>> last_bundle_error_;
-  base::OnceClosure quit_closure_for_bundle_error_;
-};
-
-TEST_F(WebBundleSubresourceLoaderFactoryTest, Basic) {
-  WriteBundle(CreateSmallBundle());
-  FinishWritingBundle();
-
-  auto request = StartRequest(GURL(kResourceUrl));
-  request.client->RunUntilComplete();
-
-  EXPECT_EQ(net::OK, request.client->completion_status().error_code);
-  EXPECT_FALSE(last_bundle_error().has_value());
-  std::string body;
-  EXPECT_TRUE(mojo::BlockingCopyToString(
-      request.client->response_body_release(), &body));
-  EXPECT_EQ("body", body);
-}
-
-TEST_F(WebBundleSubresourceLoaderFactoryTest, Clone) {
-  mojo::Remote<network::mojom::URLLoaderFactory> cloned_factory_;
-  loader_factory_->Clone(cloned_factory_.BindNewPipeAndPassReceiver());
-
-  WriteBundle(CreateSmallBundle());
-  FinishWritingBundle();
-
-  auto request =
-      StartRequestWithLoaderFactory(cloned_factory_, GURL(kResourceUrl));
-  request.client->RunUntilComplete();
-
-  EXPECT_EQ(net::OK, request.client->completion_status().error_code);
-  EXPECT_FALSE(last_bundle_error().has_value());
-}
-
-TEST_F(WebBundleSubresourceLoaderFactoryTest, MetadataParseError) {
-  auto request = StartRequest(GURL(kResourceUrl));
-
-  std::vector<uint8_t> bundle = CreateSmallBundle();
-  bundle[4] ^= 1;  // Mutate magic bytes.
-  WriteBundle(bundle);
-  FinishWritingBundle();
-
-  request.client->RunUntilComplete();
-  RunUntilBundleError();
-
-  EXPECT_EQ(net::ERR_INVALID_WEB_BUNDLE,
-            request.client->completion_status().error_code);
-  EXPECT_EQ(last_bundle_error()->first,
-            WebBundleErrorType::kMetadataParseError);
-  EXPECT_EQ(last_bundle_error()->second, "Wrong magic bytes.");
-
-  // Requests made after metadata parse error should also fail.
-  auto request2 = StartRequest(GURL(kResourceUrl));
-  request2.client->RunUntilComplete();
-
-  EXPECT_EQ(net::ERR_INVALID_WEB_BUNDLE,
-            request2.client->completion_status().error_code);
-}
-
-TEST_F(WebBundleSubresourceLoaderFactoryTest, ResponseParseError) {
-  web_package::test::WebBundleBuilder builder(kResourceUrl,
-                                              "" /* manifest_url */);
-  // An invalid response.
-  builder.AddExchange(kResourceUrl, {{":status", "0"}}, "body");
-  WriteBundle(builder.CreateBundle());
-  FinishWritingBundle();
-
-  auto request = StartRequest(GURL(kResourceUrl));
-  request.client->RunUntilComplete();
-  RunUntilBundleError();
-
-  EXPECT_EQ(net::ERR_INVALID_WEB_BUNDLE,
-            request.client->completion_status().error_code);
-  EXPECT_EQ(last_bundle_error()->first,
-            WebBundleErrorType::kResponseParseError);
-  EXPECT_EQ(last_bundle_error()->second,
-            ":status must be 3 ASCII decimal digits.");
-}
-
-TEST_F(WebBundleSubresourceLoaderFactoryTest, ResourceNotFoundInBundle) {
-  WriteBundle(CreateSmallBundle());
-  FinishWritingBundle();
-
-  auto request = StartRequest(GURL("https://example.com/no-such-resource"));
-  request.client->RunUntilComplete();
-  RunUntilBundleError();
-
-  EXPECT_EQ(net::ERR_INVALID_WEB_BUNDLE,
-            request.client->completion_status().error_code);
-  EXPECT_EQ(last_bundle_error()->first, WebBundleErrorType::kResourceNotFound);
-  EXPECT_EQ(
-      last_bundle_error()->second,
-      "https://example.com/no-such-resource is not found in the WebBundle.");
-}
-
-TEST_F(WebBundleSubresourceLoaderFactoryTest, RedirectResponseIsNotAllowed) {
-  web_package::test::WebBundleBuilder builder(kResourceUrl,
-                                              "" /* manifest_url */);
-  builder.AddExchange(kResourceUrl,
-                      {{":status", "301"}, {"location", kResourceUrl2}}, "");
-  builder.AddExchange(kResourceUrl2,
-                      {{":status", "200"}, {"content-type", "text/plain"}},
-                      "body");
-  WriteBundle(builder.CreateBundle());
-  FinishWritingBundle();
-
-  auto request = StartRequest(GURL(kResourceUrl));
-  request.client->RunUntilComplete();
-  RunUntilBundleError();
-
-  EXPECT_EQ(net::ERR_INVALID_WEB_BUNDLE,
-            request.client->completion_status().error_code);
-  EXPECT_EQ(last_bundle_error()->first,
-            WebBundleErrorType::kResponseParseError);
-  EXPECT_EQ(last_bundle_error()->second, "Invalid response code 301");
-}
-
-TEST_F(WebBundleSubresourceLoaderFactoryTest, StartRequestBeforeReadingBundle) {
-  auto request = StartRequest(GURL(kResourceUrl));
-
-  WriteBundle(CreateSmallBundle());
-  FinishWritingBundle();
-  request.client->RunUntilComplete();
-
-  EXPECT_EQ(net::OK, request.client->completion_status().error_code);
-}
-
-TEST_F(WebBundleSubresourceLoaderFactoryTest, MultipleRequests) {
-  auto request1 = StartRequest(GURL(kResourceUrl));
-  auto request2 = StartRequest(GURL(kResourceUrl2));
-
-  std::vector<uint8_t> bundle = CreateLargeBundle();
-  // Write the first 10kB of the bundle in which the bundle's metadata and the
-  // response for kResourceUrl are included.
-  ASSERT_GT(bundle.size(), 10000U);
-  WriteBundle(base::make_span(bundle).subspan(0, 10000));
-  request1.client->RunUntilComplete();
-
-  EXPECT_EQ(net::OK, request1.client->completion_status().error_code);
-  EXPECT_FALSE(request2.client->has_received_completion());
-
-  // Write the rest of the data.
-  WriteBundle(base::make_span(bundle).subspan(10000));
-  FinishWritingBundle();
-  request2.client->RunUntilComplete();
-
-  EXPECT_EQ(net::OK, request2.client->completion_status().error_code);
-}
-
-TEST_F(WebBundleSubresourceLoaderFactoryTest, CancelRequest) {
-  auto request_to_complete1 = StartRequest(GURL(kResourceUrl));
-  auto request_to_complete2 = StartRequest(GURL(kResourceUrl2));
-  auto request_to_cancel1 = StartRequest(GURL(kResourceUrl));
-  auto request_to_cancel2 = StartRequest(GURL(kResourceUrl2));
-  auto request_to_cancel3 = StartRequest(GURL(kResourceUrl3));
-
-  // Cancel request before getting metadata.
-  request_to_cancel1.loader.reset();
-
-  std::vector<uint8_t> bundle = CreateLargeBundle();
-  // Write the first 10kB of the bundle in which the bundle's metadata, response
-  // for kResourceUrl, and response header for kResourceUrl2 are included.
-  ASSERT_GT(bundle.size(), 10000U);
-  WriteBundle(base::make_span(bundle).subspan(0, 10000));
-
-  // This makes sure the bytes written above are consumed by WebBundle parser.
-  request_to_complete1.client->RunUntilComplete();
-
-  // Cancel request after reading response header, but before reading body.
-  request_to_cancel2.loader.reset();
-
-  // Cancel request after getting metadata, but before reading response header.
-  request_to_cancel3.loader.reset();
-
-  // Write the rest of the data.
-  WriteBundle(base::make_span(bundle).subspan(10000));
-  FinishWritingBundle();
-  request_to_complete2.client->RunUntilComplete();
-  EXPECT_EQ(net::OK,
-            request_to_complete2.client->completion_status().error_code);
-}
-
-TEST_F(WebBundleSubresourceLoaderFactoryTest,
-       FactoryDestructionCancelsInflightRequests) {
-  auto request = StartRequest(GURL(kResourceUrl));
-
-  loader_factory_.reset();
-
-  WriteBundle(CreateSmallBundle());
-  FinishWritingBundle();
-  request.client->RunUntilComplete();
-
-  EXPECT_EQ(net::ERR_FAILED, request.client->completion_status().error_code);
-}
-
-TEST_F(WebBundleSubresourceLoaderFactoryTest, TruncatedBundle) {
-  std::vector<uint8_t> bundle = CreateSmallBundle();
-  // Truncate in the middle of responses section.
-  bundle.resize(bundle.size() - 10);
-  WriteBundle(std::move(bundle));
-  FinishWritingBundle();
-
-  auto request = StartRequest(GURL(kResourceUrl));
-  request.client->RunUntilComplete();
-  RunUntilBundleError();
-
-  EXPECT_EQ(net::ERR_INVALID_WEB_BUNDLE,
-            request.client->completion_status().error_code);
-  EXPECT_EQ(last_bundle_error()->first,
-            WebBundleErrorType::kResponseParseError);
-  EXPECT_EQ(last_bundle_error()->second, "Error reading response header.");
-}
-
-}  // namespace blink
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 87698da..8b43010 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -852,10 +852,6 @@
       status: "stable",
     },
     {
-      name: "FeaturePolicyForSandbox",
-      status: "experimental",
-    },
-    {
       name: "FeaturePolicyReporting",
       implied_by: ["ExperimentalProductivityFeatures"],
       origin_trial_feature_name: "FeaturePolicyReporting",
diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc b/third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
index 95f5509..ca2ca2d 100644
--- a/third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
+++ b/third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
@@ -455,8 +455,8 @@
     case WebGestureEvent::Type::kGestureScrollBegin:
     case WebGestureEvent::Type::kGesturePinchBegin:
       if (disposition == DID_HANDLE ||
-          disposition == DID_HANDLE_SHOULD_BUBBLE ||
-          disposition == REQUIRES_MAIN_THREAD_HIT_TEST) {
+          disposition == REQUIRES_MAIN_THREAD_HIT_TEST ||
+          (disposition == DROP_EVENT && handling_gesture_on_impl_thread_)) {
         // REQUIRES_MAIN_THREAD_HIT_TEST means the scroll will be handled by
         // the compositor but needs to block until a hit test is performed by
         // Blink. We need to set this to indicate we're in a scroll so that
@@ -465,6 +465,9 @@
         // |handling_gesture_on_impl_thread_|. Ideally these two bits would be
         // merged. The queueing behavior is currently just determined by having
         // an active gesture device.
+        //
+        // DROP_EVENT and handling_gesture_on_impl_thread_ means that the
+        // gesture was handled but the scroll was not consumed.
         currently_active_gesture_device_ =
             static_cast<const WebGestureEvent&>(event).SourceDevice();
       }
@@ -978,13 +981,13 @@
       handling_gesture_on_impl_thread_ = true;
       if (input_handler_->IsCurrentlyScrollingViewport())
         client_->DidStartScrollingViewport();
-
-      if (scroll_status.bubble)
-        result = DID_HANDLE_SHOULD_BUBBLE;
+      // if the viewport cannot scroll, the scroll cannot be consumed so we
+      // drop the event
+      if (scroll_status.viewport_cannot_scroll)
+        result = DROP_EVENT;
       else
         result = DID_HANDLE;
       break;
-    case ScrollThread::SCROLL_UNKNOWN:
     case ScrollThread::SCROLL_ON_MAIN_THREAD:
       TRACE_EVENT_INSTANT0("input", "Handle On Main", TRACE_EVENT_SCOPE_THREAD);
       result = DID_NOT_HANDLE;
@@ -994,6 +997,9 @@
       scroll_sequence_ignored_ = true;
       result = DROP_EVENT;
       break;
+    default:
+      NOTREACHED();
+      break;
   }
 
   // TODO(bokan): Should we really be calling this in cases like DROP_EVENT and
diff --git a/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc b/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc
index cb2cbc8..a93acb1d 100644
--- a/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc
+++ b/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc
@@ -81,8 +81,6 @@
       return mojom::blink::InputEventResultState::kNoConsumerExists;
     case InputHandlerProxy::DID_HANDLE_NON_BLOCKING:
       return mojom::blink::InputEventResultState::kSetNonBlocking;
-    case InputHandlerProxy::DID_HANDLE_SHOULD_BUBBLE:
-      return mojom::blink::InputEventResultState::kConsumedShouldBubble;
     case InputHandlerProxy::REQUIRES_MAIN_THREAD_HIT_TEST:
     default:
       NOTREACHED();
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 3f863e8..bbfffaf6 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -215,13 +215,6 @@
 crbug.com/1093466 virtual/portals/http/tests/portals/* [ Pass ]
 crbug.com/1093466 virtual/portals/wpt_internal/portals/* [ Pass ]
 
-# Subpixel differences
-crbug.com/997202 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-backgrounds/border-radius-clip-001.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-backgrounds/border-radius-clip-002.htm [ Failure ]
-crbug.com/997202 external/wpt/css/css-transforms/perspective-transforms-equivalence.html [ Failure ]
-
 crbug.com/807395 fast/multicol/mixed-opacity-test.html [ Failure ]
 
 ########## Ref tests can't be rebaselined ##########
@@ -370,36 +363,13 @@
 # Fail due to lack of fuzzy matching on Linux, Win and Mac platforms for WPT. The pixels in the pre-rotated reference
 # images do not exactly match the exif rotated images, probably due to jpeg decoding/encoding issues. Maybe
 # adjusting the image size to a multiple of 8 would fix this (so all jpeg blocks are solid color).
-crbug.com/997202 external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/image-orientation/drawImage-with-src-rect.tentative.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-default.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic1.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-from-image-content-images.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-from-image-dynamic1.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-from-image-embedded-content.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-from-image.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-none-image-document.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic2.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-from-image-dynamic2.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-none-content-images.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-none.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/svg-image-orientation.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/svg-image-orientation-none.html [ Failure ]
 crbug.com/997202 external/wpt/css/css-images/image-orientation/svg-image-orientation-aspect-ratio.html [ Failure ]
-crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-background-position.html [ Failure ]
 crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-background-properties.html [ Failure ]
 crbug.com/997202 external/wpt/css/css-images/image-orientation/image-orientation-background-properties-border-radius.html [ Failure ]
 crbug.com/997202 external/wpt/density-size-correction/density-corrected-image-svg-aspect-ratio.html [ Failure ]
 
-# These have filtering antialiasing artifacts on one side only, but otherwise are passing. The tests
-# should be updated with the fuzzy meta data once enabled in the test driver.
-crbug.com/997202 external/wpt/css/css-backgrounds/border-image-slice-007.htm [ Failure ]
-crbug.com/997202 external/wpt/css/css-backgrounds/border-image-slice-005.htm [ Failure ]
-
 # Ref results are wrong on the background and list case, not sure on border result
-crbug.com/1076121 external/wpt/css/css-images/image-orientation/image-orientation-list-style-image.html [ Failure ]
 crbug.com/1076121 external/wpt/css/css-images/image-orientation/image-orientation-border-image.html [ Failure ]
-crbug.com/1076121 external/wpt/css/css-images/image-orientation/image-orientation-background-image.html [ Failure ]
 
 crbug.com/1042783 external/wpt/css/css-backgrounds/background-size/background-size-near-zero-png.html [ Failure ]
 crbug.com/1042783 external/wpt/css/css-backgrounds/background-size/background-size-near-zero-svg.html [ Failure ]
@@ -1037,11 +1007,13 @@
 virtual/layout_ng_block_frag/fast/multicol/vertical-lr/float-content-break.html [ Pass ]
 virtual/layout_ng_block_frag/fast/multicol/vertical-lr/float-edge.html [ Pass ]
 virtual/layout_ng_block_frag/fast/multicol/vertical-lr/float-paginate.html [ Pass ]
+virtual/layout_ng_block_frag/fast/multicol/vertical-lr/nested-columns.html [ Pass ]
 virtual/layout_ng_block_frag/fast/multicol/vertical-lr/unsplittable-inline-block.html [ Pass ]
 virtual/layout_ng_block_frag/fast/multicol/vertical-rl/column-count-with-rules.html [ Pass ]
 virtual/layout_ng_block_frag/fast/multicol/vertical-rl/float-big-line.html [ Pass ]
 virtual/layout_ng_block_frag/fast/multicol/vertical-rl/float-content-break.html [ Pass ]
 virtual/layout_ng_block_frag/fast/multicol/vertical-rl/float-edge.html [ Pass ]
+virtual/layout_ng_block_frag/fast/multicol/vertical-rl/nested-columns.html [ Pass ]
 
 ### Tests failing with LayoutNGBlockFragmentation enabled:
 crbug.com/1079031 virtual/layout_ng_block_frag/external/wpt/css/css-break/block-end-aligned-abspos-nested.html [ Failure ]
@@ -1104,7 +1076,6 @@
 crbug.com/1079031 virtual/layout_ng_block_frag/fast/multicol/mixed-opacity-test.html [ Crash Failure ]
 crbug.com/829028 virtual/layout_ng_block_frag/fast/multicol/nested-auto-height-short-first-row.html [ Failure ]
 crbug.com/829028 virtual/layout_ng_block_frag/fast/multicol/nested-balanced-inner-column-count-1-with-forced-break.html [ Failure ]
-crbug.com/829028 virtual/layout_ng_block_frag/fast/multicol/nested-columns.html [ Failure ]
 crbug.com/829028 virtual/layout_ng_block_frag/fast/multicol/nested-short-first-row-extra-tall-line.html [ Failure ]
 crbug.com/829028 virtual/layout_ng_block_frag/fast/multicol/nested-short-first-row-unsplittable-block.html [ Failure ]
 crbug.com/829028 virtual/layout_ng_block_frag/fast/multicol/nested-uneven-inner-column-height.html [ Failure ]
@@ -1135,9 +1106,7 @@
 crbug.com/1079031 virtual/layout_ng_block_frag/fast/multicol/tall-line-in-short-block.html [ Failure ]
 crbug.com/1079031 virtual/layout_ng_block_frag/fast/multicol/transform-with-fixedpos.html [ Failure ]
 crbug.com/1058792 virtual/layout_ng_block_frag/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change.html [ Failure ]
-crbug.com/829028 [ Mac ] virtual/layout_ng_block_frag/fast/multicol/vertical-lr/nested-columns.html [ Failure ]
 crbug.com/1058792 virtual/layout_ng_block_frag/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change.html [ Failure ]
-crbug.com/829028 virtual/layout_ng_block_frag/fast/multicol/vertical-rl/nested-columns.html [ Crash Failure ]
 crbug.com/829028 virtual/layout_ng_block_frag/fast/multicol/widows.html [ Failure ]
 crbug.com/829028 virtual/layout_ng_block_frag/fragmentation/auto-scrollbar-shrink-to-fit.html [ Failure ]
 crbug.com/1079031 virtual/layout_ng_block_frag/fragmentation/content-preceding-first-fragmentainer.html [ Crash Failure ]
@@ -3317,6 +3286,8 @@
 # [composite-bgcolor-animation]
 crbug.com/1148369 virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/border-bottom-left-radius-010.xht [ Failure ]
 crbug.com/1148369 virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/border-bottom-right-radius-010.xht [ Failure ]
+crbug.com/1148369 virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/border-radius-clip-001.html [ Failure ]
+crbug.com/1148369 virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/border-radius-clip-002.htm [ Failure ]
 crbug.com/1148369 virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/border-top-left-radius-010.xht [ Failure ]
 crbug.com/1148369 virtual/composite-bgcolor-animation/external/wpt/css/css-backgrounds/border-top-right-radius-010.xht [ Failure ]
 
@@ -3472,9 +3443,6 @@
 crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-content-vertical-lr.html [ Failure ]
 crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-content-vertical-rl.html [ Failure ]
 crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-content.html [ Failure ]
-crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-lr.html [ Failure ]
-crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-rl.html [ Failure ]
-crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-justify-margin-border-padding.html [ Failure ]
 crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-justify-overflow.html [ Failure ]
 crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-029.html [ Failure ]
 crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-030.html [ Failure ]
@@ -3966,7 +3934,6 @@
 crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-intrinsic-maximums.html [ Failure ]
 crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-item-addition-auto-placement-update.html [ Failure Crash ]
 crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-item-addition-track-breadth-update.html [ Failure ]
-crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-item-auto-sized-align-justify-margin-border-padding.html [ Failure ]
 crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-item-grid-container-percentage-rows.html [ Failure ]
 crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-item-multiple-minmax-content-resolution.html [ Failure ]
 crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-item-named-grid-line-resolution.html [ Failure ]
@@ -4814,8 +4781,6 @@
 # Flaky test.
 crbug.com/1084378 external/wpt/webvtt/rendering/cues-with-video/processing-model/dom_override_remove_cue_while_paused.html [ Pass Failure ]
 
-# Flay probably due to outstanding work for FeaturePolicyForSandbox.
-
 # Sheriff 2019-02-12
 crbug.com/1072768 media/video-played-ranges-1.html [ Failure Timeout Pass ]
 
@@ -5924,3 +5889,6 @@
 
 # DevTools roll
 crbug.com/1144171 http/tests/devtools/report-API-errors.js [ Skip ]
+
+# Sheriff 2020-12-07
+crbug.com/1156175 external/wpt/requestidlecallback/callback-iframe.html [ Pass Timeout ]
diff --git a/third_party/blink/web_tests/accessibility/listitem-presentation-inherited-expected.txt b/third_party/blink/web_tests/accessibility/listitem-presentation-inherited-expected.txt
index c0c6dd5..8f62e4b 100644
--- a/third_party/blink/web_tests/accessibility/listitem-presentation-inherited-expected.txt
+++ b/third_party/blink/web_tests/accessibility/listitem-presentation-inherited-expected.txt
@@ -31,12 +31,21 @@
                 AXRole: AXInlineTextBox "Item 3"
     AXRole: AXPresentational
         AXRole: AXListItem
+            AXRole: AXListMarker "• "
+                AXRole: AXStaticText "• "
+                    AXRole: AXInlineTextBox "• "
             AXRole: AXStaticText "Plain Text 1"
                 AXRole: AXInlineTextBox "Plain Text 1"
         AXRole: AXListItem
+            AXRole: AXListMarker "• "
+                AXRole: AXStaticText "• "
+                    AXRole: AXInlineTextBox "• "
             AXRole: AXStaticText "Plain Text 2"
                 AXRole: AXInlineTextBox "Plain Text 2"
         AXRole: AXListItem
+            AXRole: AXListMarker "• "
+                AXRole: AXStaticText "• "
+                    AXRole: AXInlineTextBox "• "
             AXRole: AXStaticText "Plain Text 3"
                 AXRole: AXInlineTextBox "Plain Text 3"
 
diff --git a/third_party/blink/web_tests/accessibility/presentation-owned-elements-expected.txt b/third_party/blink/web_tests/accessibility/presentation-owned-elements-expected.txt
index 6588fe1e..c5abea5 100644
--- a/third_party/blink/web_tests/accessibility/presentation-owned-elements-expected.txt
+++ b/third_party/blink/web_tests/accessibility/presentation-owned-elements-expected.txt
@@ -32,9 +32,15 @@
             AXRole: AXInlineTextBox "These lists have a static text role because they have a presentation role."
     AXRole: AXPresentational
         AXRole: AXListItem
+            AXRole: AXListMarker "• "
+                AXRole: AXStaticText "• "
+                    AXRole: AXInlineTextBox "• "
             AXRole: AXStaticText "Presentation Item 1"
                 AXRole: AXInlineTextBox "Presentation Item 1"
         AXRole: AXListItem
+            AXRole: AXListMarker "• "
+                AXRole: AXStaticText "• "
+                    AXRole: AXInlineTextBox "• "
             AXRole: AXStaticText "Presentation Item 2"
                 AXRole: AXInlineTextBox "Presentation Item 2"
     AXRole: AXGenericContainer
@@ -48,6 +54,9 @@
             AXRole: AXStaticText "Explicit Item 1"
                 AXRole: AXInlineTextBox "Explicit Item 1"
         AXRole: AXListItem
+            AXRole: AXListMarker "• "
+                AXRole: AXStaticText "• "
+                    AXRole: AXInlineTextBox "• "
             AXRole: AXStaticText "Implicit Item 2"
                 AXRole: AXInlineTextBox "Implicit Item 2"
     AXRole: AXGenericContainer
diff --git a/third_party/blink/web_tests/external/DIR_METADATA b/third_party/blink/web_tests/external/DIR_METADATA
new file mode 100644
index 0000000..154dfe0c
--- /dev/null
+++ b/third_party/blink/web_tests/external/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Infra>Ecosystem"
+}
+team_email: "ecosystem-infra@chromium.org"
diff --git a/third_party/blink/web_tests/external/OWNERS b/third_party/blink/web_tests/external/OWNERS
index f7bf1d1..8c4961ce 100644
--- a/third_party/blink/web_tests/external/OWNERS
+++ b/third_party/blink/web_tests/external/OWNERS
@@ -1,6 +1,4 @@
 # Please do not remove this file. It is needed by blinkpy/w3c/directory_owners_extractor.py
 
-# TEAM: ecosystem-infra@chromium.org
-# COMPONENT: Blink>Infra>Ecosystem
 foolip@chromium.org
 robertma@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/FileAPI/DIR_METADATA b/third_party/blink/web_tests/external/wpt/FileAPI/DIR_METADATA
new file mode 100644
index 0000000..b3f5dcfb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/FileAPI/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Storage>FileAPI"
+}
+team_email: "storage-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/FileAPI/OWNERS b/third_party/blink/web_tests/external/wpt/FileAPI/OWNERS
index 20ee9f14..08758610 100644
--- a/third_party/blink/web_tests/external/wpt/FileAPI/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/FileAPI/OWNERS
@@ -1,5 +1,2 @@
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Blink>Storage>FileAPI
-# WPT-NOTIFY: true
 jsbell@chromium.org
 mek@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/IndexedDB/DIR_METADATA b/third_party/blink/web_tests/external/wpt/IndexedDB/DIR_METADATA
new file mode 100644
index 0000000..d9cbdfb7b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/IndexedDB/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Storage>IndexedDB"
+}
+team_email: "storage-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/IndexedDB/OWNERS b/third_party/blink/web_tests/external/wpt/IndexedDB/OWNERS
index cd315c4..82c8165 100644
--- a/third_party/blink/web_tests/external/wpt/IndexedDB/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/IndexedDB/OWNERS
@@ -1,4 +1 @@
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Blink>Storage>IndexedDB
-# WPT-NOTIFY: true
 jsbell@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/WebCryptoAPI/DIR_METADATA b/third_party/blink/web_tests/external/wpt/WebCryptoAPI/DIR_METADATA
new file mode 100644
index 0000000..86d9592
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/WebCryptoAPI/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Blink>WebCrypto"
+}
diff --git a/third_party/blink/web_tests/external/wpt/WebCryptoAPI/OWNERS b/third_party/blink/web_tests/external/wpt/WebCryptoAPI/OWNERS
index 5d5ce50a..81033345 100644
--- a/third_party/blink/web_tests/external/wpt/WebCryptoAPI/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/WebCryptoAPI/OWNERS
@@ -1,2 +1 @@
-# COMPONENT: Blink>WebCrypto
 rsleevi@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/background-fetch/DIR_METADATA b/third_party/blink/web_tests/external/wpt/background-fetch/DIR_METADATA
new file mode 100644
index 0000000..dddbff6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/background-fetch/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>BackgroundFetch"
+}
+team_email: "platform-capabilities@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/background-fetch/OWNERS b/third_party/blink/web_tests/external/wpt/background-fetch/OWNERS
index 7c414b2..b0f50d1bb 100644
--- a/third_party/blink/web_tests/external/wpt/background-fetch/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/background-fetch/OWNERS
@@ -1,5 +1 @@
 file://third_party/blink/renderer/modules/background_fetch/OWNERS
-
-# TEAM: platform-capabilities@chromium.org
-# COMPONENT: Blink>BackgroundFetch
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/battery-status/DIR_METADATA b/third_party/blink/web_tests/external/wpt/battery-status/DIR_METADATA
new file mode 100644
index 0000000..44e28c4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/battery-status/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "device-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/battery-status/OWNERS b/third_party/blink/web_tests/external/wpt/battery-status/OWNERS
index f34b5e2..1fd89e0 100644
--- a/third_party/blink/web_tests/external/wpt/battery-status/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/battery-status/OWNERS
@@ -1,2 +1 @@
-# TEAM: device-dev@chromium.org
 timvolodine@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/DIR_METADATA b/third_party/blink/web_tests/external/wpt/bluetooth/DIR_METADATA
new file mode 100644
index 0000000..488eb98
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Bluetooth"
+}
+team_email: "web-bluetooth@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/OWNERS b/third_party/blink/web_tests/external/wpt/bluetooth/OWNERS
index 82904a3..837ee39 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/OWNERS
@@ -1,4 +1 @@
 file://content/browser/bluetooth/OWNERS
-
-# TEAM: web-bluetooth@chromium.org
-# COMPONENT: Blink>Bluetooth
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/clear-site-data/DIR_METADATA b/third_party/blink/web_tests/external/wpt/clear-site-data/DIR_METADATA
new file mode 100644
index 0000000..56cf7f3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/clear-site-data/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>SecurityFeature"
+}
+team_email: "security-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/clear-site-data/OWNERS b/third_party/blink/web_tests/external/wpt/clear-site-data/OWNERS
index ccdb52e..43d9342 100644
--- a/third_party/blink/web_tests/external/wpt/clear-site-data/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/clear-site-data/OWNERS
@@ -1,4 +1,2 @@
-# TEAM: security-dev@chromium.org
-# COMPONENT: Blink>SecurityFeature
 msramek@chromium.org
 mkwst@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/DIR_METADATA b/third_party/blink/web_tests/external/wpt/client-hints/DIR_METADATA
new file mode 100644
index 0000000..16964bc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Loader"
+}
+team_email: "loading-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/OWNERS b/third_party/blink/web_tests/external/wpt/client-hints/OWNERS
deleted file mode 100644
index 5cb08fb..0000000
--- a/third_party/blink/web_tests/external/wpt/client-hints/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-# TEAM: loading-dev@chromium.org
-# COMPONENT: Blink>Loader
diff --git a/third_party/blink/web_tests/external/wpt/clipboard-apis/DIR_METADATA b/third_party/blink/web_tests/external/wpt/clipboard-apis/DIR_METADATA
new file mode 100644
index 0000000..7ec0150
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/clipboard-apis/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Storage>DataTransfer"
+}
+team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/clipboard-apis/OWNERS b/third_party/blink/web_tests/external/wpt/clipboard-apis/OWNERS
index f45bd507..921409a 100644
--- a/third_party/blink/web_tests/external/wpt/clipboard-apis/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/clipboard-apis/OWNERS
@@ -1,5 +1,3 @@
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Blink>Storage>DataTransfer
 
 garykac@chromium.org
 pwnall@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/compat/DIR_METADATA b/third_party/blink/web_tests/external/wpt/compat/DIR_METADATA
new file mode 100644
index 0000000..74bdc06
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/compat/DIR_METADATA
@@ -0,0 +1,3 @@
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/compat/OWNERS b/third_party/blink/web_tests/external/wpt/compat/OWNERS
index a3ba8e4..212e449 100644
--- a/third_party/blink/web_tests/external/wpt/compat/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/compat/OWNERS
@@ -1,2 +1 @@
-# WPT-NOTIFY: true
 foolip@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/contacts/DIR_METADATA b/third_party/blink/web_tests/external/wpt/contacts/DIR_METADATA
new file mode 100644
index 0000000..3e590e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/contacts/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Contacts"
+}
+team_email: "platform-capabilities@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/contacts/OWNERS b/third_party/blink/web_tests/external/wpt/contacts/OWNERS
index bb162e9..517774d 100644
--- a/third_party/blink/web_tests/external/wpt/contacts/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/contacts/OWNERS
@@ -1,6 +1,3 @@
 finnur@chromium.org
 peter@chromium.org
 rayankans@chromium.org
-
-# TEAM: platform-capabilities@chromium.org
-# COMPONENT: Blink>Contacts
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/content-security-policy/DIR_METADATA b/third_party/blink/web_tests/external/wpt/content-security-policy/DIR_METADATA
new file mode 100644
index 0000000..420f43612
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/content-security-policy/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>SecurityFeature>ContentSecurityPolicy"
+}
+team_email: "security-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/content-security-policy/OWNERS b/third_party/blink/web_tests/external/wpt/content-security-policy/OWNERS
index 945116bc..3b19cb56 100644
--- a/third_party/blink/web_tests/external/wpt/content-security-policy/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/content-security-policy/OWNERS
@@ -1,4 +1,2 @@
-# TEAM: security-dev@chromium.org
-# COMPONENT: Blink>SecurityFeature>ContentSecurityPolicy
 mkwst@chromium.org
 andypaicu@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/cookie-store/DIR_METADATA b/third_party/blink/web_tests/external/wpt/cookie-store/DIR_METADATA
new file mode 100644
index 0000000..47fbe18
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/cookie-store/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Storage>CookiesAPI"
+}
+team_email: "storage-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/cookie-store/OWNERS b/third_party/blink/web_tests/external/wpt/cookie-store/OWNERS
index 22c700cd..acea549 100644
--- a/third_party/blink/web_tests/external/wpt/cookie-store/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/cookie-store/OWNERS
@@ -1,5 +1,2 @@
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Blink>Storage>CookiesAPI
-# WPT-NOTIFY: true
 pwnall@chromium.org
 jsbell@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/cookies/DIR_METADATA b/third_party/blink/web_tests/external/wpt/cookies/DIR_METADATA
new file mode 100644
index 0000000..4f2c80c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/cookies/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Internals>Network>Cookies"
+}
+team_email: "security-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/cookies/OWNERS b/third_party/blink/web_tests/external/wpt/cookies/OWNERS
index 4058c0c..3f84563 100644
--- a/third_party/blink/web_tests/external/wpt/cookies/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/cookies/OWNERS
@@ -1,3 +1 @@
-# TEAM: security-dev@chromium.org
-# COMPONENT: Internals>Network>Cookies
 mkwst@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/cors/DIR_METADATA b/third_party/blink/web_tests/external/wpt/cors/DIR_METADATA
new file mode 100644
index 0000000..2e34b18b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/cors/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>SecurityFeature>CORS"
+}
+team_email: "blink-network-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/cors/OWNERS b/third_party/blink/web_tests/external/wpt/cors/OWNERS
index 6c7157d..8b13789 100644
--- a/third_party/blink/web_tests/external/wpt/cors/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/cors/OWNERS
@@ -1,2 +1 @@
-# TEAM: blink-network-dev@chromium.org
-# COMPONENT: Blink>SecurityFeature>CORS
+
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/CSS2/DIR_METADATA
new file mode 100644
index 0000000..85377a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/CSS2/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/OWNERS b/third_party/blink/web_tests/external/wpt/css/CSS2/OWNERS
index ac6a3b0e..3cf6b795 100644
--- a/third_party/blink/web_tests/external/wpt/css/CSS2/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/CSS2/OWNERS
@@ -1,5 +1,2 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
-# WPT-NOTIFY: true
 kojii@chromium.org
 mstensho@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/DIR_METADATA
new file mode 100644
index 0000000..ea45d26
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>CSS"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/OWNERS b/third_party/blink/web_tests/external/wpt/css/OWNERS
index f025ce3..8b13789 100644
--- a/third_party/blink/web_tests/external/wpt/css/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/OWNERS
@@ -1,3 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>CSS
-# WPT-NOTIFY: true
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-align/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-align/DIR_METADATA
new file mode 100644
index 0000000..85377a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-align/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-align/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-align/OWNERS
index 01fa028..65e3dc2 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-align/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-align/OWNERS
@@ -1,4 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
-# WPT-NOTIFY: true
 jfernandez@igalia.com
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/DIR_METADATA
new file mode 100644
index 0000000..85377a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/OWNERS
index 9b2e5be..8b13789 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/OWNERS
@@ -1,3 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
-# WPT-NOTIFY: true
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html
index 7b27a040..136b704 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html
@@ -2,6 +2,7 @@
 <title>CSS Test: background-{attachment: local; clip: padding-box; color}; border-radius</title>
 <link rel="match" href="attachment-local-clipping-color-4-ref.html" />
 <meta name="flags" content="dom" />
+<meta name=fuzzy content="0-10;0-160">
 <link rel="author" title="Simon Sapin" href="http://exyr.org/about/" />
 <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-attachment" />
 <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html
index 376c9cd..ddd02dcf 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html
@@ -2,6 +2,7 @@
 <title>CSS Test: background-{attachment: local; clip: padding-box; image}; border-radius</title>
 <link rel="match" href="attachment-local-clipping-image-4-ref.html" />
 <meta name="flags" content="dom" />
+<meta name=fuzzy content="0-10;0-160">
 <link rel="author" title="Simon Sapin" href="http://exyr.org/about/" />
 <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-attachment" />
 <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-image-slice-005.htm b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-image-slice-005.htm
index 1a09732..e85c1a14 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-image-slice-005.htm
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-image-slice-005.htm
@@ -11,6 +11,7 @@
         <link rel="help" href="http://www.w3.org/TR/css3-background/#the-border-image-slice">
         <link rel="match" href="reference/border-image-slice-005-ref.html">
         <meta name="flags" content="">
+        <meta name="fuzzy" content="0-35;0-1250">
         <meta name="assert" content="This test checks that the border image is sliced into nine regions with inward offsets, '40%' from the top, '30%' from the right,'20%' from the bottom, and '10%' from the left edges of the image. Percentages are relative to the size of the image: the width of the image for the horizontal offsets, the height for vertical offsets.">
         <style>
             div
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-image-slice-007.htm b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-image-slice-007.htm
index e852867b..0243b8e 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-image-slice-007.htm
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-image-slice-007.htm
@@ -11,6 +11,7 @@
         <link rel="help" href="http://www.w3.org/TR/css3-background/#the-border-image-slice">
         <link rel="match" href="reference/border-image-slice-007-ref.html">
         <meta name="flags" content="">
+        <meta name="fuzzy" content="0-35;0-1250">
         <meta name="assert" content="This test checks that the 'fill' keyword, if present, causes the middle part of the border-image to be preserved.">
         <style>
             div
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-001.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-001.html
index 585b6267..008ca736 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-001.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-001.html
@@ -12,6 +12,8 @@
 
   <meta name="assert" content="Test passes if a box with border-radius that clips its content to a box edge clips to the border-radius curve in the corners.">
 
+  <meta name="fuzzy" content="0-1;0-1000">
+
   <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
   <style>
   body > div { float: left; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-002.htm b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-002.htm
index e81871e..759bd5c 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-002.htm
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/border-radius-clip-002.htm
@@ -7,6 +7,7 @@
         <link rel="match" href="reference/border-radius-clip-002-ref.htm">
         <link rel="help" href="https://www.w3.org/TR/css-backgrounds-3/#corner-clipping">
         <meta name="assert" content="Background is clipped to the curve of the content-box when 'background-clip: content-box'">
+        <meta name=fuzzy content="0-70;0-50">
         <style type="text/css">
             #test-base
             {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-break/DIR_METADATA
new file mode 100644
index 0000000..85377a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-break/OWNERS
index 198e62f..b28f7fb 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-break/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/OWNERS
@@ -1,4 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
-# WPT-NOTIFY: true
 mstensho@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/css-cascade/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-cascade/DIR_METADATA
new file mode 100644
index 0000000..a1cb39c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-cascade/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>CSS"
+}
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/css/css-cascade/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-cascade/OWNERS
index 73cfd0e..54387d3 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-cascade/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-cascade/OWNERS
@@ -1,5 +1,3 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>CSS
 futhark@chromium.org
 andruud@chromium.org
 ericwilligers@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-color/DIR_METADATA
new file mode 100644
index 0000000..a1cb39c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>CSS"
+}
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-color/OWNERS
index e282c4f..8b13789 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-color/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-color/OWNERS
@@ -1,2 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>CSS
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-conditional/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-conditional/DIR_METADATA
new file mode 100644
index 0000000..a1cb39c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-conditional/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>CSS"
+}
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/css/css-conditional/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-conditional/OWNERS
index 73cfd0e..54387d3 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-conditional/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-conditional/OWNERS
@@ -1,5 +1,3 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>CSS
 futhark@chromium.org
 andruud@chromium.org
 ericwilligers@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/DIR_METADATA b/third_party/blink/web_tests/external/wpt/css/css-contain/DIR_METADATA
new file mode 100644
index 0000000..85377a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/OWNERS b/third_party/blink/web_tests/external/wpt/css/css-contain/OWNERS
index 5f43f91..5e03d9bc 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-contain/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/css/css-contain/OWNERS
@@ -1,4 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
-# WPT-NOTIFY: true
 rego@igalia.com
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-background-image.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-background-image.html
index d294b66..866e945 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-background-image.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-background-image.html
@@ -4,7 +4,7 @@
 <link rel="author" title="Cameron McCormack" href="mailto:cam@mcc.id.au">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-background-image-ref.html">
-<meta name=fuzzy content="2;40">
+<meta name=fuzzy content="0-3;0-50">
 <style>
 div { width: 100px; height: 50px; background-image: url(support/exif-orientation-2-ur.jpg); }
 .no-orient { image-orientation: none; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-background-position.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-background-position.html
index cf4fcd4a..d9003572 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-background-position.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-background-position.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-background-position-ref.html">
-<meta name="fuzzy" content="10;100">
+<meta name="fuzzy" content="0-5;0-50">
 <style>
     .exif-2 {
         position: absolute;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-default.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-default.html
index 8a16ff7..7487e40 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-default.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-default.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-default-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-200">
 <style>
     body {
         overflow: hidden;
@@ -58,4 +58,4 @@
         <br>Undefined (invalid value)
     </div>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic1.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic1.html
index 69043ee..29355518 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic1.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic1.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-from-image-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-200">
 <style>
     body {
         overflow: hidden;}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic2.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic2.html
index b23ef385..053919d 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic2.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited-dynamic2.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-none-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-100">
 <style>
     body {
         overflow: hidden;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited.html
index 7caa91d..2db8881 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-composited.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-from-image-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-200">
 <style>
     body {
         overflow: hidden;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-content-images.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-content-images.html
index 5b89216..a5be8c22 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-content-images.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-content-images.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-from-image-content-images-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-250">
 <style>
     div.image {
         display: inline-block;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-dynamic1.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-dynamic1.html
index d1617a640..d5e00f2 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-dynamic1.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-dynamic1.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-from-image-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-200">
 <style>
     body {
         overflow: hidden;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-dynamic2.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-dynamic2.html
index 5a37a96..d70c5f6 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-dynamic2.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-dynamic2.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-none-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-100">
 <style>
     body {
         overflow: hidden;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-embedded-content.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-embedded-content.html
index d153935..a07db17a 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-embedded-content.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image-embedded-content.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-from-image-embedded-content-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-200">
 <style>
     iframe {
         display: inline-block;
@@ -43,4 +43,4 @@
     <br>
     <iframe src="support/exif-orientation-9-u.jpg" frameborder=0></iframe>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image.html
index 9e27bd79..14b929c 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-from-image.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-from-image-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-200">
 <style>
     body {
         overflow: hidden;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-list-style-image.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-list-style-image.html
index 926b3ab9..ac73562 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-list-style-image.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-list-style-image.html
@@ -4,7 +4,7 @@
 <link rel="author" title="Cameron McCormack" href="mailto:cam@mcc.id.au">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-list-style-image-ref.html">
-<meta name=fuzzy content="2;40">
+<meta name=fuzzy content="0-3;0-50">
 <style>
 ul { margin-left: 100px; list-style-image: url(support/exif-orientation-2-ur.jpg); }
 .no-orient { image-orientation: none; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-none-content-images.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-none-content-images.html
index da5b670..ed16575 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-none-content-images.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-none-content-images.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-none-content-images-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-150">
 <style>
     div.image {
         display: inline-block;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-none-image-document.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-none-image-document.html
index d333b5f..672ed58 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-none-image-document.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-none-image-document.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-none-image-document-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-200">
 <style>
     iframe {
         display: inline-block;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-none.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-none.html
index c903cee7..dfdfa01 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-none.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/image-orientation-none.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/image-orientation-none-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-100">
 <style>
     body {
         overflow: hidden;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/svg-image-orientation-none.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/svg-image-orientation-none.html
index a89de9df..f585cdb 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/svg-image-orientation-none.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/svg-image-orientation-none.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/svg-image-orientation-none-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-100">
 </head>
 <body>
     <svg style="width: 500px; height: 650px; image-orientation: none;">
@@ -21,4 +21,4 @@
         <image xlink:href="support/exif-orientation-9-u.jpg" X="0" Y="250"></image>
     </svg>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/svg-image-orientation.html b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/svg-image-orientation.html
index 9a411ae..758e900 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/svg-image-orientation.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/image-orientation/svg-image-orientation.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="reference/svg-image-orientation-ref.html">
-<meta name=fuzzy content="10;100">
+<meta name=fuzzy content="0-5;0-200">
 </head>
 <body>
     <svg style="width: 500px; height: 650px">
@@ -21,4 +21,4 @@
         <image xlink:href="support/exif-orientation-9-u.jpg" X="0" Y="250"></image>
     </svg>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text-decor/reference/text-decoration-thickness-single-notref.html b/third_party/blink/web_tests/external/wpt/css/css-text-decor/reference/text-decoration-thickness-single-notref.html
new file mode 100644
index 0000000..4a86eb1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-text-decor/reference/text-decoration-thickness-single-notref.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>Non-reference case for text-decoration-thickness</title>
+    <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+    <style>
+        div span {
+            font: 20px/1 Ahem;
+            padding-right: 1em;
+
+           text-decoration: underline;
+           text-decoration-thickness: 20px;
+        }
+    </style>
+</head>
+<body>
+    <p>Test passes if the underline thickness is 10px thick.</p>
+    <div><span>XXXX</span></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text-decor/text-decoration-thickness-single.html b/third_party/blink/web_tests/external/wpt/css/css-text-decor/text-decoration-thickness-single.html
new file mode 100644
index 0000000..b62a4280
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-text-decor/text-decoration-thickness-single.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>Test case for text-decoration-thickness</title>
+    <meta name="assert" content="text-decoration-thickness: only using the thickness property should change painted result">
+    <link rel="author" title="Dominik Röttsches" href="mailto:drott@chromium.org">
+    <link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-decoration-width-property">
+    <link rel="mismatch" href="reference/text-decoration-thickness-single-notref.html">
+    <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+    <style>
+        div span {
+            font: 20px/1 Ahem;
+            padding-right: 1em;
+
+            text-decoration: underline;
+            text-decoration-thickness: 10px;
+        }
+    </style>
+</head>
+<body>
+    <p>Test passes if the underline thickness is 10px thick.</p>
+    <div><span>XXXX</span></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transforms/perspective-transforms-equivalence.html b/third_party/blink/web_tests/external/wpt/css/css-transforms/perspective-transforms-equivalence.html
index 2f2ae21..818555f 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-transforms/perspective-transforms-equivalence.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-transforms/perspective-transforms-equivalence.html
@@ -9,7 +9,7 @@
 Perspective with different transforms can have small anti-aliasing
 pixel differences, so the test should fuzzy patch to the ref.
 -->
-<meta name="fuzzy" content="maxDifference=10;totalPixels=10">
+<meta name="fuzzy" content="maxDifference=0-10;totalPixels=0-10">
 <style>
 
 #container {
diff --git a/third_party/blink/web_tests/external/wpt/css/cssom/cssstyledeclaration-setter-logical-expected.txt b/third_party/blink/web_tests/external/wpt/css/cssom/cssstyledeclaration-setter-logical-expected.txt
deleted file mode 100644
index 34394c9..0000000
--- a/third_party/blink/web_tests/external/wpt/css/cssom/cssstyledeclaration-setter-logical-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL newly set declaration should be after all declarations in the same logical property group but have different logical kind assert_less_than: padding-top should be after padding-block-start after setting padding-top expected a number less than 0 but got 4
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/css/cssom/flex-serialization-expected.txt b/third_party/blink/web_tests/external/wpt/css/cssom/flex-serialization-expected.txt
new file mode 100644
index 0000000..895f6b9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/cssom/flex-serialization-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL CSSOM - Flex serialization assert_in_array: Single value flex with non-CSS-wide keyword should serialize correctly. value "flex: 0 1 0%;" not in array ["flex: 0px;", "flex: 0 1 0px;"]
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/cssom/flex-serialization.html b/third_party/blink/web_tests/external/wpt/css/cssom/flex-serialization.html
new file mode 100644
index 0000000..189481a3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/cssom/flex-serialization.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>CSSOM - Flex serialization</title>
+    <link rel="help" href="https://drafts.csswg.org/cssom/#serialize-a-css-value">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <style>
+        div { flex: initial; }
+        div { flex: 0; }
+        div { flex: initial; flex-basis: initial; flex-shrink: initial; }
+        div { flex: initial; flex-shrink: 0; }
+        div { flex: initial; flex-basis: 0; flex-shrink: 2;}
+    </style>
+
+    <script>
+    test(function () {
+        var styleSheet = document.styleSheets[0];
+
+        assert_equals(styleSheet.cssRules[0].style.cssText, "flex: initial;", "Single value flex with CSS-wide keyword should serialize correctly.");
+        assert_in_array(styleSheet.cssRules[1].style.cssText, ["flex: 0px;", "flex: 0 1 0px;"], "Single value flex with non-CSS-wide keyword should serialize correctly.");
+        assert_equals(styleSheet.cssRules[2].style.cssText, "flex: initial;", "Multiple values flex with CSS-wide keyword should serialize correctly.");
+        assert_equals(styleSheet.cssRules[3].style.cssText, "flex-grow: initial; flex-basis: initial; flex-shrink: 0;", "Multiple values flex with CSS-wide and non-CSS-wide keyword should serialize correctly.");
+        assert_equals(styleSheet.cssRules[4].style.cssText, "flex-grow: initial; flex-basis: 0px; flex-shrink: 2;", "Multiple values flex with CSS-wide and non-CSS-wide keyword should serialize correctly.");
+    });
+    </script>
+</head>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/device-memory/DIR_METADATA b/third_party/blink/web_tests/external/wpt/device-memory/DIR_METADATA
new file mode 100644
index 0000000..d2c2adf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/device-memory/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>PerformanceAPIs"
+}
+team_email: "speed-metrics-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/device-memory/OWNERS b/third_party/blink/web_tests/external/wpt/device-memory/OWNERS
index 5dd066f..144a1623 100644
--- a/third_party/blink/web_tests/external/wpt/device-memory/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/device-memory/OWNERS
@@ -1,4 +1,2 @@
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Blink>PerformanceAPIs
 fmeawad@chromium.org
 panicker@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/dom/DIR_METADATA b/third_party/blink/web_tests/external/wpt/dom/DIR_METADATA
new file mode 100644
index 0000000..21fc6f3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/dom/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>DOM"
+}
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/dom/OWNERS b/third_party/blink/web_tests/external/wpt/dom/OWNERS
deleted file mode 100644
index 422f9ab..0000000
--- a/third_party/blink/web_tests/external/wpt/dom/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-# TEAM: dom-dev@chromium.org
-# COMPONENT: Blink>DOM
diff --git a/third_party/blink/web_tests/external/wpt/dom/events/scrolling/DIR_METADATA b/third_party/blink/web_tests/external/wpt/dom/events/scrolling/DIR_METADATA
new file mode 100644
index 0000000..4a2c8aa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/dom/events/scrolling/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Input"
+}
+team_email: "input-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/dom/events/scrolling/OWNERS b/third_party/blink/web_tests/external/wpt/dom/events/scrolling/OWNERS
index e7e04516..9f9aedfa 100644
--- a/third_party/blink/web_tests/external/wpt/dom/events/scrolling/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/dom/events/scrolling/OWNERS
@@ -1,4 +1 @@
-# TEAM: input-dev@chromium.org
-# COMPONENT: Blink>Input
-# WPT-NOTIFY: true
 bokan@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/domparsing/DIR_METADATA b/third_party/blink/web_tests/external/wpt/domparsing/DIR_METADATA
new file mode 100644
index 0000000..3f57820b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/domparsing/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Blink>XML"
+}
diff --git a/third_party/blink/web_tests/external/wpt/domparsing/OWNERS b/third_party/blink/web_tests/external/wpt/domparsing/OWNERS
index 5c2ac18..300e435 100644
--- a/third_party/blink/web_tests/external/wpt/domparsing/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/domparsing/OWNERS
@@ -1,5 +1,4 @@
 # There's no real owners here. If you're familiar with the code please send
 # a CL to add yourself here.
-# COMPONENT: Blink>XML
 dcheng@chromium.org
 palmer@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/domxpath/DIR_METADATA b/third_party/blink/web_tests/external/wpt/domxpath/DIR_METADATA
new file mode 100644
index 0000000..3f57820b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/domxpath/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Blink>XML"
+}
diff --git a/third_party/blink/web_tests/external/wpt/domxpath/OWNERS b/third_party/blink/web_tests/external/wpt/domxpath/OWNERS
index 5c2ac18..300e435 100644
--- a/third_party/blink/web_tests/external/wpt/domxpath/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/domxpath/OWNERS
@@ -1,5 +1,4 @@
 # There's no real owners here. If you're familiar with the code please send
 # a CL to add yourself here.
-# COMPONENT: Blink>XML
 dcheng@chromium.org
 palmer@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/editing/DIR_METADATA b/third_party/blink/web_tests/external/wpt/editing/DIR_METADATA
new file mode 100644
index 0000000..4feb00c40
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/editing/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Editing"
+}
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/editing/OWNERS b/third_party/blink/web_tests/external/wpt/editing/OWNERS
deleted file mode 100644
index 42fc5a2..0000000
--- a/third_party/blink/web_tests/external/wpt/editing/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Editing
diff --git a/third_party/blink/web_tests/external/wpt/element-timing/DIR_METADATA b/third_party/blink/web_tests/external/wpt/element-timing/DIR_METADATA
new file mode 100644
index 0000000..45b72a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/element-timing/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>PerformanceAPIs"
+}
+team_email: "speed-metrics-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/element-timing/OWNERS b/third_party/blink/web_tests/external/wpt/element-timing/OWNERS
index 40d288d..9e3a2546 100644
--- a/third_party/blink/web_tests/external/wpt/element-timing/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/element-timing/OWNERS
@@ -1,4 +1 @@
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Blink>PerformanceAPIs
-# WPT-NOTIFY: true
 npm@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/encoding/DIR_METADATA b/third_party/blink/web_tests/external/wpt/encoding/DIR_METADATA
new file mode 100644
index 0000000..c8c8e40
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>TextEncoding"
+}
+team_email: "text-encoding-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/encoding/OWNERS b/third_party/blink/web_tests/external/wpt/encoding/OWNERS
index 0aa6981..82c8165 100644
--- a/third_party/blink/web_tests/external/wpt/encoding/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/encoding/OWNERS
@@ -1,3 +1 @@
-# TEAM: text-encoding-dev@chromium.org
-# COMPONENT: Blink>TextEncoding
 jsbell@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/encrypted-media/DIR_METADATA b/third_party/blink/web_tests/external/wpt/encrypted-media/DIR_METADATA
new file mode 100644
index 0000000..a3f1e7a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encrypted-media/DIR_METADATA
@@ -0,0 +1,6 @@
+monorail {
+  component: "Internals>Media>Encrypted"
+}
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/encrypted-media/OWNERS b/third_party/blink/web_tests/external/wpt/encrypted-media/OWNERS
index 96cb602..72726ec 100644
--- a/third_party/blink/web_tests/external/wpt/encrypted-media/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/encrypted-media/OWNERS
@@ -1,3 +1 @@
-# COMPONENT: Internals>Media>Encrypted
-# WPT-NOTIFY: true
 jrummell@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/entries-api/DIR_METADATA b/third_party/blink/web_tests/external/wpt/entries-api/DIR_METADATA
new file mode 100644
index 0000000..12cf0e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/entries-api/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Storage>FileSystem"
+}
+team_email: "storage-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/entries-api/OWNERS b/third_party/blink/web_tests/external/wpt/entries-api/OWNERS
index 58d13a3..67672b0 100644
--- a/third_party/blink/web_tests/external/wpt/entries-api/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/entries-api/OWNERS
@@ -1,4 +1 @@
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Blink>Storage>FileSystem
-# WPT-NOTIFY: true
 file://third_party/blink/renderer/modules/filesystem/OWNERS
diff --git a/third_party/blink/web_tests/external/wpt/event-timing/DIR_METADATA b/third_party/blink/web_tests/external/wpt/event-timing/DIR_METADATA
new file mode 100644
index 0000000..45b72a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/event-timing/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>PerformanceAPIs"
+}
+team_email: "speed-metrics-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/event-timing/OWNERS b/third_party/blink/web_tests/external/wpt/event-timing/OWNERS
index 40d288d..9e3a2546 100644
--- a/third_party/blink/web_tests/external/wpt/event-timing/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/event-timing/OWNERS
@@ -1,4 +1 @@
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Blink>PerformanceAPIs
-# WPT-NOTIFY: true
 npm@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/eventsource/DIR_METADATA b/third_party/blink/web_tests/external/wpt/eventsource/DIR_METADATA
new file mode 100644
index 0000000..72f55a0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/eventsource/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Network"
+}
+team_email: "blink-network-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/eventsource/OWNERS b/third_party/blink/web_tests/external/wpt/eventsource/OWNERS
deleted file mode 100644
index 8263c35..0000000
--- a/third_party/blink/web_tests/external/wpt/eventsource/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-# TEAM: blink-network-dev@chromium.org
-# COMPONENT: Blink>Network
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/DIR_METADATA b/third_party/blink/web_tests/external/wpt/feature-policy/DIR_METADATA
new file mode 100644
index 0000000..fcc5bce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>FeaturePolicy"
+}
+team_email: "feature-control@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/OWNERS b/third_party/blink/web_tests/external/wpt/feature-policy/OWNERS
index 6385d12..7f44d1b 100644
--- a/third_party/blink/web_tests/external/wpt/feature-policy/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/feature-policy/OWNERS
@@ -1,4 +1 @@
-# TEAM: feature-control@chromium.org
-# COMPONENT: Blink>FeaturePolicy
-# WPT-NOTIFY: true
 iclelland@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/feature-propagation-to-auxiliary-context.html b/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/feature-propagation-to-auxiliary-context.html
deleted file mode 100644
index 86cdcb3..0000000
--- a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/feature-propagation-to-auxiliary-context.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html>
-<head>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-</head>
-<body>
-<div id="iframe-embedder"></div>
-<script src="./resources/helper.js"></script>
-<script>
-'use strict';
-
-// TODO(ekaramad): Add cross-origin examples both for the <iframe> and the
-// opened window.
-const iframe_src = "/feature-policy/feature-policy-for-sandbox/resources/window_opener.html";
-const window_url_main = "/feature-policy/feature-policy-for-sandbox/resources/opened_window.html";
-
-promise_test( async () => {
-  const iframe = await add_iframe({
-    src: iframe_src,
-    allow: features_that_propagate.map(feature => `${feature} 'none'`).join(", ")
-  });
-
-  iframe.contentWindow.postMessage(
-    {type: "features", features: features_that_propagate}, "*");
-  const iframe_states = await feature_update();
-  for (const [feature, state] of iframe_states)
-    assert_false(state, `'${feature}' is not disabled in <iframe>.'`);
-
-  iframe.contentWindow.postMessage({
-      type: "open_window",
-      url: `${window_url_main}?${features_that_propagate.join("&")}`
-  }, "*");
-  const window_states = await feature_update();
-  for (const [feature, state] of iframe_states)
-    assert_false(state, `'${feature}' is not disabled in new window.`);
-
-  const did_close = await close_aux_window(iframe);
-  assert_true(did_close);
-  iframe.parentElement.removeChild(iframe);
-}, "Verify feature policies are inherited by the auxiliary browsing context " +
-   "if opened from a non-sandboxed same-origin <iframe>.");
-
-promise_test( async () => {
-  const iframe = await add_iframe({
-    src: iframe_src,
-    allow: features_that_propagate.map(feature => `${feature} 'none'`).join(", "),
-    sandbox: "allow-scripts allow-popups allow-popups-to-escape-sandbox"
-  });
-
-  iframe.contentWindow.postMessage(
-    {type: "features", features: features_that_propagate}, "*");
-  const iframe_states = await feature_update();
-  for (const [feature, state] of iframe_states)
-    assert_false(state, `'${feature}' is not disabled in <iframe>.'`);
-
-  iframe.contentWindow.postMessage({
-      type: "open_window",
-      url: `${window_url_main}?${features_that_propagate.join("&")}`
-  }, "*");
-  const window_states = await feature_update();
-  for (const [feature, state] of window_states)
-    assert_true(state, `'${feature}' is disabled in new window.`);
-
-  const did_close = await close_aux_window(iframe);
-  assert_true(did_close);
-  iframe.parentElement.removeChild(iframe);
-}, "Verify feature policies are NOT inherited by the auxiliary browsing " +
-  "context if opened from a sandboxed same-origin <iframe> which allows " +
-  "popups to escape sandbox.");
-</script>
-</body>
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/helper.js b/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/helper.js
deleted file mode 100644
index 4c55352..0000000
--- a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/helper.js
+++ /dev/null
@@ -1,118 +0,0 @@
-// The list of all feature policies including the sandbox policies.
-const all_features = document.featurePolicy.allowedFeatures();
-
-// 'popups' is nonsensical in this test and it is not possible to test 'scripts'
-// within this test model.
-const ignore_features_for_auxilary_context = ["popups", "scripts"];
-
-// Feature-policies that represent specific sandbox flags.
-const sandbox_features = [
-    "downloads", "forms", "modals", "orientation-lock",
-    "pointer-lock", "popups", "presentation", "scripts", "top-navigation"];
-
-// TODO(ekaramad): Figure out different inheritance requirements for different
-// policies.
-// Features which will be tested for propagation to auxiliary contexts.
-const features_that_propagate = all_features.filter(
-    (feature) => !ignore_features_for_auxilary_context.includes(feature));
-
-var last_feature_message = null;
-var on_new_feature_callback = null;
-var on_close_window_callback = null;
-
-function add_iframe(options) {
-  assert_true("src" in options, "invalid options");
-  var iframe = document.createElement("iframe");
-  iframe.src = options.src;
-  if ("allow" in options)
-    iframe.setAttribute("allow", options.allow);
-  if ("sandbox" in options)
-    iframe.setAttribute("sandbox", options.sandbox);
-  return new Promise( (r) => {
-    iframe.addEventListener("load", () => r(iframe));
-    document.getElementById("iframe-embedder").appendChild(iframe);
-  });
-}
-
-// Resolves after |c| animation frames.
-function wait_for_raf_count(c) {
-  let count = c;
-  let callback = null;
-  function on_raf() {
-    if (--count === 0) {
-      callback();
-      return;
-    }
-    window.requestAnimationFrame(on_raf);
-  }
-  return new Promise( r => {
-    callback = r;
-    window.requestAnimationFrame(on_raf);
-  });
-}
-
-// Returns a promise which is resolved with the next/already received message
-// with features update for |features|. The resolved value is the state of the
-// features |features|. If |optional_timeout| is provided, after the given delay
-// (in terms of rafs) the promise is resolved with false.
-function feature_update(optional_timeout_rafs) {
-  function reset_for_next_update() {
-    return new Promise((r) => {
-      const states = last_feature_message.states;
-      last_feature_message = null;
-      r(states);
-    });
-  }
-
-  if (last_feature_message)
-    return reset_for_next_update();
-
-  if (optional_timeout_rafs) {
-    wait_for_raf_count(optional_timeout_rafs).then (() => {
-      last_feature_message = {states: []};
-      on_new_feature_callback();
-    });
-  }
-
-  return new Promise((r) => on_new_feature_callback = r)
-            .then(reset_for_next_update);
-}
-
-function close_aux_window(iframe) {
-  return new Promise( (r) => {
-    on_close_window_callback = r;
-    iframe.contentWindow.postMessage({type: "close_window"}, "*");
-  });
-}
-
-function on_message(e) {
-  var msg = e.data;
-  assert_true("type" in msg);
-  switch (msg.type) {
-    case "features":
-      on_feature_msg(msg);
-      break;
-    case "close_window":
-      on_close_window_msg(msg);
-      break;
-  }
-}
-
-function on_feature_msg(msg) {
-  assert_true("states" in msg);
-  last_feature_message = msg;
-  if (on_new_feature_callback) {
-    on_new_feature_callback();
-    on_new_feature_callback = null;
-  }
-}
-
-
-function on_close_window_msg(msg) {
-  if (on_close_window_callback) {
-    on_close_window_callback(msg.result);
-    on_close_window_callback = null;
-  }
-}
-
-window.addEventListener("message", on_message);
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/opened_window.html b/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/opened_window.html
deleted file mode 100644
index 53ffbac..0000000
--- a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/opened_window.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<!doctype html>
-<title>This page verifies the status of the feature provided in search query.</title>
-<body>
-<script async src="/feature-policy/feature-policy-for-sandbox/resources/opened_window.js"></script>
-</body>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/opened_window.js b/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/opened_window.js
deleted file mode 100644
index d69c75c..0000000
--- a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/opened_window.js
+++ /dev/null
@@ -1,9 +0,0 @@
-const features = window.location.search.substr(1).split("&");
-const states = features
-  .map(feature => [feature, document.featurePolicy.allowsFeature(feature)]);
-
-// TODO(ekaramad): We might at some point choose a different propagation
-// strategy with rel=noopener. This test should adapt accordingly (perhaps use
-// broadcast channels).
-window.opener.parent.postMessage(
-    {type: "features", states: states}, "*");
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/window_opener.html b/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/window_opener.html
deleted file mode 100644
index 8124ab6..0000000
--- a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/window_opener.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<!doctype html>
-<title>Helper document for cross-domain messaging.</title>
-<body>
-<script async src="/feature-policy/feature-policy-for-sandbox/resources/window_opener.js"></script>
-</body>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/window_opener.js b/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/window_opener.js
deleted file mode 100644
index 6788c25..0000000
--- a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/resources/window_opener.js
+++ /dev/null
@@ -1,22 +0,0 @@
-var auxiliary_context = null;
-window.addEventListener("message", (e) => {
-  var msg = e.data;
-  switch (msg.type) {
-    case "features":
-      e.source.postMessage({
-        type: "features",
-        states:
-          msg.features
-          .map(feature => [feature, document.featurePolicy.allowsFeature(feature)])
-      }, "*");
-      break;
-    case "open_window":
-      auxiliary_context = window.open(msg.url);
-      break;
-    case "close_window":
-      if (auxiliary_context)
-        auxiliary_context.close();
-      e.source.postMessage(
-          {type: "close_window", result: auxiliary_context != null}, "*");
-  }
-});
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/sandbox-policies-in-allow-attribute.html b/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/sandbox-policies-in-allow-attribute.html
deleted file mode 100644
index c9e2d71..0000000
--- a/third_party/blink/web_tests/external/wpt/feature-policy/feature-policy-for-sandbox/sandbox-policies-in-allow-attribute.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html>
-<head>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-</head>
-<body>
-<div id="iframe-embedder"></div>
-<script src="./resources/helper.js"></script>
-<script>
-'use strict';
-
-const iframe_src = "/feature-policy/feature-policy-for-sandbox/resources/window_opener.html";
-
-promise_test( async () => {
-  const iframe = await add_iframe({
-    src: iframe_src,
-    allow: sandbox_features.map(feature => `${feature} *`).join(", "),
-    sandbox: ""
-  });
-
-  iframe.contentWindow.postMessage({type: "features", features: sandbox_features}, "*");
-  const iframe_states = await feature_update();
-  for (const [feature, state] of iframe_states)
-    assert_true(state, `'${feature}' should not be disabled in <iframe>.'`);
-
-  iframe.parentElement.removeChild(iframe);
-}, "Verify that when a sandbox related feature is enabled in 'allow' then " +
-   " the feature will be enabled regardless of sandbox attribute's value.");
-
-promise_test( async () => {
-  const non_script_sandbox_features =
-    sandbox_features.filter(feature => feature !== "scripts");
-  const sandbox_flags =
-    sandbox_features.map(feature => `allow-${feature}`).join(" ");
-  const allow_attribute =
-    non_script_sandbox_features.map(feature => `${feature} 'none'`).join(", ");
-
-  const iframe = await add_iframe(
-      {src: iframe_src, allow: allow_attribute, sandbox: sandbox_flags});
-
-  iframe.contentWindow.postMessage(
-    {type: "features", features: non_script_sandbox_features}, "*");
-  const iframe_states = await feature_update();
-  for (const [feature, state] of iframe_states)
-    assert_false(state, `'${feature}' should be disabled in <iframe>.'`);
-
-  iframe.parentElement.removeChild(iframe);
-}, "Verify that when a sandbox related feature (except scripts) is disabled in 'allow' then " +
-   " the feature will be disabled regardless of sandbox attribute's value.");
-
-promise_test( async () => {
-  const iframe = await add_iframe(
-    {src: iframe_src, allow: "scripts 'none'", sandbox: "allow-scripts"});
-
-  iframe.contentWindow.postMessage(
-    {type: "features", features: ['scripts']}, "*");
-  const iframe_states = await feature_update(10);
-
-  assert_equals(iframe_states.length, 0);
-  iframe.parentElement.removeChild(iframe);
-}, "Verify that when scripts is disabled in 'allow' then " +
-  " the feature will be disabled regardless of sandbox attribute's value.");
-</script>
-</body>
diff --git a/third_party/blink/web_tests/external/wpt/fetch/DIR_METADATA b/third_party/blink/web_tests/external/wpt/fetch/DIR_METADATA
new file mode 100644
index 0000000..331a6d1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/fetch/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Network>FetchAPI"
+}
+team_email: "blink-network-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/fetch/OWNERS b/third_party/blink/web_tests/external/wpt/fetch/OWNERS
index d6dc1ce4..0e9d45b 100644
--- a/third_party/blink/web_tests/external/wpt/fetch/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/fetch/OWNERS
@@ -1,5 +1,3 @@
-# TEAM: blink-network-dev@chromium.org
-# COMPONENT: Blink>Network>FetchAPI
 yhirano@chromium.org
 mkwst@chromium.org
 japhet@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/fetch/corb/DIR_METADATA b/third_party/blink/web_tests/external/wpt/fetch/corb/DIR_METADATA
new file mode 100644
index 0000000..2c58cd8d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/fetch/corb/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Internals>Sandbox>SiteIsolation"
+}
+team_email: "site-isolation-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/fetch/corb/OWNERS b/third_party/blink/web_tests/external/wpt/fetch/corb/OWNERS
index 42d5155..107fab74 100644
--- a/third_party/blink/web_tests/external/wpt/fetch/corb/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/fetch/corb/OWNERS
@@ -1,5 +1,2 @@
-# COMPONENT: Internals>Sandbox>SiteIsolation
-# TEAM: site-isolation-dev@chromium.org
-# WPT-NOTIFY: true
 creis@chromium.org
 lukasza@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/fetch/cross-origin-resource-policy/DIR_METADATA b/third_party/blink/web_tests/external/wpt/fetch/cross-origin-resource-policy/DIR_METADATA
new file mode 100644
index 0000000..2c58cd8d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/fetch/cross-origin-resource-policy/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Internals>Sandbox>SiteIsolation"
+}
+team_email: "site-isolation-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/fetch/cross-origin-resource-policy/OWNERS b/third_party/blink/web_tests/external/wpt/fetch/cross-origin-resource-policy/OWNERS
index 42d5155..107fab74 100644
--- a/third_party/blink/web_tests/external/wpt/fetch/cross-origin-resource-policy/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/fetch/cross-origin-resource-policy/OWNERS
@@ -1,5 +1,2 @@
-# COMPONENT: Internals>Sandbox>SiteIsolation
-# TEAM: site-isolation-dev@chromium.org
-# WPT-NOTIFY: true
 creis@chromium.org
 lukasza@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/font-access/DIR_METADATA b/third_party/blink/web_tests/external/wpt/font-access/DIR_METADATA
new file mode 100644
index 0000000..d33d12b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/font-access/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Storage>FontAccess"
+}
+team_email: "storage-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/font-access/OWNERS b/third_party/blink/web_tests/external/wpt/font-access/OWNERS
index 2adf71c..1390e10b 100644
--- a/third_party/blink/web_tests/external/wpt/font-access/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/font-access/OWNERS
@@ -1,5 +1,2 @@
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Blink>Storage>FontAccess
-# WPT-NOTIFY: true
 oyiptong@chromium.org
 jsbell@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/fullscreen/DIR_METADATA b/third_party/blink/web_tests/external/wpt/fullscreen/DIR_METADATA
new file mode 100644
index 0000000..c248719
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/fullscreen/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Fullscreen"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/fullscreen/OWNERS b/third_party/blink/web_tests/external/wpt/fullscreen/OWNERS
index 8a171136..212e449 100644
--- a/third_party/blink/web_tests/external/wpt/fullscreen/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/fullscreen/OWNERS
@@ -1,4 +1 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Fullscreen
-# WPT-NOTIFY: true
 foolip@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/gamepad/DIR_METADATA b/third_party/blink/web_tests/external/wpt/gamepad/DIR_METADATA
new file mode 100644
index 0000000..0803321
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/gamepad/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>GamepadAPI"
+}
+team_email: "device-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/gamepad/OWNERS b/third_party/blink/web_tests/external/wpt/gamepad/OWNERS
index b1d9945..2cf1435 100644
--- a/third_party/blink/web_tests/external/wpt/gamepad/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/gamepad/OWNERS
@@ -1,3 +1 @@
-# TEAM: device-dev@chromium.org
-# COMPONENT: Blink>GamepadAPI
 bajones@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/generic-sensor/DIR_METADATA b/third_party/blink/web_tests/external/wpt/generic-sensor/DIR_METADATA
new file mode 100644
index 0000000..fc620d5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/generic-sensor/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Sensor"
+}
+team_email: "device-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/generic-sensor/OWNERS b/third_party/blink/web_tests/external/wpt/generic-sensor/OWNERS
index c394fdb..827d3b75 100644
--- a/third_party/blink/web_tests/external/wpt/generic-sensor/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/generic-sensor/OWNERS
@@ -1,5 +1,3 @@
-# TEAM: device-dev@chromium.org
-# COMPONENT: Blink>Sensor
 raphael.kubo.da.costa@intel.com
 rijubrata.bhaumik@intel.com
 timvolodine@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/geolocation-API/DIR_METADATA b/third_party/blink/web_tests/external/wpt/geolocation-API/DIR_METADATA
new file mode 100644
index 0000000..af86708
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/geolocation-API/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Geolocation"
+}
+team_email: "device-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/geolocation-API/OWNERS b/third_party/blink/web_tests/external/wpt/geolocation-API/OWNERS
index 61e5876..5c49de2 100644
--- a/third_party/blink/web_tests/external/wpt/geolocation-API/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/geolocation-API/OWNERS
@@ -1,5 +1,3 @@
-# TEAM: device-dev@chromium.org
-# COMPONENT: Blink>Geolocation
 
 # Original (legacy) owner.
 mcasas@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/hr-time/DIR_METADATA b/third_party/blink/web_tests/external/wpt/hr-time/DIR_METADATA
new file mode 100644
index 0000000..45b72a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/hr-time/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>PerformanceAPIs"
+}
+team_email: "speed-metrics-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/hr-time/OWNERS b/third_party/blink/web_tests/external/wpt/hr-time/OWNERS
deleted file mode 100644
index f4011d2b..0000000
--- a/third_party/blink/web_tests/external/wpt/hr-time/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Blink>PerformanceAPIs
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/html/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/DIR_METADATA
new file mode 100644
index 0000000..bdebb86
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>HTML"
+}
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/OWNERS b/third_party/blink/web_tests/external/wpt/html/OWNERS
deleted file mode 100644
index 472b0c7..0000000
--- a/third_party/blink/web_tests/external/wpt/html/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-# TEAM: dom-dev@chromium.org
-# COMPONENT: Blink>HTML
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/canvas/DIR_METADATA
new file mode 100644
index 0000000..866f703
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Canvas"
+}
+team_email: "paint-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/OWNERS b/third_party/blink/web_tests/external/wpt/html/canvas/OWNERS
deleted file mode 100644
index 3b83b67..0000000
--- a/third_party/blink/web_tests/external/wpt/html/canvas/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# TEAM: paint-dev@chromium.org
-# COMPONENT: Blink>Canvas
-# WPT-NOTIFY: true
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/image-orientation/drawImage-with-src-rect.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/image-orientation/drawImage-with-src-rect.tentative.html
index d9d5646..d889e3930 100644
--- a/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/image-orientation/drawImage-with-src-rect.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/image-orientation/drawImage-with-src-rect.tentative.html
@@ -6,7 +6,7 @@
 <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
 <link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
 <link rel="match" href="drawImage-with-src-rect-ref.html">
-<meta name=fuzzy content="30;100">
+<meta name=fuzzy content="0-3;0-200">
   <script>
     window.onload = () => {
       const img = document.getElementById('img-element');
@@ -22,4 +22,4 @@
   <img id="img-element" src="/css/css-images/image-orientation/support/exif-orientation-3-lr.jpg">
   <canvas id="bitmap-canvas"></canvas>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/documents/dom-tree-accessors/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/dom/documents/dom-tree-accessors/DIR_METADATA
new file mode 100644
index 0000000..1510459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/dom/documents/dom-tree-accessors/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/documents/dom-tree-accessors/OWNERS b/third_party/blink/web_tests/external/wpt/html/dom/documents/dom-tree-accessors/OWNERS
deleted file mode 100644
index 422c227..0000000
--- a/third_party/blink/web_tests/external/wpt/html/dom/documents/dom-tree-accessors/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: dom-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/elements/elements-in-the-dom/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/dom/elements/elements-in-the-dom/DIR_METADATA
new file mode 100644
index 0000000..1510459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/dom/elements/elements-in-the-dom/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/elements/elements-in-the-dom/OWNERS b/third_party/blink/web_tests/external/wpt/html/dom/elements/elements-in-the-dom/OWNERS
deleted file mode 100644
index 422c227..0000000
--- a/third_party/blink/web_tests/external/wpt/html/dom/elements/elements-in-the-dom/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: dom-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/elements/global-attributes/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/dom/elements/global-attributes/DIR_METADATA
new file mode 100644
index 0000000..1510459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/dom/elements/global-attributes/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/elements/global-attributes/OWNERS b/third_party/blink/web_tests/external/wpt/html/dom/elements/global-attributes/OWNERS
deleted file mode 100644
index 422c227..0000000
--- a/third_party/blink/web_tests/external/wpt/html/dom/elements/global-attributes/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: dom-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/editing/activation/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/editing/activation/DIR_METADATA
new file mode 100644
index 0000000..52a1730c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/editing/activation/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/editing/activation/OWNERS b/third_party/blink/web_tests/external/wpt/html/editing/activation/OWNERS
deleted file mode 100644
index 261aa8c..0000000
--- a/third_party/blink/web_tests/external/wpt/html/editing/activation/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: layout-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/editing/editing-0/contenteditable/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/editing/editing-0/contenteditable/DIR_METADATA
new file mode 100644
index 0000000..52a1730c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/editing/editing-0/contenteditable/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/editing/editing-0/contenteditable/OWNERS b/third_party/blink/web_tests/external/wpt/html/editing/editing-0/contenteditable/OWNERS
deleted file mode 100644
index 261aa8c..0000000
--- a/third_party/blink/web_tests/external/wpt/html/editing/editing-0/contenteditable/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: layout-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/DIR_METADATA
new file mode 100644
index 0000000..52a1730c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/OWNERS b/third_party/blink/web_tests/external/wpt/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/OWNERS
deleted file mode 100644
index 261aa8c..0000000
--- a/third_party/blink/web_tests/external/wpt/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: layout-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/DIR_METADATA
new file mode 100644
index 0000000..52a1730c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/OWNERS b/third_party/blink/web_tests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/OWNERS
deleted file mode 100644
index 261aa8c..0000000
--- a/third_party/blink/web_tests/external/wpt/html/editing/editing-0/spelling-and-grammar-checking/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: layout-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/infrastructure/common-dom-interfaces/collections/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/infrastructure/common-dom-interfaces/collections/DIR_METADATA
new file mode 100644
index 0000000..1510459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/infrastructure/common-dom-interfaces/collections/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/infrastructure/common-dom-interfaces/collections/OWNERS b/third_party/blink/web_tests/external/wpt/html/infrastructure/common-dom-interfaces/collections/OWNERS
deleted file mode 100644
index 422c227..0000000
--- a/third_party/blink/web_tests/external/wpt/html/infrastructure/common-dom-interfaces/collections/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: dom-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/infrastructure/conformance-requirements/extensibility/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/infrastructure/conformance-requirements/extensibility/DIR_METADATA
new file mode 100644
index 0000000..1510459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/infrastructure/conformance-requirements/extensibility/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/infrastructure/conformance-requirements/extensibility/OWNERS b/third_party/blink/web_tests/external/wpt/html/infrastructure/conformance-requirements/extensibility/OWNERS
deleted file mode 100644
index 422c227..0000000
--- a/third_party/blink/web_tests/external/wpt/html/infrastructure/conformance-requirements/extensibility/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: dom-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/infrastructure/terminology/plugins/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/infrastructure/terminology/plugins/DIR_METADATA
new file mode 100644
index 0000000..1510459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/infrastructure/terminology/plugins/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/infrastructure/terminology/plugins/OWNERS b/third_party/blink/web_tests/external/wpt/html/infrastructure/terminology/plugins/OWNERS
deleted file mode 100644
index 422c227..0000000
--- a/third_party/blink/web_tests/external/wpt/html/infrastructure/terminology/plugins/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: dom-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/interaction/focus/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/interaction/focus/DIR_METADATA
new file mode 100644
index 0000000..4a2c8aa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/interaction/focus/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Input"
+}
+team_email: "input-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/html/interaction/focus/OWNERS b/third_party/blink/web_tests/external/wpt/html/interaction/focus/OWNERS
index f17b123..35449ec5 100644
--- a/third_party/blink/web_tests/external/wpt/html/interaction/focus/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/html/interaction/focus/OWNERS
@@ -1,4 +1 @@
-# TEAM: input-dev@chromium.org
-# COMPONENT: Blink>Input
-# WPT-NOTIFY: true
 mustaq@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/obsolete/requirements-for-implementations/other-elements-attributes-and-apis/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/obsolete/requirements-for-implementations/other-elements-attributes-and-apis/DIR_METADATA
new file mode 100644
index 0000000..1510459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/obsolete/requirements-for-implementations/other-elements-attributes-and-apis/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/obsolete/requirements-for-implementations/other-elements-attributes-and-apis/OWNERS b/third_party/blink/web_tests/external/wpt/html/obsolete/requirements-for-implementations/other-elements-attributes-and-apis/OWNERS
deleted file mode 100644
index 422c227..0000000
--- a/third_party/blink/web_tests/external/wpt/html/obsolete/requirements-for-implementations/other-elements-attributes-and-apis/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: dom-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/obsolete/requirements-for-implementations/the-marquee-element-0/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/obsolete/requirements-for-implementations/the-marquee-element-0/DIR_METADATA
new file mode 100644
index 0000000..1510459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/obsolete/requirements-for-implementations/the-marquee-element-0/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/obsolete/requirements-for-implementations/the-marquee-element-0/OWNERS b/third_party/blink/web_tests/external/wpt/html/obsolete/requirements-for-implementations/the-marquee-element-0/OWNERS
deleted file mode 100644
index 422c227..0000000
--- a/third_party/blink/web_tests/external/wpt/html/obsolete/requirements-for-implementations/the-marquee-element-0/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: dom-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-input-element-as-a-text-entry-widget/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-input-element-as-a-text-entry-widget/DIR_METADATA
new file mode 100644
index 0000000..1510459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-input-element-as-a-text-entry-widget/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-input-element-as-a-text-entry-widget/OWNERS b/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-input-element-as-a-text-entry-widget/OWNERS
deleted file mode 100644
index 422c227..0000000
--- a/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-input-element-as-a-text-entry-widget/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: dom-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-select-element-0/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-select-element-0/DIR_METADATA
new file mode 100644
index 0000000..1510459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-select-element-0/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-select-element-0/OWNERS b/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-select-element-0/OWNERS
deleted file mode 100644
index 422c227..0000000
--- a/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-select-element-0/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: dom-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-textarea-element-0/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-textarea-element-0/DIR_METADATA
new file mode 100644
index 0000000..1510459
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-textarea-element-0/DIR_METADATA
@@ -0,0 +1 @@
+team_email: "dom-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-textarea-element-0/OWNERS b/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-textarea-element-0/OWNERS
deleted file mode 100644
index 422c227..0000000
--- a/third_party/blink/web_tests/external/wpt/html/rendering/bindings/the-textarea-element-0/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# TEAM: dom-dev@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/flow-content-0/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/flow-content-0/DIR_METADATA
new file mode 100644
index 0000000..85377a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/flow-content-0/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/flow-content-0/OWNERS b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/flow-content-0/OWNERS
deleted file mode 100644
index 9b2e5be..0000000
--- a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/flow-content-0/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/lists/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/lists/DIR_METADATA
new file mode 100644
index 0000000..85377a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/lists/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/lists/OWNERS b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/lists/OWNERS
deleted file mode 100644
index 9b2e5be..0000000
--- a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/lists/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/phrasing-content-0/font-element-text-decoration-color/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/phrasing-content-0/font-element-text-decoration-color/DIR_METADATA
new file mode 100644
index 0000000..85377a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/phrasing-content-0/font-element-text-decoration-color/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/phrasing-content-0/font-element-text-decoration-color/OWNERS b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/phrasing-content-0/font-element-text-decoration-color/OWNERS
deleted file mode 100644
index 9b2e5be..0000000
--- a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/phrasing-content-0/font-element-text-decoration-color/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/tables/DIR_METADATA b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/tables/DIR_METADATA
new file mode 100644
index 0000000..bd468f81a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/tables/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Layout>Table"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/tables/OWNERS b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/tables/OWNERS
deleted file mode 100644
index 77c2a59a..0000000
--- a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/tables/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>Layout>Table
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/keyboard-map/DIR_METADATA b/third_party/blink/web_tests/external/wpt/keyboard-map/DIR_METADATA
new file mode 100644
index 0000000..06c05e63
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/keyboard-map/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Input"
+}
+team_email: "input-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/keyboard-map/OWNERS b/third_party/blink/web_tests/external/wpt/keyboard-map/OWNERS
index 25f44dc..5112e6f 100644
--- a/third_party/blink/web_tests/external/wpt/keyboard-map/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/keyboard-map/OWNERS
@@ -1,3 +1 @@
-# TEAM: input-dev@chromium.org
-# COMPONENT: Blink>Input
 garykac@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/largest-contentful-paint/DIR_METADATA b/third_party/blink/web_tests/external/wpt/largest-contentful-paint/DIR_METADATA
new file mode 100644
index 0000000..45b72a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/largest-contentful-paint/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>PerformanceAPIs"
+}
+team_email: "speed-metrics-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/largest-contentful-paint/OWNERS b/third_party/blink/web_tests/external/wpt/largest-contentful-paint/OWNERS
index 40d288d..9e3a2546 100644
--- a/third_party/blink/web_tests/external/wpt/largest-contentful-paint/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/largest-contentful-paint/OWNERS
@@ -1,4 +1 @@
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Blink>PerformanceAPIs
-# WPT-NOTIFY: true
 npm@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/layout-instability/DIR_METADATA b/third_party/blink/web_tests/external/wpt/layout-instability/DIR_METADATA
new file mode 100644
index 0000000..45b72a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/layout-instability/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>PerformanceAPIs"
+}
+team_email: "speed-metrics-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/layout-instability/OWNERS b/third_party/blink/web_tests/external/wpt/layout-instability/OWNERS
index 226745ff..c6ee3b6 100644
--- a/third_party/blink/web_tests/external/wpt/layout-instability/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/layout-instability/OWNERS
@@ -1,4 +1 @@
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Blink>PerformanceAPIs
-# WPT-NOTIFY: true
 skobes@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/lint.ignore b/third_party/blink/web_tests/external/wpt/lint.ignore
index bfbb2965..86c71544 100644
--- a/third_party/blink/web_tests/external/wpt/lint.ignore
+++ b/third_party/blink/web_tests/external/wpt/lint.ignore
@@ -708,9 +708,9 @@
 
 # Web Bundle files have hard-coded URLs
 WEB-PLATFORM.TEST:web-bundle/resources/generate-test-wbns.sh
+WEB-PLATFORM.TEST:web-bundle/resources/nested/*.wbn
 WEB-PLATFORM.TEST:web-bundle/resources/wbn/*.wbn
-WEB-PLATFORM.TEST:web-bundle/subresource-loading/subresource-loading-from-web-bundle.tentative.html
-WEB-PLATFORM.TEST:web-bundle/subresource-loading/subresource-loading-path-restriction.tentative.html
+WEB-PLATFORM.TEST:web-bundle/subresource-loading/*.html
 
 # Tests that depend on resources in /gen/ in Chromium:
 # https://github.com/web-platform-tests/wpt/issues/16455
diff --git a/third_party/blink/web_tests/external/wpt/longtask-timing/DIR_METADATA b/third_party/blink/web_tests/external/wpt/longtask-timing/DIR_METADATA
new file mode 100644
index 0000000..45b72a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/longtask-timing/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>PerformanceAPIs"
+}
+team_email: "speed-metrics-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/longtask-timing/OWNERS b/third_party/blink/web_tests/external/wpt/longtask-timing/OWNERS
deleted file mode 100644
index f4011d2b..0000000
--- a/third_party/blink/web_tests/external/wpt/longtask-timing/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Blink>PerformanceAPIs
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-record/DIR_METADATA b/third_party/blink/web_tests/external/wpt/mediacapture-record/DIR_METADATA
new file mode 100644
index 0000000..8528372
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mediacapture-record/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>MediaRecording"
+}
+team_email: "media-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-record/OWNERS b/third_party/blink/web_tests/external/wpt/mediacapture-record/OWNERS
index 1b523fa..5c49de2 100644
--- a/third_party/blink/web_tests/external/wpt/mediacapture-record/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/mediacapture-record/OWNERS
@@ -1,5 +1,3 @@
-# TEAM: media-dev@chromium.org
-# COMPONENT: Blink>MediaRecording
 
 # Original (legacy) owner.
 mcasas@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-streams/DIR_METADATA b/third_party/blink/web_tests/external/wpt/mediacapture-streams/DIR_METADATA
new file mode 100644
index 0000000..563fa67
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mediacapture-streams/DIR_METADATA
@@ -0,0 +1,6 @@
+monorail {
+  component: "Blink>MediaStream"
+}
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-streams/OWNERS b/third_party/blink/web_tests/external/wpt/mediacapture-streams/OWNERS
index 31acf62..cc43ec1 100644
--- a/third_party/blink/web_tests/external/wpt/mediacapture-streams/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/mediacapture-streams/OWNERS
@@ -1,4 +1,2 @@
-# COMPONENT: Blink>MediaStream
-# WPT-NOTIFY: true
 guidou@chromium.org
 armax@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/mediasession/DIR_METADATA b/third_party/blink/web_tests/external/wpt/mediasession/DIR_METADATA
new file mode 100644
index 0000000..e1162a79
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mediasession/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Media>Session"
+}
+team_email: "media-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/mediasession/OWNERS b/third_party/blink/web_tests/external/wpt/mediasession/OWNERS
index 27eee8f..2d28246 100644
--- a/third_party/blink/web_tests/external/wpt/mediasession/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/mediasession/OWNERS
@@ -1,3 +1 @@
-# TEAM: media-dev@chromium.org
-# COMPONENT: Blink>Media>Session
 mlamouri@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/DIR_METADATA b/third_party/blink/web_tests/external/wpt/mixed-content/DIR_METADATA
new file mode 100644
index 0000000..56cf7f3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>SecurityFeature"
+}
+team_email: "security-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/mixed-content/OWNERS b/third_party/blink/web_tests/external/wpt/mixed-content/OWNERS
index 43db381..3f84563 100644
--- a/third_party/blink/web_tests/external/wpt/mixed-content/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/mixed-content/OWNERS
@@ -1,3 +1 @@
-# TEAM: security-dev@chromium.org
-# COMPONENT: Blink>SecurityFeature
 mkwst@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/native-file-system/DIR_METADATA b/third_party/blink/web_tests/external/wpt/native-file-system/DIR_METADATA
new file mode 100644
index 0000000..12cf0e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/native-file-system/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Storage>FileSystem"
+}
+team_email: "storage-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/native-file-system/OWNERS b/third_party/blink/web_tests/external/wpt/native-file-system/OWNERS
index df79a8b..a6d4f2c 100644
--- a/third_party/blink/web_tests/external/wpt/native-file-system/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/native-file-system/OWNERS
@@ -1,5 +1,2 @@
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Blink>Storage>FileSystem
-# WPT-NOTIFY: true
 mek@chromium.org
 stevebe@microsoft.com
diff --git a/third_party/blink/web_tests/external/wpt/native-io/DIR_METADATA b/third_party/blink/web_tests/external/wpt/native-io/DIR_METADATA
new file mode 100644
index 0000000..2f2b56c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/native-io/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Storage>NativeIO"
+}
+team_email: "storage-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/native-io/OWNERS b/third_party/blink/web_tests/external/wpt/native-io/OWNERS
index a561eae6..2c47ed2 100644
--- a/third_party/blink/web_tests/external/wpt/native-io/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/native-io/OWNERS
@@ -1,5 +1,2 @@
-# TEAM: storage-dev@chromium.org
-# COMPONENT: Blink>Storage>NativeIO
-# WPT-NOTIFY: true
 pwnall@chromium.org
 mkwst@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/navigation-timing/DIR_METADATA b/third_party/blink/web_tests/external/wpt/navigation-timing/DIR_METADATA
new file mode 100644
index 0000000..7b83838
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/navigation-timing/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>PerformanceAPIs>NavigationTiming"
+}
+team_email: "loading-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/navigation-timing/OWNERS b/third_party/blink/web_tests/external/wpt/navigation-timing/OWNERS
index 6c1180c..016bca8 100644
--- a/third_party/blink/web_tests/external/wpt/navigation-timing/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/navigation-timing/OWNERS
@@ -1,5 +1,2 @@
-# TEAM: loading-dev@chromium.org
-# COMPONENT: Blink>PerformanceAPIs>NavigationTiming
-# WPT-NOTIFY: true
 npm@chromium.org
 yoavweiss@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/notifications/DIR_METADATA b/third_party/blink/web_tests/external/wpt/notifications/DIR_METADATA
new file mode 100644
index 0000000..1fd09a0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/notifications/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "UI>Notifications"
+}
+team_email: "platform-capabilities@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/notifications/OWNERS b/third_party/blink/web_tests/external/wpt/notifications/OWNERS
index 6c802f52..cc91a7c 100644
--- a/third_party/blink/web_tests/external/wpt/notifications/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/notifications/OWNERS
@@ -1,5 +1 @@
 file://third_party/blink/renderer/modules/notifications/OWNERS
-
-# TEAM: platform-capabilities@chromium.org
-# COMPONENT: UI>Notifications
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/orientation-event/DIR_METADATA b/third_party/blink/web_tests/external/wpt/orientation-event/DIR_METADATA
new file mode 100644
index 0000000..fc620d5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/orientation-event/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Sensor"
+}
+team_email: "device-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/orientation-event/OWNERS b/third_party/blink/web_tests/external/wpt/orientation-event/OWNERS
index 243df98..0a092c9 100644
--- a/third_party/blink/web_tests/external/wpt/orientation-event/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/orientation-event/OWNERS
@@ -1,4 +1,2 @@
-# TEAM: device-dev@chromium.org
-# COMPONENT: Blink>Sensor
 timvolodine@chromium.org
 reillyg@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/page-visibility/DIR_METADATA b/third_party/blink/web_tests/external/wpt/page-visibility/DIR_METADATA
new file mode 100644
index 0000000..29b023b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/page-visibility/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>PageLifecycle"
+}
+team_email: "speed-metrics-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/page-visibility/OWNERS b/third_party/blink/web_tests/external/wpt/page-visibility/OWNERS
index 1755491..7124712 100644
--- a/third_party/blink/web_tests/external/wpt/page-visibility/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/page-visibility/OWNERS
@@ -1,4 +1 @@
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Blink>PageLifecycle
-# WPT-NOTIFY: true
 panicker@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/DIR_METADATA b/third_party/blink/web_tests/external/wpt/paint-timing/DIR_METADATA
new file mode 100644
index 0000000..45b72a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/paint-timing/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>PerformanceAPIs"
+}
+team_email: "speed-metrics-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/OWNERS b/third_party/blink/web_tests/external/wpt/paint-timing/OWNERS
deleted file mode 100644
index f4011d2b..0000000
--- a/third_party/blink/web_tests/external/wpt/paint-timing/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Blink>PerformanceAPIs
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/payment-handler/DIR_METADATA b/third_party/blink/web_tests/external/wpt/payment-handler/DIR_METADATA
new file mode 100644
index 0000000..53ab283
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/payment-handler/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Payments"
+}
+team_email: "payments-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/payment-handler/OWNERS b/third_party/blink/web_tests/external/wpt/payment-handler/OWNERS
index c13bc116..a199929e 100644
--- a/third_party/blink/web_tests/external/wpt/payment-handler/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/payment-handler/OWNERS
@@ -1,5 +1,3 @@
-# TEAM: payments-dev@chromium.org
-# COMPONENT: Blink>Payments
 
 file://components/payments/OWNERS
 
diff --git a/third_party/blink/web_tests/external/wpt/payment-method-basic-card/DIR_METADATA b/third_party/blink/web_tests/external/wpt/payment-method-basic-card/DIR_METADATA
new file mode 100644
index 0000000..53ab283
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/payment-method-basic-card/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Payments"
+}
+team_email: "payments-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/payment-method-basic-card/OWNERS b/third_party/blink/web_tests/external/wpt/payment-method-basic-card/OWNERS
index 05e1a027..06bc361 100644
--- a/third_party/blink/web_tests/external/wpt/payment-method-basic-card/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/payment-method-basic-card/OWNERS
@@ -1,4 +1,2 @@
-# TEAM: payments-dev@chromium.org
-# COMPONENT: Blink>Payments
 
 file://components/payments/OWNERS
diff --git a/third_party/blink/web_tests/external/wpt/payment-method-id/DIR_METADATA b/third_party/blink/web_tests/external/wpt/payment-method-id/DIR_METADATA
new file mode 100644
index 0000000..53ab283
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/payment-method-id/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Payments"
+}
+team_email: "payments-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/payment-method-id/OWNERS b/third_party/blink/web_tests/external/wpt/payment-method-id/OWNERS
index 05e1a027..06bc361 100644
--- a/third_party/blink/web_tests/external/wpt/payment-method-id/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/payment-method-id/OWNERS
@@ -1,4 +1,2 @@
-# TEAM: payments-dev@chromium.org
-# COMPONENT: Blink>Payments
 
 file://components/payments/OWNERS
diff --git a/third_party/blink/web_tests/external/wpt/payment-request/DIR_METADATA b/third_party/blink/web_tests/external/wpt/payment-request/DIR_METADATA
new file mode 100644
index 0000000..53ab283
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/payment-request/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Payments"
+}
+team_email: "payments-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/payment-request/OWNERS b/third_party/blink/web_tests/external/wpt/payment-request/OWNERS
index 05e1a027..06bc361 100644
--- a/third_party/blink/web_tests/external/wpt/payment-request/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/payment-request/OWNERS
@@ -1,4 +1,2 @@
-# TEAM: payments-dev@chromium.org
-# COMPONENT: Blink>Payments
 
 file://components/payments/OWNERS
diff --git a/third_party/blink/web_tests/external/wpt/performance-timeline/DIR_METADATA b/third_party/blink/web_tests/external/wpt/performance-timeline/DIR_METADATA
new file mode 100644
index 0000000..45b72a6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/performance-timeline/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>PerformanceAPIs"
+}
+team_email: "speed-metrics-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/performance-timeline/OWNERS b/third_party/blink/web_tests/external/wpt/performance-timeline/OWNERS
deleted file mode 100644
index f4011d2b..0000000
--- a/third_party/blink/web_tests/external/wpt/performance-timeline/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Blink>PerformanceAPIs
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/permissions-policy/DIR_METADATA b/third_party/blink/web_tests/external/wpt/permissions-policy/DIR_METADATA
new file mode 100644
index 0000000..fcc5bce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/permissions-policy/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>FeaturePolicy"
+}
+team_email: "feature-control@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/permissions-policy/OWNERS b/third_party/blink/web_tests/external/wpt/permissions-policy/OWNERS
index 6385d12..7f44d1b 100644
--- a/third_party/blink/web_tests/external/wpt/permissions-policy/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/permissions-policy/OWNERS
@@ -1,4 +1 @@
-# TEAM: feature-control@chromium.org
-# COMPONENT: Blink>FeaturePolicy
-# WPT-NOTIFY: true
 iclelland@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/picture-in-picture/DIR_METADATA b/third_party/blink/web_tests/external/wpt/picture-in-picture/DIR_METADATA
new file mode 100644
index 0000000..85c67b2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/picture-in-picture/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Blink>Media>PictureInPicture"
+}
diff --git a/third_party/blink/web_tests/external/wpt/picture-in-picture/OWNERS b/third_party/blink/web_tests/external/wpt/picture-in-picture/OWNERS
deleted file mode 100644
index f7dde29..0000000
--- a/third_party/blink/web_tests/external/wpt/picture-in-picture/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-# COMPONENT: Blink>Media>PictureInPicture
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/DIR_METADATA b/third_party/blink/web_tests/external/wpt/pointerevents/DIR_METADATA
new file mode 100644
index 0000000..4a2c8aa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/pointerevents/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Input"
+}
+team_email: "input-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/OWNERS b/third_party/blink/web_tests/external/wpt/pointerevents/OWNERS
index 3a5adbad..fc6547a 100644
--- a/third_party/blink/web_tests/external/wpt/pointerevents/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/pointerevents/OWNERS
@@ -1,5 +1,2 @@
-# TEAM: input-dev@chromium.org
-# COMPONENT: Blink>Input
-# WPT-NOTIFY: true
 nzolghadr@chromium.org
 mustaq@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/pointerlock/DIR_METADATA b/third_party/blink/web_tests/external/wpt/pointerlock/DIR_METADATA
new file mode 100644
index 0000000..4a2c8aa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/pointerlock/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Input"
+}
+team_email: "input-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/pointerlock/OWNERS b/third_party/blink/web_tests/external/wpt/pointerlock/OWNERS
index 46d4a5d..9258d11 100644
--- a/third_party/blink/web_tests/external/wpt/pointerlock/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/pointerlock/OWNERS
@@ -1,4 +1 @@
-# TEAM: input-dev@chromium.org
-# COMPONENT: Blink>Input
-# WPT-NOTIFY: true
 nzolghadr@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/portals/DIR_METADATA b/third_party/blink/web_tests/external/wpt/portals/DIR_METADATA
new file mode 100644
index 0000000..ccb9644
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/DIR_METADATA
@@ -0,0 +1,6 @@
+monorail {
+  component: "Blink>Portals"
+}
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/portals/OWNERS b/third_party/blink/web_tests/external/wpt/portals/OWNERS
index 542026e..471d286 100644
--- a/third_party/blink/web_tests/external/wpt/portals/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/portals/OWNERS
@@ -1,3 +1 @@
-# COMPONENT: Blink>Portals
-# WPT-NOTIFY: true
 file://third_party/blink/renderer/core/html/portal/OWNERS
diff --git a/third_party/blink/web_tests/external/wpt/preload/DIR_METADATA b/third_party/blink/web_tests/external/wpt/preload/DIR_METADATA
new file mode 100644
index 0000000..f412b2c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/preload/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Loader>Preload"
+}
+team_email: "loading-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/preload/OWNERS b/third_party/blink/web_tests/external/wpt/preload/OWNERS
index 39fb049e..d7b1f47 100644
--- a/third_party/blink/web_tests/external/wpt/preload/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/preload/OWNERS
@@ -1,4 +1,2 @@
-# TEAM: loading-dev@chromium.org
-# COMPONENT: Blink>Loader>Preload
 igrigorik@chromium.org
 yoavweiss@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/presentation-api/DIR_METADATA b/third_party/blink/web_tests/external/wpt/presentation-api/DIR_METADATA
new file mode 100644
index 0000000..f66a1b0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/presentation-api/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>PresentationAPI"
+}
+team_email: "media-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/presentation-api/OWNERS b/third_party/blink/web_tests/external/wpt/presentation-api/OWNERS
deleted file mode 100644
index f9d59ea..0000000
--- a/third_party/blink/web_tests/external/wpt/presentation-api/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-# TEAM: media-dev@chromium.org
-# COMPONENT: Blink>PresentationAPI
diff --git a/third_party/blink/web_tests/external/wpt/quirks/DIR_METADATA b/third_party/blink/web_tests/external/wpt/quirks/DIR_METADATA
new file mode 100644
index 0000000..ea45d26
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/quirks/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>CSS"
+}
+team_email: "layout-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/quirks/OWNERS b/third_party/blink/web_tests/external/wpt/quirks/OWNERS
deleted file mode 100644
index f025ce3..0000000
--- a/third_party/blink/web_tests/external/wpt/quirks/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# TEAM: layout-dev@chromium.org
-# COMPONENT: Blink>CSS
-# WPT-NOTIFY: true
diff --git a/third_party/blink/web_tests/external/wpt/raw-sockets/DIR_METADATA b/third_party/blink/web_tests/external/wpt/raw-sockets/DIR_METADATA
new file mode 100644
index 0000000..b11d1ac
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/raw-sockets/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Blink>Network"
+}
diff --git a/third_party/blink/web_tests/external/wpt/raw-sockets/OWNERS b/third_party/blink/web_tests/external/wpt/raw-sockets/OWNERS
index 66ede73..73c81fa 100644
--- a/third_party/blink/web_tests/external/wpt/raw-sockets/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/raw-sockets/OWNERS
@@ -2,5 +2,3 @@
 ericwilligers@chromium.org
 glenrob@chromium.org
 mgiuca@chromium.org
-
-# COMPONENT: Blink>Network
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/DIR_METADATA b/third_party/blink/web_tests/external/wpt/referrer-policy/DIR_METADATA
new file mode 100644
index 0000000..7e376fc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>SecurityFeature>Referrer"
+}
+team_email: "security-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/referrer-policy/OWNERS b/third_party/blink/web_tests/external/wpt/referrer-policy/OWNERS
index 48eafc68..bd355dd 100644
--- a/third_party/blink/web_tests/external/wpt/referrer-policy/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/referrer-policy/OWNERS
@@ -1,4 +1,2 @@
-# TEAM: security-dev@chromium.org
-# COMPONENT: Blink>SecurityFeature>Referrer
 jochen@chromium.org
 estark@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/remote-playback/DIR_METADATA b/third_party/blink/web_tests/external/wpt/remote-playback/DIR_METADATA
new file mode 100644
index 0000000..d1f9744
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/remote-playback/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Media>RemotePlayback"
+}
+team_email: "media-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/remote-playback/OWNERS b/third_party/blink/web_tests/external/wpt/remote-playback/OWNERS
index 7d9e219..2d28246 100644
--- a/third_party/blink/web_tests/external/wpt/remote-playback/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/remote-playback/OWNERS
@@ -1,3 +1 @@
-# TEAM: media-dev@chromium.org
-# COMPONENT: Blink>Media>RemotePlayback
 mlamouri@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/requestidlecallback/DIR_METADATA b/third_party/blink/web_tests/external/wpt/requestidlecallback/DIR_METADATA
new file mode 100644
index 0000000..bc45d28
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/requestidlecallback/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>Scheduling"
+}
+team_email: "scheduler-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/requestidlecallback/OWNERS b/third_party/blink/web_tests/external/wpt/requestidlecallback/OWNERS
index 02e9ca2..906a5ce 100644
--- a/third_party/blink/web_tests/external/wpt/requestidlecallback/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/requestidlecallback/OWNERS
@@ -1,3 +1 @@
-# TEAM: scheduler-dev@chromium.org
-# COMPONENT: Blink>Scheduling
 rmcilroy@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/DIR_METADATA b/third_party/blink/web_tests/external/wpt/resource-timing/DIR_METADATA
new file mode 100644
index 0000000..b242241
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/resource-timing/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>PerformanceAPIs>ResourceTiming"
+}
+team_email: "speed-metrics-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/OWNERS b/third_party/blink/web_tests/external/wpt/resource-timing/OWNERS
index f0c22a1..db77910a 100644
--- a/third_party/blink/web_tests/external/wpt/resource-timing/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/resource-timing/OWNERS
@@ -1,6 +1,3 @@
-# TEAM: speed-metrics-dev@chromium.org
-# COMPONENT: Blink>PerformanceAPIs>ResourceTiming
-# WPT-NOTIFY: true
 ksakamoto@chromium.org
 npm@chromium.org
 yoavweiss@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/sanitizer-api/DIR_METADATA b/third_party/blink/web_tests/external/wpt/sanitizer-api/DIR_METADATA
new file mode 100644
index 0000000..7ddd8e4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/sanitizer-api/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>SecurityFeature>SanitizerAPI"
+}
+team_email: "security-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/sanitizer-api/OWNERS b/third_party/blink/web_tests/external/wpt/sanitizer-api/OWNERS
index c5a21315..fc6bc863 100644
--- a/third_party/blink/web_tests/external/wpt/sanitizer-api/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/sanitizer-api/OWNERS
@@ -1,4 +1 @@
-# TEAM: security-dev@chromium.org
-# COMPONENT: Blink>SecurityFeature>SanitizerAPI
-# WPT-NOTIFY: true
 file://third_party/blink/renderer/modules/sanitizer_api/OWNERS
diff --git a/third_party/blink/web_tests/external/wpt/screen-capture/DIR_METADATA b/third_party/blink/web_tests/external/wpt/screen-capture/DIR_METADATA
new file mode 100644
index 0000000..d9367eac
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/screen-capture/DIR_METADATA
@@ -0,0 +1,6 @@
+monorail {
+  component: "Blink>WebRTC"
+}
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/screen-capture/OWNERS b/third_party/blink/web_tests/external/wpt/screen-capture/OWNERS
index db41c4e..90e5cde 100644
--- a/third_party/blink/web_tests/external/wpt/screen-capture/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/screen-capture/OWNERS
@@ -3,6 +3,4 @@
 # Original (legacy) owner.
 emircan@chromium.org
 
-# COMPONENT: Blink>WebRTC
-# WPT-NOTIFY: true
 emircan@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/screen-orientation/DIR_METADATA b/third_party/blink/web_tests/external/wpt/screen-orientation/DIR_METADATA
new file mode 100644
index 0000000..f6f28541d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/screen-orientation/DIR_METADATA
@@ -0,0 +1,3 @@
+monorail {
+  component: "Blink>ScreenOrientation"
+}
diff --git a/third_party/blink/web_tests/external/wpt/screen-orientation/OWNERS b/third_party/blink/web_tests/external/wpt/screen-orientation/OWNERS
index af79dee..2d28246 100644
--- a/third_party/blink/web_tests/external/wpt/screen-orientation/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/screen-orientation/OWNERS
@@ -1,2 +1 @@
-# COMPONENT: Blink>ScreenOrientation
 mlamouri@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/DIR_METADATA b/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/DIR_METADATA
new file mode 100644
index 0000000..4a2c8aa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/DIR_METADATA
@@ -0,0 +1,7 @@
+monorail {
+  component: "Blink>Input"
+}
+team_email: "input-dev@chromium.org"
+wpt {
+  notify: YES
+}
diff --git a/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/OWNERS b/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/OWNERS
index e7e04516..9f9aedfa 100644
--- a/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/OWNERS
@@ -1,4 +1 @@
-# TEAM: input-dev@chromium.org
-# COMPONENT: Blink>Input
-# WPT-NOTIFY: true
 bokan@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/secure-contexts/DIR_METADATA b/third_party/blink/web_tests/external/wpt/secure-contexts/DIR_METADATA
new file mode 100644
index 0000000..d829460
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/secure-contexts/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail {
+  component: "Blink>SecurityFeature>SecureContexts"
+}
+team_email: "security-dev@chromium.org"
diff --git a/third_party/blink/web_tests/external/wpt/secure-contexts/OWNERS b/third_party/blink/web_tests/external/wpt/secure-contexts/OWNERS
index 17bc4436..3f84563 100644
--- a/third_party/blink/web_tests/external/wpt/secure-contexts/OWNERS
+++ b/third_party/blink/web_tests/external/wpt/secure-contexts/OWNERS
@@ -1,3 +1 @@
-# TEAM: security-dev@chromium.org
-# COMPONENT: Blink>SecurityFeature>SecureContexts
 mkwst@chromium.org
diff --git a/third_party/blink/web_tests/external/wpt/web-bundle/resources/generate-test-wbns.sh b/third_party/blink/web_tests/external/wpt/web-bundle/resources/generate-test-wbns.sh
index 7100e6a..8fc28bb 100755
--- a/third_party/blink/web_tests/external/wpt/web-bundle/resources/generate-test-wbns.sh
+++ b/third_party/blink/web_tests/external/wpt/web-bundle/resources/generate-test-wbns.sh
@@ -55,3 +55,12 @@
   -primaryURL $wpt_test_http_origin/web-bundle/resources/wbn/resource.js \
   -dir path-restriction/ \
   -o wbn/path-restriction.wbn
+
+# Create a bundle, nested-main.wbn, which includes nested-sub.wbn.
+cp -a wbn/subresource.wbn nested/nested-sub.wbn
+gen-bundle \
+  -version b1 \
+  -baseURL $wpt_test_http_origin/web-bundle/resources/wbn/ \
+  -primaryURL $wpt_test_http_origin/web-bundle/resources/wbn/resource.js \
+  -dir nested/ \
+  -o wbn/nested-main.wbn
diff --git a/third_party/blink/web_tests/external/wpt/web-bundle/resources/nested/nested-sub.wbn b/third_party/blink/web_tests/external/wpt/web-bundle/resources/nested/nested-sub.wbn
new file mode 100644
index 0000000..eabd994
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/web-bundle/resources/nested/nested-sub.wbn
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/web-bundle/resources/wbn/nested-main.wbn b/third_party/blink/web_tests/external/wpt/web-bundle/resources/wbn/nested-main.wbn
new file mode 100644
index 0000000..1f92781
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/web-bundle/resources/wbn/nested-main.wbn
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/web-bundle/subresource-loading/subresource-loading-nested-bundle.tentative.html b/third_party/blink/web_tests/external/wpt/web-bundle/subresource-loading/subresource-loading-nested-bundle.tentative.html
new file mode 100644
index 0000000..acca096b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/web-bundle/subresource-loading/subresource-loading-nested-bundle.tentative.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<title>A nested bundle is not supported</title>
+<link
+  rel="help"
+  href="https://github.com/WICG/webpackage/blob/master/explainers/subresource-loading.md"
+/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+  <link
+    rel="webbundle"
+    href="http://web-platform.test:8001/web-bundle/resources/wbn/nested-main.wbn"
+    resources="http://web-platform.test:8001/web-bundle/resources/wbn/nested-sub.wbn"
+  />
+  <script>
+    promise_test(async () => {
+      const response = await fetch(
+        "http://web-platform.test:8001/web-bundle/resources/wbn/nested-sub.wbn"
+      );
+      assert_true(response.ok);
+    }, "A nested bundle can be fetched");
+
+    promise_test(async () => {
+      await addLinkAndWaitForError(
+        "http://web-platform.test:8001/web-bundle/resources/wbn/nested-sub.wbn",
+        "http://web-platform.test:8001/web-bundle/resources/wbn/root.js"
+      );
+      const response = await fetch(
+        "http://web-platform.test:8001/web-bundle/resources/wbn/root.js"
+      );
+      assert_false(response.ok);
+    }, "Subresources in a nested bundle should not be loaded");
+
+    function addLinkAndWaitForError(url, resources) {
+      return new Promise((resolve, reject) => {
+        const link = document.createElement("link");
+        link.rel = "webbundle";
+        link.href = url;
+        link.resources = resources;
+        link.onload = reject;
+        link.onerror = () => resolve();
+        document.body.appendChild(link);
+      });
+    }
+  </script>
+</body>
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/page/inline-document-write-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/page/inline-document-write-expected.txt
new file mode 100644
index 0000000..8ce60ae
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/page/inline-document-write-expected.txt
@@ -0,0 +1,4 @@
+Tests that inline document.write() does not send Page.documentOpened event
+Frame navigated to http://devtools.test:8000/inspector-protocol/page/resources/inline-document-write.html
+Frame stopped loading
+
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/page/inline-document-write.js b/third_party/blink/web_tests/http/tests/inspector-protocol/page/inline-document-write.js
new file mode 100644
index 0000000..52dba8c
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/page/inline-document-write.js
@@ -0,0 +1,19 @@
+(async function(testRunner) {
+  const {page, dp} = await testRunner.startBlank(
+      `Tests that inline document.write() does not send Page.documentOpened event`);
+
+  await dp.Page.enable();
+
+  dp.Page.onFrameNavigated((event) => {
+    testRunner.log(`Frame navigated to ${event.params.frame.url}`);
+  });
+  dp.Page.onDocumentOpened((event) => {
+    testRunner.log(`Document opened, new url: ${event.params.frame.url}`);
+  });
+  dp.Page.onFrameStoppedLoading((event) => {
+    testRunner.log('Frame stopped loading');
+    testRunner.completeTest();
+  });
+
+  await page.navigate('http://devtools.test:8000/inspector-protocol/page/resources/inline-document-write.html');
+})
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/page/resources/inline-document-write.html b/third_party/blink/web_tests/http/tests/inspector-protocol/page/resources/inline-document-write.html
new file mode 100644
index 0000000..a311ca8
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/page/resources/inline-document-write.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<body>
+  <h1>Write to self</h1>
+  <script>document.write('Hello world');</script>
+  <p>After write</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/http/tests/loading/wbn/subresource-loading/subresource-loading.html b/third_party/blink/web_tests/http/tests/loading/wbn/subresource-loading/subresource-loading.html
index 9e7a4a76..5fc1501 100644
--- a/third_party/blink/web_tests/http/tests/loading/wbn/subresource-loading/subresource-loading.html
+++ b/third_party/blink/web_tests/http/tests/loading/wbn/subresource-loading/subresource-loading.html
@@ -38,7 +38,10 @@
     const script = document.createElement('script');
     script.src = 'http://127.0.0.1:8000/loading/wbn/resources/wbn/server/hello/notfound.js';
     script.onload = reject;
-    script.onerror = resolve;
+    script.onerror = () => {
+	// Wait for the console message to be logged.
+	setTimeout(resolve, 100);
+    }
     document.body.appendChild(script);
   });
 
diff --git a/third_party/blink/web_tests/webexposed/feature-policy-features-expected.txt b/third_party/blink/web_tests/webexposed/feature-policy-features-expected.txt
index 2d95e72..30b2600 100644
--- a/third_party/blink/web_tests/webexposed/feature-policy-features-expected.txt
+++ b/third_party/blink/web_tests/webexposed/feature-policy-features-expected.txt
@@ -24,12 +24,10 @@
 clipboard-write
 cross-origin-isolated
 document-domain
-downloads
 encrypted-media
 execution-while-not-rendered
 execution-while-out-of-viewport
 focus-without-user-activation
-forms
 fullscreen
 gamepad
 geolocation
@@ -39,21 +37,14 @@
 magnetometer
 microphone
 midi
-modals
-orientation-lock
 otp-credentials
 payment
 picture-in-picture
-pointer-lock
-popups
-presentation
 publickey-credentials-get
 screen-wake-lock
-scripts
 serial
 storage-access-api
 sync-xhr
-top-navigation
 trust-token-redemption
 usb
 vertical-scroll
diff --git a/third_party/freetype/README.chromium b/third_party/freetype/README.chromium
index 64313ee5..80c4cba 100644
--- a/third_party/freetype/README.chromium
+++ b/third_party/freetype/README.chromium
@@ -1,7 +1,7 @@
 Name: FreeType
 URL: http://www.freetype.org/
-Version: VER-2-10-4-42-g9f94d8533
-Revision: 9f94d8533cefa8a023a0b81633032fe0aaea08fb
+Version: VER-2-10-4-45-g505943a6a
+Revision: 505943a6a4cbf549e744fe4fe9d36bba68ef3db1
 CPEPrefix: cpe:/a:freetype:freetype:2.10.1
 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent
          JPEG Group) licenses"
diff --git a/third_party/freetype/include/freetype-custom/freetype/config/ftoption.h b/third_party/freetype/include/freetype-custom/freetype/config/ftoption.h
index 16d850d..e2bc3f44 100644
--- a/third_party/freetype/include/freetype-custom/freetype/config/ftoption.h
+++ b/third_party/freetype/include/freetype-custom/freetype/config/ftoption.h
@@ -447,7 +447,7 @@
    *
    *   This option needs a C99 compiler.
    */
-/* #define FT_LOGGING */
+/* #define FT_DEBUG_LOGGING */
 
 
   /**************************************************************************
diff --git a/third_party/metrics_proto/README.chromium b/third_party/metrics_proto/README.chromium
index c0a6db5b..fd88a19 100644
--- a/third_party/metrics_proto/README.chromium
+++ b/third_party/metrics_proto/README.chromium
@@ -1,8 +1,8 @@
 Name: Metrics Protos
 Short Name: metrics_proto
 URL: This is the canonical public repository
-Version: 344139149
-Date: 2020/11/24 UTC
+Version: 346104568
+Date: 2020/12/07 UTC
 License: BSD
 Security Critical: Yes
 
diff --git a/third_party/metrics_proto/execution_context.proto b/third_party/metrics_proto/execution_context.proto
index d360d58..e27844dd 100644
--- a/third_party/metrics_proto/execution_context.proto
+++ b/third_party/metrics_proto/execution_context.proto
@@ -63,12 +63,24 @@
 
   SERVICE_WORKER_THREAD = 15;
 
-  // Thread pool thread (in renderer process).
+  // DedicatedWorker thread in the renderer process.
+  DEDICATED_WORKER_THREAD = 18;
+
+  // Thread pool thread (can be in different Chrome processes).
   THREAD_POOL_THREAD = 16;
 
   // GPU memory thread (in renderer process).
   GPU_MEMORY_THREAD = 17;
 
+  // The thread for Chrome memory tracing (can be in different processes).
+  MEMORY_INFRA_THREAD = 19;
+
+  // Media thread (in renderer process).
+  MEDIA_THREAD = 20;
+
+  // WebRTC threads, e.g. WebRTC_Signaling,WebRTC_Network (in renderer process).
+  WEBRTC_THREAD = 21;
+
   // A Chrome thread not identified by any other enum. Defined for the benefit
   // of Chrome OS. Do not use for the Chrome sampling profiler; define a new
   // enum instead.
diff --git a/tools/clang/scripts/build.py b/tools/clang/scripts/build.py
index d4793c26..527e118 100755
--- a/tools/clang/scripts/build.py
+++ b/tools/clang/scripts/build.py
@@ -165,8 +165,9 @@
 
 def GetLatestLLVMCommit():
   """Get the latest commit hash in the LLVM monorepo."""
-  ref = json.loads(UrlOpen(('https://api.github.com/repos/'
-                            'llvm/llvm-project/git/refs/heads/master')))
+  ref = json.loads(
+      UrlOpen(('https://api.github.com/repos/'
+               'llvm/llvm-project/git/refs/heads/main')))
   assert ref['object']['type'] == 'commit'
   return ref['object']['sha']
 
diff --git a/tools/clang/scripts/build_clang_tools_extra.py b/tools/clang/scripts/build_clang_tools_extra.py
index 2026c84..7c49391 100755
--- a/tools/clang/scripts/build_clang_tools_extra.py
+++ b/tools/clang/scripts/build_clang_tools_extra.py
@@ -50,7 +50,7 @@
   except subprocess.CalledProcessError:
     # Otherwise, try to update it.
     print('-- Attempting to update existing repo')
-    args = ['git', 'pull', '--rebase', 'origin', 'master']
+    args = ['git', 'pull', '--rebase', 'origin', 'main']
     subprocess.check_call(args, cwd=checkout_dir, shell=sys.platform == 'win32')
   if revision:
     args = ['git', 'checkout', revision]
diff --git a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
index 854ae67..0b8f5581 100644
--- a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
+++ b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
@@ -11966,7 +11966,12 @@
   <suffix name="Image" label=""/>
   <suffix name="Kiosk-enable" label=""/>
   <suffix name="Marketing-opt-in" label=""/>
-  <suffix name="Multidevice-setup" label=""/>
+  <suffix name="Multidevice-setup" label="">
+    <obsolete>
+      Renamed to Multidevice-setup-screen in M89.
+    </obsolete>
+  </suffix>
+  <suffix name="Multidevice-setup-screen" label=""/>
   <suffix name="Network" label=""/>
   <suffix name="Network-selection" label=""/>
   <suffix name="Packaged-license" label=""/>
@@ -12019,7 +12024,12 @@
   <suffix name="Hid-detection.StartDemo" label=""/>
   <suffix name="Kiosk-enable.Next" label=""/>
   <suffix name="Marketing-opt-in.Next" label=""/>
-  <suffix name="Multidevice-setup.Next" label=""/>
+  <suffix name="Multidevice-setup-screen.Next" label=""/>
+  <suffix name="Multidevice-setup.Next" label="">
+    <obsolete>
+      Renamed to Multidevice-setup-screen.Next in M89.
+    </obsolete>
+  </suffix>
   <suffix name="Network-selection.Back" label=""/>
   <suffix name="Network-selection.Connected" label=""/>
   <suffix name="Network-selection.OfflineDemoSetup" label=""/>
diff --git a/tools/metrics/histograms/histograms_xml/oobe/histograms.xml b/tools/metrics/histograms/histograms_xml/oobe/histograms.xml
index 1f931b1..b10cd8d 100644
--- a/tools/metrics/histograms/histograms_xml/oobe/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/oobe/histograms.xml
@@ -394,6 +394,26 @@
   </summary>
 </histogram>
 
+<histogram name="OOBE.WelcomeScreen.AcceptChromeVoxHint" enum="BooleanEnabled"
+    expires_after="2021-04-11">
+  <owner>akihiroota@google.com</owner>
+  <owner>cros-oac@google.com</owner>
+  <summary>
+    Whether or not the user accepted the ChromeVox hint. Recorded when the user
+    interacts with the ChromeVox hint dialog.
+  </summary>
+</histogram>
+
+<histogram name="OOBE.WelcomeScreen.ChromeVoxHintSpokenSuccess"
+    enum="BooleanEnabled" expires_after="2021-04-11">
+  <owner>akihiroota@google.com</owner>
+  <owner>cros-oac@google.com</owner>
+  <summary>
+    Whether or not the ChromeVox hint was successfully spoken. Recorded when the
+    ChromeVox hint dialog is shown.
+  </summary>
+</histogram>
+
 </histograms>
 
 </histogram-configuration>
diff --git a/tools/metrics/histograms/histograms_xml/safe_browsing/histograms.xml b/tools/metrics/histograms/histograms_xml/safe_browsing/histograms.xml
index b2ad571..a620323 100644
--- a/tools/metrics/histograms/histograms_xml/safe_browsing/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/safe_browsing/histograms.xml
@@ -1495,6 +1495,10 @@
 
 <histogram name="SafeBrowsingBinaryUploadRequest.AdvancedProtectionScanVerdict"
     enum="SafeBrowsingMalwareDeepScanningVerdict" expires_after="2021-01-14">
+  <obsolete>
+    Marked obsolete 12-2020. Replaced by
+    SBClientDownload.MalwareDeepScanResult.AdvancedProtectionPrompt.
+  </obsolete>
   <owner>drubery@chromium.org</owner>
   <owner>chrome-safebrowsing-alerts@google.com</owner>
   <summary>
@@ -1540,6 +1544,9 @@
 
 <histogram name="SafeBrowsingBinaryUploadRequest.MalwareScanVerdict"
     enum="SafeBrowsingMalwareDeepScanningVerdict" expires_after="2021-01-14">
+  <obsolete>
+    Removed 12-2020. Replaced by SafeBrowsingBinaryUploadRequest.MalwareResult.
+  </obsolete>
   <owner>drubery@chromium.org</owner>
   <owner>chrome-safebrowsing-alerts@google.com</owner>
   <summary>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index fcea712..8711a335 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -1,16 +1,16 @@
 {
     "trace_processor_shell": {
         "win": {
-            "hash": "83905a5068c26daa567cf81ef4c21963f7584593",
-            "remote_path": "perfetto_binaries/trace_processor_shell/win/0fdb2247e82e7f60e5391c674ce7267019a5692d/trace_processor_shell.exe"
+            "hash": "b8baf0bb54fbc805dd4c5ba04d2b07699a0037d7",
+            "remote_path": "perfetto_binaries/trace_processor_shell/win/c56ea91f6bd1b910be1ba373b950c04f72595bd9/trace_processor_shell.exe"
         },
         "mac": {
-            "hash": "dea74574858697c140bf60eb4552976175677b31",
-            "remote_path": "perfetto_binaries/trace_processor_shell/mac/0fdb2247e82e7f60e5391c674ce7267019a5692d/trace_processor_shell"
+            "hash": "74f96bfdfbf4d1ff47e3eaae10a300c05faf2177",
+            "remote_path": "perfetto_binaries/trace_processor_shell/mac/c56ea91f6bd1b910be1ba373b950c04f72595bd9/trace_processor_shell"
         },
         "linux": {
-            "hash": "d258d32b58428c1acaf19c46e51e820b092227a4",
-            "remote_path": "perfetto_binaries/trace_processor_shell/linux/0fdb2247e82e7f60e5391c674ce7267019a5692d/trace_processor_shell"
+            "hash": "16c21682e4ed10ee02037e4697e82988ab56d379",
+            "remote_path": "perfetto_binaries/trace_processor_shell/linux/c56ea91f6bd1b910be1ba373b950c04f72595bd9/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/tools/traffic_annotation/summary/annotations.xml b/tools/traffic_annotation/summary/annotations.xml
index af65d1d..b5820835 100644
--- a/tools/traffic_annotation/summary/annotations.xml
+++ b/tools/traffic_annotation/summary/annotations.xml
@@ -298,7 +298,7 @@
  <item id="safe_browsing_feedback" added_in_milestone="62" hash_code="44583821" type="0" content_hash_code="27116846" os_list="linux,windows" file_path="chrome/browser/safe_browsing/download_protection/download_feedback.cc"/>
  <item id="safe_browsing_get_full_hash" added_in_milestone="62" hash_code="68745894" type="0" deprecated="2018-08-14" content_hash_code="21739198" file_path=""/>
  <item id="safe_browsing_incident" added_in_milestone="62" hash_code="124950347" type="0" content_hash_code="7306531" os_list="linux,windows" file_path="chrome/browser/safe_browsing/incident_reporting/incident_report_uploader_impl.cc"/>
- <item id="safe_browsing_module_loader" added_in_milestone="62" hash_code="6019475" type="0" content_hash_code="49511650" os_list="linux,windows" file_path="chrome/browser/safe_browsing/client_side_model_loader.cc"/>
+ <item id="safe_browsing_module_loader" added_in_milestone="62" hash_code="6019475" type="0" content_hash_code="49511650" os_list="linux,windows" file_path="components/safe_browsing/content/browser/client_side_model_loader.cc"/>
  <item id="safe_browsing_realtime_url_lookup" added_in_milestone="78" hash_code="119324658" type="0" content_hash_code="71236226" os_list="linux,windows" file_path="components/safe_browsing/core/realtime/url_lookup_service.cc"/>
  <item id="safe_browsing_v4_get_hash" added_in_milestone="62" hash_code="8561691" type="0" content_hash_code="132435617" os_list="linux,windows" file_path="components/safe_browsing/core/db/v4_get_hash_protocol_manager.cc"/>
  <item id="safe_browsing_v4_update" added_in_milestone="70" hash_code="82509217" type="0" content_hash_code="5247849" os_list="linux,windows" file_path="components/safe_browsing/core/db/v4_update_protocol_manager.cc"/>
diff --git a/ui/android/java/res/values-night/colors.xml b/ui/android/java/res/values-night/colors.xml
index c5cf06a3..0d8840e 100644
--- a/ui/android/java/res/values-night/colors.xml
+++ b/ui/android/java/res/values-night/colors.xml
@@ -19,6 +19,8 @@
     <color name="default_icon_color_blue">@color/default_icon_color_blue_light</color>
     <color name="default_icon_color_secondary">@color/default_icon_color_secondary_light</color>
     <color name="hairline_stroke_color">@color/hairline_stroke_color_dark</color>
+    <color name="default_icon_color_disabled">@color/default_icon_color_disabled_light</color>
+    <color name="default_icon_color_disabled_inverse">@color/default_icon_color_disabled_dark</color>
 
     <!-- Common background and branding color. -->
     <color name="default_bg_color">@color/default_bg_color_dark</color>
diff --git a/ui/android/java/res/values/semantic_colors_adaptive.xml b/ui/android/java/res/values/semantic_colors_adaptive.xml
index da41937..7c227df 100644
--- a/ui/android/java/res/values/semantic_colors_adaptive.xml
+++ b/ui/android/java/res/values/semantic_colors_adaptive.xml
@@ -33,7 +33,10 @@
     <color name="hairline_stroke_color_light">@color/modern_grey_300</color>
     <color name="hairline_stroke_color_dark">@color/modern_grey_700</color>
     <color name="hairline_stroke_color">@color/hairline_stroke_color_light</color>
-
+    <color name="default_icon_color_disabled">@color/default_icon_color_disabled_dark</color>
+    <color name="default_icon_color_disabled_inverse" tools:ignore="UnusedResources">
+        @color/default_icon_color_disabled_light
+    </color>
     <!-- Common background and branding color. -->
     <color name="default_bg_color">@color/default_bg_color_light</color>
     <color name="default_bg_color_secondary" tools:ignore="UnusedResources">@color/default_bg_color_secondary_light</color>
diff --git a/ui/android/java/res/values/semantic_colors_non_adaptive.xml b/ui/android/java/res/values/semantic_colors_non_adaptive.xml
index 674312d..92faa06 100644
--- a/ui/android/java/res/values/semantic_colors_non_adaptive.xml
+++ b/ui/android/java/res/values/semantic_colors_non_adaptive.xml
@@ -13,6 +13,8 @@
     <color name="default_icon_color_secondary_light">@color/white_alpha_70</color>
     <color name="default_icon_color_blue_light">@color/modern_blue_300</color>
     <color name="default_icon_color_blue_dark">@color/modern_blue_600</color>
+    <color name="default_icon_color_disabled_dark">@color/modern_grey_800_alpha_38</color>
+    <color name="default_icon_color_disabled_light">@color/white_alpha_38</color>
 
     <!-- Common text colors -->
     <color name="default_text_color_dark">@color/modern_grey_900</color>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ar.xtb b/ui/chromeos/translations/ui_chromeos_strings_ar.xtb
index 8c7a8ef..8148890 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ar.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ar.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">‏تثبيت باستخدام نظام التشغيل Linux</translation>
 <translation id="2225536596944493418">هل تريد بالتأكيد حذف <ph name="NUMBER_OF_ITEMS" /> من العناصر؟</translation>
 <translation id="2230062665678605299">تعذر إنشاء المجلد "<ph name="FOLDER_NAME" />". <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">الاستعادة من المهملات</translation>
 <translation id="2275059641601412272">تم النقل.</translation>
 <translation id="2288278176040912387">مشغّل أقراص مسجلة</translation>
 <translation id="2291538123825441971">جارٍ فتح <ph name="NUMBER_OF_FILES" /> من الملفات.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_as.xtb b/ui/chromeos/translations/ui_chromeos_strings_as.xtb
index 9509a26b..0e953861 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_as.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_as.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">Linuxৰ জৰিয়তে ইনষ্টল কৰক</translation>
 <translation id="2225536596944493418">আপুনি <ph name="NUMBER_OF_ITEMS" />টা বস্তু মচি পেলাবলৈ নিশ্চিতনে?</translation>
 <translation id="2230062665678605299">"<ph name="FOLDER_NAME" />" ফল্ডাৰ সৃষ্টি কৰিব পৰা নগ’ল। <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">ট্ৰেশ্বৰ পৰা পুনঃস্থাপন কৰক</translation>
 <translation id="2275059641601412272">স্থানান্তৰ কৰা হ'ল।</translation>
 <translation id="2288278176040912387">ৰেকৰ্ড প্লেয়াৰ</translation>
 <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" />টা ফাইল খুলি থকা হৈছে</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_be.xtb b/ui/chromeos/translations/ui_chromeos_strings_be.xtb
index 030155251..a3ef0c1 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_be.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_be.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">Усталюйце пакет Linux</translation>
 <translation id="2225536596944493418">Сапраўды выдаліць гэтыя элементы (<ph name="NUMBER_OF_ITEMS" />)?</translation>
 <translation id="2230062665678605299">Не ўдалося стварыць папку "<ph name="FOLDER_NAME" />". <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">Аднавіць са сметніцы</translation>
 <translation id="2275059641601412272">Перамешчана.</translation>
 <translation id="2288278176040912387">Патэфон</translation>
 <translation id="2291538123825441971">Адкрываюцца некалькі файлаў (<ph name="NUMBER_OF_FILES" />) .</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_cs.xtb b/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
index 18bb4a80..9402a6ef 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">Instalovat aplikaci pro Linux</translation>
 <translation id="2225536596944493418">Opravdu chcete tyto položky (<ph name="NUMBER_OF_ITEMS" />) smazat?</translation>
 <translation id="2230062665678605299">Složku „<ph name="FOLDER_NAME" />“ se nepodařilo vytvořit. <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">Obnovit z koše</translation>
 <translation id="2275059641601412272">Přesunuto.</translation>
 <translation id="2288278176040912387">Gramofon</translation>
 <translation id="2291538123825441971">Otevírání <ph name="NUMBER_OF_FILES" /> souborů.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
index 23de134..98b6ce0 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
@@ -185,6 +185,7 @@
 <translation id="2949781154072577687">Formatting <ph name="DRIVE_NAME" />…</translation>
 <translation id="2951236788251446349">Jellyfish</translation>
 <translation id="2984337792991268709">Today <ph name="TODAY_DAYTIME" /></translation>
+<translation id="2994320653639462337">Restoring <ph name="COUNT" /> items…</translation>
 <translation id="2994669386200004489">Couldn't back up <ph name="FILE_NAME" /></translation>
 <translation id="299638574917407533">French (Canada)</translation>
 <translation id="3003633581067744647">Switch to thumbnail view</translation>
@@ -305,6 +306,7 @@
 <translation id="4364327530094270451">Melon</translation>
 <translation id="4372884569765913867">1 x 1</translation>
 <translation id="4394214039309501350">External link</translation>
+<translation id="4418686080762064601">Create a shortcut for your files</translation>
 <translation id="4425149324548788773">My Drive</translation>
 <translation id="4470564870223067757">Hangul 2 Set</translation>
 <translation id="4477002475007461989">Romanian</translation>
@@ -385,6 +387,7 @@
 <translation id="508423945471810158">Moving <ph name="NUMBER_OF_ITEMS" /> items to <ph name="FOLDER_NAME" /></translation>
 <translation id="509429900233858213">An error occurred.</translation>
 <translation id="5098629044894065541">Hebrew</translation>
+<translation id="5109254780565519649">An error occurred. Some items may not have been restored.</translation>
 <translation id="5110329002213341433">English (Canada)</translation>
 <translation id="5123433949759960244">Basketball</translation>
 <translation id="5129662217315786329">Polish</translation>
@@ -616,6 +619,7 @@
 <translation id="7547811415869834682">Dutch</translation>
 <translation id="7551643184018910560">Pin to shelf</translation>
 <translation id="7553492409867692754">Give Linux apps permission to access files in the <ph name="FOLDER_NAME" /> folder</translation>
+<translation id="7575645593344061397">Restoring '<ph name="FILENAME" />'…</translation>
 <translation id="7576032389798113292">6 x 4</translation>
 <translation id="7589661784326793847">Wait just a sec</translation>
 <translation id="7592775719802218421">Making <ph name="FILE_NAME" /> available offline</translation>
@@ -713,6 +717,7 @@
 <translation id="8395901698320285466">Dimensions</translation>
 <translation id="8437209419043462667">US</translation>
 <translation id="8456681095658380701">Invalid name</translation>
+<translation id="8461467696380332069">Right-click a file, and select 'Pin to shelf' for quick access to your files in shelf.</translation>
 <translation id="8463494891489624050">Vietnamese VIQR</translation>
 <translation id="8466234950814670489">Tar archive</translation>
 <translation id="8475647382427415476">Google Drive was unable to sync "<ph name="FILENAME" />" right now. Google Drive will try again later.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_eu.xtb b/ui/chromeos/translations/ui_chromeos_strings_eu.xtb
index 277406e..d69053e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_eu.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_eu.xtb
@@ -59,7 +59,7 @@
 <translation id="1576937952766665062">Bengaleraren transliterazioa</translation>
 <translation id="1589128298353575783"><ph name="NUMBER_OF_PB" /> PB</translation>
 <translation id="1620510694547887537">Kamera</translation>
-<translation id="162175252992296058">Portugaldarra, AEBko nazioarteko teklatuarekin</translation>
+<translation id="162175252992296058">Portugaldarra, nazioarteko teklatu estatubatuarrarekin</translation>
 <translation id="1641780993263690097">Txinatarra (pinyin)</translation>
 <translation id="1646019627374511909"><ph name="NUMBER_OF_ITEMS" /> fitxategi konexiorik gabe erabiltzeko deskargatzen</translation>
 <translation id="164969095109328410">Chrome gailua</translation>
@@ -110,7 +110,7 @@
 <translation id="2125607626296734455">Khmertarra</translation>
 <translation id="2142680004883808240">Errusiarra, YaZHert teklatu fonetikoarekin</translation>
 <translation id="2163152940313951844">Karaktere honek ez du balio: <ph name="CHARACTER_NAME" /></translation>
-<translation id="2184934335987813305">Portugaldarra, AEBko nazioarteko teklatuarekin (ordenagailuetarako)</translation>
+<translation id="2184934335987813305">Portugaldarra, nazioarteko teklatu estatubatuarrarekin (ordenagailurako)</translation>
 <translation id="2198315389084035571">Txinera (sinplifikatua)</translation>
 <translation id="2208158072373999562">ZIP artxiboa</translation>
 <translation id="22085916256174561">Korearra</translation>
@@ -236,7 +236,7 @@
 <translation id="3527085408025491307">Karpeta</translation>
 <translation id="3549797760399244642">Joan drive.google.com webgunera…</translation>
 <translation id="3553048479571901246">Fitxategiak <ph name="APP_NAME" /> aplikazioarekin irekitzeko, lehenik kopia itzazu Windows-eko fitxategien karpetan.</translation>
-<translation id="3556731189587832921">Ingelesa (AEB), nazioarteko teklatuarekin (ordenagailuetarako)</translation>
+<translation id="3556731189587832921">Ingelesa (AEB), nazioarteko teklatuarekin (ordenagailurako)</translation>
 <translation id="357479282490346887">Lituaniarra</translation>
 <translation id="3603385196401704894">Frantsesa (Kanada)</translation>
 <translation id="3606220979431771195">Turkierako F teklatua</translation>
@@ -471,7 +471,7 @@
 <translation id="5911887972742538906">Errore bat gertatu da Linux aplikazioa instalatzean.</translation>
 <translation id="5912396950572065471">Formatua</translation>
 <translation id="5913638992615760742">Ezin izan da kopiatu ustekabeko errore hau gertatu delako: <ph name="ERROR_MESSAGE" /></translation>
-<translation id="5926082595146149752">Nederlandarra (Herbehereak), AEBko nazioarteko teklatuarekin (ordenagailuetarako)</translation>
+<translation id="5926082595146149752">Nederlandarra (Herbehereak), nazioarteko teklatu estatubatuarrarekin (ordenagailurako)</translation>
 <translation id="5932901536148835538">Chromebit</translation>
 <translation id="5955954492236143329"><ph name="NUMBER_OF_ITEMS" /> elementu</translation>
 <translation id="5957366693331451795">Chromebox-ak</translation>
@@ -487,7 +487,7 @@
 <translation id="610101264611565198"><ph name="FILE_NAME" /> <ph name="FOLDER_NAME" /> karpetara eramaten</translation>
 <translation id="6129953537138746214">Zuriunea</translation>
 <translation id="6133173853026656527"><ph name="FILE_NAME" /> mugitzen…</translation>
-<translation id="613750717151263950">Japoniarra, AEBko teklatuarekin</translation>
+<translation id="613750717151263950">Japoniarra, teklatu estatubatuarrarekin</translation>
 <translation id="6146563240635539929">Bideoak</translation>
 <translation id="6150853954427645995">Fitxategia gordetzeko eta konexiorik gabe erabili ahal izateko, konekta zaitez berriro, egin klik eskuineko botoiarekin fitxategiaren gainean eta hautatu <ph name="OFFLINE_CHECKBOX_NAME" /> aukera.</translation>
 <translation id="6164412158936057769">Tximeletak</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
index 495cdd6..e65df3e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
@@ -185,6 +185,7 @@
 <translation id="2949781154072577687">«<ph name="DRIVE_NAME" />» կրիչը ձևաչափվում է…</translation>
 <translation id="2951236788251446349">Մեդուզա</translation>
 <translation id="2984337792991268709">Այսօր <ph name="TODAY_DAYTIME" />-ին</translation>
+<translation id="2994320653639462337"><ph name="COUNT" /> տարր վերականգնվում է…</translation>
 <translation id="2994669386200004489">Չհաջողվեց պահուստավորել <ph name="FILE_NAME" /> ֆայլը</translation>
 <translation id="299638574917407533">ֆրանսերեն (Կանադա)</translation>
 <translation id="3003633581067744647">Միացնել մանրապատկերի դիտակերպը</translation>
@@ -305,6 +306,7 @@
 <translation id="4364327530094270451">Սեխ</translation>
 <translation id="4372884569765913867">1 x 1</translation>
 <translation id="4394214039309501350">Արտաքին հղում</translation>
+<translation id="4418686080762064601">Ստեղծեք դյուրանցում ձեր ֆայլերի համար</translation>
 <translation id="4425149324548788773">Իմ դրայվը</translation>
 <translation id="4470564870223067757">Հանգուլ 2 Set</translation>
 <translation id="4477002475007461989">ռումիներեն</translation>
@@ -385,6 +387,7 @@
 <translation id="508423945471810158"><ph name="NUMBER_OF_ITEMS" /> տարր տեղափոխվում է «<ph name="FOLDER_NAME" />» պանակ</translation>
 <translation id="509429900233858213">Սխալ առաջացավ:</translation>
 <translation id="5098629044894065541">Եբրայական</translation>
+<translation id="5109254780565519649">Սխալ առաջացավ։ Հնարավոր է՝ որոշ տարրեր չեն վերականգնվել։</translation>
 <translation id="5110329002213341433">անգլերեն (Կանադա)</translation>
 <translation id="5123433949759960244">Բասկետբոլ</translation>
 <translation id="5129662217315786329">Լեհական</translation>
@@ -615,6 +618,7 @@
 <translation id="7547811415869834682">Հոլանդական</translation>
 <translation id="7551643184018910560">Ամրացնել դարակին</translation>
 <translation id="7553492409867692754">Հասանելի դարձրեք «<ph name="FOLDER_NAME" />» պանակի ֆայլերը Լինուքսին</translation>
+<translation id="7575645593344061397">«<ph name="FILENAME" />» ֆայլը վերականգնվում է…</translation>
 <translation id="7576032389798113292">6 x 4</translation>
 <translation id="7589661784326793847">Մեկ վայրկյան</translation>
 <translation id="7592775719802218421"><ph name="FILE_NAME" /> ֆայլը ներբեռնվում է</translation>
@@ -712,6 +716,7 @@
 <translation id="8395901698320285466">Չափեր</translation>
 <translation id="8437209419043462667">ԱՄՆ</translation>
 <translation id="8456681095658380701">Սխալ անուն</translation>
+<translation id="8461467696380332069">Ֆայլերը դարակում արագ բացելու համար մկնիկի աջ կոճակով սեղմեք ֆայլի վրա և ընտրեք «Ամրացնել դարակին»։</translation>
 <translation id="8463494891489624050">վիետնամերեն (VIQR ստեղնաշար)</translation>
 <translation id="8466234950814670489">Tar արխիվ</translation>
 <translation id="8475647382427415476">Google Drive-ը չկարողացավ համաժամացնել «<ph name="FILENAME" />» ֆայլը: Ավելի ուշ այն նորից կփորձի:</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_iw.xtb b/ui/chromeos/translations/ui_chromeos_strings_iw.xtb
index e6abe35..3fba416 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_iw.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_iw.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">‏התקנה עם Linux</translation>
 <translation id="2225536596944493418"><ph name="NUMBER_OF_ITEMS" /> פריטים יימחקו. להמשיך?</translation>
 <translation id="2230062665678605299">לא ניתן ליצור את התיקייה "<ph name="FOLDER_NAME" />". <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">שחזור מהאשפה</translation>
 <translation id="2275059641601412272">ההעברה הסתיימה.</translation>
 <translation id="2288278176040912387">פטיפון</translation>
 <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" /> קבצים נפתחים.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
index 1cd6bb5..d717714 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">Linux でのインストール</translation>
 <translation id="2225536596944493418"><ph name="NUMBER_OF_ITEMS" /> 個のアイテムを削除してもよろしいですか?</translation>
 <translation id="2230062665678605299">フォルダ「<ph name="FOLDER_NAME" />」を作成することができません。<ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">ゴミ箱から復元</translation>
 <translation id="2275059641601412272">移動しました。</translation>
 <translation id="2288278176040912387">レコード プレーヤー</translation>
 <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" /> 個のファイルを開いています。</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_km.xtb b/ui/chromeos/translations/ui_chromeos_strings_km.xtb
index b9149477..e8f09b2 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_km.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_km.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">ដំឡើង​តាមរយៈ Linux</translation>
 <translation id="2225536596944493418">តើអ្នកប្រាកដថា​ចង់លុបធាតុ <ph name="NUMBER_OF_ITEMS" /> ដែរទេ?</translation>
 <translation id="2230062665678605299">មិនអាចបង្កើតថតឯកសារ "<ph name="FOLDER_NAME" />". <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">ស្ដារពី​ធុងសំរាម</translation>
 <translation id="2275059641601412272">បានផ្លាស់ទី។</translation>
 <translation id="2288278176040912387">ឧបករណ៍ចាក់ថាស</translation>
 <translation id="2291538123825441971">កំពុងបើក​ឯកសារ <ph name="NUMBER_OF_FILES" />។</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ko.xtb b/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
index 881bf4ca..1d7d142 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">Linux 앱 설치</translation>
 <translation id="2225536596944493418">선택한 <ph name="NUMBER_OF_ITEMS" />개의 항목을 삭제하시겠습니까?</translation>
 <translation id="2230062665678605299">'<ph name="FOLDER_NAME" />' 폴더를 생성할 수 없습니다. <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">휴지통에서 복원</translation>
 <translation id="2275059641601412272">이동했습니다.</translation>
 <translation id="2288278176040912387">레코드 플레이어</translation>
 <translation id="2291538123825441971">파일 <ph name="NUMBER_OF_FILES" />개를 열고 있습니다.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_lt.xtb b/ui/chromeos/translations/ui_chromeos_strings_lt.xtb
index 84d26cb6..7faa2ac 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_lt.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_lt.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">Diegimas naudojant „Linux“</translation>
 <translation id="2225536596944493418">Ar tikrai norite ištrinti <ph name="NUMBER_OF_ITEMS" /> element.?</translation>
 <translation id="2230062665678605299">Nepavyko sukurti aplanko „<ph name="FOLDER_NAME" />“. <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">Atkurti iš šiukšliadėžės</translation>
 <translation id="2275059641601412272">Perkelta.</translation>
 <translation id="2288278176040912387">Grotuvas</translation>
 <translation id="2291538123825441971">Atidaroma failų: <ph name="NUMBER_OF_FILES" />.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ml.xtb b/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
index 73cb2d8..8fdc964 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">Linux ഉപയോഗിച്ച് ഇൻസ്‌റ്റാൾ ചെയ്യുക</translation>
 <translation id="2225536596944493418"><ph name="NUMBER_OF_ITEMS" /> ഇനങ്ങൾ ഇല്ലാതാക്കണമെന്ന് ഉറപ്പാണോ?</translation>
 <translation id="2230062665678605299">"<ph name="FOLDER_NAME" />" ഫോൾഡർ സൃഷ്‌ടിക്കാനാവില്ല. <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">ട്രാഷിൽ നിന്നും പുനഃസ്ഥാപിക്കുക</translation>
 <translation id="2275059641601412272">നീക്കി.</translation>
 <translation id="2288278176040912387">റെക്കോർഡ് പ്ലേയർ</translation>
 <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" /> ഫയലുകൾ തുറക്കുന്നു.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
index dd791f0..ab374d4 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
@@ -8,7 +8,7 @@
 <translation id="1060368002126861100">Aby otworzyć pliki w aplikacji <ph name="APP_NAME" />, najpierw przenieś je do folderu Pliki systemu Windows.</translation>
 <translation id="1062407476771304334">Zastąp</translation>
 <translation id="1119069657431255176">Archiwum Tar po kompresji Bzip2</translation>
-<translation id="1120073797882051782">Hangul Romaja</translation>
+<translation id="1120073797882051782">hangul romaja</translation>
 <translation id="112387589102719461">Angielski (USA) z klawiaturą programisty Dvoraka</translation>
 <translation id="1134697384939541955">Angielski (USA) z klawiaturą rozszerzoną</translation>
 <translation id="1148097584170732637">Znaleziono <ph name="FILE_COUNT" />.
@@ -17,7 +17,7 @@
     <ph name="LINE_BREAK2" />
     Wybierz mniej zdjęć.</translation>
 <translation id="1150565364351027703">Okulary przeciwsłoneczne</translation>
-<translation id="115443833402798225">Hangul Ahnmatae</translation>
+<translation id="115443833402798225">hangul ahnmatae</translation>
 <translation id="1155759005174418845">Kataloński</translation>
 <translation id="1172970565351728681">Zostało około <ph name="REMAINING_TIME" /></translation>
 <translation id="1173894706177603556">Zmień nazwę</translation>
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">Zainstaluj za pomocą Linuksa</translation>
 <translation id="2225536596944493418">Czy na pewno chcesz usunąć te elementy (<ph name="NUMBER_OF_ITEMS" />)?</translation>
 <translation id="2230062665678605299">Nie można utworzyć folderu „<ph name="FOLDER_NAME" />”. <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">Przywróć z kosza</translation>
 <translation id="2275059641601412272">Przeniesiono.</translation>
 <translation id="2288278176040912387">Gramofon</translation>
 <translation id="2291538123825441971">Otwieram pliki (<ph name="NUMBER_OF_FILES" />).</translation>
@@ -305,7 +306,7 @@
 <translation id="4372884569765913867">1 x 1</translation>
 <translation id="4394214039309501350">Link zewnętrzny</translation>
 <translation id="4425149324548788773">Mój dysk</translation>
-<translation id="4470564870223067757">Zestaw Hangul 2</translation>
+<translation id="4470564870223067757">zestaw Hangul 2</translation>
 <translation id="4477002475007461989">Rumuński</translation>
 <translation id="4477219268485577442">bułgarska klawiatura fonetyczna</translation>
 <translation id="4509667233588080747">Angielski (USA) z międzynarodową klawiaturą Workman</translation>
@@ -387,7 +388,7 @@
 <translation id="5110329002213341433">Angielski (Kanada)</translation>
 <translation id="5123433949759960244">Piłka do koszykówki</translation>
 <translation id="5129662217315786329">polski</translation>
-<translation id="5144820558584035333">Zestaw Hangul 3 (390)</translation>
+<translation id="5144820558584035333">zestaw Hangul 3 (390)</translation>
 <translation id="5145331109270917438">Data modyfikacji</translation>
 <translation id="515594325917491223">Szachy</translation>
 <translation id="5158593464696388225">Nie udało się zapisać obrazu.</translation>
@@ -461,7 +462,7 @@
 <translation id="5804245609861364054">Kannada – transliteracja</translation>
 <translation id="5817397429773072584">chiński tradycyjny</translation>
 <translation id="5818003990515275822">Koreański</translation>
-<translation id="5819442873484330149">Zestaw Hangul 3 (ostateczny)</translation>
+<translation id="5819442873484330149">zestaw Hangul 3 (ostateczny)</translation>
 <translation id="5833610766403489739">Plik gdzieś się zawieruszył. Sprawdź ustawienie lokalizacji pobierania i spróbuj ponownie.</translation>
 <translation id="5838451609423551646">Usunięto wszystkie elementy z zaznaczenia.</translation>
 <translation id="5838825566232597749">Amerykańska klawiatura międzynarodowa Workman</translation>
@@ -548,7 +549,7 @@
 <translation id="6862635236584086457">Wszystkie pliki przechowywane w tym folderze są automatycznie zapisywane online</translation>
 <translation id="6864328437977279120">Sanskryt</translation>
 <translation id="6876155724392614295">Rower</translation>
-<translation id="6878261347041253038">Klawiatura dewanagari (fonetyczna)</translation>
+<translation id="6878261347041253038">klawiatura dewanagari (fonetyczna)</translation>
 <translation id="6885780034956018177">Ślimak</translation>
 <translation id="6896758677409633944">Kopiuj</translation>
 <translation id="6898028766943174120">Więcej podfolderów…</translation>
@@ -598,7 +599,7 @@
 <translation id="7359359531237882347">Kopiuję elementy (<ph name="NUMBER_OF_ITEMS" />)...</translation>
 <translation id="7375951387215729722">Lista plików posortowana według kolumny <ph name="COLUMN_NAME" /> w kolejności malejącej.</translation>
 <translation id="7408870451288633753">Czeski</translation>
-<translation id="7417453074306512035">Klawiatura etiopska</translation>
+<translation id="7417453074306512035">klawiatura etiopska</translation>
 <translation id="7417705661718309329">Mapa Google</translation>
 <translation id="7460898608667578234">Ukraiński</translation>
 <translation id="7489215562877293245">Znaleziono <ph name="FILE_COUNT" />
@@ -699,7 +700,7 @@
 <translation id="8269755669432358899">Zwiń panele informacji zwrotnej o plikach</translation>
 <translation id="8280151743281770066">ormiańska klawiatura fonetyczna</translation>
 <translation id="8294431847097064396">Źródło</translation>
-<translation id="8297012244086013755">Zestaw Hangul 3 (bez Shiftu)</translation>
+<translation id="8297012244086013755">zestaw Hangul 3 (bez Shiftu)</translation>
 <translation id="8299269255470343364">Japoński</translation>
 <translation id="8312871300878166382">Wklej do folderu</translation>
 <translation id="8329978297633540474">Zwykły tekst</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sl.xtb b/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
index ad4f3718..b55472ad 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">Namestitev z Linuxom</translation>
 <translation id="2225536596944493418">Ali ste prepričani, da želite izbrisati toliko elementov: <ph name="NUMBER_OF_ITEMS" />?</translation>
 <translation id="2230062665678605299">Ni bilo mogoče ustvariti mape »<ph name="FOLDER_NAME" />«. <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">Obnovi iz smetnjaka</translation>
 <translation id="2275059641601412272">Premaknjeno.</translation>
 <translation id="2288278176040912387">Gramofon</translation>
 <translation id="2291538123825441971">Odpiranje toliko datotek: <ph name="NUMBER_OF_FILES" />.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
index c36e6d8..5221d4d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">Linux ile yükle</translation>
 <translation id="2225536596944493418"><ph name="NUMBER_OF_ITEMS" /> öğeyi silmek istediğiniz emin misiniz?</translation>
 <translation id="2230062665678605299">"<ph name="FOLDER_NAME" />" klasörü oluşturulamıyor. <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">Çöp kutusundan geri yükle</translation>
 <translation id="2275059641601412272">Taşındı.</translation>
 <translation id="2288278176040912387">Plak çalar</translation>
 <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" /> dosya açılıyor.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_uk.xtb b/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
index f2017f1d..022bbc41 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">Установити для Linux</translation>
 <translation id="2225536596944493418">Видалити елементи (<ph name="NUMBER_OF_ITEMS" />)?</translation>
 <translation id="2230062665678605299">Не вдається створити папку "<ph name="FOLDER_NAME" />". <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">Відновити з кошика</translation>
 <translation id="2275059641601412272">Переміщено.</translation>
 <translation id="2288278176040912387">Грамофон</translation>
 <translation id="2291538123825441971">Відкриваються файли (<ph name="NUMBER_OF_FILES" />).</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ur.xtb b/ui/chromeos/translations/ui_chromeos_strings_ur.xtb
index ed8977d..39facfd 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ur.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ur.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">‏Linux کے ساتھ انسٹال کریں</translation>
 <translation id="2225536596944493418">‏کیا آپ واقعی ‎<ph name="NUMBER_OF_ITEMS" /> آئٹمز حذف کرنا چاہتے ہیں؟</translation>
 <translation id="2230062665678605299">فولڈر "<ph name="FOLDER_NAME" />" بنانے سے قاصر۔ <ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">کوڑے دان سے بحال کریں</translation>
 <translation id="2275059641601412272">منتقل ہو گیا۔</translation>
 <translation id="2288278176040912387">ریکارڈ پلیئر</translation>
 <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" /> فائلیں کھل رہی ہیں۔</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
index 325c60f..b5de04d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">透過 Linux 安裝</translation>
 <translation id="2225536596944493418">您確定要刪除<ph name="NUMBER_OF_ITEMS" /> 個項目嗎?</translation>
 <translation id="2230062665678605299">無法建立資料夾「<ph name="FOLDER_NAME" />」。<ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">從垃圾桶還原</translation>
 <translation id="2275059641601412272">已移動。</translation>
 <translation id="2288278176040912387">唱機</translation>
 <translation id="2291538123825441971">開緊 <ph name="NUMBER_OF_FILES" /> 個檔案。</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
index c94dbef..96f194b 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
@@ -117,6 +117,7 @@
 <translation id="2208919847696382164">透過 Linux 執行安裝程序</translation>
 <translation id="2225536596944493418">你確定要刪除 <ph name="NUMBER_OF_ITEMS" /> 個項目嗎?</translation>
 <translation id="2230062665678605299">無法建立資料夾「<ph name="FOLDER_NAME" />」。<ph name="ERROR_MESSAGE" /></translation>
+<translation id="2251368349685848079">從垃圾桶還原</translation>
 <translation id="2275059641601412272">已移動。</translation>
 <translation id="2288278176040912387">唱機</translation>
 <translation id="2291538123825441971">正在開啟 <ph name="NUMBER_OF_FILES" /> 個檔案。</translation>
diff --git a/ui/gfx/linux/client_native_pixmap_dmabuf.cc b/ui/gfx/linux/client_native_pixmap_dmabuf.cc
index ca5440a3..49b24a2 100644
--- a/ui/gfx/linux/client_native_pixmap_dmabuf.cc
+++ b/ui/gfx/linux/client_native_pixmap_dmabuf.cc
@@ -94,16 +94,6 @@
 bool ClientNativePixmapDmaBuf::IsConfigurationSupported(
     gfx::BufferFormat format,
     gfx::BufferUsage usage) {
-#if BUILDFLAG(IS_CHROMECAST)
-  switch (usage) {
-    case gfx::BufferUsage::GPU_READ_CPU_READ_WRITE:
-      // TODO(spang): Fix b/121148905 and turn these back on.
-      return false;
-    default:
-      break;
-  }
-#endif
-
   bool disable_yuv_biplanar = true;
 #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMECAST)
   // IsConfigurationSupported(SCANOUT_CPU_READ_WRITE) is used by the renderer
diff --git a/ui/gl/test/gl_surface_test_support.cc b/ui/gl/test/gl_surface_test_support.cc
index 813b743e1..5c6dbe0 100644
--- a/ui/gl/test/gl_surface_test_support.cc
+++ b/ui/gl/test/gl_surface_test_support.cc
@@ -66,9 +66,30 @@
   DCHECK(!allowed_impls.empty());
 
   GLImplementation impl = allowed_impls[0];
-  if (use_software_gl)
+  if (use_software_gl) {
     impl = gl::GetSoftwareGLImplementation();
 
+#if !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
+#if defined(USE_OZONE)
+    if (!features::IsUsingOzonePlatform())
+#endif
+    {
+      // If ANGLE is available use it with SwiftShader Vulkan instead of using
+      // SwiftShader GL
+      for (auto i : allowed_impls) {
+        if (i == kGLImplementationEGLANGLE) {
+          impl = kGLImplementationEGLANGLE;
+          base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+              switches::kUseANGLE, kANGLEImplementationSwiftShaderName);
+          base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+              switches::kUseCmdDecoder, kCmdDecoderValidatingName);
+          break;
+        }
+      }
+    }
+#endif
+  }
+
   DCHECK(!base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kUseGL))
       << "kUseGL has not effect in tests";
 
diff --git a/ui/ozone/common/features.cc b/ui/ozone/common/features.cc
index 02f03c4..d368e90 100644
--- a/ui/ozone/common/features.cc
+++ b/ui/ozone/common/features.cc
@@ -8,14 +8,8 @@
 
 namespace ui {
 
-const base::Feature kWaylandOverlayDelegation {
-  "WaylandOverlayDelegation",
-#if BUILDFLAG(IS_CHROMEOS_LACROS)
-      base::FEATURE_ENABLED_BY_DEFAULT
-#else
-      base::FEATURE_DISABLED_BY_DEFAULT
-#endif
-};
+const base::Feature kWaylandOverlayDelegation{"WaylandOverlayDelegation",
+                                              base::FEATURE_ENABLED_BY_DEFAULT};
 
 bool IsWaylandOverlayDelegationEnabled() {
   return base::FeatureList::IsEnabled(kWaylandOverlayDelegation);
diff --git a/ui/ozone/platform/drm/common/drm_util.cc b/ui/ozone/platform/drm/common/drm_util.cc
index e712bbd..a07d725 100644
--- a/ui/ozone/platform/drm/common/drm_util.cc
+++ b/ui/ozone/platform/drm/common/drm_util.cc
@@ -554,6 +554,8 @@
       return DRM_FORMAT_NV12;
     case gfx::BufferFormat::YVU_420:
       return DRM_FORMAT_YVU420;
+    case gfx::BufferFormat::P010:
+      return DRM_FORMAT_P010;
     default:
       NOTREACHED();
       return 0;
diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory_unittest.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory_unittest.cc
index 506b122..310d4a9 100644
--- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory_unittest.cc
+++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory_unittest.cc
@@ -204,221 +204,10 @@
 };
 
 TEST_P(WaylandSurfaceFactoryTest,
-       GbmSurfacelessWaylandCheckOrderOfCallbacksTest) {
-  gl::SetGLImplementation(gl::kGLImplementationEGLGLES2);
-
-  buffer_manager_gpu_->set_gbm_device(std::make_unique<MockGbmDevice>());
-
-  auto* gl_ozone = surface_factory_->GetGLOzone(gl::kGLImplementationEGLGLES2);
-  auto gl_surface = gl_ozone->CreateSurfacelessViewGLSurface(widget_);
-  EXPECT_TRUE(gl_surface);
-  gl_surface->SetRelyOnImplicitSync();
-  static_cast<ui::GbmSurfacelessWayland*>(gl_surface.get())
-      ->SetNoGLFlushForTests();
-
-  // Expect to create 3 buffers.
-  EXPECT_CALL(*server_.zwp_linux_dmabuf_v1(), CreateParams(_, _, _)).Times(3);
-
-  // Create buffers and FakeGlImageNativePixmap.
-  std::vector<scoped_refptr<FakeGLImageNativePixmap>> fake_gl_image;
-  for (int i = 0; i < 3; ++i) {
-    auto native_pixmap = surface_factory_->CreateNativePixmap(
-        widget_, nullptr, window_->GetBounds().size(),
-        gfx::BufferFormat::BGRA_8888, gfx::BufferUsage::SCANOUT);
-    fake_gl_image.push_back(base::MakeRefCounted<FakeGLImageNativePixmap>(
-        native_pixmap, window_->GetBounds().size()));
-
-    Sync();
-
-    // Create one buffer at a time.
-    auto params_vector = server_.zwp_linux_dmabuf_v1()->buffer_params();
-    DCHECK_EQ(params_vector.size(), 1u);
-    zwp_linux_buffer_params_v1_send_created(
-        params_vector.front()->resource(),
-        params_vector.front()->buffer_resource());
-
-    Sync();
-  }
-
-  // Now, schedule 3 buffers for swap.
-  auto* mock_surface = server_.GetObject<wl::MockSurface>(
-      window_->root_surface()->GetSurfaceId());
-
-  CallbacksHelper cbs_helper;
-  // Submit all the available buffers.
-  for (const auto& gl_image : fake_gl_image) {
-    // Associate each image with swap id so that we could track released
-    // buffers.
-    auto swap_id = cbs_helper.GetNextLocalSwapId();
-    // Associate the image with the next swap id so that we can easily track if
-    // it became free to reuse.
-    gl_image->AssociateWithSwapId(swap_id);
-    // And set it to be busy...
-    gl_image->SetBusy(true);
-
-    // Prepare overlay plane.
-    gl_surface->ScheduleOverlayPlane(
-        INT32_MIN, gfx::OverlayTransform::OVERLAY_TRANSFORM_FLIP_VERTICAL,
-        gl_image.get(), window_->GetBounds(), {}, false, nullptr);
-
-    std::vector<scoped_refptr<FakeGLImageNativePixmap>> gl_images;
-    gl_images.push_back(gl_image);
-
-    // And submit each image. They will be executed in FIFO manner.
-    gl_surface->SwapBuffersAsync(
-        base::BindOnce(&CallbacksHelper::FinishSwapBuffersAsync,
-                       base::Unretained(&cbs_helper), swap_id, gl_images),
-        base::BindOnce(&CallbacksHelper::BufferPresented,
-                       base::Unretained(&cbs_helper), swap_id));
-  }
-
-  // Let's sync so that 1) GbmSurfacelessWayland submits the buffer according to
-  // internal queue and fake server processes the request.
-
-  // Also, we expect only one buffer to be committed.
-  EXPECT_CALL(*mock_surface, Attach(_, _, _)).Times(1);
-  EXPECT_CALL(*mock_surface, Frame(_)).Times(1);
-  EXPECT_CALL(*mock_surface, DamageBuffer(_, _, _, _)).Times(1);
-  EXPECT_CALL(*mock_surface, Commit()).Times(1);
-
-  Sync();
-
-  testing::Mock::VerifyAndClearExpectations(&mock_surface);
-
-  // Give mojo the chance to pass the callbacks.
-  base::RunLoop().RunUntilIdle();
-
-  // We have just received Attach/DamageBuffer/Commit for buffer with swap
-  // id=0u. The SwapCompletionCallback must be executed automatically as long as
-  // we didn't have any buffers attached to the surface before.
-  EXPECT_EQ(cbs_helper.GetLastFinishedSwapId(), 0u);
-
-  cbs_helper.ResetLastFinishedSwapId();
-
-  for (const auto& gl_image : fake_gl_image) {
-    // All the images except the first one, which was associated with swap
-    // id=0u, must be busy and not displayed. The first one must be displayed.
-    if (gl_image->GetAssociateWithSwapId() == 0u) {
-      EXPECT_FALSE(gl_image->busy());
-      EXPECT_TRUE(gl_image->displayed());
-    } else {
-      EXPECT_TRUE(gl_image->busy());
-      EXPECT_FALSE(gl_image->displayed());
-    }
-  }
-
-  // Expect buffer for swap with id=1u to be committed.
-  EXPECT_CALL(*mock_surface, Attach(_, _, _)).Times(1);
-  EXPECT_CALL(*mock_surface, Frame(_)).Times(1);
-  EXPECT_CALL(*mock_surface, DamageBuffer(_, _, _, _)).Times(1);
-  EXPECT_CALL(*mock_surface, Commit()).Times(1);
-
-  // Send the frame callback so that pending buffer for swap id=1u is processed
-  // and swapped.
-  mock_surface->SendFrameCallback();
-
-  Sync();
-
-  // Give mojo the chance to pass the callbacks.
-  base::RunLoop().RunUntilIdle();
-
-  // Even though the second buffer was submitted, we mustn't receive
-  // SwapCompletionCallback until the previous buffer is released.
-  EXPECT_EQ(cbs_helper.GetLastFinishedSwapId(),
-            std::numeric_limits<uint32_t>::max());
-
-  // This will result in Wayland server releasing previously attached buffer for
-  // swap id=0u and calling OnSubmission for buffer with swap id=1u.
-  mock_surface->ReleaseBuffer(mock_surface->prev_attached_buffer());
-
-  Sync();
-
-  // Give mojo the chance to pass the callbacks.
-  base::RunLoop().RunUntilIdle();
-
-  // We expect only one buffer to be released. Thus, the last swap id must be
-  // 0 as we waited until next buffer was attached to the surface.
-  EXPECT_EQ(cbs_helper.GetLastFinishedSwapId(), 1u);
-
-  // Reset to test further swap ids.
-  cbs_helper.ResetLastFinishedSwapId();
-
-  for (const auto& gl_image : fake_gl_image) {
-    // The first image is not displayed and not busy, the second is displayed
-    // and not busy. And others are not display and busy.
-    if (gl_image->GetAssociateWithSwapId() == 0u) {
-      EXPECT_FALSE(gl_image->busy());
-      EXPECT_FALSE(gl_image->displayed());
-    } else if (gl_image->GetAssociateWithSwapId() == 1u) {
-      EXPECT_FALSE(gl_image->busy());
-      EXPECT_TRUE(gl_image->displayed());
-    } else {
-      EXPECT_TRUE(gl_image->busy());
-      EXPECT_FALSE(gl_image->displayed());
-    }
-  }
-
-  EXPECT_CALL(*mock_surface, Attach(_, _, _)).Times(1);
-  EXPECT_CALL(*mock_surface, Frame(_)).Times(1);
-  EXPECT_CALL(*mock_surface, DamageBuffer(_, _, _, _)).Times(1);
-  EXPECT_CALL(*mock_surface, Commit()).Times(1);
-
-  // Send the frame callback, so that the pending buffer with swap id=2u can
-  // be processed.
-  mock_surface->SendFrameCallback();
-
-  Sync();
-
-  // Give mojo the chance to pass the callbacks.
-  base::RunLoop().RunUntilIdle();
-
-  // Even though the second buffer was submitted, we mustn't receive
-  // SwapCompletionCallback until the previous buffer is released.
-  EXPECT_EQ(cbs_helper.GetLastFinishedSwapId(),
-            std::numeric_limits<uint32_t>::max());
-
-  // This will result in Wayland server releasing previously attached buffer for
-  // swap id=1u and calling OnSubmission for buffer with swap id=2u.
-  mock_surface->ReleaseBuffer(mock_surface->prev_attached_buffer());
-
-  Sync();
-
-  // Give mojo the chance to pass the callbacks.
-  base::RunLoop().RunUntilIdle();
-
-  // We should receive next callbacks for the next swap id.
-  EXPECT_EQ(cbs_helper.GetLastFinishedSwapId(), 2u);
-
-  cbs_helper.ResetLastFinishedSwapId();
-
-  // All images must be free now and the last one is displayed.
-  for (const auto& gl_image : fake_gl_image) {
-    if (gl_image->GetAssociateWithSwapId() == 2u) {
-      EXPECT_TRUE(gl_image->displayed());
-      EXPECT_FALSE(gl_image->busy());
-    } else {
-      EXPECT_FALSE(gl_image->displayed());
-      EXPECT_FALSE(gl_image->busy());
-    }
-  }
-
-  // There are no buffers left. Send last frame callback and verify that.
-  EXPECT_CALL(*mock_surface, Attach(_, _, _)).Times(0);
-  EXPECT_CALL(*mock_surface, Frame(_)).Times(0);
-  EXPECT_CALL(*mock_surface, DamageBuffer(_, _, _, _)).Times(0);
-  EXPECT_CALL(*mock_surface, Commit()).Times(0);
-
-  // Send a frame callback so that the WaylandBufferManagerHost processes the
-  // pending buffers if any exist.
-  mock_surface->SendFrameCallback();
-}
-
-TEST_P(WaylandSurfaceFactoryTest,
        GbmSurfacelessWaylandCommitOverlaysCallbacksTest) {
-  // GbmSurfacelessWaylandCheckOrderOfCallbacksTest tests with one buffer per
-  // frame. This tests multiple buffers per-frame and order of
-  // SwapCompletionCallbacks. Even when all OnSubmission from later frames are
-  // called, their SwapCompletionCallbacks should not run until previous frames'
+  // This tests multiple buffers per-frame and order of SwapCompletionCallbacks.
+  // Even when all OnSubmission from later frames are called, their
+  // SwapCompletionCallbacks should not run until previous frames'
   // SwapCompletionCallbacks run.
   gl::SetGLImplementation(gl::kGLImplementationEGLGLES2);
 
@@ -493,10 +282,10 @@
 
   // Also, we expect only one buffer to be committed.
   EXPECT_CALL(*mock_primary_surface, Attach(_, _, _)).Times(1);
-  EXPECT_CALL(*mock_primary_surface, Frame(_)).Times(0);
+  EXPECT_CALL(*mock_primary_surface, Frame(_)).Times(1);
   EXPECT_CALL(*mock_primary_surface, DamageBuffer(_, _, _, _)).Times(1);
   EXPECT_CALL(*mock_primary_surface, Commit()).Times(1);
-  EXPECT_CALL(*root_surface, Frame(_)).Times(1);
+  EXPECT_CALL(*root_surface, Frame(_)).Times(0);
   EXPECT_CALL(*root_surface, Commit()).Times(1);
 
   Sync();
@@ -553,15 +342,15 @@
 
   // Expect one buffer to be committed.
   EXPECT_CALL(*mock_primary_surface, Attach(_, _, _)).Times(1);
-  EXPECT_CALL(*mock_primary_surface, Frame(_)).Times(0);
+  EXPECT_CALL(*mock_primary_surface, Frame(_)).Times(1);
   EXPECT_CALL(*mock_primary_surface, DamageBuffer(_, _, _, _)).Times(1);
   EXPECT_CALL(*mock_primary_surface, Commit()).Times(1);
-  EXPECT_CALL(*root_surface, Frame(_)).Times(1);
+  EXPECT_CALL(*root_surface, Frame(_)).Times(0);
   EXPECT_CALL(*root_surface, Commit()).Times(1);
 
   // Send the frame callback so that pending buffer for swap id=1u is processed
   // and swapped.
-  root_surface->SendFrameCallback();
+  mock_primary_surface->SendFrameCallback();
 
   Sync();
 
@@ -620,12 +409,12 @@
   EXPECT_CALL(*mock_primary_surface, DamageBuffer(_, _, _, _)).Times(0);
   EXPECT_CALL(*mock_primary_surface, Commit()).Times(0);
   // Expect root surface to be committed.
-  EXPECT_CALL(*root_surface, Frame(_)).Times(1);
+  EXPECT_CALL(*root_surface, Frame(_)).Times(0);
   EXPECT_CALL(*root_surface, Commit()).Times(1);
 
   // Send the frame callback so that pending buffer for swap id=2u is processed
   // and swapped.
-  root_surface->SendFrameCallback();
+  mock_primary_surface->SendFrameCallback();
 
   Sync();
 
@@ -754,10 +543,10 @@
 
   // Also, we expect primary buffer to be committed.
   EXPECT_CALL(*mock_primary_surface, Attach(_, _, _)).Times(1);
-  EXPECT_CALL(*mock_primary_surface, Frame(_)).Times(0);
+  EXPECT_CALL(*mock_primary_surface, Frame(_)).Times(1);
   EXPECT_CALL(*mock_primary_surface, DamageBuffer(_, _, _, _)).Times(1);
   EXPECT_CALL(*mock_primary_surface, Commit()).Times(1);
-  EXPECT_CALL(*root_surface, Frame(_)).Times(1);
+  EXPECT_CALL(*root_surface, Frame(_)).Times(0);
   EXPECT_CALL(*root_surface, Commit()).Times(1);
 
   Sync();
@@ -829,23 +618,24 @@
 
   // Expect primary buffer to be committed.
   EXPECT_CALL(*mock_primary_surface, Attach(_, _, _)).Times(1);
-  EXPECT_CALL(*mock_primary_surface, Frame(_)).Times(0);
+  EXPECT_CALL(*mock_primary_surface, Frame(_)).Times(1);
   EXPECT_CALL(*mock_primary_surface, DamageBuffer(_, _, _, _)).Times(1);
   EXPECT_CALL(*mock_primary_surface, Commit()).Times(1);
 
   // Expect overlay buffer to be committed.
   EXPECT_CALL(*mock_overlay_surface, Attach(_, _, _)).Times(1);
-  EXPECT_CALL(*mock_overlay_surface, Frame(_)).Times(0);
+  EXPECT_CALL(*mock_overlay_surface, Frame(_)).Times(1);
   EXPECT_CALL(*mock_overlay_surface, DamageBuffer(_, _, _, _)).Times(1);
   EXPECT_CALL(*mock_overlay_surface, Commit()).Times(1);
 
   // Expect root surface to be committed without buffer.
-  EXPECT_CALL(*root_surface, Frame(_)).Times(1);
+  EXPECT_CALL(*root_surface, Frame(_)).Times(0);
   EXPECT_CALL(*root_surface, Commit()).Times(1);
 
   // Send the frame callback so that pending buffer for swap id=1u is processed
   // and swapped.
-  root_surface->SendFrameCallback();
+  mock_overlay_surface->SendFrameCallback();
+  mock_primary_surface->SendFrameCallback();
 
   Sync();
 
diff --git a/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.cc b/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.cc
index d6994f11..69f884e 100644
--- a/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.cc
+++ b/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.cc
@@ -7,7 +7,9 @@
 #include <presentation-time-client-protocol.h>
 #include <memory>
 
+#include "base/bind.h"
 #include "base/i18n/number_formatting.h"
+#include "base/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/current_thread.h"
@@ -59,6 +61,34 @@
 
 }  // namespace
 
+struct WaylandBufferManagerHost::Frame {
+  explicit Frame(WaylandSurface* root_surface)
+      : root_surface(root_surface), weak_factory(this) {}
+  void IncrementPendingActions() { ++pending_actions; }
+  void PendingActionComplete() {
+    CHECK_GT(pending_actions, 0u);
+    if (!--pending_actions)
+      std::move(frame_commit_cb).Run();
+  }
+
+  // |root_surface| and |buffer_id| are saved so this Frame can be destroyed to
+  // prevent running |frame_commit_cb| in case the corresponding surface/buffer
+  // is removed.
+  WaylandSurface* root_surface;
+  uint32_t buffer_id = 0u;
+
+  // Number of actions to be completed before |frame_commit_cb| is run
+  // automatically. Such actions include:
+  //   1) End Frame;
+  //   2) Commit of a subsurface in this frame;
+  size_t pending_actions = 0u;
+
+  // This runs WaylandBufferManagerHost::Surface::CommitBuffer() of
+  // |root_surface| with |buffer_id|.
+  base::OnceCallback<bool()> frame_commit_cb;
+  base::WeakPtrFactory<WaylandBufferManagerHost::Frame> weak_factory;
+};
+
 class WaylandBufferManagerHost::Surface {
  public:
   Surface(WaylandSurface* wayland_surface,
@@ -73,7 +103,9 @@
       uint32_t buffer_id,
       const gfx::Rect& damage_region,
       bool wait_for_frame_callback,
+      base::OnceClosure post_commit_cb,
       gfx::GpuFenceHandle access_fence_handle = gfx::GpuFenceHandle()) {
+    DCHECK(!post_commit_cb.is_null());
     // The window has already been destroyed.
     if (!wayland_surface_)
       return true;
@@ -81,7 +113,8 @@
     // This is a buffer-less commit, do not lookup buffers.
     if (buffer_id == kInvalidBufferId) {
       DCHECK(access_fence_handle.is_null());
-      pending_commits_.push_back({nullptr, wait_for_frame_callback, nullptr});
+      pending_commits_.push_back({nullptr, wait_for_frame_callback, nullptr,
+                                  std::move(post_commit_cb)});
       MaybeProcessPendingBuffer();
       return true;
     }
@@ -113,7 +146,8 @@
 
     pending_commits_.push_back(
         {buffer, wait_for_frame_callback,
-         std::make_unique<gfx::GpuFence>(std::move(access_fence_handle))});
+         std::make_unique<gfx::GpuFence>(std::move(access_fence_handle)),
+         std::move(post_commit_cb)});
     MaybeProcessPendingBuffer();
     return true;
   }
@@ -128,8 +162,10 @@
       MaybeProcessSubmittedBuffers();
       for (auto it = pending_commits_.begin(); it != pending_commits_.end();
            ++it) {
-        if (it->buffer == buffer)
+        if (it->buffer == buffer) {
+          std::move(it->post_commit_cb).Run();
           pending_commits_.erase(it++);
+        }
       }
     }
 
@@ -161,6 +197,8 @@
     ResetSurfaceContents();
 
     submitted_buffers_.clear();
+    for (auto& pending_commit : pending_commits_)
+      std::move(pending_commit.post_commit_cb).Run();
     pending_commits_.clear();
 
     connection_->ScheduleFlush();
@@ -236,6 +274,8 @@
     // Fence to wait on before the |buffer| content is available to read by
     // Wayland host.
     std::unique_ptr<gfx::GpuFence> access_fence;
+    // Callback to run once this commit is applied.
+    base::OnceClosure post_commit_cb;
   };
 
   bool CommitBufferInternal(WaylandBuffer* buffer,
@@ -581,6 +621,7 @@
       if (commit.wait_for_callback)
         SetupFrameCallback();
       CommitSurface();
+      std::move(commit.post_commit_cb).Run();
       connection_->ScheduleFlush();
       MaybeProcessSubmittedBuffers();
       return;
@@ -588,6 +629,7 @@
 
     CommitBufferInternal(commit.buffer, commit.wait_for_callback,
                          commit.access_fence->GetGpuFenceHandle());
+    std::move(commit.post_commit_cb).Run();
   }
 
   // Widget this helper surface backs and has 1:1 relationship with the
@@ -660,6 +702,8 @@
     surface_graveyard_.emplace_back(std::move(it->second));
   }
   surfaces_.erase(it);
+
+  RemovePendingFrames(window->root_surface(), 0u);
 }
 
 void WaylandBufferManagerHost::OnWindowConfigured(WaylandWindow* window) {
@@ -690,6 +734,8 @@
     surface_graveyard_.emplace_back(std::move(it->second));
   }
   surfaces_.erase(it);
+
+  RemovePendingFrames(subsurface->wayland_surface(), 0u);
 }
 
 void WaylandBufferManagerHost::SetSurfaceConfigured(WaylandSurface* surface) {
@@ -724,6 +770,7 @@
     surface_pair.second->ClearState();
 
   anonymous_buffers_.clear();
+  pending_frames_.clear();
 }
 
 wl::BufferFormatsWithModifiersMap
@@ -824,11 +871,50 @@
   connection_->ScheduleFlush();
 }
 
+void WaylandBufferManagerHost::StartFrame(WaylandSurface* root_surface) {
+  RemovePendingFrames(nullptr, 0u);
+  DCHECK_LE(pending_frames_.size(), 10u);
+  pending_frames_.push_back(
+      std::make_unique<WaylandBufferManagerHost::Frame>(root_surface));
+  pending_frames_.back()->IncrementPendingActions();
+}
+
+void WaylandBufferManagerHost::EndFrame(uint32_t buffer_id) {
+  DCHECK(base::CurrentUIThread::IsSet());
+
+  DCHECK(!pending_frames_.empty());
+  pending_frames_.back()->buffer_id = buffer_id;
+  Surface* surface = GetSurface(pending_frames_.back()->root_surface);
+  if (!surface) {
+    pending_frames_.erase(--pending_frames_.end());
+    return;
+  }
+
+  base::OnceClosure post_commit_cb = base::DoNothing();
+  pending_frames_.back()->frame_commit_cb =
+      base::BindOnce(&WaylandBufferManagerHost::Surface::CommitBuffer,
+                     base::Unretained(surface), buffer_id, gfx::Rect(), false,
+                     std::move(post_commit_cb), gfx::GpuFenceHandle());
+
+  pending_frames_.back()->PendingActionComplete();
+}
+
+void WaylandBufferManagerHost::RemovePendingFrames(WaylandSurface* root_surface,
+                                                   uint32_t buffer_id) {
+  base::EraseIf(pending_frames_,
+                [buffer_id, root_surface](const std::unique_ptr<Frame>& frame) {
+                  return !frame->pending_actions ||
+                         (frame->buffer_id == buffer_id && buffer_id) ||
+                         (frame->root_surface == root_surface && root_surface);
+                });
+}
+
 bool WaylandBufferManagerHost::CommitBufferInternal(
     WaylandSurface* wayland_surface,
     uint32_t buffer_id,
     const gfx::Rect& damage_region,
     bool wait_for_frame_callback,
+    bool commit_synced_subsurface,
     gfx::GpuFenceHandle access_fence_handle) {
   DCHECK(base::CurrentUIThread::IsSet());
 
@@ -836,7 +922,16 @@
   if (!surface || !ValidateBufferIdFromGpu(buffer_id))
     return false;
 
+  base::OnceClosure subsurface_committed_cb = base::DoNothing();
+  if (!pending_frames_.empty() && commit_synced_subsurface) {
+    pending_frames_.back()->IncrementPendingActions();
+    subsurface_committed_cb.Reset();
+    subsurface_committed_cb =
+        base::BindOnce(&WaylandBufferManagerHost::Frame::PendingActionComplete,
+                       pending_frames_.back()->weak_factory.GetWeakPtr());
+  }
   if (!surface->CommitBuffer(buffer_id, damage_region, wait_for_frame_callback,
+                             std::move(subsurface_committed_cb),
                              std::move(access_fence_handle))) {
     error_message_ =
         base::StrCat({"Buffer with ", NumberToString(buffer_id),
@@ -848,24 +943,6 @@
   return true;
 }
 
-bool WaylandBufferManagerHost::CommitWithoutBufferInternal(
-    WaylandSurface* wayland_surface,
-    bool wait_for_frame_callback) {
-  DCHECK(base::CurrentUIThread::IsSet());
-
-  Surface* surface = GetSurface(wayland_surface);
-  if (!surface)
-    return false;
-
-  bool result = surface->CommitBuffer(kInvalidBufferId, gfx::Rect(),
-                                      wait_for_frame_callback);
-  DCHECK(result);
-
-  if (!error_message_.empty())
-    TerminateGpuProcess();
-  return true;
-}
-
 void WaylandBufferManagerHost::CommitBuffer(gfx::AcceleratedWidget widget,
                                             uint32_t buffer_id,
                                             const gfx::Rect& damage_region) {
@@ -977,6 +1054,8 @@
     }
   }
 
+  RemovePendingFrames(nullptr, buffer_id);
+
   // Ensure that we can't destroy more than 1 buffer. This can be 0 as well
   // if no buffers are destroyed.
   DCHECK_LE(destroyed_count, 1u);
diff --git a/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h b/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h
index aac0aea..b546a36 100644
--- a/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h
+++ b/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h
@@ -5,7 +5,6 @@
 #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_BUFFER_MANAGER_HOST_H_
 #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_BUFFER_MANAGER_HOST_H_
 
-#include <map>
 #include <memory>
 #include <vector>
 
@@ -155,6 +154,14 @@
       gfx::AcceleratedWidget widget,
       std::vector<ui::ozone::mojom::WaylandOverlayConfigPtr> overlays) override;
 
+  // Called by WaylandWindow to start recording a frame. This helps record the
+  // number of subsurface commits needed to finish for this frame before
+  // |root_surface| can be committed.
+  // This pairs with an EndCommitFrame(). Every CommitBufferInternal() in
+  // between increases the number of needed pending commits by 1.
+  void StartFrame(WaylandSurface* root_surface);
+  void EndFrame(uint32_t buffer_id = 0u);
+
   // Called by the WaylandWindow and asks to attach a wl_buffer with a
   // |buffer_id| to a WaylandSurface.
   // Calls OnSubmission and OnPresentation on successful swap and pixels
@@ -173,14 +180,9 @@
       uint32_t buffer_id,
       const gfx::Rect& damage_region,
       bool wait_for_frame_callback = true,
+      bool commit_synced_subsurface = false,
       gfx::GpuFenceHandle access_fence_handle = gfx::GpuFenceHandle());
 
-  // Does a wl_surface commit without attaching any buffers. This commit will
-  // still wait for previous wl_frame_callback. Similar to above but for
-  // commits that do not change the root_surface.
-  bool CommitWithoutBufferInternal(WaylandSurface* wayland_surface,
-                                   bool wait_for_frame_callback = true);
-
   // When a surface is hidden, the client may want to detach the buffer attached
   // to the surface to ensure Wayland does not present those contents and do not
   // composite in a wrong way. Otherwise, users may see the contents of a hidden
@@ -196,10 +198,17 @@
   // presentation callbacks for that surface.
   class Surface;
 
+  // This represents a frame that consists of state changes to multiple
+  // synchronized wl_surfaces that are in the same hierarchy. It defers
+  // committing the root surface until all child surfaces' states are ready.
+  struct Frame;
+
   bool CreateBuffer(const gfx::Size& size, uint32_t buffer_id);
 
   Surface* GetSurface(WaylandSurface* wayland_surface) const;
 
+  void RemovePendingFrames(WaylandSurface* root_surface, uint32_t buffer_id);
+
   // Validates data sent from GPU. If invalid, returns false and sets an error
   // message to |error_message_|.
   bool ValidateDataFromGpu(const base::ScopedFD& file,
@@ -237,6 +246,10 @@
 
   base::flat_map<WaylandSurface*, std::unique_ptr<Surface>> surfaces_;
 
+  // When StartCommitFrame() is called, a Frame is pushed to
+  // |pending_frames_|. See StartCommitFrame().
+  std::vector<std::unique_ptr<Frame>> pending_frames_;
+
   // When a WaylandWindow/WaylandSubsurface is removed, its corresponding
   // Surface may still have an un-released buffer and un-acked presentation.
   // Thus, we keep removed surfaces in the graveyard. It's safe to delete them
diff --git a/ui/ozone/platform/wayland/host/wayland_window.cc b/ui/ozone/platform/wayland/host/wayland_window.cc
index 7911a1f..e99b256 100644
--- a/ui/ozone/platform/wayland/host/wayland_window.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window.cc
@@ -582,6 +582,9 @@
   if (!ArrangeSubsurfaceStack(above, below))
     return false;
 
+  if (wayland_overlay_delegation_enabled_)
+    connection_->buffer_manager_host()->StartFrame(root_surface());
+
   {
     // Iterate through |subsurface_stack_below_|, setup subsurfaces and place
     // them in corresponding order. Commit wl_buffers once a subsurface is
@@ -606,7 +609,8 @@
             nullptr, reference_above);
         connection_->buffer_manager_host()->CommitBufferInternal(
             (*iter)->wayland_surface(), (*overlay_iter)->buffer_id, gfx::Rect(),
-            /*wait_for_frame_callback=*/false,
+            /*wait_for_frame_callback=*/true,
+            /*commit_synced_subsurface=*/true,
             std::move((*overlay_iter)->access_fence_handle));
       } else {
         // If there're more subsurfaces requested that we don't need at the
@@ -636,7 +640,8 @@
             reference_below, nullptr);
         connection_->buffer_manager_host()->CommitBufferInternal(
             (*iter)->wayland_surface(), (*overlay_iter)->buffer_id, gfx::Rect(),
-            /*wait_for_frame_callback=*/false,
+            /*wait_for_frame_callback=*/true,
+            /*commit_synced_subsurface=*/true,
             std::move((*overlay_iter)->access_fence_handle));
       } else {
         // If there're more subsurfaces requested that we don't need at the
@@ -660,7 +665,8 @@
     connection_->buffer_manager_host()->CommitBufferInternal(
         primary_subsurface_->wayland_surface(), (*split)->buffer_id,
         (*split)->damage_region,
-        /*wait_for_frame_callback=*/false,
+        /*wait_for_frame_callback=*/true,
+        /*commit_synced_subsurface=*/true,
         std::move((*split)->access_fence_handle));
   }
 
@@ -672,15 +678,12 @@
   }
 
   if (should_attach_background_buffer_) {
-    connection_->buffer_manager_host()->CommitBufferInternal(
-        root_surface(), background_buffer_id_, /*damage_region=*/gfx::Rect(),
-        /*wait_for_frame_callback=*/true);
+    connection_->buffer_manager_host()->EndFrame(background_buffer_id_);
     should_attach_background_buffer_ = false;
   } else {
     // Subsurfaces are set to sync, above surface configs will only take effect
     // when root_surface is committed.
-    connection_->buffer_manager_host()->CommitWithoutBufferInternal(
-        root_surface(), /*wait_for_frame_callback=*/true);
+    connection_->buffer_manager_host()->EndFrame();
   }
 
   return true;
diff --git a/ui/strings/translations/ui_strings_en-GB.xtb b/ui/strings/translations/ui_strings_en-GB.xtb
index a6c35ae4..5c289d22 100644
--- a/ui/strings/translations/ui_strings_en-GB.xtb
+++ b/ui/strings/translations/ui_strings_en-GB.xtb
@@ -147,7 +147,7 @@
 <translation id="5528053674512161860">Page load failed because the developer UI module (dev_ui) is not installed</translation>
 <translation id="5574202486608032840"><ph name="IDS_SHORT_PRODUCT_OS_NAME" /> system</translation>
 <translation id="5583640892426849032">Backspace</translation>
-<translation id="5613020302032141669">Left Arrow</translation>
+<translation id="5613020302032141669">Left arrow</translation>
 <translation id="5652575806481723716"><ph name="FOCUSED_APP_NAME" /> requests your attention.</translation>
 <translation id="5675363643668471212">Shelf item</translation>
 <translation id="5754277640426581776">{MINUTES,plural, =1{1 min}other{# mins}}</translation>
@@ -187,7 +187,7 @@
 <translation id="6578407462441924264">Unnamed</translation>
 <translation id="6612467943526193239">To exit calibration press Esc.</translation>
 <translation id="6620110761915583480">Save File</translation>
-<translation id="6699343763173986273">Media Next Track</translation>
+<translation id="6699343763173986273">Media next track</translation>
 <translation id="6710213216561001401">Previous</translation>
 <translation id="6786750046913594791">Close folder</translation>
 <translation id="6808150112686056157">Media Stop</translation>
diff --git a/ui/views/view.cc b/ui/views/view.cc
index 3f143eb4..71ebf25 100644
--- a/ui/views/view.cc
+++ b/ui/views/view.cc
@@ -220,6 +220,7 @@
 
   {
     internal::ScopedChildrenLock lock(this);
+    auto child_count = children_.size();
     for (auto* child : children_) {
       line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__;
       child->parent_ = nullptr;
@@ -238,6 +239,7 @@
         if (child)
           vtable = reinterpret_cast<void**>(child)[0];
         delete child;
+        CHECK_EQ(child_count, children_.size());
       }
       line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__;
     }
diff --git a/ui/webui/resources/cr_components/chromeos/network/network_list_item.js b/ui/webui/resources/cr_components/chromeos/network/network_list_item.js
index ced1c1c..b801d89 100644
--- a/ui/webui/resources/cr_components/chromeos/network/network_list_item.js
+++ b/ui/webui/resources/cr_components/chromeos/network/network_list_item.js
@@ -104,6 +104,14 @@
       type: String,
       value: '',
     },
+
+    /** @private */
+    isUpdatedCellularUiEnabled_: {
+      type: Boolean,
+      value() {
+        return loadTimeData.getBoolean('updatedCellularActivationUi');
+      }
+    },
   },
 
   /** @private {?chromeos.networkConfig.mojom.CrosNetworkConfigRemote} */
@@ -140,25 +148,20 @@
   setProviderName_() {
     const mojom = chromeos.networkConfig.mojom;
 
-    if (this.networkState.type !== mojom.NetworkType.kTether &&
-        this.networkState.type !== mojom.NetworkType.kCellular) {
+    if (this.networkState.type !== mojom.NetworkType.kCellular ||
+        !this.isUpdatedCellularUiEnabled_) {
       return;
     }
 
     this.networkConfig_.getManagedProperties(this.networkState.guid)
         .then(response => {
-          if (!response || !response.result) {
+          if (!response || !response.result ||
+              !response.result.typeProperties.cellular.eid) {
             return;
           }
           const managedProperty = response.result;
 
-          if (managedProperty.type === mojom.NetworkType.kTether &&
-              managedProperty.typeProperties.tether) {
-            this.providerName_ = managedProperty.typeProperties.tether.carrier;
-          }
-
-          if (managedProperty.type === mojom.NetworkType.kCellular &&
-              managedProperty.typeProperties.cellular.homeProvider) {
+          if (managedProperty.typeProperties.cellular.homeProvider) {
             this.providerName_ =
                 managedProperty.typeProperties.cellular.homeProvider.name;
           }